{
  "compilerOptions": {
    "target": "ES2017" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
    "declaration": true /* Generates corresponding '.d.ts' file. */,
    "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */,
    "sourceMap": true /* Generates corresponding '.map' file. */,
    "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */,

    /* TODO: enable strict mode - but there are too many not strict types now */
    "strict": false /* Enable all strict type-checking options. */,

    /* Module Resolution Options */
    "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,
    "typeRoots": ["@types", "./types-global/", "./types"],
    "types": ["node", "mocha", "chai"] /* Type declaration files to be included in compilation. */,
    "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */,
    "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
    "skipLibCheck": true,

    "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */
    "lib": [
      "DOM",
      "DOM.Iterable",
      "ES6",
      "ES2017",
      // Allows array.flatMap. import `array-flat-polyfill` to cover node10
      "ES2019.array",
      "ScriptHost"
    ]
  }
}
