Adopt TypeScript 6 for tooling and TypeScript 7 for typecheck.

Dual-package setup keeps ESLint/editor on the TS 6 API while pnpm typecheck uses Go tsc 7.0.2; tsconfig drops deprecated baseUrl and adds ambient CSS module declarations.
This commit is contained in:
Francisco Ignácio Fontoura Solla 2026-07-21 20:32:15 -03:00
parent a864adc1b5
commit 0cb83bdfa6
6 changed files with 518 additions and 139 deletions

View file

@ -65,6 +65,7 @@ alwaysApply: false
## Decisões
- Em 2026-07-21, **toolchain TypeScript dual:** `typescript` → `@typescript/typescript6@6.0.2` (API/editor/ESLint + `tsc6`); `typescript-7` → `typescript@7.0.2` (Go `tsc` para `pnpm typecheck`). Motivo: typescript-eslint peer `<6.1.0` e API estável só em TS ~7.1. Não usar `@typescript/native-preview`/`tsgo` (canal nightly). `typecheck:tsc6` existe para paridade. Ambient CSS/SCSS em `src/css-modules.d.ts` (TS6 `noUncheckedSideEffectImports`).
- Em 2026-07-21, **decisão de produto (Field Desk):** em `/campanha`, superfícies staff de visualização que mostram dados mutáveis devem oferecer edição no contexto quando o access permitir (“edit where you see”) — princípio 3 de [`PRODUCT.md`](../../../PRODUCT.md); regra Cursor [`.cursor/rules/campanha-edit-where-you-see.mdc`](../campanha-edit-where-you-see.mdc). Precedente: **B9** ([`edicao-rapida-lista-pracas.md`](../../../docs/plans/edicao-rapida-lista-pracas.md) — `PlazaList*Control` + `plazaStaffFormActions`). **Rejeitado:** lista/detalhe só-leitura com toda mutação em `/editar`; data-grid / planilha full-row; service genérico de “quick edit”. `/editar` e Sheets longos ficam para formulários multi-campo, campos raros e fluxos com nota/confirmação. Liderança continua no escopo já definido (sem campos staff-only).
- Núcleo Eleitoral é a unidade operacional; Zona TSE é uma referência oficial adicional.
- Todo núcleo exige geografia; natureza organizativa e setor são dimensões complementares.

View file

@ -48,6 +48,7 @@
"test:int": "cross-env NODE_OPTIONS=--no-deprecation vitest run --config ./vitest.config.mts",
"test:unit": "cross-env NODE_OPTIONS=--no-deprecation DATABASE_URL=postgresql://invalid:invalid@127.0.0.1:1/unit_tests_must_not_connect vitest run --config ./vitest.unit.config.mts",
"typecheck": "tsc --noEmit",
"typecheck:tsc6": "tsc6 --noEmit",
"prepare": "husky"
},
"dependencies": {
@ -122,8 +123,9 @@
"topojson-server": "^3.0.1",
"topojson-simplify": "^3.0.3",
"tsx": "4.21.0",
"typescript": "5.7.3",
"typescript-eslint": "^8.55.0",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"typescript-eslint": "^8.64.0",
"vite-tsconfig-paths": "6.0.5",
"vitest": "4.0.18",
"yauzl": "^3.4.0"

File diff suppressed because it is too large Load diff

3
src/css-modules.d.ts vendored Normal file
View file

@ -0,0 +1,3 @@
declare module '*.css'
declare module '*.scss'
declare module '@payloadcms/next/css'

View file

@ -1,4 +1,4 @@
import type { Config } from 'src/payload-types'
import type { Config } from '@/payload-types'
import configPromise from '@payload-config'
import { revalidateTag, unstable_cache } from 'next/cache'

View file

@ -1,11 +1,6 @@
{
"compilerOptions": {
"baseUrl": ".",
"lib": [
"DOM",
"DOM.Iterable",
"ES2022"
],
"lib": ["DOM", "DOM.Iterable", "ES2022"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
@ -23,12 +18,8 @@
}
],
"paths": {
"@/*": [
"./src/*"
],
"@payload-config": [
"./src/payload.config.ts"
]
"@/*": ["./src/*"],
"@payload-config": ["./src/payload.config.ts"]
},
"target": "ES2022"
},
@ -226,7 +217,5 @@
"next-env.d.ts",
".next/e2e-12203/types/**/*.ts"
],
"exclude": [
"node_modules"
]
"exclude": ["node_modules"]
}