{
  "compilerOptions": {
    // Language Options
    "target": "ES2021",
    "lib": ["ES2021", "DOM", "DOM.Iterable", "WebWorker"],
    "experimentalDecorators": true,
    // Modules
    "module": "ESNext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    // Babel handles transpiling and no need for declaration files
    "noEmit": true,
    // Caching
    "incremental": true,
    "tsBuildInfoFile": "node_modules/.cache/typescript/.tsbuildinfo",
    // Type checking options
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "strict": true,
    "noImplicitAny": false,
    // Do not check type declaration files
    "skipLibCheck": true,
    // Interop with CommonJS and other tools
    "esModuleInterop": true,
    "isolatedModules": true,
    "plugins": [
      {
        "name": "ts-lit-plugin",
        "strict": true,
        "rules": {
          // Custom elements
          "no-unknown-tag-name": "error",
          "no-missing-import": "error",
          "no-missing-element-type-definition": "error",
          // Binding names
          "no-unknown-attribute": "off",
          "no-legacy-attribute": "error",
          // Binding types
          "no-incompatible-type-binding": "warning",
          // LitElement
          "no-property-visibility-mismatch": "error",
          // CSS
          "no-invalid-css": "off" // warning does not work
        },
        "globalTags": ["google-cast-launcher"],
        "customHtmlData": [
          "./node_modules/@lrnwebcomponents/simple-tooltip/custom-elements.json"
        ]
      }
    ]
  }
}
