From 80ec92e3b25c1e856bcbf29e84bfa7ece4b1c719 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Tue, 4 Aug 2026 15:00:13 -0700 Subject: [PATCH] refactor: Replace Rollup with Vite (#2656) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a high risk change: every byte the card ships is emitted by a different bundler, minified by a different minifier, and every stylesheet is compiled by a different sass. The intent is that the card's behaviour is unchanged. **Significant development win**: Build time drops from 24s to 1.1s 🎉 Also adds a test suite ('dist') that runs against the built bundle. --- .claude/settings.json | 2 +- .devcontainer/devcontainer.json | 5 +- .github/workflows/ci.yml | 93 +- .github/workflows/semantic-release.yml | 2 - .vscode/launch.json | 2 +- .vscode/tasks.json | 6 +- .yarn/patches/README.md | 7 - .../patches/sass-npm-1.77.4-13b6910aea.patch | 13 - INSTRUCTIONS.md | 2 +- docs/developing.md | 10 + package.json | 19 +- rollup.config.js | 141 -- scripts/clean-dist-plugin.js | 58 +- scripts/facade-entry-plugin.js | 57 + scripts/public-entries.ts | 13 + scripts/scss-string-plugin.js | 26 - scripts/svg-path-plugin.js | 10 +- src/camera-manager/engine-factory.ts | 4 +- src/card.ts | 2 +- src/components/call-controls.ts | 2 +- src/components/carousel.ts | 2 +- src/components/date-picker.ts | 2 +- src/components/diagnostics.ts | 2 +- src/components/drawer.ts | 4 +- src/components/editor/cameras.ts | 2 +- src/components/editor/doc-link.ts | 2 +- src/components/editor/folders.ts | 2 +- src/components/editor/keyboard-shortcuts.ts | 2 +- src/components/editor/list.ts | 2 +- src/components/editor/page.ts | 2 +- src/components/editor/section.ts | 2 +- src/components/effects/base.ts | 2 +- src/components/effects/check.ts | 2 +- src/components/effects/effects.ts | 2 +- src/components/effects/firework-burst.ts | 2 +- src/components/effects/firework-particle.ts | 2 +- src/components/effects/ghost.ts | 2 +- src/components/effects/heart.ts | 2 +- src/components/effects/shamrock.ts | 2 +- src/components/effects/snowflake.ts | 2 +- src/components/elements.ts | 2 +- src/components/gallery/gallery-core.ts | 2 +- src/components/gallery/gallery.ts | 2 +- src/components/icon.ts | 2 +- src/components/image-player.ts | 2 +- src/components/image-updating-player.ts | 2 +- src/components/image.ts | 2 +- src/components/key-assigner.ts | 2 +- src/components/live/carousel.ts | 2 +- src/components/live/grid.ts | 2 +- src/components/live/index.ts | 2 +- src/components/live/provider.ts | 2 +- .../providers/go2rtc-experimental/index.ts | 2 +- src/components/live/providers/go2rtc/index.ts | 2 +- src/components/live/providers/ha.ts | 2 +- src/components/live/providers/image.ts | 2 +- src/components/live/providers/jsmpeg.ts | 2 +- src/components/live/providers/webrtc-card.ts | 2 +- src/components/loading.ts | 2 +- src/components/media-dimensions-container.ts | 2 +- src/components/media-filter.ts | 2 +- src/components/media-grid.ts | 2 +- src/components/menu.ts | 2 +- src/components/next-prev-control.ts | 2 +- src/components/notification/block.ts | 2 +- src/components/notification/popup.ts | 2 +- src/components/overlay.ts | 2 +- src/components/progress-indicator.ts | 2 +- src/components/ptz.ts | 2 +- src/components/select.ts | 2 +- src/components/status-bar.ts | 2 +- src/components/submenu/index.ts | 2 +- src/components/submenu/select-button.ts | 2 +- src/components/submenu/submenu-button.ts | 2 +- src/components/surround-basic.ts | 2 +- src/components/surround.ts | 2 +- src/components/thumbnail-carousel.ts | 2 +- src/components/thumbnail/details.ts | 2 +- src/components/thumbnail/feature/feature.ts | 2 +- src/components/thumbnail/feature/thumbnail.ts | 2 +- src/components/thumbnail/thumbnail.ts | 2 +- src/components/timeline-core.ts | 2 +- src/components/timeline.ts | 2 +- src/components/video-player.ts | 2 +- src/components/viewer/carousel.ts | 2 +- src/components/viewer/grid.ts | 2 +- src/components/viewer/index.ts | 2 +- src/components/viewer/provider.ts | 2 +- src/components/views.ts | 2 +- src/declarations.d.ts | 5 +- src/editor.ts | 2 +- src/patches/ha-camera-stream.ts | 2 +- src/patches/ha-hls-player.ts | 2 +- src/patches/ha-web-rtc-player.ts | 2 +- src/scss/card.scss | 2 +- src/scss/drawer-inject.scss | 2 +- src/scss/effects.scss | 2 +- src/scss/themes/base.scss | 6 +- .../style-manager.browser.test.ts | 44 + tests/dist/chunks.browser.test.ts | 62 + tests/dist/dist.browser.test.ts | 64 +- tests/dist/test-utils.ts | 30 + vite.config.ts | 118 + vitest.browser.config.ts | 15 +- yarn.lock | 2020 ++++++----------- 105 files changed, 1273 insertions(+), 1719 deletions(-) delete mode 100644 .yarn/patches/README.md delete mode 100644 .yarn/patches/sass-npm-1.77.4-13b6910aea.patch delete mode 100644 rollup.config.js create mode 100644 scripts/facade-entry-plugin.js create mode 100644 scripts/public-entries.ts delete mode 100644 scripts/scss-string-plugin.js create mode 100644 tests/card-controller/style-manager.browser.test.ts create mode 100644 tests/dist/chunks.browser.test.ts create mode 100644 tests/dist/test-utils.ts create mode 100644 vite.config.ts 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"