{
    "compilerOptions": {
        "target": "ES2022",
        "module": "NodeNext",
        "moduleResolution": "NodeNext",
        "allowSyntheticDefaultImports": true,
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "verbatimModuleSyntax": false,

        "declaration": true,
        "removeComments": false,
        "importHelpers": false,
        "downlevelIteration": true,

        "strict": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "strictFunctionTypes": true,
        "strictBindCallApply": true,
        "strictPropertyInitialization": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true,
        "noUncheckedIndexedAccess": true,
        "noImplicitOverride": true,
        "allowUnusedLabels": false,
        "allowUnreachableCode": false,

        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "exactOptionalPropertyTypes": true,

        "lib": ["ES2022"],
        "types": ["node", "jest"],
        "resolveJsonModule": true,
        "allowJs": true,
        "checkJs": false,

        "noEmit": true,
        "preserveConstEnums": false,
        "skipLibCheck": true
    },
    "include": ["lib/**/*.ts", "lib/**/*.mts", "lib/**/*.mjs", "test/**/*.ts", "test/**/*.mts"],
    "exclude": ["node_modules", "dist", "coverage", "**/*.test.js", "**/*.test.mjs"],
    "ts-node": {
        "esm": true,
        "experimentalSpecifierResolution": "node"
    }
}
