{
    "include": ["src"],
    "compilerOptions": {
        "outDir": "dist",
        "rootDir": "src",
        "lib": ["ESNext"],
        "target": "ESNext",
        "module": "NodeNext",
        "moduleResolution": "NodeNext",
        "declaration": true,
        "declarationMap": true,
        "composite": false,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,

        "allowSyntheticDefaultImports": true,
        "allowUnreachableCode": false,
        "allowUnusedLabels": false,

        "noUnusedLocals": true,
        "noImplicitAny": true,
        "noImplicitOverride": true,
        "noImplicitThis": true,
        "noPropertyAccessFromIndexSignature": false,
        "noFallthroughCasesInSwitch": true,
        "noUncheckedIndexedAccess": true,
        "resolveJsonModule": true,
        "useUnknownInCatchVariables": false,

        "strict": true,
        "strictFunctionTypes": true,
        "strictNullChecks": true,
        "strictBindCallApply": true,
        "strictPropertyInitialization": true,
        "typeRoots": ["src/types", "node_modules/@types"]
    }
}
