{
  "compilerOptions": {
    /* Basic Options */
    "incremental": true,
    "module": "commonjs",
    "target": "esnext",
    "lib": ["esnext", "es2020", "dom", "dom.iterable"],
    "allowJs": false,
    "checkJs": false, // speeds up webpack and tsc
    "jsx": "react",
    "declaration": true,
    "composite": true,
    "declarationMap": true,
    "sourceMap": true,

    /* Strict Type-Checking Options */
    "strict": true,

    /* Additional Checks */
    "noUnusedLocals": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "skipLibCheck": true,

    /* Module Resolution Options */
    "moduleResolution": "node",
    "baseUrl": ".",
    "types": ["node", "jest"],
    "typeRoots": ["@types", "node_modules/@types"],
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "forceConsistentCasingInFileNames": true,

    "downlevelIteration": false,
    "importHelpers": false,
    "noEmitHelpers": true,

    "outDir": "./tsc-build",
    "rootDir": "src",
    "tsBuildInfoFile": "./tsc-build/.tsbuildinfo",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment"
  },
  "include": ["src", "src/**/*.json"],
  "exclude": ["node_modules", "build"],
  "references": []
}
