{
  /**
   ** Commented-out options have their default values.
   **/
  "include": [
    "src/**/*.ts",
    "src/*.ts"
  ],
                                                                // "exclude": [],
  // "files": [],                                               // A list of relative or absolute file paths to include.
  // "extends": "",                                             // A string containing a path to another configuration file to inherit from.
  // "references": [],                                          // An array of objects `{"path": "./to/dirOrConfig"}` that specifies projects to reference.
  // "compileOnSave": false,                                    // Signals to the IDE to generate all files for a given tsconfig.json upon saving.
  "compilerOptions": {
                                                                // Main options
    "target": "es2017",                                         // Specify ECMAScript target version: 'es3' (default), 'es5', 'es2015', 'es2016', 'es2017','es2018' or 'esnext'.
    "module": "es6",                                         // Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.
    // "lib": ["esnext", "dom"],                                // Specify library files to be included in the compilation.
    // "allowJs": false,                                        // Allow javascript files to be compiled.
    // "checkJs": false,                                        // Report errors in .js files.
    // "outFile": "./",                                         // Concatenate and emit output to single file.
    "outDir": "dist",                                           // Redirect output structure to the directory.
    // "rootDir": "./",                                         // Specify the root directory of input files. Use to control the output directory structure with `--outDir`.
    // "project": "",                                           // Compile a project given a valid configuration file.
                                                                // Compilation options
    // "composite": true,                                       // Enable project compilation
    // "diagnostics": false,                                    // Show diagnostic information.
    // "incremental": true,                                     // Enable incremental compilation by reading/writing information from prior compilations to a file on disk.
    // "isolatedModules": false,                                // Transpile each file as a separate module (similar to 'ts.transpileModule').
    // "listEmittedFiles": false,                               // Print names of generated files part of the compilation.
    // "listFiles": true,                                       // Print names of files part of the compilation.
    // "noErrorTruncation": false,                              // Do not truncate error messages.
    // "preserveWatchOutput": false,                            // Keep outdated console output in watch mode instead of clearing the screen.
    // "traceResolution": false,                                // Enable tracing of the name resolution process.
    // "tsBuildInfoFile": ".tsbuildinfo",                       // Specify file to store incremental compilation information.
                                                                // Strict typechecking options
    "strict": true,                                             // Enable all strict type-checking options.
    // "noImplicitAny": true,                                   // Raise error on expressions and declarations with an implied 'any' type.
    // "noImplicitThis": true,                                  // Raise error on 'this' expressions with an implied 'any' type.
    // "strictBindCallApply": true,                             // Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions.
    // "strictFunctionTypes": true,                             // Disable bivariant parameter checking for function types.
    // "strictNullChecks": true,                                // In strict null checking mode, the null and undefined values are not in the domain of every type and are only assignable to themselves and any.
    // "strictPropertyInitialization": true,                    // Ensure non-undefined class properties are initialized in the constructor. This option requires `--strictNullChecks` be enabled in order to take effect.
    // "alwaysStrict": true,                                    // Parse in strict mode and emit "use strict" for each source file.
                                                                // Additional checks
    // "allowUnreachableCode": false,                           // Do not report errors on unreachable code.
    // "allowUnusedLabels": false,                              // Do not report errors on unused labels.
    "forceConsistentCasingInFileNames": true,                   // Disallow inconsistently-cased references to the same file.
    // "noStrictGenericChecks": false,                          // Disable strict checking of generic signatures in function types.
    "noUnusedLocals": true,                                     // Report errors on unused locals.
    "noUnusedParameters": false,                                // 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.
    // "skipLibCheck": false,                                   // Skip type checking of all declaration files (*.d.ts).
    // "suppressExcessPropertyErrors": false,                   // Suppress excess property checks for object literals.
    // "suppressImplicitAnyIndexErrors": false,                 // Suppress noImplicitAny errors for indexing objects lacking index signatures.
                                                                // Module resolution options
    "moduleResolution": "node",                                 // Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6).
    // "baseUrl": "./",                                         // Base directory to resolve non-absolute module names.
    // "paths": {},                                             // A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.
    // "rootDirs": [],                                          // List of root folders whose combined content represents the structure of the project at runtime.
    // "typeRoots": [],                                         // List of folders to include type definitions from.
    "types": [
      "jest",
      "node"
    ],                                                // Type declaration files to be included in compilation.
    // "allowSyntheticDefaultImports": false                    // Allow default imports from modules with no default export. This does not affect code emit, just typechecking.
    "esModuleInterop": true,                                    // Emit '__importStar' and '__importDefault' helpers for runtime babel ecosystem compatibility and enable '--allowSyntheticDefaultImports' for typesystem compatibility.
    // "maxNodeModuleJsDepth": 0,                               // The maximum dependency depth to search under node_modules and load JavaScript files. Only applicable with --allowJs.
    // "preserveSymlinks": false,                               // Do not resolve the real path of symlinks.
    "resolveJsonModule": true,                                  // Include modules imported with '.json' extension.
                                                                // Emit options
    "declaration": true,                                        // Generates corresponding '.d.ts' file.
    "declarationDir": "dist/types",                             // Output directory for generated declaration files.
    // "declarationMap": false,                                 // Generates a sourcemap for each corresponding '.d.ts' file.
    // "emitBOM": false,                                        // Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.
    // "emitDeclarationOnly": false,                            // Only emit ‘.d.ts’ declaration files.
    // "importHelpers": false,                                  // Import emit helpers from 'tslib'.
    // "newLine": "LF",                                         // Use the specified end of line sequence to be used when emitting files: "crlf" (windows) or "lf" (unix).”
    // "noEmit": true,                                          // Do not emit outputs.
    // "noEmitHelpers": false,                                  // Do not generate custom helper functions like __extends in compiled output.
    // "noEmitOnError": false,                                  // Do not emit outputs if any errors were reported.
    // "noImplicitUseStrict": false,                            // Do not emit "use strict" directives in module output.
    // "noResolve": false,                                      // Do not add triple-slash references or module import targets to the list of compiled files.
    "preserveConstEnums": true,                                 // Do not erase const enum declarations in generated code.
    // "removeComments": false,                                 // Remove all comments except copy-right header comments beginning with 
    // "experimentalDecorators": true,                          // Enables experimental support for ES7 decorators.
    // "emitDecoratorMetadata": true,                           // Enables experimental support for emitting type metadata for decorators.
                                                                // Source map options
    // "sourceMap": false,                                      // Generates corresponding '.map' file.
    // "sourceRoot": "",                                        // Specify the location where debugger should locate TypeScript files instead of source locations.
    // "mapRoot": "",                                           // Specify the location where debugger should locate map files instead of generated locations.
    // "inlineSourceMap": true,                                 // Emit a single file with source maps instead of having a separate file.
    // "inlineSources": true,                                   // Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.
                                                                // JSX options
    // "jsx": "preserve",                                       // Specify JSX code generation: 'preserve', 'react-native', or 'react'.
    // "jsxFactory": "React.createElement",                     // Specify the JSX factory function to use when targeting react JSX emit, e.g. 'React.createElement' or 'h'.
                                                                // Other options
    // "allowUmdGlobalAccess": true,                            // Allow accessing UMD globals from modules.
    // "charset": "utf8",                                       // The character set of the input files.
    // "downlevelIteration": false,                             // Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'.
    // "disableSizeLimit": false,                               // Disable size limitation on JavaScript project.
    // "keyofStringsOnly": false,                               // Resolve 'keyof' to string valued property names only (no numbers or symbols).
    // "noLib": false,                                          // Do not include the default library file (lib.d.ts).
    // "pretty": true,                                          // Stylize errors and messages using color and context.
  }
}
