{
    "compilerOptions": {
        "outDir": "./dist/",
        "rootDir": "./src/",
        "sourceRoot": "./src/",
        "sourceMap": true,
        "inlineSources": true,
        "allowJs": true,
        "checkJs": false,
        "maxNodeModuleJsDepth": 3,
        "target": "ES2015",
        "typeRoots": ["./node_modules/@types/", "./src/utils/types/"],
        "types": ["node", "jest"],
        "noEmitOnError": true,
        "module": "commonjs",
        "resolveJsonModule": true,
        "forceConsistentCasingInFileNames": true,
        "esModuleInterop": true,
        "declaration": true,
        "declarationMap": true,
        "strict": true /* Enable all strict type-checking options. */,
        "alwaysStrict": true /* Ensure 'use strict' is always emitted. */,
        "strictNullChecks": true /* When type checking, take into account `null` and `undefined`. */,
        "strictFunctionTypes": true /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */,
        "strictBindCallApply": true /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */,
        "strictPropertyInitialization": true /* Check for class properties that are declared but not set in the constructor. */,
        "noImplicitOverride": true /* Ensure overriding members in derived classes are marked with an override modifier. */,
        "noImplicitAny": true /* Enable error reporting for expressions and declarations with an implied `any` type.. */,
        "noImplicitThis": false /* Enable error reporting when `this` is given the type `any`. */,
        "noImplicitReturns": true /* Enable error reporting for codepaths that do not explicitly return in a function. */,
        "useUnknownInCatchVariables": true /* Type catch clause variables as 'unknown' instead of 'any'. */,
        "noUnusedLocals": true /* Enable error reporting when a local variables aren't read. */,
        "noUnusedParameters": true /* Raise an error when a function parameter isn't read */,
        "noFallthroughCasesInSwitch": true /* Enable error reporting for fallthrough cases in switch statements. */,
        "noUncheckedIndexedAccess": true /* Include 'undefined' in index signature results */,
        "noPropertyAccessFromIndexSignature": true /* Enforces using indexed accessors for keys declared using an indexed type */,
        "exactOptionalPropertyTypes": false /* Interpret optional property types as written, rather than adding 'undefined'. */,
        "allowUnusedLabels": false /* Disable error reporting for unused labels. */,
        "allowUnreachableCode": false /* Disable error reporting for unreachable code. */,
        "keyofStringsOnly": false /* Make keyof only return strings instead of string, numbers or symbols. Legacy option. */,
        "noErrorTruncation": true,
        "noStrictGenericChecks": false,
        "suppressExcessPropertyErrors": false,
        "suppressImplicitAnyIndexErrors": false,
        "skipLibCheck": false,
        "skipDefaultLibCheck": false
    },
    "include": ["./src/**/*"],
    "exclude": ["./dist/**/*"]
}
