{
  "compilerOptions": {
    "allowJs": true,
    "checkJs": false,
    "strict": true,
    "alwaysStrict": true,
    "target": "ES2023",
    // node16 still emits CommonJS for this package (no "type": "module") but, unlike
    // `module: commonjs`, models Node's real semantics: dynamic `import()` is legal inside CJS
    // and is preserved verbatim instead of being downleveled to `require()` (NODE-7603).
    "module": "node16",
    "moduleResolution": "node16",
    // node16 defaults esModuleInterop on; keep it off to preserve this package's historical
    // emit exactly (`import * as x` stays `const x = require(...)`, no __importStar wrappers —
    // which sinon-based module stubbing in the test suite also relies on).
    "esModuleInterop": false,
    "skipLibCheck": true,
    "lib": [
      "es2023"
    ],
    // We don't make use of tslib helpers, all syntax used is supported by target engine
    "importHelpers": false,
    "noEmitHelpers": true,
    // Never emit error filled code
    "noEmitOnError": true,
    "outDir": "lib",
    // We want the sourcemaps in a separate file
    "inlineSourceMap": false,
    "sourceMap": true,
    // API-Extractor uses declaration maps to report problems in source, no need to distribute
    "declaration": true,
    "declarationMap": true,
    // we include sources in the release
    "inlineSources": false,
    // Prevents web types from being suggested by vscode.
    "types": [
      "node"
    ],
    "forceConsistentCasingInFileNames": true,
    "noImplicitOverride": true,
    "noImplicitReturns": true,
    // TODO(NODE-3659): Enable useUnknownInCatchVariables and add type assertions or remove unnecessary catch blocks
    "useUnknownInCatchVariables": false,
    "useDefineForClassFields": false
  },
  "ts-node": {
    "transpileOnly": true,
    "compiler": "typescript-cached-transpile"
  },
  "include": [
    "src/**/*"
  ]
}
