{
  "compilerOptions": {
    "target": "es2021", // goal: ship *the most modern syntax* that is supported by *all* browsers that support our Wasm
    "module": "nodenext", // allow top-level await
    "lib": ["dom", "esnext"],
    "outDir": "./build",
    "rootDir": ".",
    "strict": true,
    "strictPropertyInitialization": false, // to enable generic constructors, e.g. on CircuitValue
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "esModuleInterop": true,
    "moduleResolution": "nodenext", // comply with node + "type": "module"
    "experimentalDecorators": true, // needed for decorators used in o1js
    "emitDecoratorMetadata": true, // needed for decorators used in o1js
    "allowJs": true, // to use JSDoc in some places where TS would be too cumbersome
    "declaration": true,
    "sourceMap": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "useDefineForClassFields": false, // ensure correct behaviour of class fields with decorators
    "importHelpers": true, // bundle optimization to reduce size
    "baseUrl": "." // base directory for module resolution
  },
  "include": ["./src"]
}
