{
    "compilerOptions": {
        "isolatedModules": true,
        "allowSyntheticDefaultImports": true,
        "forceConsistentCasingInFileNames": true,
        "incremental": true,
        "lib": ["DOM", "ES2022"],
        "noFallthroughCasesInSwitch": true,
        "noImplicitAny": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noUncheckedIndexedAccess": true,
        "outDir": "target",
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "strictBindCallApply": true,
        "strictFunctionTypes": true,
        "strictNullChecks": false,
        "typeRoots": ["../../../node_modules/@types", "./node_modules/@types"],
        "rootDir": ".",
        "baseUrl": ".", // affects where output files end up
        "target": "es2021", // goal: ship *the most modern syntax* that is supported by *all* browsers that support our Wasm
        "module": "nodenext", // allow top-level await
        "moduleResolution": "nodenext", // comply with node + "type": "module"
        "esModuleInterop": true, // to silence jest
        "experimentalDecorators": true, // needed for decorators
        "emitDecoratorMetadata": true, // needed for decorators
        "useDefineForClassFields": false, // ensure correct behaviour of class fields with decorators
        "strict": true, // for the full TypeScript experience
        "strictPropertyInitialization": false, // to enable generic constructors, e.g. on CircuitValue
        "importHelpers": true, // reduces size
        "declaration": true, // declaration files are how library consumers get our types
        "noEmitOnError": false, // avoid accidentally shipping with type errors
        "allowJs": true, // to use JSDoc in some places where TS would be too cumbersome
        "sourceMap": true,
        "paths": {
            "xstate": ["../../../node_modules/xstate"],
            "o1js": ["../../../node_modules/o1js"],
            "*": ["*", "src/*", "../../../node_modules/*"]
        }
    },
    "exclude": ["../../../node_modules", "node_modules", "target"],
    "include": ["src/**/*", "**/*.json"]
}
// {
//   "compilerOptions": {
//     "target": "ES2021",
//     "module": "nodenext",
//     "lib": ["DOM", "ES2022"],
//     "outDir": "./build",
//     "rootDir": ".",
//     "strict": true,
//     "strictPropertyInitialization": false, // to enable generic constructors, e.g. on CircuitValue
//     "skipLibCheck": true,
//     "forceConsistentCasingInFileNames": true,
//     "esModuleInterop": true,
//     "moduleResolution": "nodenext",
//     "experimentalDecorators": true,
//     "emitDecoratorMetadata": true,
//     "allowJs": true,
//     "declaration": true,
//     "sourceMap": true,
//     "noFallthroughCasesInSwitch": true,
//     "allowSyntheticDefaultImports": true
// "useDefineForClassFields": false,
// "incremental": true,
// "noImplicitAny": true,
// "noImplicitReturns": true,
// "noImplicitThis": true,
// "noUncheckedIndexedAccess": true,
// "resolveJsonModule": true,
// "strictBindCallApply": true,
// "strictFunctionTypes": true,
// "strictNullChecks": true,
// "typeRoots": ["node_modules/@types"],
// "importHelpers": true,
// "noEmitOnError": false
// },
// "exclude": ["node_modules", "target"],
// "include": ["./src"]
// }
// {
//   "compilerOptions": {
//     "typeRoots": ["node_modules/@types"],
//     "baseUrl": ".", // affects where output files end up
//     "importHelpers": true, // reduces size
//     "noEmitOnError": false, // avoid accidentally shipping with type errors
//   },
//   "exclude": ["node_modules", "target"],
//   "include": ["."]
// }
// "incremental": true,
// "noImplicitAny": true,
// "noImplicitReturns": true,
// "noImplicitThis": true,
// "noUncheckedIndexedAccess": true,
// "resolveJsonModule": true,
// "strictBindCallApply": true,
// "strictFunctionTypes": true,
// "strictNullChecks": true,
