{
    "compilerOptions":
    {
        //Type Checking
        "allowUnreachableCode": false,
        "allowUnusedLabels": false,
        "noFallthroughCasesInSwitch": true,
        "noImplicitOverride": true,
        "noImplicitReturns": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "useUnknownInCatchVariables": true,
        "noUncheckedIndexedAccess": true,
        "strictFunctionTypes": true,

        //Modules
        "lib": ["ESNext"],
        "target": "ESNext",
        "module": "CommonJS",
        "moduleResolution": "Node",
        
        //Emit
        "declaration": true,
        "removeComments": false,
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "skipDefaultLibCheck": true,
        "skipLibCheck": true
    },

    "exclude": ["node_modules"]
}