{
  "$schema": "https://json.schemastore.org/tsconfig.json",
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "target": "ES2024",
    "lib": ["ES2024"],
    "outDir": "${configDir}/dist",
    "rootDir": "${configDir}/src",
    "tsBuildInfoFile": "${configDir}/dist/.tsbuildinfo",

    // build
    "types": [],
    "esModuleInterop": true,
    "preserveConstEnums": true,
    "skipDefaultLibCheck": true,
    "skipLibCheck": true,
    "importHelpers": true,
    "resolveJsonModule": true,
    "isolatedModules": true,

    // speeds up compilation, make sure you are linting for type-only imports!
    "verbatimModuleSyntax": true,

    // Enable this per-project as it prevents isolatedDeclarations from being used
    // "allowJs": true,
    // "checkJs": true,

    // performance in monorepo
    "incremental": true,
    "composite": true,
    "isolatedDeclarations": true,

    // linting
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitOverride": true,
    "noUncheckedIndexedAccess": true,
    "noFallthroughCasesInSwitch": true,
    "forceConsistentCasingInFileNames": true,
    // "noErrorTruncation": true,

    // sources
    "sourceMap": true,
    "declaration": true,
    "declarationMap": true,
    "inlineSources": true
  },
  "include": ["${configDir}/src/**/*"]
}
