diff --git a/.claude/settings.json b/.claude/settings.json
index 3568f07b..fb969d03 100644
--- a/.claude/settings.json
+++ b/.claude/settings.json
@@ -8,7 +8,7 @@
"Bash(yarn prettier *)",
"Bash(npx tsc --noEmit *)",
"Bash(npx eslint *)",
- "Bash(npx rollup -c *)",
+ "Bash(npx vite build *)",
"Read(~/.claude/projects/**)"
]
}
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 89bc094a..48f49c17 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -11,10 +11,13 @@
"workspaceFolder": "${localWorkspaceFolder}",
"initializeCommand": [".devcontainer/scripts/devcontainer_initialize.sh"],
"postCreateCommand": ["yarn", "install"],
+ "postAttachCommand": {
+ "preview": "yarn build && yarn preview"
+ },
"forwardPorts": [10001, "homeassistant:8123", "frigate:5000"],
"portsAttributes": {
"10001": {
- "label": "Rollup",
+ "label": "Vite",
"onAutoForward": "silent"
},
"homeassistant:8123": {
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7168ffe1..3b9b5fcc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,8 +12,8 @@ on:
workflow_dispatch:
jobs:
- check:
- name: Check
+ check-code:
+ name: Check / Code
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -37,7 +37,25 @@ jobs:
- name: Check formatting
run: yarn run format-check
- test:
+ # Validates the repository's own metadata, which needs neither the card built
+ # nor Node installed.
+ check-hacs:
+ name: Check / HACS
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v7
+
+ - name: HACS validation
+ uses: 'hacs/action@22.5.0'
+ with:
+ category: 'plugin'
+
+ # Don't attempt to load into HACS (as it loads the release, not the
+ # build).
+ ignore: 'hacs'
+
+ test-unit:
name: Test / Unit
runs-on: ubuntu-latest
steps:
@@ -53,7 +71,7 @@ jobs:
- name: Test & Coverage
run: yarn run coverage
- browser-test:
+ test-browser:
name: Test / Browser / ${{ matrix.name }}
runs-on: ubuntu-latest
@@ -107,6 +125,64 @@ jobs:
path: .vitest/
if-no-files-found: ignore
+ test-dist:
+ name: Test / Dist / ${{ matrix.name }}
+
+ runs-on: ubuntu-latest
+
+ # Use Playwright's own image to avoid having to (slowly) install browsers
+ # and dependencies. The tag has to name the `playwright` version in
+ # package.json .
+ container:
+ image: mcr.microsoft.com/playwright:v1.62.0-noble
+
+ # As the image's own user rather than root, which Firefox refuses to run
+ # as when the home directory belongs to somebody else.
+ #
+ # See https://playwright.dev/docs/ci#via-containers .
+ options: --user 1001
+
+ strategy:
+ # One browser failing does not invalidate the others.
+ fail-fast: false
+ matrix:
+ # `name` is only how the browser is written for a human: it titles the
+ # job, while `browser` is the name Playwright knows it by.
+ include:
+ - browser: chromium
+ name: Chromium
+ - browser: firefox
+ name: Firefox
+ - browser: webkit
+ name: WebKit
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v7
+
+ - name: Setup Node and Yarn
+ uses: volta-cli/action@v5
+
+ - name: Install dependencies
+ run: yarn install --immutable
+
+ # These tests read a build rather than making one.
+ - name: Build
+ run: yarn run build
+
+ - name: Test the built card
+ run: yarn run test:dist
+ env:
+ VITEST_BROWSER: ${{ matrix.browser }}
+
+ - name: Upload failures
+ if: failure()
+ uses: actions/upload-artifact@v6
+ with:
+ name: dist-test-failures-${{ matrix.browser }}
+ path: .vitest/
+ if-no-files-found: ignore
+
build:
name: Build
runs-on: ubuntu-latest
@@ -123,15 +199,6 @@ jobs:
- name: Build
run: yarn run build
- - name: HACS build validation
- uses: 'hacs/action@22.5.0'
- with:
- category: 'plugin'
-
- # Don't attempt to load into HACS (as it loads the release, not the
- # build).
- ignore: 'hacs'
-
- name: Upload javascript
uses: actions/upload-artifact@v7
with:
diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml
index 06d502aa..14be5950 100644
--- a/.github/workflows/semantic-release.yml
+++ b/.github/workflows/semantic-release.yml
@@ -30,7 +30,6 @@ jobs:
outputs:
new-release-published: ${{ steps.get-next-version.outputs.new-release-published }}
new-release-version: ${{ steps.get-next-version.outputs.new-release-version }}
- new-release-git-tag: ${{ steps.get-next-version.outputs.new-release-git-tag }}
release:
runs-on: ubuntu-latest
@@ -46,7 +45,6 @@ jobs:
- run: yarn run build
env:
RELEASE_VERSION: ${{ needs.get-next-version.outputs.new-release-version }}
- RELEASE_TAG: ${{ needs.get-next-version.outputs.new-release-git-tag }}
- uses: thedoctor0/zip-release@0.7.6
with:
type: zip
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 1d42b6e6..5f647d1a 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -7,7 +7,7 @@
"name": "Launch Chrome against Home Assistant",
"url": "http://localhost:8123",
"webRoot": "${workspaceFolder}/dist",
- "preLaunchTask": "Rollup",
+ "preLaunchTask": "Vite",
"resolveSourceMapLocations": ["http://localhost:1000/**"]
}
]
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 8e49fdbe..1ae6213e 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -2,7 +2,7 @@
"version": "2.0.0",
"tasks": [
{
- "label": "Rollup",
+ "label": "Vite",
"type": "shell",
"command": "yarn",
"args": ["start"],
@@ -17,8 +17,8 @@
],
"background": {
"activeOnStart": true,
- "beginsPattern": "^bundles",
- "endsPattern": "^created"
+ "beginsPattern": "^build started",
+ "endsPattern": "^built in"
}
},
"isBackground": true,
diff --git a/.yarn/patches/README.md b/.yarn/patches/README.md
deleted file mode 100644
index 2d835449..00000000
--- a/.yarn/patches/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Patches
-
-## `sass`
-
-`sass` is patched to avoid printing out a noisy deprecation notice on every
-build. `sass` is imported by `rollup-plugin-styler`, in a way that triggers this
-message. The patch simply prevents this console spam.
diff --git a/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch b/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch
deleted file mode 100644
index fe873bfd..00000000
--- a/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/sass.node.mjs b/sass.node.mjs
-index f59a3d8987162a3cbc9787c34f67186fb0f09186..b154f46118ccc03989b9a1c11309954c85515539 100644
---- a/sass.node.mjs
-+++ b/sass.node.mjs
-@@ -40,7 +40,7 @@ export const NodePackageImporter = cjs.NodePackageImporter;
- export const deprecations = cjs.deprecations;
- export const Version = cjs.Version;
-
--let printedDefaultExportDeprecation = false;
-+let printedDefaultExportDeprecation = true;
- function defaultExportDeprecation() {
- if (printedDefaultExportDeprecation) return;
- printedDefaultExportDeprecation = true;
diff --git a/INSTRUCTIONS.md b/INSTRUCTIONS.md
index 5a6f617c..af719d50 100644
--- a/INSTRUCTIONS.md
+++ b/INSTRUCTIONS.md
@@ -2,7 +2,7 @@
## Stack & Workflow
-TypeScript (strict), Lit v3, Zod, Vitest, Rollup, Yarn.
+TypeScript (strict), Lit v3, Zod, Vitest, Vite, Yarn.
Commands: `yarn install`, `yarn run build`, `yarn run test`, `yarn run coverage`, `yarn run format`, `yarn run lint`, `yarn run prune`, `yarn run docs-check-links`.
diff --git a/docs/developing.md b/docs/developing.md
index 3fa71a93..d131af61 100644
--- a/docs/developing.md
+++ b/docs/developing.md
@@ -24,6 +24,16 @@ Resultant build entry file will be in `dist/advanced-camera-card.js`. This could
installed via the [manual installation
instructions](advanced-installation.md?id=manual-installation).
+To rebuild as the source changes:
+
+```sh
+$ yarn start
+```
+
+This writes to `dist/` just like a normal build so that Home Assistant reading
+the card from a path on disk picks each rebuild up. To have Home Assistant read
+from a URL instead, use `yarn preview` which serves `dist/` on port 10001.
+
## Releasing
### Release Philosophy
diff --git a/package.json b/package.json
index 24e0f3b0..58917e8c 100644
--- a/package.json
+++ b/package.json
@@ -55,13 +55,6 @@
"@eslint/eslintrc": "^3.3.6",
"@eslint/js": "^9.24.0",
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
- "@rollup/plugin-commonjs": "^26.0.1",
- "@rollup/plugin-image": "^3.0.3",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
- "@rollup/plugin-replace": "^5.0.7",
- "@rollup/plugin-terser": "^0.4.4",
- "@rollup/plugin-typescript": "^11.1.6",
"@semantic-release/github": "^10.3.3",
"@types/js-yaml": "^4",
"@types/lodash-es": "^4.17.12",
@@ -80,15 +73,13 @@
"msw": "^2.15.0",
"playwright": "1.62.0",
"prettier": "^3.3.2",
- "rollup": "^3.29.4",
- "rollup-plugin-serve": "^1.1.1",
- "rollup-plugin-styler": "^1.8.0",
"rollup-plugin-visualizer": "^5.12.0",
- "sass": "patch:sass@npm%3A1.77.4#~/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch",
+ "sass-embedded": "^1.100.0",
"semantic-release": "^24.1.1",
"semantic-release-export-data": "^1.1.0",
"type-fest": "^4.41.0",
"typescript": "^5.8.3",
+ "vite": "^8.1.5",
"vitest": "^4.1.10",
"vitest-mock-extended": "^5.1.0"
},
@@ -177,9 +168,10 @@
]
},
"scripts": {
- "start": "rollup -c --watch",
+ "start": "vite build --watch --mode development",
+ "preview": "vite preview",
"deployment-update": "./scripts/deployment-update-symlink.sh",
- "build": "yarn run lint && yarn run rollup",
+ "build": "vite build",
"docs": "docsify serve ./docs",
"docs-check-links": "docker run --init --rm -v \"$(pwd):/input\" -w /input lycheeverse/lychee --config lychee.toml \"./docs/\"",
"docs-update-images": "./scripts/docs-update-images.sh",
@@ -189,7 +181,6 @@
"typecheck": "tsc --noEmit -p tsconfig.json",
"format": "prettier --write .",
"format-check": "prettier --check .",
- "rollup": "rollup -c",
"prune": "knip",
"test": "vitest run",
"test:browser": "vitest run --config vitest.browser.config.ts",
diff --git a/rollup.config.js b/rollup.config.js
deleted file mode 100644
index adf789fd..00000000
--- a/rollup.config.js
+++ /dev/null
@@ -1,141 +0,0 @@
-import commonjs from '@rollup/plugin-commonjs';
-import image from '@rollup/plugin-image';
-import json from '@rollup/plugin-json';
-import { nodeResolve } from '@rollup/plugin-node-resolve';
-import replace from '@rollup/plugin-replace';
-import terser from '@rollup/plugin-terser';
-import typescript from '@rollup/plugin-typescript';
-import serve from 'rollup-plugin-serve';
-import styles from 'rollup-plugin-styler';
-import { visualizer } from 'rollup-plugin-visualizer';
-
-import { getBuildDefines } from './scripts/build-defines.js';
-import { cleanDist } from './scripts/clean-dist-plugin.js';
-import { svgPath } from './scripts/svg-path-plugin.js';
-
-const watch = process.env.ROLLUP_WATCH === 'true' || process.env.ROLLUP_WATCH === '1';
-const dev = watch || process.env.DEV === 'true' || process.env.DEV === '1';
-
-// Opt-in dev server: `rollup -c --watch --environment SERVE`. Off by default
-// for deployments that read output from the filesystem.
-const serveEnabled = process.env.SERVE === 'true' || process.env.SERVE === '1';
-
-/**
- * @type {import('rollup-plugin-serve').ServeOptions}
- */
-const serveopts = {
- contentBase: ['./dist'],
- host: '0.0.0.0',
- port: 10001,
- allowCrossOrigin: true,
- headers: {
- 'Access-Control-Allow-Origin': '*',
- },
-};
-
-/**
- * @type {import('rollup').RollupOptions['plugins']}
- */
-const plugins = [
- cleanDist(),
- styles({
- modules: false,
- // Behavior of inject mode, without actually injecting style
- // into
.
- mode: ['inject', () => undefined],
- sass: {
- includePaths: ['./node_modules/'],
- },
- }),
- svgPath(),
- image({ exclude: '**/*.svg' }),
- nodeResolve({
- browser: true,
- }),
- commonjs({
- include: 'node_modules/**',
- sourceMap: false,
- }),
- typescript({
- sourceMap: dev,
- inlineSources: dev,
- exclude: ['dist/**', 'tests/**/*.test.ts'],
- }),
- json(),
- replace({
- preventAssignment: true,
- values: {
- 'process.env.NODE_ENV': JSON.stringify(dev ? 'development' : 'production'),
- ...getBuildDefines({ dev, releaseVersion: process.env.RELEASE_VERSION }),
- },
- }),
- serveEnabled && serve(serveopts),
- !dev && terser(),
- visualizer({
- filename: 'visualizations/treemap.html',
- template: 'treemap',
- }),
-];
-
-const outputEntryTemplate = {
- entryFileNames: 'advanced-camera-card.js',
- dir: 'dist',
- chunkFileNames: (chunk) => {
- // Add "lang-" to the front of the language chunk names for readability.
- if (
- chunk.facadeModuleId &&
- chunk.facadeModuleId.match(/localize\/languages\/.*\.json/)
- ) {
- return 'lang-[name]-[hash].js';
- }
- if (chunk.facadeModuleId && chunk.facadeModuleId.match(/ha-nunjucks/)) {
- return 'templates-[hash].js';
- }
- return '[name]-[hash].js';
- },
- format: 'es',
- sourcemap: dev,
-};
-
-const CIRCULAR_DEPENDENCY_IGNORE_REGEXP = /(ha-nunjucks|ts-py-datetime|zod\/v4)/;
-
-/**
- * @type {import('rollup').RollupOptions}
- */
-const config = {
- input: 'src/card.ts',
- // Specifically want a facade created as HACS will attach a hacstag
- // queryparameter to the resource. Without a facade when chunks re-import the
- // card chunk, they'll refer to a 'different' copy of the card chunk without
- // the hacstag, causing a re-download of the same content and functionality
- // problems.
- preserveEntrySignatures: 'strict',
- output: [
- outputEntryTemplate,
-
- // Continue to include the old file name for backwards compatibility.
- {
- ...outputEntryTemplate,
- entryFileNames: 'frigate-hass-card.js',
- },
- ],
- plugins: plugins,
- // These files use `this` at the toplevel, which causes rollup warning spam on
- // build: `this` has been rewritten to `undefined`.
- moduleContext: {
- './node_modules/@formatjs/intl-utils/lib/src/diff.js': 'window',
- './node_modules/@formatjs/intl-utils/lib/src/resolve-locale.js': 'window',
- },
- // Ignore circular dependencies from underlying libraries.
- onwarn: (warning, defaultHandler) => {
- if (
- warning.code === 'CIRCULAR_DEPENDENCY' &&
- warning.ids.some((id) => id.match(CIRCULAR_DEPENDENCY_IGNORE_REGEXP))
- ) {
- return;
- }
- defaultHandler(warning);
- },
-};
-
-export default config;
diff --git a/scripts/clean-dist-plugin.js b/scripts/clean-dist-plugin.js
index 87a5e3f8..ca6757a9 100644
--- a/scripts/clean-dist-plugin.js
+++ b/scripts/clean-dist-plugin.js
@@ -1,32 +1,36 @@
-import { existsSync, readdirSync, rmSync } from 'node:fs';
+import { readdirSync, rmSync } from 'node:fs';
+import path from 'node:path';
/**
- * Rollup plugin: deletes prior build artifacts from `dist/` (which otherwise
- * accumulate stale hashed chunks that can be served in place of fresh output).
- * Deletes only top-level build artifacts by extension (no recursion), so
- * anything unexpected in `dist/` survives. Cleans once per process: watch mode
- * cleans at startup, not on every incremental rebuild.
+ * Vite plugin: removes build artifacts an earlier build left behind, which
+ * otherwise accumulate indefinitely as the hashed names change.
*
- * @type {() => import('rollup').Plugin}
+ * Runs once the new output is on disk, and keeps whatever this build just
+ * wrote, rather than emptying the directory beforehand. This ensures the card
+ * is never briefly missing from a directory Home Assistant is potentially
+ * serving out of. Only the build's own kind of file is removed, by extension
+ * and without recursing, so anything else there survives.
+ *
+ * @type {() => import('vite').Plugin}
*/
-export const cleanDist = () => {
- let cleaned = false;
- return {
- name: 'clean-dist',
- buildStart() {
- if (cleaned) {
- return;
+export const cleanDist = () => ({
+ name: 'clean-dist',
+
+ writeBundle(options, bundle) {
+ if (!options.dir) {
+ return;
+ }
+
+ const written = new Set(Object.keys(bundle));
+
+ for (const entry of readdirSync(options.dir, { withFileTypes: true })) {
+ if (
+ entry.isFile() &&
+ /\.js(\.map)?$/.test(entry.name) &&
+ !written.has(entry.name)
+ ) {
+ rmSync(path.resolve(options.dir, entry.name));
}
- cleaned = true;
- const dist = new URL('../dist/', import.meta.url);
- if (!existsSync(dist)) {
- return;
- }
- for (const entry of readdirSync(dist, { withFileTypes: true })) {
- if (entry.isFile() && /\.js(\.map)?$/.test(entry.name)) {
- rmSync(new URL(entry.name, dist));
- }
- }
- },
- };
-};
+ }
+ },
+});
diff --git a/scripts/facade-entry-plugin.js b/scripts/facade-entry-plugin.js
new file mode 100644
index 00000000..e5377968
--- /dev/null
+++ b/scripts/facade-entry-plugin.js
@@ -0,0 +1,57 @@
+/**
+ * Emits the files a dashboard resource can name, each a re-export of the hashed
+ * chunk holding the actual card.
+ *
+ * HACS registers the card as a dashboard resource with a `hacstag` query
+ * parameter on the URL, and the browser treats a different URL as a different
+ * file. Were a chunk to import the untagged name, the card would be fetched and
+ * run a second time, and defining its elements twice will throw an error.
+ * Keeping the card itself in a hashed chunk that nothing outside can name is
+ * what prevents that, and the check below is what keeps it true.
+ *
+ * @type {(options: { publicFileNames: string[] }) => import('vite').Plugin}
+ */
+export const facadeEntry = ({ publicFileNames }) => ({
+ name: 'facade-entry',
+
+ generateBundle(_options, bundle) {
+ const entries = Object.values(bundle).filter(
+ (item) => item.type === 'chunk' && item.isEntry,
+ );
+ if (entries.length !== 1) {
+ throw new Error(`Expected exactly one entry chunk, found ${entries.length}`);
+ }
+ const [entry] = entries;
+
+ // A public name already in the bundle means the card was emitted under it
+ // rather than into a hashed chunk, which is the arrangement this plugin
+ // exists to prevent.
+ const alreadyEmitted = publicFileNames.filter((name) => name in bundle);
+ if (alreadyEmitted.length) {
+ throw new Error(
+ `The build should have emitted these under hashed names: ${alreadyEmitted.join(', ')}`,
+ );
+ }
+
+ const offenders = Object.values(bundle).flatMap((item) =>
+ item.type === 'chunk'
+ ? [...item.imports, ...item.dynamicImports]
+ .filter((imported) => publicFileNames.includes(imported))
+ .map((imported) => `${item.fileName} -> ${imported}`)
+ : [],
+ );
+ if (offenders.length) {
+ throw new Error(
+ `Chunks should not import a public entry point: ${offenders.join(', ')}`,
+ );
+ }
+
+ for (const fileName of publicFileNames) {
+ this.emitFile({
+ type: 'asset',
+ fileName,
+ source: `export * from './${entry.fileName}';\n`,
+ });
+ }
+ },
+});
diff --git a/scripts/public-entries.ts b/scripts/public-entries.ts
new file mode 100644
index 00000000..85d410c7
--- /dev/null
+++ b/scripts/public-entries.ts
@@ -0,0 +1,13 @@
+/**
+ * The files a Home Assistant dashboard resource may list.
+ *
+ * Everything else the build emits is hashed, so this is the one name that has to
+ * stay put across releases.
+ */
+export const PUBLIC_ENTRY = 'advanced-camera-card.js';
+
+/**
+ * Both names a dashboard resource can name: the current one, and the one the
+ * card shipped under previously, kept so an existing resource keeps working.
+ */
+export const PUBLIC_ENTRIES = [PUBLIC_ENTRY, 'frigate-hass-card.js'];
diff --git a/scripts/scss-string-plugin.js b/scripts/scss-string-plugin.js
deleted file mode 100644
index 1552d03c..00000000
--- a/scripts/scss-string-plugin.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Vite plugin: `import style from './foo.scss'` gives the compiled CSS as a
- * string, which is what the source tree passes to Lit's `unsafeCSS`. Left
- * alone, Vite adds those styles to the page and the import returns nothing
- * useful. Appending Vite's own `?inline` asks for the text instead, compiled by
- * the same sass the build uses.
- *
- * The build's `rollup-plugin-styler` cannot be used here: Vite always handles
- * `.scss` itself, so it would take that plugin's JavaScript output and hand it
- * to sass, which rejects it.
- *
- * @type {() => import('vite').Plugin}
- */
-export const scssString = () => ({
- name: 'scss-string',
-
- // Vite: run before its builtin CSS handling.
- enforce: 'pre',
-
- async resolveId(source, importer, options) {
- if (!source.endsWith('.scss')) {
- return null;
- }
- return await this.resolve(`${source}?inline`, importer, options);
- },
-});
diff --git a/scripts/svg-path-plugin.js b/scripts/svg-path-plugin.js
index 614c16a7..ab7f629f 100644
--- a/scripts/svg-path-plugin.js
+++ b/scripts/svg-path-plugin.js
@@ -1,16 +1,16 @@
import { readFileSync } from 'node:fs';
/**
- * Rollup/Vite plugin: importing an SVG yields `{ path, viewBox }` extracted at
- * build time, the shape a Home Assistant custom iconset serves. The SVG must
- * be a single-path icon.
+ * Vite plugin: importing an SVG yields `{ path, viewBox }` extracted at build
+ * time, the shape a Home Assistant custom iconset serves. The SVG must be a
+ * single-path icon.
*
- * @type {() => import('rollup').Plugin}
+ * @type {() => import('vite').Plugin}
*/
export const svgPath = () => ({
name: 'svg-path',
- // Vite: run before its builtin asset handling.
+ // Run before Vite's builtin asset handling.
enforce: 'pre',
load(id) {
diff --git a/src/camera-manager/engine-factory.ts b/src/camera-manager/engine-factory.ts
index e1facd3d..633e18cc 100644
--- a/src/camera-manager/engine-factory.ts
+++ b/src/camera-manager/engine-factory.ts
@@ -8,6 +8,9 @@ import type { HomeAssistant } from '../ha/types';
import { RecordingSegmentsCache } from './cache';
import type { CameraManagerEngine } from './engine';
import { CameraNoEntityError } from './error';
+// Every other engine subclasses GenericCameraManagerEngine so it is loaded no
+// matter what -- no lazy loading is useful.
+import { GenericCameraManagerEngine } from './generic/engine-generic';
import { CameraManagerRequestCache, Engine, type CameraEventCallback } from './types';
import { getCameraEntityFromConfig } from './utils/camera-entity-from-config';
@@ -36,7 +39,6 @@ export class CameraManagerEngineFactory {
let cameraManagerEngine: CameraManagerEngine;
switch (engine) {
case Engine.Generic:
- const { GenericCameraManagerEngine } = await import('./generic/engine-generic');
cameraManagerEngine = new GenericCameraManagerEngine(
options.hassManager,
this._entityRegistryManager,
diff --git a/src/card.ts b/src/card.ts
index e1eca4f5..7190c5d3 100644
--- a/src/card.ts
+++ b/src/card.ts
@@ -62,7 +62,7 @@ import { REPO_URL } from './const.js';
import { registerCustomIconset } from './ha/custom-icons.js';
import type { HomeAssistant, LovelaceCardEditor } from './ha/types.js';
import { localize } from './localize/localize.js';
-import cardStyle from './scss/card.scss';
+import cardStyle from './scss/card.scss?inline';
import type { MediaLoadedInfoEventDetail } from './types.js';
import { hasAction } from './utils/action.js';
import { getReleaseVersion } from './utils/build-info.js';
diff --git a/src/components/call-controls.ts b/src/components/call-controls.ts
index 51e94be0..be12071b 100644
--- a/src/components/call-controls.ts
+++ b/src/components/call-controls.ts
@@ -13,7 +13,7 @@ import { dispatchActionExecutionRequest } from '../card-controller/actions/utils
import type { MicrophoneState } from '../card-controller/types.js';
import type { ActionConfig } from '../config/schema/actions/types.js';
import { localize } from '../localize/localize.js';
-import callControlsStyle from '../scss/call-controls.scss';
+import callControlsStyle from '../scss/call-controls.scss?inline';
import {
createCallAnswerAction,
createCallEndAction,
diff --git a/src/components/carousel.ts b/src/components/carousel.ts
index c41539b6..b93bd316 100644
--- a/src/components/carousel.ts
+++ b/src/components/carousel.ts
@@ -10,7 +10,7 @@ import { customElement, property } from 'lit/decorators.js';
import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import type { TransitionEffect } from '../config/schema/common/transition-effect';
-import carouselStyle from '../scss/carousel.scss';
+import carouselStyle from '../scss/carousel.scss?inline';
import {
CarouselController,
type CarouselDirection,
diff --git a/src/components/date-picker.ts b/src/components/date-picker.ts
index b667292d..b003c0e1 100644
--- a/src/components/date-picker.ts
+++ b/src/components/date-picker.ts
@@ -9,7 +9,7 @@ import { customElement, property } from 'lit/decorators.js';
import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { localize } from '../localize/localize';
-import datePickerStyle from '../scss/date-picker.scss';
+import datePickerStyle from '../scss/date-picker.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../utils/action';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event';
diff --git a/src/components/diagnostics.ts b/src/components/diagnostics.ts
index fe22af75..639abadf 100644
--- a/src/components/diagnostics.ts
+++ b/src/components/diagnostics.ts
@@ -13,7 +13,7 @@ import type { RawAdvancedCameraCardConfig } from '../config/types';
import type { DeviceRegistryManager } from '../ha/registry/device';
import type { HomeAssistant } from '../ha/types';
import { localize } from '../localize/localize';
-import basicBlockStyle from '../scss/basic-block.scss';
+import basicBlockStyle from '../scss/basic-block.scss?inline';
import { getDiagnostics } from '../utils/diagnostics';
import { renderNotificationBlockFromText } from './notification/block';
diff --git a/src/components/drawer.ts b/src/components/drawer.ts
index 638e61ad..89d73dac 100644
--- a/src/components/drawer.ts
+++ b/src/components/drawer.ts
@@ -13,8 +13,8 @@ import 'side-drawer';
import type { SideDrawer } from 'side-drawer';
-import drawerInjectStyle from '../scss/drawer-inject.scss';
-import drawerStyle from '../scss/drawer.scss';
+import drawerInjectStyle from '../scss/drawer-inject.scss?inline';
+import drawerStyle from '../scss/drawer.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../utils/action.js';
import {
contentsChanged,
diff --git a/src/components/editor/cameras.ts b/src/components/editor/cameras.ts
index d406ac8c..ab0cb440 100644
--- a/src/components/editor/cameras.ts
+++ b/src/components/editor/cameras.ts
@@ -20,7 +20,7 @@ import { CONF_CAMERAS } from '../../config/const';
import type { EditorMode } from '../../config/schema/editor';
import type { HomeAssistant } from '../../ha/types';
import { localize } from '../../localize/localize';
-import editorExpanderBodyStyle from '../../scss/editor-expander-body.scss';
+import editorExpanderBodyStyle from '../../scss/editor-expander-body.scss?inline';
import { renderDocumentation } from './doc-link';
import { renderForms } from './form';
diff --git a/src/components/editor/doc-link.ts b/src/components/editor/doc-link.ts
index c6487fbe..ad787f82 100644
--- a/src/components/editor/doc-link.ts
+++ b/src/components/editor/doc-link.ts
@@ -10,7 +10,7 @@ import { customElement, property } from 'lit/decorators.js';
import { getDocURL } from '../../components-lib/editor/doc-links';
import type { ConfigPath } from '../../components-lib/editor/types';
import { localize } from '../../localize/localize';
-import editorDocLinkStyle from '../../scss/editor-doc-link.scss';
+import editorDocLinkStyle from '../../scss/editor-doc-link.scss?inline';
// A self-styled documentation link row. Carries its own styles so it renders
// correctly when passed into the shadow DOM of Home Assistant elements (e.g. as
diff --git a/src/components/editor/folders.ts b/src/components/editor/folders.ts
index f39c8c5f..ed7d386e 100644
--- a/src/components/editor/folders.ts
+++ b/src/components/editor/folders.ts
@@ -15,7 +15,7 @@ import type { ConfigPath } from '../../components-lib/editor/types';
import { CONF_FOLDERS } from '../../config/const';
import type { HomeAssistant } from '../../ha/types';
import { localize } from '../../localize/localize';
-import editorExpanderBodyStyle from '../../scss/editor-expander-body.scss';
+import editorExpanderBodyStyle from '../../scss/editor-expander-body.scss?inline';
import { renderDocumentation } from './doc-link';
import { renderForms } from './form';
diff --git a/src/components/editor/keyboard-shortcuts.ts b/src/components/editor/keyboard-shortcuts.ts
index af2459f5..494c3015 100644
--- a/src/components/editor/keyboard-shortcuts.ts
+++ b/src/components/editor/keyboard-shortcuts.ts
@@ -14,7 +14,7 @@ import { CONF_VIEW_KEYBOARD_SHORTCUTS } from '../../config/const.js';
import type { KeyboardShortcut } from '../../config/schema/view.js';
import type { HomeAssistant } from '../../ha/types.js';
import { localize } from '../../localize/localize.js';
-import editorKeyboardShortcutsStyle from '../../scss/editor-keyboard-shortcuts.scss';
+import editorKeyboardShortcutsStyle from '../../scss/editor-keyboard-shortcuts.scss?inline';
import { renderDocumentation } from './doc-link.js';
import { renderForms } from './form.js';
diff --git a/src/components/editor/list.ts b/src/components/editor/list.ts
index 0debd902..90b097ee 100644
--- a/src/components/editor/list.ts
+++ b/src/components/editor/list.ts
@@ -9,7 +9,7 @@ import {
import { customElement, property } from 'lit/decorators.js';
import { localize } from '../../localize/localize';
-import editorListStyle from '../../scss/editor-list.scss';
+import editorListStyle from '../../scss/editor-list.scss?inline';
import { fireAdvancedCameraCardEvent } from '../../utils/fire-advanced-camera-card-event';
import './../icon';
diff --git a/src/components/editor/page.ts b/src/components/editor/page.ts
index 04614154..9c817d71 100644
--- a/src/components/editor/page.ts
+++ b/src/components/editor/page.ts
@@ -9,7 +9,7 @@ import {
import { customElement, property } from 'lit/decorators.js';
import { localize } from '../../localize/localize';
-import editorPageStyle from '../../scss/editor-page.scss';
+import editorPageStyle from '../../scss/editor-page.scss?inline';
import { fireAdvancedCameraCardEvent } from '../../utils/fire-advanced-camera-card-event';
// The editor for one item of a list, shown in place of the list itself: a
diff --git a/src/components/editor/section.ts b/src/components/editor/section.ts
index cc906d9e..e1078a91 100644
--- a/src/components/editor/section.ts
+++ b/src/components/editor/section.ts
@@ -16,7 +16,7 @@ import type { FormRequest } from '../../components-lib/editor/schema/registry';
import { SectionController } from '../../components-lib/editor/section-controller';
import type { ConfigPath } from '../../components-lib/editor/types';
import type { HomeAssistant } from '../../ha/types';
-import editorSectionStyle from '../../scss/editor-section.scss';
+import editorSectionStyle from '../../scss/editor-section.scss?inline';
import { renderDocumentation } from './doc-link';
import { renderForms } from './form';
diff --git a/src/components/effects/base.ts b/src/components/effects/base.ts
index cfbc55f5..331ee5a4 100644
--- a/src/components/effects/base.ts
+++ b/src/components/effects/base.ts
@@ -1,7 +1,7 @@
import { LitElement, unsafeCSS, type CSSResultGroup, type PropertyValues } from 'lit';
import { property } from 'lit/decorators.js';
-import effectBaseStyle from '../../scss/effect-base.scss';
+import effectBaseStyle from '../../scss/effect-base.scss?inline';
import { forceReflow } from '../../utils/basic';
export abstract class BaseEffectComponent extends LitElement {
diff --git a/src/components/effects/check.ts b/src/components/effects/check.ts
index 11ceea66..0eb20b1f 100644
--- a/src/components/effects/check.ts
+++ b/src/components/effects/check.ts
@@ -2,7 +2,7 @@ import { html, unsafeCSS, type CSSResultGroup, type TemplateResult } from 'lit';
import { customElement } from 'lit/decorators.js';
import checkCircleIcon from '../../images/check-circle.svg';
-import checkStyle from '../../scss/check.scss';
+import checkStyle from '../../scss/check.scss?inline';
import { BaseEffectComponent } from './base';
@customElement('advanced-camera-card-effect-check')
diff --git a/src/components/effects/effects.ts b/src/components/effects/effects.ts
index 19989df4..44165081 100644
--- a/src/components/effects/effects.ts
+++ b/src/components/effects/effects.ts
@@ -2,7 +2,7 @@ import { LitElement, unsafeCSS, type PropertyValues } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import type { EffectsManager } from '../../card-controller/effects/effects-manager';
-import effectsStyle from '../../scss/effects.scss';
+import effectsStyle from '../../scss/effects.scss?inline';
@customElement('advanced-camera-card-effects')
export class AdvancedCameraCardEffects extends LitElement {
diff --git a/src/components/effects/firework-burst.ts b/src/components/effects/firework-burst.ts
index 630decb0..a429ef57 100644
--- a/src/components/effects/firework-burst.ts
+++ b/src/components/effects/firework-burst.ts
@@ -8,7 +8,7 @@ import {
import { customElement, property } from 'lit/decorators.js';
import { repeat } from 'lit/directives/repeat.js';
-import fireworkBurstStyle from '../../scss/firework-burst.scss';
+import fireworkBurstStyle from '../../scss/firework-burst.scss?inline';
import './firework-particle';
diff --git a/src/components/effects/firework-particle.ts b/src/components/effects/firework-particle.ts
index 947146a6..17311c09 100644
--- a/src/components/effects/firework-particle.ts
+++ b/src/components/effects/firework-particle.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import fireworkParticleStyle from '../../scss/firework-particle.scss';
+import fireworkParticleStyle from '../../scss/firework-particle.scss?inline';
@customElement('advanced-camera-card-firework-particle')
export class AdvancedCameraCardFireworkParticle extends LitElement {
diff --git a/src/components/effects/ghost.ts b/src/components/effects/ghost.ts
index 197e09b2..fc0c10c4 100644
--- a/src/components/effects/ghost.ts
+++ b/src/components/effects/ghost.ts
@@ -1,7 +1,7 @@
import { html, unsafeCSS, type CSSResultGroup, type TemplateResult } from 'lit';
import { customElement } from 'lit/decorators.js';
-import ghostStyle from '../../scss/ghost.scss';
+import ghostStyle from '../../scss/ghost.scss?inline';
import { BaseEffectComponent } from './base';
@customElement('advanced-camera-card-effect-ghost')
diff --git a/src/components/effects/heart.ts b/src/components/effects/heart.ts
index 6d89b8b4..811cf9ce 100644
--- a/src/components/effects/heart.ts
+++ b/src/components/effects/heart.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import heartStyle from '../../scss/heart.scss';
+import heartStyle from '../../scss/heart.scss?inline';
@customElement('advanced-camera-card-heart')
export class AdvancedCameraCardHeart extends LitElement {
diff --git a/src/components/effects/shamrock.ts b/src/components/effects/shamrock.ts
index 80206936..55b9d807 100644
--- a/src/components/effects/shamrock.ts
+++ b/src/components/effects/shamrock.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import shamrockStyle from '../../scss/shamrock.scss';
+import shamrockStyle from '../../scss/shamrock.scss?inline';
@customElement('advanced-camera-card-shamrock')
export class AdvancedCameraCardShamrock extends LitElement {
diff --git a/src/components/effects/snowflake.ts b/src/components/effects/snowflake.ts
index 64c067de..782a84bb 100644
--- a/src/components/effects/snowflake.ts
+++ b/src/components/effects/snowflake.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import snowflakeStyle from '../../scss/snowflake.scss';
+import snowflakeStyle from '../../scss/snowflake.scss?inline';
@customElement('advanced-camera-card-snowflake')
export class AdvancedCameraCardSnowflake extends LitElement {
diff --git a/src/components/elements.ts b/src/components/elements.ts
index f670963b..5b484532 100644
--- a/src/components/elements.ts
+++ b/src/components/elements.ts
@@ -32,7 +32,7 @@ import type {
} from '../config/schema/elements/types.js';
import type { HomeAssistant } from '../ha/types.js';
import { localize } from '../localize/localize.js';
-import elementsStyle from '../scss/elements.scss';
+import elementsStyle from '../scss/elements.scss?inline';
import { AdvancedCameraCardError } from '../types.js';
import { errorToConsole } from '../utils/basic.js';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event.js';
diff --git a/src/components/gallery/gallery-core.ts b/src/components/gallery/gallery-core.ts
index dcca96b0..cf3f2363 100644
--- a/src/components/gallery/gallery-core.ts
+++ b/src/components/gallery/gallery-core.ts
@@ -16,7 +16,7 @@ import {
import { THUMBNAIL_WIDTH_DEFAULT } from '../../config/schema/common/controls/thumbnails.js';
import type { CardWideConfig } from '../../config/schema/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import galleryCoreStyle from '../../scss/gallery-core.scss';
+import galleryCoreStyle from '../../scss/gallery-core.scss?inline';
import '../progress-indicator.js';
diff --git a/src/components/gallery/gallery.ts b/src/components/gallery/gallery.ts
index df5250d9..8a128436 100644
--- a/src/components/gallery/gallery.ts
+++ b/src/components/gallery/gallery.ts
@@ -28,7 +28,7 @@ import type { MediaGalleryConfig } from '../../config/schema/media-gallery.js';
import type { CardWideConfig } from '../../config/schema/types.js';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../../const.js';
import type { HomeAssistant } from '../../ha/types.js';
-import galleryStyle from '../../scss/gallery.scss';
+import galleryStyle from '../../scss/gallery.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../../utils/action.js';
import { ViewItemClassifier } from '../../view/item-classifier.js';
import type { ViewFolder, ViewItem } from '../../view/item.js';
diff --git a/src/components/icon.ts b/src/components/icon.ts
index 733e202b..f8652f56 100644
--- a/src/components/icon.ts
+++ b/src/components/icon.ts
@@ -10,7 +10,7 @@ import { customElement, property } from 'lit/decorators.js';
import { IconController } from '../components-lib/icon-controller';
import type { InternalIcon } from '../config/schema/common/icon.js';
import type { HomeAssistant } from '../ha/types';
-import iconStyle from '../scss/icon.scss';
+import iconStyle from '../scss/icon.scss?inline';
import { contentsChanged } from '../utils/basic.js';
@customElement('advanced-camera-card-icon')
diff --git a/src/components/image-player.ts b/src/components/image-player.ts
index 2abf6f20..3e9fc410 100644
--- a/src/components/image-player.ts
+++ b/src/components/image-player.ts
@@ -11,7 +11,7 @@ import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { MediaLoadedInfoSourceController } from '../components-lib/media-loaded-info-source-controller.js';
import { ImageMediaPlayerController } from '../components-lib/media-player/image';
-import imagePlayerStyle from '../scss/image-player.scss';
+import imagePlayerStyle from '../scss/image-player.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/image-updating-player.ts b/src/components/image-updating-player.ts
index e0817a09..f63f1925 100644
--- a/src/components/image-updating-player.ts
+++ b/src/components/image-updating-player.ts
@@ -31,7 +31,7 @@ import { isHassDifferent } from '../ha/is-hass-different.js';
import type { HomeAssistant } from '../ha/types.js';
import defaultImage from '../images/iris-screensaver.jpg';
import { localize } from '../localize/localize.js';
-import imageUpdatingPlayerStyle from '../scss/image-updating-player.scss';
+import imageUpdatingPlayerStyle from '../scss/image-updating-player.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../types.js';
import { contentsChanged } from '../utils/basic.js';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event.js';
diff --git a/src/components/image.ts b/src/components/image.ts
index 089f7a70..b094481a 100644
--- a/src/components/image.ts
+++ b/src/components/image.ts
@@ -22,7 +22,7 @@ import {
import { type ImageViewConfig, type ImageViewProxyConfig } from '../config/schema/image';
import type { HomeAssistant } from '../ha/types';
import { localize } from '../localize/localize.js';
-import imageStyle from '../scss/image.scss';
+import imageStyle from '../scss/image.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/key-assigner.ts b/src/components/key-assigner.ts
index 765834fc..63ac7f44 100644
--- a/src/components/key-assigner.ts
+++ b/src/components/key-assigner.ts
@@ -11,7 +11,7 @@ import { customElement, property } from 'lit/decorators.js';
import { KeyAssignerController } from '../components-lib/key-assigner-controller';
import type { KeyboardShortcut } from '../config/schema/view';
import { localize } from '../localize/localize';
-import keyAssignerStyle from '../scss/key-assigner.scss';
+import keyAssignerStyle from '../scss/key-assigner.scss?inline';
import './icon';
diff --git a/src/components/live/carousel.ts b/src/components/live/carousel.ts
index d3c365af..ccc386ba 100644
--- a/src/components/live/carousel.ts
+++ b/src/components/live/carousel.ts
@@ -31,7 +31,7 @@ import type { TransitionEffect } from '../../config/schema/common/transition-eff
import type { LiveConfig } from '../../config/schema/live.js';
import { configDefaults, type CardWideConfig } from '../../config/schema/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import liveCarouselStyle from '../../scss/live-carousel.scss';
+import liveCarouselStyle from '../../scss/live-carousel.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../../utils/action.js';
import type { CarouselSelected } from '../../utils/embla/carousel-controller.js';
import { getTextDirection } from '../../utils/text-direction.js';
diff --git a/src/components/live/grid.ts b/src/components/live/grid.ts
index 5c924923..4194d7d7 100644
--- a/src/components/live/grid.ts
+++ b/src/components/live/grid.ts
@@ -18,7 +18,7 @@ import type { MediaGridSelected } from '../../components-lib/media-grid-controll
import type { LiveConfig } from '../../config/schema/live.js';
import type { CardWideConfig } from '../../config/schema/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import liveGridStyle from '../../scss/live-grid.scss';
+import liveGridStyle from '../../scss/live-grid.scss?inline';
import { contentsChanged } from '../../utils/basic.js';
import './carousel.js';
diff --git a/src/components/live/index.ts b/src/components/live/index.ts
index 3a117e8a..97a85431 100644
--- a/src/components/live/index.ts
+++ b/src/components/live/index.ts
@@ -21,7 +21,7 @@ import '../../components-lib/live/types.js';
import type { LiveConfig } from '../../config/schema/live.js';
import type { CardWideConfig } from '../../config/schema/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import basicBlockStyle from '../../scss/basic-block.scss';
+import basicBlockStyle from '../../scss/basic-block.scss?inline';
import { contentsChanged } from '../../utils/basic.js';
import './grid.js';
diff --git a/src/components/live/provider.ts b/src/components/live/provider.ts
index 2157b90a..bf7d4ad9 100644
--- a/src/components/live/provider.ts
+++ b/src/components/live/provider.ts
@@ -23,7 +23,7 @@ import type { LiveConfig } from '../../config/schema/live.js';
import type { CardWideConfig } from '../../config/schema/types.js';
import type { HomeAssistant } from '../../ha/types.js';
import { localize } from '../../localize/localize.js';
-import liveProviderStyle from '../../scss/live-provider.scss';
+import liveProviderStyle from '../../scss/live-provider.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/live/providers/go2rtc-experimental/index.ts b/src/components/live/providers/go2rtc-experimental/index.ts
index e6cb2b58..fb31042b 100644
--- a/src/components/live/providers/go2rtc-experimental/index.ts
+++ b/src/components/live/providers/go2rtc-experimental/index.ts
@@ -34,7 +34,7 @@ import type { MicrophoneConfig } from '../../../../config/schema/live.js';
import type { CardWideConfig } from '../../../../config/schema/types.js';
import type { HomeAssistant } from '../../../../ha/types.js';
import { localize } from '../../../../localize/localize.js';
-import liveGo2RTCExperimentalStyle from '../../../../scss/live-go2rtc-experimental.scss';
+import liveGo2RTCExperimentalStyle from '../../../../scss/live-go2rtc-experimental.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../../../../types.js';
import {
dispatchMediaPauseEvent,
diff --git a/src/components/live/providers/go2rtc/index.ts b/src/components/live/providers/go2rtc/index.ts
index 228b4ace..975da358 100644
--- a/src/components/live/providers/go2rtc/index.ts
+++ b/src/components/live/providers/go2rtc/index.ts
@@ -18,7 +18,7 @@ import {
import type { MicrophoneConfig } from '../../../../config/schema/live.js';
import type { HomeAssistant } from '../../../../ha/types.js';
import { localize } from '../../../../localize/localize.js';
-import liveGo2RTCStyle from '../../../../scss/live-go2rtc.scss';
+import liveGo2RTCStyle from '../../../../scss/live-go2rtc.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../../../../types.js';
import { renderMediaNotification } from '../../../notification/media.js';
import { VideoRTC } from './video-rtc.js';
diff --git a/src/components/live/providers/ha.ts b/src/components/live/providers/ha.ts
index 39708252..faf89d28 100644
--- a/src/components/live/providers/ha.ts
+++ b/src/components/live/providers/ha.ts
@@ -16,7 +16,7 @@ import '../../../patches/ha-camera-stream';
import '../../../patches/ha-hls-player.js';
import '../../../patches/ha-web-rtc-player.js';
-import liveHAStyle from '../../../scss/live-ha.scss';
+import liveHAStyle from '../../../scss/live-ha.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/live/providers/image.ts b/src/components/live/providers/image.ts
index 7867e5df..cbf1b906 100644
--- a/src/components/live/providers/image.ts
+++ b/src/components/live/providers/image.ts
@@ -12,7 +12,7 @@ import type { Camera } from '../../../camera-manager/camera.js';
import type { MediaUnavailableIssueReason } from '../../../card-controller/issues/issues/media-unavailable.js';
import { dispatchLiveErrorEvent } from '../../../components-lib/live/utils/dispatch-live-error.js';
import type { HomeAssistant } from '../../../ha/types';
-import basicBlockStyle from '../../../scss/basic-block.scss';
+import basicBlockStyle from '../../../scss/basic-block.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/live/providers/jsmpeg.ts b/src/components/live/providers/jsmpeg.ts
index edcd9258..d04562b3 100644
--- a/src/components/live/providers/jsmpeg.ts
+++ b/src/components/live/providers/jsmpeg.ts
@@ -20,7 +20,7 @@ import type { CardWideConfig } from '../../../config/schema/types.js';
import { homeAssistantGetSignedURLIfNecessary } from '../../../ha/sign-path.js';
import type { HomeAssistant } from '../../../ha/types.js';
import { localize } from '../../../localize/localize.js';
-import liveJSMPEGStyle from '../../../scss/live-jsmpeg.scss';
+import liveJSMPEGStyle from '../../../scss/live-jsmpeg.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../../../types.js';
import { errorToConsole } from '../../../utils/basic.js';
import {
diff --git a/src/components/live/providers/webrtc-card.ts b/src/components/live/providers/webrtc-card.ts
index 0c52693a..fa9efe10 100644
--- a/src/components/live/providers/webrtc-card.ts
+++ b/src/components/live/providers/webrtc-card.ts
@@ -20,7 +20,7 @@ import type { Notification } from '../../../config/schema/actions/types.js';
import type { CardWideConfig } from '../../../config/schema/types.js';
import type { HomeAssistant } from '../../../ha/types.js';
import { localize } from '../../../localize/localize.js';
-import liveWebRTCCardStyle from '../../../scss/live-webrtc-card.scss';
+import liveWebRTCCardStyle from '../../../scss/live-webrtc-card.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../../../types.js';
import { mayHaveAudio } from '../../../utils/audio.js';
import {
diff --git a/src/components/loading.ts b/src/components/loading.ts
index 86b0c6f5..f9d76681 100644
--- a/src/components/loading.ts
+++ b/src/components/loading.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import loadingStyle from '../scss/loading.scss';
+import loadingStyle from '../scss/loading.scss?inline';
import type { EffectName, EffectsManagerInterface } from '../types';
import { getReleaseVersion } from '../utils/build-info.js';
diff --git a/src/components/media-dimensions-container.ts b/src/components/media-dimensions-container.ts
index 4e9c056e..6b7bb2de 100644
--- a/src/components/media-dimensions-container.ts
+++ b/src/components/media-dimensions-container.ts
@@ -11,7 +11,7 @@ import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { MediaDimensionsContainerController } from '../components-lib/media-dimensions-container-controller.js';
import type { CameraDimensionsConfig } from '../config/schema/cameras';
-import mediaDimensionsContainerStyle from '../scss/media-dimensions-container.scss';
+import mediaDimensionsContainerStyle from '../scss/media-dimensions-container.scss?inline';
@customElement('advanced-camera-card-media-dimensions-container')
export class AdvancedCameraCardMediaDimensionsContainer extends LitElement {
diff --git a/src/components/media-filter.ts b/src/components/media-filter.ts
index 28190b56..06fba2bb 100644
--- a/src/components/media-filter.ts
+++ b/src/components/media-filter.ts
@@ -21,7 +21,7 @@ import {
import type { CardWideConfig } from '../config/schema/types';
import type { HomeAssistant } from '../ha/types';
import { localize } from '../localize/localize';
-import mediaFilterStyle from '../scss/media-filter.scss';
+import mediaFilterStyle from '../scss/media-filter.scss?inline';
import { AdvancedCameraCardDatePicker } from './date-picker';
import './date-picker.js';
diff --git a/src/components/media-grid.ts b/src/components/media-grid.ts
index ad1997e6..46d655c7 100644
--- a/src/components/media-grid.ts
+++ b/src/components/media-grid.ts
@@ -11,7 +11,7 @@ import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { MediaGridController } from '../components-lib/media-grid-controller.js';
import type { ViewDisplayConfig } from '../config/schema/common/display.js';
-import mediaGridStyle from '../scss/media-grid.scss';
+import mediaGridStyle from '../scss/media-grid.scss?inline';
@customElement('advanced-camera-card-media-grid')
export class AdvancedCameraCardMediaGrid extends LitElement {
diff --git a/src/components/menu.ts b/src/components/menu.ts
index 314a8e9b..bb49af50 100644
--- a/src/components/menu.ts
+++ b/src/components/menu.ts
@@ -17,7 +17,7 @@ import type { MenuConfig } from '../config/schema/menu.js';
import { getEntityTitle } from '../ha/get-entity-title.js';
import type { EntityRegistryManager } from '../ha/registry/entity/types.js';
import type { HomeAssistant } from '../ha/types.js';
-import menuStyle from '../scss/menu.scss';
+import menuStyle from '../scss/menu.scss?inline';
import { hasAction } from '../utils/action.js';
import { contentsChanged } from '../utils/basic.js';
diff --git a/src/components/next-prev-control.ts b/src/components/next-prev-control.ts
index 437c7ecc..32cf1075 100644
--- a/src/components/next-prev-control.ts
+++ b/src/components/next-prev-control.ts
@@ -12,7 +12,7 @@ import { isAutoHidden, type AutoHideState } from '../components-lib/auto-hide.js
import type { NextPreviousControlConfig } from '../config/schema/common/controls/next-previous.js';
import type { Icon } from '../config/schema/common/icon.js';
import type { HomeAssistant } from '../ha/types.js';
-import controlStyle from '../scss/next-previous-control.scss';
+import controlStyle from '../scss/next-previous-control.scss?inline';
import { contentsChanged } from '../utils/basic.js';
import { renderTask } from '../utils/task.js';
import { createFetchThumbnailTask } from '../utils/thumbnail.js';
diff --git a/src/components/notification/block.ts b/src/components/notification/block.ts
index 037879b1..95eec828 100644
--- a/src/components/notification/block.ts
+++ b/src/components/notification/block.ts
@@ -15,7 +15,7 @@ import {
import { NotificationContextController } from '../../components-lib/notification/notification-context-controller.js';
import type { Notification } from '../../config/schema/actions/types.js';
import { localize } from '../../localize/localize.js';
-import notificationBlockStyle from '../../scss/notification-block.scss';
+import notificationBlockStyle from '../../scss/notification-block.scss?inline';
import {
renderControl,
renderDetail,
diff --git a/src/components/notification/popup.ts b/src/components/notification/popup.ts
index 28f0b124..516a64f5 100644
--- a/src/components/notification/popup.ts
+++ b/src/components/notification/popup.ts
@@ -13,7 +13,7 @@ import { NotificationContextController } from '../../components-lib/notification
import { NotificationPopupController } from '../../components-lib/notification/notification-popup-controller.js';
import type { Notification } from '../../config/schema/actions/types.js';
import { localize } from '../../localize/localize.js';
-import notificationPopupStyle from '../../scss/notification-popup.scss';
+import notificationPopupStyle from '../../scss/notification-popup.scss?inline';
import {
renderControl,
renderDetail,
diff --git a/src/components/overlay.ts b/src/components/overlay.ts
index f5ed85d3..7c1cf82d 100644
--- a/src/components/overlay.ts
+++ b/src/components/overlay.ts
@@ -7,7 +7,7 @@ import {
} from 'lit';
import { customElement } from 'lit/decorators.js';
-import overlayStyle from '../scss/overlay.scss';
+import overlayStyle from '../scss/overlay.scss?inline';
@customElement('advanced-camera-card-overlay')
export class AdvancedCameraCardOverlay extends LitElement {
diff --git a/src/components/progress-indicator.ts b/src/components/progress-indicator.ts
index 14d241a5..c3c8b236 100644
--- a/src/components/progress-indicator.ts
+++ b/src/components/progress-indicator.ts
@@ -10,7 +10,7 @@ import { classMap, type ClassInfo } from 'lit/directives/class-map.js';
import { ref, type Ref } from 'lit/directives/ref.js';
import type { CardWideConfig } from '../config/schema/types';
-import progressIndicatorStyle from '../scss/progress-indicator.scss';
+import progressIndicatorStyle from '../scss/progress-indicator.scss?inline';
import './icon.js';
diff --git a/src/components/ptz.ts b/src/components/ptz.ts
index 17b7f4c1..0cc30e1f 100644
--- a/src/components/ptz.ts
+++ b/src/components/ptz.ts
@@ -20,7 +20,7 @@ import type {
} from '../config/schema/common/controls/ptz.js';
import type { HomeAssistant } from '../ha/types.js';
import { localize } from '../localize/localize.js';
-import ptzStyle from '../scss/ptz.scss';
+import ptzStyle from '../scss/ptz.scss?inline';
import type { Interaction } from '../types.js';
import { hasAction } from '../utils/action.js';
import { prettifyTitle } from '../utils/basic.js';
diff --git a/src/components/select.ts b/src/components/select.ts
index 1355752d..d710b21e 100644
--- a/src/components/select.ts
+++ b/src/components/select.ts
@@ -12,7 +12,7 @@ import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { isEqual } from 'lodash-es';
import { grSelectElements } from '../scoped-elements/gr-select';
-import selectStyle from '../scss/select.scss';
+import selectStyle from '../scss/select.scss?inline';
import { contentsChanged } from '../utils/basic';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event';
diff --git a/src/components/status-bar.ts b/src/components/status-bar.ts
index c970b28c..5eba3cad 100644
--- a/src/components/status-bar.ts
+++ b/src/components/status-bar.ts
@@ -15,7 +15,7 @@ import type { AutoHideState } from '../components-lib/auto-hide.js';
import { StatusBarController } from '../components-lib/status-bar-controller';
import type { StatusBarItem } from '../config/schema/actions/types.js';
import type { StatusBarConfig } from '../config/schema/status-bar.js';
-import statusStyle from '../scss/status.scss';
+import statusStyle from '../scss/status.scss?inline';
import { hasAction } from '../utils/action';
import { contentsChanged } from '../utils/basic.js';
diff --git a/src/components/submenu/index.ts b/src/components/submenu/index.ts
index 76b9184f..3b221e85 100644
--- a/src/components/submenu/index.ts
+++ b/src/components/submenu/index.ts
@@ -12,7 +12,7 @@ import { actionHandler } from '../../action-handler-directive.js';
import type { LockManagerEpoch } from '../../card-controller/lock/types';
import { getEntityTitle } from '../../ha/get-entity-title.js';
import type { HomeAssistant } from '../../ha/types.js';
-import submenuStyle from '../../scss/submenu.scss';
+import submenuStyle from '../../scss/submenu.scss?inline';
import {
hasAction,
stopEventFromActivatingCardWideActions,
diff --git a/src/components/submenu/select-button.ts b/src/components/submenu/select-button.ts
index 890124fb..536f6669 100644
--- a/src/components/submenu/select-button.ts
+++ b/src/components/submenu/select-button.ts
@@ -20,7 +20,7 @@ import { getEntityTitle } from '../../ha/get-entity-title.js';
import { isHassDifferent } from '../../ha/is-hass-different.js';
import type { EntityRegistryManager } from '../../ha/registry/entity/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import menuButtonStyle from '../../scss/menu-button.scss';
+import menuButtonStyle from '../../scss/menu-button.scss?inline';
import { createSelectOptionAction, hasAction } from '../../utils/action.js';
import '../icon.js';
diff --git a/src/components/submenu/submenu-button.ts b/src/components/submenu/submenu-button.ts
index a344edff..5c4d6e5a 100644
--- a/src/components/submenu/submenu-button.ts
+++ b/src/components/submenu/submenu-button.ts
@@ -12,7 +12,7 @@ import { actionHandler } from '../../action-handler-directive.js';
import type { LockManagerEpoch } from '../../card-controller/lock/types';
import type { MenuSubmenu } from '../../config/schema/elements/custom/menu/submenu.js';
import type { HomeAssistant } from '../../ha/types.js';
-import menuButtonStyle from '../../scss/menu-button.scss';
+import menuButtonStyle from '../../scss/menu-button.scss?inline';
import { hasAction } from '../../utils/action.js';
import '../icon.js';
diff --git a/src/components/surround-basic.ts b/src/components/surround-basic.ts
index b8ab9a49..2a09ced3 100644
--- a/src/components/surround-basic.ts
+++ b/src/components/surround-basic.ts
@@ -8,7 +8,7 @@ import {
import { customElement, property } from 'lit/decorators.js';
import { createRef, ref, type Ref } from 'lit/directives/ref.js';
-import surroundBasicStyle from '../scss/surround-basic.scss';
+import surroundBasicStyle from '../scss/surround-basic.scss?inline';
import { contentsChanged } from '../utils/basic.js';
import './drawer.js';
diff --git a/src/components/surround.ts b/src/components/surround.ts
index 863d7b55..c4831954 100644
--- a/src/components/surround.ts
+++ b/src/components/surround.ts
@@ -17,7 +17,7 @@ import type { ThumbnailsControlConfig } from '../config/schema/common/controls/t
import type { MiniTimelineControlConfig } from '../config/schema/common/controls/timeline.js';
import type { CardWideConfig } from '../config/schema/types.js';
import type { HomeAssistant } from '../ha/types.js';
-import basicBlockStyle from '../scss/basic-block.scss';
+import basicBlockStyle from '../scss/basic-block.scss?inline';
import { contentsChanged } from '../utils/basic.js';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event.js';
diff --git a/src/components/thumbnail-carousel.ts b/src/components/thumbnail-carousel.ts
index d7c2c6a5..65908eea 100644
--- a/src/components/thumbnail-carousel.ts
+++ b/src/components/thumbnail-carousel.ts
@@ -25,7 +25,7 @@ import type { ThumbnailsControlConfig } from '../config/schema/common/controls/t
import type { CardWideConfig } from '../config/schema/types.js';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../const.js';
import type { HomeAssistant } from '../ha/types.js';
-import thumbnailCarouselStyle from '../scss/thumbnail-carousel.scss';
+import thumbnailCarouselStyle from '../scss/thumbnail-carousel.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../utils/action.js';
import type { CarouselDirection } from '../utils/embla/carousel-controller.js';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event.js';
diff --git a/src/components/thumbnail/details.ts b/src/components/thumbnail/details.ts
index 5f36e0d8..c32a15a8 100644
--- a/src/components/thumbnail/details.ts
+++ b/src/components/thumbnail/details.ts
@@ -14,7 +14,7 @@ import type { CameraManager } from '../../camera-manager/manager';
import { MediaNotificationController } from '../../components-lib/media/notification-controller';
import type { NotificationDetail } from '../../config/schema/actions/types';
import type { HomeAssistant } from '../../ha/types';
-import thumbnailDetailsStyle from '../../scss/thumbnail-details.scss';
+import thumbnailDetailsStyle from '../../scss/thumbnail-details.scss?inline';
import type { ViewItem } from '../../view/item';
import '../icon';
diff --git a/src/components/thumbnail/feature/feature.ts b/src/components/thumbnail/feature/feature.ts
index 824a0c1f..beb3ca7c 100644
--- a/src/components/thumbnail/feature/feature.ts
+++ b/src/components/thumbnail/feature/feature.ts
@@ -20,7 +20,7 @@ import {
import { ThumbnailFeatureController } from '../../../components-lib/thumbnail/feature/controller';
import type { HomeAssistant } from '../../../ha/types';
import { localize } from '../../../localize/localize';
-import thumbnailFeatureStyle from '../../../scss/thumbnail-feature.scss';
+import thumbnailFeatureStyle from '../../../scss/thumbnail-feature.scss?inline';
import {
createNotificationAction,
stopEventFromActivatingCardWideActions,
diff --git a/src/components/thumbnail/feature/thumbnail.ts b/src/components/thumbnail/feature/thumbnail.ts
index 54ac2baf..6ed8ed1d 100644
--- a/src/components/thumbnail/feature/thumbnail.ts
+++ b/src/components/thumbnail/feature/thumbnail.ts
@@ -11,7 +11,7 @@ import { customElement, property } from 'lit/decorators.js';
import type { HomeAssistant } from '../../../ha/types';
import { localize } from '../../../localize/localize';
-import thumbnailFeatureThumbnailStyle from '../../../scss/thumbnail-feature-thumbnail.scss';
+import thumbnailFeatureThumbnailStyle from '../../../scss/thumbnail-feature-thumbnail.scss?inline';
import { renderTask } from '../../../utils/task';
import {
createFetchThumbnailTask,
diff --git a/src/components/thumbnail/thumbnail.ts b/src/components/thumbnail/thumbnail.ts
index 03a4c4bb..bf5c5336 100644
--- a/src/components/thumbnail/thumbnail.ts
+++ b/src/components/thumbnail/thumbnail.ts
@@ -6,7 +6,7 @@ import type { FoldersManager } from '../../card-controller/folders/manager.js';
import type { ViewItemManager } from '../../card-controller/view/item-manager.js';
import type { ViewManagerEpoch } from '../../card-controller/view/types.js';
import type { HomeAssistant } from '../../ha/types.js';
-import thumbnailStyle from '../../scss/thumbnail.scss';
+import thumbnailStyle from '../../scss/thumbnail.scss?inline';
import type { ViewItem } from '../../view/item.js';
import './details.js';
diff --git a/src/components/timeline-core.ts b/src/components/timeline-core.ts
index a2f0cb78..29c0dd15 100644
--- a/src/components/timeline-core.ts
+++ b/src/components/timeline-core.ts
@@ -26,7 +26,7 @@ import type { TimelineCoreComponentConfig } from '../config/schema/common/contro
import type { CardWideConfig } from '../config/schema/types';
import type { HomeAssistant } from '../ha/types';
import { localize } from '../localize/localize';
-import timelineCoreStyle from '../scss/timeline-core.scss';
+import timelineCoreStyle from '../scss/timeline-core.scss?inline';
import { contentsChanged } from '../utils/basic';
import './date-picker.js';
diff --git a/src/components/timeline.ts b/src/components/timeline.ts
index 656d1dd1..c8169fa8 100644
--- a/src/components/timeline.ts
+++ b/src/components/timeline.ts
@@ -15,7 +15,7 @@ import type { ConditionStateManagerReadonlyInterface } from '../condition-trigge
import type { TimelineConfig } from '../config/schema/timeline';
import type { CardWideConfig } from '../config/schema/types';
import type { HomeAssistant } from '../ha/types';
-import basicBlockStyle from '../scss/basic-block.scss';
+import basicBlockStyle from '../scss/basic-block.scss?inline';
import './surround.js';
import './timeline-core.js';
diff --git a/src/components/video-player.ts b/src/components/video-player.ts
index f82c585f..8e2fcdfc 100644
--- a/src/components/video-player.ts
+++ b/src/components/video-player.ts
@@ -11,7 +11,7 @@ import { createRef, ref, type Ref } from 'lit/directives/ref.js';
import { MediaLoadedInfoSourceController } from '../components-lib/media-loaded-info-source-controller.js';
import { VideoMediaPlayerController } from '../components-lib/media-player/video';
-import videoPlayerStyle from '../scss/video-player.scss';
+import videoPlayerStyle from '../scss/video-player.scss?inline';
import type { MediaPlayer, MediaPlayerController, MediaPlayerElement } from '../types';
import { mayHaveAudio } from '../utils/audio';
import {
diff --git a/src/components/viewer/carousel.ts b/src/components/viewer/carousel.ts
index 29158e87..c32356ae 100644
--- a/src/components/viewer/carousel.ts
+++ b/src/components/viewer/carousel.ts
@@ -27,7 +27,7 @@ import { localize } from '../../localize/localize.js';
import '../../patches/ha-hls-player.js';
-import viewerCarouselStyle from '../../scss/viewer-carousel.scss';
+import viewerCarouselStyle from '../../scss/viewer-carousel.scss?inline';
import { stopEventFromActivatingCardWideActions } from '../../utils/action.js';
import { contentsChanged } from '../../utils/basic.js';
import type { CarouselSelected } from '../../utils/embla/carousel-controller.js';
diff --git a/src/components/viewer/grid.ts b/src/components/viewer/grid.ts
index 807f3c87..a9b45eb6 100644
--- a/src/components/viewer/grid.ts
+++ b/src/components/viewer/grid.ts
@@ -20,7 +20,7 @@ import type { HomeAssistant } from '../../ha/types.js';
import '../../patches/ha-hls-player.js';
-import basicBlockStyle from '../../scss/basic-block.scss';
+import basicBlockStyle from '../../scss/basic-block.scss?inline';
import './carousel';
diff --git a/src/components/viewer/index.ts b/src/components/viewer/index.ts
index c128b9a0..305972c4 100644
--- a/src/components/viewer/index.ts
+++ b/src/components/viewer/index.ts
@@ -18,7 +18,7 @@ import type { HomeAssistant } from '../../ha/types.js';
import '../../patches/ha-hls-player.js';
-import viewerStyle from '../../scss/viewer.scss';
+import viewerStyle from '../../scss/viewer.scss?inline';
import { ViewItemClassifier } from '../../view/item-classifier.js';
import { renderNoMediaNotification } from '../notification/media.js';
diff --git a/src/components/viewer/provider.ts b/src/components/viewer/provider.ts
index 034ec88e..c945c851 100644
--- a/src/components/viewer/provider.ts
+++ b/src/components/viewer/provider.ts
@@ -30,7 +30,7 @@ import type { HomeAssistant, ResolvedMedia } from '../../ha/types.js';
import '../../patches/ha-hls-player.js';
-import viewerProviderStyle from '../../scss/viewer-provider.scss';
+import viewerProviderStyle from '../../scss/viewer-provider.scss?inline';
import type {
MediaPlayer,
MediaPlayerController,
diff --git a/src/components/views.ts b/src/components/views.ts
index 8795d902..d7b0d9ac 100644
--- a/src/components/views.ts
+++ b/src/components/views.ts
@@ -27,7 +27,7 @@ import type { RawAdvancedCameraCardConfig } from '../config/types.js';
import type { DeviceRegistryManager } from '../ha/registry/device/index.js';
import type { ResolvedMediaCache } from '../ha/resolved-media.js';
import type { HomeAssistant } from '../ha/types.js';
-import viewsStyle from '../scss/views.scss';
+import viewsStyle from '../scss/views.scss?inline';
import { contentsChanged } from '../utils/basic.js';
import './surround.js';
diff --git a/src/declarations.d.ts b/src/declarations.d.ts
index 05357274..5ed73d12 100644
--- a/src/declarations.d.ts
+++ b/src/declarations.d.ts
@@ -1,4 +1,7 @@
-declare module '*.scss';
+declare module '*.scss?inline' {
+ const css: string;
+ export default css;
+}
declare module '*.svg' {
const icon: { path: string; viewBox: string };
export default icon;
diff --git a/src/editor.ts b/src/editor.ts
index a477d56e..8b90418e 100644
--- a/src/editor.ts
+++ b/src/editor.ts
@@ -29,7 +29,7 @@ import { CONF_CAMERAS } from './config/const.js';
import type { RawAdvancedCameraCardConfig } from './config/types.js';
import type { HAFormSchema, HomeAssistant, LovelaceCardEditor } from './ha/types.js';
import { localize } from './localize/localize.js';
-import editorStyle from './scss/editor.scss';
+import editorStyle from './scss/editor.scss?inline';
import { fireAdvancedCameraCardEvent } from './utils/fire-advanced-camera-card-event.js';
interface EditorSection {
diff --git a/src/patches/ha-camera-stream.ts b/src/patches/ha-camera-stream.ts
index 609ddb23..2126d4d6 100644
--- a/src/patches/ha-camera-stream.ts
+++ b/src/patches/ha-camera-stream.ts
@@ -28,7 +28,7 @@ import { MediaLoadedInfoSourceController } from '../components-lib/media-loaded-
import '../components/image-player.js';
-import liveHAComponentsStyle from '../scss/live-ha-components.scss';
+import liveHAComponentsStyle from '../scss/live-ha-components.scss?inline';
import type {
MediaLoadedInfo,
MediaLoadedInfoEventDetail,
diff --git a/src/patches/ha-hls-player.ts b/src/patches/ha-hls-player.ts
index 477f0e9d..79972c50 100644
--- a/src/patches/ha-hls-player.ts
+++ b/src/patches/ha-hls-player.ts
@@ -25,7 +25,7 @@ import { MediaLoadedInfoSourceController } from '../components-lib/media-loaded-
import { VideoMediaPlayerController } from '../components-lib/media-player/video.js';
import { renderMediaNotification } from '../components/notification/media.js';
import { localize } from '../localize/localize.js';
-import liveHAComponentsStyle from '../scss/live-ha-components.scss';
+import liveHAComponentsStyle from '../scss/live-ha-components.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../types.js';
import { mayHaveAudio } from '../utils/audio.js';
import { errorToConsole } from '../utils/basic.js';
diff --git a/src/patches/ha-web-rtc-player.ts b/src/patches/ha-web-rtc-player.ts
index 5208211b..41f3144a 100644
--- a/src/patches/ha-web-rtc-player.ts
+++ b/src/patches/ha-web-rtc-player.ts
@@ -25,7 +25,7 @@ import { MediaLoadedInfoSourceController } from '../components-lib/media-loaded-
import { VideoMediaPlayerController } from '../components-lib/media-player/video.js';
import { renderMediaNotification } from '../components/notification/media.js';
import { localize } from '../localize/localize.js';
-import liveHAComponentsStyle from '../scss/live-ha-components.scss';
+import liveHAComponentsStyle from '../scss/live-ha-components.scss?inline';
import type { MediaPlayer, MediaPlayerController } from '../types.js';
import {
addAudioTracksMuteStateListener,
diff --git a/src/scss/card.scss b/src/scss/card.scss
index d11651e7..343798da 100644
--- a/src/scss/card.scss
+++ b/src/scss/card.scss
@@ -1,5 +1,5 @@
@use './themes/base.scss';
-@import './z-index.scss';
+@use './z-index.scss' as *;
:host {
display: block;
diff --git a/src/scss/drawer-inject.scss b/src/scss/drawer-inject.scss
index a80e9cbc..205cde29 100644
--- a/src/scss/drawer-inject.scss
+++ b/src/scss/drawer-inject.scss
@@ -1,4 +1,4 @@
-@import './z-index.scss';
+@use './z-index.scss' as *;
:host {
// Drawer width sizes to contents.
diff --git a/src/scss/effects.scss b/src/scss/effects.scss
index 5ff4ee67..84f2e286 100644
--- a/src/scss/effects.scss
+++ b/src/scss/effects.scss
@@ -1,4 +1,4 @@
-@import './z-index.scss';
+@use './z-index.scss' as *;
:host {
display: block;
diff --git a/src/scss/themes/base.scss b/src/scss/themes/base.scss
index 8c3850b4..98fe6275 100644
--- a/src/scss/themes/base.scss
+++ b/src/scss/themes/base.scss
@@ -1,6 +1,6 @@
-@import 'dark.scss';
-@import 'light.scss';
-@import 'traditional.scss';
+@use 'dark.scss' as *;
+@use 'light.scss' as *;
+@use 'traditional.scss' as *;
:host {
/*********
diff --git a/tests/card-controller/style-manager.browser.test.ts b/tests/card-controller/style-manager.browser.test.ts
new file mode 100644
index 00000000..d0932d74
--- /dev/null
+++ b/tests/card-controller/style-manager.browser.test.ts
@@ -0,0 +1,44 @@
+import { describe, expect, it } from 'vitest';
+
+import { MountedCardFactory } from '../browser/mounted-card';
+import {
+ createStillCameraHASS,
+ createStillImageCardConfig,
+} from '../browser/test-utils';
+
+// A colour the dark theme sets and the card carries no other way. Reading it
+// back proves the stylesheet reached the card rather than merely compiling.
+// See src/scss/themes/dark.scss .
+const DARK_PRIMARY_BACKGROUND = '#111111';
+
+const mountThemed = async (themes: string[]) =>
+ await MountedCardFactory.createFromSource(
+ createStillImageCardConfig({ view: { theme: { themes } } }),
+ createStillCameraHASS(),
+ );
+
+describe('themes', () => {
+ it('should style the card from the theme it is configured with', async () => {
+ const card = await mountThemed(['dark']);
+ await card.waitForRender(
+ () => card.card.getAttribute('themes'),
+ 'the card being given its themes',
+ );
+
+ expect(
+ getComputedStyle(card.card).getPropertyValue('--primary-background-color').trim(),
+ ).toBe(DARK_PRIMARY_BACKGROUND);
+ });
+
+ it('should not style the card from a theme it is not configured with', async () => {
+ const card = await mountThemed(['light']);
+ await card.waitForRender(
+ () => card.card.getAttribute('themes'),
+ 'the card being given its themes',
+ );
+
+ expect(
+ getComputedStyle(card.card).getPropertyValue('--primary-background-color').trim(),
+ ).not.toBe(DARK_PRIMARY_BACKGROUND);
+ });
+});
diff --git a/tests/dist/chunks.browser.test.ts b/tests/dist/chunks.browser.test.ts
new file mode 100644
index 00000000..1ce4bc00
--- /dev/null
+++ b/tests/dist/chunks.browser.test.ts
@@ -0,0 +1,62 @@
+import { beforeAll, describe, expect, it } from 'vitest';
+import { commands } from 'vitest/browser';
+
+import { defineHAElementStubs } from '../browser/ha-element-stubs';
+import { flushBrowserWork, loadModule } from './test-utils';
+
+beforeAll(() => {
+ // The card subclasses Home Assistant's own player elements once those exist.
+ // Without them the chunks holding the subclasses still load, but never run
+ // them.
+ defineHAElementStubs();
+});
+
+describe('every chunk the build emits', () => {
+ it('should load correctly', async () => {
+ const chunks = (await commands.listDistFiles()).filter((file) =>
+ file.endsWith('.js'),
+ );
+ expect(chunks.length).toBeGreaterThan(0);
+
+ const failures: string[] = [];
+
+ // What a chunk throws while running is reported to `window` rather than to
+ // whoever loaded it. The browser names the file it came from.
+ const recordError = (event: ErrorEvent): void => {
+ failures.push(`${event.filename}: ${event.message}`);
+ };
+ window.addEventListener('error', recordError);
+
+ // Part of what a chunk runs can be deferred to a promise it keeps to itself
+ // (e.g. the player subclasses wait on Home Assistant's own element), which
+ // is reported separately and without naming a file.
+ const recordRejection = (event: PromiseRejectionEvent): void => {
+ failures.push(`${event.reason}`);
+ };
+ window.addEventListener('unhandledrejection', recordRejection);
+
+ try {
+ // Most of what the build emits is reached only by a view the user has to
+ // navigate to, so nothing else here runs it. A chunk that throws the
+ // moment it is loaded -- a dependency resolved to a build the code using
+ // it cannot call, say -- reaches a user as a view that renders empty, and
+ // does so without failing any other test.
+ for (const chunk of chunks) {
+ try {
+ await loadModule(`/${chunk}`);
+ } catch (error) {
+ failures.push(`${chunk}: ${error}`);
+ }
+ }
+
+ // Need to flush browser work to ensure deferrals from the last chunk are
+ // noticed.
+ await flushBrowserWork();
+ } finally {
+ window.removeEventListener('error', recordError);
+ window.removeEventListener('unhandledrejection', recordRejection);
+ }
+
+ expect(failures).toEqual([]);
+ });
+});
diff --git a/tests/dist/dist.browser.test.ts b/tests/dist/dist.browser.test.ts
index 121ea4d5..4d0ea1cc 100644
--- a/tests/dist/dist.browser.test.ts
+++ b/tests/dist/dist.browser.test.ts
@@ -1,6 +1,7 @@
import { beforeAll, describe, expect, it } from 'vitest';
import { commands } from 'vitest/browser';
+import { PUBLIC_ENTRIES, PUBLIC_ENTRY } from '../../scripts/public-entries.js';
import type { RawAdvancedCameraCardConfig } from '../../src/config/types';
import type { FakeHASS } from '../browser/fake-hass';
import { defineHAElementStubs } from '../browser/ha-element-stubs';
@@ -14,13 +15,7 @@ import {
createStillImageCardConfig,
isLiveMediaShowing,
} from '../browser/test-utils';
-
-// The two filenames a dashboard resource can name. Home Assistant loads one of
-// these directly, so their names are fixed and the rest of the output is
-// hashed.
-const PUBLIC_ENTRY = 'advanced-camera-card.js';
-const LEGACY_ENTRY = 'frigate-hass-card.js';
-const PUBLIC_ENTRIES = [PUBLIC_ENTRY, LEGACY_ENTRY];
+import { loadModule } from './test-utils';
// A facade holds one re-export and nothing else. Generous size, so that this
// fails on an entry carrying the (whole) card rather than on formatting.
@@ -90,14 +85,7 @@ class BuildMountedCardFactory extends MountedCardFactory {
// as they exist.
defineHAElementStubs();
- // The backticks matter! Vite leaves a dynamic import alone
- // when the file is a quoted string, and rewrites anything
- // else to append `?import`, which asks for the file as a module and
- // makes Vite refuse to serve a static one.
- //
- // The comment only silences the warning that the name could not be read
- // at build time.
- await import(/* @vite-ignore */ `${url}`);
+ await loadModule(url);
},
config,
hass,
@@ -131,6 +119,7 @@ describe('the built card', () => {
it('should ship a public entry that only re-exports a hashed chunk', async () => {
const files = await commands.listDistFiles();
const graph = await commands.getDistImportGraph();
+ const facadeImports = new Set();
for (const entry of PUBLIC_ENTRIES) {
expect(files).toContain(entry);
@@ -138,13 +127,22 @@ describe('the built card', () => {
const source = await commands.readFile(`dist/${entry}`);
expect(source.length).toBeLessThan(MAX_FACADE_BYTES);
- // Everything it names is a real file, and none of it is another entry.
- const specifiers = [...graph[entry].staticImports, ...graph[entry].dynamicImports];
- expect(specifiers.length).toBeGreaterThan(0);
- for (const specifier of specifiers) {
- expect(files).toContain(getFileName(specifier));
- }
+ // A facade re-exports one hashed chunk and does nothing else. Anything
+ // more -- a second import, or one reached through another file -- is the
+ // card being split across the name that Home Assistant loads, which is
+ // what the whole arrangement exists to prevent.
+ expect(graph[entry].dynamicImports).toEqual([]);
+ expect(graph[entry].staticImports).toHaveLength(1);
+
+ const imported = getFileName(graph[entry].staticImports[0]);
+ expect(files).toContain(imported);
+ expect(imported).toMatch(/-[A-Za-z0-9_-]{8}\.js$/);
+
+ facadeImports.add(imported);
}
+
+ // Both public entries should re-export the same chunk.
+ expect(facadeImports.size).toBe(1);
});
it('should hand the browser the file exactly as it was built', async () => {
@@ -169,6 +167,30 @@ describe('the built card', () => {
expect(offenders).toEqual([]);
});
+ it('should not fetch lazily loaded code before the card runs', async () => {
+ const graph = await commands.getDistImportGraph();
+
+ // What the browser fetches before the card runs: the entry and everything
+ // reachable from it without a dynamic import. Each file found is appended
+ // and then followed in turn, until nothing new turns up.
+ const fetchedAtStartup = [PUBLIC_ENTRY];
+ for (let index = 0; index < fetchedAtStartup.length; index++) {
+ for (const specifier of graph[fetchedAtStartup[index]]?.staticImports ?? []) {
+ const imported = getFileName(specifier);
+ if (!fetchedAtStartup.includes(imported)) {
+ fetchedAtStartup.push(imported);
+ }
+ }
+ }
+
+ // Verify lazy loading still works. Use the editor as a sample as it is one
+ // of the largest things the card can load, so it is the clearest signal
+ // that chunking has stopped working correctly.
+ const editor = Object.keys(graph).filter((file) => file.startsWith('editor-'));
+ expect(editor).toHaveLength(1);
+ expect(fetchedAtStartup).not.toContain(editor[0]);
+ });
+
it('should only have JavaScript output', async () => {
const files = await commands.listDistFiles();
diff --git a/tests/dist/test-utils.ts b/tests/dist/test-utils.ts
new file mode 100644
index 00000000..4eac7c8e
--- /dev/null
+++ b/tests/dist/test-utils.ts
@@ -0,0 +1,30 @@
+/**
+ * Loads the module at `url` the same way Home Assistant puts a dashboard
+ * resource into one: by appending a script element for it. Resolves once the
+ * browser has fetched and run it.
+ *
+ * Rejects only when the file could not be fetched or parsed. A module that
+ * throws while running has still loaded, and reports itself to `window`
+ * instead.
+ */
+export const loadModule = async (url: string): Promise =>
+ await new Promise((resolve, reject) => {
+ const script = document.createElement('script');
+ script.type = 'module';
+ script.async = true;
+ script.onload = () => resolve();
+ script.onerror = () => reject(new Error(`Could not load ${url}`));
+ script.src = url;
+
+ document.body.appendChild(script);
+ });
+
+/**
+ * Waits for the browser to get through the work it already has queued.
+ *
+ * Draining promises (as `flushPromises` does) reaches none of that work. An
+ * uncaught exception or a rejected promise nothing handled, for instance, is
+ * reported only once the browser has run out of work to do.
+ */
+export const flushBrowserWork = async (): Promise =>
+ await new Promise((resolve) => setTimeout(resolve));
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 00000000..a6757582
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,118 @@
+import { visualizer } from 'rollup-plugin-visualizer';
+import { defineConfig } from 'vite';
+
+import { getBuildDefines } from './scripts/build-defines.js';
+import { cleanDist } from './scripts/clean-dist-plugin.js';
+import { facadeEntry } from './scripts/facade-entry-plugin.js';
+import { PUBLIC_ENTRIES } from './scripts/public-entries.js';
+import { svgPath } from './scripts/svg-path-plugin.js';
+
+// `yarn start` passes `--mode development`; a plain `vite build` is
+// `production`.
+export default defineConfig(({ mode }) => {
+ const dev = mode === 'development';
+
+ return {
+ define: {
+ // Necessary for xiel/embla-carousel-wheel-gestures
+ // See:https://github.com/xiel/embla-carousel-wheel-gestures/issues/164
+ 'process.env.NODE_ENV': JSON.stringify(dev ? 'development' : 'production'),
+
+ ...getBuildDefines({ dev, releaseVersion: process.env.RELEASE_VERSION }),
+ },
+
+ plugins: [
+ cleanDist(),
+ svgPath(),
+ facadeEntry({ publicFileNames: PUBLIC_ENTRIES }),
+ visualizer({ filename: 'visualizations/treemap.html', template: 'treemap' }),
+ ],
+
+ // `yarn preview` hands the built card out over HTTP, for a Home Assistant that
+ // reads it from a URL rather than from a path on disk. The dev container
+ // forwards this port and its Home Assistant loads the card from it.
+ preview: {
+ host: '0.0.0.0',
+ port: 10001,
+
+ // Fail rather than quietly moving: the port is what the dev container
+ // expects to find the card on.
+ strictPort: true,
+
+ // Home Assistant is served from a different origin than this.
+ cors: true,
+ },
+
+ resolve: {
+ // Same as Vite's default, minus the trailing `jsnext:main` and `jsnext`: an
+ // early convention for naming an ES module build that `module` replaced.
+ // `moment` is the one dependency still shipping it, and honouring it hands
+ // out moment as an ES module, which `vis-timeline`'s CommonJS build cannot
+ // then use -- causing timeline views to throw an error. Requiring an ES
+ // module yields the namespace object rather than moment itself.
+ mainFields: ['browser', 'module'],
+ },
+
+ css: {
+ preprocessorOptions: {
+ scss: {
+ // A couple of stylesheets are pulled in by package name (e.g. `@use
+ // '@graphiteds/core/css/core.css'`). sass resolves a bare name like
+ // that only if node_modules is on its load path.
+ loadPaths: ['./node_modules/'],
+ },
+ },
+ },
+
+ build: {
+ lib: { entry: 'src/card.ts', formats: ['es'] },
+ target: 'es2021',
+ outDir: 'dist',
+
+ // `cleanDist` removes what an earlier build left instead, once the new
+ // output is written, so the directory a running Home Assistant serves the
+ // card from is never briefly empty.
+ emptyOutDir: false,
+
+ minify: dev ? false : 'oxc',
+ sourcemap: dev,
+
+ rolldownOptions: {
+ output: {
+ // The card lives in a hashed chunk that nothing outside the build can
+ // name; `facadeEntry` emits the stable names pointing at it.
+ entryFileNames: '[name]-[hash].js',
+
+ chunkFileNames: (chunk) => {
+ // Name the language chunks for what they hold: the module they are
+ // built from is a bare `de.json`, which says nothing on its own.
+ if (chunk.facadeModuleId?.match(/localize\/languages\/.*\.json/)) {
+ return 'lang-[name]-[hash].js';
+ }
+ // The template engine is imported as `ha-nunjucks/dist`, which would
+ // otherwise name the chunk `dist`.
+ if (chunk.facadeModuleId?.match(/ha-nunjucks/)) {
+ return 'templates-[hash].js';
+ }
+ return '[name]-[hash].js';
+ },
+
+ // Lib mode leaves whitespace in even when minifying.
+ minify: !dev,
+
+ // Rolldown gives a shared module its own chunk regardless of how small
+ // it is, which by default leaves the card fetching dozens of files of a
+ // few hundred bytes before it can start. Instead, gather small shared
+ // modules into one chunk instead; anything larger keeps its own, so the
+ // code behind a dynamic (lazy) imports is still effective.
+ //
+ // Numbers set by trial and error -- large values start pulling in
+ // genuinely "lazy" code into the set that is fetched at startup.
+ codeSplitting: {
+ groups: [{ name: 'shared', maxModuleSize: 6000, minShareCount: 2 }],
+ },
+ },
+ },
+ },
+ };
+});
diff --git a/vitest.browser.config.ts b/vitest.browser.config.ts
index ac58f078..4c80263b 100644
--- a/vitest.browser.config.ts
+++ b/vitest.browser.config.ts
@@ -2,7 +2,6 @@ import { playwright } from '@vitest/browser-playwright';
import { defineConfig } from 'vitest/config';
import { getBrowsers, type Browser } from './scripts/browsers.js';
-import { scssString } from './scripts/scss-string-plugin.js';
import { svgPath } from './scripts/svg-path-plugin.js';
// Browser tests mount the real card in a browser. Their own config rather than
@@ -10,10 +9,10 @@ import { svgPath } from './scripts/svg-path-plugin.js';
// project: they would become a way to satisfy the 100% per-file thresholds.
export default defineConfig({
// Tests import `src/` directly rather than a built bundle, so Vite has to
- // supply the same asset shapes the build's plugins do: an SVG becomes the
- // `{ path, viewBox }` a custom iconset serves, SCSS the string `unsafeCSS`
- // takes. `svgPath` is the build's own plugin, reused unchanged.
- plugins: [scssString(), svgPath()],
+ // supply the same asset shape the build's plugin does: an SVG becomes the
+ // `{ path, viewBox }` a custom iconset serves. `svgPath` is the build's own
+ // plugin, reused unchanged.
+ plugins: [svgPath()],
// Where the Mock Service Worker script is served from, which Vite serves at
// the root of the page. Named rather than left at its default of `public/` in
@@ -27,7 +26,7 @@ export default defineConfig({
// Several dependencies declare their own Lit. Two copies in one page do not
// recognise each other's directives and template results, which surfaces as
// "Multiple versions of Lit loaded" followed by render-time type errors.
- // The build gets one copy from Rollup's resolver; Vite has to be told.
+ // The build gets one copy from its own resolver; the tests have to be told.
dedupe: ['lit', 'lit-html', 'lit-element', '@lit/reactive-element'],
},
@@ -57,8 +56,8 @@ export default defineConfig({
scss: {
// A couple of stylesheets are pulled in by package name (e.g. `@use
// '@graphiteds/core/css/core.css'`). sass resolves a bare name like
- // that only if node_modules is on its load path. The build passes the
- // same directory to `rollup-plugin-styler`.
+ // that only if node_modules is on its load path. The build sets the
+ // same load path.
loadPaths: ['./node_modules/'],
},
},
diff --git a/yarn.lock b/yarn.lock
index 65097e94..24f29950 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -202,6 +202,13 @@ __metadata:
languageName: node
linkType: hard
+"@bufbuild/protobuf@npm:^2.5.0":
+ version: 2.13.0
+ resolution: "@bufbuild/protobuf@npm:2.13.0"
+ checksum: 10c0/bb4d39512302887399355ac2ba1228e562c1cae818ff88b4b85b3060758aba5fec94786fe80f69de8878f98e730911c0bd145741adb582d0abf6b42de921e50c
+ languageName: node
+ linkType: hard
+
"@colors/colors@npm:1.5.0":
version: 1.5.0
resolution: "@colors/colors@npm:1.5.0"
@@ -580,17 +587,6 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/gen-mapping@npm:^0.3.0":
- version: 0.3.5
- resolution: "@jridgewell/gen-mapping@npm:0.3.5"
- dependencies:
- "@jridgewell/set-array": "npm:^1.2.1"
- "@jridgewell/sourcemap-codec": "npm:^1.4.10"
- "@jridgewell/trace-mapping": "npm:^0.3.24"
- checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb
- languageName: node
- linkType: hard
-
"@jridgewell/gen-mapping@npm:^0.3.12":
version: 0.3.13
resolution: "@jridgewell/gen-mapping@npm:0.3.13"
@@ -608,24 +604,7 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/set-array@npm:^1.2.1":
- version: 1.2.1
- resolution: "@jridgewell/set-array@npm:1.2.1"
- checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4
- languageName: node
- linkType: hard
-
-"@jridgewell/source-map@npm:^0.3.3":
- version: 0.3.5
- resolution: "@jridgewell/source-map@npm:0.3.5"
- dependencies:
- "@jridgewell/gen-mapping": "npm:^0.3.0"
- "@jridgewell/trace-mapping": "npm:^0.3.9"
- checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68
- languageName: node
- linkType: hard
-
-"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15":
+"@jridgewell/sourcemap-codec@npm:^1.4.14":
version: 1.4.15
resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"
checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5
@@ -639,7 +618,7 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.9":
+"@jridgewell/trace-mapping@npm:^0.3.24":
version: 0.3.24
resolution: "@jridgewell/trace-mapping@npm:0.3.24"
dependencies:
@@ -1268,6 +1247,13 @@ __metadata:
languageName: node
linkType: hard
+"@oxc-project/types@npm:=0.142.0":
+ version: 0.142.0
+ resolution: "@oxc-project/types@npm:0.142.0"
+ checksum: 10c0/e4fa60b8fe1a77b0db6b9a2dcbc78d9a5a18ef64dffde01d909108f3ddbc562b876c568cb01e297ba71a256fc8aaafc928d4562475a9b2a25b276fee5bf635c3
+ languageName: node
+ linkType: hard
+
"@oxc-project/types@npm:^0.140.0":
version: 0.140.0
resolution: "@oxc-project/types@npm:0.140.0"
@@ -1412,6 +1398,140 @@ __metadata:
languageName: node
linkType: hard
+"@parcel/watcher-android-arm64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-android-arm64@npm:2.6.0"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-darwin-arm64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-darwin-arm64@npm:2.6.0"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-darwin-x64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-darwin-x64@npm:2.6.0"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-freebsd-x64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-freebsd-x64@npm:2.6.0"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-arm-glibc@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-arm-glibc@npm:2.6.0"
+ conditions: os=linux & cpu=arm & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-arm-musl@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-arm-musl@npm:2.6.0"
+ conditions: os=linux & cpu=arm & libc=musl
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-arm64-glibc@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.6.0"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-arm64-musl@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-arm64-musl@npm:2.6.0"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-x64-glibc@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-x64-glibc@npm:2.6.0"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-linux-x64-musl@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-linux-x64-musl@npm:2.6.0"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-win32-arm64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-win32-arm64@npm:2.6.0"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher-win32-x64@npm:2.6.0":
+ version: 2.6.0
+ resolution: "@parcel/watcher-win32-x64@npm:2.6.0"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"@parcel/watcher@npm:^2.4.1":
+ version: 2.6.0
+ resolution: "@parcel/watcher@npm:2.6.0"
+ dependencies:
+ "@parcel/watcher-android-arm64": "npm:2.6.0"
+ "@parcel/watcher-darwin-arm64": "npm:2.6.0"
+ "@parcel/watcher-darwin-x64": "npm:2.6.0"
+ "@parcel/watcher-freebsd-x64": "npm:2.6.0"
+ "@parcel/watcher-linux-arm-glibc": "npm:2.6.0"
+ "@parcel/watcher-linux-arm-musl": "npm:2.6.0"
+ "@parcel/watcher-linux-arm64-glibc": "npm:2.6.0"
+ "@parcel/watcher-linux-arm64-musl": "npm:2.6.0"
+ "@parcel/watcher-linux-x64-glibc": "npm:2.6.0"
+ "@parcel/watcher-linux-x64-musl": "npm:2.6.0"
+ "@parcel/watcher-win32-arm64": "npm:2.6.0"
+ "@parcel/watcher-win32-x64": "npm:2.6.0"
+ detect-libc: "npm:^2.0.3"
+ is-glob: "npm:^4.0.3"
+ node-addon-api: "npm:^7.0.0"
+ node-gyp: "npm:latest"
+ picomatch: "npm:^4.0.4"
+ dependenciesMeta:
+ "@parcel/watcher-android-arm64":
+ optional: true
+ "@parcel/watcher-darwin-arm64":
+ optional: true
+ "@parcel/watcher-darwin-x64":
+ optional: true
+ "@parcel/watcher-freebsd-x64":
+ optional: true
+ "@parcel/watcher-linux-arm-glibc":
+ optional: true
+ "@parcel/watcher-linux-arm-musl":
+ optional: true
+ "@parcel/watcher-linux-arm64-glibc":
+ optional: true
+ "@parcel/watcher-linux-arm64-musl":
+ optional: true
+ "@parcel/watcher-linux-x64-glibc":
+ optional: true
+ "@parcel/watcher-linux-x64-musl":
+ optional: true
+ "@parcel/watcher-win32-arm64":
+ optional: true
+ "@parcel/watcher-win32-x64":
+ optional: true
+ checksum: 10c0/0d6799bdf7d59a1ab5e4a79859035f387a66078586d9543eef0b9bd01c9d61cebe3b64eb96f0bd1f8bf50f07ed7266a1628604b66dc63025a3cee19be2e60d65
+ languageName: node
+ linkType: hard
+
"@pkgjs/parseargs@npm:^0.11.0":
version: 0.11.0
resolution: "@pkgjs/parseargs@npm:0.11.0"
@@ -1467,6 +1587,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-android-arm64@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-android-arm64@npm:1.2.2"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-darwin-arm64@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-darwin-arm64@npm:1.1.5"
@@ -1474,6 +1601,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-darwin-arm64@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-darwin-arm64@npm:1.2.2"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-darwin-x64@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-darwin-x64@npm:1.1.5"
@@ -1481,6 +1615,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-darwin-x64@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-darwin-x64@npm:1.2.2"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-freebsd-x64@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-freebsd-x64@npm:1.1.5"
@@ -1488,6 +1629,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-freebsd-x64@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-freebsd-x64@npm:1.2.2"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-arm-gnueabihf@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.1.5"
@@ -1495,6 +1643,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.2"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-arm64-gnu@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.1.5"
@@ -1502,6 +1657,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-arm64-gnu@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.2"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-arm64-musl@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-arm64-musl@npm:1.1.5"
@@ -1509,6 +1671,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-arm64-musl@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.2"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-ppc64-gnu@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.1.5"
@@ -1516,6 +1685,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-ppc64-gnu@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.2"
+ conditions: os=linux & cpu=ppc64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-s390x-gnu@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.1.5"
@@ -1523,6 +1699,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-s390x-gnu@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.2"
+ conditions: os=linux & cpu=s390x & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-x64-gnu@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-x64-gnu@npm:1.1.5"
@@ -1530,6 +1713,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-x64-gnu@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.2"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-linux-x64-musl@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-linux-x64-musl@npm:1.1.5"
@@ -1537,6 +1727,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-linux-x64-musl@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.2"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-openharmony-arm64@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-openharmony-arm64@npm:1.1.5"
@@ -1544,6 +1741,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-openharmony-arm64@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.2"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-wasm32-wasi@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-wasm32-wasi@npm:1.1.5"
@@ -1562,6 +1766,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-win32-arm64-msvc@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.2"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rolldown/binding-win32-x64-msvc@npm:1.1.5":
version: 1.1.5
resolution: "@rolldown/binding-win32-x64-msvc@npm:1.1.5"
@@ -1569,6 +1780,13 @@ __metadata:
languageName: node
linkType: hard
+"@rolldown/binding-win32-x64-msvc@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.2"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rolldown/pluginutils@npm:^1.0.0":
version: 1.0.1
resolution: "@rolldown/pluginutils@npm:1.0.1"
@@ -1576,139 +1794,6 @@ __metadata:
languageName: node
linkType: hard
-"@rollup/plugin-commonjs@npm:^26.0.1":
- version: 26.0.1
- resolution: "@rollup/plugin-commonjs@npm:26.0.1"
- dependencies:
- "@rollup/pluginutils": "npm:^5.0.1"
- commondir: "npm:^1.0.1"
- estree-walker: "npm:^2.0.2"
- glob: "npm:^10.4.1"
- is-reference: "npm:1.2.1"
- magic-string: "npm:^0.30.3"
- peerDependencies:
- rollup: ^2.68.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/483290d327bdb4147584c37d73e47df2c717735f1902cd2f66ebc83c7b40ae10e5a8d5e626f24b76ad4ac489eab4a8c13869410aad663810848b0abc89a630cf
- languageName: node
- linkType: hard
-
-"@rollup/plugin-image@npm:^3.0.3":
- version: 3.0.3
- resolution: "@rollup/plugin-image@npm:3.0.3"
- dependencies:
- "@rollup/pluginutils": "npm:^5.0.1"
- mini-svg-data-uri: "npm:^1.4.4"
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/e699e52c44b1799df887f72959779c9d2af11f04b23ed84dc7a4c423f72c66b14510c8a366a9856e07047fbabbd6e94c1972fcced2c80b2c5e7e91e8414e8b48
- languageName: node
- linkType: hard
-
-"@rollup/plugin-json@npm:^6.1.0":
- version: 6.1.0
- resolution: "@rollup/plugin-json@npm:6.1.0"
- dependencies:
- "@rollup/pluginutils": "npm:^5.1.0"
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/9400c431b5e0cf3088ba2eb2d038809a2b0fb2a84ed004997da85582f48cd64958ed3168893c4f2c8109e38652400ed68282d0c92bf8ec07a3b2ef2e1ceab0b7
- languageName: node
- linkType: hard
-
-"@rollup/plugin-node-resolve@npm:^15.2.3":
- version: 15.2.3
- resolution: "@rollup/plugin-node-resolve@npm:15.2.3"
- dependencies:
- "@rollup/pluginutils": "npm:^5.0.1"
- "@types/resolve": "npm:1.20.2"
- deepmerge: "npm:^4.2.2"
- is-builtin-module: "npm:^3.2.1"
- is-module: "npm:^1.0.0"
- resolve: "npm:^1.22.1"
- peerDependencies:
- rollup: ^2.78.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/598c15615086f26e28c4b3dbf966682af7fb0e5bc277cc4e57f559668a3be675a63ab261eb34729ce9569c3a51342c48863e50b5efe02e0fc1571828f0113f9d
- languageName: node
- linkType: hard
-
-"@rollup/plugin-replace@npm:^5.0.7":
- version: 5.0.7
- resolution: "@rollup/plugin-replace@npm:5.0.7"
- dependencies:
- "@rollup/pluginutils": "npm:^5.0.1"
- magic-string: "npm:^0.30.3"
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/1732af42febdb42d96fd7916b65ca94a550a028d1ea5efa40d5d7a99ab3c336e41efac14a77eefef18b956b4b7335969c6252f2a22bf0223dc8b4a7a53f89ed3
- languageName: node
- linkType: hard
-
-"@rollup/plugin-terser@npm:^0.4.4":
- version: 0.4.4
- resolution: "@rollup/plugin-terser@npm:0.4.4"
- dependencies:
- serialize-javascript: "npm:^6.0.1"
- smob: "npm:^1.0.0"
- terser: "npm:^5.17.4"
- peerDependencies:
- rollup: ^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/b9cb6c8f02ac1c1344019e9fb854321b74f880efebc41b6bdd84f18331fce0f4a2aadcdb481042245cd3f409b429ac363af71f9efec4a2024731d67d32af36ee
- languageName: node
- linkType: hard
-
-"@rollup/plugin-typescript@npm:^11.1.6":
- version: 11.1.6
- resolution: "@rollup/plugin-typescript@npm:11.1.6"
- dependencies:
- "@rollup/pluginutils": "npm:^5.1.0"
- resolve: "npm:^1.22.1"
- peerDependencies:
- rollup: ^2.14.0||^3.0.0||^4.0.0
- tslib: "*"
- typescript: ">=3.7.0"
- peerDependenciesMeta:
- rollup:
- optional: true
- tslib:
- optional: true
- checksum: 10c0/5347cd73ac28d4cf2401a3e689864a1a0df8f3ae029abd9c38525cbc84bcfa16c3a32a0ac5698dac65ec531ba7cf8332e14f5fc7f8fa501193da23320a134c5c
- languageName: node
- linkType: hard
-
-"@rollup/pluginutils@npm:^5.0.0, @rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.0":
- version: 5.1.0
- resolution: "@rollup/pluginutils@npm:5.1.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- estree-walker: "npm:^2.0.2"
- picomatch: "npm:^2.3.1"
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/c7bed15711f942d6fdd3470fef4105b73991f99a478605e13d41888963330a6f9e32be37e6ddb13f012bc7673ff5e54f06f59fd47109436c1c513986a8a7612d
- languageName: node
- linkType: hard
-
"@sec-ant/readable-stream@npm:^0.4.1":
version: 0.4.1
resolution: "@sec-ant/readable-stream@npm:0.4.1"
@@ -1928,13 +2013,6 @@ __metadata:
languageName: node
linkType: hard
-"@trysound/sax@npm:0.2.0":
- version: 0.2.0
- resolution: "@trysound/sax@npm:0.2.0"
- checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12
- languageName: node
- linkType: hard
-
"@tufjs/canonical-json@npm:2.0.0":
version: 2.0.0
resolution: "@tufjs/canonical-json@npm:2.0.0"
@@ -1978,7 +2056,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/estree@npm:*, @types/estree@npm:^1.0.0":
+"@types/estree@npm:^1.0.0":
version: 1.0.5
resolution: "@types/estree@npm:1.0.5"
checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d
@@ -2072,13 +2150,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/resolve@npm:1.20.2":
- version: 1.20.2
- resolution: "@types/resolve@npm:1.20.2"
- checksum: 10c0/c5b7e1770feb5ccfb6802f6ad82a7b0d50874c99331e0c9b259e415e55a38d7a86ad0901c57665d93f75938be2a6a0bc9aa06c9749192cadb2e4512800bbc6e6
- languageName: node
- linkType: hard
-
"@types/responselike@npm:^1.0.0":
version: 1.0.3
resolution: "@types/responselike@npm:1.0.3"
@@ -2472,13 +2543,6 @@ __metadata:
"@ianvs/prettier-plugin-sort-imports": "npm:^4.7.1"
"@lit-labs/scoped-registry-mixin": "npm:^1.0.3"
"@lit-labs/task": "npm:^1.1.3"
- "@rollup/plugin-commonjs": "npm:^26.0.1"
- "@rollup/plugin-image": "npm:^3.0.3"
- "@rollup/plugin-json": "npm:^6.1.0"
- "@rollup/plugin-node-resolve": "npm:^15.2.3"
- "@rollup/plugin-replace": "npm:^5.0.7"
- "@rollup/plugin-terser": "npm:^0.4.4"
- "@rollup/plugin-typescript": "npm:^11.1.6"
"@semantic-release/github": "npm:^10.3.3"
"@types/js-yaml": "npm:^4"
"@types/lodash-es": "npm:^4.17.12"
@@ -2515,11 +2579,8 @@ __metadata:
prettier: "npm:^3.3.2"
propagating-hammerjs: "npm:^2.0.1"
quick-lru: "npm:^6.1.2"
- rollup: "npm:^3.29.4"
- rollup-plugin-serve: "npm:^1.1.1"
- rollup-plugin-styler: "npm:^1.8.0"
rollup-plugin-visualizer: "npm:^5.12.0"
- sass: "patch:sass@npm%3A1.77.4#~/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch"
+ sass-embedded: "npm:^1.100.0"
screenfull: "npm:^6.0.2"
semantic-release: "npm:^24.1.1"
semantic-release-export-data: "npm:^1.1.0"
@@ -2530,6 +2591,7 @@ __metadata:
vis-data: "npm:^7.1.9"
vis-timeline: "npm:^7.7.3"
vis-util: "npm:^5.0.7"
+ vite: "npm:^8.1.5"
vitest: "npm:^4.1.10"
vitest-mock-extended: "npm:^5.1.0"
web-dialog: "npm:^0.0.11"
@@ -2809,13 +2871,6 @@ __metadata:
languageName: node
linkType: hard
-"boolbase@npm:^1.0.0":
- version: 1.0.0
- resolution: "boolbase@npm:1.0.0"
- checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf
- languageName: node
- linkType: hard
-
"bottleneck@npm:^2.15.3":
version: 2.19.5
resolution: "bottleneck@npm:2.19.5"
@@ -2876,48 +2931,6 @@ __metadata:
languageName: node
linkType: hard
-"browserslist@npm:^4.0.0":
- version: 4.23.0
- resolution: "browserslist@npm:4.23.0"
- dependencies:
- caniuse-lite: "npm:^1.0.30001587"
- electron-to-chromium: "npm:^1.4.668"
- node-releases: "npm:^2.0.14"
- update-browserslist-db: "npm:^1.0.13"
- bin:
- browserslist: cli.js
- checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943
- languageName: node
- linkType: hard
-
-"browserslist@npm:^4.23.0":
- version: 4.23.1
- resolution: "browserslist@npm:4.23.1"
- dependencies:
- caniuse-lite: "npm:^1.0.30001629"
- electron-to-chromium: "npm:^1.4.796"
- node-releases: "npm:^2.0.14"
- update-browserslist-db: "npm:^1.0.16"
- bin:
- browserslist: cli.js
- checksum: 10c0/eb47c7ab9d60db25ce2faca70efeb278faa7282a2f62b7f2fa2f92e5f5251cf65144244566c86559419ff4f6d78f59ea50e39911321ad91f3b27788901f1f5e9
- languageName: node
- linkType: hard
-
-"buffer-from@npm:^1.0.0":
- version: 1.1.2
- resolution: "buffer-from@npm:1.1.2"
- checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34
- languageName: node
- linkType: hard
-
-"builtin-modules@npm:^3.3.0":
- version: 3.3.0
- resolution: "builtin-modules@npm:3.3.0"
- checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a
- languageName: node
- linkType: hard
-
"cacache@npm:^18.0.0":
version: 18.0.2
resolution: "cacache@npm:18.0.2"
@@ -2987,32 +3000,6 @@ __metadata:
languageName: node
linkType: hard
-"caniuse-api@npm:^3.0.0":
- version: 3.0.0
- resolution: "caniuse-api@npm:3.0.0"
- dependencies:
- browserslist: "npm:^4.0.0"
- caniuse-lite: "npm:^1.0.0"
- lodash.memoize: "npm:^4.1.2"
- lodash.uniq: "npm:^4.5.0"
- checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c
- languageName: node
- linkType: hard
-
-"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001587":
- version: 1.0.30001591
- resolution: "caniuse-lite@npm:1.0.30001591"
- checksum: 10c0/21937d341c3d75994504db21340f65573a1e847a8ab33ee4964ed493994d6552864c494ba144485459abd9c711c75c0708bc9fa19f2bff525bff75ffb0a42c3b
- languageName: node
- linkType: hard
-
-"caniuse-lite@npm:^1.0.30001629":
- version: 1.0.30001632
- resolution: "caniuse-lite@npm:1.0.30001632"
- checksum: 10c0/960af2c7ed4367d6b72a164ecb9050ea9eada28c61e2134baaa712862364b9b6b41247c3ff4c2a497f91e879c5a1c9c7713080ac2d0c72eb4bee5ef2f4e24d62
- languageName: node
- linkType: hard
-
"chai@npm:^6.2.2":
version: 6.2.2
resolution: "chai@npm:6.2.2"
@@ -3078,7 +3065,7 @@ __metadata:
languageName: node
linkType: hard
-"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.0":
+"chokidar@npm:^3.5.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
dependencies:
@@ -3097,6 +3084,15 @@ __metadata:
languageName: node
linkType: hard
+"chokidar@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "chokidar@npm:5.0.0"
+ dependencies:
+ readdirp: "npm:^5.0.0"
+ checksum: 10c0/42fc907cb2a7ff5c9e220f84dae75380a77997f851c2a5e7865a2cf9ae45dd407a23557208cdcdbf3ac8c93341135a1748e4c48c31855f3bfa095e5159b6bdec
+ languageName: node
+ linkType: hard
+
"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
@@ -3277,10 +3273,10 @@ __metadata:
languageName: node
linkType: hard
-"colord@npm:^2.9.3":
- version: 2.9.3
- resolution: "colord@npm:2.9.3"
- checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110
+"colorjs.io@npm:^0.5.0":
+ version: 0.5.2
+ resolution: "colorjs.io@npm:0.5.2"
+ checksum: 10c0/2e6ea43629e325e721b92429239de3a6f42fb6d88ba6e4c2aeff0288c196d876f2f7ee82aea95bd40072d5cdc8cb87f042f4d94c134dcabf0e34a717e4caacb9
languageName: node
linkType: hard
@@ -3293,7 +3289,7 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^2.20.0, commander@npm:^2.20.3":
+"commander@npm:^2.20.3":
version: 2.20.3
resolution: "commander@npm:2.20.3"
checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288
@@ -3307,13 +3303,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^7.2.0":
- version: 7.2.0
- resolution: "commander@npm:7.2.0"
- checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a
- languageName: node
- linkType: hard
-
"common-ancestor-path@npm:^1.0.1":
version: 1.0.1
resolution: "common-ancestor-path@npm:1.0.1"
@@ -3321,13 +3310,6 @@ __metadata:
languageName: node
linkType: hard
-"commondir@npm:^1.0.1":
- version: 1.0.1
- resolution: "commondir@npm:1.0.1"
- checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6
- languageName: node
- linkType: hard
-
"compare-func@npm:^2.0.0":
version: 2.0.0
resolution: "compare-func@npm:2.0.0"
@@ -3488,23 +3470,6 @@ __metadata:
languageName: node
linkType: hard
-"cosmiconfig@npm:^8.0.0":
- version: 8.3.6
- resolution: "cosmiconfig@npm:8.3.6"
- dependencies:
- import-fresh: "npm:^3.3.0"
- js-yaml: "npm:^4.1.0"
- parse-json: "npm:^5.2.0"
- path-type: "npm:^4.0.0"
- peerDependencies:
- typescript: ">=4.9.5"
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a
- languageName: node
- linkType: hard
-
"cosmiconfig@npm:^9.0.0":
version: 9.0.0
resolution: "cosmiconfig@npm:9.0.0"
@@ -3572,55 +3537,6 @@ __metadata:
languageName: node
linkType: hard
-"css-declaration-sorter@npm:^7.2.0":
- version: 7.2.0
- resolution: "css-declaration-sorter@npm:7.2.0"
- peerDependencies:
- postcss: ^8.0.9
- checksum: 10c0/d8516be94f8f2daa233ef021688b965c08161624cbf830a4d7ee1099429437c0ee124d35c91b1c659cfd891a68e8888aa941726dab12279bc114aaed60a94606
- languageName: node
- linkType: hard
-
-"css-select@npm:^5.1.0":
- version: 5.1.0
- resolution: "css-select@npm:5.1.0"
- dependencies:
- boolbase: "npm:^1.0.0"
- css-what: "npm:^6.1.0"
- domhandler: "npm:^5.0.2"
- domutils: "npm:^3.0.1"
- nth-check: "npm:^2.0.1"
- checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500
- languageName: node
- linkType: hard
-
-"css-tree@npm:^2.3.1":
- version: 2.3.1
- resolution: "css-tree@npm:2.3.1"
- dependencies:
- mdn-data: "npm:2.0.30"
- source-map-js: "npm:^1.0.1"
- checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24
- languageName: node
- linkType: hard
-
-"css-tree@npm:~2.2.0":
- version: 2.2.1
- resolution: "css-tree@npm:2.2.1"
- dependencies:
- mdn-data: "npm:2.0.28"
- source-map-js: "npm:^1.0.1"
- checksum: 10c0/47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186
- languageName: node
- linkType: hard
-
-"css-what@npm:^6.1.0":
- version: 6.1.0
- resolution: "css-what@npm:6.1.0"
- checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746
- languageName: node
- linkType: hard
-
"cssesc@npm:^3.0.0":
version: 3.0.0
resolution: "cssesc@npm:3.0.0"
@@ -3637,76 +3553,6 @@ __metadata:
languageName: node
linkType: hard
-"cssnano-preset-default@npm:^6.1.2":
- version: 6.1.2
- resolution: "cssnano-preset-default@npm:6.1.2"
- dependencies:
- browserslist: "npm:^4.23.0"
- css-declaration-sorter: "npm:^7.2.0"
- cssnano-utils: "npm:^4.0.2"
- postcss-calc: "npm:^9.0.1"
- postcss-colormin: "npm:^6.1.0"
- postcss-convert-values: "npm:^6.1.0"
- postcss-discard-comments: "npm:^6.0.2"
- postcss-discard-duplicates: "npm:^6.0.3"
- postcss-discard-empty: "npm:^6.0.3"
- postcss-discard-overridden: "npm:^6.0.2"
- postcss-merge-longhand: "npm:^6.0.5"
- postcss-merge-rules: "npm:^6.1.1"
- postcss-minify-font-values: "npm:^6.1.0"
- postcss-minify-gradients: "npm:^6.0.3"
- postcss-minify-params: "npm:^6.1.0"
- postcss-minify-selectors: "npm:^6.0.4"
- postcss-normalize-charset: "npm:^6.0.2"
- postcss-normalize-display-values: "npm:^6.0.2"
- postcss-normalize-positions: "npm:^6.0.2"
- postcss-normalize-repeat-style: "npm:^6.0.2"
- postcss-normalize-string: "npm:^6.0.2"
- postcss-normalize-timing-functions: "npm:^6.0.2"
- postcss-normalize-unicode: "npm:^6.1.0"
- postcss-normalize-url: "npm:^6.0.2"
- postcss-normalize-whitespace: "npm:^6.0.2"
- postcss-ordered-values: "npm:^6.0.2"
- postcss-reduce-initial: "npm:^6.1.0"
- postcss-reduce-transforms: "npm:^6.0.2"
- postcss-svgo: "npm:^6.0.3"
- postcss-unique-selectors: "npm:^6.0.4"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/af99021f936763850f5f35dc9e6a9dfb0da30856dea36e0420b011da2a447099471db2a5f3d1f5f52c0489da186caf9a439d8f048a80f82617077efb018333fa
- languageName: node
- linkType: hard
-
-"cssnano-utils@npm:^4.0.2":
- version: 4.0.2
- resolution: "cssnano-utils@npm:4.0.2"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/260b8c8ffa48b908aa77ef129f9b8648ecd92aed405b20e7fe6b8370779dd603530344fc9d96683d53533246e48b36ac9d2aa5a476b4f81c547bbad86d187f35
- languageName: node
- linkType: hard
-
-"cssnano@npm:^6.0.1":
- version: 6.1.2
- resolution: "cssnano@npm:6.1.2"
- dependencies:
- cssnano-preset-default: "npm:^6.1.2"
- lilconfig: "npm:^3.1.1"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/4df0dc0389b34b38acb09b7cfb07267b0eda95349c6d5e9b7666acc7200bb33359650869a60168e9d878298b05f4ad2c7f070815c90551720a3f4e1037f79691
- languageName: node
- linkType: hard
-
-"csso@npm:^5.0.5":
- version: 5.0.5
- resolution: "csso@npm:5.0.5"
- dependencies:
- css-tree: "npm:~2.2.0"
- checksum: 10c0/ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b
- languageName: node
- linkType: hard
-
"cssstyle@npm:^3.0.0":
version: 3.0.0
resolution: "cssstyle@npm:3.0.0"
@@ -3808,13 +3654,6 @@ __metadata:
languageName: node
linkType: hard
-"decode-uri-component@npm:^0.4.1":
- version: 0.4.1
- resolution: "decode-uri-component@npm:0.4.1"
- checksum: 10c0/a180bbdb5398ec8270d236a3ac07cb988bbf6097428481780b85840f088951dc0318a8d8f9d56796e1a322b55b29859cea29982f22f9b03af0bc60974c54e591
- languageName: node
- linkType: hard
-
"decompress-response@npm:^3.3.0":
version: 3.3.0
resolution: "decompress-response@npm:3.3.0"
@@ -3838,13 +3677,6 @@ __metadata:
languageName: node
linkType: hard
-"deepmerge@npm:^4.2.2":
- version: 4.3.1
- resolution: "deepmerge@npm:4.3.1"
- checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044
- languageName: node
- linkType: hard
-
"defer-to-connect@npm:^1.0.1":
version: 1.1.3
resolution: "defer-to-connect@npm:1.1.3"
@@ -3964,24 +3796,6 @@ __metadata:
languageName: node
linkType: hard
-"dom-serializer@npm:^2.0.0":
- version: 2.0.0
- resolution: "dom-serializer@npm:2.0.0"
- dependencies:
- domelementtype: "npm:^2.3.0"
- domhandler: "npm:^5.0.2"
- entities: "npm:^4.2.0"
- checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2
- languageName: node
- linkType: hard
-
-"domelementtype@npm:^2.3.0":
- version: 2.3.0
- resolution: "domelementtype@npm:2.3.0"
- checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9
- languageName: node
- linkType: hard
-
"domexception@npm:^4.0.0":
version: 4.0.0
resolution: "domexception@npm:4.0.0"
@@ -3991,26 +3805,6 @@ __metadata:
languageName: node
linkType: hard
-"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
- version: 5.0.3
- resolution: "domhandler@npm:5.0.3"
- dependencies:
- domelementtype: "npm:^2.3.0"
- checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a
- languageName: node
- linkType: hard
-
-"domutils@npm:^3.0.1":
- version: 3.1.0
- resolution: "domutils@npm:3.1.0"
- dependencies:
- dom-serializer: "npm:^2.0.0"
- domelementtype: "npm:^2.3.0"
- domhandler: "npm:^5.0.3"
- checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887
- languageName: node
- linkType: hard
-
"dot-prop@npm:^5.1.0, dot-prop@npm:^5.2.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
@@ -4050,20 +3844,6 @@ __metadata:
languageName: node
linkType: hard
-"electron-to-chromium@npm:^1.4.668":
- version: 1.4.690
- resolution: "electron-to-chromium@npm:1.4.690"
- checksum: 10c0/fba87387968bac5ac55161dc176e55d92a54146ae1e5fb16c3fdd5bf4f250ce6f271713659c0cdfa7fc0fd9a9ea1a79803f266fa2b936535b208c0759a4d3983
- languageName: node
- linkType: hard
-
-"electron-to-chromium@npm:^1.4.796":
- version: 1.4.798
- resolution: "electron-to-chromium@npm:1.4.798"
- checksum: 10c0/0941f9d9e28d7c26fd96a429126782c79811ea0b96f3dc8953cfef83b7f0d3856cbfe0ceb3fae9e619d49ddb990e2c3505147c663ac9cd8e8189c3d2da658edc
- languageName: node
- linkType: hard
-
"embla-carousel-wheel-gestures@npm:^8.0.1":
version: 8.0.1
resolution: "embla-carousel-wheel-gestures@npm:8.0.1"
@@ -4138,7 +3918,7 @@ __metadata:
languageName: node
linkType: hard
-"entities@npm:^4.2.0, entities@npm:^4.4.0":
+"entities@npm:^4.4.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250
@@ -4192,7 +3972,7 @@ __metadata:
languageName: node
linkType: hard
-"escalade@npm:^3.1.1, escalade@npm:^3.1.2":
+"escalade@npm:^3.1.1":
version: 3.1.2
resolution: "escalade@npm:3.1.2"
checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287
@@ -4383,13 +4163,6 @@ __metadata:
languageName: node
linkType: hard
-"estree-walker@npm:^2.0.2":
- version: 2.0.2
- resolution: "estree-walker@npm:2.0.2"
- checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af
- languageName: node
- linkType: hard
-
"estree-walker@npm:^3.0.3":
version: 3.0.3
resolution: "estree-walker@npm:3.0.3"
@@ -4628,13 +4401,6 @@ __metadata:
languageName: node
linkType: hard
-"filter-obj@npm:^5.1.0":
- version: 5.1.0
- resolution: "filter-obj@npm:5.1.0"
- checksum: 10c0/716e8ad2bc352e206556b3e5695b3cdff8aab80c53ea4b00c96315bbf467b987df3640575100aef8b84e812cf5ea4251db4cd672bbe33b1e78afea88400c67dd
- languageName: node
- linkType: hard
-
"finalhandler@npm:1.1.2":
version: 1.1.2
resolution: "finalhandler@npm:1.1.2"
@@ -4849,13 +4615,6 @@ __metadata:
languageName: node
linkType: hard
-"function-bind@npm:^1.1.2":
- version: 1.1.2
- resolution: "function-bind@npm:1.1.2"
- checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
- languageName: node
- linkType: hard
-
"function-timeout@npm:^1.0.1":
version: 1.0.2
resolution: "function-timeout@npm:1.0.2"
@@ -4989,21 +4748,6 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:^10.4.1":
- version: 10.4.1
- resolution: "glob@npm:10.4.1"
- dependencies:
- foreground-child: "npm:^3.1.0"
- jackspeak: "npm:^3.1.2"
- minimatch: "npm:^9.0.4"
- minipass: "npm:^7.1.2"
- path-scurry: "npm:^1.11.1"
- bin:
- glob: dist/esm/bin.mjs
- checksum: 10c0/77f2900ed98b9cc2a0e1901ee5e476d664dae3cd0f1b662b8bfd4ccf00d0edc31a11595807706a274ca10e1e251411bbf2e8e976c82bed0d879a9b89343ed379
- languageName: node
- linkType: hard
-
"glob@npm:^10.4.5":
version: 10.4.5
resolution: "glob@npm:10.4.5"
@@ -5157,15 +4901,6 @@ __metadata:
languageName: node
linkType: hard
-"hasown@npm:^2.0.0":
- version: 2.0.1
- resolution: "hasown@npm:2.0.1"
- dependencies:
- function-bind: "npm:^1.1.2"
- checksum: 10c0/9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb
- languageName: node
- linkType: hard
-
"headers-polyfill@npm:^5.0.1":
version: 5.0.1
resolution: "headers-polyfill@npm:5.0.1"
@@ -5325,15 +5060,6 @@ __metadata:
languageName: node
linkType: hard
-"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0":
- version: 5.1.0
- resolution: "icss-utils@npm:5.1.0"
- peerDependencies:
- postcss: ^8.1.0
- checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d
- languageName: node
- linkType: hard
-
"ignore-walk@npm:^6.0.4":
version: 6.0.5
resolution: "ignore-walk@npm:6.0.5"
@@ -5357,10 +5083,10 @@ __metadata:
languageName: node
linkType: hard
-"immutable@npm:^4.0.0":
- version: 4.3.5
- resolution: "immutable@npm:4.3.5"
- checksum: 10c0/63d2d7908241a955d18c7822fd2215b6e89ff5a1a33cc72cd475b013cbbdef7a705aa5170a51ce9f84a57f62fdddfaa34e7b5a14b33d8a43c65cc6a881d6e894
+"immutable@npm:^5.1.5":
+ version: 5.1.9
+ resolution: "immutable@npm:5.1.9"
+ checksum: 10c0/ae7032b60b81b682f3e7e4df13e1ec9a401a603eb81b15bb3e37331ed6666e318c71994c6936e1462eb443d32d04769396562a7e2669da22457c8ba279c03ad2
languageName: node
linkType: hard
@@ -5519,15 +5245,6 @@ __metadata:
languageName: node
linkType: hard
-"is-builtin-module@npm:^3.2.1":
- version: 3.2.1
- resolution: "is-builtin-module@npm:3.2.1"
- dependencies:
- builtin-modules: "npm:^3.3.0"
- checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1
- languageName: node
- linkType: hard
-
"is-ci@npm:^2.0.0":
version: 2.0.0
resolution: "is-ci@npm:2.0.0"
@@ -5548,15 +5265,6 @@ __metadata:
languageName: node
linkType: hard
-"is-core-module@npm:^2.13.0":
- version: 2.13.1
- resolution: "is-core-module@npm:2.13.1"
- dependencies:
- hasown: "npm:^2.0.0"
- checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518
- languageName: node
- linkType: hard
-
"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
@@ -5606,13 +5314,6 @@ __metadata:
languageName: node
linkType: hard
-"is-module@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-module@npm:1.0.0"
- checksum: 10c0/795a3914bcae7c26a1c23a1e5574c42eac13429625045737bf3e324ce865c0601d61aee7a5afbca1bee8cb300c7d9647e7dc98860c9bdbc3b7fdc51d8ac0bffc
- languageName: node
- linkType: hard
-
"is-node-process@npm:^1.2.0":
version: 1.2.0
resolution: "is-node-process@npm:1.2.0"
@@ -5662,15 +5363,6 @@ __metadata:
languageName: node
linkType: hard
-"is-reference@npm:1.2.1":
- version: 1.2.1
- resolution: "is-reference@npm:1.2.1"
- dependencies:
- "@types/estree": "npm:*"
- checksum: 10c0/7dc819fc8de7790264a0a5d531164f9f5b9ef5aa1cd05f35322d14db39c8a2ec78fd5d4bf57f9789f3ddd2b3abeea7728432b759636157a42db12a9e8c3b549b
- languageName: node
- linkType: hard
-
"is-stream@npm:^3.0.0":
version: 3.0.0
resolution: "is-stream@npm:3.0.0"
@@ -6297,7 +5989,7 @@ __metadata:
languageName: node
linkType: hard
-"lightningcss@npm:^1.32.0":
+"lightningcss@npm:^1.32.0, lightningcss@npm:^1.33.0":
version: 1.33.0
resolution: "lightningcss@npm:1.33.0"
dependencies:
@@ -6340,13 +6032,6 @@ __metadata:
languageName: node
linkType: hard
-"lilconfig@npm:^3.1.1":
- version: 3.1.2
- resolution: "lilconfig@npm:3.1.2"
- checksum: 10c0/f059630b1a9bddaeba83059db00c672b64dc14074e9f232adce32b38ca1b5686ab737eb665c5ba3c32f147f0002b4bee7311ad0386a9b98547b5623e87071fbe
- languageName: node
- linkType: hard
-
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
@@ -6492,13 +6177,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.memoize@npm:^4.1.2":
- version: 4.1.2
- resolution: "lodash.memoize@npm:4.1.2"
- checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8
- languageName: node
- linkType: hard
-
"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
@@ -6506,13 +6184,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.uniq@npm:^4.5.0":
- version: 4.5.0
- resolution: "lodash.uniq@npm:4.5.0"
- checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e
- languageName: node
- linkType: hard
-
"lodash.uniqby@npm:^4.7.0":
version: 4.7.0
resolution: "lodash.uniqby@npm:4.7.0"
@@ -6582,15 +6253,6 @@ __metadata:
languageName: node
linkType: hard
-"magic-string@npm:^0.30.3":
- version: 0.30.10
- resolution: "magic-string@npm:0.30.10"
- dependencies:
- "@jridgewell/sourcemap-codec": "npm:^1.4.15"
- checksum: 10c0/aa9ca17eae571a19bce92c8221193b6f93ee8511abb10f085e55ffd398db8e4c089a208d9eac559deee96a08b7b24d636ea4ab92f09c6cf42a7d1af51f7fd62b
- languageName: node
- linkType: hard
-
"magicast@npm:^0.5.2":
version: 0.5.3
resolution: "magicast@npm:0.5.3"
@@ -6703,20 +6365,6 @@ __metadata:
languageName: node
linkType: hard
-"mdn-data@npm:2.0.28":
- version: 2.0.28
- resolution: "mdn-data@npm:2.0.28"
- checksum: 10c0/20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b
- languageName: node
- linkType: hard
-
-"mdn-data@npm:2.0.30":
- version: 2.0.30
- resolution: "mdn-data@npm:2.0.30"
- checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9
- languageName: node
- linkType: hard
-
"medium-zoom@npm:^1.0.6":
version: 1.1.0
resolution: "medium-zoom@npm:1.1.0"
@@ -6772,7 +6420,7 @@ __metadata:
languageName: node
linkType: hard
-"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35":
+"mime-types@npm:^2.1.12":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -6790,15 +6438,6 @@ __metadata:
languageName: node
linkType: hard
-"mime@npm:^2":
- version: 2.6.0
- resolution: "mime@npm:2.6.0"
- bin:
- mime: cli.js
- checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c
- languageName: node
- linkType: hard
-
"mime@npm:^4.0.0":
version: 4.0.4
resolution: "mime@npm:4.0.4"
@@ -6829,15 +6468,6 @@ __metadata:
languageName: node
linkType: hard
-"mini-svg-data-uri@npm:^1.4.4":
- version: 1.4.4
- resolution: "mini-svg-data-uri@npm:1.4.4"
- bin:
- mini-svg-data-uri: cli.js
- checksum: 10c0/24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191
- languageName: node
- linkType: hard
-
"minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
@@ -7092,15 +6722,6 @@ __metadata:
languageName: node
linkType: hard
-"nanoid@npm:^3.3.7":
- version: 3.3.7
- resolution: "nanoid@npm:3.3.7"
- bin:
- nanoid: bin/nanoid.cjs
- checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3
- languageName: node
- linkType: hard
-
"natural-compare@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare@npm:1.4.0"
@@ -7136,6 +6757,15 @@ __metadata:
languageName: node
linkType: hard
+"node-addon-api@npm:^7.0.0":
+ version: 7.1.1
+ resolution: "node-addon-api@npm:7.1.1"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10c0/fb32a206276d608037fa1bcd7e9921e177fe992fc610d098aa3128baca3c0050fc1e014fa007e9b3874cf865ddb4f5bd9f43ccb7cbbbe4efaff6a83e920b17e9
+ languageName: node
+ linkType: hard
+
"node-emoji@npm:^2.1.3":
version: 2.1.3
resolution: "node-emoji@npm:2.1.3"
@@ -7202,13 +6832,6 @@ __metadata:
languageName: node
linkType: hard
-"node-releases@npm:^2.0.14":
- version: 2.0.14
- resolution: "node-releases@npm:2.0.14"
- checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9
- languageName: node
- linkType: hard
-
"nopt@npm:^7.0.0":
version: 7.2.0
resolution: "nopt@npm:7.2.0"
@@ -7449,15 +7072,6 @@ __metadata:
languageName: node
linkType: hard
-"nth-check@npm:^2.0.1":
- version: 2.1.1
- resolution: "nth-check@npm:2.1.1"
- dependencies:
- boolbase: "npm:^1.0.0"
- checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479
- languageName: node
- linkType: hard
-
"nunjucks@npm:latest":
version: 3.2.4
resolution: "nunjucks@npm:3.2.4"
@@ -7562,15 +7176,6 @@ __metadata:
languageName: node
linkType: hard
-"opener@npm:1":
- version: 1.5.2
- resolution: "opener@npm:1.5.2"
- bin:
- opener: bin/opener-bin.js
- checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79
- languageName: node
- linkType: hard
-
"optionator@npm:^0.9.3":
version: 0.9.3
resolution: "optionator@npm:0.9.3"
@@ -7862,16 +7467,6 @@ __metadata:
languageName: node
linkType: hard
-"p-queue@npm:^7.0.0":
- version: 7.4.1
- resolution: "p-queue@npm:7.4.1"
- dependencies:
- eventemitter3: "npm:^5.0.1"
- p-timeout: "npm:^5.0.2"
- checksum: 10c0/6dbd22780133bbf9cddd2be344609e23cb813f5c6f1693336a52da26631cf931702d5cfd01818b562079502f796b382fab0c1645124c81e2f509b739a35d1562
- languageName: node
- linkType: hard
-
"p-queue@npm:^8.0.1":
version: 8.0.1
resolution: "p-queue@npm:8.0.1"
@@ -7898,13 +7493,6 @@ __metadata:
languageName: node
linkType: hard
-"p-timeout@npm:^5.0.2":
- version: 5.1.0
- resolution: "p-timeout@npm:5.1.0"
- checksum: 10c0/1b026cf9d5878c64bec4341ca9cda8ec6b8b3aea8a57885ca0fe2b35753a20d767fb6f9d3aa41e1252f42bc95432c05ea33b6b18f271fb10bfb0789591850a41
- languageName: node
- linkType: hard
-
"p-timeout@npm:^6.1.2":
version: 6.1.2
resolution: "p-timeout@npm:6.1.2"
@@ -8106,13 +7694,6 @@ __metadata:
languageName: node
linkType: hard
-"path-parse@npm:^1.0.7":
- version: 1.0.7
- resolution: "path-parse@npm:1.0.7"
- checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1
- languageName: node
- linkType: hard
-
"path-scurry@npm:^1.10.1":
version: 1.10.1
resolution: "path-scurry@npm:1.10.1"
@@ -8168,13 +7749,6 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.0.1":
- version: 1.0.1
- resolution: "picocolors@npm:1.0.1"
- checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400
- languageName: node
- linkType: hard
-
"picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
@@ -8189,7 +7763,7 @@ __metadata:
languageName: node
linkType: hard
-"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4, picomatch@npm:^4.0.5":
+"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4, picomatch@npm:^4.0.5":
version: 4.0.5
resolution: "picomatch@npm:4.0.5"
checksum: 10c0/947bc6b6e1ff1e6c5aaf95b107a0839d12802f4f7b867663f67d47accba939ca1cb582cf99dfc30438efa1c4648ac5990967e783e8929c36b03e8440704ef1bd
@@ -8244,331 +7818,6 @@ __metadata:
languageName: node
linkType: hard
-"postcss-calc@npm:^9.0.1":
- version: 9.0.1
- resolution: "postcss-calc@npm:9.0.1"
- dependencies:
- postcss-selector-parser: "npm:^6.0.11"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.2.2
- checksum: 10c0/e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e
- languageName: node
- linkType: hard
-
-"postcss-colormin@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-colormin@npm:6.1.0"
- dependencies:
- browserslist: "npm:^4.23.0"
- caniuse-api: "npm:^3.0.0"
- colord: "npm:^2.9.3"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/0802963fa0d8f2fe408b2e088117670f5303c69a58c135f0ecf0e5ceff69e95e87111b22c4e29c9adb2f69aa8d3bc175f4e8e8708eeb99c9ffc36c17064de427
- languageName: node
- linkType: hard
-
-"postcss-convert-values@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-convert-values@npm:6.1.0"
- dependencies:
- browserslist: "npm:^4.23.0"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/a80066965cb58fe8fcaf79f306b32c83fc678e1f0678e43f4db3e9fee06eed6db92cf30631ad348a17492769d44757400493c91a33ee865ee8dedea9234a11f5
- languageName: node
- linkType: hard
-
-"postcss-discard-comments@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-discard-comments@npm:6.0.2"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/338a1fcba7e2314d956e5e5b9bd1e12e6541991bf85ac72aed6e229a029bf60edb31f11576b677623576169aa7d9c75e1be259ac7b50d0b735b841b5518f9da9
- languageName: node
- linkType: hard
-
-"postcss-discard-duplicates@npm:^6.0.3":
- version: 6.0.3
- resolution: "postcss-discard-duplicates@npm:6.0.3"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/24d2f00e54668f2837eb38a64b1751d7a4a73b2752f9749e61eb728f1fae837984bc2b339f7f5207aff5f66f72551253489114b59b9ba21782072677a81d7d1b
- languageName: node
- linkType: hard
-
-"postcss-discard-empty@npm:^6.0.3":
- version: 6.0.3
- resolution: "postcss-discard-empty@npm:6.0.3"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/1af08bb29f18eda41edf3602b257d89a4cf0a16f79fc773cfebd4a37251f8dbd9b77ac18efe55d0677d000b43a8adf2ef9328d31961c810e9433a38494a1fa65
- languageName: node
- linkType: hard
-
-"postcss-discard-overridden@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-discard-overridden@npm:6.0.2"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/fda70ef3cd4cb508369c5bbbae44d7760c40ec9f2e65df1cd1b6e0314317fb1d25ae7f64987ca84e66889c1e9d1862487a6ce391c159dfe04d536597bfc5030d
- languageName: node
- linkType: hard
-
-"postcss-merge-longhand@npm:^6.0.5":
- version: 6.0.5
- resolution: "postcss-merge-longhand@npm:6.0.5"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- stylehacks: "npm:^6.1.1"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/5a223a7f698c05ab42e9997108a7ff27ea1e0c33a11a353d65a04fc89c3b5b750b9e749550d76b6406329117a055adfc79dde7fee48dca5c8e167a2854ae3fea
- languageName: node
- linkType: hard
-
-"postcss-merge-rules@npm:^6.1.1":
- version: 6.1.1
- resolution: "postcss-merge-rules@npm:6.1.1"
- dependencies:
- browserslist: "npm:^4.23.0"
- caniuse-api: "npm:^3.0.0"
- cssnano-utils: "npm:^4.0.2"
- postcss-selector-parser: "npm:^6.0.16"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/6d8952dbb19b1e59bf5affe0871fa1be6515103466857cff5af879d6cf619659f8642ec7a931cabb7cdbd393d8c1e91748bf70bee70fa3edea010d4e25786d04
- languageName: node
- linkType: hard
-
-"postcss-minify-font-values@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-minify-font-values@npm:6.1.0"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/0d6567170c22a7db42096b5eac298f041614890fbe01759a9fa5ccda432f2bb09efd399d92c11bf6675ae13ccd259db4602fad3c358317dee421df5f7ab0a003
- languageName: node
- linkType: hard
-
-"postcss-minify-gradients@npm:^6.0.3":
- version: 6.0.3
- resolution: "postcss-minify-gradients@npm:6.0.3"
- dependencies:
- colord: "npm:^2.9.3"
- cssnano-utils: "npm:^4.0.2"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/7fcbcec94fe5455b89fe1b424a451198e60e0407c894bbacdc062d9fdef2f8571b483b5c3bb17f22d2f1249431251b2de22e1e4e8b0614d10624f8ee6e71afd2
- languageName: node
- linkType: hard
-
-"postcss-minify-params@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-minify-params@npm:6.1.0"
- dependencies:
- browserslist: "npm:^4.23.0"
- cssnano-utils: "npm:^4.0.2"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/e5c38c3e5fb42e2ca165764f983716e57d854a63a477f7389ccc94cd2ab8123707006613bd7f29acc6eafd296fff513aa6d869c98ac52590f886d641cb21a59e
- languageName: node
- linkType: hard
-
-"postcss-minify-selectors@npm:^6.0.4":
- version: 6.0.4
- resolution: "postcss-minify-selectors@npm:6.0.4"
- dependencies:
- postcss-selector-parser: "npm:^6.0.16"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/695ec2e1e3a7812b0cabe1105d0ed491760be3d8e9433914fb5af1fc30a84e6dc24089cd31b7e300de620b8e7adf806526c1acf8dd14077a7d1d2820c60a327c
- languageName: node
- linkType: hard
-
-"postcss-modules-extract-imports@npm:^3.0.0":
- version: 3.0.0
- resolution: "postcss-modules-extract-imports@npm:3.0.0"
- peerDependencies:
- postcss: ^8.1.0
- checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943
- languageName: node
- linkType: hard
-
-"postcss-modules-local-by-default@npm:^4.0.3":
- version: 4.0.5
- resolution: "postcss-modules-local-by-default@npm:4.0.5"
- dependencies:
- icss-utils: "npm:^5.0.0"
- postcss-selector-parser: "npm:^6.0.2"
- postcss-value-parser: "npm:^4.1.0"
- peerDependencies:
- postcss: ^8.1.0
- checksum: 10c0/f4ad35abeb685ecb25f80c93d9fe23c8b89ee45ac4185f3560e701b4d7372f9b798577e79c5ed03b6d9c80bc923b001210c127c04ced781f43cda9e32b202a5b
- languageName: node
- linkType: hard
-
-"postcss-modules-scope@npm:^3.0.0":
- version: 3.1.1
- resolution: "postcss-modules-scope@npm:3.1.1"
- dependencies:
- postcss-selector-parser: "npm:^6.0.4"
- peerDependencies:
- postcss: ^8.1.0
- checksum: 10c0/3ef6ac14fcda1581bc43e37622256bd87b99ea49c59b2aae648d057d57f5ecc634648cce9910166220a797567af674bc09246ccc010f1dd58d2863b805719109
- languageName: node
- linkType: hard
-
-"postcss-modules-values@npm:^4.0.0":
- version: 4.0.0
- resolution: "postcss-modules-values@npm:4.0.0"
- dependencies:
- icss-utils: "npm:^5.0.0"
- peerDependencies:
- postcss: ^8.1.0
- checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc
- languageName: node
- linkType: hard
-
-"postcss-normalize-charset@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-charset@npm:6.0.2"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/af32a3b4cf94163d728b8aa935b2494c9f69fbc96a33b35f67ae15dbdef7fcc8732569df97cbaaf20ca6c0103c39adad0cfce2ba07ffed283796787f6c36f410
- languageName: node
- linkType: hard
-
-"postcss-normalize-display-values@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-display-values@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/782761850c7e697fdb6c3ff53076de716a71b60f9e835efb2f7ef238de347c88b5d55f0d43cf5c608e1ee58de65360e3d9fccd5f20774bba08ded7c87d8a5651
- languageName: node
- linkType: hard
-
-"postcss-normalize-positions@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-positions@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/9fdd42a47226bbda5f68774f3c4c3a90eb4fa708aef5a997c6a52fe6cac06585c9774038fe3bc1aa86a203c29223b8d8db6ebe7580c1aa293154f2b48db0b038
- languageName: node
- linkType: hard
-
-"postcss-normalize-repeat-style@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-repeat-style@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/9133ccbdf1286920c1cd0d01c1c5fa0bd3251b717f2f3e47d691dcc44978ac1dc419d20d9ae5428bd48ee542059e66b823ba699356f5968ccced5606c7c7ca34
- languageName: node
- linkType: hard
-
-"postcss-normalize-string@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-string@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/fecc2d52c4029b24fecf2ca2fb45df5dbdf9f35012194ad4ea80bc7be3252cdcb21a0976400902320595aa6178f2cc625cc804c6b6740aef6efa42105973a205
- languageName: node
- linkType: hard
-
-"postcss-normalize-timing-functions@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-timing-functions@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/a22af0b3374704e59ae70bbbcc66b7029137e284f04e30a2ad548818d1540d6c1ed748dd8f689b9b6df5c1064085a00ad07b6f7e25ffaad49d4e661b616cdeae
- languageName: node
- linkType: hard
-
-"postcss-normalize-unicode@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-normalize-unicode@npm:6.1.0"
- dependencies:
- browserslist: "npm:^4.23.0"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/ff5746670d94dd97b49a0955c3c71ff516fb4f54bbae257f877d179bacc44a62e50a0fd6e7ddf959f2ca35c335de4266b0c275d880bb57ad7827189339ab1582
- languageName: node
- linkType: hard
-
-"postcss-normalize-url@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-url@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/4718f1c0657788d2c560b340ee8e0a4eb3eb053eba6fbbf489e9a6e739b4c5f9ce1957f54bd03497c50a1f39962bf6ab9ff6ba4976b69dd160f6afd1670d69b7
- languageName: node
- linkType: hard
-
-"postcss-normalize-whitespace@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-normalize-whitespace@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/d5275a88e29a894aeb83a2a833e816d2456dbf3f39961628df596ce205dcc4895186a023812ff691945e0804241ccc53e520d16591b5812288474b474bbaf652
- languageName: node
- linkType: hard
-
-"postcss-ordered-values@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-ordered-values@npm:6.0.2"
- dependencies:
- cssnano-utils: "npm:^4.0.2"
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/aece23a289228aa804217a85f8da198d22b9123f02ca1310b81834af380d6fbe115e4300683599b4a2ab7f1c6a1dbd6789724c47c38e2b0a3774f2ea4b4f0963
- languageName: node
- linkType: hard
-
-"postcss-reduce-initial@npm:^6.1.0":
- version: 6.1.0
- resolution: "postcss-reduce-initial@npm:6.1.0"
- dependencies:
- browserslist: "npm:^4.23.0"
- caniuse-api: "npm:^3.0.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/a8f28cf51ce9a1b9423cce1a01c1d7cbee90125930ec36435a0073e73aef402d90affe2fd3600c964b679cf738869fda447b95a9acce74414e9d67d5c6ba8646
- languageName: node
- linkType: hard
-
-"postcss-reduce-transforms@npm:^6.0.2":
- version: 6.0.2
- resolution: "postcss-reduce-transforms@npm:6.0.2"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/755ef27b3d083f586ac831f0c611a66e76f504d27e2100dc7674f6b86afad597901b4520cb889fe58ca70e852aa7fd0c0acb69a63d39dfe6a95860b472394e7c
- languageName: node
- linkType: hard
-
"postcss-selector-parser@npm:^6.0.10":
version: 6.1.2
resolution: "postcss-selector-parser@npm:6.1.2"
@@ -8579,67 +7828,6 @@ __metadata:
languageName: node
linkType: hard
-"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16":
- version: 6.1.0
- resolution: "postcss-selector-parser@npm:6.1.0"
- dependencies:
- cssesc: "npm:^3.0.0"
- util-deprecate: "npm:^1.0.2"
- checksum: 10c0/91e9c6434772506bc7f318699dd9d19d32178b52dfa05bed24cb0babbdab54f8fb765d9920f01ac548be0a642aab56bce493811406ceb00ae182bbb53754c473
- languageName: node
- linkType: hard
-
-"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4":
- version: 6.0.15
- resolution: "postcss-selector-parser@npm:6.0.15"
- dependencies:
- cssesc: "npm:^3.0.0"
- util-deprecate: "npm:^1.0.2"
- checksum: 10c0/48b425d6cef497bcf6b7d136f6fd95cfca43026955e07ec9290d3c15457de3a862dbf251dd36f42c07a0d5b5ab6f31e41acefeff02528995a989b955505e440b
- languageName: node
- linkType: hard
-
-"postcss-svgo@npm:^6.0.3":
- version: 6.0.3
- resolution: "postcss-svgo@npm:6.0.3"
- dependencies:
- postcss-value-parser: "npm:^4.2.0"
- svgo: "npm:^3.2.0"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/994b15a88cbb411f32cfa98957faa5623c76f2d75fede51f5f47238f06b367ebe59c204fecbdaf21ccb9e727239a4b290087e04c502392658a0c881ddfbd61f2
- languageName: node
- linkType: hard
-
-"postcss-unique-selectors@npm:^6.0.4":
- version: 6.0.4
- resolution: "postcss-unique-selectors@npm:6.0.4"
- dependencies:
- postcss-selector-parser: "npm:^6.0.16"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/bfb99d8a7c675c93f2e65c9d9d563477bfd46fdce9e2727d42d57982b31ccbaaf944e8034bfbefe48b3119e77fba7eb1b181c19b91cb3a5448058fa66a7c9ae9
- languageName: node
- linkType: hard
-
-"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0":
- version: 4.2.0
- resolution: "postcss-value-parser@npm:4.2.0"
- checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161
- languageName: node
- linkType: hard
-
-"postcss@npm:^8.4.31":
- version: 8.4.38
- resolution: "postcss@npm:8.4.38"
- dependencies:
- nanoid: "npm:^3.3.7"
- picocolors: "npm:^1.0.0"
- source-map-js: "npm:^1.2.0"
- checksum: 10c0/955407b8f70cf0c14acf35dab3615899a2a60a26718a63c848cf3c29f2467b0533991b985a2b994430d890bd7ec2b1963e36352b0774a19143b5f591540f7c06
- languageName: node
- linkType: hard
-
"postcss@npm:^8.5.17":
version: 8.5.23
resolution: "postcss@npm:8.5.23"
@@ -8651,6 +7839,17 @@ __metadata:
languageName: node
linkType: hard
+"postcss@npm:^8.5.23":
+ version: 8.5.25
+ resolution: "postcss@npm:8.5.25"
+ dependencies:
+ nanoid: "npm:^3.3.16"
+ picocolors: "npm:^1.1.1"
+ source-map-js: "npm:^1.2.1"
+ checksum: 10c0/0a12c1e74b456c57122e81f684e02fd98ff4d57526f794d10c996df1147158808f5ae373ac82b988c8de6cbbaa82dbd7b13803b14f5dd3cf7cc6a42ccad5c9f2
+ languageName: node
+ linkType: hard
+
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
@@ -8816,17 +8015,6 @@ __metadata:
languageName: node
linkType: hard
-"query-string@npm:^8.1.0":
- version: 8.2.0
- resolution: "query-string@npm:8.2.0"
- dependencies:
- decode-uri-component: "npm:^0.4.1"
- filter-obj: "npm:^5.1.0"
- split-on-first: "npm:^3.0.0"
- checksum: 10c0/ad78256d5464ec80a4c5723c5f134ec4aa341fcc71e1458d2b4d4663aa441c0b0bbe7dcdda60e7f09e81969fd725fb7d6f9ba4e77fd621e11ce4c3ecfb9cdec0
- languageName: node
- linkType: hard
-
"querystringify@npm:^2.1.1":
version: 2.2.0
resolution: "querystringify@npm:2.2.0"
@@ -8848,15 +8036,6 @@ __metadata:
languageName: node
linkType: hard
-"randombytes@npm:^2.1.0":
- version: 2.1.0
- resolution: "randombytes@npm:2.1.0"
- dependencies:
- safe-buffer: "npm:^5.1.0"
- checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3
- languageName: node
- linkType: hard
-
"range-parser@npm:~1.2.1":
version: 1.2.1
resolution: "range-parser@npm:1.2.1"
@@ -8943,6 +8122,13 @@ __metadata:
languageName: node
linkType: hard
+"readdirp@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "readdirp@npm:5.0.0"
+ checksum: 10c0/faf1ec57cff2020f473128da3f8d2a57813cc3a08a36c38cae1c9af32c1579906cc50ba75578043b35bade77e945c098233665797cf9730ba3613a62d6e79219
+ languageName: node
+ linkType: hard
+
"readdirp@npm:~3.6.0":
version: 3.6.0
resolution: "readdirp@npm:3.6.0"
@@ -9028,39 +8214,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve.exports@npm:^2.0.0":
- version: 2.0.2
- resolution: "resolve.exports@npm:2.0.2"
- checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98
- languageName: node
- linkType: hard
-
-"resolve@npm:^1.22.1, resolve@npm:^1.22.8":
- version: 1.22.8
- resolution: "resolve@npm:1.22.8"
- dependencies:
- is-core-module: "npm:^2.13.0"
- path-parse: "npm:^1.0.7"
- supports-preserve-symlinks-flag: "npm:^1.0.0"
- bin:
- resolve: bin/resolve
- checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a
- languageName: node
- linkType: hard
-
-"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin":
- version: 1.22.8
- resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"
- dependencies:
- is-core-module: "npm:^2.13.0"
- path-parse: "npm:^1.0.7"
- supports-preserve-symlinks-flag: "npm:^1.0.0"
- bin:
- resolve: bin/resolve
- checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729
- languageName: node
- linkType: hard
-
"responselike@npm:^1.0.2":
version: 1.0.2
resolution: "responselike@npm:1.0.2"
@@ -9149,74 +8302,80 @@ __metadata:
languageName: node
linkType: hard
-"rollup-plugin-serve@npm:^1.1.1":
- version: 1.1.1
- resolution: "rollup-plugin-serve@npm:1.1.1"
+"rolldown@npm:~1.2.0":
+ version: 1.2.2
+ resolution: "rolldown@npm:1.2.2"
dependencies:
- mime: "npm:^2"
- opener: "npm:1"
- checksum: 10c0/afe8080056f3752fb54f7856e83d786eead72f34f5332d2ebdb97c07d6f130ffa66c1d4973cc664aea9bfcd09ccb2cf95fad2f5c072fefb78445a619d574e186
- languageName: node
- linkType: hard
-
-"rollup-plugin-styler@npm:^1.8.0":
- version: 1.8.0
- resolution: "rollup-plugin-styler@npm:1.8.0"
- dependencies:
- "@rollup/pluginutils": "npm:^5.0.0"
- cosmiconfig: "npm:^8.0.0"
- cssnano: "npm:^6.0.1"
- fs-extra: "npm:^11.0.0"
- icss-utils: "npm:^5.1.0"
- mime-types: "npm:^2.1.35"
- p-queue: "npm:^7.0.0"
- postcss: "npm:^8.4.31"
- postcss-modules-extract-imports: "npm:^3.0.0"
- postcss-modules-local-by-default: "npm:^4.0.3"
- postcss-modules-scope: "npm:^3.0.0"
- postcss-modules-values: "npm:^4.0.0"
- postcss-value-parser: "npm:^4.2.0"
- query-string: "npm:^8.1.0"
- resolve: "npm:^1.22.8"
- resolve.exports: "npm:^2.0.0"
- source-map-js: "npm:^1.0.2"
- tslib: "npm:^2.6.2"
- peerDependencies:
- rollup: ^2.63.0 || ^3.0.0 || ^4.0.0
- checksum: 10c0/0be7879e1fb2d5f8e4b80243d00d894f1b25c4ed7a0b5cdbc02be922d57335a46a9bfd470678524f879a33fd4e5b4aa6e45d186ac34a1b0d86bf08eed189a9d1
+ "@oxc-project/types": "npm:=0.142.0"
+ "@rolldown/binding-android-arm64": "npm:1.2.2"
+ "@rolldown/binding-darwin-arm64": "npm:1.2.2"
+ "@rolldown/binding-darwin-x64": "npm:1.2.2"
+ "@rolldown/binding-freebsd-x64": "npm:1.2.2"
+ "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.2"
+ "@rolldown/binding-linux-arm64-gnu": "npm:1.2.2"
+ "@rolldown/binding-linux-arm64-musl": "npm:1.2.2"
+ "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.2"
+ "@rolldown/binding-linux-s390x-gnu": "npm:1.2.2"
+ "@rolldown/binding-linux-x64-gnu": "npm:1.2.2"
+ "@rolldown/binding-linux-x64-musl": "npm:1.2.2"
+ "@rolldown/binding-openharmony-arm64": "npm:1.2.2"
+ "@rolldown/binding-win32-arm64-msvc": "npm:1.2.2"
+ "@rolldown/binding-win32-x64-msvc": "npm:1.2.2"
+ "@rolldown/pluginutils": "npm:^1.0.0"
+ dependenciesMeta:
+ "@rolldown/binding-android-arm64":
+ optional: true
+ "@rolldown/binding-darwin-arm64":
+ optional: true
+ "@rolldown/binding-darwin-x64":
+ optional: true
+ "@rolldown/binding-freebsd-x64":
+ optional: true
+ "@rolldown/binding-linux-arm-gnueabihf":
+ optional: true
+ "@rolldown/binding-linux-arm64-gnu":
+ optional: true
+ "@rolldown/binding-linux-arm64-musl":
+ optional: true
+ "@rolldown/binding-linux-ppc64-gnu":
+ optional: true
+ "@rolldown/binding-linux-s390x-gnu":
+ optional: true
+ "@rolldown/binding-linux-x64-gnu":
+ optional: true
+ "@rolldown/binding-linux-x64-musl":
+ optional: true
+ "@rolldown/binding-openharmony-arm64":
+ optional: true
+ "@rolldown/binding-win32-arm64-msvc":
+ optional: true
+ "@rolldown/binding-win32-x64-msvc":
+ optional: true
+ bin:
+ rolldown: ./bin/cli.mjs
+ checksum: 10c0/78a804b9d0947d0569aac5f78ae789b107d097ef94df2ee04b0d89621ca0b62f5336037e6fc1e24209ece2f1d7cbf0d66b27db10b8022684eaf5bea89b9aa97e
languageName: node
linkType: hard
"rollup-plugin-visualizer@npm:^5.12.0":
- version: 5.12.0
- resolution: "rollup-plugin-visualizer@npm:5.12.0"
+ version: 5.14.0
+ resolution: "rollup-plugin-visualizer@npm:5.14.0"
dependencies:
open: "npm:^8.4.0"
- picomatch: "npm:^2.3.1"
+ picomatch: "npm:^4.0.2"
source-map: "npm:^0.7.4"
yargs: "npm:^17.5.1"
peerDependencies:
+ rolldown: 1.x
rollup: 2.x || 3.x || 4.x
peerDependenciesMeta:
+ rolldown:
+ optional: true
rollup:
optional: true
bin:
rollup-plugin-visualizer: dist/bin/cli.js
- checksum: 10c0/0e44a641223377ebb472bb10f2b22efa773b5f6fbe8d54f197f07c68d7a432cbf00abad79a0aa1570f70c673c792f24700d926d663ed9a4d0ad8406ae5a0f4e4
- languageName: node
- linkType: hard
-
-"rollup@npm:^3.29.4":
- version: 3.29.4
- resolution: "rollup@npm:3.29.4"
- dependencies:
- fsevents: "npm:~2.3.2"
- dependenciesMeta:
- fsevents:
- optional: true
- bin:
- rollup: dist/bin/rollup
- checksum: 10c0/65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa
+ checksum: 10c0/ec6ca9ed125bce9994ba49a340bda730661d8e8dc5c5dc014dc757185182e1eda49c6708f990cb059095e71a3741a5248f1e6ba0ced7056020692888e06b1ddf
languageName: node
linkType: hard
@@ -9236,10 +8395,12 @@ __metadata:
languageName: node
linkType: hard
-"safe-buffer@npm:^5.1.0":
- version: 5.2.1
- resolution: "safe-buffer@npm:5.2.1"
- checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3
+"rxjs@npm:^7.4.0":
+ version: 7.8.2
+ resolution: "rxjs@npm:7.8.2"
+ dependencies:
+ tslib: "npm:^2.1.0"
+ checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45
languageName: node
linkType: hard
@@ -9257,29 +8418,222 @@ __metadata:
languageName: node
linkType: hard
-"sass@npm:1.77.4":
- version: 1.77.4
- resolution: "sass@npm:1.77.4"
+"sass-embedded-all-unknown@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-all-unknown@npm:1.100.0"
dependencies:
- chokidar: "npm:>=3.0.0 <4.0.0"
- immutable: "npm:^4.0.0"
- source-map-js: "npm:>=0.6.2 <2.0.0"
- bin:
- sass: sass.js
- checksum: 10c0/b9cb4882bded282aabe38d011adfce375e1f282184fcf93dc3da5d5be834c6aa53c474c15634c351ef7bd85146cfd1cc81343654cc3bcf000d78e856da4225ef
+ sass: "npm:1.100.0"
+ conditions: (!cpu=arm | !cpu=arm64 | !cpu=riscv64 | !cpu=x64)
languageName: node
linkType: hard
-"sass@patch:sass@npm%3A1.77.4#~/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch":
- version: 1.77.4
- resolution: "sass@patch:sass@npm%3A1.77.4#~/.yarn/patches/sass-npm-1.77.4-13b6910aea.patch::version=1.77.4&hash=0f2bd0"
+"sass-embedded-android-arm64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-android-arm64@npm:1.100.0"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-android-arm@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-android-arm@npm:1.100.0"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
+"sass-embedded-android-riscv64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-android-riscv64@npm:1.100.0"
+ conditions: os=android & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-android-x64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-android-x64@npm:1.100.0"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-darwin-arm64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-darwin-arm64@npm:1.100.0"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-darwin-x64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-darwin-x64@npm:1.100.0"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-arm64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-arm64@npm:1.100.0"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-arm@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-arm@npm:1.100.0"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-musl-arm64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-musl-arm64@npm:1.100.0"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-musl-arm@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-musl-arm@npm:1.100.0"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-musl-riscv64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-musl-riscv64@npm:1.100.0"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-musl-x64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-musl-x64@npm:1.100.0"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-riscv64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-riscv64@npm:1.100.0"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-linux-x64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-linux-x64@npm:1.100.0"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-unknown-all@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-unknown-all@npm:1.100.0"
dependencies:
- chokidar: "npm:>=3.0.0 <4.0.0"
- immutable: "npm:^4.0.0"
+ sass: "npm:1.100.0"
+ conditions: (!os=android | !os=darwin | !os=linux | !os=win32)
+ languageName: node
+ linkType: hard
+
+"sass-embedded-win32-arm64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-win32-arm64@npm:1.100.0"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"sass-embedded-win32-x64@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded-win32-x64@npm:1.100.0"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
+"sass-embedded@npm:^1.100.0":
+ version: 1.100.0
+ resolution: "sass-embedded@npm:1.100.0"
+ dependencies:
+ "@bufbuild/protobuf": "npm:^2.5.0"
+ colorjs.io: "npm:^0.5.0"
+ immutable: "npm:^5.1.5"
+ rxjs: "npm:^7.4.0"
+ sass-embedded-all-unknown: "npm:1.100.0"
+ sass-embedded-android-arm: "npm:1.100.0"
+ sass-embedded-android-arm64: "npm:1.100.0"
+ sass-embedded-android-riscv64: "npm:1.100.0"
+ sass-embedded-android-x64: "npm:1.100.0"
+ sass-embedded-darwin-arm64: "npm:1.100.0"
+ sass-embedded-darwin-x64: "npm:1.100.0"
+ sass-embedded-linux-arm: "npm:1.100.0"
+ sass-embedded-linux-arm64: "npm:1.100.0"
+ sass-embedded-linux-musl-arm: "npm:1.100.0"
+ sass-embedded-linux-musl-arm64: "npm:1.100.0"
+ sass-embedded-linux-musl-riscv64: "npm:1.100.0"
+ sass-embedded-linux-musl-x64: "npm:1.100.0"
+ sass-embedded-linux-riscv64: "npm:1.100.0"
+ sass-embedded-linux-x64: "npm:1.100.0"
+ sass-embedded-unknown-all: "npm:1.100.0"
+ sass-embedded-win32-arm64: "npm:1.100.0"
+ sass-embedded-win32-x64: "npm:1.100.0"
+ supports-color: "npm:^8.1.1"
+ sync-child-process: "npm:^1.0.2"
+ varint: "npm:^6.0.0"
+ dependenciesMeta:
+ sass-embedded-all-unknown:
+ optional: true
+ sass-embedded-android-arm:
+ optional: true
+ sass-embedded-android-arm64:
+ optional: true
+ sass-embedded-android-riscv64:
+ optional: true
+ sass-embedded-android-x64:
+ optional: true
+ sass-embedded-darwin-arm64:
+ optional: true
+ sass-embedded-darwin-x64:
+ optional: true
+ sass-embedded-linux-arm:
+ optional: true
+ sass-embedded-linux-arm64:
+ optional: true
+ sass-embedded-linux-musl-arm:
+ optional: true
+ sass-embedded-linux-musl-arm64:
+ optional: true
+ sass-embedded-linux-musl-riscv64:
+ optional: true
+ sass-embedded-linux-musl-x64:
+ optional: true
+ sass-embedded-linux-riscv64:
+ optional: true
+ sass-embedded-linux-x64:
+ optional: true
+ sass-embedded-unknown-all:
+ optional: true
+ sass-embedded-win32-arm64:
+ optional: true
+ sass-embedded-win32-x64:
+ optional: true
+ bin:
+ sass: dist/bin/sass.js
+ checksum: 10c0/62650f86a2530614720dd38a650ebcd7c1d5115c157e2ee9f1f7e0fa64c0dd7d7d47624e0b7f3dfe6e6c080e14f9e0b3231e5edb365b7292423f0e8fcc4a7ad8
+ languageName: node
+ linkType: hard
+
+"sass@npm:1.100.0":
+ version: 1.100.0
+ resolution: "sass@npm:1.100.0"
+ dependencies:
+ "@parcel/watcher": "npm:^2.4.1"
+ chokidar: "npm:^5.0.0"
+ immutable: "npm:^5.1.5"
source-map-js: "npm:>=0.6.2 <2.0.0"
+ dependenciesMeta:
+ "@parcel/watcher":
+ optional: true
bin:
sass: sass.js
- checksum: 10c0/39f768553fa1a29e4cfc11b672080c1a29a6b2565378ba0cca6b56604fb40db2d25dc224cbfcfac4caf0d448a154dae1fdfd1cd674a2f8396548ea8c0a43f868
+ checksum: 10c0/e2aab47c87b69d2d4f8e48fa665138548069f56a7fd0fc4e15c9bde888b715798e49d33436e873918a8849ca3cc6c141a68618f58e2f3b2e6ec179cc309ca622
languageName: node
linkType: hard
@@ -9433,15 +8787,6 @@ __metadata:
languageName: node
linkType: hard
-"serialize-javascript@npm:^6.0.1":
- version: 6.0.2
- resolution: "serialize-javascript@npm:6.0.2"
- dependencies:
- randombytes: "npm:^2.1.0"
- checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2
- languageName: node
- linkType: hard
-
"serve-static@npm:^1.12.1":
version: 1.15.0
resolution: "serve-static@npm:1.15.0"
@@ -9585,13 +8930,6 @@ __metadata:
languageName: node
linkType: hard
-"smob@npm:^1.0.0":
- version: 1.5.0
- resolution: "smob@npm:1.5.0"
- checksum: 10c0/a1067f23265812de8357ed27312101af49b89129eb973e3f26ab5856ea774f88cace13342e66e32470f933ccfa916e0e9d0f7ca8bbd4f92dfab2af45c15956c2
- languageName: node
- linkType: hard
-
"smol-toml@npm:^1.7.0":
version: 1.7.0
resolution: "smol-toml@npm:1.7.0"
@@ -9620,20 +8958,13 @@ __metadata:
languageName: node
linkType: hard
-"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2":
+"source-map-js@npm:>=0.6.2 <2.0.0":
version: 1.0.2
resolution: "source-map-js@npm:1.0.2"
checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8
languageName: node
linkType: hard
-"source-map-js@npm:^1.2.0":
- version: 1.2.0
- resolution: "source-map-js@npm:1.2.0"
- checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4
- languageName: node
- linkType: hard
-
"source-map-js@npm:^1.2.1":
version: 1.2.1
resolution: "source-map-js@npm:1.2.1"
@@ -9641,17 +8972,7 @@ __metadata:
languageName: node
linkType: hard
-"source-map-support@npm:~0.5.20":
- version: 0.5.21
- resolution: "source-map-support@npm:0.5.21"
- dependencies:
- buffer-from: "npm:^1.0.0"
- source-map: "npm:^0.6.0"
- checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d
- languageName: node
- linkType: hard
-
-"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1":
+"source-map@npm:^0.6.1, source-map@npm:~0.6.1":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011
@@ -9659,9 +8980,9 @@ __metadata:
linkType: hard
"source-map@npm:^0.7.4":
- version: 0.7.4
- resolution: "source-map@npm:0.7.4"
- checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc
+ version: 0.7.6
+ resolution: "source-map@npm:0.7.6"
+ checksum: 10c0/59f6f05538539b274ba771d2e9e32f6c65451982510564438e048bc1352f019c6efcdc6dd07909b1968144941c14015c2c7d4369fb7c4d7d53ae769716dcc16c
languageName: node
linkType: hard
@@ -9716,13 +9037,6 @@ __metadata:
languageName: node
linkType: hard
-"split-on-first@npm:^3.0.0":
- version: 3.0.0
- resolution: "split-on-first@npm:3.0.0"
- checksum: 10c0/a1262eae12b68de235e1a08e011bf5b42c42621985ddf807e6221fb1e2b3304824913ae7019f18436b96b8fab8aef5f1ad80dedd2385317fdc51b521c3882cd0
- languageName: node
- linkType: hard
-
"split2@npm:~1.0.0":
version: 1.0.0
resolution: "split2@npm:1.0.0"
@@ -9918,18 +9232,6 @@ __metadata:
languageName: node
linkType: hard
-"stylehacks@npm:^6.1.1":
- version: 6.1.1
- resolution: "stylehacks@npm:6.1.1"
- dependencies:
- browserslist: "npm:^4.23.0"
- postcss-selector-parser: "npm:^6.0.16"
- peerDependencies:
- postcss: ^8.4.31
- checksum: 10c0/2dd2bccfd8311ff71492e63a7b8b86c3d7b1fff55d4ba5a2357aff97743e633d351cdc2f5ae3c0057637d00dab4ef5fc5b218a1b370e4585a41df22b5a5128be
- languageName: node
- linkType: hard
-
"super-regex@npm:^1.0.0":
version: 1.0.0
resolution: "super-regex@npm:1.0.0"
@@ -9965,6 +9267,15 @@ __metadata:
languageName: node
linkType: hard
+"supports-color@npm:^8.1.1":
+ version: 8.1.1
+ resolution: "supports-color@npm:8.1.1"
+ dependencies:
+ has-flag: "npm:^4.0.0"
+ checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89
+ languageName: node
+ linkType: hard
+
"supports-color@npm:^9.4.0":
version: 9.4.0
resolution: "supports-color@npm:9.4.0"
@@ -9982,30 +9293,6 @@ __metadata:
languageName: node
linkType: hard
-"supports-preserve-symlinks-flag@npm:^1.0.0":
- version: 1.0.0
- resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
- checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39
- languageName: node
- linkType: hard
-
-"svgo@npm:^3.2.0":
- version: 3.3.2
- resolution: "svgo@npm:3.3.2"
- dependencies:
- "@trysound/sax": "npm:0.2.0"
- commander: "npm:^7.2.0"
- css-select: "npm:^5.1.0"
- css-tree: "npm:^2.3.1"
- css-what: "npm:^6.1.0"
- csso: "npm:^5.0.5"
- picocolors: "npm:^1.0.0"
- bin:
- svgo: ./bin/svgo
- checksum: 10c0/a6badbd3d1d6dbb177f872787699ab34320b990d12e20798ecae915f0008796a0f3c69164f1485c9def399e0ce0a5683eb4a8045e51a5e1c364bb13a0d9f79e1
- languageName: node
- linkType: hard
-
"symbol-tree@npm:^3.2.4":
version: 3.2.4
resolution: "symbol-tree@npm:3.2.4"
@@ -10013,6 +9300,22 @@ __metadata:
languageName: node
linkType: hard
+"sync-child-process@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "sync-child-process@npm:1.0.2"
+ dependencies:
+ sync-message-port: "npm:^1.0.0"
+ checksum: 10c0/f73c87251346fba28da8ac5bc8ed4c9474504a5250ab4bd44582beae8e25c230e0a5b7b16076488fee1aed39a1865de5ed4cec19c6fa4efdbb1081c514615170
+ languageName: node
+ linkType: hard
+
+"sync-message-port@npm:^1.0.0":
+ version: 1.2.0
+ resolution: "sync-message-port@npm:1.2.0"
+ checksum: 10c0/31071ccc1e1607649aab5f1d283b0b6544632b9e8c2e8afedae394a0e97c1454978d0e415d664db8e3b1ae48a9c4cdba8d39e79edcb86c517be06123a110efae
+ languageName: node
+ linkType: hard
+
"tagged-tag@npm:^1.0.0":
version: 1.0.0
resolution: "tagged-tag@npm:1.0.0"
@@ -10074,20 +9377,6 @@ __metadata:
languageName: node
linkType: hard
-"terser@npm:^5.17.4":
- version: 5.31.1
- resolution: "terser@npm:5.31.1"
- dependencies:
- "@jridgewell/source-map": "npm:^0.3.3"
- acorn: "npm:^8.8.2"
- commander: "npm:^2.20.0"
- source-map-support: "npm:~0.5.20"
- bin:
- terser: bin/terser
- checksum: 10c0/4d49a58f64c11f3742e779a0a03aff69972ca5739decb361d909d22c8f3f7d8e2ec982a928d987d56737ad50229e8ab3f62d8ba993e4b5f360a53ed487d3c06c
- languageName: node
- linkType: hard
-
"text-table@npm:~0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
@@ -10306,20 +9595,13 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:^2.4.0":
+"tslib@npm:^2.1.0, tslib@npm:^2.4.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
languageName: node
linkType: hard
-"tslib@npm:^2.6.2":
- version: 2.6.3
- resolution: "tslib@npm:2.6.3"
- checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a
- languageName: node
- linkType: hard
-
"tuf-js@npm:^2.2.1":
version: 2.2.1
resolution: "tuf-js@npm:2.2.1"
@@ -10551,34 +9833,6 @@ __metadata:
languageName: node
linkType: hard
-"update-browserslist-db@npm:^1.0.13":
- version: 1.0.13
- resolution: "update-browserslist-db@npm:1.0.13"
- dependencies:
- escalade: "npm:^3.1.1"
- picocolors: "npm:^1.0.0"
- peerDependencies:
- browserslist: ">= 4.21.0"
- bin:
- update-browserslist-db: cli.js
- checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6
- languageName: node
- linkType: hard
-
-"update-browserslist-db@npm:^1.0.16":
- version: 1.0.16
- resolution: "update-browserslist-db@npm:1.0.16"
- dependencies:
- escalade: "npm:^3.1.2"
- picocolors: "npm:^1.0.1"
- peerDependencies:
- browserslist: ">= 4.21.0"
- bin:
- update-browserslist-db: cli.js
- checksum: 10c0/5995399fc202adbb51567e4810e146cdf7af630a92cc969365a099150cb00597e425cc14987ca7080b09a4d0cfd2a3de53fbe72eebff171aed7f9bb81f9bf405
- languageName: node
- linkType: hard
-
"update-notifier@npm:^4.1.0":
version: 4.1.3
resolution: "update-notifier@npm:4.1.3"
@@ -10675,6 +9929,13 @@ __metadata:
languageName: node
linkType: hard
+"varint@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "varint@npm:6.0.0"
+ checksum: 10c0/737fc37088a62ed3bd21466e318d21ca7ac4991d0f25546f518f017703be4ed0f9df1c5559f1dd533dddba4435a1b758fd9230e4772c1a930ef72b42f5c750fd
+ languageName: node
+ linkType: hard
+
"vis-data@npm:^7.1.9":
version: 7.1.9
resolution: "vis-data@npm:7.1.9"
@@ -10769,6 +10030,63 @@ __metadata:
languageName: node
linkType: hard
+"vite@npm:^8.1.5":
+ version: 8.2.0
+ resolution: "vite@npm:8.2.0"
+ dependencies:
+ fsevents: "npm:~2.3.3"
+ lightningcss: "npm:^1.33.0"
+ picomatch: "npm:^4.0.5"
+ postcss: "npm:^8.5.23"
+ rolldown: "npm:~1.2.0"
+ tinyglobby: "npm:^0.2.17"
+ peerDependencies:
+ "@types/node": ^20.19.0 || >=22.12.0
+ "@vitejs/devtools": ^0.4.0
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: ">=1.21.0"
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: ">=0.54.8"
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ "@vitejs/devtools":
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: 10c0/bd6a5e7b28973bac06f0e8e54833800e16d1bf38a8aef2acbfea5bbaed6d8fc715fd7cc9b0ec75ef1adbde149bb9167b085c17fe7edcd3a190b4eda16d474e5c
+ languageName: node
+ linkType: hard
+
"vitest-mock-extended@npm:^5.1.0":
version: 5.1.0
resolution: "vitest-mock-extended@npm:5.1.0"