{
  "include": [ "src/" ],
  "exclude": [
    "./node_modules/",
    "./src/gen/"
  ],
  "compilerOptions": {
    "lib": [
      "dom",                               // Need to be explicitly mentioned now since we're overriding default included libs.
      "es2018",                            // Need this to use Object.values.
    ],
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    // Lints and checks.
    "allowJs": true,
    "declaration": false,                  // Generates corresponding '.d.ts' file.
    "sourceMap": true,                     // Generates corresponding '.map' file.
    "outDir": "./dist",                    // Redirect output structure to the directory.
    "removeComments": false,               // Do not emit comments to output.
    "importHelpers": true,                 // Import emit helpers from 'tslib'.
    "downlevelIteration": true,            // Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'.
    "strict": true,                        // Enable all strict type-checking options.
    "noImplicitAny": true,                 // Raise error on expressions and declarations with an implied 'any' type.
    "strictNullChecks": true,              // Enable strict null checks.
    "strictFunctionTypes": true,           // Enable strict checking of function types.
    "strictPropertyInitialization": true,  // Enable strict checking of property initialization in classes.
    "noImplicitThis": true,                // Raise error on 'this' expressions with an implied 'any' type.
    "alwaysStrict": true,                  // Parse in strict mode and emit "use strict" for each source file.
    "noUnusedLocals": true,                // Report errors on unused locals.
    "noUnusedParameters": true,            // Report errors on unused parameters.
    "noImplicitReturns": true,             // Report error when not all code paths in function return a value.
    "noFallthroughCasesInSwitch": true,    // Report errors for fallthrough cases in switch statement.
  }
}