| { |
| "compilerOptions": { |
| "target": "ES2022", |
| // `nodenext` matches Node ESM rules, so relative imports must carry the |
| // `.js` extension (as our sources do) and an extensionless import fails |
| "module": "nodenext", |
| "moduleResolution": "nodenext", |
| "lib": ["ES2022", "DOM", "DOM.Iterable"], |
| "strict": true, |
| "noEmit": true, |
| // Rolldown and Vite both compile each file in isolation (type stripping |
| // only), so the syntax must be erasable and imports/exports of types must be |
| // explicit. `verbatimModuleSyntax` already implies `isolatedModules`. |
| "verbatimModuleSyntax": true, |
| "erasableSyntaxOnly": true, |
| "useDefineForClassFields": true, |
| "forceConsistentCasingInFileNames": true, |
| "skipLibCheck": true |
| }, |
| "include": ["js/src/**/*.ts", "js/tests/types/**/*.ts"], |
| // `consumer.ts` checks the shipped `js/dist/*.d.ts`, which only exist after |
| // the build. It has its own config (`tsconfig.consumer.json`) and runs then. |
| "exclude": ["js/tests/types/consumer.ts"] |
| } |