#!/usr/bin/env bash # Typechecks every app/package that has a tsconfig. # packages/shared and packages/ui have no tsconfig of their own — they are # typechecked transitively via the consumers below. set -u cd "$(dirname "$0")" targets=( apps/backend apps/user-ui apps/admin-ui apps/web-ui apps/fallback-ui packages/db_helper_sqlite packages/db_helper_postgres packages/migrator packages/web-components ) log="$(mktemp)" failed=0 for target in "${targets[@]}"; do if [ ! -f "$target/tsconfig.json" ]; then printf '⏭ %-32s (no tsconfig)\n' "$target" continue fi printf '▶ %-32s ' "$target" if (cd "$target" && npx tsc --noEmit >"$log" 2>&1); then echo '✅ clean' else errors=$(grep -c 'error TS' "$log" || true) echo "❌ ${errors} error(s)" head -20 "$log" failed=1 fi done rm -f "$log" if [ "$failed" -ne 0 ]; then echo '❌ typecheck failed' exit 1 fi echo '✅ all packages typecheck clean'