├── .npmrc
├── .husky
└── pre-commit
├── .github
├── FUNDING.yml
├── renovate.json
├── workflows
│ ├── validate.yaml
│ ├── release.yaml
│ └── ci.yaml
└── ISSUE_TEMPLATE
│ ├── feature_request.yml
│ └── bug_report.yml
├── .prettierignore
├── hacs.json
├── src
├── vite-env.d.ts
├── styles.ts
├── const.ts
├── modules
│ ├── warning.ts
│ ├── glance-card.ts
│ ├── generic-card.ts
│ ├── vertical-stack.ts
│ └── generic-entity-row.ts
├── module.ts
├── types.ts
├── utils.ts
├── main.ts
├── templates.ts
├── canary-card.ts
└── secondary-info.ts
├── .gitattributes
├── examples
├── glances-align.png
├── secondary-info.png
└── vertical-stack-in-card.png
├── .editorconfig
├── .vscode
├── extensions.json
├── tasks.json
└── settings.json
├── .git-blame-ignore-revs
├── tsconfig.json
├── .eslintrc.yaml
├── LICENSE
├── vite.config.ts
├── package.json
├── info.md
├── .gitignore
├── README.md
└── pnpm-lock.yaml
/.npmrc:
--------------------------------------------------------------------------------
1 | save-exact=true
2 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | lint-staged
2 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | ko_fi: jcwillox
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | pnpm-lock.yaml
2 | dist/
3 |
--------------------------------------------------------------------------------
/hacs.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Canary"
3 | }
4 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # normalise line endings to lf on all platforms
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/examples/glances-align.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jcwillox/lovelace-canary/HEAD/examples/glances-align.png
--------------------------------------------------------------------------------
/examples/secondary-info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jcwillox/lovelace-canary/HEAD/examples/secondary-info.png
--------------------------------------------------------------------------------
/examples/vertical-stack-in-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jcwillox/lovelace-canary/HEAD/examples/vertical-stack-in-card.png
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | trim_trailing_whitespace = true
6 | insert_final_newline = true
7 | indent_style = space
8 | indent_size = 2
9 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "formulahendry.auto-rename-tag",
4 | "editorconfig.editorconfig",
5 | "dbaeumer.vscode-eslint",
6 | "christian-kohler.path-intellisense",
7 | "esbenp.prettier-vscode",
8 | "redhat.vscode-yaml"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/src/styles.ts:
--------------------------------------------------------------------------------
1 | import { StyleInfo } from "lit/directives/style-map";
2 |
3 | export function mapStyle(styleObject: StyleInfo, prefix = "") {
4 | return Object.keys(styleObject)
5 | .reduce((styles: string[], rule) => {
6 | return [...styles, `${prefix}${rule}: ${styleObject[rule]};`];
7 | }, [])
8 | .join(" ");
9 | }
10 |
--------------------------------------------------------------------------------
/.github/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": ["github>jcwillox/renovate-config", ":automergeMinor"],
4 | "packageRules": [
5 | {
6 | "matchPackageNames": ["lit"],
7 | "allowedVersions": "<3.0.0"
8 | },
9 | {
10 | "matchPackageNames": ["eslint"],
11 | "allowedVersions": "<9.0.0"
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "npm",
6 | "script": "install",
7 | "label": "npm: install"
8 | },
9 | {
10 | "type": "npm",
11 | "script": "lint",
12 | "problemMatcher": ["$eslint-stylish"],
13 | "label": "npm: lint"
14 | },
15 | {
16 | "type": "npm",
17 | "script": "build",
18 | "group": "build",
19 | "label": "npm: build"
20 | }
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/src/const.ts:
--------------------------------------------------------------------------------
1 | export const DEFAULT_SECONDARY_INFO = [
2 | "entity-id",
3 | "last-changed",
4 | "last-updated",
5 | "last-triggered",
6 | "position",
7 | "tilt-position",
8 | "brightness",
9 | ];
10 |
11 | // language=CSS
12 | export const VERTICAL_STACK_IN_CARD_STYLE = `
13 | #root > *:not(:first-child) {
14 | margin-top: -24px;
15 | }
16 | `;
17 |
18 | export const NO_CARD_STYLE = {
19 | boxShadow: "none",
20 | background: "none",
21 | border: "none",
22 | };
23 |
--------------------------------------------------------------------------------
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------
1 | # git-blame supports ignoring specific commits, this allows us to hide formatting
2 | # commits from git-blame.
3 | #
4 | # You can use the ignore list file by running:
5 | #
6 | # $ git config blame.ignoreRevsFile .git-blame-ignore-revs
7 |
8 | # refactor: reformat and sort imports
9 | af2de2cc10091134fd68866eff97e70b387db4f6
10 |
11 | # refactor: reformat with prettier v3
12 | 782d95e4ddf38fa577f0726b965b47567a94f922
13 |
14 | # refactor: use default prettier config
15 | 336fee4c94f4c637842f54a55d772c7f9b62e524
16 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.formatOnSave": true,
3 | "editor.linkedEditing": true,
4 | "editor.renderWhitespace": "trailing",
5 | "html.autoClosingTags": true,
6 | "editor.quickSuggestions": {
7 | "strings": true
8 | },
9 | "editor.codeActionsOnSave": {
10 | "source.fixAll": "explicit"
11 | },
12 | "[javascript][javascriptreact][typescript][typescriptreact][json][jsonc][yaml][html][markdown][postcss][css]": {
13 | "editor.defaultFormatter": "esbenp.prettier-vscode"
14 | },
15 | "vite.autoStart": false
16 | }
17 |
--------------------------------------------------------------------------------
/.github/workflows/validate.yaml:
--------------------------------------------------------------------------------
1 | name: "Validate"
2 |
3 | on:
4 | push:
5 | branches:
6 | - "main"
7 | - "feat**"
8 | - "fix**"
9 | tags-ignore:
10 | - "**"
11 | pull_request:
12 | schedule:
13 | - cron: "0 0 * * *"
14 |
15 | jobs:
16 | validate-hacs:
17 | runs-on: ubuntu-latest
18 | name: "HACS"
19 | steps:
20 | - name: "Checkout the repository"
21 | uses: actions/checkout@v4.1.7
22 |
23 | - name: "Validate HACS"
24 | uses: hacs/action@main
25 | with:
26 | category: plugin
27 |
--------------------------------------------------------------------------------
/src/modules/warning.ts:
--------------------------------------------------------------------------------
1 | import { createModule } from "../module";
2 | import { extensionEnabled, findConfig, moduleEnabled } from "../utils";
3 |
4 | const MODULE = "warning";
5 | const ELEMENT = "hui-warning";
6 |
7 | interface Config {
8 | hide_warning?: boolean;
9 | }
10 |
11 | if (moduleEnabled(MODULE)) {
12 | createModule(ELEMENT, function () {
13 | const config: Config = findConfig(this);
14 | if (
15 | config.hide_warning === true &&
16 | extensionEnabled(config, "hide_warning")
17 | ) {
18 | this.style.display = "none";
19 | }
20 | });
21 | }
22 |
--------------------------------------------------------------------------------
/src/module.ts:
--------------------------------------------------------------------------------
1 | import { FirstUpdatedFn } from "./types";
2 |
3 | export function createModule>(
4 | element: string,
5 | firstUpdated: FirstUpdatedFn,
6 | ) {
7 | customElements.whenDefined(element).then(() => {
8 | const el = customElements.get(element) as CustomElementConstructor;
9 | const oFirstUpdated = el.prototype.firstUpdated;
10 |
11 | el.prototype.firstUpdated = function (changedProperties) {
12 | oFirstUpdated.call(this, changedProperties);
13 | firstUpdated.call(this, changedProperties);
14 | };
15 | });
16 | }
17 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "module": "ES2020",
5 | "moduleResolution": "Node",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "strict": true,
8 | "noEmit": true,
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "noFallthroughCasesInSwitch": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "experimentalDecorators": true,
16 | "emitDecoratorMetadata": true,
17 | "noImplicitAny": false,
18 | "resolveJsonModule": true
19 | },
20 | "include": ["src", "vite.config.ts"]
21 | }
22 |
--------------------------------------------------------------------------------
/.eslintrc.yaml:
--------------------------------------------------------------------------------
1 | root: true
2 | extends:
3 | - "eslint:recommended"
4 | - "plugin:import/recommended"
5 | - "plugin:import/typescript"
6 | - "plugin:@typescript-eslint/recommended"
7 | - "plugin:prettier/recommended"
8 | plugins:
9 | - "only-warn"
10 | ignorePatterns:
11 | - "dist/"
12 | env:
13 | browser: true
14 | settings:
15 | import/resolver:
16 | typescript: {}
17 | rules:
18 | no-var: "warn"
19 | prefer-const: "warn"
20 | prettier/prettier: "warn"
21 | import/newline-after-import: "warn"
22 | quotes:
23 | - "warn"
24 | - "double"
25 | - avoidEscape: true
26 | allowTemplateLiterals: false
27 | sort-imports:
28 | - "warn"
29 | - ignoreDeclarationSort: true
30 | import/order:
31 | - "warn"
32 | - groups: [builtin, external, internal, parent, sibling, index]
33 | pathGroups:
34 | - pattern: "@/**"
35 | group: "internal"
36 | alphabetize:
37 | order: "asc"
38 |
--------------------------------------------------------------------------------
/src/modules/glance-card.ts:
--------------------------------------------------------------------------------
1 | import { createModule } from "../module";
2 | import { extensionEnabled, moduleEnabled } from "../utils";
3 |
4 | const MODULE = "glance-card";
5 | const ELEMENT = "hui-glance-card";
6 |
7 | type AlignmentOption = "left" | "center" | "right";
8 | interface Config {
9 | align?: AlignmentOption;
10 | }
11 |
12 | if (moduleEnabled(MODULE)) {
13 | const getAlignment = function (alignment: AlignmentOption) {
14 | switch (alignment) {
15 | case "center":
16 | return "space-evenly";
17 | case "right":
18 | return "flex-end";
19 | default:
20 | return "flex-start";
21 | }
22 | };
23 |
24 | createModule(ELEMENT, function () {
25 | if (this._config?.align && extensionEnabled(this._config, "align")) {
26 | const el = this.shadowRoot?.querySelector(".entities");
27 | if (el) {
28 | el.style.justifyContent = getAlignment(this._config.align);
29 | }
30 | }
31 | });
32 | }
33 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | import { HomeAssistant, LovelaceCard } from "custom-card-helpers";
2 | import { LovelaceCardConfig } from "custom-card-helpers/src/types";
3 | import { LitElement, PropertyValues } from "lit";
4 | import { StyleInfo } from "lit/directives/style-map.js";
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | "hui-error-card": LovelaceCard;
9 | }
10 |
11 | const __NAME__: string;
12 | const __BRANCH__: string;
13 | const __COMMIT__: string;
14 | const __VERSION__: string;
15 | const __BUILD_TIME__: string;
16 | }
17 |
18 | export interface CanaryCardConfig extends LovelaceCardConfig {
19 | theme?: string;
20 | style?: string | StyleInfo;
21 | card: LovelaceCardConfig;
22 | }
23 |
24 | export interface LovelaceElement>
25 | extends LitElement {
26 | hass?: HomeAssistant;
27 | config?: Config;
28 | _config?: Config;
29 | }
30 |
31 | export type FirstUpdatedFn = (
32 | this: LovelaceElement,
33 | changedProperties: PropertyValues,
34 | ) => void;
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Joshua Cowie-Willox
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | import { getLovelace } from "custom-card-helpers";
2 |
3 | interface NodeWithConfig extends Node {
4 | host?: Node;
5 | config?: object;
6 | _config?: object;
7 | }
8 |
9 | export const findConfig = function (node: NodeWithConfig) {
10 | if (node.config) return node.config;
11 | if (node._config) return node._config;
12 | if (node.host) return findConfig(node.host);
13 | if (node.parentElement) return findConfig(node.parentElement);
14 | if (node.parentNode) return findConfig(node.parentNode);
15 | return null;
16 | };
17 |
18 | const lovelaceConfig = getLovelace();
19 | const canaryConfig = lovelaceConfig && lovelaceConfig.config.canary;
20 |
21 | export function moduleEnabled(module) {
22 | if (canaryConfig && canaryConfig.disable) {
23 | return !canaryConfig.disable.includes(module);
24 | }
25 | return true;
26 | }
27 |
28 | export function extensionEnabled(config, extension) {
29 | const disableConfig = config.disable_canary;
30 | // check: all extensions are enabled.
31 | if (!disableConfig) return true;
32 | // check: all extensions are disabled.
33 | if (disableConfig === true) return false;
34 | // check: specific extensions are disabled.
35 | return !disableConfig.includes(extension);
36 | }
37 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { exec } from "node:child_process";
2 | import { promisify } from "node:util";
3 | import { UserConfig, defineConfig } from "vite";
4 | import viteCompression from "vite-plugin-compression";
5 | import pkg from "./package.json";
6 |
7 | const $ = async (command: string, env = "") =>
8 | process.env[env] ?? (await promisify(exec)(command)).stdout.trim();
9 |
10 | const all = async (obj: Record>) =>
11 | Object.fromEntries(
12 | await Promise.all(
13 | Object.entries(obj).map(async ([k, v]) => [k, JSON.stringify(await v)]),
14 | ),
15 | );
16 |
17 | export default defineConfig(
18 | async (): Promise => ({
19 | build: {
20 | target: "es6",
21 | lib: {
22 | entry: "src/main.ts",
23 | formats: ["es"],
24 | },
25 | },
26 | esbuild: {
27 | legalComments: "none",
28 | },
29 | plugins: [viteCompression({ verbose: false })],
30 | define: await all({
31 | __NAME__: pkg.name.toUpperCase(),
32 | __BRANCH__: $("git rev-parse --abbrev-ref HEAD", "GITHUB_REF_NAME"),
33 | __VERSION__: $("git describe --tags --dirty --always", "VERSION"),
34 | __COMMIT__: $("git rev-parse HEAD", "GITHUB_SHA"),
35 | __BUILD_TIME__: new Date().toISOString(),
36 | }),
37 | }),
38 | );
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: Feature request
2 | description: Suggest an idea for this project.
3 | title: "[FR]: "
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | This form is for submitting feature requests.
9 |
10 | You may want to open a [discussion](https://github.com/jcwillox/lovelace-paper-buttons-row/discussions) instead for less concrete ideas that need to be discussed further.
11 |
12 | Please fill out all the fields that are relevant to your feature request.
13 | - type: textarea
14 | attributes:
15 | label: Is your feature request related to a problem? Please describe.
16 | description: >-
17 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
18 | - type: textarea
19 | attributes:
20 | label: Describe the solution you'd like
21 | description: >-
22 | A clear and concise description of what you want to happen.
23 | - type: textarea
24 | attributes:
25 | label: Describe alternatives you've considered
26 | description: >-
27 | A clear and concise description of any alternative solutions or features you've considered.
28 | - type: textarea
29 | attributes:
30 | label: Additional context
31 | description: >-
32 | Add any other context or screenshots about the feature request here.
33 |
--------------------------------------------------------------------------------
/.github/workflows/release.yaml:
--------------------------------------------------------------------------------
1 | name: "Release"
2 |
3 | on:
4 | push:
5 | branches:
6 | - "beta"
7 | - "alpha"
8 | workflow_dispatch:
9 | inputs:
10 | draft:
11 | type: boolean
12 | description: "Draft release"
13 | default: false
14 | release_type:
15 | type: choice
16 | description: "Release type"
17 | default: "auto"
18 | options:
19 | - "auto"
20 | - "patch"
21 | - "minor"
22 | - "major"
23 |
24 | jobs:
25 | publish:
26 | name: "Publish"
27 | runs-on: ubuntu-latest
28 | steps:
29 | - name: "Checkout the repository"
30 | uses: actions/checkout@v4.1.7
31 |
32 | - name: "Setup pnpm"
33 | uses: pnpm/action-setup@v4.0.0
34 |
35 | - name: "Setup node"
36 | uses: actions/setup-node@v4.0.3
37 | with:
38 | node-version-file: package.json
39 | cache: "pnpm"
40 |
41 | - name: "Install dependencies"
42 | run: pnpm install
43 |
44 | - name: "Release Package 📦"
45 | run: pnpm dlx @jcwillox/semantic-release-config
46 | env:
47 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48 | SEMANTIC_RELEASE_GITHUB_DRAFT: ${{ inputs.draft }}
49 | SEMANTIC_RELEASE_FORCE_RELEASE: ${{ inputs.release_type }}
50 | SEMANTIC_RELEASE_GITHUB_ASSETS: "dist/*"
51 | SEMANTIC_RELEASE_CMD_PREPARE: "VERSION=${nextRelease.version} pnpm build"
52 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yaml:
--------------------------------------------------------------------------------
1 | name: "CI"
2 |
3 | on:
4 | push:
5 | branches:
6 | - "main"
7 | - "feat**"
8 | - "fix**"
9 | tags-ignore:
10 | - "**"
11 | pull_request:
12 |
13 | jobs:
14 | lint:
15 | name: "Lint"
16 | runs-on: ubuntu-latest
17 | steps:
18 | - name: "Checkout the repository"
19 | uses: actions/checkout@v4.1.7
20 |
21 | - name: "Setup pnpm"
22 | uses: pnpm/action-setup@v4.0.0
23 |
24 | - name: "Setup node"
25 | uses: actions/setup-node@v4.0.3
26 | with:
27 | node-version-file: package.json
28 | cache: "pnpm"
29 |
30 | - name: "Install dependencies"
31 | run: pnpm install
32 |
33 | - name: "Run Lint"
34 | run: pnpm run lint
35 |
36 | - name: "Check format"
37 | run: pnpm run format:check
38 |
39 | build:
40 | name: "Build & Test"
41 | runs-on: ubuntu-latest
42 | steps:
43 | - name: "Checkout the repository"
44 | uses: actions/checkout@v4.1.7
45 |
46 | - name: "Setup pnpm"
47 | uses: pnpm/action-setup@v4.0.0
48 |
49 | - name: "Setup node"
50 | uses: actions/setup-node@v4.0.3
51 | with:
52 | node-version-file: package.json
53 | cache: "pnpm"
54 |
55 | - name: "Install dependencies"
56 | run: pnpm install
57 |
58 | - name: "Typecheck"
59 | run: pnpm run typecheck
60 |
61 | - name: "Run Build"
62 | run: pnpm run build
63 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { fireEvent } from "custom-card-helpers";
2 | import { name } from "../package.json";
3 |
4 | // allow dynamic updating of secondary info.
5 | import "./secondary-info";
6 | // adds three methods to add secondary info to entity rows.
7 | import "./modules/generic-entity-row";
8 | // adds the no_card option.
9 | import "./modules/generic-card";
10 | // adds the in_card option.
11 | import "./modules/vertical-stack";
12 | // adds the align option.
13 | import "./modules/glance-card";
14 | // adds hide warning option.
15 | import "./modules/warning";
16 | // adds the canary-card card.
17 | import "./canary-card";
18 |
19 | function getResources() {
20 | const scriptElements = document.querySelectorAll("script");
21 | const retVal: string[] = [];
22 | for (const script of scriptElements) {
23 | if (script?.innerText?.trim()?.startsWith("import(")) {
24 | const imports = script.innerText.split("\n")?.map((e) => e.trim());
25 | for (const imp of imports) {
26 | retVal.push(imp.replace(/^import\("/, "").replace(/"\);/, ""));
27 | }
28 | }
29 | }
30 | return retVal;
31 | }
32 |
33 | const resources = getResources();
34 | if (resources.some((r) => r.endsWith(name + ".js"))) {
35 | console.info(`${name} is loaded as a module`);
36 | } else {
37 | fireEvent(window, "ll-rebuild", {});
38 | console.info(
39 | `You may not be getting optimal performance out of ${name}.\nSee https://github.com/thomasloven/lovelace-card-mod#performance-improvements`,
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "canary",
3 | "version": "0.0.0-dev",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "prepare": "husky",
8 | "dev": "vite build --watch",
9 | "build": "vite build",
10 | "build:tsc": "tsc && vite build",
11 | "typecheck": "tsc",
12 | "lint": "eslint . --cache --max-warnings=0 --ext js,cjs,mjs,jsx,ts,tsx",
13 | "lint:fix": "pnpm run lint --fix",
14 | "format": "prettier --cache --write .",
15 | "format:check": "prettier --cache --check ."
16 | },
17 | "lint-staged": {
18 | "*.{js,cjs,mjs,jsx,ts,tsx}": "eslint --cache --max-warnings=0 --fix",
19 | "*.!(js|cjs|mjs|jsx|ts|tsx)": "prettier --ignore-unknown --cache --write"
20 | },
21 | "dependencies": {
22 | "card-tools": "github:thomasloven/lovelace-card-tools#477f3d4",
23 | "custom-card-helpers": "1.9.0",
24 | "home-assistant-js-websocket": "9.4.0",
25 | "lit": "2.8.0"
26 | },
27 | "devDependencies": {
28 | "@types/node": "20.14.12",
29 | "@typescript-eslint/eslint-plugin": "7.17.0",
30 | "@typescript-eslint/parser": "7.17.0",
31 | "eslint": "8.57.0",
32 | "eslint-config-prettier": "9.1.0",
33 | "eslint-import-resolver-typescript": "3.6.1",
34 | "eslint-plugin-import": "2.29.1",
35 | "eslint-plugin-only-warn": "1.1.0",
36 | "eslint-plugin-prettier": "5.2.1",
37 | "husky": "9.1.1",
38 | "lint-staged": "15.2.7",
39 | "prettier": "3.3.3",
40 | "typescript": "5.5.4",
41 | "vite": "5.3.4",
42 | "vite-plugin-compression": "0.5.1"
43 | },
44 | "packageManager": "pnpm@9.6.0",
45 | "engines": {
46 | "node": ">=20.x"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/modules/generic-card.ts:
--------------------------------------------------------------------------------
1 | import { hass } from "card-tools/src/hass";
2 | import { applyThemesOnElement } from "custom-card-helpers";
3 | import { StyleInfo } from "lit/directives/style-map.js";
4 | import { NO_CARD_STYLE } from "../const";
5 | import { createModule } from "../module";
6 | import { mapStyle } from "../styles";
7 | import { extensionEnabled, findConfig, moduleEnabled } from "../utils";
8 |
9 | const MODULE = "generic-card";
10 | const ELEMENT = "ha-card";
11 |
12 | interface Config {
13 | canary_theme?: string;
14 | canary_style?: StyleInfo;
15 | no_card?: boolean;
16 | }
17 |
18 | if (moduleEnabled(MODULE)) {
19 | createModule(ELEMENT, function () {
20 | const config: Config = findConfig(this);
21 | if (!config) return;
22 |
23 | // ha-card elements have default transition that we need to temporarily disable.
24 | this.style.transition = "none";
25 |
26 | if (config.canary_theme && extensionEnabled(config, "canary_theme")) {
27 | applyThemesOnElement(
28 | this,
29 | this.hass ? this.hass.themes : hass().themes,
30 | config.canary_theme,
31 | );
32 | }
33 |
34 | if (config.canary_style && extensionEnabled(config, "canary_style")) {
35 | this.style.cssText += mapStyle(config.canary_style);
36 | }
37 |
38 | if (config.no_card === true && extensionEnabled(config, "no_card")) {
39 | Object.assign(this.style, NO_CARD_STYLE);
40 | }
41 |
42 | // flush css.
43 | // eslint-disable-next-line @typescript-eslint/no-unused-expressions
44 | this.offsetHeight;
45 |
46 | // restore transition.
47 | this.style.transition = "";
48 | });
49 | }
50 |
--------------------------------------------------------------------------------
/src/templates.ts:
--------------------------------------------------------------------------------
1 | export function oldExtractEntities(
2 | template: string,
3 | variables: Record = {},
4 | ) {
5 | const RE_TEMPLATES = /\[\[\s(.*?)\s]]/g;
6 |
7 | const entity_ids: string[] = [];
8 |
9 | const matches = template.matchAll(RE_TEMPLATES);
10 |
11 | for (const match of matches) {
12 | const FUNCTION = /^\w+\(.*\)$/;
13 | const EXPR = /([^=<>!]+)\s*(?:==|!=|<|>|<=|>=)\s*([^=<>!]+)/;
14 | const SPECIAL = /^\{.+}$/;
15 | const CONDITION = /^\w+\((.*?),/;
16 |
17 | if (FUNCTION.test(match[1].trim())) {
18 | const conditionMatch = match[1].trim().match(CONDITION)?.[1];
19 | const splitExpression = conditionMatch?.match(EXPR) || [];
20 |
21 | for (let i = 1; i < splitExpression.length; i++) {
22 | const parts = splitExpression[i].trim().split(".");
23 | if (parts.length > 1) {
24 | if (SPECIAL.test(parts[0])) {
25 | if (variables.entity && parts[0].includes("{entity}")) {
26 | entity_ids.push(variables.entity as string);
27 | }
28 | } else {
29 | entity_ids.push(`${parts[0]}.${parts[1]}`);
30 | }
31 | }
32 | }
33 | } else {
34 | const parts = match[1].trim().split(".");
35 | if (parts.length > 1) {
36 | if (SPECIAL.test(parts[0])) {
37 | if (variables.entity && parts[0] === "{entity}") {
38 | entity_ids.push(variables.entity as string);
39 | }
40 | } else {
41 | entity_ids.push(`${parts[0]}.${parts[1]}`);
42 | }
43 | }
44 | }
45 | }
46 |
47 | return Array.from(new Set(entity_ids));
48 | }
49 |
--------------------------------------------------------------------------------
/info.md:
--------------------------------------------------------------------------------
1 | ### Highlights
2 |
3 | #### Template Secondary Info
4 |
5 |
6 |
7 | #### Vertical Stack in Card
8 |
9 |
10 |
11 | #### Glance Card Entities Alignment
12 |
13 |
14 |
15 | ### Info
16 |
17 | Much like [card-mod] Canary extends the default lovelace cards, so you don't need to actually define a `canary-card` for these options to work. The options are added to their respective cards as 'extensions'.
18 |
19 | Check out the [documentation] for the configuration options and examples.
20 |
21 | Available Extensions:
22 |
23 | - [Generic Entity Row](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row)
24 | - [`secondary_info`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#secondary_info)
25 | - [`canary_style`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#canary_style)
26 | - [`canary_theme`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#canary_theme)
27 | - [`hide_warning`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#hide_warning)
28 | - [Generic Card](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card)
29 | - [`no_card`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#no_card)
30 | - [`canary_style`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#canary_style)
31 | - [`canary_theme`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#canary_theme)
32 | - [Glance Card](https://github.com/jcwillox/lovelace-canary/wiki/Glance-Card)
33 | - [`align`](https://github.com/jcwillox/lovelace-canary/wiki/Glance-Card#align)
34 | - [Vertical Stack](https://github.com/jcwillox/lovelace-canary/wiki/Vertical-Stack)
35 | - [`in_card`](https://github.com/jcwillox/lovelace-canary/wiki/Vertical-Stack#in_card)
36 | - [Canary Card](https://github.com/jcwillox/lovelace-canary/wiki/Canary-Card)
37 | - `style`
38 | - `theme`
39 |
40 | [card-mod]: https://github.com/thomasloven/lovelace-card-mod
41 | [documentation]: https://github.com/jcwillox/lovelace-canary/wiki
42 |
--------------------------------------------------------------------------------
/src/modules/vertical-stack.ts:
--------------------------------------------------------------------------------
1 | import { LovelaceCard } from "custom-card-helpers";
2 | import { NO_CARD_STYLE, VERTICAL_STACK_IN_CARD_STYLE } from "../const";
3 | import { createModule } from "../module";
4 | import { extensionEnabled, moduleEnabled } from "../utils";
5 |
6 | const MODULE = "vertical-stack";
7 | const ELEMENT = "hui-vertical-stack-card";
8 |
9 | interface CardWithStyles extends LovelaceCard, CustomElementConstructor {
10 | styles?: {
11 | cssText: string;
12 | };
13 | }
14 |
15 | interface Config {
16 | in_card?: boolean;
17 | }
18 |
19 | if (moduleEnabled(MODULE)) {
20 | const applyStyles = async function (element) {
21 | // exit clause.
22 | if (!element) return;
23 |
24 | await element.updateComplete;
25 |
26 | if (element.tagName === "HA-CARD") {
27 | element.style.transition = "none";
28 | Object.assign(element.style, NO_CARD_STYLE);
29 | // flush css
30 | // eslint-disable-next-line @typescript-eslint/no-unused-expressions
31 | element.offsetHeight;
32 | element.style.transition = "";
33 | }
34 |
35 | // depth search.
36 | if (element.firstElementChild) {
37 | await applyStyles(element.firstElementChild);
38 | }
39 | if (element.shadowRoot) {
40 | await applyStyles(element.shadowRoot.firstElementChild);
41 | }
42 | // breadth search.
43 | if (element.nextElementSibling) {
44 | await applyStyles(element.nextElementSibling);
45 | }
46 | };
47 |
48 | // require ha-card to be defined so that we can take its style
49 | customElements.whenDefined("ha-card").then(() => {
50 | const IN_CARD_STYLE =
51 | VERTICAL_STACK_IN_CARD_STYLE +
52 | (customElements.get("ha-card") as CardWithStyles).styles?.cssText;
53 |
54 | createModule(ELEMENT, function () {
55 | if (
56 | this._config?.in_card === true &&
57 | extensionEnabled(this._config, "in_card")
58 | ) {
59 | // remove space between cards in the stack add ha-card background.
60 | const styleElement = document.createElement("style");
61 | styleElement.innerHTML = IN_CARD_STYLE;
62 | this.shadowRoot?.appendChild(styleElement);
63 |
64 | // remove style from all ha-card child elements.
65 | const divElement = this.shadowRoot?.querySelector("#root");
66 | applyStyles(divElement);
67 | }
68 | });
69 | });
70 | }
71 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # Snowpack dependency directory (https://snowpack.dev/)
45 | web_modules/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 | .parcel-cache
78 |
79 | # Next.js build output
80 | .next
81 | out
82 |
83 | # Nuxt.js build / generate output
84 | .nuxt
85 | dist
86 |
87 | # Gatsby files
88 | .cache/
89 | # Comment in the public line in if your project uses Gatsby and not Next.js
90 | # https://nextjs.org/blog/next-9-1#public-directory-support
91 | # public
92 |
93 | # vuepress build output
94 | .vuepress/dist
95 |
96 | # Serverless directories
97 | .serverless/
98 |
99 | # FuseBox cache
100 | .fusebox/
101 |
102 | # DynamoDB Local files
103 | .dynamodb/
104 |
105 | # TernJS port file
106 | .tern-port
107 |
108 | # Stores VSCode versions used for testing VSCode extensions
109 | .vscode-test
110 |
111 | # yarn v2
112 | .yarn/cache
113 | .yarn/unplugged
114 | .yarn/build-state.yml
115 | .yarn/install-state.gz
116 | .pnp.*
117 |
118 | # IDE files
119 | .idea/
120 |
--------------------------------------------------------------------------------
/src/canary-card.ts:
--------------------------------------------------------------------------------
1 | import { hass } from "card-tools/src/hass";
2 | import {
3 | HomeAssistant,
4 | LovelaceCard,
5 | applyThemesOnElement,
6 | computeCardSize,
7 | createThing,
8 | } from "custom-card-helpers";
9 | import { LitElement } from "lit";
10 | import { property, state } from "lit/decorators.js";
11 | import type { CanaryCardConfig } from "./types";
12 |
13 | export class CanaryCard extends LitElement implements LovelaceCard {
14 | @property({ attribute: false }) public _hass!: HomeAssistant;
15 | @property() private card!: LitElement & LovelaceCard;
16 | @state() private config!: CanaryCardConfig;
17 |
18 | render() {
19 | return this.card;
20 | }
21 |
22 | setConfig(config) {
23 | this.config = JSON.parse(JSON.stringify(config));
24 | this.card = createThing(this.config.card);
25 | if (!this._hass) {
26 | this._hass = hass() as HomeAssistant;
27 | }
28 | }
29 |
30 | firstUpdated() {
31 | if (typeof this.config.style === "object") {
32 | Object.assign(this.card.style, this.config.style);
33 | } else if (this.config.style) {
34 | const styleEl = document.createElement("style");
35 | styleEl.innerHTML = this.config.style;
36 |
37 | this.card.updateComplete.then(() => {
38 | (this.card.shadowRoot || this.card).appendChild(styleEl);
39 | });
40 | }
41 | }
42 |
43 | set hass(hass) {
44 | this._hass = hass;
45 | this.card.hass = hass;
46 | }
47 |
48 | shouldUpdate(changedProps) {
49 | if (changedProps.has("_config")) {
50 | return true;
51 | }
52 |
53 | const oldHass = changedProps.get("_hass");
54 |
55 | return !oldHass || oldHass.themes !== this._hass.themes;
56 | }
57 |
58 | updated(changedProps) {
59 | super.updated(changedProps);
60 |
61 | if (!this.config || !this._hass) return;
62 |
63 | const oldHass = changedProps.get("_hass");
64 | const oldConfig = changedProps.get("_config");
65 |
66 | if (
67 | !oldHass ||
68 | !oldConfig ||
69 | oldHass.themes !== this._hass.themes ||
70 | oldConfig.theme !== this.config.theme
71 | ) {
72 | applyThemesOnElement(this, this._hass.themes, this.config.theme);
73 | }
74 | }
75 |
76 | getCardSize() {
77 | return computeCardSize(this.card);
78 | }
79 | }
80 |
81 | (async () => {
82 | while (customElements.get("home-assistant") === undefined)
83 | await new Promise((resolve) => window.setTimeout(resolve, 100));
84 |
85 | if (!customElements.get("canary-card")) {
86 | customElements.define("canary-card", CanaryCard);
87 | console.groupCollapsed(
88 | `%c ${__NAME__} %c ${__VERSION__} `,
89 | "color: #212121; background: #fdd835; font-weight: 700;",
90 | "color: #fdd835; background: #212121; font-weight: 700;",
91 | );
92 | console.info(`branch : ${__BRANCH__}`);
93 | console.info(`commit : ${__COMMIT__}`);
94 | console.info(`built at : ${__BUILD_TIME__}`);
95 | console.info("https://github.com/jcwillox/lovelace-canary");
96 | console.groupEnd();
97 | }
98 | })();
99 |
--------------------------------------------------------------------------------
/src/modules/generic-entity-row.ts:
--------------------------------------------------------------------------------
1 | import { hass, provideHass } from "card-tools/src/hass";
2 | import { hasOldTemplate } from "card-tools/src/old-templates";
3 | import { hasTemplate } from "card-tools/src/templates";
4 | import { applyThemesOnElement } from "custom-card-helpers";
5 | import { StyleInfo } from "lit/directives/style-map.js";
6 | import { DEFAULT_SECONDARY_INFO } from "../const";
7 | import { createModule } from "../module";
8 | import { mapStyle } from "../styles";
9 | import { extensionEnabled, moduleEnabled } from "../utils";
10 |
11 | const MODULE = "generic-entity-row";
12 | const ELEMENT = "hui-generic-entity-row";
13 |
14 | interface Config {
15 | entity?: string;
16 | entity_ids?: string[];
17 | secondary_info?: string;
18 | canary_theme?: string;
19 | canary_style?: string | StyleInfo;
20 | }
21 |
22 | interface SecondaryInfoElement extends HTMLElement {
23 | template?: Record;
24 | }
25 |
26 | declare global {
27 | interface HTMLElementTagNameMap {
28 | "secondary-info": SecondaryInfoElement;
29 | }
30 | }
31 |
32 | if (moduleEnabled(MODULE)) {
33 | createModule(ELEMENT, function () {
34 | if (
35 | this.config?.secondary_info &&
36 | extensionEnabled(this.config, "secondary_info")
37 | ) {
38 | // ensure we don't overwrite the default secondary info behaviour.
39 | if (!DEFAULT_SECONDARY_INFO.includes(this.config.secondary_info)) {
40 | if (
41 | typeof this.config.secondary_info === "object" ||
42 | hasOldTemplate(this.config.secondary_info) ||
43 | hasTemplate(this.config.secondary_info)
44 | ) {
45 | // create secondary info element to track state changes.
46 | const secondaryInfoElement = document.createElement("secondary-info");
47 |
48 | secondaryInfoElement.template = {
49 | template: this.config.secondary_info,
50 | variables: { config: this.config, entity: this.config.entity },
51 | entity_ids: this.config.entity_ids,
52 | };
53 |
54 | this.shadowRoot?.appendChild(secondaryInfoElement);
55 |
56 | provideHass(secondaryInfoElement);
57 | } else {
58 | // set the secondary info to plain text.
59 | const secondaryInfoDiv = this.shadowRoot?.querySelector(".secondary");
60 | if (secondaryInfoDiv) {
61 | secondaryInfoDiv.innerHTML = this.config.secondary_info;
62 | }
63 | }
64 | }
65 | }
66 |
67 | if (
68 | this.config?.canary_theme &&
69 | extensionEnabled(this.config, "canary_theme")
70 | ) {
71 | applyThemesOnElement(this, hass().themes, this.config.canary_theme);
72 | }
73 |
74 | if (
75 | this.config?.canary_style &&
76 | extensionEnabled(this.config, "canary_style")
77 | ) {
78 | if (typeof this.config.canary_style === "string") {
79 | const styleEl = document.createElement("style");
80 | styleEl.innerHTML = this.config.canary_style;
81 | this.appendChild(styleEl);
82 | } else {
83 | this.style.cssText += mapStyle(this.config.canary_style);
84 | }
85 | }
86 | });
87 | }
88 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
1 | name: Report an issue
2 | description: Report an issue with the Canary plugin.
3 | body:
4 | - type: markdown
5 | attributes:
6 | value: |
7 | This issue form is for reporting bugs, you should search through
8 | the existing issues to see if others have had the same problem.
9 |
10 | Try fill as many fields as you can, to make it easier to address the issue.
11 | - type: textarea
12 | attributes:
13 | label: The problem
14 | description: >-
15 | Describe the issue you are experiencing here, to communicate to the
16 | maintainers. Tell us what you were trying to do and what happened.
17 |
18 | Provide a clear and concise description of what the problem is.
19 | - type: markdown
20 | attributes:
21 | value: |
22 | ## Environment
23 | - type: input
24 | id: version
25 | attributes:
26 | label: What version of Canary has the issue?
27 | description: >
28 | Can be found in: [HACS -> Frontend -> Canary](https://my.home-assistant.io/redirect/hacs_repository/?owner=jcwillox&repository=lovelace-canary&category=plugin). The version will be displayed in first chip at the top.
29 |
30 | [](https://my.home-assistant.io/redirect/hacs_repository/?owner=jcwillox&repository=lovelace-canary&category=plugin)
31 | - type: input
32 | id: ha_version
33 | attributes:
34 | label: What version of Home Assistant are you running?
35 | placeholder: Home Assistant YYYY.MM.XX
36 | description: >
37 | Can be found in: [Settings -> About](https://my.home-assistant.io/redirect/info/).
38 |
39 | [](https://my.home-assistant.io/redirect/info/)
40 | - type: input
41 | id: frontend_version
42 | attributes:
43 | label: What version of the Frontend are you running?
44 | placeholder: Frontend YYYYMMDD.X
45 | description: >
46 | Can be found in: [Settings -> About](https://my.home-assistant.io/redirect/info/).
47 |
48 | [](https://my.home-assistant.io/redirect/info/)
49 | - type: markdown
50 | attributes:
51 | value: |
52 | # Details
53 | - type: textarea
54 | attributes:
55 | label: Example YAML snippet
56 | description: |
57 | If applicable, please provide an example piece of YAML that can help reproduce this problem.
58 | This can be from an automation, script, service or configuration.
59 | render: yml
60 | - type: textarea
61 | attributes:
62 | label: Anything in the logs that might be useful for us?
63 | description: |
64 | For example, error message, or stack traces.
65 |
66 | To view the browsers logs, press F12 and go to the "Console" tab, or use the "Inspect" option in the browsers right-click menu.
67 | render: python3
68 | - type: textarea
69 | attributes:
70 | label: Additional information
71 | description: >
72 | If you have any additional information for us, use the field below.
73 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 🐤 Canary
2 |
3 | [](https://github.com/hacs/integration)
4 | [](https://github.com/jcwillox/lovelace-canary/blob/main/LICENSE)
5 | [](https://github.com/jcwillox/lovelace-canary/releases)
6 | [](https://github.com/jcwillox/lovelace-canary/releases)
7 |
8 | The idea behind Canary is to extend the functionality of Lovelace in a non-drastic way. This is done mainly, by adding extra configuration options (extensions) to pre-existing Lovelace elements.
9 |
10 | This plugin could be thought of as almost a staging ground for features that if suitable could end up in core Lovelace, hence the name borrowed from Chrome Canary. It's unclear how well that statement will hold, it could also be called "Extensions".
11 |
12 | ## Usage
13 |
14 | Much like [card-mod] Canary extends the default lovelace cards, so you don't need to actually define a `canary-card` for these options to work. The options are added to their respective cards as 'extensions'.
15 |
16 | ### Available Extensions
17 |
18 | - [Generic Entity Row](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row)
19 | - [`secondary_info`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#secondary_info)
20 | - [`canary_style`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#canary_style)
21 | - [`canary_theme`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#canary_theme)
22 | - [`hide_warning`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Entity-Row#hide_warning)
23 | - [Generic Card](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card)
24 | - [`no_card`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#no_card)
25 | - [`canary_style`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#canary_style)
26 | - [`canary_theme`](https://github.com/jcwillox/lovelace-canary/wiki/Generic-Card#canary_theme)
27 | - [Glance Card](https://github.com/jcwillox/lovelace-canary/wiki/Glance-Card)
28 | - [`align`](https://github.com/jcwillox/lovelace-canary/wiki/Glance-Card#align)
29 | - [Vertical Stack](https://github.com/jcwillox/lovelace-canary/wiki/Vertical-Stack)
30 | - [`in_card`](https://github.com/jcwillox/lovelace-canary/wiki/Vertical-Stack#in_card)
31 | - [Canary Card](https://github.com/jcwillox/lovelace-canary/wiki/Canary-Card)
32 | - `style`
33 | - `theme`
34 |
35 | For more information head over to the [wiki](https://github.com/jcwillox/lovelace-canary/wiki).
36 |
37 | ## Credits
38 |
39 | I'd like to recognise Thomas Lovén's influence on this card, his work on [card-tools] made the creation of this vastly quicker and easier. Reference to his and other people's lovelace cards is, at this point, like 90% of my knowledge on JavaScript and polymer UI. Code from Thomas Lovén's [card-mod] is the backbone of the extensions to lovelace and what gave me this idea in the first place.
40 |
41 | ## Installation
42 |
43 | ```yaml
44 | resources:
45 | - url: /hacsfiles/lovelace-canary/canary.js
46 | type: module
47 | ```
48 |
49 | [card-mod]: https://github.com/thomasloven/lovelace-card-mod
50 | [card-tools]: https://github.com/thomasloven/lovelace-card-tools
51 |
--------------------------------------------------------------------------------
/src/secondary-info.ts:
--------------------------------------------------------------------------------
1 | import { parseOldTemplate } from "card-tools/src/old-templates";
2 | import { subscribeRenderTemplate } from "card-tools/src/templates.js";
3 | import { HomeAssistant } from "custom-card-helpers";
4 | import { oldExtractEntities } from "./templates";
5 |
6 | interface SecondaryInfoConfig {
7 | template: Record | string;
8 | variables?: {
9 | config?: {
10 | entity?: string;
11 | [key: string]: unknown;
12 | };
13 | [key: string]: unknown;
14 | };
15 | entity_ids?: string[];
16 | }
17 |
18 | class SecondaryInfo extends HTMLElement {
19 | private _disconnected = true;
20 | private _data!: SecondaryInfoConfig;
21 | private _hass?: HomeAssistant;
22 | private _isJinjaTemplate = false;
23 | private _isOldTemplate = false;
24 | private _element?: Element;
25 | private _unsubRenderTemplate?: Promise<() => Promise>;
26 |
27 | disconnectedCallback() {
28 | this._disconnect();
29 | }
30 | connectedCallback() {
31 | this._disconnected = false;
32 | if (!this._isJinjaTemplate) this._updateNonJinjaTemplates(this._hass);
33 | else this._connect();
34 | }
35 |
36 | _hasJinjaTemplate(data) {
37 | if (typeof data.template === "object") return false;
38 | if (data.template.includes("{%")) return true;
39 | return data.template.includes("{{");
40 | }
41 |
42 | set template(data) {
43 | this._data = JSON.parse(JSON.stringify(data));
44 |
45 | // ignore entity_ids it's not an array.
46 | if (!Array.isArray(this._data.entity_ids))
47 | this._data.entity_ids = undefined;
48 |
49 | // setup booleans for type of template.
50 | this._isJinjaTemplate = this._hasJinjaTemplate(this._data);
51 | this._isOldTemplate =
52 | !this._isJinjaTemplate && typeof this._data.template !== "object";
53 |
54 | if (!this._isJinjaTemplate) {
55 | if (typeof this._data.template === "string") {
56 | if (!this._data.entity_ids) {
57 | this._data.entity_ids = oldExtractEntities(
58 | this._data.template as string,
59 | this._data.variables?.config,
60 | );
61 | }
62 | } else {
63 | // configure the monitored entity_id for secondary info object type.
64 | const entity =
65 | (this._data.template.entity as string) ||
66 | this._data.variables?.config?.entity;
67 | if (entity) {
68 | this._data.entity_ids = [entity];
69 | }
70 | }
71 | }
72 | }
73 |
74 | update() {
75 | this._disconnect().then(() => this._connect());
76 | }
77 |
78 | _getElement() {
79 | // ensure secondary info div exists.
80 | if (!this._element) {
81 | const element = this.parentNode?.querySelector(".secondary");
82 | if (element) {
83 | this._element = element;
84 | this._element.innerHTML = "Loading...";
85 | }
86 | }
87 | return this._element;
88 | }
89 |
90 | set hass(hass) {
91 | if (!this._isJinjaTemplate && !this._disconnected && this._data.template) {
92 | if (this._shouldUpdate(hass, this._data.entity_ids)) {
93 | this._updateNonJinjaTemplates(hass);
94 | }
95 | }
96 | this._hass = hass;
97 | }
98 |
99 | _updateNonJinjaTemplates(hass) {
100 | if (!hass || !this._getElement()) {
101 | return;
102 | }
103 |
104 | if (this._isOldTemplate) {
105 | if (this._element)
106 | this._element.innerHTML = parseOldTemplate(
107 | this._data.template,
108 | this._data.variables?.config,
109 | );
110 | } else if (typeof this._data.template !== "string") {
111 | const template = this._data.template;
112 | const entity = this._data.entity_ids?.[0]; // exactly one can be configured for this type.
113 |
114 | if (!entity) {
115 | return;
116 | }
117 |
118 | let state = hass.states[entity];
119 | state = template.attribute
120 | ? state.attributes[template.attribute as string]
121 | : state.state;
122 |
123 | if (state && this._element) {
124 | this._element.innerHTML = `${template.prefix || ""}${state}${
125 | template.postfix || ""
126 | }`;
127 | }
128 | }
129 | }
130 |
131 | _shouldUpdate(newHass, entities) {
132 | if (!this._hass || !entities) return true;
133 | return entities.some(
134 | (entity) => newHass.states[entity] !== this._hass?.states[entity],
135 | );
136 | }
137 |
138 | async _connect() {
139 | if (!this._data) return;
140 |
141 | if (!this._isJinjaTemplate) return;
142 |
143 | if (this._unsubRenderTemplate) return;
144 |
145 | if (!this._getElement()) return;
146 |
147 | // show loading message if this is the first connection.
148 | this._unsubRenderTemplate = subscribeRenderTemplate(
149 | null,
150 | (result) => {
151 | this._element && (this._element.innerHTML = result);
152 | },
153 | this._data,
154 | );
155 |
156 | await this._unsubRenderTemplate?.catch(() => {
157 | if (this._element)
158 | if (typeof this._data.template === "string") {
159 | this._element.innerHTML = this._data.template;
160 | } else {
161 | this._element.innerHTML = JSON.stringify(this._data.template);
162 | }
163 | this._unsubRenderTemplate = undefined;
164 | });
165 | }
166 |
167 | async _disconnect() {
168 | this._disconnected = true; // make sure we don't update needlessly.
169 |
170 | if (this._unsubRenderTemplate) {
171 | try {
172 | const unsub = await this._unsubRenderTemplate;
173 | this._unsubRenderTemplate = undefined;
174 | await unsub();
175 | } catch (e) {
176 | if (typeof e === "object" && e?.["code"] !== "not_found") throw e;
177 | }
178 | }
179 | }
180 | }
181 |
182 | customElements.define("secondary-info", SecondaryInfo);
183 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | card-tools:
12 | specifier: github:thomasloven/lovelace-card-tools#477f3d4
13 | version: https://codeload.github.com/thomasloven/lovelace-card-tools/tar.gz/477f3d4
14 | custom-card-helpers:
15 | specifier: 1.9.0
16 | version: 1.9.0
17 | home-assistant-js-websocket:
18 | specifier: 9.4.0
19 | version: 9.4.0
20 | lit:
21 | specifier: 2.8.0
22 | version: 2.8.0
23 | devDependencies:
24 | '@types/node':
25 | specifier: 20.14.12
26 | version: 20.14.12
27 | '@typescript-eslint/eslint-plugin':
28 | specifier: 7.17.0
29 | version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
30 | '@typescript-eslint/parser':
31 | specifier: 7.17.0
32 | version: 7.17.0(eslint@8.57.0)(typescript@5.5.4)
33 | eslint:
34 | specifier: 8.57.0
35 | version: 8.57.0
36 | eslint-config-prettier:
37 | specifier: 9.1.0
38 | version: 9.1.0(eslint@8.57.0)
39 | eslint-import-resolver-typescript:
40 | specifier: 3.6.1
41 | version: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
42 | eslint-plugin-import:
43 | specifier: 2.29.1
44 | version: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
45 | eslint-plugin-only-warn:
46 | specifier: 1.1.0
47 | version: 1.1.0
48 | eslint-plugin-prettier:
49 | specifier: 5.2.1
50 | version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3)
51 | husky:
52 | specifier: 9.1.1
53 | version: 9.1.1
54 | lint-staged:
55 | specifier: 15.2.7
56 | version: 15.2.7
57 | prettier:
58 | specifier: 3.3.3
59 | version: 3.3.3
60 | typescript:
61 | specifier: 5.5.4
62 | version: 5.5.4
63 | vite:
64 | specifier: 5.3.4
65 | version: 5.3.4(@types/node@20.14.12)
66 | vite-plugin-compression:
67 | specifier: 0.5.1
68 | version: 0.5.1(vite@5.3.4(@types/node@20.14.12))
69 |
70 | packages:
71 |
72 | '@esbuild/aix-ppc64@0.21.5':
73 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
74 | engines: {node: '>=12'}
75 | cpu: [ppc64]
76 | os: [aix]
77 |
78 | '@esbuild/android-arm64@0.21.5':
79 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
80 | engines: {node: '>=12'}
81 | cpu: [arm64]
82 | os: [android]
83 |
84 | '@esbuild/android-arm@0.21.5':
85 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
86 | engines: {node: '>=12'}
87 | cpu: [arm]
88 | os: [android]
89 |
90 | '@esbuild/android-x64@0.21.5':
91 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
92 | engines: {node: '>=12'}
93 | cpu: [x64]
94 | os: [android]
95 |
96 | '@esbuild/darwin-arm64@0.21.5':
97 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
98 | engines: {node: '>=12'}
99 | cpu: [arm64]
100 | os: [darwin]
101 |
102 | '@esbuild/darwin-x64@0.21.5':
103 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
104 | engines: {node: '>=12'}
105 | cpu: [x64]
106 | os: [darwin]
107 |
108 | '@esbuild/freebsd-arm64@0.21.5':
109 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
110 | engines: {node: '>=12'}
111 | cpu: [arm64]
112 | os: [freebsd]
113 |
114 | '@esbuild/freebsd-x64@0.21.5':
115 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
116 | engines: {node: '>=12'}
117 | cpu: [x64]
118 | os: [freebsd]
119 |
120 | '@esbuild/linux-arm64@0.21.5':
121 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
122 | engines: {node: '>=12'}
123 | cpu: [arm64]
124 | os: [linux]
125 |
126 | '@esbuild/linux-arm@0.21.5':
127 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
128 | engines: {node: '>=12'}
129 | cpu: [arm]
130 | os: [linux]
131 |
132 | '@esbuild/linux-ia32@0.21.5':
133 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
134 | engines: {node: '>=12'}
135 | cpu: [ia32]
136 | os: [linux]
137 |
138 | '@esbuild/linux-loong64@0.21.5':
139 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
140 | engines: {node: '>=12'}
141 | cpu: [loong64]
142 | os: [linux]
143 |
144 | '@esbuild/linux-mips64el@0.21.5':
145 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
146 | engines: {node: '>=12'}
147 | cpu: [mips64el]
148 | os: [linux]
149 |
150 | '@esbuild/linux-ppc64@0.21.5':
151 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
152 | engines: {node: '>=12'}
153 | cpu: [ppc64]
154 | os: [linux]
155 |
156 | '@esbuild/linux-riscv64@0.21.5':
157 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
158 | engines: {node: '>=12'}
159 | cpu: [riscv64]
160 | os: [linux]
161 |
162 | '@esbuild/linux-s390x@0.21.5':
163 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
164 | engines: {node: '>=12'}
165 | cpu: [s390x]
166 | os: [linux]
167 |
168 | '@esbuild/linux-x64@0.21.5':
169 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
170 | engines: {node: '>=12'}
171 | cpu: [x64]
172 | os: [linux]
173 |
174 | '@esbuild/netbsd-x64@0.21.5':
175 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
176 | engines: {node: '>=12'}
177 | cpu: [x64]
178 | os: [netbsd]
179 |
180 | '@esbuild/openbsd-x64@0.21.5':
181 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
182 | engines: {node: '>=12'}
183 | cpu: [x64]
184 | os: [openbsd]
185 |
186 | '@esbuild/sunos-x64@0.21.5':
187 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
188 | engines: {node: '>=12'}
189 | cpu: [x64]
190 | os: [sunos]
191 |
192 | '@esbuild/win32-arm64@0.21.5':
193 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
194 | engines: {node: '>=12'}
195 | cpu: [arm64]
196 | os: [win32]
197 |
198 | '@esbuild/win32-ia32@0.21.5':
199 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
200 | engines: {node: '>=12'}
201 | cpu: [ia32]
202 | os: [win32]
203 |
204 | '@esbuild/win32-x64@0.21.5':
205 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
206 | engines: {node: '>=12'}
207 | cpu: [x64]
208 | os: [win32]
209 |
210 | '@eslint-community/eslint-utils@4.4.0':
211 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
212 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
213 | peerDependencies:
214 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
215 |
216 | '@eslint-community/regexpp@4.11.0':
217 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
218 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
219 |
220 | '@eslint/eslintrc@2.1.4':
221 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
222 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
223 |
224 | '@eslint/js@8.57.0':
225 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
226 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
227 |
228 | '@formatjs/ecma402-abstract@1.11.4':
229 | resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==}
230 |
231 | '@formatjs/fast-memoize@1.2.1':
232 | resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==}
233 |
234 | '@formatjs/icu-messageformat-parser@2.1.0':
235 | resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==}
236 |
237 | '@formatjs/icu-skeleton-parser@1.3.6':
238 | resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==}
239 |
240 | '@formatjs/intl-localematcher@0.2.25':
241 | resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==}
242 |
243 | '@formatjs/intl-utils@3.8.4':
244 | resolution: {integrity: sha512-j5C6NyfKevIxsfLK8KwO1C0vvP7k1+h4A9cFpc+cr6mEwCc1sPkr17dzh0Ke6k9U5pQccAQoXdcNBl3IYa4+ZQ==}
245 | deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package
246 |
247 | '@humanwhocodes/config-array@0.11.14':
248 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
249 | engines: {node: '>=10.10.0'}
250 | deprecated: Use @eslint/config-array instead
251 |
252 | '@humanwhocodes/module-importer@1.0.1':
253 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
254 | engines: {node: '>=12.22'}
255 |
256 | '@humanwhocodes/object-schema@2.0.3':
257 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
258 | deprecated: Use @eslint/object-schema instead
259 |
260 | '@lit-labs/ssr-dom-shim@1.2.0':
261 | resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==}
262 |
263 | '@lit/reactive-element@1.6.3':
264 | resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
265 |
266 | '@nodelib/fs.scandir@2.1.5':
267 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
268 | engines: {node: '>= 8'}
269 |
270 | '@nodelib/fs.stat@2.0.5':
271 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
272 | engines: {node: '>= 8'}
273 |
274 | '@nodelib/fs.walk@1.2.8':
275 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
276 | engines: {node: '>= 8'}
277 |
278 | '@pkgr/core@0.1.1':
279 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
280 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
281 |
282 | '@rollup/rollup-android-arm-eabi@4.19.1':
283 | resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==}
284 | cpu: [arm]
285 | os: [android]
286 |
287 | '@rollup/rollup-android-arm64@4.19.1':
288 | resolution: {integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==}
289 | cpu: [arm64]
290 | os: [android]
291 |
292 | '@rollup/rollup-darwin-arm64@4.19.1':
293 | resolution: {integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==}
294 | cpu: [arm64]
295 | os: [darwin]
296 |
297 | '@rollup/rollup-darwin-x64@4.19.1':
298 | resolution: {integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==}
299 | cpu: [x64]
300 | os: [darwin]
301 |
302 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1':
303 | resolution: {integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==}
304 | cpu: [arm]
305 | os: [linux]
306 |
307 | '@rollup/rollup-linux-arm-musleabihf@4.19.1':
308 | resolution: {integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==}
309 | cpu: [arm]
310 | os: [linux]
311 |
312 | '@rollup/rollup-linux-arm64-gnu@4.19.1':
313 | resolution: {integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==}
314 | cpu: [arm64]
315 | os: [linux]
316 |
317 | '@rollup/rollup-linux-arm64-musl@4.19.1':
318 | resolution: {integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==}
319 | cpu: [arm64]
320 | os: [linux]
321 |
322 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1':
323 | resolution: {integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==}
324 | cpu: [ppc64]
325 | os: [linux]
326 |
327 | '@rollup/rollup-linux-riscv64-gnu@4.19.1':
328 | resolution: {integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==}
329 | cpu: [riscv64]
330 | os: [linux]
331 |
332 | '@rollup/rollup-linux-s390x-gnu@4.19.1':
333 | resolution: {integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==}
334 | cpu: [s390x]
335 | os: [linux]
336 |
337 | '@rollup/rollup-linux-x64-gnu@4.19.1':
338 | resolution: {integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==}
339 | cpu: [x64]
340 | os: [linux]
341 |
342 | '@rollup/rollup-linux-x64-musl@4.19.1':
343 | resolution: {integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==}
344 | cpu: [x64]
345 | os: [linux]
346 |
347 | '@rollup/rollup-win32-arm64-msvc@4.19.1':
348 | resolution: {integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==}
349 | cpu: [arm64]
350 | os: [win32]
351 |
352 | '@rollup/rollup-win32-ia32-msvc@4.19.1':
353 | resolution: {integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==}
354 | cpu: [ia32]
355 | os: [win32]
356 |
357 | '@rollup/rollup-win32-x64-msvc@4.19.1':
358 | resolution: {integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==}
359 | cpu: [x64]
360 | os: [win32]
361 |
362 | '@types/estree@1.0.5':
363 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
364 |
365 | '@types/json5@0.0.29':
366 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
367 |
368 | '@types/node@20.14.12':
369 | resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==}
370 |
371 | '@types/trusted-types@2.0.7':
372 | resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
373 |
374 | '@typescript-eslint/eslint-plugin@7.17.0':
375 | resolution: {integrity: sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==}
376 | engines: {node: ^18.18.0 || >=20.0.0}
377 | peerDependencies:
378 | '@typescript-eslint/parser': ^7.0.0
379 | eslint: ^8.56.0
380 | typescript: '*'
381 | peerDependenciesMeta:
382 | typescript:
383 | optional: true
384 |
385 | '@typescript-eslint/parser@7.17.0':
386 | resolution: {integrity: sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==}
387 | engines: {node: ^18.18.0 || >=20.0.0}
388 | peerDependencies:
389 | eslint: ^8.56.0
390 | typescript: '*'
391 | peerDependenciesMeta:
392 | typescript:
393 | optional: true
394 |
395 | '@typescript-eslint/scope-manager@7.17.0':
396 | resolution: {integrity: sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==}
397 | engines: {node: ^18.18.0 || >=20.0.0}
398 |
399 | '@typescript-eslint/type-utils@7.17.0':
400 | resolution: {integrity: sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==}
401 | engines: {node: ^18.18.0 || >=20.0.0}
402 | peerDependencies:
403 | eslint: ^8.56.0
404 | typescript: '*'
405 | peerDependenciesMeta:
406 | typescript:
407 | optional: true
408 |
409 | '@typescript-eslint/types@7.17.0':
410 | resolution: {integrity: sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==}
411 | engines: {node: ^18.18.0 || >=20.0.0}
412 |
413 | '@typescript-eslint/typescript-estree@7.17.0':
414 | resolution: {integrity: sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==}
415 | engines: {node: ^18.18.0 || >=20.0.0}
416 | peerDependencies:
417 | typescript: '*'
418 | peerDependenciesMeta:
419 | typescript:
420 | optional: true
421 |
422 | '@typescript-eslint/utils@7.17.0':
423 | resolution: {integrity: sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==}
424 | engines: {node: ^18.18.0 || >=20.0.0}
425 | peerDependencies:
426 | eslint: ^8.56.0
427 |
428 | '@typescript-eslint/visitor-keys@7.17.0':
429 | resolution: {integrity: sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==}
430 | engines: {node: ^18.18.0 || >=20.0.0}
431 |
432 | '@ungap/structured-clone@1.2.0':
433 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
434 |
435 | acorn-jsx@5.3.2:
436 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
437 | peerDependencies:
438 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
439 |
440 | acorn@8.12.1:
441 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
442 | engines: {node: '>=0.4.0'}
443 | hasBin: true
444 |
445 | ajv@6.12.6:
446 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
447 |
448 | ansi-escapes@7.0.0:
449 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
450 | engines: {node: '>=18'}
451 |
452 | ansi-regex@5.0.1:
453 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
454 | engines: {node: '>=8'}
455 |
456 | ansi-regex@6.0.1:
457 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
458 | engines: {node: '>=12'}
459 |
460 | ansi-styles@4.3.0:
461 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
462 | engines: {node: '>=8'}
463 |
464 | ansi-styles@6.2.1:
465 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
466 | engines: {node: '>=12'}
467 |
468 | argparse@2.0.1:
469 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
470 |
471 | array-buffer-byte-length@1.0.1:
472 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
473 | engines: {node: '>= 0.4'}
474 |
475 | array-includes@3.1.8:
476 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
477 | engines: {node: '>= 0.4'}
478 |
479 | array-union@2.1.0:
480 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
481 | engines: {node: '>=8'}
482 |
483 | array.prototype.findlastindex@1.2.5:
484 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
485 | engines: {node: '>= 0.4'}
486 |
487 | array.prototype.flat@1.3.2:
488 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
489 | engines: {node: '>= 0.4'}
490 |
491 | array.prototype.flatmap@1.3.2:
492 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
493 | engines: {node: '>= 0.4'}
494 |
495 | arraybuffer.prototype.slice@1.0.3:
496 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
497 | engines: {node: '>= 0.4'}
498 |
499 | available-typed-arrays@1.0.7:
500 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
501 | engines: {node: '>= 0.4'}
502 |
503 | balanced-match@1.0.2:
504 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
505 |
506 | brace-expansion@1.1.11:
507 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
508 |
509 | brace-expansion@2.0.1:
510 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
511 |
512 | braces@3.0.3:
513 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
514 | engines: {node: '>=8'}
515 |
516 | call-bind@1.0.7:
517 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
518 | engines: {node: '>= 0.4'}
519 |
520 | callsites@3.1.0:
521 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
522 | engines: {node: '>=6'}
523 |
524 | card-tools@https://codeload.github.com/thomasloven/lovelace-card-tools/tar.gz/477f3d4:
525 | resolution: {tarball: https://codeload.github.com/thomasloven/lovelace-card-tools/tar.gz/477f3d4}
526 | version: 2.1.2
527 |
528 | chalk@4.1.2:
529 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
530 | engines: {node: '>=10'}
531 |
532 | chalk@5.3.0:
533 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
534 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
535 |
536 | cli-cursor@5.0.0:
537 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
538 | engines: {node: '>=18'}
539 |
540 | cli-truncate@4.0.0:
541 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
542 | engines: {node: '>=18'}
543 |
544 | color-convert@2.0.1:
545 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
546 | engines: {node: '>=7.0.0'}
547 |
548 | color-name@1.1.4:
549 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
550 |
551 | colorette@2.0.20:
552 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
553 |
554 | commander@12.1.0:
555 | resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
556 | engines: {node: '>=18'}
557 |
558 | concat-map@0.0.1:
559 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
560 |
561 | cross-spawn@7.0.3:
562 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
563 | engines: {node: '>= 8'}
564 |
565 | custom-card-helpers@1.9.0:
566 | resolution: {integrity: sha512-5IW4OXq3MiiCqDvqeu+MYsM1NmntKW1WfJhyJFsdP2tbzqEI4BOnqRz2qzdp08lE4QLVhYfRLwe0WAqgQVNeFg==}
567 |
568 | data-view-buffer@1.0.1:
569 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
570 | engines: {node: '>= 0.4'}
571 |
572 | data-view-byte-length@1.0.1:
573 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
574 | engines: {node: '>= 0.4'}
575 |
576 | data-view-byte-offset@1.0.0:
577 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
578 | engines: {node: '>= 0.4'}
579 |
580 | debug@3.2.7:
581 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
582 | peerDependencies:
583 | supports-color: '*'
584 | peerDependenciesMeta:
585 | supports-color:
586 | optional: true
587 |
588 | debug@4.3.6:
589 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
590 | engines: {node: '>=6.0'}
591 | peerDependencies:
592 | supports-color: '*'
593 | peerDependenciesMeta:
594 | supports-color:
595 | optional: true
596 |
597 | deep-is@0.1.4:
598 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
599 |
600 | define-data-property@1.1.4:
601 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
602 | engines: {node: '>= 0.4'}
603 |
604 | define-properties@1.2.1:
605 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
606 | engines: {node: '>= 0.4'}
607 |
608 | dir-glob@3.0.1:
609 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
610 | engines: {node: '>=8'}
611 |
612 | doctrine@2.1.0:
613 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
614 | engines: {node: '>=0.10.0'}
615 |
616 | doctrine@3.0.0:
617 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
618 | engines: {node: '>=6.0.0'}
619 |
620 | emoji-regex@10.3.0:
621 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
622 |
623 | emojis-list@3.0.0:
624 | resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
625 | engines: {node: '>= 4'}
626 |
627 | enhanced-resolve@5.17.1:
628 | resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
629 | engines: {node: '>=10.13.0'}
630 |
631 | environment@1.1.0:
632 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
633 | engines: {node: '>=18'}
634 |
635 | es-abstract@1.23.3:
636 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
637 | engines: {node: '>= 0.4'}
638 |
639 | es-define-property@1.0.0:
640 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
641 | engines: {node: '>= 0.4'}
642 |
643 | es-errors@1.3.0:
644 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
645 | engines: {node: '>= 0.4'}
646 |
647 | es-object-atoms@1.0.0:
648 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
649 | engines: {node: '>= 0.4'}
650 |
651 | es-set-tostringtag@2.0.3:
652 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
653 | engines: {node: '>= 0.4'}
654 |
655 | es-shim-unscopables@1.0.2:
656 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
657 |
658 | es-to-primitive@1.2.1:
659 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
660 | engines: {node: '>= 0.4'}
661 |
662 | esbuild@0.21.5:
663 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
664 | engines: {node: '>=12'}
665 | hasBin: true
666 |
667 | escape-string-regexp@4.0.0:
668 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
669 | engines: {node: '>=10'}
670 |
671 | eslint-config-prettier@9.1.0:
672 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
673 | hasBin: true
674 | peerDependencies:
675 | eslint: '>=7.0.0'
676 |
677 | eslint-import-resolver-node@0.3.9:
678 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
679 |
680 | eslint-import-resolver-typescript@3.6.1:
681 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
682 | engines: {node: ^14.18.0 || >=16.0.0}
683 | peerDependencies:
684 | eslint: '*'
685 | eslint-plugin-import: '*'
686 |
687 | eslint-module-utils@2.8.1:
688 | resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
689 | engines: {node: '>=4'}
690 | peerDependencies:
691 | '@typescript-eslint/parser': '*'
692 | eslint: '*'
693 | eslint-import-resolver-node: '*'
694 | eslint-import-resolver-typescript: '*'
695 | eslint-import-resolver-webpack: '*'
696 | peerDependenciesMeta:
697 | '@typescript-eslint/parser':
698 | optional: true
699 | eslint:
700 | optional: true
701 | eslint-import-resolver-node:
702 | optional: true
703 | eslint-import-resolver-typescript:
704 | optional: true
705 | eslint-import-resolver-webpack:
706 | optional: true
707 |
708 | eslint-plugin-import@2.29.1:
709 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
710 | engines: {node: '>=4'}
711 | peerDependencies:
712 | '@typescript-eslint/parser': '*'
713 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
714 | peerDependenciesMeta:
715 | '@typescript-eslint/parser':
716 | optional: true
717 |
718 | eslint-plugin-only-warn@1.1.0:
719 | resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==}
720 | engines: {node: '>=6'}
721 |
722 | eslint-plugin-prettier@5.2.1:
723 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
724 | engines: {node: ^14.18.0 || >=16.0.0}
725 | peerDependencies:
726 | '@types/eslint': '>=8.0.0'
727 | eslint: '>=8.0.0'
728 | eslint-config-prettier: '*'
729 | prettier: '>=3.0.0'
730 | peerDependenciesMeta:
731 | '@types/eslint':
732 | optional: true
733 | eslint-config-prettier:
734 | optional: true
735 |
736 | eslint-scope@7.2.2:
737 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
738 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
739 |
740 | eslint-visitor-keys@3.4.3:
741 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
742 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
743 |
744 | eslint@8.57.0:
745 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
746 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
747 | hasBin: true
748 |
749 | espree@9.6.1:
750 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
751 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
752 |
753 | esquery@1.6.0:
754 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
755 | engines: {node: '>=0.10'}
756 |
757 | esrecurse@4.3.0:
758 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
759 | engines: {node: '>=4.0'}
760 |
761 | estraverse@5.3.0:
762 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
763 | engines: {node: '>=4.0'}
764 |
765 | esutils@2.0.3:
766 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
767 | engines: {node: '>=0.10.0'}
768 |
769 | eventemitter3@5.0.1:
770 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
771 |
772 | execa@8.0.1:
773 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
774 | engines: {node: '>=16.17'}
775 |
776 | fast-deep-equal@3.1.3:
777 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
778 |
779 | fast-diff@1.3.0:
780 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
781 |
782 | fast-glob@3.3.2:
783 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
784 | engines: {node: '>=8.6.0'}
785 |
786 | fast-json-stable-stringify@2.1.0:
787 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
788 |
789 | fast-levenshtein@2.0.6:
790 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
791 |
792 | fastq@1.17.1:
793 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
794 |
795 | file-entry-cache@6.0.1:
796 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
797 | engines: {node: ^10.12.0 || >=12.0.0}
798 |
799 | fill-range@7.1.1:
800 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
801 | engines: {node: '>=8'}
802 |
803 | find-up@5.0.0:
804 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
805 | engines: {node: '>=10'}
806 |
807 | flat-cache@3.2.0:
808 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
809 | engines: {node: ^10.12.0 || >=12.0.0}
810 |
811 | flatted@3.3.1:
812 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
813 |
814 | for-each@0.3.3:
815 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
816 |
817 | fs-extra@10.1.0:
818 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
819 | engines: {node: '>=12'}
820 |
821 | fs.realpath@1.0.0:
822 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
823 |
824 | fsevents@2.3.3:
825 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
826 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
827 | os: [darwin]
828 |
829 | function-bind@1.1.2:
830 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
831 |
832 | function.prototype.name@1.1.6:
833 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
834 | engines: {node: '>= 0.4'}
835 |
836 | functions-have-names@1.2.3:
837 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
838 |
839 | get-east-asian-width@1.2.0:
840 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
841 | engines: {node: '>=18'}
842 |
843 | get-intrinsic@1.2.4:
844 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
845 | engines: {node: '>= 0.4'}
846 |
847 | get-stream@8.0.1:
848 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
849 | engines: {node: '>=16'}
850 |
851 | get-symbol-description@1.0.2:
852 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
853 | engines: {node: '>= 0.4'}
854 |
855 | get-tsconfig@4.7.6:
856 | resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==}
857 |
858 | glob-parent@5.1.2:
859 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
860 | engines: {node: '>= 6'}
861 |
862 | glob-parent@6.0.2:
863 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
864 | engines: {node: '>=10.13.0'}
865 |
866 | glob@7.2.3:
867 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
868 | deprecated: Glob versions prior to v9 are no longer supported
869 |
870 | globals@13.24.0:
871 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
872 | engines: {node: '>=8'}
873 |
874 | globalthis@1.0.4:
875 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
876 | engines: {node: '>= 0.4'}
877 |
878 | globby@11.1.0:
879 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
880 | engines: {node: '>=10'}
881 |
882 | gopd@1.0.1:
883 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
884 |
885 | graceful-fs@4.2.11:
886 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
887 |
888 | graphemer@1.4.0:
889 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
890 |
891 | has-bigints@1.0.2:
892 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
893 |
894 | has-flag@4.0.0:
895 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
896 | engines: {node: '>=8'}
897 |
898 | has-property-descriptors@1.0.2:
899 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
900 |
901 | has-proto@1.0.3:
902 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
903 | engines: {node: '>= 0.4'}
904 |
905 | has-symbols@1.0.3:
906 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
907 | engines: {node: '>= 0.4'}
908 |
909 | has-tostringtag@1.0.2:
910 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
911 | engines: {node: '>= 0.4'}
912 |
913 | hasown@2.0.2:
914 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
915 | engines: {node: '>= 0.4'}
916 |
917 | home-assistant-js-websocket@6.1.1:
918 | resolution: {integrity: sha512-TnZFzF4mn5F/v0XKUTK2GMQXrn/+eQpgaSDSELl6U0HSwSbFwRhGWLz330YT+hiKMspDflamsye//RPL+zwhDw==}
919 |
920 | home-assistant-js-websocket@9.4.0:
921 | resolution: {integrity: sha512-312TuI63IfKf8G+iWvKmPYIdxWMNojwVk03o9OSpQFFDjSCNAYdCUfuPCFs73SuJ1Xpd4D1Eo11CB33MGMqZ+Q==}
922 |
923 | human-signals@5.0.0:
924 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
925 | engines: {node: '>=16.17.0'}
926 |
927 | husky@9.1.1:
928 | resolution: {integrity: sha512-fCqlqLXcBnXa/TJXmT93/A36tJsjdJkibQ1MuIiFyCCYUlpYpIaj2mv1w+3KR6Rzu1IC3slFTje5f6DUp2A2rg==}
929 | engines: {node: '>=18'}
930 | hasBin: true
931 |
932 | ignore@5.3.1:
933 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
934 | engines: {node: '>= 4'}
935 |
936 | import-fresh@3.3.0:
937 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
938 | engines: {node: '>=6'}
939 |
940 | imurmurhash@0.1.4:
941 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
942 | engines: {node: '>=0.8.19'}
943 |
944 | inflight@1.0.6:
945 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
946 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
947 |
948 | inherits@2.0.4:
949 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
950 |
951 | internal-slot@1.0.7:
952 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
953 | engines: {node: '>= 0.4'}
954 |
955 | intl-messageformat@9.13.0:
956 | resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==}
957 |
958 | is-array-buffer@3.0.4:
959 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
960 | engines: {node: '>= 0.4'}
961 |
962 | is-bigint@1.0.4:
963 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
964 |
965 | is-boolean-object@1.1.2:
966 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
967 | engines: {node: '>= 0.4'}
968 |
969 | is-callable@1.2.7:
970 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
971 | engines: {node: '>= 0.4'}
972 |
973 | is-core-module@2.15.0:
974 | resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==}
975 | engines: {node: '>= 0.4'}
976 |
977 | is-data-view@1.0.1:
978 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
979 | engines: {node: '>= 0.4'}
980 |
981 | is-date-object@1.0.5:
982 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
983 | engines: {node: '>= 0.4'}
984 |
985 | is-extglob@2.1.1:
986 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
987 | engines: {node: '>=0.10.0'}
988 |
989 | is-fullwidth-code-point@4.0.0:
990 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
991 | engines: {node: '>=12'}
992 |
993 | is-fullwidth-code-point@5.0.0:
994 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
995 | engines: {node: '>=18'}
996 |
997 | is-glob@4.0.3:
998 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
999 | engines: {node: '>=0.10.0'}
1000 |
1001 | is-negative-zero@2.0.3:
1002 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
1003 | engines: {node: '>= 0.4'}
1004 |
1005 | is-number-object@1.0.7:
1006 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1007 | engines: {node: '>= 0.4'}
1008 |
1009 | is-number@7.0.0:
1010 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1011 | engines: {node: '>=0.12.0'}
1012 |
1013 | is-path-inside@3.0.3:
1014 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1015 | engines: {node: '>=8'}
1016 |
1017 | is-regex@1.1.4:
1018 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1019 | engines: {node: '>= 0.4'}
1020 |
1021 | is-shared-array-buffer@1.0.3:
1022 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
1023 | engines: {node: '>= 0.4'}
1024 |
1025 | is-stream@3.0.0:
1026 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1027 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1028 |
1029 | is-string@1.0.7:
1030 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1031 | engines: {node: '>= 0.4'}
1032 |
1033 | is-symbol@1.0.4:
1034 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1035 | engines: {node: '>= 0.4'}
1036 |
1037 | is-typed-array@1.1.13:
1038 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
1039 | engines: {node: '>= 0.4'}
1040 |
1041 | is-weakref@1.0.2:
1042 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1043 |
1044 | isarray@2.0.5:
1045 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1046 |
1047 | isexe@2.0.0:
1048 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1049 |
1050 | js-yaml@4.1.0:
1051 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1052 | hasBin: true
1053 |
1054 | json-buffer@3.0.1:
1055 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1056 |
1057 | json-schema-traverse@0.4.1:
1058 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1059 |
1060 | json-stable-stringify-without-jsonify@1.0.1:
1061 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1062 |
1063 | json5@1.0.2:
1064 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1065 | hasBin: true
1066 |
1067 | jsonfile@6.1.0:
1068 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1069 |
1070 | keyv@4.5.4:
1071 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1072 |
1073 | levn@0.4.1:
1074 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1075 | engines: {node: '>= 0.8.0'}
1076 |
1077 | lilconfig@3.1.2:
1078 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
1079 | engines: {node: '>=14'}
1080 |
1081 | lint-staged@15.2.7:
1082 | resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==}
1083 | engines: {node: '>=18.12.0'}
1084 | hasBin: true
1085 |
1086 | listr2@8.2.4:
1087 | resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==}
1088 | engines: {node: '>=18.0.0'}
1089 |
1090 | lit-element@3.3.3:
1091 | resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==}
1092 |
1093 | lit-html@2.8.0:
1094 | resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==}
1095 |
1096 | lit@2.8.0:
1097 | resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==}
1098 |
1099 | locate-path@6.0.0:
1100 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1101 | engines: {node: '>=10'}
1102 |
1103 | lodash.merge@4.6.2:
1104 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1105 |
1106 | log-update@6.1.0:
1107 | resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
1108 | engines: {node: '>=18'}
1109 |
1110 | merge-stream@2.0.0:
1111 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1112 |
1113 | merge2@1.4.1:
1114 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1115 | engines: {node: '>= 8'}
1116 |
1117 | micromatch@4.0.7:
1118 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
1119 | engines: {node: '>=8.6'}
1120 |
1121 | mimic-fn@4.0.0:
1122 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1123 | engines: {node: '>=12'}
1124 |
1125 | mimic-function@5.0.1:
1126 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
1127 | engines: {node: '>=18'}
1128 |
1129 | minimatch@3.1.2:
1130 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1131 |
1132 | minimatch@9.0.5:
1133 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1134 | engines: {node: '>=16 || 14 >=14.17'}
1135 |
1136 | minimist@1.2.8:
1137 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1138 |
1139 | ms@2.1.2:
1140 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1141 |
1142 | ms@2.1.3:
1143 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1144 |
1145 | nanoid@3.3.7:
1146 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1147 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1148 | hasBin: true
1149 |
1150 | natural-compare@1.4.0:
1151 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1152 |
1153 | npm-run-path@5.3.0:
1154 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
1155 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1156 |
1157 | object-inspect@1.13.2:
1158 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
1159 | engines: {node: '>= 0.4'}
1160 |
1161 | object-keys@1.1.1:
1162 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1163 | engines: {node: '>= 0.4'}
1164 |
1165 | object.assign@4.1.5:
1166 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
1167 | engines: {node: '>= 0.4'}
1168 |
1169 | object.fromentries@2.0.8:
1170 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
1171 | engines: {node: '>= 0.4'}
1172 |
1173 | object.groupby@1.0.3:
1174 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
1175 | engines: {node: '>= 0.4'}
1176 |
1177 | object.values@1.2.0:
1178 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
1179 | engines: {node: '>= 0.4'}
1180 |
1181 | once@1.4.0:
1182 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1183 |
1184 | onetime@6.0.0:
1185 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1186 | engines: {node: '>=12'}
1187 |
1188 | onetime@7.0.0:
1189 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
1190 | engines: {node: '>=18'}
1191 |
1192 | optionator@0.9.4:
1193 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1194 | engines: {node: '>= 0.8.0'}
1195 |
1196 | p-limit@3.1.0:
1197 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1198 | engines: {node: '>=10'}
1199 |
1200 | p-locate@5.0.0:
1201 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1202 | engines: {node: '>=10'}
1203 |
1204 | parent-module@1.0.1:
1205 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1206 | engines: {node: '>=6'}
1207 |
1208 | path-exists@4.0.0:
1209 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1210 | engines: {node: '>=8'}
1211 |
1212 | path-is-absolute@1.0.1:
1213 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1214 | engines: {node: '>=0.10.0'}
1215 |
1216 | path-key@3.1.1:
1217 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1218 | engines: {node: '>=8'}
1219 |
1220 | path-key@4.0.0:
1221 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1222 | engines: {node: '>=12'}
1223 |
1224 | path-parse@1.0.7:
1225 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1226 |
1227 | path-type@4.0.0:
1228 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1229 | engines: {node: '>=8'}
1230 |
1231 | picocolors@1.0.1:
1232 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
1233 |
1234 | picomatch@2.3.1:
1235 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1236 | engines: {node: '>=8.6'}
1237 |
1238 | pidtree@0.6.0:
1239 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
1240 | engines: {node: '>=0.10'}
1241 | hasBin: true
1242 |
1243 | possible-typed-array-names@1.0.0:
1244 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
1245 | engines: {node: '>= 0.4'}
1246 |
1247 | postcss@8.4.40:
1248 | resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
1249 | engines: {node: ^10 || ^12 || >=14}
1250 |
1251 | prelude-ls@1.2.1:
1252 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1253 | engines: {node: '>= 0.8.0'}
1254 |
1255 | prettier-linter-helpers@1.0.0:
1256 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1257 | engines: {node: '>=6.0.0'}
1258 |
1259 | prettier@3.3.3:
1260 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
1261 | engines: {node: '>=14'}
1262 | hasBin: true
1263 |
1264 | punycode@2.3.1:
1265 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1266 | engines: {node: '>=6'}
1267 |
1268 | queue-microtask@1.2.3:
1269 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1270 |
1271 | regexp.prototype.flags@1.5.2:
1272 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
1273 | engines: {node: '>= 0.4'}
1274 |
1275 | resolve-from@4.0.0:
1276 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1277 | engines: {node: '>=4'}
1278 |
1279 | resolve-pkg-maps@1.0.0:
1280 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
1281 |
1282 | resolve@1.22.8:
1283 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1284 | hasBin: true
1285 |
1286 | restore-cursor@5.1.0:
1287 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
1288 | engines: {node: '>=18'}
1289 |
1290 | reusify@1.0.4:
1291 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1292 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1293 |
1294 | rfdc@1.4.1:
1295 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
1296 |
1297 | rimraf@3.0.2:
1298 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1299 | deprecated: Rimraf versions prior to v4 are no longer supported
1300 | hasBin: true
1301 |
1302 | rollup@2.79.1:
1303 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
1304 | engines: {node: '>=10.0.0'}
1305 | hasBin: true
1306 |
1307 | rollup@4.19.1:
1308 | resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==}
1309 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1310 | hasBin: true
1311 |
1312 | run-parallel@1.2.0:
1313 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1314 |
1315 | safe-array-concat@1.1.2:
1316 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
1317 | engines: {node: '>=0.4'}
1318 |
1319 | safe-regex-test@1.0.3:
1320 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
1321 | engines: {node: '>= 0.4'}
1322 |
1323 | semver@6.3.1:
1324 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1325 | hasBin: true
1326 |
1327 | semver@7.6.3:
1328 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1329 | engines: {node: '>=10'}
1330 | hasBin: true
1331 |
1332 | set-function-length@1.2.2:
1333 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1334 | engines: {node: '>= 0.4'}
1335 |
1336 | set-function-name@2.0.2:
1337 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1338 | engines: {node: '>= 0.4'}
1339 |
1340 | shebang-command@2.0.0:
1341 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1342 | engines: {node: '>=8'}
1343 |
1344 | shebang-regex@3.0.0:
1345 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1346 | engines: {node: '>=8'}
1347 |
1348 | side-channel@1.0.6:
1349 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
1350 | engines: {node: '>= 0.4'}
1351 |
1352 | signal-exit@4.1.0:
1353 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1354 | engines: {node: '>=14'}
1355 |
1356 | slash@3.0.0:
1357 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1358 | engines: {node: '>=8'}
1359 |
1360 | slice-ansi@5.0.0:
1361 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
1362 | engines: {node: '>=12'}
1363 |
1364 | slice-ansi@7.1.0:
1365 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
1366 | engines: {node: '>=18'}
1367 |
1368 | source-map-js@1.2.0:
1369 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1370 | engines: {node: '>=0.10.0'}
1371 |
1372 | string-argv@0.3.2:
1373 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
1374 | engines: {node: '>=0.6.19'}
1375 |
1376 | string-width@7.2.0:
1377 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
1378 | engines: {node: '>=18'}
1379 |
1380 | string.prototype.trim@1.2.9:
1381 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
1382 | engines: {node: '>= 0.4'}
1383 |
1384 | string.prototype.trimend@1.0.8:
1385 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
1386 |
1387 | string.prototype.trimstart@1.0.8:
1388 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1389 | engines: {node: '>= 0.4'}
1390 |
1391 | strip-ansi@6.0.1:
1392 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1393 | engines: {node: '>=8'}
1394 |
1395 | strip-ansi@7.1.0:
1396 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1397 | engines: {node: '>=12'}
1398 |
1399 | strip-bom@3.0.0:
1400 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1401 | engines: {node: '>=4'}
1402 |
1403 | strip-final-newline@3.0.0:
1404 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
1405 | engines: {node: '>=12'}
1406 |
1407 | strip-json-comments@3.1.1:
1408 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1409 | engines: {node: '>=8'}
1410 |
1411 | superstruct@0.15.5:
1412 | resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==}
1413 |
1414 | supports-color@7.2.0:
1415 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1416 | engines: {node: '>=8'}
1417 |
1418 | supports-preserve-symlinks-flag@1.0.0:
1419 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1420 | engines: {node: '>= 0.4'}
1421 |
1422 | synckit@0.9.1:
1423 | resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
1424 | engines: {node: ^14.18.0 || >=16.0.0}
1425 |
1426 | tapable@2.2.1:
1427 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
1428 | engines: {node: '>=6'}
1429 |
1430 | text-table@0.2.0:
1431 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1432 |
1433 | to-regex-range@5.0.1:
1434 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1435 | engines: {node: '>=8.0'}
1436 |
1437 | ts-api-utils@1.3.0:
1438 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1439 | engines: {node: '>=16'}
1440 | peerDependencies:
1441 | typescript: '>=4.2.0'
1442 |
1443 | tsconfig-paths@3.15.0:
1444 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
1445 |
1446 | tslib@2.6.3:
1447 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
1448 |
1449 | type-check@0.4.0:
1450 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1451 | engines: {node: '>= 0.8.0'}
1452 |
1453 | type-fest@0.20.2:
1454 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1455 | engines: {node: '>=10'}
1456 |
1457 | typed-array-buffer@1.0.2:
1458 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
1459 | engines: {node: '>= 0.4'}
1460 |
1461 | typed-array-byte-length@1.0.1:
1462 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
1463 | engines: {node: '>= 0.4'}
1464 |
1465 | typed-array-byte-offset@1.0.2:
1466 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
1467 | engines: {node: '>= 0.4'}
1468 |
1469 | typed-array-length@1.0.6:
1470 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
1471 | engines: {node: '>= 0.4'}
1472 |
1473 | typescript@4.9.5:
1474 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
1475 | engines: {node: '>=4.2.0'}
1476 | hasBin: true
1477 |
1478 | typescript@5.5.4:
1479 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
1480 | engines: {node: '>=14.17'}
1481 | hasBin: true
1482 |
1483 | unbox-primitive@1.0.2:
1484 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
1485 |
1486 | undici-types@5.26.5:
1487 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1488 |
1489 | universalify@2.0.1:
1490 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
1491 | engines: {node: '>= 10.0.0'}
1492 |
1493 | uri-js@4.4.1:
1494 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1495 |
1496 | vite-plugin-compression@0.5.1:
1497 | resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
1498 | peerDependencies:
1499 | vite: '>=2.0.0'
1500 |
1501 | vite@5.3.4:
1502 | resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==}
1503 | engines: {node: ^18.0.0 || >=20.0.0}
1504 | hasBin: true
1505 | peerDependencies:
1506 | '@types/node': ^18.0.0 || >=20.0.0
1507 | less: '*'
1508 | lightningcss: ^1.21.0
1509 | sass: '*'
1510 | stylus: '*'
1511 | sugarss: '*'
1512 | terser: ^5.4.0
1513 | peerDependenciesMeta:
1514 | '@types/node':
1515 | optional: true
1516 | less:
1517 | optional: true
1518 | lightningcss:
1519 | optional: true
1520 | sass:
1521 | optional: true
1522 | stylus:
1523 | optional: true
1524 | sugarss:
1525 | optional: true
1526 | terser:
1527 | optional: true
1528 |
1529 | which-boxed-primitive@1.0.2:
1530 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
1531 |
1532 | which-typed-array@1.1.15:
1533 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
1534 | engines: {node: '>= 0.4'}
1535 |
1536 | which@2.0.2:
1537 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1538 | engines: {node: '>= 8'}
1539 | hasBin: true
1540 |
1541 | word-wrap@1.2.5:
1542 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1543 | engines: {node: '>=0.10.0'}
1544 |
1545 | wrap-ansi@9.0.0:
1546 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
1547 | engines: {node: '>=18'}
1548 |
1549 | wrappy@1.0.2:
1550 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1551 |
1552 | yaml@2.4.5:
1553 | resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
1554 | engines: {node: '>= 14'}
1555 | hasBin: true
1556 |
1557 | yocto-queue@0.1.0:
1558 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1559 | engines: {node: '>=10'}
1560 |
1561 | snapshots:
1562 |
1563 | '@esbuild/aix-ppc64@0.21.5':
1564 | optional: true
1565 |
1566 | '@esbuild/android-arm64@0.21.5':
1567 | optional: true
1568 |
1569 | '@esbuild/android-arm@0.21.5':
1570 | optional: true
1571 |
1572 | '@esbuild/android-x64@0.21.5':
1573 | optional: true
1574 |
1575 | '@esbuild/darwin-arm64@0.21.5':
1576 | optional: true
1577 |
1578 | '@esbuild/darwin-x64@0.21.5':
1579 | optional: true
1580 |
1581 | '@esbuild/freebsd-arm64@0.21.5':
1582 | optional: true
1583 |
1584 | '@esbuild/freebsd-x64@0.21.5':
1585 | optional: true
1586 |
1587 | '@esbuild/linux-arm64@0.21.5':
1588 | optional: true
1589 |
1590 | '@esbuild/linux-arm@0.21.5':
1591 | optional: true
1592 |
1593 | '@esbuild/linux-ia32@0.21.5':
1594 | optional: true
1595 |
1596 | '@esbuild/linux-loong64@0.21.5':
1597 | optional: true
1598 |
1599 | '@esbuild/linux-mips64el@0.21.5':
1600 | optional: true
1601 |
1602 | '@esbuild/linux-ppc64@0.21.5':
1603 | optional: true
1604 |
1605 | '@esbuild/linux-riscv64@0.21.5':
1606 | optional: true
1607 |
1608 | '@esbuild/linux-s390x@0.21.5':
1609 | optional: true
1610 |
1611 | '@esbuild/linux-x64@0.21.5':
1612 | optional: true
1613 |
1614 | '@esbuild/netbsd-x64@0.21.5':
1615 | optional: true
1616 |
1617 | '@esbuild/openbsd-x64@0.21.5':
1618 | optional: true
1619 |
1620 | '@esbuild/sunos-x64@0.21.5':
1621 | optional: true
1622 |
1623 | '@esbuild/win32-arm64@0.21.5':
1624 | optional: true
1625 |
1626 | '@esbuild/win32-ia32@0.21.5':
1627 | optional: true
1628 |
1629 | '@esbuild/win32-x64@0.21.5':
1630 | optional: true
1631 |
1632 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
1633 | dependencies:
1634 | eslint: 8.57.0
1635 | eslint-visitor-keys: 3.4.3
1636 |
1637 | '@eslint-community/regexpp@4.11.0': {}
1638 |
1639 | '@eslint/eslintrc@2.1.4':
1640 | dependencies:
1641 | ajv: 6.12.6
1642 | debug: 4.3.6
1643 | espree: 9.6.1
1644 | globals: 13.24.0
1645 | ignore: 5.3.1
1646 | import-fresh: 3.3.0
1647 | js-yaml: 4.1.0
1648 | minimatch: 3.1.2
1649 | strip-json-comments: 3.1.1
1650 | transitivePeerDependencies:
1651 | - supports-color
1652 |
1653 | '@eslint/js@8.57.0': {}
1654 |
1655 | '@formatjs/ecma402-abstract@1.11.4':
1656 | dependencies:
1657 | '@formatjs/intl-localematcher': 0.2.25
1658 | tslib: 2.6.3
1659 |
1660 | '@formatjs/fast-memoize@1.2.1':
1661 | dependencies:
1662 | tslib: 2.6.3
1663 |
1664 | '@formatjs/icu-messageformat-parser@2.1.0':
1665 | dependencies:
1666 | '@formatjs/ecma402-abstract': 1.11.4
1667 | '@formatjs/icu-skeleton-parser': 1.3.6
1668 | tslib: 2.6.3
1669 |
1670 | '@formatjs/icu-skeleton-parser@1.3.6':
1671 | dependencies:
1672 | '@formatjs/ecma402-abstract': 1.11.4
1673 | tslib: 2.6.3
1674 |
1675 | '@formatjs/intl-localematcher@0.2.25':
1676 | dependencies:
1677 | tslib: 2.6.3
1678 |
1679 | '@formatjs/intl-utils@3.8.4':
1680 | dependencies:
1681 | emojis-list: 3.0.0
1682 |
1683 | '@humanwhocodes/config-array@0.11.14':
1684 | dependencies:
1685 | '@humanwhocodes/object-schema': 2.0.3
1686 | debug: 4.3.6
1687 | minimatch: 3.1.2
1688 | transitivePeerDependencies:
1689 | - supports-color
1690 |
1691 | '@humanwhocodes/module-importer@1.0.1': {}
1692 |
1693 | '@humanwhocodes/object-schema@2.0.3': {}
1694 |
1695 | '@lit-labs/ssr-dom-shim@1.2.0': {}
1696 |
1697 | '@lit/reactive-element@1.6.3':
1698 | dependencies:
1699 | '@lit-labs/ssr-dom-shim': 1.2.0
1700 |
1701 | '@nodelib/fs.scandir@2.1.5':
1702 | dependencies:
1703 | '@nodelib/fs.stat': 2.0.5
1704 | run-parallel: 1.2.0
1705 |
1706 | '@nodelib/fs.stat@2.0.5': {}
1707 |
1708 | '@nodelib/fs.walk@1.2.8':
1709 | dependencies:
1710 | '@nodelib/fs.scandir': 2.1.5
1711 | fastq: 1.17.1
1712 |
1713 | '@pkgr/core@0.1.1': {}
1714 |
1715 | '@rollup/rollup-android-arm-eabi@4.19.1':
1716 | optional: true
1717 |
1718 | '@rollup/rollup-android-arm64@4.19.1':
1719 | optional: true
1720 |
1721 | '@rollup/rollup-darwin-arm64@4.19.1':
1722 | optional: true
1723 |
1724 | '@rollup/rollup-darwin-x64@4.19.1':
1725 | optional: true
1726 |
1727 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1':
1728 | optional: true
1729 |
1730 | '@rollup/rollup-linux-arm-musleabihf@4.19.1':
1731 | optional: true
1732 |
1733 | '@rollup/rollup-linux-arm64-gnu@4.19.1':
1734 | optional: true
1735 |
1736 | '@rollup/rollup-linux-arm64-musl@4.19.1':
1737 | optional: true
1738 |
1739 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1':
1740 | optional: true
1741 |
1742 | '@rollup/rollup-linux-riscv64-gnu@4.19.1':
1743 | optional: true
1744 |
1745 | '@rollup/rollup-linux-s390x-gnu@4.19.1':
1746 | optional: true
1747 |
1748 | '@rollup/rollup-linux-x64-gnu@4.19.1':
1749 | optional: true
1750 |
1751 | '@rollup/rollup-linux-x64-musl@4.19.1':
1752 | optional: true
1753 |
1754 | '@rollup/rollup-win32-arm64-msvc@4.19.1':
1755 | optional: true
1756 |
1757 | '@rollup/rollup-win32-ia32-msvc@4.19.1':
1758 | optional: true
1759 |
1760 | '@rollup/rollup-win32-x64-msvc@4.19.1':
1761 | optional: true
1762 |
1763 | '@types/estree@1.0.5': {}
1764 |
1765 | '@types/json5@0.0.29': {}
1766 |
1767 | '@types/node@20.14.12':
1768 | dependencies:
1769 | undici-types: 5.26.5
1770 |
1771 | '@types/trusted-types@2.0.7': {}
1772 |
1773 | '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)':
1774 | dependencies:
1775 | '@eslint-community/regexpp': 4.11.0
1776 | '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
1777 | '@typescript-eslint/scope-manager': 7.17.0
1778 | '@typescript-eslint/type-utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
1779 | '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
1780 | '@typescript-eslint/visitor-keys': 7.17.0
1781 | eslint: 8.57.0
1782 | graphemer: 1.4.0
1783 | ignore: 5.3.1
1784 | natural-compare: 1.4.0
1785 | ts-api-utils: 1.3.0(typescript@5.5.4)
1786 | optionalDependencies:
1787 | typescript: 5.5.4
1788 | transitivePeerDependencies:
1789 | - supports-color
1790 |
1791 | '@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4)':
1792 | dependencies:
1793 | '@typescript-eslint/scope-manager': 7.17.0
1794 | '@typescript-eslint/types': 7.17.0
1795 | '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
1796 | '@typescript-eslint/visitor-keys': 7.17.0
1797 | debug: 4.3.6
1798 | eslint: 8.57.0
1799 | optionalDependencies:
1800 | typescript: 5.5.4
1801 | transitivePeerDependencies:
1802 | - supports-color
1803 |
1804 | '@typescript-eslint/scope-manager@7.17.0':
1805 | dependencies:
1806 | '@typescript-eslint/types': 7.17.0
1807 | '@typescript-eslint/visitor-keys': 7.17.0
1808 |
1809 | '@typescript-eslint/type-utils@7.17.0(eslint@8.57.0)(typescript@5.5.4)':
1810 | dependencies:
1811 | '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
1812 | '@typescript-eslint/utils': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
1813 | debug: 4.3.6
1814 | eslint: 8.57.0
1815 | ts-api-utils: 1.3.0(typescript@5.5.4)
1816 | optionalDependencies:
1817 | typescript: 5.5.4
1818 | transitivePeerDependencies:
1819 | - supports-color
1820 |
1821 | '@typescript-eslint/types@7.17.0': {}
1822 |
1823 | '@typescript-eslint/typescript-estree@7.17.0(typescript@5.5.4)':
1824 | dependencies:
1825 | '@typescript-eslint/types': 7.17.0
1826 | '@typescript-eslint/visitor-keys': 7.17.0
1827 | debug: 4.3.6
1828 | globby: 11.1.0
1829 | is-glob: 4.0.3
1830 | minimatch: 9.0.5
1831 | semver: 7.6.3
1832 | ts-api-utils: 1.3.0(typescript@5.5.4)
1833 | optionalDependencies:
1834 | typescript: 5.5.4
1835 | transitivePeerDependencies:
1836 | - supports-color
1837 |
1838 | '@typescript-eslint/utils@7.17.0(eslint@8.57.0)(typescript@5.5.4)':
1839 | dependencies:
1840 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
1841 | '@typescript-eslint/scope-manager': 7.17.0
1842 | '@typescript-eslint/types': 7.17.0
1843 | '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
1844 | eslint: 8.57.0
1845 | transitivePeerDependencies:
1846 | - supports-color
1847 | - typescript
1848 |
1849 | '@typescript-eslint/visitor-keys@7.17.0':
1850 | dependencies:
1851 | '@typescript-eslint/types': 7.17.0
1852 | eslint-visitor-keys: 3.4.3
1853 |
1854 | '@ungap/structured-clone@1.2.0': {}
1855 |
1856 | acorn-jsx@5.3.2(acorn@8.12.1):
1857 | dependencies:
1858 | acorn: 8.12.1
1859 |
1860 | acorn@8.12.1: {}
1861 |
1862 | ajv@6.12.6:
1863 | dependencies:
1864 | fast-deep-equal: 3.1.3
1865 | fast-json-stable-stringify: 2.1.0
1866 | json-schema-traverse: 0.4.1
1867 | uri-js: 4.4.1
1868 |
1869 | ansi-escapes@7.0.0:
1870 | dependencies:
1871 | environment: 1.1.0
1872 |
1873 | ansi-regex@5.0.1: {}
1874 |
1875 | ansi-regex@6.0.1: {}
1876 |
1877 | ansi-styles@4.3.0:
1878 | dependencies:
1879 | color-convert: 2.0.1
1880 |
1881 | ansi-styles@6.2.1: {}
1882 |
1883 | argparse@2.0.1: {}
1884 |
1885 | array-buffer-byte-length@1.0.1:
1886 | dependencies:
1887 | call-bind: 1.0.7
1888 | is-array-buffer: 3.0.4
1889 |
1890 | array-includes@3.1.8:
1891 | dependencies:
1892 | call-bind: 1.0.7
1893 | define-properties: 1.2.1
1894 | es-abstract: 1.23.3
1895 | es-object-atoms: 1.0.0
1896 | get-intrinsic: 1.2.4
1897 | is-string: 1.0.7
1898 |
1899 | array-union@2.1.0: {}
1900 |
1901 | array.prototype.findlastindex@1.2.5:
1902 | dependencies:
1903 | call-bind: 1.0.7
1904 | define-properties: 1.2.1
1905 | es-abstract: 1.23.3
1906 | es-errors: 1.3.0
1907 | es-object-atoms: 1.0.0
1908 | es-shim-unscopables: 1.0.2
1909 |
1910 | array.prototype.flat@1.3.2:
1911 | dependencies:
1912 | call-bind: 1.0.7
1913 | define-properties: 1.2.1
1914 | es-abstract: 1.23.3
1915 | es-shim-unscopables: 1.0.2
1916 |
1917 | array.prototype.flatmap@1.3.2:
1918 | dependencies:
1919 | call-bind: 1.0.7
1920 | define-properties: 1.2.1
1921 | es-abstract: 1.23.3
1922 | es-shim-unscopables: 1.0.2
1923 |
1924 | arraybuffer.prototype.slice@1.0.3:
1925 | dependencies:
1926 | array-buffer-byte-length: 1.0.1
1927 | call-bind: 1.0.7
1928 | define-properties: 1.2.1
1929 | es-abstract: 1.23.3
1930 | es-errors: 1.3.0
1931 | get-intrinsic: 1.2.4
1932 | is-array-buffer: 3.0.4
1933 | is-shared-array-buffer: 1.0.3
1934 |
1935 | available-typed-arrays@1.0.7:
1936 | dependencies:
1937 | possible-typed-array-names: 1.0.0
1938 |
1939 | balanced-match@1.0.2: {}
1940 |
1941 | brace-expansion@1.1.11:
1942 | dependencies:
1943 | balanced-match: 1.0.2
1944 | concat-map: 0.0.1
1945 |
1946 | brace-expansion@2.0.1:
1947 | dependencies:
1948 | balanced-match: 1.0.2
1949 |
1950 | braces@3.0.3:
1951 | dependencies:
1952 | fill-range: 7.1.1
1953 |
1954 | call-bind@1.0.7:
1955 | dependencies:
1956 | es-define-property: 1.0.0
1957 | es-errors: 1.3.0
1958 | function-bind: 1.1.2
1959 | get-intrinsic: 1.2.4
1960 | set-function-length: 1.2.2
1961 |
1962 | callsites@3.1.0: {}
1963 |
1964 | card-tools@https://codeload.github.com/thomasloven/lovelace-card-tools/tar.gz/477f3d4: {}
1965 |
1966 | chalk@4.1.2:
1967 | dependencies:
1968 | ansi-styles: 4.3.0
1969 | supports-color: 7.2.0
1970 |
1971 | chalk@5.3.0: {}
1972 |
1973 | cli-cursor@5.0.0:
1974 | dependencies:
1975 | restore-cursor: 5.1.0
1976 |
1977 | cli-truncate@4.0.0:
1978 | dependencies:
1979 | slice-ansi: 5.0.0
1980 | string-width: 7.2.0
1981 |
1982 | color-convert@2.0.1:
1983 | dependencies:
1984 | color-name: 1.1.4
1985 |
1986 | color-name@1.1.4: {}
1987 |
1988 | colorette@2.0.20: {}
1989 |
1990 | commander@12.1.0: {}
1991 |
1992 | concat-map@0.0.1: {}
1993 |
1994 | cross-spawn@7.0.3:
1995 | dependencies:
1996 | path-key: 3.1.1
1997 | shebang-command: 2.0.0
1998 | which: 2.0.2
1999 |
2000 | custom-card-helpers@1.9.0:
2001 | dependencies:
2002 | '@formatjs/intl-utils': 3.8.4
2003 | home-assistant-js-websocket: 6.1.1
2004 | intl-messageformat: 9.13.0
2005 | lit: 2.8.0
2006 | rollup: 2.79.1
2007 | superstruct: 0.15.5
2008 | typescript: 4.9.5
2009 |
2010 | data-view-buffer@1.0.1:
2011 | dependencies:
2012 | call-bind: 1.0.7
2013 | es-errors: 1.3.0
2014 | is-data-view: 1.0.1
2015 |
2016 | data-view-byte-length@1.0.1:
2017 | dependencies:
2018 | call-bind: 1.0.7
2019 | es-errors: 1.3.0
2020 | is-data-view: 1.0.1
2021 |
2022 | data-view-byte-offset@1.0.0:
2023 | dependencies:
2024 | call-bind: 1.0.7
2025 | es-errors: 1.3.0
2026 | is-data-view: 1.0.1
2027 |
2028 | debug@3.2.7:
2029 | dependencies:
2030 | ms: 2.1.3
2031 |
2032 | debug@4.3.6:
2033 | dependencies:
2034 | ms: 2.1.2
2035 |
2036 | deep-is@0.1.4: {}
2037 |
2038 | define-data-property@1.1.4:
2039 | dependencies:
2040 | es-define-property: 1.0.0
2041 | es-errors: 1.3.0
2042 | gopd: 1.0.1
2043 |
2044 | define-properties@1.2.1:
2045 | dependencies:
2046 | define-data-property: 1.1.4
2047 | has-property-descriptors: 1.0.2
2048 | object-keys: 1.1.1
2049 |
2050 | dir-glob@3.0.1:
2051 | dependencies:
2052 | path-type: 4.0.0
2053 |
2054 | doctrine@2.1.0:
2055 | dependencies:
2056 | esutils: 2.0.3
2057 |
2058 | doctrine@3.0.0:
2059 | dependencies:
2060 | esutils: 2.0.3
2061 |
2062 | emoji-regex@10.3.0: {}
2063 |
2064 | emojis-list@3.0.0: {}
2065 |
2066 | enhanced-resolve@5.17.1:
2067 | dependencies:
2068 | graceful-fs: 4.2.11
2069 | tapable: 2.2.1
2070 |
2071 | environment@1.1.0: {}
2072 |
2073 | es-abstract@1.23.3:
2074 | dependencies:
2075 | array-buffer-byte-length: 1.0.1
2076 | arraybuffer.prototype.slice: 1.0.3
2077 | available-typed-arrays: 1.0.7
2078 | call-bind: 1.0.7
2079 | data-view-buffer: 1.0.1
2080 | data-view-byte-length: 1.0.1
2081 | data-view-byte-offset: 1.0.0
2082 | es-define-property: 1.0.0
2083 | es-errors: 1.3.0
2084 | es-object-atoms: 1.0.0
2085 | es-set-tostringtag: 2.0.3
2086 | es-to-primitive: 1.2.1
2087 | function.prototype.name: 1.1.6
2088 | get-intrinsic: 1.2.4
2089 | get-symbol-description: 1.0.2
2090 | globalthis: 1.0.4
2091 | gopd: 1.0.1
2092 | has-property-descriptors: 1.0.2
2093 | has-proto: 1.0.3
2094 | has-symbols: 1.0.3
2095 | hasown: 2.0.2
2096 | internal-slot: 1.0.7
2097 | is-array-buffer: 3.0.4
2098 | is-callable: 1.2.7
2099 | is-data-view: 1.0.1
2100 | is-negative-zero: 2.0.3
2101 | is-regex: 1.1.4
2102 | is-shared-array-buffer: 1.0.3
2103 | is-string: 1.0.7
2104 | is-typed-array: 1.1.13
2105 | is-weakref: 1.0.2
2106 | object-inspect: 1.13.2
2107 | object-keys: 1.1.1
2108 | object.assign: 4.1.5
2109 | regexp.prototype.flags: 1.5.2
2110 | safe-array-concat: 1.1.2
2111 | safe-regex-test: 1.0.3
2112 | string.prototype.trim: 1.2.9
2113 | string.prototype.trimend: 1.0.8
2114 | string.prototype.trimstart: 1.0.8
2115 | typed-array-buffer: 1.0.2
2116 | typed-array-byte-length: 1.0.1
2117 | typed-array-byte-offset: 1.0.2
2118 | typed-array-length: 1.0.6
2119 | unbox-primitive: 1.0.2
2120 | which-typed-array: 1.1.15
2121 |
2122 | es-define-property@1.0.0:
2123 | dependencies:
2124 | get-intrinsic: 1.2.4
2125 |
2126 | es-errors@1.3.0: {}
2127 |
2128 | es-object-atoms@1.0.0:
2129 | dependencies:
2130 | es-errors: 1.3.0
2131 |
2132 | es-set-tostringtag@2.0.3:
2133 | dependencies:
2134 | get-intrinsic: 1.2.4
2135 | has-tostringtag: 1.0.2
2136 | hasown: 2.0.2
2137 |
2138 | es-shim-unscopables@1.0.2:
2139 | dependencies:
2140 | hasown: 2.0.2
2141 |
2142 | es-to-primitive@1.2.1:
2143 | dependencies:
2144 | is-callable: 1.2.7
2145 | is-date-object: 1.0.5
2146 | is-symbol: 1.0.4
2147 |
2148 | esbuild@0.21.5:
2149 | optionalDependencies:
2150 | '@esbuild/aix-ppc64': 0.21.5
2151 | '@esbuild/android-arm': 0.21.5
2152 | '@esbuild/android-arm64': 0.21.5
2153 | '@esbuild/android-x64': 0.21.5
2154 | '@esbuild/darwin-arm64': 0.21.5
2155 | '@esbuild/darwin-x64': 0.21.5
2156 | '@esbuild/freebsd-arm64': 0.21.5
2157 | '@esbuild/freebsd-x64': 0.21.5
2158 | '@esbuild/linux-arm': 0.21.5
2159 | '@esbuild/linux-arm64': 0.21.5
2160 | '@esbuild/linux-ia32': 0.21.5
2161 | '@esbuild/linux-loong64': 0.21.5
2162 | '@esbuild/linux-mips64el': 0.21.5
2163 | '@esbuild/linux-ppc64': 0.21.5
2164 | '@esbuild/linux-riscv64': 0.21.5
2165 | '@esbuild/linux-s390x': 0.21.5
2166 | '@esbuild/linux-x64': 0.21.5
2167 | '@esbuild/netbsd-x64': 0.21.5
2168 | '@esbuild/openbsd-x64': 0.21.5
2169 | '@esbuild/sunos-x64': 0.21.5
2170 | '@esbuild/win32-arm64': 0.21.5
2171 | '@esbuild/win32-ia32': 0.21.5
2172 | '@esbuild/win32-x64': 0.21.5
2173 |
2174 | escape-string-regexp@4.0.0: {}
2175 |
2176 | eslint-config-prettier@9.1.0(eslint@8.57.0):
2177 | dependencies:
2178 | eslint: 8.57.0
2179 |
2180 | eslint-import-resolver-node@0.3.9:
2181 | dependencies:
2182 | debug: 3.2.7
2183 | is-core-module: 2.15.0
2184 | resolve: 1.22.8
2185 | transitivePeerDependencies:
2186 | - supports-color
2187 |
2188 | eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0):
2189 | dependencies:
2190 | debug: 4.3.6
2191 | enhanced-resolve: 5.17.1
2192 | eslint: 8.57.0
2193 | eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
2194 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
2195 | fast-glob: 3.3.2
2196 | get-tsconfig: 4.7.6
2197 | is-core-module: 2.15.0
2198 | is-glob: 4.0.3
2199 | transitivePeerDependencies:
2200 | - '@typescript-eslint/parser'
2201 | - eslint-import-resolver-node
2202 | - eslint-import-resolver-webpack
2203 | - supports-color
2204 |
2205 | eslint-module-utils@2.8.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
2206 | dependencies:
2207 | debug: 3.2.7
2208 | optionalDependencies:
2209 | '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
2210 | eslint: 8.57.0
2211 | eslint-import-resolver-node: 0.3.9
2212 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
2213 | transitivePeerDependencies:
2214 | - supports-color
2215 |
2216 | eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
2217 | dependencies:
2218 | array-includes: 3.1.8
2219 | array.prototype.findlastindex: 1.2.5
2220 | array.prototype.flat: 1.3.2
2221 | array.prototype.flatmap: 1.3.2
2222 | debug: 3.2.7
2223 | doctrine: 2.1.0
2224 | eslint: 8.57.0
2225 | eslint-import-resolver-node: 0.3.9
2226 | eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
2227 | hasown: 2.0.2
2228 | is-core-module: 2.15.0
2229 | is-glob: 4.0.3
2230 | minimatch: 3.1.2
2231 | object.fromentries: 2.0.8
2232 | object.groupby: 1.0.3
2233 | object.values: 1.2.0
2234 | semver: 6.3.1
2235 | tsconfig-paths: 3.15.0
2236 | optionalDependencies:
2237 | '@typescript-eslint/parser': 7.17.0(eslint@8.57.0)(typescript@5.5.4)
2238 | transitivePeerDependencies:
2239 | - eslint-import-resolver-typescript
2240 | - eslint-import-resolver-webpack
2241 | - supports-color
2242 |
2243 | eslint-plugin-only-warn@1.1.0: {}
2244 |
2245 | eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3):
2246 | dependencies:
2247 | eslint: 8.57.0
2248 | prettier: 3.3.3
2249 | prettier-linter-helpers: 1.0.0
2250 | synckit: 0.9.1
2251 | optionalDependencies:
2252 | eslint-config-prettier: 9.1.0(eslint@8.57.0)
2253 |
2254 | eslint-scope@7.2.2:
2255 | dependencies:
2256 | esrecurse: 4.3.0
2257 | estraverse: 5.3.0
2258 |
2259 | eslint-visitor-keys@3.4.3: {}
2260 |
2261 | eslint@8.57.0:
2262 | dependencies:
2263 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2264 | '@eslint-community/regexpp': 4.11.0
2265 | '@eslint/eslintrc': 2.1.4
2266 | '@eslint/js': 8.57.0
2267 | '@humanwhocodes/config-array': 0.11.14
2268 | '@humanwhocodes/module-importer': 1.0.1
2269 | '@nodelib/fs.walk': 1.2.8
2270 | '@ungap/structured-clone': 1.2.0
2271 | ajv: 6.12.6
2272 | chalk: 4.1.2
2273 | cross-spawn: 7.0.3
2274 | debug: 4.3.6
2275 | doctrine: 3.0.0
2276 | escape-string-regexp: 4.0.0
2277 | eslint-scope: 7.2.2
2278 | eslint-visitor-keys: 3.4.3
2279 | espree: 9.6.1
2280 | esquery: 1.6.0
2281 | esutils: 2.0.3
2282 | fast-deep-equal: 3.1.3
2283 | file-entry-cache: 6.0.1
2284 | find-up: 5.0.0
2285 | glob-parent: 6.0.2
2286 | globals: 13.24.0
2287 | graphemer: 1.4.0
2288 | ignore: 5.3.1
2289 | imurmurhash: 0.1.4
2290 | is-glob: 4.0.3
2291 | is-path-inside: 3.0.3
2292 | js-yaml: 4.1.0
2293 | json-stable-stringify-without-jsonify: 1.0.1
2294 | levn: 0.4.1
2295 | lodash.merge: 4.6.2
2296 | minimatch: 3.1.2
2297 | natural-compare: 1.4.0
2298 | optionator: 0.9.4
2299 | strip-ansi: 6.0.1
2300 | text-table: 0.2.0
2301 | transitivePeerDependencies:
2302 | - supports-color
2303 |
2304 | espree@9.6.1:
2305 | dependencies:
2306 | acorn: 8.12.1
2307 | acorn-jsx: 5.3.2(acorn@8.12.1)
2308 | eslint-visitor-keys: 3.4.3
2309 |
2310 | esquery@1.6.0:
2311 | dependencies:
2312 | estraverse: 5.3.0
2313 |
2314 | esrecurse@4.3.0:
2315 | dependencies:
2316 | estraverse: 5.3.0
2317 |
2318 | estraverse@5.3.0: {}
2319 |
2320 | esutils@2.0.3: {}
2321 |
2322 | eventemitter3@5.0.1: {}
2323 |
2324 | execa@8.0.1:
2325 | dependencies:
2326 | cross-spawn: 7.0.3
2327 | get-stream: 8.0.1
2328 | human-signals: 5.0.0
2329 | is-stream: 3.0.0
2330 | merge-stream: 2.0.0
2331 | npm-run-path: 5.3.0
2332 | onetime: 6.0.0
2333 | signal-exit: 4.1.0
2334 | strip-final-newline: 3.0.0
2335 |
2336 | fast-deep-equal@3.1.3: {}
2337 |
2338 | fast-diff@1.3.0: {}
2339 |
2340 | fast-glob@3.3.2:
2341 | dependencies:
2342 | '@nodelib/fs.stat': 2.0.5
2343 | '@nodelib/fs.walk': 1.2.8
2344 | glob-parent: 5.1.2
2345 | merge2: 1.4.1
2346 | micromatch: 4.0.7
2347 |
2348 | fast-json-stable-stringify@2.1.0: {}
2349 |
2350 | fast-levenshtein@2.0.6: {}
2351 |
2352 | fastq@1.17.1:
2353 | dependencies:
2354 | reusify: 1.0.4
2355 |
2356 | file-entry-cache@6.0.1:
2357 | dependencies:
2358 | flat-cache: 3.2.0
2359 |
2360 | fill-range@7.1.1:
2361 | dependencies:
2362 | to-regex-range: 5.0.1
2363 |
2364 | find-up@5.0.0:
2365 | dependencies:
2366 | locate-path: 6.0.0
2367 | path-exists: 4.0.0
2368 |
2369 | flat-cache@3.2.0:
2370 | dependencies:
2371 | flatted: 3.3.1
2372 | keyv: 4.5.4
2373 | rimraf: 3.0.2
2374 |
2375 | flatted@3.3.1: {}
2376 |
2377 | for-each@0.3.3:
2378 | dependencies:
2379 | is-callable: 1.2.7
2380 |
2381 | fs-extra@10.1.0:
2382 | dependencies:
2383 | graceful-fs: 4.2.11
2384 | jsonfile: 6.1.0
2385 | universalify: 2.0.1
2386 |
2387 | fs.realpath@1.0.0: {}
2388 |
2389 | fsevents@2.3.3:
2390 | optional: true
2391 |
2392 | function-bind@1.1.2: {}
2393 |
2394 | function.prototype.name@1.1.6:
2395 | dependencies:
2396 | call-bind: 1.0.7
2397 | define-properties: 1.2.1
2398 | es-abstract: 1.23.3
2399 | functions-have-names: 1.2.3
2400 |
2401 | functions-have-names@1.2.3: {}
2402 |
2403 | get-east-asian-width@1.2.0: {}
2404 |
2405 | get-intrinsic@1.2.4:
2406 | dependencies:
2407 | es-errors: 1.3.0
2408 | function-bind: 1.1.2
2409 | has-proto: 1.0.3
2410 | has-symbols: 1.0.3
2411 | hasown: 2.0.2
2412 |
2413 | get-stream@8.0.1: {}
2414 |
2415 | get-symbol-description@1.0.2:
2416 | dependencies:
2417 | call-bind: 1.0.7
2418 | es-errors: 1.3.0
2419 | get-intrinsic: 1.2.4
2420 |
2421 | get-tsconfig@4.7.6:
2422 | dependencies:
2423 | resolve-pkg-maps: 1.0.0
2424 |
2425 | glob-parent@5.1.2:
2426 | dependencies:
2427 | is-glob: 4.0.3
2428 |
2429 | glob-parent@6.0.2:
2430 | dependencies:
2431 | is-glob: 4.0.3
2432 |
2433 | glob@7.2.3:
2434 | dependencies:
2435 | fs.realpath: 1.0.0
2436 | inflight: 1.0.6
2437 | inherits: 2.0.4
2438 | minimatch: 3.1.2
2439 | once: 1.4.0
2440 | path-is-absolute: 1.0.1
2441 |
2442 | globals@13.24.0:
2443 | dependencies:
2444 | type-fest: 0.20.2
2445 |
2446 | globalthis@1.0.4:
2447 | dependencies:
2448 | define-properties: 1.2.1
2449 | gopd: 1.0.1
2450 |
2451 | globby@11.1.0:
2452 | dependencies:
2453 | array-union: 2.1.0
2454 | dir-glob: 3.0.1
2455 | fast-glob: 3.3.2
2456 | ignore: 5.3.1
2457 | merge2: 1.4.1
2458 | slash: 3.0.0
2459 |
2460 | gopd@1.0.1:
2461 | dependencies:
2462 | get-intrinsic: 1.2.4
2463 |
2464 | graceful-fs@4.2.11: {}
2465 |
2466 | graphemer@1.4.0: {}
2467 |
2468 | has-bigints@1.0.2: {}
2469 |
2470 | has-flag@4.0.0: {}
2471 |
2472 | has-property-descriptors@1.0.2:
2473 | dependencies:
2474 | es-define-property: 1.0.0
2475 |
2476 | has-proto@1.0.3: {}
2477 |
2478 | has-symbols@1.0.3: {}
2479 |
2480 | has-tostringtag@1.0.2:
2481 | dependencies:
2482 | has-symbols: 1.0.3
2483 |
2484 | hasown@2.0.2:
2485 | dependencies:
2486 | function-bind: 1.1.2
2487 |
2488 | home-assistant-js-websocket@6.1.1: {}
2489 |
2490 | home-assistant-js-websocket@9.4.0: {}
2491 |
2492 | human-signals@5.0.0: {}
2493 |
2494 | husky@9.1.1: {}
2495 |
2496 | ignore@5.3.1: {}
2497 |
2498 | import-fresh@3.3.0:
2499 | dependencies:
2500 | parent-module: 1.0.1
2501 | resolve-from: 4.0.0
2502 |
2503 | imurmurhash@0.1.4: {}
2504 |
2505 | inflight@1.0.6:
2506 | dependencies:
2507 | once: 1.4.0
2508 | wrappy: 1.0.2
2509 |
2510 | inherits@2.0.4: {}
2511 |
2512 | internal-slot@1.0.7:
2513 | dependencies:
2514 | es-errors: 1.3.0
2515 | hasown: 2.0.2
2516 | side-channel: 1.0.6
2517 |
2518 | intl-messageformat@9.13.0:
2519 | dependencies:
2520 | '@formatjs/ecma402-abstract': 1.11.4
2521 | '@formatjs/fast-memoize': 1.2.1
2522 | '@formatjs/icu-messageformat-parser': 2.1.0
2523 | tslib: 2.6.3
2524 |
2525 | is-array-buffer@3.0.4:
2526 | dependencies:
2527 | call-bind: 1.0.7
2528 | get-intrinsic: 1.2.4
2529 |
2530 | is-bigint@1.0.4:
2531 | dependencies:
2532 | has-bigints: 1.0.2
2533 |
2534 | is-boolean-object@1.1.2:
2535 | dependencies:
2536 | call-bind: 1.0.7
2537 | has-tostringtag: 1.0.2
2538 |
2539 | is-callable@1.2.7: {}
2540 |
2541 | is-core-module@2.15.0:
2542 | dependencies:
2543 | hasown: 2.0.2
2544 |
2545 | is-data-view@1.0.1:
2546 | dependencies:
2547 | is-typed-array: 1.1.13
2548 |
2549 | is-date-object@1.0.5:
2550 | dependencies:
2551 | has-tostringtag: 1.0.2
2552 |
2553 | is-extglob@2.1.1: {}
2554 |
2555 | is-fullwidth-code-point@4.0.0: {}
2556 |
2557 | is-fullwidth-code-point@5.0.0:
2558 | dependencies:
2559 | get-east-asian-width: 1.2.0
2560 |
2561 | is-glob@4.0.3:
2562 | dependencies:
2563 | is-extglob: 2.1.1
2564 |
2565 | is-negative-zero@2.0.3: {}
2566 |
2567 | is-number-object@1.0.7:
2568 | dependencies:
2569 | has-tostringtag: 1.0.2
2570 |
2571 | is-number@7.0.0: {}
2572 |
2573 | is-path-inside@3.0.3: {}
2574 |
2575 | is-regex@1.1.4:
2576 | dependencies:
2577 | call-bind: 1.0.7
2578 | has-tostringtag: 1.0.2
2579 |
2580 | is-shared-array-buffer@1.0.3:
2581 | dependencies:
2582 | call-bind: 1.0.7
2583 |
2584 | is-stream@3.0.0: {}
2585 |
2586 | is-string@1.0.7:
2587 | dependencies:
2588 | has-tostringtag: 1.0.2
2589 |
2590 | is-symbol@1.0.4:
2591 | dependencies:
2592 | has-symbols: 1.0.3
2593 |
2594 | is-typed-array@1.1.13:
2595 | dependencies:
2596 | which-typed-array: 1.1.15
2597 |
2598 | is-weakref@1.0.2:
2599 | dependencies:
2600 | call-bind: 1.0.7
2601 |
2602 | isarray@2.0.5: {}
2603 |
2604 | isexe@2.0.0: {}
2605 |
2606 | js-yaml@4.1.0:
2607 | dependencies:
2608 | argparse: 2.0.1
2609 |
2610 | json-buffer@3.0.1: {}
2611 |
2612 | json-schema-traverse@0.4.1: {}
2613 |
2614 | json-stable-stringify-without-jsonify@1.0.1: {}
2615 |
2616 | json5@1.0.2:
2617 | dependencies:
2618 | minimist: 1.2.8
2619 |
2620 | jsonfile@6.1.0:
2621 | dependencies:
2622 | universalify: 2.0.1
2623 | optionalDependencies:
2624 | graceful-fs: 4.2.11
2625 |
2626 | keyv@4.5.4:
2627 | dependencies:
2628 | json-buffer: 3.0.1
2629 |
2630 | levn@0.4.1:
2631 | dependencies:
2632 | prelude-ls: 1.2.1
2633 | type-check: 0.4.0
2634 |
2635 | lilconfig@3.1.2: {}
2636 |
2637 | lint-staged@15.2.7:
2638 | dependencies:
2639 | chalk: 5.3.0
2640 | commander: 12.1.0
2641 | debug: 4.3.6
2642 | execa: 8.0.1
2643 | lilconfig: 3.1.2
2644 | listr2: 8.2.4
2645 | micromatch: 4.0.7
2646 | pidtree: 0.6.0
2647 | string-argv: 0.3.2
2648 | yaml: 2.4.5
2649 | transitivePeerDependencies:
2650 | - supports-color
2651 |
2652 | listr2@8.2.4:
2653 | dependencies:
2654 | cli-truncate: 4.0.0
2655 | colorette: 2.0.20
2656 | eventemitter3: 5.0.1
2657 | log-update: 6.1.0
2658 | rfdc: 1.4.1
2659 | wrap-ansi: 9.0.0
2660 |
2661 | lit-element@3.3.3:
2662 | dependencies:
2663 | '@lit-labs/ssr-dom-shim': 1.2.0
2664 | '@lit/reactive-element': 1.6.3
2665 | lit-html: 2.8.0
2666 |
2667 | lit-html@2.8.0:
2668 | dependencies:
2669 | '@types/trusted-types': 2.0.7
2670 |
2671 | lit@2.8.0:
2672 | dependencies:
2673 | '@lit/reactive-element': 1.6.3
2674 | lit-element: 3.3.3
2675 | lit-html: 2.8.0
2676 |
2677 | locate-path@6.0.0:
2678 | dependencies:
2679 | p-locate: 5.0.0
2680 |
2681 | lodash.merge@4.6.2: {}
2682 |
2683 | log-update@6.1.0:
2684 | dependencies:
2685 | ansi-escapes: 7.0.0
2686 | cli-cursor: 5.0.0
2687 | slice-ansi: 7.1.0
2688 | strip-ansi: 7.1.0
2689 | wrap-ansi: 9.0.0
2690 |
2691 | merge-stream@2.0.0: {}
2692 |
2693 | merge2@1.4.1: {}
2694 |
2695 | micromatch@4.0.7:
2696 | dependencies:
2697 | braces: 3.0.3
2698 | picomatch: 2.3.1
2699 |
2700 | mimic-fn@4.0.0: {}
2701 |
2702 | mimic-function@5.0.1: {}
2703 |
2704 | minimatch@3.1.2:
2705 | dependencies:
2706 | brace-expansion: 1.1.11
2707 |
2708 | minimatch@9.0.5:
2709 | dependencies:
2710 | brace-expansion: 2.0.1
2711 |
2712 | minimist@1.2.8: {}
2713 |
2714 | ms@2.1.2: {}
2715 |
2716 | ms@2.1.3: {}
2717 |
2718 | nanoid@3.3.7: {}
2719 |
2720 | natural-compare@1.4.0: {}
2721 |
2722 | npm-run-path@5.3.0:
2723 | dependencies:
2724 | path-key: 4.0.0
2725 |
2726 | object-inspect@1.13.2: {}
2727 |
2728 | object-keys@1.1.1: {}
2729 |
2730 | object.assign@4.1.5:
2731 | dependencies:
2732 | call-bind: 1.0.7
2733 | define-properties: 1.2.1
2734 | has-symbols: 1.0.3
2735 | object-keys: 1.1.1
2736 |
2737 | object.fromentries@2.0.8:
2738 | dependencies:
2739 | call-bind: 1.0.7
2740 | define-properties: 1.2.1
2741 | es-abstract: 1.23.3
2742 | es-object-atoms: 1.0.0
2743 |
2744 | object.groupby@1.0.3:
2745 | dependencies:
2746 | call-bind: 1.0.7
2747 | define-properties: 1.2.1
2748 | es-abstract: 1.23.3
2749 |
2750 | object.values@1.2.0:
2751 | dependencies:
2752 | call-bind: 1.0.7
2753 | define-properties: 1.2.1
2754 | es-object-atoms: 1.0.0
2755 |
2756 | once@1.4.0:
2757 | dependencies:
2758 | wrappy: 1.0.2
2759 |
2760 | onetime@6.0.0:
2761 | dependencies:
2762 | mimic-fn: 4.0.0
2763 |
2764 | onetime@7.0.0:
2765 | dependencies:
2766 | mimic-function: 5.0.1
2767 |
2768 | optionator@0.9.4:
2769 | dependencies:
2770 | deep-is: 0.1.4
2771 | fast-levenshtein: 2.0.6
2772 | levn: 0.4.1
2773 | prelude-ls: 1.2.1
2774 | type-check: 0.4.0
2775 | word-wrap: 1.2.5
2776 |
2777 | p-limit@3.1.0:
2778 | dependencies:
2779 | yocto-queue: 0.1.0
2780 |
2781 | p-locate@5.0.0:
2782 | dependencies:
2783 | p-limit: 3.1.0
2784 |
2785 | parent-module@1.0.1:
2786 | dependencies:
2787 | callsites: 3.1.0
2788 |
2789 | path-exists@4.0.0: {}
2790 |
2791 | path-is-absolute@1.0.1: {}
2792 |
2793 | path-key@3.1.1: {}
2794 |
2795 | path-key@4.0.0: {}
2796 |
2797 | path-parse@1.0.7: {}
2798 |
2799 | path-type@4.0.0: {}
2800 |
2801 | picocolors@1.0.1: {}
2802 |
2803 | picomatch@2.3.1: {}
2804 |
2805 | pidtree@0.6.0: {}
2806 |
2807 | possible-typed-array-names@1.0.0: {}
2808 |
2809 | postcss@8.4.40:
2810 | dependencies:
2811 | nanoid: 3.3.7
2812 | picocolors: 1.0.1
2813 | source-map-js: 1.2.0
2814 |
2815 | prelude-ls@1.2.1: {}
2816 |
2817 | prettier-linter-helpers@1.0.0:
2818 | dependencies:
2819 | fast-diff: 1.3.0
2820 |
2821 | prettier@3.3.3: {}
2822 |
2823 | punycode@2.3.1: {}
2824 |
2825 | queue-microtask@1.2.3: {}
2826 |
2827 | regexp.prototype.flags@1.5.2:
2828 | dependencies:
2829 | call-bind: 1.0.7
2830 | define-properties: 1.2.1
2831 | es-errors: 1.3.0
2832 | set-function-name: 2.0.2
2833 |
2834 | resolve-from@4.0.0: {}
2835 |
2836 | resolve-pkg-maps@1.0.0: {}
2837 |
2838 | resolve@1.22.8:
2839 | dependencies:
2840 | is-core-module: 2.15.0
2841 | path-parse: 1.0.7
2842 | supports-preserve-symlinks-flag: 1.0.0
2843 |
2844 | restore-cursor@5.1.0:
2845 | dependencies:
2846 | onetime: 7.0.0
2847 | signal-exit: 4.1.0
2848 |
2849 | reusify@1.0.4: {}
2850 |
2851 | rfdc@1.4.1: {}
2852 |
2853 | rimraf@3.0.2:
2854 | dependencies:
2855 | glob: 7.2.3
2856 |
2857 | rollup@2.79.1:
2858 | optionalDependencies:
2859 | fsevents: 2.3.3
2860 |
2861 | rollup@4.19.1:
2862 | dependencies:
2863 | '@types/estree': 1.0.5
2864 | optionalDependencies:
2865 | '@rollup/rollup-android-arm-eabi': 4.19.1
2866 | '@rollup/rollup-android-arm64': 4.19.1
2867 | '@rollup/rollup-darwin-arm64': 4.19.1
2868 | '@rollup/rollup-darwin-x64': 4.19.1
2869 | '@rollup/rollup-linux-arm-gnueabihf': 4.19.1
2870 | '@rollup/rollup-linux-arm-musleabihf': 4.19.1
2871 | '@rollup/rollup-linux-arm64-gnu': 4.19.1
2872 | '@rollup/rollup-linux-arm64-musl': 4.19.1
2873 | '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1
2874 | '@rollup/rollup-linux-riscv64-gnu': 4.19.1
2875 | '@rollup/rollup-linux-s390x-gnu': 4.19.1
2876 | '@rollup/rollup-linux-x64-gnu': 4.19.1
2877 | '@rollup/rollup-linux-x64-musl': 4.19.1
2878 | '@rollup/rollup-win32-arm64-msvc': 4.19.1
2879 | '@rollup/rollup-win32-ia32-msvc': 4.19.1
2880 | '@rollup/rollup-win32-x64-msvc': 4.19.1
2881 | fsevents: 2.3.3
2882 |
2883 | run-parallel@1.2.0:
2884 | dependencies:
2885 | queue-microtask: 1.2.3
2886 |
2887 | safe-array-concat@1.1.2:
2888 | dependencies:
2889 | call-bind: 1.0.7
2890 | get-intrinsic: 1.2.4
2891 | has-symbols: 1.0.3
2892 | isarray: 2.0.5
2893 |
2894 | safe-regex-test@1.0.3:
2895 | dependencies:
2896 | call-bind: 1.0.7
2897 | es-errors: 1.3.0
2898 | is-regex: 1.1.4
2899 |
2900 | semver@6.3.1: {}
2901 |
2902 | semver@7.6.3: {}
2903 |
2904 | set-function-length@1.2.2:
2905 | dependencies:
2906 | define-data-property: 1.1.4
2907 | es-errors: 1.3.0
2908 | function-bind: 1.1.2
2909 | get-intrinsic: 1.2.4
2910 | gopd: 1.0.1
2911 | has-property-descriptors: 1.0.2
2912 |
2913 | set-function-name@2.0.2:
2914 | dependencies:
2915 | define-data-property: 1.1.4
2916 | es-errors: 1.3.0
2917 | functions-have-names: 1.2.3
2918 | has-property-descriptors: 1.0.2
2919 |
2920 | shebang-command@2.0.0:
2921 | dependencies:
2922 | shebang-regex: 3.0.0
2923 |
2924 | shebang-regex@3.0.0: {}
2925 |
2926 | side-channel@1.0.6:
2927 | dependencies:
2928 | call-bind: 1.0.7
2929 | es-errors: 1.3.0
2930 | get-intrinsic: 1.2.4
2931 | object-inspect: 1.13.2
2932 |
2933 | signal-exit@4.1.0: {}
2934 |
2935 | slash@3.0.0: {}
2936 |
2937 | slice-ansi@5.0.0:
2938 | dependencies:
2939 | ansi-styles: 6.2.1
2940 | is-fullwidth-code-point: 4.0.0
2941 |
2942 | slice-ansi@7.1.0:
2943 | dependencies:
2944 | ansi-styles: 6.2.1
2945 | is-fullwidth-code-point: 5.0.0
2946 |
2947 | source-map-js@1.2.0: {}
2948 |
2949 | string-argv@0.3.2: {}
2950 |
2951 | string-width@7.2.0:
2952 | dependencies:
2953 | emoji-regex: 10.3.0
2954 | get-east-asian-width: 1.2.0
2955 | strip-ansi: 7.1.0
2956 |
2957 | string.prototype.trim@1.2.9:
2958 | dependencies:
2959 | call-bind: 1.0.7
2960 | define-properties: 1.2.1
2961 | es-abstract: 1.23.3
2962 | es-object-atoms: 1.0.0
2963 |
2964 | string.prototype.trimend@1.0.8:
2965 | dependencies:
2966 | call-bind: 1.0.7
2967 | define-properties: 1.2.1
2968 | es-object-atoms: 1.0.0
2969 |
2970 | string.prototype.trimstart@1.0.8:
2971 | dependencies:
2972 | call-bind: 1.0.7
2973 | define-properties: 1.2.1
2974 | es-object-atoms: 1.0.0
2975 |
2976 | strip-ansi@6.0.1:
2977 | dependencies:
2978 | ansi-regex: 5.0.1
2979 |
2980 | strip-ansi@7.1.0:
2981 | dependencies:
2982 | ansi-regex: 6.0.1
2983 |
2984 | strip-bom@3.0.0: {}
2985 |
2986 | strip-final-newline@3.0.0: {}
2987 |
2988 | strip-json-comments@3.1.1: {}
2989 |
2990 | superstruct@0.15.5: {}
2991 |
2992 | supports-color@7.2.0:
2993 | dependencies:
2994 | has-flag: 4.0.0
2995 |
2996 | supports-preserve-symlinks-flag@1.0.0: {}
2997 |
2998 | synckit@0.9.1:
2999 | dependencies:
3000 | '@pkgr/core': 0.1.1
3001 | tslib: 2.6.3
3002 |
3003 | tapable@2.2.1: {}
3004 |
3005 | text-table@0.2.0: {}
3006 |
3007 | to-regex-range@5.0.1:
3008 | dependencies:
3009 | is-number: 7.0.0
3010 |
3011 | ts-api-utils@1.3.0(typescript@5.5.4):
3012 | dependencies:
3013 | typescript: 5.5.4
3014 |
3015 | tsconfig-paths@3.15.0:
3016 | dependencies:
3017 | '@types/json5': 0.0.29
3018 | json5: 1.0.2
3019 | minimist: 1.2.8
3020 | strip-bom: 3.0.0
3021 |
3022 | tslib@2.6.3: {}
3023 |
3024 | type-check@0.4.0:
3025 | dependencies:
3026 | prelude-ls: 1.2.1
3027 |
3028 | type-fest@0.20.2: {}
3029 |
3030 | typed-array-buffer@1.0.2:
3031 | dependencies:
3032 | call-bind: 1.0.7
3033 | es-errors: 1.3.0
3034 | is-typed-array: 1.1.13
3035 |
3036 | typed-array-byte-length@1.0.1:
3037 | dependencies:
3038 | call-bind: 1.0.7
3039 | for-each: 0.3.3
3040 | gopd: 1.0.1
3041 | has-proto: 1.0.3
3042 | is-typed-array: 1.1.13
3043 |
3044 | typed-array-byte-offset@1.0.2:
3045 | dependencies:
3046 | available-typed-arrays: 1.0.7
3047 | call-bind: 1.0.7
3048 | for-each: 0.3.3
3049 | gopd: 1.0.1
3050 | has-proto: 1.0.3
3051 | is-typed-array: 1.1.13
3052 |
3053 | typed-array-length@1.0.6:
3054 | dependencies:
3055 | call-bind: 1.0.7
3056 | for-each: 0.3.3
3057 | gopd: 1.0.1
3058 | has-proto: 1.0.3
3059 | is-typed-array: 1.1.13
3060 | possible-typed-array-names: 1.0.0
3061 |
3062 | typescript@4.9.5: {}
3063 |
3064 | typescript@5.5.4: {}
3065 |
3066 | unbox-primitive@1.0.2:
3067 | dependencies:
3068 | call-bind: 1.0.7
3069 | has-bigints: 1.0.2
3070 | has-symbols: 1.0.3
3071 | which-boxed-primitive: 1.0.2
3072 |
3073 | undici-types@5.26.5: {}
3074 |
3075 | universalify@2.0.1: {}
3076 |
3077 | uri-js@4.4.1:
3078 | dependencies:
3079 | punycode: 2.3.1
3080 |
3081 | vite-plugin-compression@0.5.1(vite@5.3.4(@types/node@20.14.12)):
3082 | dependencies:
3083 | chalk: 4.1.2
3084 | debug: 4.3.6
3085 | fs-extra: 10.1.0
3086 | vite: 5.3.4(@types/node@20.14.12)
3087 | transitivePeerDependencies:
3088 | - supports-color
3089 |
3090 | vite@5.3.4(@types/node@20.14.12):
3091 | dependencies:
3092 | esbuild: 0.21.5
3093 | postcss: 8.4.40
3094 | rollup: 4.19.1
3095 | optionalDependencies:
3096 | '@types/node': 20.14.12
3097 | fsevents: 2.3.3
3098 |
3099 | which-boxed-primitive@1.0.2:
3100 | dependencies:
3101 | is-bigint: 1.0.4
3102 | is-boolean-object: 1.1.2
3103 | is-number-object: 1.0.7
3104 | is-string: 1.0.7
3105 | is-symbol: 1.0.4
3106 |
3107 | which-typed-array@1.1.15:
3108 | dependencies:
3109 | available-typed-arrays: 1.0.7
3110 | call-bind: 1.0.7
3111 | for-each: 0.3.3
3112 | gopd: 1.0.1
3113 | has-tostringtag: 1.0.2
3114 |
3115 | which@2.0.2:
3116 | dependencies:
3117 | isexe: 2.0.0
3118 |
3119 | word-wrap@1.2.5: {}
3120 |
3121 | wrap-ansi@9.0.0:
3122 | dependencies:
3123 | ansi-styles: 6.2.1
3124 | string-width: 7.2.0
3125 | strip-ansi: 7.1.0
3126 |
3127 | wrappy@1.0.2: {}
3128 |
3129 | yaml@2.4.5: {}
3130 |
3131 | yocto-queue@0.1.0: {}
3132 |
--------------------------------------------------------------------------------