{
  "compilerOptions": {
    // Transpilation

    // Support JSX in .tsx files: "React" or "Preserve".
    "jsx": "react",

    // Specify ECMAScript target version:
    // "ES3" (default), "ES5", "ES6"/"ES2015", "ES2016", "ES2017" or "ESNext".
    // Note: "ESNext" targets latest supported ES proposed features.
    //
    // NOTE: class decorators will not work with anything higher than es5
    //       unless the class decorator treats classes and functions separately
    "target": "ESNext",

    // Specify module code generation:
    // "None", "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015" or "ESNext".
    // ► Only "AMD" and "System" can be used in conjunction with --outFile.
    // ► "ES6" and "ES2015" values may be used when targeting "ES5" or lower.
    "module": "esnext",

    // Emit __importStar and __importDefault helpers for runtime babel
    // ecosystem compatibility and enable --allowSyntheticDefaultImports
    // for typesystem compatibility.
    "esModuleInterop": true,

    // Allow default imports from modules with no default export.
    // This does not affect code emit, just typechecking.
    "allowSyntheticDefaultImports": true,

    "experimentalDecorators": true,
    "lib": ["esnext", "dom"],
    "sourceMap": true,

    // File Inclusion
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",

    // Pathing
    "baseUrl": ".",
    "paths": {
      "~*": ["src*"],
      "tests/*": [ "tests/*" ],
      "vendor/*": [ "src/vendor/*" ],
      "*": ["types/*"]
    }
  },
  "include": [
    "src",
    "types",
    "tests"
  ],
  "exclude": [
    "node_modules",
    "build",
    "tests/webpack.config.js",
    "tests/karma.conf.js"
  ]
}
