Context
Identified during review of #619 (feat/ts-support), which establishes the TypeScript foundation for this project.
Target
Next branch (typescript)
Current state
The ESLint config uses the legacy split packages (@typescript-eslint/eslint-plugin + @typescript-eslint/parser) with project: './tsconfig.json' and only recommended rules — meaning we are paying the cost of typed linting without using any type-aware rules.
Target state
Once the JS → TS migration is substantially complete on the next branch:
- Replace split packages with the unified
typescript-eslint package
- Switch
project: './tsconfig.json' → projectService: true, tsconfigRootDir: import.meta.dirname
- Upgrade TS block from
recommended → recommendedTypeChecked to enable type-aware rules (no-floating-promises, no-misused-promises, await-thenable, etc.)
- Add
tseslint.configs.disableTypeChecked to the JS block for any remaining .js config files
Risks
- New lint errors —
recommendedTypeChecked will surface violations on existing .tsx files that must be fixed in the same pass
allowDefaultProject — any .js files retained in tsconfig.json's include array will need this option to avoid parser errors
- Cache invalidation — first lint run will bypass the ESLint cache
Dependency
Should be done after the majority of JS files have been converted to TypeScript.
Context
Identified during review of #619 (
feat/ts-support), which establishes the TypeScript foundation for this project.Target
Next branch (typescript)
Current state
The ESLint config uses the legacy split packages (
@typescript-eslint/eslint-plugin+@typescript-eslint/parser) withproject: './tsconfig.json'and onlyrecommendedrules — meaning we are paying the cost of typed linting without using any type-aware rules.Target state
Once the JS → TS migration is substantially complete on the
nextbranch:typescript-eslintpackageproject: './tsconfig.json'→projectService: true, tsconfigRootDir: import.meta.dirnamerecommended→recommendedTypeCheckedto enable type-aware rules (no-floating-promises,no-misused-promises,await-thenable, etc.)tseslint.configs.disableTypeCheckedto the JS block for any remaining.jsconfig filesRisks
recommendedTypeCheckedwill surface violations on existing.tsxfiles that must be fixed in the same passallowDefaultProject— any.jsfiles retained intsconfig.json'sincludearray will need this option to avoid parser errorsDependency
Should be done after the majority of JS files have been converted to TypeScript.