diff --git a/.eslintrc.json b/.eslintrc.json
index 73d6cea999..b1db8a1786 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -4,8 +4,7 @@
"plugin:@typescript-eslint/recommended",
"plugin:wc/recommended",
"plugin:lit/recommended",
- "prettier",
- "prettier/@typescript-eslint"
+ "prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
@@ -85,6 +84,25 @@
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/explicit-module-boundary-types": 0,
"@typescript-eslint/no-shadow": ["error"],
+ "@typescript-eslint/naming-convention": [
+ 0,
+ {
+ "selector": "default",
+ "format": ["camelCase", "snake_case"],
+ "leadingUnderscore": "allow",
+ "trailingUnderscore": "allow"
+ },
+ {
+ "selector": ["variable"],
+ "format": ["camelCase", "snake_case", "UPPER_CASE"],
+ "leadingUnderscore": "allow",
+ "trailingUnderscore": "allow"
+ },
+ {
+ "selector": "typeLike",
+ "format": ["PascalCase"]
+ }
+ ],
"lit/attribute-value-entities": 0
},
"plugins": ["disable", "import", "lit", "prettier", "@typescript-eslint"],
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 6663a4988e..05c8af47e4 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -37,9 +37,11 @@ jobs:
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations gather-gallery-demos
- name: Run eslint
- run: ./node_modules/.bin/eslint '{**/src,src}/**/*.{js,ts,html}' --ignore-path .gitignore
+ run: yarn run lint:eslint
- name: Run tsc
- run: ./node_modules/.bin/tsc
+ run: yarn run lint:types
+ - name: Run prettier
+ run: yarn run lint:prettier
test:
runs-on: ubuntu-latest
steps:
diff --git a/cast/src/launcher/layout/hc-cast.ts b/cast/src/launcher/layout/hc-cast.ts
index 7bcbe70d59..c91e38f2af 100644
--- a/cast/src/launcher/layout/hc-cast.ts
+++ b/cast/src/launcher/layout/hc-cast.ts
@@ -54,9 +54,7 @@ class HcCast extends LitElement {
const error =
this.castManager.castState === "NO_DEVICES_AVAILABLE"
? html`
-
- There were no suitable Chromecast devices to cast to found.
-
+ There were no suitable Chromecast devices to cast to found.
`
: undefined;
diff --git a/cast/src/launcher/layout/hc-connect.ts b/cast/src/launcher/layout/hc-connect.ts
index 8f3e1272ee..518c582f2c 100644
--- a/cast/src/launcher/layout/hc-connect.ts
+++ b/cast/src/launcher/layout/hc-connect.ts
@@ -86,9 +86,7 @@ export class HcConnect extends LitElement {
-
- Retry
-
+ Retry
Log out
diff --git a/demo/src/stubs/translations.ts b/demo/src/stubs/translations.ts
index 62ee9ac1bd..7eced853f0 100644
--- a/demo/src/stubs/translations.ts
+++ b/demo/src/stubs/translations.ts
@@ -3,8 +3,6 @@ import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
export const mockTranslations = (hass: MockHomeAssistant) => {
hass.mockWS(
"frontend/get_translations",
- (/* msg: {language: string, category: string} */) => {
- return { resources: {} };
- }
+ (/* msg: {language: string, category: string} */) => ({ resources: {} })
);
};
diff --git a/hassio/src/addon-store/hassio-addon-repository.ts b/hassio/src/addon-store/hassio-addon-repository.ts
index 746ee5cd8d..4e33f15e8b 100644
--- a/hassio/src/addon-store/hassio-addon-repository.ts
+++ b/hassio/src/addon-store/hassio-addon-repository.ts
@@ -47,9 +47,7 @@ class HassioAddonRepositoryEl extends LitElement {
const repo = this.repo;
let _addons = this.addons;
if (!this.hass.userData?.showAdvanced) {
- _addons = _addons.filter((addon) => {
- return !addon.advanced;
- });
+ _addons = _addons.filter((addon) => !addon.advanced);
}
const addons = this._getAddons(_addons, this.filter);
@@ -68,9 +66,7 @@ class HassioAddonRepositoryEl extends LitElement {
}
return html`
-
- ${repo.name}
-
+
${repo.name}
${addons.map(
(addon) => html`
diff --git a/hassio/src/addon-store/hassio-addon-store.ts b/hassio/src/addon-store/hassio-addon-store.ts
index 5ca3d77d73..fd41a504db 100644
--- a/hassio/src/addon-store/hassio-addon-store.ts
+++ b/hassio/src/addon-store/hassio-addon-store.ts
@@ -86,9 +86,7 @@ class HassioAddonStore extends LitElement {
main-page
supervisor
>
-
- ${this.supervisor.localize("panel.store")}
-
+
${this.supervisor.localize("panel.store")}
{
- return repositories.sort(sortRepos).map((repo) => {
+ ) =>
+ repositories.sort(sortRepos).map((repo) => {
const filteredAddons = addons.filter(
(addon) => addon.repository === repo.slug
);
@@ -171,8 +169,7 @@ class HassioAddonStore extends LitElement {
>
`
: html``;
- });
- }
+ })
);
private _handleAction(ev: CustomEvent) {
diff --git a/hassio/src/addon-view/config/hassio-addon-audio.ts b/hassio/src/addon-view/config/hassio-addon-audio.ts
index de682a9520..79275a39cf 100644
--- a/hassio/src/addon-view/config/hassio-addon-audio.ts
+++ b/hassio/src/addon-view/config/hassio-addon-audio.ts
@@ -69,13 +69,13 @@ class HassioAddonAudio extends LitElement {
.selected=${this._selectedInput!}
>
${this._inputDevices &&
- this._inputDevices.map((item) => {
- return html`
+ this._inputDevices.map(
+ (item) => html`
${item.name}
- `;
- })}
+ `
+ )}
${this._outputDevices &&
- this._outputDevices.map((item) => {
- return html`
+ this._outputDevices.map(
+ (item) => html`
${item.name}
- `;
- })}
+ `
+ )}
diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts
index 706dd12789..56ebbfa5f5 100644
--- a/hassio/src/addon-view/config/hassio-addon-config.ts
+++ b/hassio/src/addon-view/config/hassio-addon-config.ts
@@ -65,19 +65,15 @@ class HassioAddonConfig extends LitElement {
@query("ha-yaml-editor") private _editor?: HaYamlEditor;
- public computeLabel = (entry: HaFormSchema): string => {
- return (
- this.addon.translations[this.hass.language]?.configuration?.[entry.name]
- ?.name ||
- this.addon.translations.en?.configuration?.[entry.name].name ||
- entry.name
- );
- };
+ public computeLabel = (entry: HaFormSchema): string =>
+ this.addon.translations[this.hass.language]?.configuration?.[entry.name]
+ ?.name ||
+ this.addon.translations.en?.configuration?.[entry.name].name ||
+ entry.name;
private _filteredShchema = memoizeOne(
- (options: Record
, schema: HaFormSchema[]) => {
- return schema.filter((entry) => entry.name in options || entry.required);
- }
+ (options: Record, schema: HaFormSchema[]) =>
+ schema.filter((entry) => entry.name in options || entry.required)
);
protected render(): TemplateResult {
diff --git a/hassio/src/addon-view/config/hassio-addon-network.ts b/hassio/src/addon-view/config/hassio-addon-network.ts
index 57eeacd187..256f81175f 100644
--- a/hassio/src/addon-view/config/hassio-addon-network.ts
+++ b/hassio/src/addon-view/config/hassio-addon-network.ts
@@ -79,12 +79,10 @@ class HassioAddonNetwork extends LitElement {
"addon.configuration.network.host"
)}
-
- ${this.supervisor.localize("common.description")}
- |
+ ${this.supervisor.localize("common.description")} |
- ${this._config!.map((item) => {
- return html`
+ ${this._config!.map(
+ (item) => html`
${item.container} |
@@ -100,8 +98,8 @@ class HassioAddonNetwork extends LitElement {
|
${this._computeDescription(item)} |
- `;
- })}
+ `
+ )}
@@ -124,25 +122,20 @@ class HassioAddonNetwork extends LitElement {
}
}
- private _computeDescription = (item: NetworkItem): string => {
- return (
- this.addon.translations[this.hass.language]?.network?.[item.container]
- ?.description ||
- this.addon.translations.en?.network?.[item.container]?.description ||
- item.description
- );
- };
+ private _computeDescription = (item: NetworkItem): string =>
+ this.addon.translations[this.hass.language]?.network?.[item.container]
+ ?.description ||
+ this.addon.translations.en?.network?.[item.container]?.description ||
+ item.description;
private _setNetworkConfig(): void {
const network = this.addon.network || {};
const description = this.addon.network_description || {};
- const items: NetworkItem[] = Object.keys(network).map((key) => {
- return {
- container: key,
- host: network[key],
- description: description[key],
- };
- });
+ const items: NetworkItem[] = Object.keys(network).map((key) => ({
+ container: key,
+ host: network[key],
+ description: description[key],
+ }));
this._config = items.sort((a, b) => (a.container > b.container ? 1 : -1));
}
diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts
index b0f10392fa..03d2c1bf65 100644
--- a/hassio/src/addon-view/info/hassio-addon-info.ts
+++ b/hassio/src/addon-view/info/hassio-addon-info.ts
@@ -566,9 +566,7 @@ class HassioAddonInfo extends LitElement {
${this.supervisor.localize("addon.dashboard.hostname")}
-
- ${this.addon.hostname}
-
+
${this.addon.hostname}
${metrics.map(
(metric) =>
@@ -997,7 +995,7 @@ class HassioAddonInfo extends LitElement {
addons: [this.addon.slug],
homeassistant: false,
},
- updateHandler: async () => await this._updateAddon(),
+ updateHandler: async () => this._updateAddon(),
});
}
diff --git a/hassio/src/components/hassio-card-content.ts b/hassio/src/components/hassio-card-content.ts
index 02d3fc7e1b..03884e6b94 100644
--- a/hassio/src/components/hassio-card-content.ts
+++ b/hassio/src/components/hassio-card-content.ts
@@ -56,13 +56,13 @@ class HassioCardContent extends LitElement {
>
`}
-
- ${this.title}
-
+
${this.title}
${this.description}
- ${/* treat as available when undefined */
- this.available === false ? " (Not available)" : ""}
+ ${
+ /* treat as available when undefined */
+ this.available === false ? " (Not available)" : ""
+ }
${this.datetime
? html`
-
- ${this.description}
-
+ ${this.description}
-
- ${roundedValue} %
-
+ ${roundedValue} %
50,
diff --git a/hassio/src/dashboard/hassio-update.ts b/hassio/src/dashboard/hassio-update.ts
index ccff99445b..1a11ee99e4 100644
--- a/hassio/src/dashboard/hassio-update.ts
+++ b/hassio/src/dashboard/hassio-update.ts
@@ -40,9 +40,8 @@ import { HomeAssistant } from "../../../src/types";
import { showDialogSupervisorUpdate } from "../dialogs/update/show-dialog-update";
import { hassioStyle } from "../resources/hassio-style";
-const computeVersion = (key: string, version: string): string => {
- return key === "os" ? version : `${key}-${version}`;
-};
+const computeVersion = (key: string, version: string): string =>
+ key === "os" ? version : `${key}-${version}`;
@customElement("hassio-update")
export class HassioUpdate extends LitElement {
@@ -50,11 +49,12 @@ export class HassioUpdate extends LitElement {
@property({ attribute: false }) public supervisor!: Supervisor;
- private _pendingUpdates = memoizeOne((supervisor: Supervisor): number => {
- return Object.keys(supervisor).filter(
- (value) => supervisor[value].update_available
- ).length;
- });
+ private _pendingUpdates = memoizeOne(
+ (supervisor: Supervisor): number =>
+ Object.keys(supervisor).filter(
+ (value) => supervisor[value].update_available
+ ).length
+ );
protected render(): TemplateResult {
if (!this.supervisor) {
diff --git a/hassio/src/dialogs/network/dialog-hassio-network.ts b/hassio/src/dialogs/network/dialog-hassio-network.ts
index 8e6f9610e4..04f2710465 100644
--- a/hassio/src/dialogs/network/dialog-hassio-network.ts
+++ b/hassio/src/dialogs/network/dialog-hassio-network.ts
@@ -47,7 +47,8 @@ import { HassioNetworkDialogParams } from "./show-dialog-network";
const IP_VERSIONS = ["ipv4", "ipv6"];
@customElement("dialog-hassio-network")
-export class DialogHassioNetwork extends LitElement
+export class DialogHassioNetwork
+ extends LitElement
implements HassDialog {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -76,9 +77,9 @@ export class DialogHassioNetwork extends LitElement
this._dirty = false;
this._curTabIndex = 0;
this.supervisor = params.supervisor;
- this._interfaces = params.supervisor.network.interfaces.sort((a, b) => {
- return a.primary > b.primary ? -1 : 1;
- });
+ this._interfaces = params.supervisor.network.interfaces.sort((a, b) =>
+ a.primary > b.primary ? -1 : 1
+ );
this._interface = { ...this._interfaces[this._curTabIndex] };
await this.updateComplete;
diff --git a/hassio/src/dialogs/registries/dialog-hassio-registries.ts b/hassio/src/dialogs/registries/dialog-hassio-registries.ts
index 292fab3f43..4b77b41436 100644
--- a/hassio/src/dialogs/registries/dialog-hassio-registries.ts
+++ b/hassio/src/dialogs/registries/dialog-hassio-registries.ts
@@ -108,8 +108,8 @@ class HassioRegistriesDialog extends LitElement {
`
: html`${this._registries?.length
- ? this._registries.map((entry) => {
- return html`
+ ? this._registries.map(
+ (entry) => html`
${entry.registry}
- `;
- })
+ `
+ )
: html`
${this._error}
` : ""}