refactor(tsconfig): consolida tsconfig.json + tsconfig.node.json (F1-1.x)#109
Conversation
…1.x) `tsconfig.node.json` era redundante: cobria o mesmo escopo (`vite.config.ts`) do `tsconfig.json` da raiz, com diferenças mínimas (composite vs noEmit). Pior: tinha comentários inline (`/* ... */`) que quebram parsers JSON puros. **Mudanças:** - ✅ Deletado `tsconfig.node.json` (redundante) - ✅ `tsconfig.json`: removido `composite: true` (sem references = inútil) - ✅ `tsconfig.json`: adicionado `noEmit: true` (corrige error TS5096 que exigia noEmit ou emitDeclarationOnly junto com allowImportingTsExtensions) - ✅ `tsconfig.json`: removidos comentários inline pra parsing JSON puro **🔴 BUG CRÍTICO descoberto durante esta análise — DOCUMENTADO À PARTE:** Durante o trabalho, descobri que `npm run typecheck` cobre **apenas 1 arquivo** (`vite.config.ts`) em vez dos 1620 do app. Causa: o script `tsc --noEmit` sem `-p` usa tsconfig.json default, que só inclui vite.config.ts. O `tsconfig.app.json` (que cobre src/**) NUNCA é executado pelo CI. **Impacto:** erros de tipo em src/** passam batido pelo CI há tempo indeterminado. Vite build (que usa SWC/esbuild) ainda compila tudo, mas não faz verificação de tipos. **NÃO consertei aqui** — escopo deste PR era consolidação. Consertar exige PR separado pq vai revelar N erros TS escondidos. Documentado em `docs/sessoes/2026-05-09-typecheck-bug-found.md` com 3 opções de fix e plano de ação. **Edge function órfã:** - `supabase/functions/github-fix-config/index.ts` (170 linhas) referencia `tsconfig.node.json` no conteúdo (tenta consertar via API GitHub). - Função tem 0 chamadas no front, é categoria "dev" no edge-authz-manifest. - Após este PR, ela ficará semanticamente quebrada (mas era órfã, ninguém invoca). Sugestão: deletar em PR futuro de cleanup de edge functions órfãs (Fase 2 código morto). **Risk**: 🟡 médio. - ✅ `npm run typecheck` continua passando (mesmo escopo limitado) - ✅ `npm run build` passa em 1m21s, gera bundle dist/ completo - ✅ `eslint baseline` continua passando (1547 erros) -⚠️ `github-fix-config` (órfã) ficou semanticamente quebrada **Test plan**: - [x] `npm run typecheck` (passa, mesmo escopo) - [x] `npm run build` (passa, 1m21s) - [x] `npm run lint:baseline` (passa) - [ ] CI verde - [ ] CodeRabbit OK
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughPR documenta descoberta de bug crítico: ChangesDocumentação de Bug & Limpeza de Config
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
docs/sessoes/2026-05-09-typecheck-bug-found.md (1)
60-60: 💤 Low valueConvenção de naming para tsconfig.
O nome
tsconfig.json.vitefunciona mas a convenção TypeScript étsconfig.vite.json(extensão por último). IDEs e ferramentas reconhecem melhor o padrãotsconfig.*.json.📝 Correção sugerida
- { "path": "./tsconfig.json.vite" } // criado novo pra vite.config.ts + { "path": "./tsconfig.vite.json" } // criado novo pra vite.config.ts🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/sessoes/2026-05-09-typecheck-bug-found.md` at line 60, O nome do tsconfig usado no registro está fora da convenção (atualmente "{ \"path\": \"./tsconfig.json.vite\" }"); atualize para o padrão TypeScript trocando para "{ \"path\": \"./tsconfig.vite.json\" }" para que editores e ferramentas reconheçam o arquivo (procure pela string "./tsconfig.json.vite" e substitua por "./tsconfig.vite.json").
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@docs/sessoes/2026-05-09-typecheck-bug-found.md`:
- Line 60: O nome do tsconfig usado no registro está fora da convenção
(atualmente "{ \"path\": \"./tsconfig.json.vite\" }"); atualize para o padrão
TypeScript trocando para "{ \"path\": \"./tsconfig.vite.json\" }" para que
editores e ferramentas reconheçam o arquivo (procure pela string
"./tsconfig.json.vite" e substitua por "./tsconfig.vite.json").
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: c3d715d8-fd55-4e77-8d93-183b767f1b92
📒 Files selected for processing (2)
docs/sessoes/2026-05-09-typecheck-bug-found.mdtsconfig.node.json
💤 Files with no reviewable changes (1)
- tsconfig.node.json
There was a problem hiding this comment.
Pull request overview
This PR simplifies the repo’s TypeScript configuration by removing a redundant tsconfig.node.json, and adds a session doc capturing a critical finding about the current typecheck command not covering the app’s src/** files (CI currently runs tsc without -p).
Changes:
- Remove
tsconfig.node.jsonto reduce redundant TS config surface area. - Add a dedicated doc (
docs/sessoes/2026-05-09-typecheck-bug-found.md) documenting the discovered typecheck coverage gap and outlining future fix options.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| tsconfig.node.json | Deleted redundant Vite-only tsconfig. |
| docs/sessoes/2026-05-09-typecheck-bug-found.md | Documents the typecheck/CI coverage bug and proposed remediation paths. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| **Data da descoberta:** 2026-05-09 | ||
| **Descoberto durante:** PR C — refactor/tsconfig-consolidation | ||
| **Impacto:** ALTO — bugs de TypeScript em 1619 arquivos do app passam batido pelo CI há tempo indeterminado. | ||
| **Ação tomada nesta sessão:** apenas DOCUMENTAR. Consertar exige PR separado (vai revelar erros TS escondidos). | ||
|
|
||
| ## Sintoma | ||
|
|
||
| `npm run typecheck` (script `tsc --noEmit`) **cobre apenas 1 arquivo: `vite.config.ts`** — em vez dos 1620 arquivos TypeScript do app inteiro. | ||
|
|
||
| ```bash | ||
| $ npx tsc --listFilesOnly | grep -v node_modules | wc -l | ||
| 2 # vite.config.ts + 1 dep tipo | ||
|
|
||
| $ npx tsc -p tsconfig.app.json --listFilesOnly | grep -v node_modules | wc -l | ||
| 1620 # o que DEVERIA ser checado |
…x) (#110) * fix(typecheck): cobre app inteiro com TS baseline (1214 erros) (F1-1.x) Conserta o bug crítico descoberto em #109: `npm run typecheck` cobria APENAS `vite.config.ts` em vez dos 1620 arquivos do app. Causa: script `tsc --noEmit` sem `-p` usava tsconfig.json default que só inclui vite.config.ts. **Estratégia:** mesma do ESLint baseline já existente — snapshot dos erros atuais como baseline e gate no CI bloqueia regressões. **Mudanças:** - ✅ scripts/tsc-baseline-generate.mjs (62 linhas) — gera .tsc-baseline.json - ✅ scripts/check-tsc-baseline.mjs (108 linhas) — gate de CI - ✅ .tsc-baseline.json — snapshot de **1214 erros em 251 arquivos** - ✅ package.json: - typecheck → node scripts/check-tsc-baseline.mjs (gate, cobre app) - typecheck:full → tsc -p tsconfig.app.json --noEmit (mostra todos) - typecheck:baseline:update → regenera baseline - ✅ .github/workflows/ci.yml: 'npx tsc --noEmit' → 'npm run typecheck' - ✅ doc do bug atualizado (RESOLVIDO) **Distribuição dos 1214 erros (top 5 categorias = 998 = 82%):** - TS2339 (363): Property does not exist - TS2322 (292): Type not assignable - TS2345 (208): Argument not assignable - TS7006 (74): Implicit any - TS2769 (71): No overload matches **Top 5 arquivos (253 erros = 21%):** - src/pages/ProductDetail.tsx: 91 - src/pages/MockupGenerator.tsx: 57 - usePersonalizationManager.ts: 37 - src/lib/external-db/products.ts: 36 - src/hooks/useSalesGoals.ts: 32 **Comportamento pós-fix:** - ✅ CI passa se erros ≤ baseline (1214) - ❌ CI falha se file:rule ganhar erros NOVOS - ✅ Drift positivo OK (sugere update) - ✅ Cobertura completa (1620 arquivos vs 1 antes) **Risk:** 🟡 médio. Mudança comportamental no CI. Sanity: - ✅ baseline gerado limpo (1214/251 conferidos) - ✅ gate roda (espera 4-5min porque tsc é lento mas é igual ao build) - ✅ vite build sem mudanças **Próximos passos:** reduzir 1214 erros progressivamente em PRs por arquivo/área. Após cada redução, npm run typecheck:baseline:update. **Test plan:** - [x] Generator gera .tsc-baseline.json válido (1214/251) - [x] package.json scripts validados - [x] ci.yml apontando pro novo script - [ ] CI verde (gate primeiro run = 1214 erros = baseline → passa) - [ ] CodeRabbit OK * ci: force re-run (transient esm.sh 522 on 2 edge fns)
…112) A edge function 'github-fix-config' (170 linhas) era código de auditoria/setup abandonado. Critérios pra delete: - ❌ 0 chamadas no front (src/, tests/, e2e/) - ❌ 0 chamadas em outras edges -⚠️ Categoria 'dev' no edge-authz-manifest (claramente ferramenta de dev) -⚠️ Tentava modificar tsconfig.node.json via API GitHub — arquivo que foi deletado em #109 — então estava semanticamente quebrada de qualquer jeito - ✅ NÃO tem segredos próprios, só usa GITHUB_TOKEN/REPO/DEFAULT_BRANCH Mudanças: - Deletado: supabase/functions/github-fix-config/index.ts (170 linhas) - supabase/functions/_shared/edge-authz-manifest.ts (-1 entry) - supabase/functions/_shared/cors-snapshot.json (-1 entry) - supabase/functions/_shared/authorize.ts (atualizado comentário) - scripts/check-edge-structured-logging.mjs (-1 entry no array) Mantida: 'github-credentials-test' (TEM painel admin que usa, em src/components/admin/connections/GitHubCredentialsTester.tsx). Risk: 🟢 zero. Função zumbi, código já obsoleto. Test plan: - [x] 0 refs restantes em src/ scripts/ supabase/ .github/ - [x] cors-snapshot.json válido - [x] eslint baseline passa - [ ] Edge typecheck CI verde (com 1 função a menos) - [ ] CodeRabbit OK
Plano
Consolida 2 tsconfigs redundantes em 1 (
tsconfig.json+tsconfig.node.json→ sótsconfig.json) e documenta um bug crítico descoberto durante a análise.Mudanças
tsconfig.jsonerror TS5096)tsconfig.node.jsoninclude: [vite.config.ts]), com comentários/*...*/que quebram JSON.parsedocs/sessoes/2026-05-09-typecheck-bug-found.md🔴 Achado crítico durante análise — bug do typecheck
Durante a auditoria dos tsconfigs, descobri que
npm run typecheckcobre apenas 1 arquivo (vite.config.ts) em vez dos 1620 do app:Causa raiz:
package.jsonscript é"typecheck": "tsc --noEmit"(sem-p). Usatsconfig.jsondefault, que só incluivite.config.ts. Otsconfig.app.jsonque cobresrc/**nunca é executado pelo CI.Impacto: erros de tipo em
src/**passam batido pelo CI há tempo indeterminado. Vite build (SWC/esbuild) compila tudo, mas não verifica tipos. Isso explica por que PRs anteriores 'passavam typecheck' — eles literalmente não checavam nada do app.NÃO consertado aqui — escopo deste PR era consolidação. Consertar exige PR separado pra:
tsc -p tsconfig.app.json --noEmit | grep errorDoc completo:
docs/sessoes/2026-05-09-typecheck-bug-found.md.Edge function órfã afetada
supabase/functions/github-fix-config/index.ts(170 linhas) referenciatsconfig.node.jsonno código (tenta consertá-lo via API GitHub). Função tem 0 chamadas no front e é categoria "dev" noedge-authz-manifest. Após este PR, fica semanticamente quebrada — mas era órfã. Deletar em PR futuro (Fase 2 — código morto).Risk
🟡 Médio.
npm run typechecknpm run buildnpm run lint:baselineTest plan
npm run typechecklocalmente (passa)npm run buildlocalmente (passa em 1m21s)npm run lint:baselinelocalmente (passa)Summary by CodeRabbit
Notas de Lançamento
Documentation
Chores