Skip to content

refactor(tsconfig): consolida tsconfig.json + tsconfig.node.json (F1-1.x)#109

Merged
adm01-debug merged 1 commit into
mainfrom
refactor/tsconfig-consolidation
May 9, 2026
Merged

refactor(tsconfig): consolida tsconfig.json + tsconfig.node.json (F1-1.x)#109
adm01-debug merged 1 commit into
mainfrom
refactor/tsconfig-consolidation

Conversation

@adm01-debug
Copy link
Copy Markdown
Owner

@adm01-debug adm01-debug commented May 9, 2026

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

Arquivo Antes Depois
tsconfig.json composite=true, sem noEmit, sem refs (quebrado: error TS5096) sem composite, com noEmit, sem refs (consistent)
tsconfig.node.json redundante (mesmo include: [vite.config.ts]), com comentários /*...*/ que quebram JSON.parse DELETADO
docs/sessoes/2026-05-09-typecheck-bug-found.md (não existia) 103 linhas documentando bug do typecheck

🔴 Achado crítico durante análise — bug do typecheck

Durante a auditoria dos tsconfigs, descobri que npm run typecheck cobre apenas 1 arquivo (vite.config.ts) em vez dos 1620 do app:

npx tsc --listFilesOnly | grep -v node_modules | wc -l    →  2 arquivos
npx tsc -p tsconfig.app.json --listFilesOnly | wc -l      →  1620 arquivos

Causa raiz: package.json script é "typecheck": "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 (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:

  1. Contar erros TS escondidos: tsc -p tsconfig.app.json --noEmit | grep error
  2. Decidir entre Opção A (trocar script), B (project references) ou C (compose includes)
  3. Criar baseline de erros TS se for número grande (similar ao ESLint baseline)

Doc completo: docs/sessoes/2026-05-09-typecheck-bug-found.md.

Edge function órfã afetada

supabase/functions/github-fix-config/index.ts (170 linhas) referencia tsconfig.node.json no código (tenta consertá-lo via API GitHub). Função tem 0 chamadas no front e é categoria "dev" no edge-authz-manifest. Após este PR, fica semanticamente quebrada — mas era órfã. Deletar em PR futuro (Fase 2 — código morto).

Risk

🟡 Médio.

Sanity check Resultado
npm run typecheck ✅ passa (mesmo escopo limitado, sem o erro TS5096 anterior)
npm run build ✅ passa em 1m21s, bundle dist/ completo, 5955 módulos
npm run lint:baseline ✅ passa (1547 erros, sem regressão)
CI a validar

Test plan

  • npm run typecheck localmente (passa)
  • npm run build localmente (passa em 1m21s)
  • npm run lint:baseline localmente (passa)
  • Diff revisado (apenas tsconfig.json + delete tsconfig.node.json + add doc)
  • CI verde
  • CodeRabbit revisão

Summary by CodeRabbit

Notas de Lançamento

  • Documentation

    • Adicionada documentação detalhando um problema identificado na verificação de tipos TypeScript durante a execução do CI.
  • Chores

    • Removida configuração de TypeScript desnecessária.

Review Change Stack

…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
Copilot AI review requested due to automatic review settings May 9, 2026 15:50
@vercel
Copy link
Copy Markdown

vercel Bot commented May 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
promo-gifts Ready Ready Preview, Comment May 9, 2026 3:51pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 9, 2026

Walkthrough

PR documenta descoberta de bug crítico: npm run typecheck executa tsc --noEmit sem -p tsconfig.json, causando verificação de apenas 1 arquivo (vite.config.ts) em vez de ~1620 em src/**. Consequência: erros TypeScript na app passam em CI. Remove tsconfig.node.json.

Changes

Documentação de Bug & Limpeza de Config

Layer / File(s) Summary
Enunciado do Problema
docs/sessoes/2026-05-09-typecheck-bug-found.md
Header + sintoma: tsc --listFilesOnly verifica só vite.config.ts. Root cause: tsconfig.json raiz não passa -p em CI, tsconfig.app.json nunca é usado.
Impacto & Remediação
docs/sessoes/2026-05-09-typecheck-bug-found.md
Consequências: erros TypeScript em src/** ignorados em CI. Três opções de fix para PR futura (usar tsconfig.app.json, project references, ou expandir root include). Avisos: contar/classificar erros antes de fix. Fix adiado por escopo de PR C.
Limpeza de Configuração
tsconfig.node.json
Remove tsconfig.node.json inteiro: moduleResolution "bundler", strict flags, noEmit, include: ["vite.config.ts"].

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed O título descreve claramente o objetivo principal: consolidação dos dois tsconfigs (tsconfig.json + tsconfig.node.json) em um só, é conciso e específico o suficiente para scanning rápido do histórico.
Description check ✅ Passed A descrição é detalhada e completa. Cobre objetivo (consolidação), mudanças (tabela clara), descoberta crítica do bug de typecheck, impacto (órfã), risco (médio), e test plan com status local dos testes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/tsconfig-consolidation

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
docs/sessoes/2026-05-09-typecheck-bug-found.md (1)

60-60: 💤 Low value

Convenção de naming para tsconfig.

O nome tsconfig.json.vite funciona mas a convenção TypeScript é tsconfig.vite.json (extensão por último). IDEs e ferramentas reconhecem melhor o padrão tsconfig.*.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

📥 Commits

Reviewing files that changed from the base of the PR and between 87f164f and 3f0a8e8.

📒 Files selected for processing (2)
  • docs/sessoes/2026-05-09-typecheck-bug-found.md
  • tsconfig.node.json
💤 Files with no reviewable changes (1)
  • tsconfig.node.json

Copy link
Copy Markdown

@vercel vercel Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Suggestion:

Edge function github-fix-config fails because it tries to fetch and update tsconfig.node.json which no longer exists after PR consolidation.

Fix on Vercel

@adm01-debug adm01-debug merged commit 9d9026b into main May 9, 2026
16 of 17 checks passed
@adm01-debug adm01-debug deleted the refactor/tsconfig-consolidation branch May 9, 2026 15:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json to 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.

Comment on lines +3 to +17
**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
adm01-debug added a commit that referenced this pull request May 9, 2026
…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)
adm01-debug added a commit that referenced this pull request May 9, 2026
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants