{ "$schema": "https://json.schemastore.org/tsconfig", "//": "Strict mode is non-negotiable per CONTRIBUTING.md ยง Code standards. Every flag below has a reason.", "compilerOptions": { // === Target / module === "target": "ES2022", "module": "ESNext", "moduleResolution": "Bundler", "lib": ["ES2023", "DOM", "DOM.Iterable"], "jsx": "react-jsx", // === Strictness - these are the rules CONTRIBUTING.md commits us to === "strict": true, "noImplicitAny": true, "strictNullChecks": true, "strictFunctionTypes": true, "strictBindCallApply": true, "strictPropertyInitialization": true, "noImplicitThis": true, "alwaysStrict": true, "useUnknownInCatchVariables": true, // Surfaces footguns the default strict mode misses - array index access returning `T | undefined`, // unreachable code, switch cases falling through. "noUncheckedIndexedAccess": true, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, "noImplicitOverride": true, // Style enforcement that doubles as bug prevention. "noUnusedLocals": true, "noUnusedParameters": true, // `exactOptionalPropertyTypes` was here but produced friction (forbids // `name: undefined` even when `name?: string` is declared) without // catching real bugs the rest of strict mode misses. Off by default; // re-enable per-package if there's a clear win. "noPropertyAccessFromIndexSignature": true, // === Interop / output === "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "isolatedModules": true, "skipLibCheck": true, "noEmit": true, "incremental": true, // === Path aliases - kept short and explicit === // No `baseUrl` (deprecated in TS 6): with moduleResolution "Bundler", // `paths` resolve relative to this tsconfig's directory. "paths": { "@/*": ["./*"] }, // === Next.js plugin === "plugins": [ { "name": "next" } ], "allowJs": true }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts" ], "exclude": ["node_modules", ".next", "PowerDNS-Admin", "dist", "build", "coverage"] }