68 lines
2.0 KiB
JSON
68 lines
2.0 KiB
JSON
{
|
|
"compilerOptions": {
|
|
"target": "es2021",
|
|
"module": "es2020",
|
|
"moduleResolution": "bundler",
|
|
"allowJs": true,
|
|
"verbatimModuleSyntax": true,
|
|
"isolatedModules": true,
|
|
"lib": ["es2021", "dom", "dom.iterable"],
|
|
"noEmit": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"noImplicitReturns": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"strict": true,
|
|
"skipLibCheck": true,
|
|
"resolveJsonModule": true,
|
|
"experimentalDecorators": true,
|
|
// Lit's @property installs an accessor on the prototype. Class field
|
|
// semantics would define an own property on each instance that shadows it,
|
|
// so property writes would no longer trigger a render.
|
|
"useDefineForClassFields": false,
|
|
"esModuleInterop": true,
|
|
"plugins": [
|
|
{
|
|
"name": "ts-lit-plugin",
|
|
"strict": false,
|
|
// These tags are provided by the HA frontend and [almost all] cannot be
|
|
// imported by a custom card directly.
|
|
"globalTags": [
|
|
"ha-alert",
|
|
"ha-button",
|
|
"ha-camera-stream",
|
|
"ha-card",
|
|
"ha-combo-box",
|
|
"ha-dropdown-item",
|
|
"ha-dropdown",
|
|
"ha-expansion-panel",
|
|
"ha-form",
|
|
"ha-hls-player",
|
|
"ha-icon-button",
|
|
"ha-icon",
|
|
"ha-menu-button",
|
|
"ha-selector",
|
|
"ha-spinner",
|
|
"ha-state-icon",
|
|
"ha-web-rtc-player",
|
|
"mwc-button",
|
|
"mwc-list-item",
|
|
"state-badge"
|
|
],
|
|
"rules": {
|
|
"no-unknown-tag-name": "error",
|
|
"no-missing-import": "error",
|
|
"no-unclosed-tag": "error",
|
|
"no-incompatible-type-binding": "warning",
|
|
"no-invalid-css": "warning",
|
|
"no-missing-element-type-definition": "warning",
|
|
"no-property-visibility-mismatch": "error"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
// `allowJs` would otherwise parse the build output.
|
|
"exclude": ["dist", "node_modules"]
|
|
}
|