{
  "compilerOptions": {
    "target": "es2020",
    "module": "esnext",
    "declaration": true,
    "lib": ["es2020", "dom"],
    "types": ["node", "jest"],
    "moduleResolution": "node",
    "rootDir": "src",
    "outDir": "dist/main",
    "incremental": true,
    "skipLibCheck": true,
    "tsBuildInfoFile": "./dist/.tsbuildinfo",
    "declarationMap": true,
    "sourceMap": true,
    "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
    "resolveJsonModule": true,
    "allowJs": true /* ajv validators are pre-compiled to JS */,
    "strict": true /* Enable all strict type-checking options. */,
    /* Additional Checks */
    "noUnusedLocals": true /* Report errors on unused locals. */,
    "noUnusedParameters": true /* Report errors on unused parameters. */,
    "noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
    "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */,
    // "exactOptionalPropertyTypes": true /* Enforce difference between `undefined` and optional properties */, // TODO: enable exactOptionalPropertyTypes, possibly waiting on https://github.com/microsoft/TypeScript/issues/46969#issuecomment-984083995 (or a `RequiredExactOptional` to match `PartialExactOptional`)
    "noUncheckedIndexedAccess": true /* Require checking that an indexed access is not undefined */, // TODO: enable noUncheckedIndexedAccess
    "noPropertyAccessFromIndexSignature": true /* Disallow dot syntax for fields which are not defined */,
    /* Debugging Options */
    "traceResolution": false /* Report module resolution log messages. */,
    "listEmittedFiles": false /* Print names of generated files part of the compilation. */,
    "listFiles": false /* Print names of files part of the compilation. */,
    "pretty": true /* Stylize errors and messages using color and context. */,
    "typeRoots": ["node_modules/@types", "src/types"]
  },
  "include": ["src/**/*.ts", "src/**/cash/*.json"],
  "exclude": ["node_modules/**", "src/**/*test.ts"],
  "compileOnSave": false
}
