From 687592e2df684c33572b51c4ac488c9e61e60afd Mon Sep 17 00:00:00 2001 From: Vitalij Ryndin Date: Sun, 23 Aug 2026 01:01:47 +0300 Subject: [PATCH 01/24] feat: v2 --- .editorconfig | 12 + .github/workflows/npm-publish.yaml | 39 +- .gitignore | 3 + .prettierignore | 23 - .prettierrc.cjs | 1 - .vscode/settings.json | 46 + FAQ.md | 4 - README.md | 217 +- eslint.config.mjs | 110 + examples/basic/README.md | 9 + examples/basic/package.json | 14 +- examples/basic/src/button.ts | 6 - examples/basic/src/counter.ts | 52 + examples/basic/src/index.ts | 11 +- examples/basic/src/style.scss | 9 +- examples/basic/tsconfig.json | 10 +- examples/basic/vite.config.ts | 42 +- examples/jsx/package.json | 18 - examples/jsx/src/App.tsx | 33 - examples/jsx/src/Counter.tsx | 43 - examples/jsx/src/Heading.tsx | 34 - examples/jsx/src/List.tsx | 64 - examples/jsx/src/Toggle.tsx | 24 - examples/jsx/src/index.tsx | 9 - examples/jsx/tsconfig.json | 13 - examples/jsx/vite.config.ts | 28 - examples/multiple-entries/README.md | 9 + examples/multiple-entries/package.json | 15 + examples/multiple-entries/src/bar.ts | 1 + examples/multiple-entries/src/foo.ts | 1 + .../src/vite-env.d.ts | 0 examples/multiple-entries/tsconfig.json | 9 + examples/multiple-entries/vite.config.ts | 32 + examples/react/README.md | 9 + examples/react/package.json | 20 + examples/react/src/app.tsx | 44 + examples/react/src/index.tsx | 6 + examples/react/src/style.css | 8 + examples/react/src/vite-env.d.ts | 1 + examples/react/tsconfig.json | 11 + examples/react/vite.config.ts | 24 + examples/svelte/README.md | 9 + examples/svelte/package.json | 17 + examples/svelte/src/App.svelte | 36 + examples/svelte/src/main.ts | 7 + examples/svelte/src/vite-env.d.ts | 2 + examples/svelte/svelte.config.js | 1 + examples/svelte/tsconfig.json | 9 + examples/svelte/vite.config.ts | 24 + examples/vue/README.md | 9 + examples/vue/package.json | 17 + examples/vue/src/app.vue | 55 + examples/vue/src/main.ts | 5 + examples/vue/src/vite-env.d.ts | 8 + examples/vue/tsconfig.json | 9 + examples/vue/vite.config.ts | 24 + package.json | 101 +- pnpm-lock.yaml | 7432 ++++++++++------- pnpm-workspace.yaml | 6 +- scripts/sync-types.ts | 115 + scripts/tsconfig.json | 9 + src/banner.ts | 146 +- src/build.ts | 206 + src/constants.ts | 98 +- src/css.ts | 32 + src/gm-shim.ts | 39 + src/grants.ts | 22 + src/helpers.ts | 36 - src/index.ts | 399 +- src/names.ts | 23 + src/resolve.ts | 174 + src/serve.ts | 231 + src/sourcemap.ts | 27 + src/types.ts | 232 +- src/ws.ts | 17 - test/__snapshots__/banner.test.ts.snap | 29 +- ...lpers.test.ts.snap => grants.test.ts.snap} | 0 test/banner.test.ts | 195 +- test/build.integration.test.ts | 225 + test/css.test.ts | 24 + test/fixtures/asset/src/main.ts | 3 + test/fixtures/asset/src/pixel.png | Bin 0 -> 70 bytes test/fixtures/grant-none/src/main.ts | 1 + test/fixtures/multi/src/bar.ts | 1 + test/fixtures/multi/src/foo.ts | 1 + test/fixtures/svelte/src/App.svelte | 7 + test/fixtures/svelte/src/main.ts | 7 + test/fixtures/vanilla/src/main.ts | 5 + test/fixtures/vanilla/src/style.css | 3 + test/fixtures/vue/src/App.vue | 13 + test/fixtures/vue/src/main.ts | 5 + test/gm-shim.test.ts | 29 + test/grants.test.ts | 106 + test/helpers.test.ts | 27 - test/names.test.ts | 14 + test/resolve.test.ts | 117 + test/serve.test.ts | 179 + test/sourcemap.test.ts | 26 + tsconfig.base.json | 20 + tsconfig.json | 11 +- tsdown.config.ts | 12 + tsup.config.ts | 23 - turbo.json | 3 + types/README.md | 28 +- types/greasemonkey.d.ts | 537 +- types/sources.json | 14 + types/tampermonkey.d.ts | 2050 ++--- types/violentmonkey-ambient.d.ts | 149 + types/violentmonkey.d.ts | 505 +- vitest.config.ts | 12 +- 110 files changed, 9718 insertions(+), 5304 deletions(-) create mode 100644 .editorconfig delete mode 100644 .prettierignore delete mode 100644 .prettierrc.cjs create mode 100644 .vscode/settings.json delete mode 100644 FAQ.md create mode 100644 eslint.config.mjs create mode 100644 examples/basic/README.md delete mode 100644 examples/basic/src/button.ts create mode 100644 examples/basic/src/counter.ts delete mode 100644 examples/jsx/package.json delete mode 100644 examples/jsx/src/App.tsx delete mode 100644 examples/jsx/src/Counter.tsx delete mode 100644 examples/jsx/src/Heading.tsx delete mode 100644 examples/jsx/src/List.tsx delete mode 100644 examples/jsx/src/Toggle.tsx delete mode 100644 examples/jsx/src/index.tsx delete mode 100644 examples/jsx/tsconfig.json delete mode 100644 examples/jsx/vite.config.ts create mode 100644 examples/multiple-entries/README.md create mode 100644 examples/multiple-entries/package.json create mode 100644 examples/multiple-entries/src/bar.ts create mode 100644 examples/multiple-entries/src/foo.ts rename examples/{jsx => multiple-entries}/src/vite-env.d.ts (100%) create mode 100644 examples/multiple-entries/tsconfig.json create mode 100644 examples/multiple-entries/vite.config.ts create mode 100644 examples/react/README.md create mode 100644 examples/react/package.json create mode 100644 examples/react/src/app.tsx create mode 100644 examples/react/src/index.tsx create mode 100644 examples/react/src/style.css create mode 100644 examples/react/src/vite-env.d.ts create mode 100644 examples/react/tsconfig.json create mode 100644 examples/react/vite.config.ts create mode 100644 examples/svelte/README.md create mode 100644 examples/svelte/package.json create mode 100644 examples/svelte/src/App.svelte create mode 100644 examples/svelte/src/main.ts create mode 100644 examples/svelte/src/vite-env.d.ts create mode 100644 examples/svelte/svelte.config.js create mode 100644 examples/svelte/tsconfig.json create mode 100644 examples/svelte/vite.config.ts create mode 100644 examples/vue/README.md create mode 100644 examples/vue/package.json create mode 100644 examples/vue/src/app.vue create mode 100644 examples/vue/src/main.ts create mode 100644 examples/vue/src/vite-env.d.ts create mode 100644 examples/vue/tsconfig.json create mode 100644 examples/vue/vite.config.ts create mode 100644 scripts/sync-types.ts create mode 100644 scripts/tsconfig.json create mode 100644 src/build.ts create mode 100644 src/css.ts create mode 100644 src/gm-shim.ts create mode 100644 src/grants.ts delete mode 100644 src/helpers.ts create mode 100644 src/names.ts create mode 100644 src/resolve.ts create mode 100644 src/serve.ts create mode 100644 src/sourcemap.ts delete mode 100644 src/ws.ts rename test/__snapshots__/{helpers.test.ts.snap => grants.test.ts.snap} (100%) create mode 100644 test/build.integration.test.ts create mode 100644 test/css.test.ts create mode 100644 test/fixtures/asset/src/main.ts create mode 100644 test/fixtures/asset/src/pixel.png create mode 100644 test/fixtures/grant-none/src/main.ts create mode 100644 test/fixtures/multi/src/bar.ts create mode 100644 test/fixtures/multi/src/foo.ts create mode 100644 test/fixtures/svelte/src/App.svelte create mode 100644 test/fixtures/svelte/src/main.ts create mode 100644 test/fixtures/vanilla/src/main.ts create mode 100644 test/fixtures/vanilla/src/style.css create mode 100644 test/fixtures/vue/src/App.vue create mode 100644 test/fixtures/vue/src/main.ts create mode 100644 test/gm-shim.test.ts create mode 100644 test/grants.test.ts delete mode 100644 test/helpers.test.ts create mode 100644 test/names.test.ts create mode 100644 test/resolve.test.ts create mode 100644 test/serve.test.ts create mode 100644 test/sourcemap.test.ts create mode 100644 tsconfig.base.json create mode 100644 tsdown.config.ts delete mode 100644 tsup.config.ts create mode 100644 types/sources.json create mode 100644 types/violentmonkey-ambient.d.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5d47c21 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.github/workflows/npm-publish.yaml b/.github/workflows/npm-publish.yaml index 44455a8..9821a42 100644 --- a/.github/workflows/npm-publish.yaml +++ b/.github/workflows/npm-publish.yaml @@ -6,44 +6,19 @@ on: - master jobs: - cache-and-install: + publish: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - - name: Install Node.js - uses: actions/setup-node@v4 + - uses: pnpm/setup@v2 with: - node-version: 20 + cache: true - - uses: pnpm/action-setup@v4 - name: Install pnpm - id: pnpm-install - with: - version: "9.9.0" - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install - - - name: Build - run: pnpm build + - run: pnpm type-check + - run: pnpm test + - run: pnpm build - name: Publish shell: bash diff --git a/.gitignore b/.gitignore index 776b03c..91870e0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ **/.turbo *.log *.tgz +.pnpm-store +.DS_Store +.eslintcache diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index fcaabd2..0000000 --- a/.prettierignore +++ /dev/null @@ -1,23 +0,0 @@ -node_modules -dist -build -logs -.next -.turbo -.github -.angular -.svelte-kit -.vscode -*.log* -*.log -*.lock -*.yaml -*.yml -*.sh -*.svg -*rc.* -*.htm -*.html -*.json -*.md -.*ignore diff --git a/.prettierrc.cjs b/.prettierrc.cjs deleted file mode 100644 index de79051..0000000 --- a/.prettierrc.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@crashmax/prettier-config') diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7f83ce8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,46 @@ +{ + "js/ts.tsdk.path": "./node_modules/typescript/lib", + "js/ts.preferences.importModuleSpecifierEnding": "index", + + // ESLint in the extension host sees Cursor's bundled TS 7 and dies. + // Run the language server in Node so require('typescript') is the 6.x shim. + "eslint.runtime": "node", + "eslint.useFlatConfig": true, + + // Format on save + "prettier.enable": false, + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + + // Silent the stylistic rules in your IDE, but still auto fix them + "eslint.rules.customizations": [ + { "rule": "style/*", "severity": "off", "fixable": true }, + { "rule": "format/*", "severity": "off", "fixable": true }, + { "rule": "*-indent", "severity": "off", "fixable": true }, + { "rule": "*-spacing", "severity": "off", "fixable": true }, + { "rule": "*-spaces", "severity": "off", "fixable": true }, + { "rule": "*-order", "severity": "off", "fixable": true }, + { "rule": "*-dangle", "severity": "off", "fixable": true }, + { "rule": "*-newline", "severity": "off", "fixable": true }, + { "rule": "*quotes", "severity": "off", "fixable": true }, + { "rule": "*semi", "severity": "off", "fixable": true } + ], + + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "typescript", + "javascriptreact", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "css", + "scss", + "yaml" + ] +} diff --git a/FAQ.md b/FAQ.md deleted file mode 100644 index 1dc0e99..0000000 --- a/FAQ.md +++ /dev/null @@ -1,4 +0,0 @@ -# Tampermonkey FAQ - -- [Scripts fail on FF because of CSP errors](https://github.com/Tampermonkey/tampermonkey/issues/952#issuecomment-638373937) -- [Updating script from local file](https://github.com/Tampermonkey/tampermonkey/issues/977#issuecomment-657268478) diff --git a/README.md b/README.md index 796d4cd..9a46e78 100644 --- a/README.md +++ b/README.md @@ -4,84 +4,61 @@ [![license](https://img.shields.io/github/license/crashmax-dev/vite-userscript-plugin)](./LICENCE) [![template](https://img.shields.io/github/package-json/v/crashmax-dev/vite-userscript-template?label=vite-userscript-template)](https://github.com/crashmax-dev/vite-userscript-template) -> ⚑️ A plugin for developing and building a Tampermonkey userscript based on [Vite](https://vitejs.dev). - -## Table of contents - -- [Features](#features) -- [Install](#install) -- [Setup config](#setup-config) -- [Using style modules](#using-style-modules) -- [Plugin configuration](#plugin-configuration) +> A Vite 8 plugin for developing and building Tampermonkey / Violentmonkey / Greasemonkey userscripts. ## Features -- πŸ”₯ Reloading page after changing any files. -- πŸ”§ Configure Tampermonkey's Userscript header. -- πŸ’¨ Import all [`grant`](https://www.tampermonkey.net/documentation.php#_grant)'s to the header by default in development mode. -- πŸ“ Automatic addition of used [`grant`](https://www.tampermonkey.net/documentation.php#_grant)'s in the code when building for production. -- πŸ“¦ Built-in Tampermonkey's TypeScript type definition. +- πŸ”₯ Vite HMR +- 🎨 CSS from imports and SFC ` diff --git a/examples/svelte/src/main.ts b/examples/svelte/src/main.ts new file mode 100644 index 0000000..4f3580a --- /dev/null +++ b/examples/svelte/src/main.ts @@ -0,0 +1,7 @@ +import { mount } from "svelte"; + +import App from "./App.svelte"; + +if (document.body) { + mount(App, { target: document.body }); +} diff --git a/examples/svelte/src/vite-env.d.ts b/examples/svelte/src/vite-env.d.ts new file mode 100644 index 0000000..4078e74 --- /dev/null +++ b/examples/svelte/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/examples/svelte/svelte.config.js b/examples/svelte/svelte.config.js new file mode 100644 index 0000000..ff8b4c5 --- /dev/null +++ b/examples/svelte/svelte.config.js @@ -0,0 +1 @@ +export default {}; diff --git a/examples/svelte/tsconfig.json b/examples/svelte/tsconfig.json new file mode 100644 index 0000000..c390bc8 --- /dev/null +++ b/examples/svelte/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "paths": { + "vite-userscript-plugin": ["../../src/index.ts"] + } + }, + "include": ["src/**/*", "vite.config.ts"] +} diff --git a/examples/svelte/vite.config.ts b/examples/svelte/vite.config.ts new file mode 100644 index 0000000..baa09f2 --- /dev/null +++ b/examples/svelte/vite.config.ts @@ -0,0 +1,24 @@ +import { createRequire } from "node:module"; + +import { svelte } from "@sveltejs/vite-plugin-svelte"; +import { defineConfig } from "vite"; +import Userscript from "vite-userscript-plugin"; + +const { name, version } = createRequire(import.meta.url)("./package.json") as { + name: string; + version: string; +}; + +export default defineConfig({ + plugins: [ + svelte(), + Userscript({ + entry: "src/main.ts", + header: { + name, + version, + match: "https://example.com/", + }, + }), + ], +}); diff --git a/examples/vue/README.md b/examples/vue/README.md new file mode 100644 index 0000000..a492806 --- /dev/null +++ b/examples/vue/README.md @@ -0,0 +1,9 @@ +# Vue example + +Vue SFC userscript. + +```bash +pnpm dev +``` + +Install the printed `*.dev.user.js` URL. On HTTPS sites use `server.https`. Do not use `public/` for assets. diff --git a/examples/vue/package.json b/examples/vue/package.json new file mode 100644 index 0000000..bde9aa2 --- /dev/null +++ b/examples/vue/package.json @@ -0,0 +1,17 @@ +{ + "name": "vue-example", + "type": "module", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "type-check": "tsc --noEmit -p tsconfig.json" + }, + "devDependencies": { + "@vitejs/plugin-vue": "6.0.8", + "vite": "8.2.2", + "vite-userscript-plugin": "workspace:*", + "vue": "3.5.41" + } +} diff --git a/examples/vue/src/app.vue b/examples/vue/src/app.vue new file mode 100644 index 0000000..7574cc0 --- /dev/null +++ b/examples/vue/src/app.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/examples/vue/src/main.ts b/examples/vue/src/main.ts new file mode 100644 index 0000000..35fd75c --- /dev/null +++ b/examples/vue/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from "vue"; + +import App from "./app.vue"; + +createApp(App).mount(document.body); diff --git a/examples/vue/src/vite-env.d.ts b/examples/vue/src/vite-env.d.ts new file mode 100644 index 0000000..fc5f35e --- /dev/null +++ b/examples/vue/src/vite-env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module "*.vue" { + import type { DefineComponent } from "vue"; + + const component: DefineComponent; + export default component; +} diff --git a/examples/vue/tsconfig.json b/examples/vue/tsconfig.json new file mode 100644 index 0000000..c390bc8 --- /dev/null +++ b/examples/vue/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "paths": { + "vite-userscript-plugin": ["../../src/index.ts"] + } + }, + "include": ["src/**/*", "vite.config.ts"] +} diff --git a/examples/vue/vite.config.ts b/examples/vue/vite.config.ts new file mode 100644 index 0000000..57701d5 --- /dev/null +++ b/examples/vue/vite.config.ts @@ -0,0 +1,24 @@ +import { createRequire } from "node:module"; + +import vue from "@vitejs/plugin-vue"; +import { defineConfig } from "vite"; +import Userscript from "vite-userscript-plugin"; + +const { name, version } = createRequire(import.meta.url)("./package.json") as { + name: string; + version: string; +}; + +export default defineConfig({ + plugins: [ + vue(), + Userscript({ + entry: "src/main.ts", + header: { + name, + version, + match: "https://example.com/", + }, + }), + ], +}); diff --git a/package.json b/package.json index 36a8771..3cfff06 100644 --- a/package.json +++ b/package.json @@ -1,32 +1,20 @@ { "name": "vite-userscript-plugin", - "version": "1.11.0", "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "files": [ - "dist", - "types" - ], - "packageManager": "pnpm@9.9.0", - "engines": { - "node": ">=20" - }, - "scripts": { - "dev": "tsup --watch", - "build": "tsup", - "test": "vitest", - "test:ui": "vitest --ui --watch", - "dev:examples": "turbo run dev --filter=./examples/*", - "build:examples": "turbo run build --filter=./examples/*", - "format": "prettier --write --ignore-unknown **" + "version": "2.0.0", + "packageManager": "pnpm@11.22.0", + "author": { + "name": "Vitalij Ryndin", + "url": "https://github.com/crashmax-dev" }, + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/crashmax-dev/vite-userscript-plugin.git" }, + "bugs": { + "url": "https://github.com/crashmax-dev/vite-userscript-plugin/issues" + }, "keywords": [ "vite", "vite-plugin", @@ -35,37 +23,54 @@ "greasemonkey", "violentmonkey" ], - "author": { - "name": "Vitalij Ryndin", - "email": "sys@crashmax.ru", - "url": "https://crashmax.ru" + "exports": { + ".": "./dist/index.js", + "./types/tampermonkey": "./types/tampermonkey.d.ts", + "./types/greasemonkey": "./types/greasemonkey.d.ts", + "./types/violentmonkey": "./types/violentmonkey.d.ts" }, - "license": "MIT", - "bugs": { - "url": "https://github.com/crashmax-dev/vite-userscript-plugin/issues" + "types": "./dist/index.d.ts", + "files": [ + "dist", + "types" + ], + "engines": { + "node": ">=22" + }, + "scripts": { + "dev": "tsdown --watch", + "dev:examples": "turbo run dev --filter=./examples/*", + "build": "tsdown", + "build:examples": "turbo run build --filter=./examples/*", + "test": "vitest", + "test:ui": "vitest --ui --watch", + "type-check": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p scripts/tsconfig.json && turbo run type-check --filter=./examples/*", + "sync-types": "node scripts/sync-types.ts", + "lint": "eslint . --cache", + "lint:fix": "eslint . --fix --cache" + }, + "peerDependencies": { + "vite": "^8.0.0" }, "dependencies": { - "get-port": "7.1.0", - "open": "10.1.0", - "picocolors": "1.1.0", - "serve-handler": "6.1.5", - "websocket": "1.0.35" + "open": "11.0.1" }, "devDependencies": { - "@crashmax/prettier-config": "5.0.2", - "@crashmax/tsconfig": "2.1.0", - "@types/node": "22.5.4", - "@types/serve-handler": "6.1.4", - "@types/websocket": "1.0.10", - "@vitest/ui": "2.0.5", - "tsup": "8.2.4", - "turbo": "2.1.1", - "typescript": "5.5.4", - "vite": "5.4.3", - "vite-plugin-dts": "4.1.1", - "vitest": "2.0.5" - }, - "peerDependencies": { - "vite": ">=3.0.0" + "@antfu/eslint-config": "7.2.0", + "@sveltejs/vite-plugin-svelte": "7.3.0", + "@types/node": "22.20.1", + "@typescript/native": "npm:typescript@7.0.2", + "@vitejs/plugin-vue": "6.0.8", + "@vitest/ui": "4.1.11", + "eslint": "9.39.2", + "eslint-plugin-format": "2.0.1", + "prettier-plugin-css-order": "2.2.0", + "svelte": "5.56.10", + "tsdown": "0.22.14", + "turbo": "2.10.11", + "typescript": "npm:@typescript/typescript6@6.0.2", + "vite": "8.2.2", + "vitest": "4.1.11", + "vue": "3.5.41" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b31473..5e14316 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,3692 +8,5425 @@ importers: .: dependencies: - get-port: - specifier: 7.1.0 - version: 7.1.0 open: - specifier: 10.1.0 - version: 10.1.0 - picocolors: - specifier: 1.1.0 - version: 1.1.0 - serve-handler: - specifier: 6.1.5 - version: 6.1.5 - websocket: - specifier: 1.0.35 - version: 1.0.35 + specifier: 11.0.1 + version: 11.0.1 devDependencies: - '@crashmax/prettier-config': - specifier: 5.0.2 - version: 5.0.2(@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3))(prettier-plugin-multiline-arrays@3.0.6(prettier@3.3.3))(prettier@3.3.3) - '@crashmax/tsconfig': - specifier: 2.1.0 - version: 2.1.0 + '@antfu/eslint-config': + specifier: 7.2.0 + version: 7.2.0(@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1))(@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(@vue/compiler-sfc@3.5.41)(eslint-plugin-format@2.0.1(eslint@9.39.2(supports-color@8.1.1)))(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)(vitest@4.1.11) + '@sveltejs/vite-plugin-svelte': + specifier: 7.3.0 + version: 7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) '@types/node': - specifier: 22.5.4 - version: 22.5.4 - '@types/serve-handler': - specifier: 6.1.4 - version: 6.1.4 - '@types/websocket': - specifier: 1.0.10 - version: 1.0.10 + specifier: 22.20.1 + version: 22.20.1 + '@typescript/native': + specifier: npm:typescript@7.0.2 + version: typescript@7.0.2 + '@vitejs/plugin-vue': + specifier: 6.0.8 + version: 6.0.8(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))(vue@3.5.41(@typescript/typescript6@6.0.2)) '@vitest/ui': - specifier: 2.0.5 - version: 2.0.5(vitest@2.0.5) - tsup: - specifier: 8.2.4 - version: 8.2.4(@microsoft/api-extractor@7.47.7(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.5.4) + specifier: 4.1.11 + version: 4.1.11(vitest@4.1.11) + eslint: + specifier: 9.39.2 + version: 9.39.2(supports-color@8.1.1) + eslint-plugin-format: + specifier: 2.0.1 + version: 2.0.1(eslint@9.39.2(supports-color@8.1.1)) + prettier-plugin-css-order: + specifier: 2.2.0 + version: 2.2.0(postcss@8.5.26)(prettier@3.9.6) + svelte: + specifier: 5.56.10 + version: 5.56.10(@typescript-eslint/types@8.67.0) + tsdown: + specifier: 0.22.14 + version: 0.22.14(@typescript/typescript6@6.0.2) turbo: - specifier: 2.1.1 - version: 2.1.1 + specifier: 2.10.11 + version: 2.10.11 typescript: - specifier: 5.5.4 - version: 5.5.4 + specifier: npm:@typescript/typescript6@6.0.2 + version: '@typescript/typescript6@6.0.2' vite: - specifier: 5.4.3 - version: 5.4.3(@types/node@22.5.4)(sass@1.78.0) - vite-plugin-dts: - specifier: 4.1.1 - version: 4.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(sass@1.78.0)) + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) vitest: - specifier: 2.0.5 - version: 2.0.5(@types/node@22.5.4)(@vitest/ui@2.0.5)(sass@1.78.0) + specifier: 4.1.11 + version: 4.1.11(@types/node@22.20.1)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + vue: + specifier: 3.5.41 + version: 3.5.41(@typescript/typescript6@6.0.2) examples/basic: devDependencies: - sass: - specifier: 1.78.0 - version: 1.78.0 + sass-embedded: + specifier: 1.103.1 + version: 1.103.1 + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) vite-userscript-plugin: specifier: workspace:* version: link:../.. - examples/jsx: - dependencies: - redom-jsx: - specifier: 3.29.4 - version: 3.29.4 + examples/multiple-entries: devDependencies: - babel-plugin-transform-react-jsx: - specifier: 6.24.1 - version: 6.24.1 - vite-redom-jsx: - specifier: 2.1.1 - version: 2.1.1(redom-jsx@3.29.4)(vite@5.4.3(@types/node@22.5.4)(sass@1.78.0)) + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) vite-userscript-plugin: specifier: workspace:* version: link:../.. -packages: - - '@ampproject/remapping@2.2.0': - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@augment-vir/common@23.4.0': - resolution: {integrity: sha512-QIrJ1doD00TNbOzeVrk9KgPTzRlIjayxERnhtbQjK/AFPj5yElcB03GbnGdQZPzws/R+5gfMM5cZiH7QyBP+Kg==} - - '@augment-vir/common@28.2.4': - resolution: {integrity: sha512-5Ib0OX7YlxAuFrG+MAoTsz6RlKMcbdMdoNGcEEKH/ezc/ZKMy/IHZ9Z/ZcCHYopZ4ocGXzVY4KUOiJ8+CXXvTA==} - - '@augment-vir/common@29.3.0': - resolution: {integrity: sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==} - - '@babel/code-frame@7.18.6': - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.21.0': - resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.21.0': - resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.21.1': - resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.20.7': - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.18.9': - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.21.0': - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.18.6': - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} + examples/react: + devDependencies: + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.4 + version: 19.2.4(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: 6.1.0 + version: 6.1.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + vite-userscript-plugin: + specifier: workspace:* + version: link:../.. - '@babel/helper-module-imports@7.18.6': - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} + examples/svelte: + devDependencies: + '@sveltejs/vite-plugin-svelte': + specifier: 7.3.0 + version: 7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + svelte: + specifier: 5.56.10 + version: 5.56.10(@typescript-eslint/types@8.67.0) + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + vite-userscript-plugin: + specifier: workspace:* + version: link:../.. - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} + examples/vue: + devDependencies: + '@vitejs/plugin-vue': + specifier: 6.0.8 + version: 6.0.8(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))(vue@3.5.41(@typescript/typescript6@6.0.2)) + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + vite-userscript-plugin: + specifier: workspace:* + version: link:../.. + vue: + specifier: 3.5.41 + version: 3.5.41(@typescript/typescript6@6.0.2) - '@babel/helper-module-transforms@7.21.2': - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} - engines: {node: '>=6.9.0'} +packages: - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} + '@antfu/eslint-config@7.2.0': + resolution: {integrity: sha512-I/GWDvkvUfp45VolhrMpOdkfBC69f6lstJi0BCSooylQZwH4OTJPkbXCkp4lKh9V4BeMrcO3G5iC+YIfY28/aA==} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.20.2': - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.20.2': - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.18.6': - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.19.4': - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.19.1': - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.21.0': - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.21.0': - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} - engines: {node: '>=6.9.0'} + '@eslint-react/eslint-plugin': ^2.0.1 + '@next/eslint-plugin-next': '>=15.0.0' + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-jsx-a11y: '>=6.10.2' + eslint-plugin-react-hooks: ^7.0.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@next/eslint-plugin-next': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-jsx-a11y: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} - engines: {node: '>=6.9.0'} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@babel/highlight@7.18.6': - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.21.2': - resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-jsx@7.18.6': - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/template@7.20.7': - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} + '@bufbuild/protobuf@2.14.0': + resolution: {integrity: sha512-C3UGsiCwSprE2NKIIFA3hCDlpXTMCAXRZuEVp88L1GY36Y41+rYL5fryE+nOFhp4p4JPQvdV8PQ4DWgHgeTE+w==} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} - '@babel/traverse@7.21.2': - resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} - engines: {node: '>=6.9.0'} + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} - engines: {node: '>=6.9.0'} + '@dprint/formatter@0.5.1': + resolution: {integrity: sha512-cdZUrm0iv/FnnY3CKE2dEcVhNEzrC551aE2h2mTFwQCRBrqyARLDnb7D+3PlXTUVp3s34ftlnGOVCmhLT9DeKA==} - '@babel/types@7.21.2': - resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} - engines: {node: '>=6.9.0'} + '@dprint/markdown@0.21.1': + resolution: {integrity: sha512-XbZ/R7vRrBaZFYXG6vAvLvtaMVXHu8XB+xwie7OYrG+dPoGDP8UADGirIbzUyX8TmrAZcl6QBmalipTGlpzRmQ==} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} - engines: {node: '>=6.9.0'} + '@dprint/toml@0.7.0': + resolution: {integrity: sha512-eFaQTcfxKHB+YyTh83x7GEv+gDPuj9q5NFOTaoj5rZmQTbj6OgjjMxUicmS1R8zYcx8YAq5oA9J3YFa5U6x2gA==} - '@crashmax/prettier-config@5.0.2': - resolution: {integrity: sha512-TTzCCGD1pGl4+t1qG7HPjj44Uh64iGTVuc+aQgKKCFn/wheYkOx9cWUCN1Q8q2hy0Q1WTwXD+KeIG874DPi+9A==} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.1.1 - prettier: 3.2.5 - prettier-plugin-multiline-arrays: 3.0.3 + '@es-joy/jsdoccomment@0.86.0': + resolution: {integrity: sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@crashmax/tsconfig@2.1.0': - resolution: {integrity: sha512-zpdsmiRV2ag7yJNdL0fAhaNvfbK24W0BpF4qIkMJzGkFS+awZJjsYQ+2HKZZTl9rfouCVgYLGClRuif74Li2jg==} - engines: {node: '>=14'} + '@es-joy/jsdoccomment@0.88.0': + resolution: {integrity: sha512-GK/HL/claLLNo5KG705auIlZMwEtmn88ofSGuLsmVZwKBqMPJhW9DiznYNq07QEqz9BPtA3LBfYImtZmhVvRAw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] + '@es-joy/resolve.exports@1.2.0': + resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} + engines: {node: '>=10'} - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@ianvs/prettier-plugin-sort-imports@4.3.1': - resolution: {integrity: sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==} + '@eslint-community/eslint-plugin-eslint-comments@4.7.2': + resolution: {integrity: sha512-LF03qURSwEWm2dz5wtdDCzNk+7Opl0X7q6I3undsaIuNsEiNvRV3BCtqu14Q/6Pzg1tBj44LcxpW2EpSLZStZw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@vue/compiler-sfc': 2.7.x || 3.x - prettier: 2 || 3 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@2.1.0': + resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^8.40 || 9 || 10 peerDependenciesMeta: - '@vue/compiler-sfc': + eslint: optional: true - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.1.1': - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/gen-mapping@0.3.2': - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@eslint/config-helpers@0.5.5': + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + '@eslint/eslintrc@3.3.6': + resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@eslint/markdown@7.5.1': + resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/trace-mapping@0.3.17': - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@microsoft/api-extractor-model@7.29.4': - resolution: {integrity: sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} - '@microsoft/api-extractor-model@7.29.6': - resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==} + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} - '@microsoft/api-extractor@7.47.4': - resolution: {integrity: sha512-HKm+P4VNzWwvq1Ey+Jfhhj/3MjsD+ka2hbt8L5AcRM95lu1MFOYnz3XlU7Gr79Q/ZhOb7W/imAKeYrOI0bFydg==} - hasBin: true + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} - '@microsoft/api-extractor@7.47.7': - resolution: {integrity: sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==} - hasBin: true + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - '@microsoft/tsdoc-config@0.17.0': - resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} - '@microsoft/tsdoc@0.15.0': - resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@ota-meshi/ast-token-store@0.3.0': + resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-project/types@0.146.0': + resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - '@rollup/rollup-android-arm-eabi@4.21.2': - resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + '@oxfmt/binding-android-arm-eabi@0.35.0': + resolution: {integrity: sha512-BaRKlM3DyG81y/xWTsE6gZiv89F/3pHe2BqX2H4JbiB8HNVlWWtplzgATAE5IDSdwChdeuWLDTQzJ92Lglw3ZA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.21.2': - resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + '@oxfmt/binding-android-arm64@0.35.0': + resolution: {integrity: sha512-/O+EbuAJYs6nde/anv+aID6uHsGQApyE9JtYBo/79KyU8e6RBN3DMbT0ix97y1SOnCglurmL2iZ+hlohjP2PnQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.21.2': - resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + '@oxfmt/binding-darwin-arm64@0.35.0': + resolution: {integrity: sha512-pGqRtqlNdn9d4VrmGUWVyQjkw79ryhI6je9y2jfqNUIZCfqceob+R97YYAoG7C5TFyt8ILdLVoN+L2vw/hSFyA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.2': - resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + '@oxfmt/binding-darwin-x64@0.35.0': + resolution: {integrity: sha512-8GmsDcSozTPjrCJeGpp+sCmS9+9V5yRrdEZ1p/sTWxPG5nYeAfSLuS0nuEYjXSO+CtdSbStIW6dxa+4NM58yRw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': - resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + '@oxfmt/binding-freebsd-x64@0.35.0': + resolution: {integrity: sha512-QyfKfTe0ytHpFKHAcHCGQEzN45QSqq1AHJOYYxQMgLM3KY4xu8OsXHpCnINjDsV4XGnQzczJDU9e04Zmd8XqIQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.35.0': + resolution: {integrity: sha512-u+kv3JD6P3J38oOyUaiCqgY5TNESzBRZJ5lyZQ6c2czUW2v5SIN9E/KWWa9vxoc+P8AFXQFUVrdzGy1tK+nbPQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.2': - resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + '@oxfmt/binding-linux-arm-musleabihf@0.35.0': + resolution: {integrity: sha512-1NiZroCiV57I7Pf8kOH4XGR366kW5zir3VfSMBU2D0V14GpYjiYmPYFAoJboZvp8ACnZKUReWyMkNKSa5ad58A==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.2': - resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + '@oxfmt/binding-linux-arm64-gnu@0.35.0': + resolution: {integrity: sha512-7Q0Xeg7ZnW2nxnZ4R7aF6DEbCFls4skgHZg+I63XitpNvJCbVIU8MFOTZlvZGRsY9+rPgWPQGeUpLHlyx0wvMA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.21.2': - resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + '@oxfmt/binding-linux-arm64-musl@0.35.0': + resolution: {integrity: sha512-5Okqi+uhYFxwKz8hcnUftNNwdm8BCkf6GSCbcz9xJxYMm87k1E4p7PEmAAbhLTk7cjSdDre6TDL0pDzNX+Y22Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': - resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + '@oxfmt/binding-linux-ppc64-gnu@0.35.0': + resolution: {integrity: sha512-9k66pbZQXM/lBJWys3Xbc5yhl4JexyfqkEf/tvtq8976VIJnLAAL3M127xHA3ifYSqxdVHfVGTg84eiBHCGcNw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.35.0': + resolution: {integrity: sha512-aUcY9ofKPtjO52idT6t0SAQvEF6ctjzUQa1lLp7GDsRpSBvuTrBQGeq0rYKz3gN8dMIQ7mtMdGD9tT4LhR8jAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.21.2': - resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + '@oxfmt/binding-linux-riscv64-musl@0.35.0': + resolution: {integrity: sha512-C6yhY5Hvc2sGM+mCPek9ZLe5xRUOC/BvhAt2qIWFAeXMn4il04EYIjl3DsWiJr0xDMTJhvMOmD55xTRPlNp39w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.21.2': - resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + '@oxfmt/binding-linux-s390x-gnu@0.35.0': + resolution: {integrity: sha512-RG2hlvOMK4OMZpO3mt8MpxLQ0AAezlFqhn5mI/g5YrVbPFyoCv9a34AAvbSJS501ocOxlFIRcKEuw5hFvddf9g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.21.2': - resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + '@oxfmt/binding-linux-x64-gnu@0.35.0': + resolution: {integrity: sha512-wzmh90Pwvqj9xOKHJjkQYBpydRkaXG77ZvDz+iFDRRQpnqIEqGm5gmim2s6vnZIkDGsvKCuTdtxm0GFmBjM1+w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.21.2': - resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + '@oxfmt/binding-linux-x64-musl@0.35.0': + resolution: {integrity: sha512-+HCqYCJPCUy5I+b2cf+gUVaApfgtoQT3HdnSg/l7NIcLHOhKstlYaGyrFZLmUpQt4WkFbpGKZZayG6zjRU0KFA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.35.0': + resolution: {integrity: sha512-kFYmWfR9YL78XyO5ws+1dsxNvZoD973qfVMNFOS4e9bcHXGF7DvGC2tY5UDFwyMCeB33t3sDIuGONKggnVNSJA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.21.2': - resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + '@oxfmt/binding-win32-arm64-msvc@0.35.0': + resolution: {integrity: sha512-uD/NGdM65eKNCDGyTGdO8e9n3IHX+wwuorBvEYrPJXhDXL9qz6gzddmXH8EN04ejUXUujlq4FsoSeCfbg0Y+Jg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.2': - resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + '@oxfmt/binding-win32-ia32-msvc@0.35.0': + resolution: {integrity: sha512-oSRD2k8J2uxYDEKR2nAE/YTY9PobOEnhZgCmspHu0+yBQ665yH8lFErQVSTE7fcGJmJp/cC6322/gc8VFuQf7g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.2': - resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + '@oxfmt/binding-win32-x64-msvc@0.35.0': + resolution: {integrity: sha512-WCDJjlS95NboR0ugI2BEwzt1tYvRDorDRM9Lvctls1SLyKYuNRCyrPwp1urUPFBnwgBNn9p2/gnmo7gFMySRoQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rushstack/node-core-library@5.5.1': - resolution: {integrity: sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/node-core-library@5.7.0': - resolution: {integrity: sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] - '@rushstack/rig-package@0.5.3': - resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] - '@rushstack/terminal@0.13.3': - resolution: {integrity: sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] - '@rushstack/terminal@0.14.0': - resolution: {integrity: sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] - '@rushstack/ts-command-line@4.22.3': - resolution: {integrity: sha512-edMpWB3QhFFZ4KtSzS8WNjBgR4PXPPOVrOHMbb7kNpmQ1UFS9HdVtjCXg1H5fG+xYAbeE+TMPcVPUyX2p84STA==} + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] - '@rushstack/ts-command-line@4.22.6': - resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] - '@types/argparse@1.0.38': - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] - '@types/node@22.5.4': - resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] - '@types/serve-handler@6.1.4': - resolution: {integrity: sha512-aXy58tNie0NkuSCY291xUxl0X+kGYy986l4kqW6Gi4kEXgr6Tx0fpSH7YwUSa5usPpG3s9DBeIR6hHcDtL2IvQ==} + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] - '@types/websocket@1.0.10': - resolution: {integrity: sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==} + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} - '@vitest/runner@2.0.5': - resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} - '@vitest/snapshot@2.0.5': - resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@vitest/ui@2.0.5': - resolution: {integrity: sha512-m+ZpVt/PVi/nbeRKEjdiYeoh0aOfI9zr3Ria9LO7V2PlMETtAXJS3uETEZkc8Be2oOl8mhd7Ew+5SRBXRYncNw==} - peerDependencies: - vitest: 2.0.5 + '@rolldown/binding-android-arm-eabi@1.2.5': + resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@rolldown/binding-android-arm64@1.2.5': + resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@volar/language-core@2.4.4': - resolution: {integrity: sha512-kO9k4kTLfxpg+6lq7/KAIv3m2d62IHuCL6GbVgYZTpfKvIGoAIlDxK7pFcB/eczN2+ydg/vnyaeZ6SGyZrJw2w==} + '@rolldown/binding-darwin-arm64@1.2.5': + resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@volar/source-map@2.4.4': - resolution: {integrity: sha512-xG3PZqOP2haG8XG4Pg3PD1UGDAdqZg24Ru8c/qYjYAnmcj6GBR64mstx+bZux5QOyRaJK+/lNM/RnpvBD3489g==} + '@rolldown/binding-darwin-x64@1.2.5': + resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@volar/typescript@2.4.4': - resolution: {integrity: sha512-QQMQRVj0fVHJ3XdRKiS1LclhG0VBXdFYlyuHRQF/xLk2PuJuHNWP26MDZNvEVCvnyUQuUQhIAfylwY5TGPgc6w==} + '@rolldown/binding-freebsd-x64@1.2.5': + resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@vue/compiler-core@3.5.3': - resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.5': + resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@vue/compiler-dom@3.5.3': - resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==} + '@rolldown/binding-linux-arm64-gnu@1.2.5': + resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@rolldown/binding-linux-arm64-musl@1.2.5': + resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] - '@vue/language-core@2.0.29': - resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@rolldown/binding-linux-ppc64-gnu@1.2.5': + resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@vue/shared@3.5.3': - resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==} + '@rolldown/binding-linux-s390x-gnu@1.2.5': + resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true + '@rolldown/binding-linux-x64-gnu@1.2.5': + resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true + '@rolldown/binding-linux-x64-musl@1.2.5': + resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true + '@rolldown/binding-openharmony-arm64@1.2.5': + resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + '@rolldown/binding-win32-arm64-msvc@1.2.5': + resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + '@rolldown/binding-win32-x64-msvc@1.2.5': + resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + '@sindresorhus/base62@1.0.0': + resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} + engines: {node: '>=18'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + '@sveltejs/acorn-typescript@1.0.13': + resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==} + peerDependencies: + acorn: ^8.9.0 - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + '@sveltejs/vite-plugin-svelte@7.3.0': + resolution: {integrity: sha512-QbRoJyD92e9R0ufeQIWRHrCC0ObcqSv/aBDdrQMoU+sypav3cDx5wytdQ6GLdXjEMO6xjrXGzfkUygng8JMv0A==} + engines: {node: ^20.19 || ^22.12 || >=24} + peerDependencies: + svelte: ^5.46.4 + vite: ^8.0.0-beta.7 || ^8.0.0 - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + '@turbo/darwin-64@2.10.11': + resolution: {integrity: sha512-v3R+1R/Ysozyo+p7Ri8MCIbndOvYt3DgPFrGLhrhQHfvyvbxyH3WyJj+A/2JTNmNleuAlh3JUyCV0iSVHIONTA==} + cpu: [x64] + os: [darwin] - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + '@turbo/darwin-arm64@2.10.11': + resolution: {integrity: sha512-R0a0CvGAeYYsBgPIgFNB3agGXh6qukjduNhFlwVVX1Ss2IdBJLXmgjytNGmo084bLKS0B6UdLRwKhXMHKKaObQ==} + cpu: [arm64] + os: [darwin] - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + '@turbo/linux-64@2.10.11': + resolution: {integrity: sha512-dGlY2vg7jpsLjGS1bf9sD/cw1sGMAYbeHGQKGRFxd5Zaj+Ufbj8cNXl/vIit8ueCU97zhL/znn60ZV5iSfZAxw==} + cpu: [x64] + os: [android, linux] - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + '@turbo/linux-arm64@2.10.11': + resolution: {integrity: sha512-eSP9+jjsSCBs2x0QpJZlp49dSD1EIMwXH7PsMIhdWk7w6IThhuKJ+jL95JQ2IW7tRjRmdh8gKcKQtrHLD5R5lA==} + cpu: [arm64] + os: [android, linux] - babel-helper-builder-react-jsx@6.26.0: - resolution: {integrity: sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==} + '@turbo/windows-64@2.10.11': + resolution: {integrity: sha512-4aD7edogJ8arK8DOyvjTI2KKwmchD5M/WM4BZgidrtFf7aSgn8Ce2rJnDwmriw980c2cKlHnhXtlGy38VtKB8g==} + cpu: [x64] + os: [win32] - babel-plugin-syntax-jsx@6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + '@turbo/windows-arm64@2.10.11': + resolution: {integrity: sha512-m8tJkIrTrbQ9O1uHxV0GUq623Zg1678xGna8eMsy4KbygUX/wVFgdZDYV/AxyoyaW/U7nyKoBvaDVwm22p9xqA==} + cpu: [arm64] + os: [win32] - babel-plugin-transform-react-jsx@6.24.1: - resolution: {integrity: sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - babel-plugin-transform-redom-jsx@3.0.5: - resolution: {integrity: sha512-ZrYZTktvqlzaYKKvQE0TYYQImJNx7mw8O/05IamprmS6YnoUuur5mkuOifH3cy+boAnCOA3s08Sg1gUDhqkVtA==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - babel-types@6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + '@types/node@22.20.1': + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} - browser-or-node@2.1.1: - resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} + peerDependencies: + '@types/react': ^19.2.0 - browser-or-node@3.0.0: - resolution: {integrity: sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==} + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} - browserslist@4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.67.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - esbuild: '>=0.18' + typescript: '>=4.8.4 <6.1.0' - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - caniuse-lite@1.0.30001466: - resolution: {integrity: sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - caniuse-lite@1.0.30001658: - resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} - engines: {node: '>=12'} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] - compare-versions@6.1.1: - resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] - content-disposition@0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] - core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + '@typescript/typescript6@6.0.2': + resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} + hasBin: true - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + '@vitejs/plugin-react@6.1.0': + resolution: {integrity: sha512-qd2BzUBehkov86WFhg0JkEFEYyCLG9uPCe6qWTY/kRlss9OvJrOF2UbIWT7p+8IzZHkEu0DNGHc4HSv+JdDLsw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - supports-color: '*' + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.145.0 + vite: ^8.0.0 peerDependenciesMeta: - supports-color: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + oxc-transform-react: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} + '@vitejs/plugin-vue@6.0.8': + resolution: {integrity: sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - supports-color: '*' + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.6.27': + resolution: {integrity: sha512-X1RCAfwbatG4GFbJ/1PIHP9MSZMt0JJThqbYID+vS4L783k6QGlLPe421wQE8dHXuGCcenVLsydiM4qzsYWxhg==} + engines: {node: '>=18'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.57.0' + typescript: '>=5.0.0' + vitest: '*' peerDependenciesMeta: - supports-color: + '@typescript-eslint/eslint-plugin': + optional: true + typescript: + optional: true + vitest: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} peerDependencies: - supports-color: '*' + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: - supports-color: + msw: + optional: true + vite: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + '@vitest/ui@4.1.11': + resolution: {integrity: sha512-r/rwyKoev21mWdRGSEkZOqkQ2BYy68mwjihg9M90nNRbf4NGrgzZ4cj6JNCEwlOGJkbKeMgsjlykvwKUbRr7gw==} + peerDependencies: + vitest: 4.1.11 - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - electron-to-chromium@1.4.328: - resolution: {integrity: sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==} + '@vue/compiler-core@3.5.41': + resolution: {integrity: sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==} - electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} + '@vue/compiler-dom@3.5.41': + resolution: {integrity: sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + '@vue/compiler-sfc@3.5.41': + resolution: {integrity: sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + '@vue/compiler-ssr@3.5.41': + resolution: {integrity: sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + '@vue/reactivity@3.5.41': + resolution: {integrity: sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==} - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} + '@vue/runtime-core@3.5.41': + resolution: {integrity: sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==} - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + '@vue/runtime-dom@3.5.41': + resolution: {integrity: sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==} - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} + '@vue/server-renderer@3.5.41': + resolution: {integrity: sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true + '@vue/shared@3.5.41': + resolution: {integrity: sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==} - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true + '@yuku-codegen/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-C/0zV5IhgVdYhGJTwrY0v8dknxlhiKwtVJkMUaexu9/QvRmzlV4vfU3hZlUSgqc2BxQHntL1mCVbDq8j0FRFDw==} + cpu: [arm64] + os: [android] - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + '@yuku-codegen/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-/u+REDMI4a0/lsJXTM4c53/w31OGZLOReZIyg62uhgLs0kc8NHsj/nOcxTdlQjq5gi0zhdkccD9LaLTXcdzPvw==} + cpu: [arm64] + os: [darwin] - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + '@yuku-codegen/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-sMMzFOwCo4WXR+/6zIBThOocSC50iIIZZdfiIDbaLvj0Ax/rWt/iavyfEAqajyvzydLyCqR/ZItdLWSRlu1umw==} + cpu: [x64] + os: [darwin] - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + '@yuku-codegen/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-MpdpKXix9P+Y1rKgjvcNeNtGjXeL1CmttNhYINrWls8kRpm4xM/oBGTmn6w7to8lAlwj5jm8q03dQPl5mRv4Qw==} + cpu: [x64] + os: [freebsd] - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-rr1srFLlPAmC1vtxfc9C1YLDe3iH09YjfSeeIidBqKhzx1MATjOAq4mjlRUOnhr/L27MotWIYOFKwVsd5JZFOg==} + cpu: [arm] + os: [linux] + libc: [glibc] - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + '@yuku-codegen/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-eAufXh8qBRpiSO6ueaMDL+yyoXIGLhpUce72YbcACtZU2qhExwBIJyEtQf5kH2Ki0X2aqkSjSfog4OPtKXan3Q==} + cpu: [arm] + os: [linux] + libc: [musl] - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-gw4w6wPoHObBrdIC4duVWLmJOvpdE25j5D7yrM5mACNlK4klRz/lv8hK+ssQk9EJHBgZjSaqZIJVFgqNYbfv7A==} + cpu: [arm64] + os: [linux] + libc: [glibc] - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-L68N6Y4XkqcIaKo3Ra88JEvBEH4AHff44A4INcrxeVWZ8CZtu2tCpfVxe3hR8qQQMcvBSQlDn24KpkCKEhVvfA==} + cpu: [arm64] + os: [linux] + libc: [musl] - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-dzyAbltJmf3Cqlb8HcFuYIf5Yn0fl1vTr3XJ9HiVNNvOlhqPSArOqtw9vI1p6/VTXTjrMLXlU+s+/kNHiIy/Cw==} + cpu: [x64] + os: [linux] + libc: [glibc] - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + '@yuku-codegen/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-Otw4MH3404q0Bbvl+YTdW9aoUV5vXmUw8260bWvt1XlaoIX/ceSgI4ygheRDMfBPoHt6FDayQaO9OLVUZAgkFA==} + cpu: [x64] + os: [linux] + libc: [musl] - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + '@yuku-codegen/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-qo/jyrzryiBuKEsFiuWaBCBe3tRMynQ0qFWFgOEjcCMQeZfBm+wKiVEUEFXXLc7bh8YezguAWp0Mtnhq4ARNyA==} + cpu: [arm64] + os: [win32] - expect-type@0.15.0: - resolution: {integrity: sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==} + '@yuku-codegen/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-D5lDsVDx6m00E6bWySlWdH72Ca4TPSaphDqB6QjU6MpuNLIJqoGoatYyq2rOmBE8Zv/kunot/o58KGL03P3eiA==} + cpu: [x64] + os: [win32] - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + '@yuku-parser/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-eGKYiUDX7Y0V7tDTmg+JTVnXnjMqfXXsorZ+EDf5kxwchQ3Or1HS14MzI2fw+jFhHR85fCWt+mtX33Yao73hIQ==} + cpu: [arm64] + os: [android] - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-url-parser@1.1.3: - resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + '@yuku-parser/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-Re0RHelKLnjEURulY2/KxW+Ngb8zuNA4BRZuMwgGQNzVumT6u4U2N2hc01oeYVNVof0i7GrXE4UCNBgbpRRnjQ==} + cpu: [arm64] + os: [darwin] - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + '@yuku-parser/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-Hn8DROtQkjlA1ACbPgj4a7eP9IuVOI504oiTwpkWPbpaDWD9KdmnVYCqW+1LfenNK/g7O9NhWGpXEdaCNX7lIA==} + cpu: [x64] + os: [darwin] - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + '@yuku-parser/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-bAP2OV8wRuzplX/jYxv9+vvqQT8JxyNphI8fLfXGL054Xs+4/J5u33cIm3y4rxY8rdoLmmdiJs2Tq7r7lrDRfA==} + cpu: [x64] + os: [freebsd] - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} + '@yuku-parser/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-kTYwJQQgmZeAWdDIWabiReIZMpmfLueIj1tCmjStUtFGhR1Z0qwxonKVfUC4N7h/VhGGzLZ//7O1kgt1QKqgCg==} + cpu: [arm] + os: [linux] + libc: [glibc] - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + '@yuku-parser/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-uL4jE8HPT2BLlxAXyD10LqgPuXa9eDa0BKpCdSANmzIJghq/2eZo3/gQNtaxPZMupWoxjYzSad9IXrwu7aYPXQ==} + cpu: [arm] + os: [linux] + libc: [musl] - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-3gVN4pWSKZmXiNX7cU164dR9MPvesCHnlH6nPfpK+yQsCuYphjKKplcb4SnZBrhiqmXbgb2HR0c2TS0IZUPhgA==} + cpu: [arm64] + os: [linux] + libc: [glibc] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + '@yuku-parser/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-S0mwfEjoLpxzXeZw802Wa4RaELsQiPtWqG6INcy8j4GtvNFtl4LCX3eGO1XLn9pyLAISLzTRyU3zUCBUPin8lg==} + cpu: [arm64] + os: [linux] + libc: [musl] - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + '@yuku-parser/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-lnbWdPmerE5D1uH1G4IEZKnPzCrWCStRGrtgpSIe1RibAo5bZIjDbbbPYXmMHCEh4F+x/JaJpElh26a3r+BPbg==} + cpu: [x64] + os: [linux] + libc: [glibc] - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + '@yuku-parser/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-769uwndMvMzUvATWbAcEvyLHKA+DzhHSCl/obBUrRdYfRo26yxui6S8y3z7uJ+Naup7UKrDxrpK7OnQkxkl9KQ==} + cpu: [x64] + os: [linux] + libc: [musl] - get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} - engines: {node: '>=16'} + '@yuku-parser/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-mEB/9PlaAkisJ6KWGz0zvywXoU6+80dTlR2LwS7s/jcXXoU6fm2+sitBZXtqu3+Q4DcDgPxM45uWMCzPs0TSRw==} + cpu: [arm64] + os: [win32] - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + '@yuku-parser/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-8vNB2DP0ou61nGb8tc/qfi41gfyDXz1MHr2zqL3nR+cJ6CEbiuWV/l/a/vv151gCgiZLLAyGkQGENpozdg716w==} + cpu: [x64] + os: [win32] - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} + '@yuku-toolchain/types@0.8.7': + resolution: {integrity: sha512-2Z53dNxAJL6UvFoIrDZvYf3zlO8s4VJK4O2hhaB4mXVwwpX/7ajtss3cmfqKvamlNLWyt9FSWs4eoYdlbxpnHA==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} hasBin: true - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} - immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + baseline-browser-mapping@2.11.16: + resolution: {integrity: sha512-H/bNPUFHewJHyCTdjn1n3Pit5+2GmWT6mmeHImPX+8MA9NA6b67jO4gYmi4jTbCJb2otq34KMZnovndDPqJwhQ==} + engines: {node: '>=6.0.0'} + hasBin: true - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + browserslist@4.28.8: + resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + builtin-modules@5.3.0: + resolution: {integrity: sha512-hMQUl2bUFG339QygPM97E+mc8OY1IAchORZxm4a/frcYwKzozMzRVDBwHW0NjOqGElLm2O37AVQE8ikxlZHrMQ==} + engines: {node: '>=18.20'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + caniuse-lite@1.0.30001809: + resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} - hasBin: true - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - hasBin: true - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + colorjs.io@0.7.1: + resolution: {integrity: sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + comment-parser@1.4.6: + resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} + engines: {node: '>= 12.0.0'} - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + comment-parser@1.4.7: + resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} + engines: {node: '>= 12.0.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} + comment-parser@1.4.8: + resolution: {integrity: sha512-rKZTGo4fzKYna8UcL0isTg5wkBNla7bxTypLwZQXjIdi++IdP1OJ41rI5Mti3/jltkPujbu4i9LIARYA+zpotQ==} + engines: {node: '>= 12.0.0'} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + core-js-compat@3.50.0: + resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} + engines: {node: '>=6.4.0'} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + css-declaration-sorter@7.4.0: + resolution: {integrity: sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - mime-db@1.33.0: - resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} - engines: {node: '>= 0.6'} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - mime-types@2.1.18: - resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} - engines: {node: '>= 0.6'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + devalue@5.9.1: + resolution: {integrity: sha512-+17vil3EVQRzvtDJSFuTWEb8XJRvXqAiV3qZyQWD398QeXUa6CxsUyMdD1fxzEhUrd4FojitFz7lhIHBTlV4fw==} - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dts-resolver@3.0.0: + resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + electron-to-chromium@1.5.412: + resolution: {integrity: sha512-z4rMe3esBzlzovKHj4gxJnsCGZRK5l4baUvm+gCGJBPE+gsyUMKsuU9tnEUtI1dOebXz1ytAPGjvXhmQ7rIPwA==} - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + engines: {node: '>=10.13.0'} - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} hasBin: true - node-releases@2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + eslint-config-flat-gitignore@2.3.0: + resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==} + peerDependencies: + eslint: ^9.5.0 || ^10.0.0 - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + eslint-flat-config-utils@3.2.0: + resolution: {integrity: sha512-PHgo1X5uqIorJONLVD9BIaOSdoYFD3z/AeJljdqDPlWVRpeCYkDbK9k0AXoYVqqNJr6FEYIEr5Rm2TSktLQcHw==} - open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} - engines: {node: '>=18'} + eslint-formatting-reporter@0.0.0: + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} + peerDependencies: + eslint: '>=8.40.0' - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + eslint-json-compat-utils@0.2.3: + resolution: {integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 || ^3.0.0 + peerDependenciesMeta: + '@eslint/json': + optional: true - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + eslint-parser-plain@0.1.1: + resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==} - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + eslint-plugin-antfu@3.2.3: + resolution: {integrity: sha512-U2fnz/H0gFPxpuC7QpaHa0Jv2AgCZ5hunp36SOP/yWo8yFzgvMh8X4pZ4uN4IKoqtBhk7G3HuVa93Urf51+sZg==} + peerDependencies: + eslint: '*' - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + eslint-plugin-command@3.5.3: + resolution: {integrity: sha512-JIhmUOW2K2Dw1K+p4mtj5potkqTZ4ZaicrTkgCygPZCWErP2+O2F46n7ZwGKapeEjiwcVqoY8u01SxNUUXWPeQ==} + peerDependencies: + '@typescript-eslint/typescript-estree': '*' + '@typescript-eslint/utils': '*' + eslint: '*' - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + eslint-plugin-format@2.0.1: + resolution: {integrity: sha512-0BA65p5DAiuKtx5MmMJfPk9WaTjoHHbyVW7ZXRhaZoA1fdiMHhay9QRiDL2wr0hJWZxdF7CRThOK/70VUKVg2g==} + peerDependencies: + eslint: ^8.40.0 || ^9.0.0 || ^10.0.0 - path-to-regexp@2.2.1: - resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + eslint-plugin-import-lite@0.5.2: + resolution: {integrity: sha512-XvfdWOC5dSLEI9krIPRlNmKSI2ViIE9pVylzfV9fCq0ZpDaNeUk6o0wZv0OzN83QdadgXp1NsY0qjLINxwYCsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + eslint-plugin-jsdoc@62.9.0: + resolution: {integrity: sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + eslint-plugin-jsonc@2.21.1: + resolution: {integrity: sha512-dbNR5iEnQeORwsK2WZzr3QaMtFCY3kKJVMRHPzUpKzMhmVy2zIpVgFDpX8MNoIdoqz6KCpCfOJavhfiSbZbN+w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} + eslint-plugin-n@17.24.0: + resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + eslint-plugin-no-only-tests@3.4.0: + resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} + engines: {node: '>=5.0.0'} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + eslint-plugin-perfectionist@5.10.1: + resolution: {integrity: sha512-Kprsp9Us0GqAesYaAIzUViw57xYp5WBqzXrcE0Mtww++E5fexWXYBipMuuD7yvyH4vvpBH0+oJ+OMAmZ0oYXkw==} + engines: {node: ^20.0.0 || >=22.0.0} + peerDependencies: + eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + eslint-plugin-pnpm@1.8.0: + resolution: {integrity: sha512-qdDaMJGYP1RmMF7DehgxrGh0oRlhoolIVTLjLMOvCzGNkyrABXGmcTsbQe4uYQTR0uOiQ2QK4e6i8fSmdrnZdQ==} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + eslint-plugin-regexp@2.10.0: + resolution: {integrity: sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' - pkg-types@1.2.0: - resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + eslint-plugin-toml@1.5.0: + resolution: {integrity: sha512-qBjRywEkKxO2uYOjus//6GVF1r+Hg5QDkRO8RTY6XcaXgWfBU0DhwpFmJa2Ljf0Sz49r7DdZlpKwwHmJ4nmH1Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: '>=9.38.0' - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} + eslint-plugin-unicorn@62.0.0: + resolution: {integrity: sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==} + engines: {node: ^20.10.0 || >=21.0.0} peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 + eslint: '>=9.38.0' + + eslint-plugin-unused-imports@4.4.1: + resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^10.0.0 || ^9.0.0 || ^8.0.0 peerDependenciesMeta: - jiti: - optional: true - postcss: + '@typescript-eslint/eslint-plugin': optional: true - tsx: + + eslint-plugin-vue@10.10.0: + resolution: {integrity: sha512-dL9x9rBHqqNcByWiLOHK6L0SB97V82/NC0cZRn9cXPjM7pCuWlpQQP9bFH4vjBv80ej1ZpzAkuD8zWH1o9bZbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-eslint-parser: ^10.3.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': optional: true - yaml: + '@typescript-eslint/parser': optional: true - postcss@8.4.45: - resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} - engines: {node: ^10 || ^12 || >=14} + eslint-plugin-yml@3.8.1: + resolution: {integrity: sha512-E/70psRwxz5EJ8dBtzrFfqSiiInuSytbdtFCjueb/GcKjsWzPBfxfhtQePImMAPjHwMA/VDurO7DJwStDJ4wWg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + eslint: '>=9.38.0' - prettier-plugin-multiline-arrays@3.0.6: - resolution: {integrity: sha512-FrWVa7MoDQo9b5XoLPrqIDClb0k+O8wOIsIr1DutRXhcerLY8PfIe/yYeTVD/vpRISkSXCBEYmj5Voe0wb5dEQ==} + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} peerDependencies: - prettier: '>=3.0.0' + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - proxy-vir@1.0.0: - resolution: {integrity: sha512-WV1gkBxUOwLSz0Bn09tisIqLK7leAqtFm/474t3L0hQKJw7/gdrkGcWw0/OT1PhSy+TDS6swfq7Niuoq3XJhkQ==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - range-parser@1.2.0: - resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} - engines: {node: '>= 0.6'} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - redom-jsx@3.29.4: - resolution: {integrity: sha512-6WfPCZKSLPYqffL6TjTzVnHbwSQcyw4YIONUdGGxK2uOYMfQ7KYiDdex5tW4ctGTYHs8Ia8WHqxdy6GPYCc3zg==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + esrap@2.3.5: + resolution: {integrity: sha512-KciPkeZZX8srrh6xELzLR2cBaWOzgBQ4CwggO6Dh/KMlrfOcIcfyXCVy/Vvc3/OlS5gvFOd5tcxUYuaGM8o45A==} + peerDependencies: + '@typescript-eslint/types': ^8.2.0 + peerDependenciesMeta: + '@typescript-eslint/types': + optional: true - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} - rollup@4.21.2: - resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - run-time-assertions@1.5.2: - resolution: {integrity: sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - sass@1.78.0: - resolution: {integrity: sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==} - engines: {node: '>=14.0.0'} - hasBin: true + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} - semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true + exsolve@1.1.1: + resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - serve-handler@6.1.5: - resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + get-tsconfig@5.0.0-beta.5: + resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + engines: {node: '>=20.20.0'} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + globals@17.11.0: + resolution: {integrity: sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==} + engines: {node: '>=18'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + hookable@6.1.1: + resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + immutable@5.1.9: + resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + import-without-cache@0.4.0: + resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} + engines: {node: ^22.18.0 || >=24.0.0} - tinypool@1.0.1: - resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} - engines: {node: ^18.0.0 || >=20.0.0} + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} - tinyspy@3.0.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} - engines: {node: '>=14.0.0'} + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true - to-fast-properties@1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} + engines: {node: '>=12.0.0'} - tsup@8.2.4: - resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==} - engines: {node: '>=18'} + jsdoc-type-pratt-parser@7.2.0: + resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} + engines: {node: '>=20.0.0'} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - turbo-darwin-64@2.1.1: - resolution: {integrity: sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==} - cpu: [x64] - os: [darwin] + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - turbo-darwin-arm64@2.1.1: - resolution: {integrity: sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsonc-eslint-parser@2.4.2: + resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsonc-eslint-parser@3.3.0: + resolution: {integrity: sha512-hYTGkHGNRZnXOFZ1urhINADoqDrGfpy53cjw+dxk84QE0pUDujQzeUeamNs6Mz44/TKD49z2x6/GVSu4ZrtA+Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - turbo-linux-64@2.1.1: - resolution: {integrity: sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==} + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] os: [linux] + libc: [glibc] - turbo-linux-arm64@2.1.1: - resolution: {integrity: sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==} + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] - turbo-windows-64@2.1.1: - resolution: {integrity: sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==} + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} cpu: [x64] - os: [win32] + os: [linux] + libc: [glibc] - turbo-windows-arm64@2.1.1: - resolution: {integrity: sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==} + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - turbo@2.1.1: - resolution: {integrity: sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==} - hasBin: true + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} - engines: {node: '>=16'} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} + engines: {node: '>=14'} - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + magic-string@1.2.2: + resolution: {integrity: sha512-veT/+7iXrXzT39XnEN4lOxtNl72dMgJ8Lp+5Bd6YcMSWpb0n0MjBM8Uuooi6jgJr8dhUW2swQgBmoZVMni5SVg==} - update-browserslist-db@1.0.10: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - vite-node@2.0.5: - resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - vite-plugin-dts@4.1.1: - resolution: {integrity: sha512-SxYXwJQbAZ1IMtGEcOuzzZtDWCdcV2JkU7esvpPA8E5tIWVcJB42rZwN9EdULicWGLfaXrUgPIGVSidXBTae2Q==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - vite-redom-jsx@2.1.1: - resolution: {integrity: sha512-9puQ8JivM0aS6s6Za+VF0lU0nY7uccaM4w+9fzLq9KXqEsSOkfOLLuPalcbTXdGGmGn/HKwWF3KYPpfYIi1m6A==} - peerDependencies: - redom-jsx: '>=3.29.0' - vite: '>=2.9.0' + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - vite@5.4.3: - resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - vitest@2.0.5: - resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.5 - '@vitest/ui': 2.0.5 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - vue-tsc@2.0.29: - resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} - hasBin: true - peerDependencies: - typescript: '>=5.0.0' + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - websocket@1.0.35: - resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} - engines: {node: '>=4.0.0'} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-releases@2.0.53: + resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} + engines: {node: '>=18'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-deep-merge@2.0.1: + resolution: {integrity: sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==} + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + ohash@2.0.12: + resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==} + + open@11.0.1: + resolution: {integrity: sha512-NzwMUB6C1D0+Kd+9iMS/H4k+Ck3cTX6Ckyfr/gAGlmvSE1LUQZnEZvWBi4PYmMwH/S5SMeTXnE+9uAz8uF+pWw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + oxfmt@0.35.0: + resolution: {integrity: sha512-QYeXWkP+aLt7utt5SLivNIk09glWx9QE235ODjgcEZ3sd1VMaUBSpLymh6ZRCA76gD2rMP4bXanUz/fx+nLM9Q==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} - yaeti@0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} -snapshots: + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} - '@ampproject/remapping@2.2.0': - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - '@augment-vir/common@23.4.0': - dependencies: - browser-or-node: 2.1.1 - run-time-assertions: 1.5.2 - type-fest: 4.26.1 + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - '@augment-vir/common@28.2.4': - dependencies: - browser-or-node: 3.0.0 - run-time-assertions: 1.5.2 - type-fest: 4.26.1 + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - '@augment-vir/common@29.3.0': - dependencies: - browser-or-node: 3.0.0 - run-time-assertions: 1.5.2 - type-fest: 4.26.1 + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - '@babel/code-frame@7.18.6': - dependencies: - '@babel/highlight': 7.18.6 + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.0 + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} - '@babel/compat-data@7.21.0': {} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} - '@babel/compat-data@7.25.4': {} + pnpm-workspace-yaml@1.8.0: + resolution: {integrity: sha512-rqGldoFOzjalWzlPtzAi/RcjAyep+Pjl4QUKJ6/oEZXzhVAX79GS/i8gjhQT715g75kTkyfHjL9eBPGZ9Co++Q==} - '@babel/core@7.21.0': - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + postcss-less@6.0.0: + resolution: {integrity: sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==} + engines: {node: '>=12'} + peerDependencies: + postcss: ^8.3.5 - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@7.1.5: + resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==} + engines: {node: '>=4'} + + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + powershell-utils@0.2.0: + resolution: {integrity: sha512-ZlsFlG7MtSFCoc5xreOvBAozCJ6Pf06opgJjh9ONEv418xpZSAzNjstD36C6+JwOnfSqOW/9uDkqKjezTdxZhw==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + + prettier-plugin-css-order@2.2.0: + resolution: {integrity: sha512-GCkwEgQ2roT7le+zpUFQThPDO4x5EXcZmY9Rj6rvO++I/nATTGBWdZdsooha/BlvIBbZclJzXsgJdlKWrys9+w==} + engines: {node: '>=16'} + peerDependencies: + prettier: 3.x + + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regjsparser@0.13.2: + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} + hasBin: true + + reserved-identifiers@1.2.0: + resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} + engines: {node: '>=18'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + rolldown-plugin-dts@0.27.14: + resolution: {integrity: sha512-ZvuDDwoIpRK9RPxDXratCpklFO9QZZWndf/sd0VBFb4LEj0jj07UcHK9OCh7V4XiFz2Z89ziyBC2K6tJiDjrbw==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 + peerDependenciesMeta: + '@typescript/native-preview': + optional: true + '@volar/typescript': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.2.5: + resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + sass-embedded-all-unknown@1.103.1: + resolution: {integrity: sha512-MwX2ap06TbImAqlbnH6EndgBBejk6Eq2QB6Ae2hukCn9wmXf9cRu27um3mz3tyB4oJOOku0xfHqFH/+ckYj6YA==} + cpu: ['!arm', '!arm64', '!riscv64', '!x64'] + + sass-embedded-android-arm64@1.103.1: + resolution: {integrity: sha512-jBXWMksyz55XeLOWvQs64BqiG5DcqflmMxcvMoA2oHtQT/7XZ02hBn502qpcF/q8Qd+qqG/hU5ccM+hGXrbQZw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.103.1: + resolution: {integrity: sha512-p36WHpsu5HEo2+NVNbI2Nmb8VgVH0xwOQyzghvZhF7ikGCzEVYI5BP28vHUZlCcgj2TUvMEJKI2lV336a+F/sg==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + + sass-embedded-android-riscv64@1.103.1: + resolution: {integrity: sha512-rzrH7RNntk0rx+zCE9xOiAIUt37D1cQKvFfcoX0xiePdGbNHBN8DWKaWN9vaCRfbgKCmxPjevzaqFNI/G/8E1A==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.103.1: + resolution: {integrity: sha512-EQglAJXJutuIcqgZf7YOwzao2ND6ow/OgqN+cM48/Qaeb6AimYmZiUJmM9FFcmS3Q2n1k6/2OU3l3Hlin7bFpw==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.103.1: + resolution: {integrity: sha512-rlaBeCul8pLbDRKdBAxdDxSBwFU5fbX42ci6CxW2Vbs34jWTMQ72+nE2v2KkGGce+JnYbb7UV6xDP/4uDWWi+w==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.103.1: + resolution: {integrity: sha512-VSKFfhI//AOct6ppFmAaSH7tlW2LOFECMGs77jIoWf0ZjvGch/3sc9lUTTdIaYIOnTS4qpZck+8OcI2D0G92QA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.103.1: + resolution: {integrity: sha512-rC+80/Xr9svo0ka2Zr/sjD+N1zEHTw2Urm/nsEjaVp5HSH2i22jwhTKTIqie2OLl6ti+qdYnbI0sSfxOYRtgrg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + libc: glibc + + sass-embedded-linux-arm@1.103.1: + resolution: {integrity: sha512-tJRLPUtBwXHTnBnG7I39gQvCLreuOHLLCMyKHPR1hQ7aFNwiZjADYzKMRQPNMUqti/Os9z+6I7V13FqgQHfuzg==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + libc: glibc + + sass-embedded-linux-musl-arm64@1.103.1: + resolution: {integrity: sha512-jMgG/C/VMo7+ShMFdk0xjJmQmYkj1PbJu/yrQiaQHpuo5pE2G+vnkEgsuM5EM3lTQ4MbMfnf715qy1fkbNPiUQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + libc: musl + + sass-embedded-linux-musl-arm@1.103.1: + resolution: {integrity: sha512-N8L/kgVzXpnH+8d6ErIzqvb0l8kHODR3OfPaf0Azw6DOLGtEjwDRUbHno+G7iogGzyPOjKsM8OdyqHJj/bpTdw==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + libc: musl + + sass-embedded-linux-musl-riscv64@1.103.1: + resolution: {integrity: sha512-LZm8rEvI6sKU87qPOlODsYeAs7CmWy0B4ShYkjG4OMcGCcV4Ffxn25XW4TFqmruThITQvJ8WT+WGblzdoxYgbA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + libc: musl + + sass-embedded-linux-musl-x64@1.103.1: + resolution: {integrity: sha512-rmKzgk4t6RpaDhSefbbnk5yrA4pk1nHlVhJECGay8yMfzK8eglATeY9fzPgt89xCuQk6rkOiy11e+m8tLYOW5Q==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + libc: musl + + sass-embedded-linux-riscv64@1.103.1: + resolution: {integrity: sha512-xydQmtxla31uMrmN6z+mAogVGdEMDmkUElVq2+udomX/TPZDYJBkApEyJl237M2VLWVv29v1N4U4i2Z4xa7SDA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + libc: glibc + + sass-embedded-linux-x64@1.103.1: + resolution: {integrity: sha512-Rln1oWm0MWKzzemOgQWrRFzfVBARwS9qxAidZPpCQHSohzPnWizFkmY1CUJad/YJNsA7sscueMdX63OEvxoM8w==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + libc: glibc + + sass-embedded-unknown-all@1.103.1: + resolution: {integrity: sha512-p7kI4US8+n+YguKczXh+4KcodJnk+8cwv+QFdvMaz3OfPrdHV0EnhPsaVDWD9qXb1XXCEdUhpp6vQwGk3eKc3A==} + os: ['!android', '!darwin', '!linux', '!win32'] + + sass-embedded-win32-arm64@1.103.1: + resolution: {integrity: sha512-/0renOj3SpZGu4TA8CZJ6qZbTxGZk1khkPfiBTmV1uFB40ESYM5VsdXNj76P07bsAjIj9X2fCjTafLQFLSd9Nw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + + sass-embedded-win32-x64@1.103.1: + resolution: {integrity: sha512-fIg60j9u5YlLUU3W8FvySMR4HHIo9R12HHFQTW7njyQ8nXqgR+t+XfCzGJloQka8g583BlAfu31Q76Ljr5o+9g==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + + sass-embedded@1.103.1: + resolution: {integrity: sha512-UVIuFZPzz+4DXYbHzQ5gKaKkyP2IH3Sc/WoF63N2V7QIfnC2E9UpQAtiKlCVJTfBe43HRgHDBLnXpZkYAEBsNQ==} + engines: {node: '>=20.19.0'} + hasBin: true + + sass@1.103.1: + resolution: {integrity: sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw==} + engines: {node: '>=20.19.0'} + hasBin: true + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + svelte@5.56.10: + resolution: {integrity: sha512-Lcxbj8I/KAbpY+VjtY4ENQBV0dDCipfGAhqb51XQZ67CIQqXgsv/8dPkbILaj4Fb6/b6JAEM/PIVbILXgDQy2g==} + engines: {node: '>=18'} + + sync-child-process@1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + + sync-message-port@1.2.0: + resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==} + engines: {node: '>=16.0.0'} + + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} + + to-valid-identifier@1.0.0: + resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} + engines: {node: '>=20'} + + toml-eslint-parser@1.0.3: + resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + + tsdown@0.22.14: + resolution: {integrity: sha512-ule7Y+fsAN2iZbLDoo7C4KYljFJNJJ+fLshyn+9gozeTspVersWHxwdGB+Dm2hzA38s6muFnUTl0jK3vJm9ifQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.22.14 + '@tsdown/exe': 0.22.14 + '@vitejs/devtools': '*' + publint: ^0.3.8 + tsx: '*' + typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 + unplugin-unused: ^0.5.0 + unrun: '*' + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + unrun: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + turbo@2.10.11: + resolution: {integrity: sha512-yQfwQVoRXwOuyX1LxiJFBFNg6VfuYh+/RyZLd82+isgyLkBXw3S5XRRzvcck1FAjSCG5sVyLd+O1eDMvYa3J7g==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + update-browserslist-db@1.3.1: + resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + verkit@0.3.2: + resolution: {integrity: sha512-zj/ob3UsvJGN0whEAKFp53REA5X66hvffVqoCtVQAakJKnKlH+/PcOfMoFwIG/o4rElqLv/ycAFlx8ZlXUorCg==} + engines: {node: '>=18.12.0'} + + vite@8.2.2: + resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.4.0 || ^0.5.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 + 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 + + vitefu@1.1.3: + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + vite: + optional: true + + vitest@4.1.11: + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vue-eslint-parser@10.4.1: + resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + + vue@3.5.41: + resolution: {integrity: sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wsl-utils@1.0.0: + resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} + engines: {node: '>=20'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + yaml-eslint-parser@2.1.0: + resolution: {integrity: sha512-1zo9KRfp6vIAXBEhWAz09ex3hUwh3T+/6dGbGteHvNseA0Uk4FgQnPES55klZ6cDzSy9FpgKS0D/CoLUvCCj4w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yuku-ast@0.8.7: + resolution: {integrity: sha512-h6+4bDfyootiMB9vckk5uKo5r5j0GHrkr17FQTDNfEsFT3DWlN9uu1HJwQwc64pgmLCI945fWM3lbTIqxjT3GQ==} + + yuku-codegen@0.8.7: + resolution: {integrity: sha512-adwDZSh8oVDzhE6Du9PwVWxcOxeV0e2EVhUuMKWfhSY4wkrDq9eqixlxFF3l/XGUV1E7UFzhpz9393MUumkyNw==} + + yuku-parser@0.8.7: + resolution: {integrity: sha512-vRD9nwt4L3aYpxNqeSC4WqLv58xrXef0Ong1Mc45CTXTIpvLafx7JO05sczmQZwdLEZvywrLOGdNC5+Rp5N1BQ==} + + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@antfu/eslint-config@7.2.0(@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1))(@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(@vue/compiler-sfc@3.5.41)(eslint-plugin-format@2.0.1(eslint@9.39.2(supports-color@8.1.1)))(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)(vitest@4.1.11)': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 0.11.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@9.39.2(supports-color@8.1.1)) + '@eslint/markdown': 7.5.1(supports-color@8.1.1) + '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.2(supports-color@8.1.1)) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + '@vitest/eslint-plugin': 1.6.27(@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)(vitest@4.1.11) + ansis: 4.3.1 + cac: 6.7.14 + eslint: 9.39.2(supports-color@8.1.1) + eslint-config-flat-gitignore: 2.3.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-flat-config-utils: 3.2.0 + eslint-merge-processors: 2.0.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-antfu: 3.2.3(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-command: 3.5.3(@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1))(@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-import-lite: 0.5.2(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-jsdoc: 62.9.0(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-jsonc: 2.21.1(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-n: 17.24.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-no-only-tests: 3.4.0 + eslint-plugin-perfectionist: 5.10.1(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-pnpm: 1.8.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-regexp: 2.10.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-toml: 1.5.0(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-unicorn: 62.0.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1)) + eslint-plugin-vue: 10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@9.39.2(supports-color@8.1.1)))(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1))(vue-eslint-parser@10.4.1(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)) + eslint-plugin-yml: 3.8.1(eslint@9.39.2(supports-color@8.1.1)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.41)(eslint@9.39.2(supports-color@8.1.1)) + globals: 17.11.0 + jsonc-eslint-parser: 2.4.2 + local-pkg: 1.2.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 1.0.3 + vue-eslint-parser: 10.4.1(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + yaml-eslint-parser: 2.1.0 + optionalDependencies: + eslint-plugin-format: 2.0.1(eslint@9.39.2(supports-color@8.1.1)) + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/typescript-estree' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.8.0 + tinyexec: 1.3.0 + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bufbuild/protobuf@2.14.0': {} + + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@dprint/formatter@0.5.1': {} + + '@dprint/markdown@0.21.1': {} + + '@dprint/toml@0.7.0': {} + + '@es-joy/jsdoccomment@0.86.0': + dependencies: + '@types/estree': 1.0.9 + '@typescript-eslint/types': 8.67.0 + comment-parser: 1.4.6 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.2.0 + + '@es-joy/jsdoccomment@0.88.0': + dependencies: + '@types/estree': 1.0.9 + '@typescript-eslint/types': 8.67.0 + comment-parser: 1.4.7 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.2.0 + + '@es-joy/resolve.exports@1.2.0': {} + + '@esbuild/aix-ppc64@0.28.2': + optional: true + + '@esbuild/android-arm64@0.28.2': + optional: true + + '@esbuild/android-arm@0.28.2': + optional: true + + '@esbuild/android-x64@0.28.2': + optional: true + + '@esbuild/darwin-arm64@0.28.2': + optional: true + + '@esbuild/darwin-x64@0.28.2': + optional: true + + '@esbuild/freebsd-arm64@0.28.2': + optional: true + + '@esbuild/freebsd-x64@0.28.2': + optional: true + + '@esbuild/linux-arm64@0.28.2': + optional: true + + '@esbuild/linux-arm@0.28.2': + optional: true + + '@esbuild/linux-ia32@0.28.2': + optional: true + + '@esbuild/linux-loong64@0.28.2': + optional: true + + '@esbuild/linux-mips64el@0.28.2': + optional: true + + '@esbuild/linux-ppc64@0.28.2': + optional: true + + '@esbuild/linux-riscv64@0.28.2': + optional: true + + '@esbuild/linux-s390x@0.28.2': + optional: true + + '@esbuild/linux-x64@0.28.2': + optional: true + + '@esbuild/netbsd-arm64@0.28.2': + optional: true + + '@esbuild/netbsd-x64@0.28.2': + optional: true + + '@esbuild/openbsd-arm64@0.28.2': + optional: true + + '@esbuild/openbsd-x64@0.28.2': + optional: true + + '@esbuild/openharmony-arm64@0.28.2': + optional: true + + '@esbuild/sunos-x64@0.28.2': + optional: true + + '@esbuild/win32-arm64@0.28.2': + optional: true + + '@esbuild/win32-ia32@0.28.2': + optional: true + + '@esbuild/win32-x64@0.28.2': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@9.39.2(supports-color@8.1.1))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.39.2(supports-color@8.1.1) + ignore: 7.0.6 + + '@eslint-community/eslint-utils@4.10.1(eslint@9.39.2(supports-color@8.1.1))': + dependencies: + eslint: 9.39.2(supports-color@8.1.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/compat@2.1.0(eslint@9.39.2(supports-color@8.1.1))': + dependencies: + '@eslint/core': 1.2.1 + optionalDependencies: + eslint: 9.39.2(supports-color@8.1.1) + + '@eslint/config-array@0.21.2(supports-color@8.1.1)': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/config-helpers@0.5.5': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.6(supports-color@8.1.1)': + dependencies: + ajv: 6.15.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.2': {} + + '@eslint/markdown@7.5.1(supports-color@8.1.1)': + dependencies: + '@eslint/core': 0.17.0 + '@eslint/plugin-kit': 0.4.1 + github-slugger: 2.0.0 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-frontmatter: 2.0.1(supports-color@8.1.1) + mdast-util-gfm: 3.1.0(supports-color@8.1.1) + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@ota-meshi/ast-token-store@0.3.0': {} + + '@oxc-project/types@0.146.0': {} + + '@oxfmt/binding-android-arm-eabi@0.35.0': + optional: true + + '@oxfmt/binding-android-arm64@0.35.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.35.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.35.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.35.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.35.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.35.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.35.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.35.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.35.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.35.0': + optional: true + + '@parcel/watcher-android-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + + '@parcel/watcher-win32-x64@2.6.0': + optional: true + + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.5 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + optional: true + + '@pkgr/core@0.3.6': {} + + '@polka/url@1.0.0-next.29': {} + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + + '@rolldown/binding-android-arm-eabi@1.2.5': + optional: true + + '@rolldown/binding-android-arm64@1.2.5': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.5': + optional: true + + '@rolldown/binding-darwin-x64@1.2.5': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.5': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.5': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.5': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.5': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.5': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.5': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.5': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.5': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.5': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.5': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.5': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@sindresorhus/base62@1.0.0': {} + + '@standard-schema/spec@1.1.0': {} + + '@stylistic/eslint-plugin@5.10.0(eslint@9.39.2(supports-color@8.1.1))': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@typescript-eslint/types': 8.67.0 + eslint: 9.39.2(supports-color@8.1.1) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.5 + + '@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)': + dependencies: + acorn: 8.18.0 + + '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))': + dependencies: + deepmerge: 4.3.1 + magic-string: 1.2.2 + obug: 2.1.4 + svelte: 5.56.10(@typescript-eslint/types@8.67.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + + '@turbo/darwin-64@2.10.11': + optional: true + + '@turbo/darwin-arm64@2.10.11': + optional: true + + '@turbo/linux-64@2.10.11': + optional: true + + '@turbo/linux-arm64@2.10.11': + optional: true + + '@turbo/windows-64@2.10.11': + optional: true + + '@turbo/windows-arm64@2.10.11': + optional: true - '@babel/generator@7.21.1': + '@types/chai@5.2.3': dependencies: - '@babel/types': 7.21.2 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - jsesc: 2.5.2 + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 - '@babel/generator@7.25.6': + '@types/debug@4.1.13': dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + '@types/ms': 2.1.0 - '@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.0)': - dependencies: - '@babel/compat-data': 7.21.0 - '@babel/core': 7.21.0 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 + '@types/deep-eql@4.0.2': {} - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 + '@types/esrecurse@4.3.1': {} - '@babel/helper-environment-visitor@7.18.9': {} + '@types/estree@1.0.9': {} - '@babel/helper-function-name@7.21.0': - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.2 + '@types/json-schema@7.0.15': {} - '@babel/helper-hoist-variables@7.18.6': + '@types/mdast@4.0.4': dependencies: - '@babel/types': 7.21.2 + '@types/unist': 3.0.3 - '@babel/helper-module-imports@7.18.6': - dependencies: - '@babel/types': 7.21.2 + '@types/ms@2.1.0': {} - '@babel/helper-module-imports@7.24.7': + '@types/node@22.20.1': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color + undici-types: 6.21.0 - '@babel/helper-module-transforms@7.21.2': + '@types/react-dom@19.2.4(@types/react@19.2.18)': dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 - transitivePeerDependencies: - - supports-color + '@types/react': 19.2.18 - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@types/react@19.2.18': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color + csstype: 3.2.3 - '@babel/helper-plugin-utils@7.20.2': {} + '@types/trusted-types@2.0.7': {} - '@babel/helper-simple-access@7.20.2': - dependencies: - '@babel/types': 7.21.2 + '@types/unist@3.0.3': {} - '@babel/helper-simple-access@7.24.7': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + '@typescript-eslint/visitor-keys': 8.67.0 + eslint: 9.39.2(supports-color@8.1.1) + ignore: 7.0.6 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@babel/helper-split-export-declaration@7.18.6': - dependencies: - '@babel/types': 7.21.2 - - '@babel/helper-string-parser@7.19.4': {} - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.19.1': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-option@7.21.0': {} - - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helpers@7.21.0': + '@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1) + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.6': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - - '@babel/highlight@7.18.6': - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/highlight@7.24.7': + '@typescript-eslint/project-service@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1)': dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - - '@babel/parser@7.21.2': - dependencies: - '@babel/types': 7.21.2 + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 + debug: 4.4.3(supports-color@8.1.1) + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - supports-color - '@babel/parser@7.25.6': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - '@babel/types': 7.25.6 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0)': + '@typescript-eslint/tsconfig-utils@8.67.0(@typescript/typescript6@6.0.2)': dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + typescript: '@typescript/typescript6@6.0.2' - '@babel/template@7.20.7': + '@typescript-eslint/type-utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - supports-color - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@typescript-eslint/types@8.67.0': {} - '@babel/traverse@7.21.2': + '@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1)': dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - debug: 4.3.4 - globals: 11.12.0 + '@typescript-eslint/project-service': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1) + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.6 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@babel/traverse@7.25.6': + '@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 - globals: 11.12.0 + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@babel/types@7.21.2': - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.6': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@crashmax/prettier-config@5.0.2(@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3))(prettier-plugin-multiline-arrays@3.0.6(prettier@3.3.3))(prettier@3.3.3)': + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - '@ianvs/prettier-plugin-sort-imports': 4.3.1(prettier@3.3.3) - prettier: 3.3.3 - prettier-plugin-multiline-arrays: 3.0.6(prettier@3.3.3) - - '@crashmax/tsconfig@2.1.0': {} + '@typescript-eslint/types': 8.67.0 + eslint-visitor-keys: 5.0.1 - '@esbuild/aix-ppc64@0.21.5': + '@typescript/typescript-aix-ppc64@7.0.2': optional: true - '@esbuild/aix-ppc64@0.23.1': + '@typescript/typescript-darwin-arm64@7.0.2': optional: true - '@esbuild/android-arm64@0.21.5': + '@typescript/typescript-darwin-x64@7.0.2': optional: true - '@esbuild/android-arm64@0.23.1': + '@typescript/typescript-freebsd-arm64@7.0.2': optional: true - '@esbuild/android-arm@0.21.5': + '@typescript/typescript-freebsd-x64@7.0.2': optional: true - '@esbuild/android-arm@0.23.1': + '@typescript/typescript-linux-arm64@7.0.2': optional: true - '@esbuild/android-x64@0.21.5': + '@typescript/typescript-linux-arm@7.0.2': optional: true - '@esbuild/android-x64@0.23.1': + '@typescript/typescript-linux-loong64@7.0.2': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@typescript/typescript-linux-mips64el@7.0.2': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@typescript/typescript-linux-ppc64@7.0.2': optional: true - '@esbuild/darwin-x64@0.21.5': + '@typescript/typescript-linux-riscv64@7.0.2': optional: true - '@esbuild/darwin-x64@0.23.1': + '@typescript/typescript-linux-s390x@7.0.2': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@typescript/typescript-linux-x64@7.0.2': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@typescript/typescript-netbsd-arm64@7.0.2': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@typescript/typescript-netbsd-x64@7.0.2': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@typescript/typescript-openbsd-arm64@7.0.2': optional: true - '@esbuild/linux-arm64@0.21.5': + '@typescript/typescript-openbsd-x64@7.0.2': optional: true - '@esbuild/linux-arm64@0.23.1': + '@typescript/typescript-sunos-x64@7.0.2': optional: true - '@esbuild/linux-arm@0.21.5': + '@typescript/typescript-win32-arm64@7.0.2': optional: true - '@esbuild/linux-arm@0.23.1': + '@typescript/typescript-win32-x64@7.0.2': optional: true - '@esbuild/linux-ia32@0.21.5': - optional: true + '@typescript/typescript6@6.0.2': + dependencies: + '@typescript/old': typescript@6.0.3 - '@esbuild/linux-ia32@0.23.1': - optional: true + '@vitejs/plugin-react@6.1.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) - '@esbuild/linux-loong64@0.21.5': - optional: true + '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))(vue@3.5.41(@typescript/typescript6@6.0.2))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + vue: 3.5.41(@typescript/typescript6@6.0.2) + + '@vitest/eslint-plugin@1.6.27(@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)(vitest@4.1.11)': + dependencies: + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + typescript: '@typescript/typescript6@6.0.2' + vitest: 4.1.11(@types/node@22.20.1)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@4.1.11': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.11 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + + '@vitest/pretty-format@4.1.11': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/runner@4.1.11': + dependencies: + '@vitest/utils': 4.1.11 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.11': {} + + '@vitest/ui@4.1.11(vitest@4.1.11)': + dependencies: + '@vitest/utils': 4.1.11 + fflate: 0.8.3 + flatted: 3.4.4 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vitest: 4.1.11(@types/node@22.20.1)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + + '@vitest/utils@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + + '@vue/compiler-core@3.5.41': + dependencies: + '@babel/parser': 7.29.8 + '@vue/shared': 3.5.41 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.41': + dependencies: + '@vue/compiler-core': 3.5.41 + '@vue/shared': 3.5.41 + + '@vue/compiler-sfc@3.5.41': + dependencies: + '@babel/parser': 7.29.8 + '@vue/compiler-core': 3.5.41 + '@vue/compiler-dom': 3.5.41 + '@vue/compiler-ssr': 3.5.41 + '@vue/shared': 3.5.41 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.26 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.41': + dependencies: + '@vue/compiler-dom': 3.5.41 + '@vue/shared': 3.5.41 + + '@vue/reactivity@3.5.41': + dependencies: + '@vue/shared': 3.5.41 + + '@vue/runtime-core@3.5.41': + dependencies: + '@vue/reactivity': 3.5.41 + '@vue/shared': 3.5.41 + + '@vue/runtime-dom@3.5.41': + dependencies: + '@vue/reactivity': 3.5.41 + '@vue/runtime-core': 3.5.41 + '@vue/shared': 3.5.41 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.41': + dependencies: + '@vue/compiler-ssr': 3.5.41 + '@vue/runtime-dom': 3.5.41 + '@vue/shared': 3.5.41 + + '@vue/shared@3.5.41': {} - '@esbuild/linux-loong64@0.23.1': + '@yuku-codegen/binding-android-arm64@0.8.7': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@yuku-codegen/binding-darwin-arm64@0.8.7': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@yuku-codegen/binding-darwin-x64@0.8.7': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@yuku-codegen/binding-freebsd-x64@0.8.7': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@yuku-codegen/binding-linux-arm-musl@0.8.7': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': optional: true - '@esbuild/linux-s390x@0.21.5': + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': optional: true - '@esbuild/linux-s390x@0.23.1': + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': optional: true - '@esbuild/linux-x64@0.21.5': + '@yuku-codegen/binding-linux-x64-musl@0.8.7': optional: true - '@esbuild/linux-x64@0.23.1': + '@yuku-codegen/binding-win32-arm64@0.8.7': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@yuku-codegen/binding-win32-x64@0.8.7': optional: true - '@esbuild/netbsd-x64@0.23.1': + '@yuku-parser/binding-android-arm64@0.8.7': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@yuku-parser/binding-darwin-arm64@0.8.7': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@yuku-parser/binding-darwin-x64@0.8.7': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@yuku-parser/binding-freebsd-x64@0.8.7': optional: true - '@esbuild/sunos-x64@0.21.5': + '@yuku-parser/binding-linux-arm-gnu@0.8.7': optional: true - '@esbuild/sunos-x64@0.23.1': + '@yuku-parser/binding-linux-arm-musl@0.8.7': optional: true - '@esbuild/win32-arm64@0.21.5': + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': optional: true - '@esbuild/win32-arm64@0.23.1': + '@yuku-parser/binding-linux-arm64-musl@0.8.7': optional: true - '@esbuild/win32-ia32@0.21.5': + '@yuku-parser/binding-linux-x64-gnu@0.8.7': optional: true - '@esbuild/win32-ia32@0.23.1': + '@yuku-parser/binding-linux-x64-musl@0.8.7': optional: true - '@esbuild/win32-x64@0.21.5': + '@yuku-parser/binding-win32-arm64@0.8.7': optional: true - '@esbuild/win32-x64@0.23.1': + '@yuku-parser/binding-win32-x64@0.8.7': optional: true - '@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3)': - dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - prettier: 3.3.3 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color + '@yuku-toolchain/types@0.8.7': {} - '@isaacs/cliui@8.0.2': + acorn-jsx@5.3.2(acorn@8.18.0): dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + acorn: 8.18.0 - '@jridgewell/gen-mapping@0.1.1': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + acorn@8.18.0: {} - '@jridgewell/gen-mapping@0.3.2': + ajv@6.15.0: dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - '@jridgewell/gen-mapping@0.3.5': + ansi-styles@4.3.0: dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + color-convert: 2.0.1 - '@jridgewell/resolve-uri@3.1.0': {} + ansis@4.3.1: {} - '@jridgewell/resolve-uri@3.1.2': {} + are-docs-informative@0.0.2: {} - '@jridgewell/set-array@1.1.2': {} + argparse@2.0.1: {} - '@jridgewell/set-array@1.2.1': {} + aria-query@5.3.1: {} - '@jridgewell/sourcemap-codec@1.4.14': {} + assertion-error@2.0.1: {} - '@jridgewell/sourcemap-codec@1.5.0': {} + axobject-query@4.1.0: {} - '@jridgewell/trace-mapping@0.3.17': - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + balanced-match@1.0.2: {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.11.16: {} + + boolbase@1.0.0: {} - '@microsoft/api-extractor-model@7.29.4(@types/node@22.5.4)': + brace-expansion@1.1.18: dependencies: - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) - transitivePeerDependencies: - - '@types/node' + balanced-match: 1.0.2 + concat-map: 0.0.1 - '@microsoft/api-extractor-model@7.29.6(@types/node@22.5.4)': + brace-expansion@5.0.9: dependencies: - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) - transitivePeerDependencies: - - '@types/node' - optional: true - - '@microsoft/api-extractor@7.47.4(@types/node@22.5.4)': - dependencies: - '@microsoft/api-extractor-model': 7.29.4(@types/node@22.5.4) - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) - '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.13.3(@types/node@22.5.4) - '@rushstack/ts-command-line': 4.22.3(@types/node@22.5.4) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - - '@microsoft/api-extractor@7.47.7(@types/node@22.5.4)': - dependencies: - '@microsoft/api-extractor-model': 7.29.6(@types/node@22.5.4) - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) - '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.0(@types/node@22.5.4) - '@rushstack/ts-command-line': 4.22.6(@types/node@22.5.4) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - optional: true + balanced-match: 4.0.4 - '@microsoft/tsdoc-config@0.17.0': + browserslist@4.28.8: dependencies: - '@microsoft/tsdoc': 0.15.0 - ajv: 8.12.0 - jju: 1.4.0 - resolve: 1.22.8 + baseline-browser-mapping: 2.11.16 + caniuse-lite: 1.0.30001809 + electron-to-chromium: 1.5.412 + node-releases: 2.0.53 + update-browserslist-db: 1.3.1(browserslist@4.28.8) - '@microsoft/tsdoc@0.15.0': {} + builtin-modules@5.3.0: {} - '@nodelib/fs.scandir@2.1.5': + bundle-name@4.1.0: dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + run-applescript: 7.1.0 - '@nodelib/fs.stat@2.0.5': {} + cac@6.7.14: {} - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + cac@7.0.0: {} - '@pkgjs/parseargs@0.11.0': - optional: true + callsites@3.1.0: {} + + caniuse-lite@1.0.30001809: {} - '@polka/url@1.0.0-next.25': {} + ccount@2.0.1: {} - '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + chai@6.2.2: {} + + chalk@4.1.2: dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.21.2 + ansi-styles: 4.3.0 + supports-color: 7.2.0 - '@rollup/rollup-android-arm-eabi@4.21.2': - optional: true + change-case@5.4.4: {} - '@rollup/rollup-android-arm64@4.21.2': - optional: true + character-entities@2.0.2: {} - '@rollup/rollup-darwin-arm64@4.21.2': + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 optional: true - '@rollup/rollup-darwin-x64@4.21.2': - optional: true + ci-info@4.4.0: {} - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': - optional: true + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 - '@rollup/rollup-linux-arm-musleabihf@4.21.2': - optional: true + clsx@2.1.1: {} - '@rollup/rollup-linux-arm64-gnu@4.21.2': - optional: true + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 - '@rollup/rollup-linux-arm64-musl@4.21.2': - optional: true + color-name@1.1.4: {} - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': - optional: true + colorjs.io@0.7.1: {} - '@rollup/rollup-linux-riscv64-gnu@4.21.2': - optional: true + comment-parser@1.4.6: {} - '@rollup/rollup-linux-s390x-gnu@4.21.2': - optional: true + comment-parser@1.4.7: {} - '@rollup/rollup-linux-x64-gnu@4.21.2': - optional: true + comment-parser@1.4.8: {} - '@rollup/rollup-linux-x64-musl@4.21.2': - optional: true + concat-map@0.0.1: {} - '@rollup/rollup-win32-arm64-msvc@4.21.2': - optional: true + confbox@0.1.8: {} - '@rollup/rollup-win32-ia32-msvc@4.21.2': - optional: true + confbox@0.2.4: {} - '@rollup/rollup-win32-x64-msvc@4.21.2': - optional: true + convert-source-map@2.0.0: {} - '@rushstack/node-core-library@5.5.1(@types/node@22.5.4)': + core-js-compat@3.50.0: dependencies: - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - optionalDependencies: - '@types/node': 22.5.4 - - '@rushstack/node-core-library@5.7.0(@types/node@22.5.4)': - dependencies: - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - optionalDependencies: - '@types/node': 22.5.4 - optional: true + browserslist: 4.28.8 - '@rushstack/rig-package@0.5.3': + cross-spawn@7.0.6: dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - '@rushstack/terminal@0.13.3(@types/node@22.5.4)': + css-declaration-sorter@7.4.0(postcss@8.5.26): dependencies: - '@rushstack/node-core-library': 5.5.1(@types/node@22.5.4) - supports-color: 8.1.1 - optionalDependencies: - '@types/node': 22.5.4 + postcss: 8.5.26 - '@rushstack/terminal@0.14.0(@types/node@22.5.4)': - dependencies: - '@rushstack/node-core-library': 5.7.0(@types/node@22.5.4) - supports-color: 8.1.1 - optionalDependencies: - '@types/node': 22.5.4 - optional: true + cssesc@3.0.0: {} + + csstype@3.2.3: {} - '@rushstack/ts-command-line@4.22.3(@types/node@22.5.4)': + debug@4.4.3(supports-color@8.1.1): dependencies: - '@rushstack/terminal': 0.13.3(@types/node@22.5.4) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 - '@rushstack/ts-command-line@4.22.6(@types/node@22.5.4)': + decode-named-character-reference@1.3.0: dependencies: - '@rushstack/terminal': 0.14.0(@types/node@22.5.4) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - optional: true + character-entities: 2.0.2 - '@types/argparse@1.0.38': {} + deep-is@0.1.4: {} - '@types/estree@1.0.5': {} + deepmerge@4.3.1: {} - '@types/node@22.5.4': - dependencies: - undici-types: 6.19.8 + default-browser-id@5.0.1: {} - '@types/serve-handler@6.1.4': + default-browser@5.5.1: dependencies: - '@types/node': 22.5.4 + bundle-name: 4.1.0 + default-browser-id: 5.0.1 - '@types/websocket@1.0.10': - dependencies: - '@types/node': 22.5.4 + define-lazy-prop@3.0.0: {} - '@vitest/expect@2.0.5': - dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.1.1 - tinyrainbow: 1.2.0 + defu@6.1.7: {} - '@vitest/pretty-format@2.0.5': - dependencies: - tinyrainbow: 1.2.0 + dequal@2.0.3: {} - '@vitest/runner@2.0.5': - dependencies: - '@vitest/utils': 2.0.5 - pathe: 1.1.2 + detect-libc@2.1.2: {} - '@vitest/snapshot@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - magic-string: 0.30.11 - pathe: 1.1.2 + devalue@5.9.1: {} - '@vitest/spy@2.0.5': + devlop@1.1.0: dependencies: - tinyspy: 3.0.0 + dequal: 2.0.3 - '@vitest/ui@2.0.5(vitest@2.0.5)': - dependencies: - '@vitest/utils': 2.0.5 - fast-glob: 3.3.2 - fflate: 0.8.2 - flatted: 3.3.1 - pathe: 1.1.2 - sirv: 2.0.4 - tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@22.5.4)(@vitest/ui@2.0.5)(sass@1.78.0) + diff-sequences@27.5.1: {} - '@vitest/utils@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 - loupe: 3.1.1 - tinyrainbow: 1.2.0 + diff-sequences@29.6.3: {} - '@volar/language-core@2.4.4': - dependencies: - '@volar/source-map': 2.4.4 + dts-resolver@3.0.0: {} - '@volar/source-map@2.4.4': {} + electron-to-chromium@1.5.412: {} - '@volar/typescript@2.4.4': - dependencies: - '@volar/language-core': 2.4.4 - path-browserify: 1.0.1 - vscode-uri: 3.0.8 + empathic@2.0.1: {} - '@vue/compiler-core@3.5.3': + enhanced-resolve@5.24.5: dependencies: - '@babel/parser': 7.25.6 - '@vue/shared': 3.5.3 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 + graceful-fs: 4.2.11 + tapable: 2.3.3 - '@vue/compiler-dom@3.5.3': - dependencies: - '@vue/compiler-core': 3.5.3 - '@vue/shared': 3.5.3 + entities@7.0.1: {} - '@vue/compiler-vue2@2.7.16': - dependencies: - de-indent: 1.0.2 - he: 1.2.0 + es-module-lexer@2.3.2: {} - '@vue/language-core@2.0.29(typescript@5.5.4)': - dependencies: - '@volar/language-core': 2.4.4 - '@vue/compiler-dom': 3.5.3 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.3 - computeds: 0.0.1 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 + esbuild@0.28.2: optionalDependencies: - typescript: 5.5.4 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 + optional: true - '@vue/shared@3.5.3': {} + escalade@3.2.0: {} - acorn@8.12.1: {} + escape-string-regexp@1.0.5: {} - ajv-draft-04@1.0.0(ajv@8.13.0): - optionalDependencies: - ajv: 8.13.0 + escape-string-regexp@4.0.0: {} - ajv-formats@3.0.1(ajv@8.13.0): - optionalDependencies: - ajv: 8.13.0 + escape-string-regexp@5.0.0: {} - ajv@8.12.0: + eslint-compat-utils@0.5.1(eslint@9.39.2(supports-color@8.1.1)): dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 + eslint: 9.39.2(supports-color@8.1.1) + semver: 7.8.5 - ajv@8.13.0: + eslint-compat-utils@0.6.5(eslint@9.39.2(supports-color@8.1.1)): dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} + eslint: 9.39.2(supports-color@8.1.1) + semver: 7.8.5 - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: + eslint-config-flat-gitignore@2.3.0(eslint@9.39.2(supports-color@8.1.1)): dependencies: - color-convert: 1.9.3 + '@eslint/compat': 2.1.0(eslint@9.39.2(supports-color@8.1.1)) + eslint: 9.39.2(supports-color@8.1.1) - ansi-styles@4.3.0: + eslint-flat-config-utils@3.2.0: dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} + '@eslint/config-helpers': 0.5.5 + pathe: 2.0.3 - any-promise@1.3.0: {} - - anymatch@3.1.3: + eslint-formatting-reporter@0.0.0(eslint@9.39.2(supports-color@8.1.1)): dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + eslint: 9.39.2(supports-color@8.1.1) + prettier-linter-helpers: 1.0.1 - argparse@1.0.10: + eslint-json-compat-utils@0.2.3(eslint@9.39.2(supports-color@8.1.1))(jsonc-eslint-parser@2.4.2): dependencies: - sprintf-js: 1.0.3 - - array-union@2.1.0: {} - - assertion-error@2.0.1: {} + eslint: 9.39.2(supports-color@8.1.1) + esquery: 1.7.0 + jsonc-eslint-parser: 2.4.2 - babel-helper-builder-react-jsx@6.26.0: + eslint-json-compat-utils@0.2.3(eslint@9.39.2(supports-color@8.1.1))(jsonc-eslint-parser@3.3.0): dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - esutils: 2.0.3 - - babel-plugin-syntax-jsx@6.18.0: {} + eslint: 9.39.2(supports-color@8.1.1) + esquery: 1.7.0 + jsonc-eslint-parser: 3.3.0 - babel-plugin-transform-react-jsx@6.24.1: + eslint-merge-processors@2.0.0(eslint@9.39.2(supports-color@8.1.1)): dependencies: - babel-helper-builder-react-jsx: 6.26.0 - babel-plugin-syntax-jsx: 6.18.0 - babel-runtime: 6.26.0 + eslint: 9.39.2(supports-color@8.1.1) - babel-plugin-transform-redom-jsx@3.0.5(@babel/core@7.21.0): - dependencies: - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) - transitivePeerDependencies: - - '@babel/core' + eslint-parser-plain@0.1.1: {} - babel-runtime@6.26.0: + eslint-plugin-antfu@3.2.3(eslint@9.39.2(supports-color@8.1.1)): dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 + eslint: 9.39.2(supports-color@8.1.1) - babel-types@6.26.0: + eslint-plugin-command@3.5.3(@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1))(@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1)): dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} + '@es-joy/jsdoccomment': 0.88.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@8.1.1) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) - brace-expansion@1.1.11: + eslint-plugin-es-x@7.8.0(eslint@9.39.2(supports-color@8.1.1)): dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.2 + eslint: 9.39.2(supports-color@8.1.1) + eslint-compat-utils: 0.5.1(eslint@9.39.2(supports-color@8.1.1)) - brace-expansion@2.0.1: + eslint-plugin-format@2.0.1(eslint@9.39.2(supports-color@8.1.1)): dependencies: - balanced-match: 1.0.2 + '@dprint/formatter': 0.5.1 + '@dprint/markdown': 0.21.1 + '@dprint/toml': 0.7.0 + eslint: 9.39.2(supports-color@8.1.1) + eslint-formatting-reporter: 0.0.0(eslint@9.39.2(supports-color@8.1.1)) + eslint-parser-plain: 0.1.1 + ohash: 2.0.12 + oxfmt: 0.35.0 + prettier: 3.9.6 + synckit: 0.11.13 - braces@3.0.3: + eslint-plugin-import-lite@0.5.2(eslint@9.39.2(supports-color@8.1.1)): dependencies: - fill-range: 7.1.1 - - browser-or-node@2.1.1: {} + eslint: 9.39.2(supports-color@8.1.1) - browser-or-node@3.0.0: {} - - browserslist@4.21.5: + eslint-plugin-jsdoc@62.9.0(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - caniuse-lite: 1.0.30001466 - electron-to-chromium: 1.4.328 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + '@es-joy/jsdoccomment': 0.86.0 + '@es-joy/resolve.exports': 1.2.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint: 9.39.2(supports-color@8.1.1) + espree: 11.2.0 + esquery: 1.7.0 + html-entities: 2.6.0 + object-deep-merge: 2.0.1 + parse-imports-exports: 0.2.4 + semver: 7.8.5 + spdx-expression-parse: 4.0.0 + to-valid-identifier: 1.0.0 + transitivePeerDependencies: + - supports-color - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.18 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + eslint-plugin-jsonc@2.21.1(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + diff-sequences: 27.5.1 + eslint: 9.39.2(supports-color@8.1.1) + eslint-compat-utils: 0.6.5(eslint@9.39.2(supports-color@8.1.1)) + eslint-json-compat-utils: 0.2.3(eslint@9.39.2(supports-color@8.1.1))(jsonc-eslint-parser@2.4.2) + espree: 10.4.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.2 + natural-compare: 1.4.0 + synckit: 0.11.13 + transitivePeerDependencies: + - '@eslint/json' - bufferutil@4.0.8: + eslint-plugin-n@17.24.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1)): dependencies: - node-gyp-build: 4.8.2 + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + enhanced-resolve: 5.24.5 + eslint: 9.39.2(supports-color@8.1.1) + eslint-plugin-es-x: 7.8.0(eslint@9.39.2(supports-color@8.1.1)) + get-tsconfig: 4.14.3 + globals: 15.15.0 + globrex: 0.1.2 + ignore: 5.3.2 + semver: 7.8.5 + ts-declaration-location: 1.0.7(@typescript/typescript6@6.0.2) + transitivePeerDependencies: + - typescript - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 + eslint-plugin-no-only-tests@3.4.0: {} - bundle-require@5.0.0(esbuild@0.23.1): + eslint-plugin-perfectionist@5.10.1(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - esbuild: 0.23.1 - load-tsconfig: 0.2.5 - - bytes@3.0.0: {} + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@1.8.0(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + empathic: 2.0.1 + eslint: 9.39.2(supports-color@8.1.1) + eslint-json-compat-utils: 0.2.3(eslint@9.39.2(supports-color@8.1.1))(jsonc-eslint-parser@3.3.0) + jsonc-eslint-parser: 3.3.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 1.8.0 + tinyglobby: 0.2.17 + yaml: 2.9.0 + yaml-eslint-parser: 2.1.0 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-regexp@2.10.0(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.2 + comment-parser: 1.4.8 + eslint: 9.39.2(supports-color@8.1.1) + jsdoc-type-pratt-parser: 4.8.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@1.5.0(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@ota-meshi/ast-token-store': 0.3.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + toml-eslint-parser: 1.0.3 + transitivePeerDependencies: + - supports-color - cac@6.7.14: {} + eslint-plugin-unicorn@62.0.0(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@eslint/plugin-kit': 0.4.1 + change-case: 5.4.4 + ci-info: 4.4.0 + clean-regexp: 1.0.0 + core-js-compat: 3.50.0 + eslint: 9.39.2(supports-color@8.1.1) + esquery: 1.7.0 + find-up-simple: 1.0.1 + globals: 16.5.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.13.2 + semver: 7.8.5 + strip-indent: 4.1.1 + + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + eslint: 9.39.2(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + + eslint-plugin-vue@10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@9.39.2(supports-color@8.1.1)))(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.2(supports-color@8.1.1))(vue-eslint-parser@10.4.1(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + eslint: 9.39.2(supports-color@8.1.1) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.5 + semver: 7.8.5 + vue-eslint-parser: 10.4.1(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + xml-name-validator: 5.0.0 + optionalDependencies: + '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.2(supports-color@8.1.1)) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1) + + eslint-plugin-yml@3.8.1(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@ota-meshi/ast-token-store': 0.3.0 + diff-sequences: 29.6.3 + escape-string-regexp: 5.0.0 + eslint: 9.39.2(supports-color@8.1.1) + natural-compare: 1.4.0 + yaml-eslint-parser: 2.1.0 + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.41)(eslint@9.39.2(supports-color@8.1.1)): + dependencies: + '@vue/compiler-sfc': 3.5.41 + eslint: 9.39.2(supports-color@8.1.1) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.2(supports-color@8.1.1): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.2(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2(supports-color@8.1.1) + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.6(supports-color@8.1.1) + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color - caniuse-lite@1.0.30001466: {} + esm-env@1.2.2: {} - caniuse-lite@1.0.30001658: {} + espree@10.4.0: + dependencies: + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + eslint-visitor-keys: 4.2.1 - chai@5.1.1: + espree@11.2.0: dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.1 - pathval: 2.0.0 + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + eslint-visitor-keys: 5.0.1 - chalk@2.4.2: + espree@9.6.1: dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + eslint-visitor-keys: 3.4.3 - check-error@2.1.1: {} + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 - chokidar@3.6.0: + esrap@2.3.5(@typescript-eslint/types@8.67.0): dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 + '@jridgewell/sourcemap-codec': 1.5.5 optionalDependencies: - fsevents: 2.3.3 + '@typescript-eslint/types': 8.67.0 - color-convert@1.9.3: + esrecurse@4.3.0: dependencies: - color-name: 1.1.3 + estraverse: 5.3.0 - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 + estraverse@5.3.0: {} - color-name@1.1.3: {} + estree-walker@2.0.2: {} - color-name@1.1.4: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 - commander@4.1.1: {} + esutils@2.0.3: {} - compare-versions@6.1.1: {} + expect-type@1.4.0: {} - computeds@0.0.1: {} + exsolve@1.1.1: {} - concat-map@0.0.1: {} + fast-deep-equal@3.1.3: {} - confbox@0.1.7: {} + fast-diff@1.3.0: {} - consola@3.2.3: {} + fast-json-stable-stringify@2.1.0: {} - content-disposition@0.5.2: {} + fast-levenshtein@2.0.6: {} - convert-source-map@1.9.0: {} + fault@2.0.1: + dependencies: + format: 0.2.2 - convert-source-map@2.0.0: {} + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 - core-js@2.6.12: {} + fflate@0.8.3: {} - cross-spawn@7.0.3: + file-entry-cache@8.0.0: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + flat-cache: 4.0.1 + + find-up-simple@1.0.1: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 - d@1.0.2: + flat-cache@4.0.1: dependencies: - es5-ext: 0.10.64 - type: 2.7.3 + flatted: 3.4.4 + keyv: 4.5.4 + + flatted@3.4.4: {} - de-indent@1.0.2: {} + format@0.2.2: {} + + fsevents@2.3.3: + optional: true - debug@2.6.9: + get-tsconfig@4.14.3: dependencies: - ms: 2.0.0 + resolve-pkg-maps: 1.0.0 - debug@4.3.4: + get-tsconfig@5.0.0-beta.5: dependencies: - ms: 2.1.2 + resolve-pkg-maps: 1.0.0 + + github-slugger@2.0.0: {} - debug@4.3.7: + glob-parent@6.0.2: dependencies: - ms: 2.1.3 + is-glob: 4.0.3 - deep-eql@5.0.2: {} + globals@14.0.0: {} - default-browser-id@5.0.0: {} + globals@15.15.0: {} - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 + globals@16.5.0: {} - define-lazy-prop@3.0.0: {} + globals@17.11.0: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 + globrex@0.1.2: {} - eastasianwidth@0.2.0: {} + graceful-fs@4.2.11: {} - electron-to-chromium@1.4.328: {} + graphemer@1.4.0: {} - electron-to-chromium@1.5.18: {} + has-flag@4.0.0: {} - emoji-regex@8.0.0: {} + hookable@6.1.1: {} - emoji-regex@9.2.2: {} + html-entities@2.6.0: {} - entities@4.5.0: {} + ignore@5.3.2: {} - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 + ignore@7.0.6: {} - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 + immutable@5.1.9: {} - es6-symbol@3.1.4: + import-fresh@3.3.1: dependencies: - d: 1.0.2 - ext: 1.7.0 + parent-module: 1.0.1 + resolve-from: 4.0.0 - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - - escalade@3.1.1: {} + import-without-cache@0.4.0: {} - escalade@3.2.0: {} + imurmurhash@0.1.4: {} - escape-string-regexp@1.0.5: {} + indent-string@5.0.0: {} - esniff@2.0.1: + is-builtin-module@5.0.0: dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 + builtin-modules: 5.3.0 - estree-walker@2.0.2: {} + is-docker@3.0.0: {} - estree-walker@3.0.3: + is-extglob@2.1.1: {} + + is-glob@4.0.3: dependencies: - '@types/estree': 1.0.5 + is-extglob: 2.1.1 - esutils@2.0.3: {} + is-in-ssh@1.0.0: {} - event-emitter@0.3.5: + is-inside-container@1.0.0: dependencies: - d: 1.0.2 - es5-ext: 0.10.64 + is-docker: 3.0.0 - execa@5.1.1: + is-reference@3.0.3: dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + '@types/estree': 1.0.9 - execa@8.0.1: + is-wsl@3.1.1: dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 + is-inside-container: 1.0.0 - expect-type@0.15.0: {} + isexe@2.0.0: {} - ext@1.7.0: + js-yaml@4.3.1: dependencies: - type: 2.7.3 + argparse: 2.0.1 - fast-deep-equal@3.1.3: {} + jsdoc-type-pratt-parser@4.8.0: {} - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 + jsdoc-type-pratt-parser@7.2.0: {} - fast-url-parser@1.1.3: - dependencies: - punycode: 1.4.1 + jsesc@3.1.0: {} - fastq@1.17.1: - dependencies: - reusify: 1.0.4 + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} - fflate@0.8.2: {} + json-stable-stringify-without-jsonify@1.0.1: {} - fill-range@7.1.1: + jsonc-eslint-parser@2.4.2: dependencies: - to-regex-range: 5.0.1 + acorn: 8.18.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.8.5 - flatted@3.3.1: {} + jsonc-eslint-parser@3.3.0: + dependencies: + acorn: 8.18.0 + eslint-visitor-keys: 5.0.1 + verkit: 0.3.2 - foreground-child@3.3.0: + keyv@4.5.4: dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 + json-buffer: 3.0.1 - fs-extra@7.0.1: + levn@0.4.1: dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 + prelude-ls: 1.2.1 + type-check: 0.4.0 - fsevents@2.3.3: + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true - function-bind@1.1.2: {} + lightningcss-linux-arm64-gnu@1.33.0: + optional: true - gensync@1.0.0-beta.2: {} + lightningcss-linux-arm64-musl@1.33.0: + optional: true - get-func-name@2.0.2: {} + lightningcss-linux-x64-gnu@1.33.0: + optional: true - get-port@7.1.0: {} + lightningcss-linux-x64-musl@1.33.0: + optional: true - get-stream@6.0.1: {} + lightningcss-win32-arm64-msvc@1.33.0: + optional: true - get-stream@8.0.1: {} + lightningcss-win32-x64-msvc@1.33.0: + optional: true - glob-parent@5.1.2: + lightningcss@1.33.0: dependencies: - is-glob: 4.0.3 + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 - glob@10.4.5: + local-pkg@1.2.1: dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 + mlly: 1.8.2 + pkg-types: 2.3.1 + quansync: 0.2.11 - globals@11.12.0: {} + locate-character@3.0.0: {} - globby@11.1.0: + locate-path@6.0.0: dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 + p-locate: 5.0.0 - graceful-fs@4.2.11: {} + lodash.merge@4.6.2: {} - has-flag@3.0.0: {} + longest-streak@3.1.0: {} - has-flag@4.0.0: {} + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magic-string@1.2.2: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-table@3.0.4: {} - hasown@2.0.2: + mdast-util-find-and-replace@3.0.2: dependencies: - function-bind: 1.1.2 + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 - he@1.2.0: {} + mdast-util-from-markdown@2.0.3(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2(supports-color@8.1.1) + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color - human-signals@2.1.0: {} + mdast-util-frontmatter@2.0.1(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color - human-signals@5.0.0: {} + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 - ignore@5.3.2: {} + mdast-util-gfm-footnote@2.1.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color - immutable@4.3.7: {} + mdast-util-gfm-strikethrough@2.0.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - import-lazy@4.0.0: {} + mdast-util-gfm-table@2.0.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - is-binary-path@2.1.0: + mdast-util-gfm-task-list-item@2.0.0(supports-color@8.1.1): dependencies: - binary-extensions: 2.3.0 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - is-core-module@2.15.1: + mdast-util-gfm@3.1.0(supports-color@8.1.1): dependencies: - hasown: 2.0.2 + mdast-util-from-markdown: 2.0.3(supports-color@8.1.1) + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0(supports-color@8.1.1) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-table: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - is-docker@3.0.0: {} + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 - is-extglob@2.1.1: {} + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-fullwidth-code-point@3.0.0: {} + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-glob@4.0.3: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: - is-extglob: 2.1.1 + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-inside-container@1.0.0: + micromark-extension-gfm-footnote@2.1.0: dependencies: - is-docker: 3.0.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-number@7.0.0: {} + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-stream@2.0.1: {} + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-stream@3.0.0: {} + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 - is-typedarray@1.0.0: {} + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - is-wsl@3.1.0: + micromark-extension-gfm@3.0.0: dependencies: - is-inside-container: 1.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 - isexe@2.0.0: {} + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - jackspeak@3.4.3: + micromark-factory-label@2.0.1: dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - jju@1.4.0: {} + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 - joycon@3.1.1: {} + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - js-tokens@4.0.0: {} + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - jsesc@2.5.2: {} + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - json-schema-traverse@1.0.0: {} + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 - json5@2.2.3: {} + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 - kolorist@1.8.0: {} + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 - lilconfig@3.1.2: {} + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 - lines-and-columns@1.2.4: {} + micromark-util-encode@2.0.1: {} - load-tsconfig@0.2.5: {} + micromark-util-html-tag-name@2.0.1: {} - local-pkg@0.5.0: + micromark-util-normalize-identifier@2.0.1: dependencies: - mlly: 1.7.1 - pkg-types: 1.2.0 + micromark-util-symbol: 2.0.1 - lodash.sortby@4.7.0: {} + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 - lodash@4.17.21: {} + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 - loupe@3.1.1: + micromark-util-subtokenize@2.1.0: dependencies: - get-func-name: 2.0.2 + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - lru-cache@10.4.3: {} + micromark-util-symbol@2.0.1: {} - lru-cache@5.1.1: + micromark-util-types@2.0.2: {} + + micromark@4.0.2(supports-color@8.1.1): dependencies: - yallist: 3.1.1 + '@types/debug': 4.1.13 + debug: 4.4.3(supports-color@8.1.1) + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color - lru-cache@6.0.0: + minimatch@10.2.6: dependencies: - yallist: 4.0.0 + brace-expansion: 5.0.9 - magic-string@0.30.11: + minimatch@3.1.5: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + brace-expansion: 1.1.18 - merge-stream@2.0.0: {} + mlly@1.8.2: + dependencies: + acorn: 8.18.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 - merge2@1.4.1: {} + mrmime@2.0.1: {} - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 + ms@2.1.3: {} - mime-db@1.33.0: {} + nanoid@3.3.18: {} - mime-types@2.1.18: - dependencies: - mime-db: 1.33.0 + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} - mimic-fn@2.1.0: {} + node-addon-api@7.1.1: + optional: true - mimic-fn@4.0.0: {} + node-releases@2.0.53: {} - minimatch@3.0.8: + nth-check@2.1.1: dependencies: - brace-expansion: 1.1.11 + boolbase: 1.0.0 - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 + object-deep-merge@2.0.1: {} - minimatch@9.0.5: + obug@2.1.4: {} + + ohash@2.0.12: {} + + open@11.0.1: dependencies: - brace-expansion: 2.0.1 + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.2.0 + wsl-utils: 1.0.0 - minipass@7.1.2: {} + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 - mlly@1.7.1: + oxfmt@0.35.0: dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.2.0 - ufo: 1.5.4 + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.35.0 + '@oxfmt/binding-android-arm64': 0.35.0 + '@oxfmt/binding-darwin-arm64': 0.35.0 + '@oxfmt/binding-darwin-x64': 0.35.0 + '@oxfmt/binding-freebsd-x64': 0.35.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.35.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.35.0 + '@oxfmt/binding-linux-arm64-gnu': 0.35.0 + '@oxfmt/binding-linux-arm64-musl': 0.35.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.35.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.35.0 + '@oxfmt/binding-linux-riscv64-musl': 0.35.0 + '@oxfmt/binding-linux-s390x-gnu': 0.35.0 + '@oxfmt/binding-linux-x64-gnu': 0.35.0 + '@oxfmt/binding-linux-x64-musl': 0.35.0 + '@oxfmt/binding-openharmony-arm64': 0.35.0 + '@oxfmt/binding-win32-arm64-msvc': 0.35.0 + '@oxfmt/binding-win32-ia32-msvc': 0.35.0 + '@oxfmt/binding-win32-x64-msvc': 0.35.0 - mrmime@2.0.0: {} + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 - ms@2.0.0: {} + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 - ms@2.1.2: {} + package-manager-detector@1.8.0: {} - ms@2.1.3: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 - muggle-string@0.4.1: {} + parse-gitignore@2.0.0: {} - mz@2.7.0: + parse-imports-exports@0.2.4: dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 + parse-statements: 1.0.11 - nanoid@3.3.7: {} + parse-statements@1.0.11: {} - next-tick@1.1.0: {} + path-exists@4.0.0: {} - node-gyp-build@4.8.2: {} + path-key@3.1.1: {} - node-releases@2.0.10: {} + pathe@2.0.3: {} - node-releases@2.0.18: {} + picocolors@1.1.1: {} - normalize-path@3.0.0: {} + picomatch@4.0.5: {} - npm-run-path@4.0.1: + pkg-types@1.3.1: dependencies: - path-key: 3.1.1 + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 - npm-run-path@5.3.0: + pkg-types@2.3.1: dependencies: - path-key: 4.0.0 + confbox: 0.2.4 + exsolve: 1.1.1 + pathe: 2.0.3 - object-assign@4.1.1: {} + pluralize@8.0.0: {} - onetime@5.1.2: + pnpm-workspace-yaml@1.8.0: dependencies: - mimic-fn: 2.1.0 + yaml: 2.9.0 - onetime@6.0.0: + postcss-less@6.0.0(postcss@8.5.26): dependencies: - mimic-fn: 4.0.0 + postcss: 8.5.26 - open@10.1.0: + postcss-scss@4.0.9(postcss@8.5.26): dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 + postcss: 8.5.26 - package-json-from-dist@1.0.0: {} - - path-browserify@1.0.1: {} + postcss-selector-parser@7.1.5: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 - path-is-inside@1.0.2: {} + postcss@8.5.26: + dependencies: + nanoid: 3.3.18 + picocolors: 1.1.1 + source-map-js: 1.2.1 - path-key@3.1.1: {} + powershell-utils@0.1.0: {} - path-key@4.0.0: {} + powershell-utils@0.2.0: {} - path-parse@1.0.7: {} + prelude-ls@1.2.1: {} - path-scurry@1.11.1: + prettier-linter-helpers@1.0.1: dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 + fast-diff: 1.3.0 - path-to-regexp@2.2.1: {} + prettier-plugin-css-order@2.2.0(postcss@8.5.26)(prettier@3.9.6): + dependencies: + css-declaration-sorter: 7.4.0(postcss@8.5.26) + postcss-less: 6.0.0(postcss@8.5.26) + postcss-scss: 4.0.9(postcss@8.5.26) + prettier: 3.9.6 + transitivePeerDependencies: + - postcss - path-type@4.0.0: {} + prettier@3.9.6: {} - pathe@1.1.2: {} + punycode@2.3.1: {} - pathval@2.0.0: {} + quansync@0.2.11: {} - picocolors@1.0.0: {} + quansync@1.0.0: {} - picocolors@1.1.0: {} + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 - picomatch@2.3.1: {} + react@19.2.8: {} - pirates@4.0.6: {} + readdirp@5.1.1: + optional: true - pkg-types@1.2.0: + refa@0.12.1: dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 + '@eslint-community/regexpp': 4.12.2 - postcss-load-config@6.0.1(postcss@8.4.45): + regexp-ast-analysis@0.7.1: dependencies: - lilconfig: 3.1.2 - optionalDependencies: - postcss: 8.4.45 + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 - postcss@8.4.45: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.0 + regexp-tree@0.1.27: {} - prettier-plugin-multiline-arrays@3.0.6(prettier@3.3.3): + regjsparser@0.13.2: dependencies: - '@augment-vir/common': 28.2.4 - prettier: 3.3.3 - proxy-vir: 1.0.0 + jsesc: 3.1.0 + + reserved-identifiers@1.2.0: {} - prettier@3.3.3: {} + resolve-from@4.0.0: {} - proxy-vir@1.0.0: + resolve-pkg-maps@1.0.0: {} + + rolldown-plugin-dts@0.27.14(@typescript/typescript6@6.0.2)(rolldown@1.2.5): dependencies: - '@augment-vir/common': 23.4.0 + dts-resolver: 3.0.0 + get-tsconfig: 5.0.0-beta.5 + obug: 2.1.4 + rolldown: 1.2.5 + yuku-ast: 0.8.7 + yuku-codegen: 0.8.7 + yuku-parser: 0.8.7 + optionalDependencies: + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - oxc-resolver - punycode@1.4.1: {} + rolldown@1.2.5: + dependencies: + '@oxc-project/types': 0.146.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.5 + '@rolldown/binding-android-arm64': 1.2.5 + '@rolldown/binding-darwin-arm64': 1.2.5 + '@rolldown/binding-darwin-x64': 1.2.5 + '@rolldown/binding-freebsd-x64': 1.2.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 + '@rolldown/binding-linux-arm64-gnu': 1.2.5 + '@rolldown/binding-linux-arm64-musl': 1.2.5 + '@rolldown/binding-linux-ppc64-gnu': 1.2.5 + '@rolldown/binding-linux-s390x-gnu': 1.2.5 + '@rolldown/binding-linux-x64-gnu': 1.2.5 + '@rolldown/binding-linux-x64-musl': 1.2.5 + '@rolldown/binding-openharmony-arm64': 1.2.5 + '@rolldown/binding-win32-arm64-msvc': 1.2.5 + '@rolldown/binding-win32-x64-msvc': 1.2.5 + + run-applescript@7.1.0: {} + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + sass-embedded-all-unknown@1.103.1: + dependencies: + sass: 1.103.1 + optional: true - punycode@2.3.1: {} + sass-embedded-android-arm64@1.103.1: + optional: true - queue-microtask@1.2.3: {} + sass-embedded-android-arm@1.103.1: + optional: true - range-parser@1.2.0: {} + sass-embedded-android-riscv64@1.103.1: + optional: true - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 + sass-embedded-android-x64@1.103.1: + optional: true - redom-jsx@3.29.4: {} + sass-embedded-darwin-arm64@1.103.1: + optional: true - regenerator-runtime@0.11.1: {} + sass-embedded-darwin-x64@1.103.1: + optional: true - require-from-string@2.0.2: {} + sass-embedded-linux-arm64@1.103.1: + optional: true - resolve-from@5.0.0: {} + sass-embedded-linux-arm@1.103.1: + optional: true - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + sass-embedded-linux-musl-arm64@1.103.1: + optional: true - reusify@1.0.4: {} + sass-embedded-linux-musl-arm@1.103.1: + optional: true - rollup@4.21.2: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.2 - '@rollup/rollup-android-arm64': 4.21.2 - '@rollup/rollup-darwin-arm64': 4.21.2 - '@rollup/rollup-darwin-x64': 4.21.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 - '@rollup/rollup-linux-arm-musleabihf': 4.21.2 - '@rollup/rollup-linux-arm64-gnu': 4.21.2 - '@rollup/rollup-linux-arm64-musl': 4.21.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 - '@rollup/rollup-linux-riscv64-gnu': 4.21.2 - '@rollup/rollup-linux-s390x-gnu': 4.21.2 - '@rollup/rollup-linux-x64-gnu': 4.21.2 - '@rollup/rollup-linux-x64-musl': 4.21.2 - '@rollup/rollup-win32-arm64-msvc': 4.21.2 - '@rollup/rollup-win32-ia32-msvc': 4.21.2 - '@rollup/rollup-win32-x64-msvc': 4.21.2 - fsevents: 2.3.3 + sass-embedded-linux-musl-riscv64@1.103.1: + optional: true - run-applescript@7.0.0: {} + sass-embedded-linux-musl-x64@1.103.1: + optional: true - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 + sass-embedded-linux-riscv64@1.103.1: + optional: true - run-time-assertions@1.5.2: - dependencies: - '@augment-vir/common': 29.3.0 - expect-type: 0.15.0 - type-fest: 4.26.1 + sass-embedded-linux-x64@1.103.1: + optional: true - sass@1.78.0: + sass-embedded-unknown-all@1.103.1: dependencies: - chokidar: 3.6.0 - immutable: 4.3.7 - source-map-js: 1.2.0 + sass: 1.103.1 + optional: true - semver@6.3.0: {} + sass-embedded-win32-arm64@1.103.1: + optional: true - semver@6.3.1: {} + sass-embedded-win32-x64@1.103.1: + optional: true - semver@7.5.4: + sass-embedded@1.103.1: dependencies: - lru-cache: 6.0.0 + '@bufbuild/protobuf': 2.14.0 + colorjs.io: 0.7.1 + immutable: 5.1.9 + rxjs: 7.8.2 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-all-unknown: 1.103.1 + sass-embedded-android-arm: 1.103.1 + sass-embedded-android-arm64: 1.103.1 + sass-embedded-android-riscv64: 1.103.1 + sass-embedded-android-x64: 1.103.1 + sass-embedded-darwin-arm64: 1.103.1 + sass-embedded-darwin-x64: 1.103.1 + sass-embedded-linux-arm: 1.103.1 + sass-embedded-linux-arm64: 1.103.1 + sass-embedded-linux-musl-arm: 1.103.1 + sass-embedded-linux-musl-arm64: 1.103.1 + sass-embedded-linux-musl-riscv64: 1.103.1 + sass-embedded-linux-musl-x64: 1.103.1 + sass-embedded-linux-riscv64: 1.103.1 + sass-embedded-linux-x64: 1.103.1 + sass-embedded-unknown-all: 1.103.1 + sass-embedded-win32-arm64: 1.103.1 + sass-embedded-win32-x64: 1.103.1 + + sass@1.103.1: + dependencies: + chokidar: 5.0.0 + immutable: 5.1.9 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.6.0 + optional: true - semver@7.6.3: {} + scheduler@0.27.0: {} - serve-handler@6.1.5: + scslre@0.3.0: dependencies: - bytes: 3.0.0 - content-disposition: 0.5.2 - fast-url-parser: 1.1.3 - mime-types: 2.1.18 - minimatch: 3.1.2 - path-is-inside: 1.0.2 - path-to-regexp: 2.2.1 - range-parser: 1.2.0 + '@eslint-community/regexpp': 4.12.2 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + semver@7.8.5: {} shebang-command@2.0.0: dependencies: @@ -3703,326 +5436,286 @@ snapshots: siginfo@2.0.0: {} - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sirv@2.0.4: + sirv@3.0.2: dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 totalist: 3.0.1 - slash@3.0.0: {} + sisteransi@1.0.5: {} - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} - source-map@0.6.1: {} + spdx-exceptions@2.5.0: {} - source-map@0.8.0-beta.0: + spdx-expression-parse@4.0.0: dependencies: - whatwg-url: 7.1.0 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 - sprintf-js@1.0.3: {} + spdx-license-ids@3.0.23: {} stackback@0.0.2: {} - std-env@3.7.0: {} - - string-argv@0.3.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-final-newline@2.0.0: {} + std-env@4.2.0: {} - strip-final-newline@3.0.0: {} + strip-indent@4.1.1: {} strip-json-comments@3.1.1: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@5.5.0: + supports-color@7.2.0: dependencies: - has-flag: 3.0.0 + has-flag: 4.0.0 supports-color@8.1.1: dependencies: has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} + svelte@5.56.10(@typescript-eslint/types@8.67.0): + dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) + '@types/estree': 1.0.9 + '@types/trusted-types': 2.0.7 + acorn: 8.18.0 + aria-query: 5.3.1 + axobject-query: 4.1.0 + clsx: 2.1.1 + devalue: 5.9.1 + esm-env: 1.2.2 + esrap: 2.3.5(@typescript-eslint/types@8.67.0) + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.21 + zimmerframe: 1.1.4 + transitivePeerDependencies: + - '@typescript-eslint/types' - thenify-all@1.6.0: + sync-child-process@1.0.2: dependencies: - thenify: 3.3.1 + sync-message-port: 1.2.0 - thenify@3.3.1: + sync-message-port@1.2.0: {} + + synckit@0.11.13: dependencies: - any-promise: 1.3.0 + '@pkgr/core': 0.3.6 + + tapable@2.3.3: {} tinybench@2.9.0: {} - tinypool@1.0.1: {} + tinyexec@1.3.0: {} - tinyrainbow@1.2.0: {} + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 - tinyspy@3.0.0: {} + tinypool@2.1.0: {} - to-fast-properties@1.0.3: {} + tinyrainbow@3.1.1: {} - to-fast-properties@2.0.0: {} + to-valid-identifier@1.0.0: + dependencies: + '@sindresorhus/base62': 1.0.0 + reserved-identifiers: 1.2.0 - to-regex-range@5.0.1: + toml-eslint-parser@1.0.3: dependencies: - is-number: 7.0.0 + eslint-visitor-keys: 5.0.1 totalist@3.0.1: {} - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - tree-kill@1.2.2: {} - ts-interface-checker@0.1.13: {} + ts-api-utils@2.5.0(@typescript/typescript6@6.0.2): + dependencies: + typescript: '@typescript/typescript6@6.0.2' - tsup@8.2.4(@microsoft/api-extractor@7.47.7(@types/node@22.5.4))(postcss@8.4.45)(typescript@5.5.4): + ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2): dependencies: - bundle-require: 5.0.0(esbuild@0.23.1) - cac: 6.7.14 - chokidar: 3.6.0 - consola: 3.2.3 - debug: 4.3.7 - esbuild: 0.23.1 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - picocolors: 1.1.0 - postcss-load-config: 6.0.1(postcss@8.4.45) - resolve-from: 5.0.0 - rollup: 4.21.2 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 + picomatch: 4.0.5 + typescript: '@typescript/typescript6@6.0.2' + + tsdown@0.22.14(@typescript/typescript6@6.0.2): + dependencies: + ansis: 4.3.1 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.1 + hookable: 6.1.1 + import-without-cache: 0.4.0 + obug: 2.1.4 + picomatch: 4.0.5 + rolldown: 1.2.5 + rolldown-plugin-dts: 0.27.14(@typescript/typescript6@6.0.2)(rolldown@1.2.5) + tinyexec: 1.3.0 + tinyglobby: 0.2.17 tree-kill: 1.2.2 + unconfig-core: 7.5.0 + verkit: 0.3.2 optionalDependencies: - '@microsoft/api-extractor': 7.47.7(@types/node@22.5.4) - postcss: 8.4.45 - typescript: 5.5.4 + typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - turbo-darwin-64@2.1.1: - optional: true + - '@typescript/native-preview' + - '@volar/typescript' + - oxc-resolver + - vue-tsc - turbo-darwin-arm64@2.1.1: - optional: true - - turbo-linux-64@2.1.1: - optional: true + tslib@2.8.1: {} - turbo-linux-arm64@2.1.1: - optional: true + turbo@2.10.11: + optionalDependencies: + '@turbo/darwin-64': 2.10.11 + '@turbo/darwin-arm64': 2.10.11 + '@turbo/linux-64': 2.10.11 + '@turbo/linux-arm64': 2.10.11 + '@turbo/windows-64': 2.10.11 + '@turbo/windows-arm64': 2.10.11 - turbo-windows-64@2.1.1: - optional: true + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 - turbo-windows-arm64@2.1.1: - optional: true + typescript@6.0.3: {} - turbo@2.1.1: + typescript@7.0.2: optionalDependencies: - turbo-darwin-64: 2.1.1 - turbo-darwin-arm64: 2.1.1 - turbo-linux-64: 2.1.1 - turbo-linux-arm64: 2.1.1 - turbo-windows-64: 2.1.1 - turbo-windows-arm64: 2.1.1 + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 - type-fest@4.26.1: {} + ufo@1.6.4: {} - type@2.7.3: {} - - typedarray-to-buffer@3.1.5: + unconfig-core@7.5.0: dependencies: - is-typedarray: 1.0.0 - - typescript@5.4.2: {} + '@quansync/fs': 1.0.0 + quansync: 1.0.0 - typescript@5.5.4: {} + undici-types@6.21.0: {} - ufo@1.5.4: {} + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 - undici-types@6.19.8: {} + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 - universalify@0.1.2: {} + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 - update-browserslist-db@1.0.10(browserslist@4.21.5): + unist-util-visit@5.1.0: dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 - picocolors: 1.1.0 + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 - update-browserslist-db@1.1.0(browserslist@4.23.3): + update-browserslist-db@1.3.1(browserslist@4.28.8): dependencies: - browserslist: 4.23.3 + browserslist: 4.28.8 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: punycode: 2.3.1 - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 + util-deprecate@1.0.2: {} - vite-node@2.0.5(@types/node@22.5.4)(sass@1.78.0): - dependencies: - cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - tinyrainbow: 1.2.0 - vite: 5.4.3(@types/node@22.5.4)(sass@1.78.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-dts@4.1.1(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(sass@1.78.0)): - dependencies: - '@microsoft/api-extractor': 7.47.4(@types/node@22.5.4) - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) - '@volar/typescript': 2.4.4 - '@vue/language-core': 2.0.29(typescript@5.5.4) - compare-versions: 6.1.1 - debug: 4.3.7 - kolorist: 1.8.0 - local-pkg: 0.5.0 - magic-string: 0.30.11 - typescript: 5.5.4 - vue-tsc: 2.0.29(typescript@5.5.4) - optionalDependencies: - vite: 5.4.3(@types/node@22.5.4)(sass@1.78.0) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color + varint@6.0.0: {} - vite-redom-jsx@2.1.1(redom-jsx@3.29.4)(vite@5.4.3(@types/node@22.5.4)(sass@1.78.0)): - dependencies: - '@babel/core': 7.21.0 - babel-plugin-transform-react-jsx: 6.24.1 - babel-plugin-transform-redom-jsx: 3.0.5(@babel/core@7.21.0) - redom-jsx: 3.29.4 - vite: 5.4.3(@types/node@22.5.4)(sass@1.78.0) - transitivePeerDependencies: - - supports-color + verkit@0.3.2: {} - vite@5.4.3(@types/node@22.5.4)(sass@1.78.0): + vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0): dependencies: - esbuild: 0.21.5 - postcss: 8.4.45 - rollup: 4.21.2 + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.26 + rolldown: 1.2.5 + tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 22.5.4 + '@types/node': 22.20.1 + esbuild: 0.28.2 fsevents: 2.3.3 - sass: 1.78.0 - - vitest@2.0.5(@types/node@22.5.4)(@vitest/ui@2.0.5)(sass@1.78.0): - dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.5 - '@vitest/pretty-format': 2.0.5 - '@vitest/runner': 2.0.5 - '@vitest/snapshot': 2.0.5 - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.1.1 - debug: 4.3.7 - execa: 8.0.1 - magic-string: 0.30.11 - pathe: 1.1.2 - std-env: 3.7.0 + sass: 1.103.1 + sass-embedded: 1.103.1 + yaml: 2.9.0 + + vitefu@1.1.3(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)): + optionalDependencies: + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) + + vitest@4.1.11(@types/node@22.20.1)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.2.0 tinybench: 2.9.0 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.4.3(@types/node@22.5.4)(sass@1.78.0) - vite-node: 2.0.5(@types/node@22.5.4)(sass@1.78.0) + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.2)(sass-embedded@1.103.1)(sass@1.103.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.5.4 - '@vitest/ui': 2.0.5(vitest@2.0.5) + '@types/node': 22.20.1 + '@vitest/ui': 4.1.11(vitest@4.1.11) transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vscode-uri@3.0.8: {} + - msw - vue-tsc@2.0.29(typescript@5.5.4): + vue-eslint-parser@10.4.1(eslint@9.39.2(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@volar/typescript': 2.4.4 - '@vue/language-core': 2.0.29(typescript@5.5.4) - semver: 7.6.3 - typescript: 5.5.4 - - webidl-conversions@4.0.2: {} - - websocket@1.0.35: - dependencies: - bufferutil: 4.0.8 - debug: 2.6.9 - es5-ext: 0.10.64 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(supports-color@8.1.1) + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + semver: 7.8.5 transitivePeerDependencies: - supports-color - whatwg-url@7.1.0: + vue@3.5.41(@typescript/typescript6@6.0.2): dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 + '@vue/compiler-dom': 3.5.41 + '@vue/compiler-sfc': 3.5.41 + '@vue/runtime-dom': 3.5.41 + '@vue/server-renderer': 3.5.41 + '@vue/shared': 3.5.41 + optionalDependencies: + typescript: '@typescript/typescript6@6.0.2' which@2.0.2: dependencies: @@ -4033,20 +5726,63 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wrap-ansi@7.0.0: + word-wrap@1.2.5: {} + + wsl-utils@1.0.0: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + is-wsl: 3.1.1 + powershell-utils: 0.1.0 - wrap-ansi@8.1.0: + xml-name-validator@5.0.0: {} + + yaml-eslint-parser@2.1.0: dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 + eslint-visitor-keys: 5.0.1 + yaml: 2.9.0 + + yaml@2.9.0: {} - yaeti@0.0.6: {} + yocto-queue@0.1.0: {} - yallist@3.1.1: {} + yuku-ast@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 - yallist@4.0.0: {} + yuku-codegen@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + optionalDependencies: + '@yuku-codegen/binding-android-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-x64': 0.8.7 + '@yuku-codegen/binding-freebsd-x64': 0.8.7 + '@yuku-codegen/binding-linux-arm-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm-musl': 0.8.7 + '@yuku-codegen/binding-linux-arm64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm64-musl': 0.8.7 + '@yuku-codegen/binding-linux-x64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-x64-musl': 0.8.7 + '@yuku-codegen/binding-win32-arm64': 0.8.7 + '@yuku-codegen/binding-win32-x64': 0.8.7 + + yuku-parser@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + yuku-ast: 0.8.7 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.8.7 + '@yuku-parser/binding-darwin-arm64': 0.8.7 + '@yuku-parser/binding-darwin-x64': 0.8.7 + '@yuku-parser/binding-freebsd-x64': 0.8.7 + '@yuku-parser/binding-linux-arm-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm-musl': 0.8.7 + '@yuku-parser/binding-linux-arm64-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm64-musl': 0.8.7 + '@yuku-parser/binding-linux-x64-gnu': 0.8.7 + '@yuku-parser/binding-linux-x64-musl': 0.8.7 + '@yuku-parser/binding-win32-arm64': 0.8.7 + '@yuku-parser/binding-win32-x64': 0.8.7 + + zimmerframe@1.1.4: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e1fec93..b35b6da 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,6 @@ packages: - - 'examples/*' + - "examples/*" +allowBuilds: + "@parcel/watcher": true + core-js: true + esbuild: true diff --git a/scripts/sync-types.ts b/scripts/sync-types.ts new file mode 100644 index 0000000..fc60db5 --- /dev/null +++ b/scripts/sync-types.ts @@ -0,0 +1,115 @@ +import { execFile } from "node:child_process"; +import { + access, + mkdir, + mkdtemp, + readdir, + readFile, + rm, + writeFile, +} from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { promisify } from "node:util"; + +const execFileAsync = promisify(execFile); + +const SOURCES = [ + { name: "tampermonkey", pkg: "@types/tampermonkey" }, + { name: "greasemonkey", pkg: "@types/greasemonkey" }, + { name: "violentmonkey", pkg: "@violentmonkey/types" }, +] as const; + +const root = join(dirname(fileURLToPath(import.meta.url)), ".."); +const typesDir = join(root, "types"); +const ambientPath = join(typesDir, "violentmonkey-ambient.d.ts"); + +function syncHeader(pkg: string, version: string): string { + return `// synced from ${pkg}@${version}\n// do not edit; run pnpm sync-types\n\n`; +} + +async function packPackage(pkg: string, dest: string): Promise { + const { stdout } = await execFileAsync( + "npm", + ["pack", pkg, "--pack-destination", dest, "--json"], + { cwd: dest }, + ); + const [result] = JSON.parse(stdout) as { filename?: string }[]; + const filename = result?.filename; + + if (!filename) { + throw new Error(`npm pack produced no tarball for ${pkg}`); + } + + return join(dest, filename); +} + +async function extractIndexDts(tgz: string, dest: string): Promise<{ dts: string; version: string }> { + await execFileAsync("tar", ["-xzf", tgz, "-C", dest]); + + const entries = await readdir(dest, { withFileTypes: true }); + const pkgDir = entries.find(entry => entry.isDirectory()); + + if (!pkgDir) { + throw new Error(`tarball ${tgz} has no package directory`); + } + + const extracted = join(dest, pkgDir.name); + const dts = await readFile(join(extracted, "index.d.ts"), "utf8"); + const pkgJson = JSON.parse( + await readFile(join(extracted, "package.json"), "utf8"), + ) as { version?: string }; + + if (!pkgJson.version) { + throw new Error(`package.json in ${tgz} has no version`); + } + + return { dts, version: pkgJson.version }; +} + +function rewriteViolentmonkey(source: string): string { + const withoutRefs = source.replace( + /^\/\/\/\s*\s*/gm, + "", + ); + const ref = "/// \n"; + + return withoutRefs.startsWith(ref) ? withoutRefs : `${ref}${withoutRefs}`; +} + +async function main(): Promise { + await mkdir(typesDir, { recursive: true }); + await access(ambientPath); + + const sources: Record = {}; + + for (const source of SOURCES) { + const tmp = await mkdtemp(join(tmpdir(), `vup-sync-${source.name}-`)); + + try { + const tgz = await packPackage(source.pkg, tmp); + const { dts, version } = await extractIndexDts(tgz, tmp); + const body + = source.name === "violentmonkey" ? rewriteViolentmonkey(dts) : dts; + + await writeFile( + join(typesDir, `${source.name}.d.ts`), + `${syncHeader(source.pkg, version)}${body}`, + ); + sources[source.name] = { package: source.pkg, version }; + } finally { + await rm(tmp, { recursive: true, force: true }); + } + } + + await writeFile( + join(typesDir, "sources.json"), + `${JSON.stringify(sources, null, 2)}\n`, + ); +} + +main().catch((error: unknown) => { + console.error(error); + process.exit(1); +}); diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 0000000..441c204 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "lib": ["ES2023"], + "types": ["node"], + "noEmit": true + }, + "include": ["./**/*.ts"] +} diff --git a/src/banner.ts b/src/banner.ts index bc6fdc5..a5da0cc 100644 --- a/src/banner.ts +++ b/src/banner.ts @@ -1,55 +1,119 @@ -import type { HeaderConfig } from './types.js' +import type { + BannerGenerateContext, + BannerMode, + HeaderConfig, +} from "./types.js"; +import { sanitizeFileName } from "./names.js"; -export class Banner { - private header: string[] = [] - private maxKeyLength: number +export interface BannerOptions { + align?: number | false; + autoMetaUrls?: boolean; + fileName?: string; + generate?: (ctx: BannerGenerateContext) => string; + mode?: BannerMode; +} + +function ensureTrailingSlash(url: string): string { + return url.endsWith("/") ? url : `${url}/`; +} - constructor(private readonly config: HeaderConfig) { - this.addHomepageMeta() - this.maxKeyLength = - Math.max(...Object.keys(this.config).map((key) => key.length)) + 1 +export function resolveHomePage(header: HeaderConfig): string | undefined { + const homePage = header.homepage ?? header.homepageURL; + if (typeof homePage !== "string") { + return undefined; } - private addHomepageMeta(): void { - const homePage = this.config.homepage ?? this.config.homepageURL - if (homePage) { - this.config.updateURL = new URL( - `${this.config.name}.meta.js`, - homePage - ).href - this.config.downloadURL = new URL( - `${this.config.name}.user.js`, - homePage - ).href - } + const trimmed = homePage.trim(); + return trimmed === "" ? undefined : trimmed; +} + +function applyAutoMetaUrls(header: HeaderConfig, fileName: string): HeaderConfig { + const homePage = resolveHomePage(header); + if (!homePage) { + return header; } - private addSpaces(str: string): string { - return ' '.repeat(this.maxKeyLength - str.length) + const base = ensureTrailingSlash(homePage); + return { + ...header, + updateURL: header.updateURL ?? new URL(`${fileName}.meta.js`, base).href, + downloadURL: header.downloadURL ?? new URL(`${fileName}.user.js`, base).href, + }; +} + +function formatValue(value: unknown): string { + if (Array.isArray(value)) { + return value.join(" "); } - private addMetadata( - key: string, - value: string | string[] | number | boolean - ): void { - value = Array.isArray(value) ? value.join(' ') : value === true ? '' : value - this.header.push(`// @${key}${this.addSpaces(key)}${value}`) + if (value === true) { + return ""; } - generate(): string { - for (const [key, value] of Object.entries(this.config)) { - if (Array.isArray(value)) { - value.forEach((value) => this.addMetadata(key, value)) - } else { - if (value === undefined) continue - this.addMetadata(key, value) - } + return String(value); +} + +export function generateBanner(config: HeaderConfig, options: BannerOptions = {}): string { + const fileName = options.fileName ?? sanitizeFileName(config.name); + const header = options.autoMetaUrls + ? applyAutoMetaUrls({ ...config }, fileName) + : { ...config }; + + const keys = Object.keys(header).filter((key) => { + const value = header[key]; + return value !== undefined && value !== null && value !== false; + }); + + const align = options.align; + const maxKeyLength + = align === false + ? 0 + : Math.max(...keys.map(key => key.length), 0) + (align ?? 1); + + const pad = (key: string): string => { + if (align === false) { + return " "; } - return [ - '// ==UserScript==', - ...this.header, - '// ==/UserScript==' - ].join('\n') + return " ".repeat(Math.max(1, maxKeyLength - key.length)); + }; + + const lines: string[] = []; + + const addMetadata = (key: string, value: unknown): void => { + lines.push(`// @${key}${pad(key)}${formatValue(value)}`); + }; + + for (const key of keys) { + const value = header[key]; + if (Array.isArray(value)) { + value.forEach(item => addMetadata(key, item)); + } else { + addMetadata(key, value); + } } + + const userscript = [ + "// ==UserScript==", + ...lines, + "// ==/UserScript==", + ].join("\n"); + + if (!options.generate) { + return userscript; + } + + return options.generate({ + userscript, + mode: options.mode ?? "build", + }); +} + +export class Banner { + constructor( + private readonly config: HeaderConfig, + private readonly options: BannerOptions = {}, + ) {} + + generate = (): string => generateBanner(this.config, this.options); } diff --git a/src/build.ts b/src/build.ts new file mode 100644 index 0000000..b4691f7 --- /dev/null +++ b/src/build.ts @@ -0,0 +1,206 @@ +import type { + HeaderConfig, + ResolvedPluginConfig, + ResolvedScript, +} from "./types.js"; +import { generateBanner } from "./banner.js"; +import { createCssInject } from "./css.js"; +import { defineGrants, removeDuplicates } from "./grants.js"; +import { countBannerLines, offsetSourceMap } from "./sourcemap.js"; + +export interface OutputChunk { + type: "chunk"; + isEntry: boolean; + name: string; + fileName: string; + code: string; + imports: string[]; + map?: { mappings: string; file?: string } | null; + viteMetadata?: { + importedCss?: Set; + }; +} + +export interface OutputAsset { + type: "asset"; + fileName?: string; + source: string | Uint8Array; +} + +export type OutputBundle = Record; + +type ChunkWithMeta = OutputChunk; + +function isChunk(item: OutputBundle[string]): item is OutputChunk { + return item.type === "chunk"; +} + +function isAsset(item: OutputBundle[string]): item is OutputAsset { + return item.type === "asset"; +} + +function collectCss(chunk: ChunkWithMeta, bundle: OutputBundle): string { + const files = chunk.viteMetadata?.importedCss; + if (!files?.size) { + return ""; + } + + return [...files] + .map((file) => { + const asset = bundle[file]; + return asset && isAsset(asset) ? String(asset.source) : ""; + }) + .filter(Boolean) + .join("\n"); +} + +export function stripExports(code: string): string { + return code + .replace(/^export\s+\{[\s\S]*?\};?\s*$/gm, "") + .replace(/^export\s+default\s+/gm, "") + .replace(/^export\s+async\s+function/gm, "async function") + .replace(/^export\s+function/gm, "function") + .replace(/^export\s+class/gm, "class") + .replace(/^export\s+(const|let|var)/gm, "$1"); +} + +export function ensureIife(code: string): string { + const alreadyIife = !/^\s*export\s/m.test(code) && /\(function\b/.test(code); + if (alreadyIife) { + return code; + } + + const body = /^\s*export\s/m.test(code) ? stripExports(code) : code; + return `(function () {\n${body}\n})();\n`; +} + +function inlineImportedChunks(chunk: OutputChunk, bundle: OutputBundle, seen = new Set()): string { + let prelude = ""; + + for (const imported of chunk.imports) { + if (seen.has(imported)) { + continue; + } + + const dep = bundle[imported]; + if (!dep || !isChunk(dep) || dep.isEntry) { + continue; + } + + seen.add(imported); + prelude += inlineImportedChunks(dep, bundle, seen); + prelude += dep.code.endsWith("\n") ? dep.code : `${dep.code}\n`; + } + + return prelude; +} + +export function resolveBuildHeader(header: HeaderConfig, code: string, hasCss: boolean): HeaderConfig { + if (header.grant === "none") { + return header; + } + + const detected = defineGrants(code); + const extra = hasCss ? (["GM_addStyle"] as const) : []; + + return { + ...header, + grant: removeDuplicates([ + ...detected, + ...removeDuplicates(header.grant), + ...extra, + ]), + }; +} + +export function findScriptForChunk(chunk: OutputChunk, fileName: string, scripts: ResolvedScript[]): ResolvedScript | undefined { + return scripts.find( + script => chunk.name === script.fileName + || fileName === `${script.fileName}.js` + || fileName === `${script.fileName}.user.js`, + ); +} + +export function applyUserscriptBundle(bundle: OutputBundle, config: ResolvedPluginConfig, emitMeta: (fileName: string, source: string) => void): void { + const leftoverChunks: string[] = []; + + for (const [fileName, item] of Object.entries(bundle)) { + if (!isChunk(item) || !item.isEntry) { + if (isChunk(item) && !item.isEntry) { + leftoverChunks.push(fileName); + } + continue; + } + + const script = findScriptForChunk(item, fileName, config.scripts); + if (!script) { + continue; + } + + const inlined = inlineImportedChunks(item, bundle); + const css = collectCss(item, bundle); + let code = ensureIife(`${inlined}${item.code}`); + + if (css) { + code = `${createCssInject(css, config.cssInject)}${code}`; + } + + const header = resolveBuildHeader(script.header, code, Boolean(css)); + const banner = generateBanner(header, { + align: config.align, + autoMetaUrls: config.autoMetaUrls, + fileName: script.fileName, + generate: config.generate, + mode: "build", + }); + const prefix = `${banner}\n\n`; + const nextFileName = `${script.fileName}.user.js`; + const mapFileName = `${nextFileName}.map`; + let nextCode = `${prefix}${code}`; + + if (item.map) { + item.map = offsetSourceMap( + item.map, + countBannerLines(prefix), + nextFileName, + ); + nextCode = nextCode.replace( + /\/\/[#@]\s*sourceMappingURL=\S+/g, + `//# sourceMappingURL=${mapFileName}`, + ); + if (!nextCode.includes("sourceMappingURL=")) { + nextCode += `\n//# sourceMappingURL=${mapFileName}\n`; + } + emitMeta(mapFileName, JSON.stringify(item.map)); + } + + item.code = nextCode; + item.fileName = nextFileName; + + const previousMap = `${fileName}.map`; + const previousMapAsset = bundle[previousMap]; + if (previousMapAsset && isAsset(previousMapAsset)) { + previousMapAsset.fileName = mapFileName; + } + + if (config.metaFile) { + emitMeta( + `${script.fileName}.meta.js`, + generateBanner(header, { + align: config.align, + autoMetaUrls: config.autoMetaUrls, + fileName: script.fileName, + generate: config.generate, + mode: "meta", + }), + ); + } + } + + for (const fileName of leftoverChunks) { + const chunk = bundle[fileName]; + if (chunk && isChunk(chunk) && !chunk.isEntry) { + delete bundle[fileName]; + } + } +} diff --git a/src/constants.ts b/src/constants.ts index d76e181..23b05e1 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,47 +1,67 @@ -import { dirname } from 'node:path' -import { fileURLToPath } from 'node:url' +import type { Grants } from "./types.js"; -import type { Grants } from './types.js' - -export const pluginDir = dirname(fileURLToPath(import.meta.url)) -export const pluginName = 'vite-userscript-plugin' -export const regexpScripts = new RegExp(/\.(t|j)sx?$/) +export const pluginName = "vite-userscript-plugin"; +export const GM_NAMESPACE = "__viteUserscriptGM__"; +export const VITE_CLIENT_FLAG = "__viteUserscriptViteClient__"; +export const REACT_PREAMBLE_PATH = `/${pluginName}/react-preamble.js`; +export const REACT_BOOTSTRAP_PATH = `/${pluginName}/react-bootstrap.js`; +export const REACT_REFRESH_PLUGIN_NAMES = new Set([ + "vite:react-refresh", + "vite:react-virtual-preamble", +]); export const GM = [ - 'setValue', - 'getValue', - 'deleteValue', - 'listValues', - 'setClipboard', - 'addStyle', - 'addElement', - 'addValueChangeListener', - 'removeValueChangeListener', - 'registerMenuCommand', - 'unregisterMenuCommand', - 'download', - 'getTab', - 'getTabs', - 'saveTab', - 'openInTab', - 'notification', - 'getResourceURL', - 'getResourceText', - 'xmlhttpRequest', - 'log', - 'info' -] as const + "setValue", + "getValue", + "deleteValue", + "listValues", + "setValues", + "getValues", + "deleteValues", + "setClipboard", + "addStyle", + "addElement", + "addValueChangeListener", + "removeValueChangeListener", + "registerMenuCommand", + "unregisterMenuCommand", + "download", + "getTab", + "getTabs", + "saveTab", + "openInTab", + "notification", + "getResourceURL", + "getResourceText", + "xmlhttpRequest", + "webRequest", + "cookie", + "audio", + "log", + "info", +] as const; export const GMwindow = [ - 'unsafeWindow', - 'window.onurlchange', - 'window.focus', - 'window.close' -] as const + "unsafeWindow", + "window.onurlchange", + "window.focus", + "window.close", +] as const; + +export const GM_DOT_ALIASES = [ + "GM.xmlHttpRequest", + "GM.getResourceUrl", +] as const; -export const grants = GM.map((grant) => [ +export const grants = GM.map(grant => [ `GM_${grant}`, - `GM.${grant}` -]).flat() + `GM.${grant}`, +]).flat(); + +grants.push(...GMwindow); +grants.push(...GM_DOT_ALIASES); -grants.push(...GMwindow) +export const gmIdentifiers = [ + "unsafeWindow", + ...GM.map(grant => `GM_${grant}`), +] as const; diff --git a/src/css.ts b/src/css.ts new file mode 100644 index 0000000..b2c8c17 --- /dev/null +++ b/src/css.ts @@ -0,0 +1,32 @@ +import type { CssInject } from "./types.js"; + +export function escapeCssForTemplate(css: string): string { + return css + .replace(/\\/g, "\\\\") + .replace(/`/g, "\\`") + .replace(/\$\{/g, "\\${"); +} + +const defaultInjector = `(function (css) { + if (typeof GM_addStyle === 'function') { + GM_addStyle(css) + } else { + var style = document.createElement('style') + style.textContent = css + ;(document.head || document.documentElement).appendChild(style) + } +})`; + +export function createCssInject(css: string, cssInject: CssInject = "auto"): string { + const payload = JSON.stringify(css); + + if (cssInject === "auto") { + return `${defaultInjector}(${payload});\n`; + } + + if (typeof cssInject === "function") { + return `(${cssInject.toString()})(${payload});\n`; + } + + return `(${cssInject})(${payload});\n`; +} diff --git a/src/gm-shim.ts b/src/gm-shim.ts new file mode 100644 index 0000000..9c748b3 --- /dev/null +++ b/src/gm-shim.ts @@ -0,0 +1,39 @@ +import { GM_NAMESPACE, gmIdentifiers } from "./constants.js"; + +export function shouldShimModule(id: string): boolean { + const cleanId = id.split("\0").pop() ?? id; + + if (cleanId.includes("node_modules")) { + return false; + } + + if (/\.(?:css|scss|sass|less|styl|stylus|pcss)(?:$|\?)/i.test(cleanId)) { + return false; + } + + if (/[?&](?:vue|svelte)&type=style/.test(cleanId)) { + return false; + } + + if (/[?&](?:raw|url)(?:&|$)/.test(cleanId)) { + return false; + } + + if (/\.(?:m|c)?[jt]sx?(?:$|\?)/.test(cleanId)) { + return true; + } + + if (/[?&]vue&type=script/.test(cleanId) || cleanId.endsWith(".vue")) { + return true; + } + + if (/[?&]svelte&type=script/.test(cleanId) || cleanId.endsWith(".svelte")) { + return true; + } + + return false; +} + +export function createGmShimPrelude(): string { + return `const { ${gmIdentifiers.join(", ")} } = globalThis.${GM_NAMESPACE} ?? globalThis;\n`; +} diff --git a/src/grants.ts b/src/grants.ts new file mode 100644 index 0000000..780e2a9 --- /dev/null +++ b/src/grants.ts @@ -0,0 +1,22 @@ +import type { Grants } from "./types.js"; +import { grants } from "./constants.js"; + +export function removeDuplicates(arr: T | T[] | undefined): T[] { + if (Array.isArray(arr)) { + return [...new Set(arr)]; + } + + return arr ? [arr] : []; +} + +export function defineGrants(code: string): Grants[] { + const definedGrants: Grants[] = []; + + for (const grant of grants) { + if (code.includes(grant)) { + definedGrants.push(grant); + } + } + + return definedGrants; +} diff --git a/src/helpers.ts b/src/helpers.ts deleted file mode 100644 index 3466ddf..0000000 --- a/src/helpers.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { transformWithEsbuild } from 'vite' -import type { EsbuildTransformOptions } from 'vite' - -import { grants } from './constants.js' -import type { Grants, Transform } from './types.js' - -export function removeDuplicates(arr: any): any[] { - return [...new Set(Array.isArray(arr) ? arr : arr ? [arr] : [])] -} - -export async function transform( - { minify, file, name, loader }: Transform, - transformOptions?: EsbuildTransformOptions -): Promise { - const { code } = await transformWithEsbuild(file, name, { - minify, - loader, - sourcemap: false, - legalComments: 'none', - ...transformOptions - }) - - return code -} - -export function defineGrants(code: string): Grants[] { - const definedGrants: Grants[] = [] - - for (const grant of grants) { - if (code.indexOf(grant) !== -1) { - definedGrants.push(grant) - } - } - - return definedGrants -} diff --git a/src/index.ts b/src/index.ts index 3e2e1a3..8e0a2db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,206 +1,225 @@ -import { readFileSync, writeFileSync } from 'node:fs' -import { createServer } from 'node:http' -import { resolve } from 'node:path' -import getPort from 'get-port' -import openLink from 'open' -import colors from 'picocolors' -import serveHandler from 'serve-handler' -import { createLogger } from 'vite' -import { server } from 'websocket' -import type { PluginOption, ResolvedConfig } from 'vite' -import type { connection } from 'websocket' - -import { Banner } from './banner.js' -import { grants, pluginDir, pluginName, regexpScripts } from './constants.js' -import { defineGrants, removeDuplicates, transform } from './helpers.js' -import type { UserscriptPluginConfig } from './types.js' - -export type { UserscriptPluginConfig } +import type { Plugin } from "vite"; + +import type { OutputBundle } from "./build.js"; +import type { UserscriptPluginConfig } from "./types.js"; + +import { resolve } from "node:path"; +import openLink from "open"; +import { applyUserscriptBundle } from "./build.js"; +import { pluginName } from "./constants.js"; +import { createGmShimPrelude, shouldShimModule } from "./gm-shim.js"; +import { collectAutoMetaUrlsWarnings, resolvePluginConfig } from "./resolve.js"; +import { + createAfterLocalLogger, + createDevUserscript, + createReactBootstrapModule, + createReactPreambleModule, + DEV_SCRIPT_HEADERS, + findDevScript, + formatInstallLine, + hasReactRefreshPlugin, + matchReactBootstrap, + matchReactPreamble, + resolveBootstrapEntry, + toInstallUrl, +} from "./serve.js"; + +export { Banner, generateBanner } from "./banner.js"; + +export type { + BannerGenerateContext, + CssInject, + HeaderConfig, + ResolvedScript, + ScriptOptions, + ServerConfig, + UserscriptPluginConfig, +} from "./types.js"; + +function resolveServerOrigin(urls?: { local: string[]; network: string[] } | null): string { + const url = urls?.local[0] ?? urls?.network[0]; + return url ? url.replace(/\/$/, "") : "http://localhost:5173"; +} export default function UserscriptPlugin( - config: UserscriptPluginConfig -): PluginOption { - try { - let pluginConfig: ResolvedConfig - let isBuildWatch: boolean - let socketConnection: connection | null = null - - const fileName = config.fileName ?? config.header.name - - const logger = createLogger('info', { - prefix: `[${pluginName}]`, - allowClearScreen: true - }) - - const httpServer = createServer((req, res) => { - return serveHandler(req, res, { - public: pluginConfig.build.outDir - }) - }) - - const WebSocketServer = server - const ws = new WebSocketServer({ httpServer }) - ws.on('request', (request) => { - socketConnection = request.accept(null, request.origin) - }) - - return { - name: pluginName, - apply: 'build', - config() { + config: UserscriptPluginConfig, +): Plugin[] { + const resolved = resolvePluginConfig(config); + let reactPreamble = false; + + return [ + { + name: `${pluginName}:config`, + config(userConfig) { + const input = Object.fromEntries( + resolved.scripts.map(script => [script.fileName, script.entry]), + ); + return { + appType: userConfig.appType ?? "custom", + optimizeDeps: { + entries: resolved.scripts.map(script => script.entry), + }, + server: { + cors: userConfig.server?.cors ?? true, + }, build: { - target: 'esnext', - minify: false, - lib: { - name: fileName, - entry: config.entry, - formats: ['iife'], - fileName: () => `${fileName}.js` - }, - rollupOptions: { + minify: userConfig.build?.minify ?? false, + assetsInlineLimit: + userConfig.build?.assetsInlineLimit ?? Number.MAX_SAFE_INTEGER, + rolldownOptions: { + input, output: { - extend: true - } - } - } - } + format: resolved.scripts.length > 1 ? "es" : "iife", + extend: true, + entryFileNames: "[name].js", + name: "userscript", + }, + }, + }, + }; }, - async configResolved(userConfig) { - pluginConfig = userConfig - isBuildWatch = (userConfig.build.watch ?? false) as boolean - config.entry = resolve(userConfig.root, config.entry) - - Array.from([ - 'match', - 'require', - 'include', - 'exclude', - 'resource', - 'connect' - ]).forEach((key) => { - const value = config.header[key] - config.header[key] = removeDuplicates(value) - }) - - config.server = { - port: await getPort(), - open: false, - ...config.server + configResolved(viteConfig) { + for (const script of resolved.scripts) { + script.entry = resolve(viteConfig.root, script.entry); + } + reactPreamble = hasReactRefreshPlugin(viteConfig.plugins); + + for (const message of collectAutoMetaUrlsWarnings(resolved)) { + viteConfig.logger.warn(message); } }, - async writeBundle(output, bundle) { - const { open, port } = config.server! - const sanitizedFilename = output.sanitizeFileName(fileName) - const userFilename = `${sanitizedFilename}.user.js` - const proxyFilename = `${sanitizedFilename}.proxy.user.js` - const metaFilename = `${sanitizedFilename}.meta.js` - - for (const [fileName] of Object.entries(bundle)) { - if (regexpScripts.test(fileName)) { - const rootDir = pluginConfig.root - const outDir = pluginConfig.build.outDir - - const outPath = resolve(rootDir, outDir, fileName) - const userFilePath = resolve(rootDir, outDir, userFilename) - const proxyFilePath = resolve(rootDir, outDir, proxyFilename) - const metaFilePath = resolve(rootDir, outDir, metaFilename) - const wsPath = resolve(pluginDir, `ws-${sanitizedFilename}.js`) - - try { - let source = readFileSync(outPath, 'utf8') - source = await transform( - { - minify: !isBuildWatch, - file: source, - name: fileName, - loader: 'js' - }, - config.esbuildTransformOptions - ) - - config.header.grant = removeDuplicates( - isBuildWatch - ? grants - : [...defineGrants(source), ...(config.header.grant ?? [])] - ) - - if (isBuildWatch) { - const wsFile = readFileSync(resolve(pluginDir, 'ws.js'), 'utf8') - - const wsScript = await transform( - { - minify: !isBuildWatch, - file: wsFile.replace('__WS__', `ws://localhost:${port}`), - name: wsPath, - loader: 'js' - }, - config.esbuildTransformOptions - ) - - writeFileSync(wsPath, wsScript) - writeFileSync( - proxyFilePath, - new Banner({ - ...config.header, - require: [ - ...(config.header.require ?? []), - 'file://' + wsPath, - 'file://' + outPath - ] - }).generate() - ) - } + }, + { + name: `${pluginName}:serve`, + apply: "serve", + configureServer(server) { + server.middlewares.use((req, res, next) => { + const url = req.url ?? ""; + if (matchReactPreamble(url)) { + for (const [key, value] of Object.entries(DEV_SCRIPT_HEADERS)) { + res.setHeader(key, value); + } + res.end(createReactPreambleModule()); + return; + } - const banner = new Banner(config.header).generate() - writeFileSync(outPath, source) - writeFileSync(metaFilePath, banner) - writeFileSync(userFilePath, `${banner}\n\n${source}`) - } catch (err) { - console.log(err) + if (matchReactBootstrap(url)) { + const entry = resolveBootstrapEntry(url); + if (!entry) { + res.statusCode = 400; + res.end(); + return; } + + for (const [key, value] of Object.entries(DEV_SCRIPT_HEADERS)) { + res.setHeader(key, value); + } + res.end(createReactBootstrapModule(entry)); + return; } - } - if (isBuildWatch && !httpServer.listening) { - const link = `http://localhost:${port}` - httpServer.listen(port, () => { - logger.clearScreen('info') - logger.info( - colors.bold( - `${colors.cyan('>>> [vite-userscript-plugin]')} ${colors.gray( - link - )}` - ) - ) - }) - - if (open) { - await openLink(`${link}/${proxyFilename}`) + const script = findDevScript(url, resolved.scripts); + if (!script) { + next(); + return; } - } else if (!isBuildWatch) { - httpServer.close() - process.exit(0) - } + + const origin = resolveServerOrigin(server.resolvedUrls); + const body = createDevUserscript(resolved, { + origin, + root: server.config.root, + script, + reactPreamble, + }); + + for (const [key, value] of Object.entries(DEV_SCRIPT_HEADERS)) { + res.setHeader(key, value); + } + res.end(body); + }); + + const printUrls = server.printUrls.bind(server); + server.printUrls = () => { + const urls = server.resolvedUrls; + const info = server.config.logger.info.bind(server.config.logger); + let origins: string[] = []; + if (urls) { + origins = urls.local.length ? urls.local : urls.network; + } + + const printInstall = (): void => { + for (const origin of origins) { + for (const script of resolved.scripts) { + info(formatInstallLine(toInstallUrl(origin, script.fileName))); + } + } + }; + + const logger = createAfterLocalLogger( + info, + urls?.local.length ?? 0, + printInstall, + ); + const previousInfo = server.config.logger.info; + server.config.logger.info = logger.info; + + try { + printUrls(); + } finally { + server.config.logger.info = previousInfo; + logger.flush(); + } + }; + + server.httpServer?.once("listening", () => { + if (!resolved.server.open) { + return; + } + + queueMicrotask(() => { + const origin = resolveServerOrigin(server.resolvedUrls); + for (const script of resolved.scripts) { + void openLink(toInstallUrl(origin, script.fileName)); + } + }); + }); }, - buildEnd() { - if (isBuildWatch) { - logger.clearScreen('info') - - if (socketConnection) { - socketConnection.sendUTF( - JSON.stringify({ - message: 'reload' - }) - ) + }, + { + name: `${pluginName}:gm-shim`, + apply: "serve", + transform: { + filter: { + id: { + exclude: [/node_modules/], + }, + }, + handler(code, id) { + if (!shouldShimModule(id)) { + return null; } - } - } - } - } catch (err) { - console.error(err) - return { - name: pluginName - } - } + + return { + code: `${createGmShimPrelude()}${code}`, + map: null, + }; + }, + }, + }, + { + name: `${pluginName}:build`, + apply: "build", + enforce: "post", + generateBundle(_options, bundle) { + applyUserscriptBundle(bundle as OutputBundle, resolved, (fileName, source) => { + this.emitFile({ + type: "asset", + fileName, + source, + }); + }); + }, + }, + ]; } diff --git a/src/names.ts b/src/names.ts new file mode 100644 index 0000000..ad98b86 --- /dev/null +++ b/src/names.ts @@ -0,0 +1,23 @@ +export function sanitizeFileName(name: string): string { + const sanitized = name + // eslint-disable-next-line no-control-regex -- strip C0 controls from file names + .replace(/[<>:"/\\|?*\u0000-\u001F]+/g, "-") + .replace(/\s+/g, "-") + .replace(/-+/g, "-") + .replace(/^-|-$/g, ""); + + return sanitized || "userscript"; +} + +export function toIdentifier(name: string): string { + let id = name + .replace(/[^\w$]/g, "_") + .replace(/_+/g, "_") + .replace(/^_|_$/g, ""); + + if (/^\d/.test(id)) { + id = `_${id}`; + } + + return id || "userscript"; +} diff --git a/src/resolve.ts b/src/resolve.ts new file mode 100644 index 0000000..c261e63 --- /dev/null +++ b/src/resolve.ts @@ -0,0 +1,174 @@ +import type { + HeaderConfig, + ResolvedPluginConfig, + ResolvedScript, + ScriptOptions, + UserscriptPluginConfig, +} from "./types.js"; +import { resolveHomePage } from "./banner.js"; +import { pluginName } from "./constants.js"; +import { removeDuplicates } from "./grants.js"; +import { sanitizeFileName, toIdentifier } from "./names.js"; + +const ARRAY_HEADER_KEYS = [ + "match", + "require", + "include", + "exclude", + "resource", + "connect", + "antifeature", + "webRequest", + "exclude-match", +] as const; + +function uniqueHeaderValues(value: unknown): unknown[] { + if (Array.isArray(value)) { + return [...new Set(value)]; + } + + return value == null ? [] : [value]; +} + +function mergeHeader(defaults: Partial | undefined, header: HeaderConfig): HeaderConfig { + const merged: HeaderConfig = { + ...(defaults ?? {}), + ...header, + }; + + for (const key of ARRAY_HEADER_KEYS) { + const fromDefaults = defaults?.[key]; + const fromHeader = header[key]; + + if (fromDefaults != null && fromHeader != null) { + Object.assign(merged, { + [key]: uniqueHeaderValues([ + ...uniqueHeaderValues(fromDefaults), + ...uniqueHeaderValues(fromHeader), + ]), + }); + } else if (fromHeader != null) { + Object.assign(merged, { [key]: uniqueHeaderValues(fromHeader) }); + } else if (fromDefaults != null) { + Object.assign(merged, { [key]: uniqueHeaderValues(fromDefaults) }); + } + } + + if (header.grant === "none") { + merged.grant = "none"; + } else if (defaults?.grant === "none" && header.grant == null) { + merged.grant = "none"; + } else { + const grants = removeDuplicates([ + ...removeDuplicates( + defaults?.grant === "none" ? undefined : defaults?.grant, + ), + ...removeDuplicates(header.grant), + ]); + + if (grants.length) { + merged.grant = grants; + } else { + delete merged.grant; + } + } + + return merged; +} + +function assertHeader(header: Partial, label: string): void { + for (const field of ["name", "version", "match"] as const) { + if (header[field] == null || header[field] === "") { + throw new Error( + `[${pluginName}] ${label} is missing required header.${field}`, + ); + } + } +} + +function toResolvedScript(script: ScriptOptions, defaults?: Partial): ResolvedScript { + const header = mergeHeader(defaults, script.header); + assertHeader(header, script.entry); + + const fileName = sanitizeFileName(script.fileName ?? header.name); + + return { + entry: script.entry, + fileName, + iifeName: toIdentifier(fileName), + header, + }; +} + +export function collectAutoMetaUrlsWarnings(config: ResolvedPluginConfig): string[] { + if (!config.autoMetaUrls) { + return []; + } + + const warnings: string[] = []; + for (const script of config.scripts) { + if (!resolveHomePage(script.header)) { + warnings.push( + `[${pluginName}] autoMetaUrls is enabled but "${script.fileName}" has no homepage or homepageURL`, + ); + } + } + + return warnings; +} + +export function resolvePluginConfig(config: UserscriptPluginConfig): ResolvedPluginConfig { + const hasScripts = Boolean(config.scripts?.length); + const hasEntry = Boolean(config.entry); + + if (hasScripts && hasEntry) { + throw new Error( + `[${pluginName}] Use either "entry" or "scripts", not both`, + ); + } + + if (!hasScripts && !hasEntry) { + throw new Error( + `[${pluginName}] Provide "entry" or a non-empty "scripts" array`, + ); + } + + let scripts: ResolvedScript[]; + + if (hasScripts) { + scripts = config.scripts!.map(script => toResolvedScript(script, config.header), + ); + } else { + assertHeader(config.header ?? {}, "entry"); + scripts = [ + toResolvedScript({ + entry: config.entry!, + fileName: config.fileName, + header: config.header as HeaderConfig, + }), + ]; + } + + const names = new Set(); + for (const script of scripts) { + if (names.has(script.fileName)) { + throw new Error( + `[${pluginName}] Duplicate fileName "${script.fileName}"`, + ); + } + names.add(script.fileName); + } + + return { + scripts, + server: { + open: config.server?.open ?? false, + prefix: config.server?.prefix ?? "server:", + }, + cssInject: config.cssInject ?? "auto", + align: config.align ?? 1, + generate: config.generate, + autoMetaUrls: config.autoMetaUrls ?? false, + metaFile: config.metaFile ?? true, + }; +} diff --git a/src/serve.ts b/src/serve.ts new file mode 100644 index 0000000..5cefad1 --- /dev/null +++ b/src/serve.ts @@ -0,0 +1,231 @@ +import type { Logger } from "vite"; +import type { BannerOptions } from "./banner.js"; +import type { + HeaderConfig, + ResolvedPluginConfig, + ResolvedScript, +} from "./types.js"; + +import { posix, relative, resolve, sep } from "node:path"; +import { styleText } from "node:util"; +import { generateBanner } from "./banner.js"; +import { + GM_NAMESPACE, + gmIdentifiers, + grants, + REACT_BOOTSTRAP_PATH, + REACT_PREAMBLE_PATH, + REACT_REFRESH_PLUGIN_NAMES, + VITE_CLIENT_FLAG, +} from "./constants.js"; + +export const DEV_SCRIPT_HEADERS = { + "Content-Type": "text/javascript; charset=utf-8", + "Cache-Control": "no-store", +} as const; + +export function matchDevUserscript(url: string, fileName: string): boolean { + const path = url.split("?")[0] ?? ""; + return path === `/${fileName}.dev.user.js`; +} + +export function toInstallUrl(origin: string, fileName: string): string { + return `${origin.replace(/\/$/, "")}/${fileName}.dev.user.js`; +} + +export function formatInstallLine(installUrl: string): string { + const coloredUrl = styleText( + "cyan", + installUrl.replace( + /:(\d+)\//, + (_match, port: string) => `:${styleText("bold", port)}/`, + ), + ); + + return ` ${styleText("green", "➜")} ${styleText("bold", "Userscript")}: ${coloredUrl}`; +} + +export function stripAnsi(text: string): string { + // eslint-disable-next-line no-control-regex -- ESC prefix of ANSI CSI sequences + return text.replace(/\u001B\[[0-9;]*m/g, ""); +} + +export function isViteLocalUrlLine(message: string): boolean { + return /Local:\s/.test(stripAnsi(message)); +} + +export function createAfterLocalLogger(info: Logger["info"], localCount: number, onAfterLocal: () => void): { info: Logger["info"]; flush: () => void } { + let remaining = localCount; + let printed = false; + + const flush = (): void => { + if (printed) { + return; + } + + printed = true; + onAfterLocal(); + }; + + return { + info: (msg, options) => { + info(msg, options); + + if (remaining > 0 && isViteLocalUrlLine(String(msg))) { + remaining -= 1; + if (remaining === 0) { + flush(); + } + } + }, + flush, + }; +} + +export function toServeEntryPath(root: string, entry: string): string { + const absolute = resolve(root, entry); + const rel = relative(root, absolute).split(sep).join(posix.sep); + return `/${rel}`; +} + +export function applyServeHeader(header: HeaderConfig, prefix: string | false): HeaderConfig { + if (header.grant === "none") { + return { + ...header, + name: prefix === false ? header.name : `${prefix}${header.name}`, + }; + } + + return { + ...header, + name: prefix === false ? header.name : `${prefix}${header.name}`, + grant: [...new Set([...(header.grant ?? []), ...grants])], + }; +} + +export function hasReactRefreshPlugin(plugins: readonly { name: string }[]): boolean { + return plugins.some(plugin => REACT_REFRESH_PLUGIN_NAMES.has(plugin.name)); +} + +export function matchReactPreamble(url: string): boolean { + const path = url.split("?")[0] ?? ""; + return path === REACT_PREAMBLE_PATH; +} + +export function matchReactBootstrap(url: string): boolean { + const path = url.split("?")[0] ?? ""; + return path === REACT_BOOTSTRAP_PATH; +} + +export function resolveBootstrapEntry(url: string): string | undefined { + const query = url.includes("?") ? url.slice(url.indexOf("?") + 1) : ""; + const entry = new URLSearchParams(query).get("entry"); + if (!entry?.startsWith("/") || entry.startsWith("//")) { + return undefined; + } + + return entry; +} + +export function createReactPreambleModule(): string { + return `import { injectIntoGlobalHook } from "/@react-refresh"; +injectIntoGlobalHook(window); +window.$RefreshReg$ = () => {}; +window.$RefreshSig$ = () => (type) => type; +window.__vite_plugin_react_preamble_installed__ = true; +`; +} + +export function createReactBootstrapModule(entryPath: string): string { + return `import "/@vite/client"; +import ${JSON.stringify(REACT_PREAMBLE_PATH)}; +import ${JSON.stringify(entryPath)}; +`; +} + +export function generateDevWrapper(options: { + origin: string; + entryPath: string; + reactPreamble?: boolean; +}): string { + const clientUrl = `${options.origin}/@vite/client`; + const entryUrl = `${options.origin}${options.entryPath}`; + const bootstrapUrl = `${options.origin}${REACT_BOOTSTRAP_PATH}?entry=${encodeURIComponent(options.entryPath)}`; + const copies = gmIdentifiers + .map( + id => `if (typeof ${id} !== 'undefined') gm.${id} = ${id};`, + ) + .join("\n "); + const injectTarget = options.reactPreamble ? bootstrapUrl : entryUrl; + const clientInject = options.reactPreamble + ? "" + : ` + if (!root.${VITE_CLIENT_FLAG}) { + root.${VITE_CLIENT_FLAG} = true; + inject(${JSON.stringify(clientUrl)}); + }`; + + return `(function () { + var root = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window; + var gm = root.${GM_NAMESPACE} || {}; + ${copies} + root.${GM_NAMESPACE} = gm; + + function inject(src) { + var script = document.createElement('script'); + script.type = 'module'; + script.src = src; + (document.head || document.documentElement).appendChild(script); + } +${clientInject} + inject(${JSON.stringify(injectTarget)}); +})(); +`; +} + +export function generateDevUserscript(options: { + script: ResolvedScript; + origin: string; + root: string; + prefix: string | false; + banner: BannerOptions; + reactPreamble?: boolean; +}): string { + const header = applyServeHeader(options.script.header, options.prefix); + const banner = generateBanner(header, { + ...options.banner, + fileName: options.script.fileName, + mode: "serve", + }); + const wrapper = generateDevWrapper({ + origin: options.origin, + entryPath: toServeEntryPath(options.root, options.script.entry), + reactPreamble: options.reactPreamble, + }); + + return `${banner}\n\n${wrapper}`; +} + +export function findDevScript(url: string, scripts: ResolvedScript[]): ResolvedScript | undefined { + return scripts.find(script => matchDevUserscript(url, script.fileName)); +} + +export function createDevUserscript(config: ResolvedPluginConfig, options: { + origin: string; + root: string; + script: ResolvedScript; + reactPreamble?: boolean; +}): string { + return generateDevUserscript({ + script: options.script, + origin: options.origin, + root: options.root, + prefix: config.server.prefix, + banner: { + align: config.align, + autoMetaUrls: config.autoMetaUrls, + generate: config.generate, + }, + reactPreamble: options.reactPreamble, + }); +} diff --git a/src/sourcemap.ts b/src/sourcemap.ts new file mode 100644 index 0000000..f5c43f3 --- /dev/null +++ b/src/sourcemap.ts @@ -0,0 +1,27 @@ +export interface OffsetSourceMap { + file?: string; + mappings: string; + names?: string[]; + sources?: string[]; + sourcesContent?: (string | null)[]; + version: number; + [key: string]: unknown; +} + +export function countBannerLines(prefix: string): number { + return prefix.endsWith("\n") + ? prefix.slice(0, -1).split("\n").length + : prefix.split("\n").length; +} + +export function offsetSourceMap(map: T, lineOffset: number, fileName?: string): T { + if (lineOffset <= 0) { + return fileName ? { ...map, file: fileName } : map; + } + + return { + ...map, + file: fileName ?? map.file, + mappings: `${";".repeat(lineOffset)}${map.mappings}`, + }; +} diff --git a/src/types.ts b/src/types.ts index 4993b3d..95de188 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,238 +1,310 @@ -import type { EsbuildTransformOptions } from 'vite' +import type { GM, GM_DOT_ALIASES, GMwindow } from "./constants.js"; -import { GM, GMwindow } from './constants.js' +export type RunAt + = | "document-start" + | "document-body" + | "document-end" + | "document-idle" + | "context-menu"; -export interface Transform { - minify: boolean - file: string - name: string - loader: 'js' | 'css' -} - -export type RunAt = - | 'document-start' - | 'document-body' - | 'document-end' - | 'document-idle' - | 'context-menu' - -export type GMLiterals = [`GM_${T}` | `GM.${T}`] -export type GMWindow = (typeof GMwindow)[number] -export type Grants = GMWindow | GMLiterals<(typeof GM)[number]>[number] +export type GMLiterals = [`GM_${T}` | `GM.${T}`]; +export type GMWindow = (typeof GMwindow)[number]; +export type GMDotAlias = (typeof GM_DOT_ALIASES)[number]; +export type Grants = GMWindow | GMLiterals<(typeof GM)[number]>[number] | GMDotAlias; export type HeaderConfig = { - [property: string]: any + [property: string]: any; /** * @see https://www.tampermonkey.net/documentation.php#meta:name */ - name: string + "name": string; /** * @see https://www.tampermonkey.net/documentation.php#meta:namespace */ - namespace?: string + "namespace"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:copyright */ - copyright?: string + "copyright"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:version */ - version: string + "version": string; /** * @see https://www.tampermonkey.net/documentation.php#meta:description */ - description?: string + "description"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:icon */ - icon?: string + "icon"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:icon */ - iconURL?: string + "iconURL"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:icon */ - defaulticon?: string + "defaulticon"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:icon64 */ - icon64?: string + "icon64"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:icon64 */ - icon64URL?: string + "icon64URL"?: string; /** + * `@grant none` disables GM APIs. Do not mix with auto-detected grants. + * * @see https://www.tampermonkey.net/documentation.php#meta:grant */ - grant?: Grants[] + "grant"?: Grants[] | "none"; /** * @see https://www.tampermonkey.net/documentation.php#meta:author */ - author?: string + "author"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:homepage */ - homepage?: string + "homepage"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:homepage */ - homepageURL?: string + "homepageURL"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:homepage */ - website?: string + "website"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:homepage */ - source?: string + "source"?: string; /** - * @see https://www.tampermonkey.net/documentation.phpmeta:antifeature + * @see https://www.tampermonkey.net/documentation.php#meta:antifeature */ - antifeature?: [type: string, description: string][] + "antifeature"?: [type: string, description: string][]; /** * @see https://www.tampermonkey.net/documentation.php#meta:require */ - require?: string[] | string + "require"?: string[] | string; /** * @see https://www.tampermonkey.net/documentation.php#meta:resource */ - resource?: [key: string, value: string][] + "resource"?: [key: string, value: string][]; /** * @see https://www.tampermonkey.net/documentation.php#meta:include */ - include?: string[] | string + "include"?: string[] | string; /** * @see https://www.tampermonkey.net/documentation.php#meta:match * @see https://violentmonkey.github.io/api/metadata-block/#match--exclude-match */ - match: string[] | string + "match": string[] | string; /** * @see https://violentmonkey.github.io/api/metadata-block/#match--exclude-match */ - 'exclude-match'?: string[] | string + "exclude-match"?: string[] | string; /** * @see https://www.tampermonkey.net/documentation.php#meta:exclude */ - exclude?: string[] | string + "exclude"?: string[] | string; /** * @see https://www.tampermonkey.net/documentation.php#meta:run_at */ - 'run-at'?: RunAt + "run-at"?: RunAt; /** - * @see https://www.tampermonkey.net/documentation.phpmeta:sandbox + * @see https://www.tampermonkey.net/documentation.php#meta:sandbox */ - sandbox?: string + "sandbox"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:connect */ - connect?: string[] | string + "connect"?: string[] | string; /** * @see https://www.tampermonkey.net/documentation.php#meta:noframes */ - noframes?: boolean + "noframes"?: boolean; /** * @see https://www.tampermonkey.net/documentation.php#meta:updateURL */ - updateURL?: string + "updateURL"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:downloadURL */ - downloadURL?: string + "downloadURL"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:supportURL */ - supportURL?: string + "supportURL"?: string; /** * @see https://www.tampermonkey.net/documentation.php#meta:webRequest */ - webRequest?: string[] + "webRequest"?: string[]; /** * @see https://www.tampermonkey.net/documentation.php#meta:unwrap */ - unwrap?: boolean + "unwrap"?: boolean; +}; + +export interface ScriptOptions { + /** + * Path of userscript entry. + */ + entry: string; + + /** + * Output base name (`{fileName}.user.js`). + * + * @default sanitized `header.name` + */ + fileName?: string; + + /** + * Userscript header for this entry. + */ + header: HeaderConfig; } export interface ServerConfig { /** - * {@link https://github.com/sindresorhus/get-port} + * Open the `.dev.user.js` install URL when the Vite server starts. + * + * @default false */ - port?: number + open?: boolean; /** - * @default false + * Prefix applied to `@name` in serve mode. + * Set `false` to disable. + * + * @default 'server:' */ - open?: boolean + prefix?: string | false; +} + +export type BannerMode = "serve" | "build" | "meta"; + +export interface BannerGenerateContext { + userscript: string; + mode: BannerMode; } +export type CssInject + = | "auto" + | string + | ((css: string) => void); + export interface UserscriptPluginConfig { /** - * Path of userscript entry. + * Single-script sugar. Use `scripts` for multiple entries. */ - entry: string + entry?: string; /** - * Userscript file name. + * Single-script sugar for `scripts[0].fileName`. */ - fileName?: string + fileName?: string; /** - * Userscript header config. + * Default header fields merged into every script. + * For the single-script sugar this is the script header (`name`, `version`, `match` required). + */ + header?: Partial; + + /** + * Multiple userscripts served/built from one Vite config. + */ + scripts?: ScriptOptions[]; + + /** + * Serve-mode options. + */ + server?: ServerConfig; + + /** + * How to inject collected CSS in production builds. * - * @see https://www.tampermonkey.net/documentation.php + * @default 'auto' */ - header: HeaderConfig + cssInject?: CssInject; /** - * Server config. + * Extra spaces after the longest `@key`, or `false` for a single space. + * + * @default 1 */ - server?: ServerConfig + align?: number | false; /** - * Override default esbuild transform options. + * Rewrite the generated metablock. + */ + generate?: (ctx: BannerGenerateContext) => string; + + /** + * Derive `updateURL` / `downloadURL` from `homepage` (or `homepageURL`) + * when those fields are empty. Warns if neither homepage field is set. + * + * @default false + */ + autoMetaUrls?: boolean; + + /** + * Emit `{fileName}.meta.js` alongside the userscript. * - * @default - * ```json - * { - * "minify": true, - * "legalComments": "none" - * } - * ``` - */ - esbuildTransformOptions?: Omit< - EsbuildTransformOptions, - 'format' | 'target' | 'loader' | 'sourcemap' - > + * @default true + */ + metaFile?: boolean; +} + +export interface ResolvedScript { + entry: string; + fileName: string; + iifeName: string; + header: HeaderConfig; +} + +export interface ResolvedPluginConfig { + scripts: ResolvedScript[]; + server: { + open: boolean; + prefix: string | false; + }; + cssInject: CssInject; + align: number | false; + generate?: (ctx: BannerGenerateContext) => string; + autoMetaUrls: boolean; + metaFile: boolean; } diff --git a/src/ws.ts b/src/ws.ts deleted file mode 100644 index f6ff667..0000000 --- a/src/ws.ts +++ /dev/null @@ -1,17 +0,0 @@ -function connection() { - const ws = new WebSocket('__WS__') - - ws.addEventListener('close', () => { - setTimeout(connection, 1000) - }) - - ws.addEventListener('error', () => { - ws.close() - }) - - ws.addEventListener('message', () => { - location.reload() - }) -} - -connection() diff --git a/test/__snapshots__/banner.test.ts.snap b/test/__snapshots__/banner.test.ts.snap index 06f7f95..0e4578c 100644 --- a/test/__snapshots__/banner.test.ts.snap +++ b/test/__snapshots__/banner.test.ts.snap @@ -16,9 +16,9 @@ exports[`banner default snapshot 1`] = ` // @exclude https://vitest.dev/api/* // @include https://vitest.dev // @homepage https://github.com/vitest-dev/vitest -// @downloadURL https://github.com/vitest-dev/vitest.user.js +// @downloadURL https://vitest.dev // @supportURL https://vitest.dev -// @updateURL https://github.com/vitest-dev/vitest.meta.js +// @updateURL https://vitest.dev // @resource vitest https://vitest.dev // @require https://example.com/index.js // @grant GM_setValue @@ -29,6 +29,12 @@ exports[`banner default snapshot 1`] = ` // @grant GM.deleteValue // @grant GM_listValues // @grant GM.listValues +// @grant GM_setValues +// @grant GM.setValues +// @grant GM_getValues +// @grant GM.getValues +// @grant GM_deleteValues +// @grant GM.deleteValues // @grant GM_setClipboard // @grant GM.setClipboard // @grant GM_addStyle @@ -61,6 +67,12 @@ exports[`banner default snapshot 1`] = ` // @grant GM.getResourceText // @grant GM_xmlhttpRequest // @grant GM.xmlhttpRequest +// @grant GM_webRequest +// @grant GM.webRequest +// @grant GM_cookie +// @grant GM.cookie +// @grant GM_audio +// @grant GM.audio // @grant GM_log // @grant GM.log // @grant GM_info @@ -69,18 +81,9 @@ exports[`banner default snapshot 1`] = ` // @grant window.onurlchange // @grant window.focus // @grant window.close +// @grant GM.xmlHttpRequest +// @grant GM.getResourceUrl // @match https://vitest.dev // @run-at document-start // ==/UserScript==" `; - -exports[`banner meta snapshot 1`] = ` -"// ==UserScript== -// @name vitest -// @version 1.0.0 -// @match https://example.com -// @homepage https://crashmax-dev.github.io/jsx/ -// @updateURL https://crashmax-dev.github.io/jsx/vitest.meta.js -// @downloadURL https://crashmax-dev.github.io/jsx/vitest.user.js -// ==/UserScript==" -`; diff --git a/test/__snapshots__/helpers.test.ts.snap b/test/__snapshots__/grants.test.ts.snap similarity index 100% rename from test/__snapshots__/helpers.test.ts.snap rename to test/__snapshots__/grants.test.ts.snap diff --git a/test/banner.test.ts b/test/banner.test.ts index 90330ea..c0afe4a 100644 --- a/test/banner.test.ts +++ b/test/banner.test.ts @@ -1,46 +1,155 @@ -import { expect, test } from 'vitest' +import type { HeaderConfig } from "../src/types.js"; -import { Banner } from '../src/banner.js' -import { grants } from '../src/constants.js' -import type { HeaderConfig } from '../src/types.js' +import { expect, it } from "vitest"; +import { Banner, generateBanner } from "../src/banner.js"; +import { grants } from "../src/constants.js"; const defaultBanner: HeaderConfig = { - name: 'vitest', - version: '1.0.0', - author: 'John Doe', - description: 'vitest', - namespace: 'vitest', - connect: 'vitest.dev', - license: 'MIT', - noframes: true, - icon: 'https://vitest.dev/favicon.ico', - icon64: 'https://vitest.dev/favicon.ico', - exclude: ['https://vitest.dev/guide/*', 'https://vitest.dev/api/*'], - include: 'https://vitest.dev', - homepage: 'https://github.com/vitest-dev/vitest', - downloadURL: 'https://vitest.dev', - supportURL: 'https://vitest.dev', - updateURL: 'https://vitest.dev', - resource: [['vitest', 'https://vitest.dev']], - require: 'https://example.com/index.js', - grant: [...grants], - match: 'https://vitest.dev', - 'run-at': 'document-start' -} - -test('banner default snapshot', () => { - const banner = new Banner(defaultBanner).generate() - expect(banner).toMatchSnapshot() -}) - -const metaBanner: HeaderConfig = { - name: 'vitest', - version: '1.0.0', - match: 'https://example.com', - homepage: 'https://crashmax-dev.github.io/jsx/' -} - -test('banner meta snapshot', () => { - const banner = new Banner(metaBanner).generate() - expect(banner).toMatchSnapshot() -}) + "name": "vitest", + "version": "1.0.0", + "author": "John Doe", + "description": "vitest", + "namespace": "vitest", + "connect": "vitest.dev", + "license": "MIT", + "noframes": true, + "icon": "https://vitest.dev/favicon.ico", + "icon64": "https://vitest.dev/favicon.ico", + "exclude": ["https://vitest.dev/guide/*", "https://vitest.dev/api/*"], + "include": "https://vitest.dev", + "homepage": "https://github.com/vitest-dev/vitest", + "downloadURL": "https://vitest.dev", + "supportURL": "https://vitest.dev", + "updateURL": "https://vitest.dev", + "resource": [["vitest", "https://vitest.dev"]], + "require": "https://example.com/index.js", + "grant": [...grants], + "match": "https://vitest.dev", + "run-at": "document-start", +}; + +it("banner default snapshot", () => { + const banner = new Banner(defaultBanner).generate(); + expect(banner).toMatchSnapshot(); +}); + +it("banner does not mutate input header", () => { + const header: HeaderConfig = { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + homepage: "https://example.com/project", + }; + const clone = structuredClone(header); + + generateBanner(header, { autoMetaUrls: true, fileName: "vitest" }); + + expect(header).toEqual(clone); +}); + +it("banner skips false and undefined fields", () => { + const banner = generateBanner({ + name: "vitest", + version: "1.0.0", + match: "https://example.com", + noframes: false, + unwrap: undefined, + }); + + expect(banner).not.toContain("@noframes"); + expect(banner).not.toContain("@unwrap"); +}); + +it("banner prints grant none as a single field", () => { + const banner = generateBanner({ + name: "vitest", + version: "1.0.0", + match: "https://example.com", + grant: "none", + }); + + expect(banner).toContain("@grant"); + expect(banner).toContain("none"); + expect(banner).not.toContain("GM_addStyle"); +}); + +it("banner autoMetaUrls keeps explicit update and download URLs", () => { + const banner = generateBanner( + { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + homepage: "https://github.com/vitest-dev/vitest", + updateURL: "https://vitest.dev", + downloadURL: "https://vitest.dev", + }, + { autoMetaUrls: true, fileName: "vitest" }, + ); + + expect(banner).toContain("@updateURL"); + expect(banner).toContain("https://vitest.dev"); + expect(banner).not.toContain("vitest.meta.js"); +}); + +it("banner autoMetaUrls without homepage does not add update or download URLs", () => { + const banner = generateBanner( + { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + }, + { autoMetaUrls: true, fileName: "vitest" }, + ); + + expect(banner).not.toContain("@updateURL"); + expect(banner).not.toContain("@downloadURL"); +}); + +it("banner autoMetaUrls joins homepage without trailing slash", () => { + const banner = generateBanner( + { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + homepage: "https://crashmax-dev.github.io/jsx", + }, + { autoMetaUrls: true, fileName: "vitest" }, + ); + + expect(banner).toContain( + "https://crashmax-dev.github.io/jsx/vitest.meta.js", + ); + expect(banner).toContain( + "https://crashmax-dev.github.io/jsx/vitest.user.js", + ); +}); + +it("banner generate hook receives userscript text", () => { + const banner = generateBanner( + { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + }, + { + mode: "meta", + generate: ({ userscript, mode }) => `${userscript}\n// mode:${mode}`, + }, + ); + + expect(banner).toContain("==UserScript=="); + expect(banner).toContain("// mode:meta"); +}); + +it("banner align false uses a single space", () => { + const banner = generateBanner( + { + name: "vitest", + version: "1.0.0", + match: "https://example.com", + }, + { align: false }, + ); + + expect(banner).toContain("// @name vitest"); +}); diff --git a/test/build.integration.test.ts b/test/build.integration.test.ts new file mode 100644 index 0000000..12eca97 --- /dev/null +++ b/test/build.integration.test.ts @@ -0,0 +1,225 @@ +import type { UserscriptPluginConfig } from "../src/types.js"; +import { mkdtemp, readFile, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; + +import { fileURLToPath } from "node:url"; +import { svelte } from "@sveltejs/vite-plugin-svelte"; +import vue from "@vitejs/plugin-vue"; +import { build } from "vite"; + +import { afterEach, expect, it } from "vitest"; +import Userscript from "../src/index.js"; + +const fixtures = fileURLToPath(new URL("./fixtures", import.meta.url)); +const outDirs: string[] = []; + +afterEach(async () => { + await Promise.all(outDirs.splice(0).map(dir => rm(dir, { recursive: true, force: true }))); +}); + +async function buildFixture(name: string, plugin: UserscriptPluginConfig, options: { + plugins?: import("vite").PluginOption[]; + minify?: boolean | "oxc" | "terser"; + sourcemap?: boolean; +} = {}) { + const root = join(fixtures, name); + const outDir = await mkdtemp(join(tmpdir(), `userscript-${name}-`)); + outDirs.push(outDir); + + await build({ + root, + configFile: false, + logLevel: "silent", + plugins: [...(options.plugins ?? []), Userscript(plugin)], + build: { + outDir, + emptyOutDir: true, + write: true, + sourcemap: options.sourcemap, + minify: options.minify, + }, + }); + + return outDir; +} + +function readOut(outDir: string, fileName: string) { + return readFile(join(outDir, fileName), "utf8"); +} + +it("vanilla CSS is inlined into an unminified userscript", async () => { + const outDir = await buildFixture("vanilla", { + entry: "src/main.ts", + fileName: "vanilla", + header: { + name: "Vanilla", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + const userscript = await readOut(outDir, "vanilla.user.js"); + const meta = await readOut(outDir, "vanilla.meta.js"); + + expect(userscript).toContain("==UserScript=="); + expect(userscript).toContain("@name"); + expect(userscript).toContain("userscript-fixture"); + expect(userscript).toMatch(/GM_addStyle|__vite_style__/); + expect(userscript).toContain("data-userscript"); + expect(meta).toContain("==UserScript=="); + expect(meta).not.toContain("userscript-fixture"); +}); + +it("explicit minify still keeps the metablock", async () => { + const outDir = await buildFixture( + "vanilla", + { + entry: "src/main.ts", + fileName: "vanilla", + header: { + name: "Vanilla", + version: "1.0.0", + match: "https://example.com/*", + }, + }, + { minify: true }, + ); + + const userscript = await readOut(outDir, "vanilla.user.js"); + expect(userscript.startsWith("// ==UserScript==")).toBe(true); + expect(userscript).toContain("userscript-fixture"); + expect(userscript).not.toContain("export const hello"); +}); + +it("sourcemap is emitted next to the userscript", async () => { + const outDir = await buildFixture( + "vanilla", + { + entry: "src/main.ts", + fileName: "vanilla", + header: { + name: "Vanilla", + version: "1.0.0", + match: "https://example.com/*", + }, + }, + { sourcemap: true }, + ); + + const map = JSON.parse(await readOut(outDir, "vanilla.user.js.map")) as { + file?: string; + sources: string[]; + }; + + expect(map.file).toBe("vanilla.user.js"); + expect(map.sources.some(source => source.includes("main"))).toBe(true); +}); + +it("multiple entries emit two userscripts", async () => { + const outDir = await buildFixture("multi", { + scripts: [ + { + entry: "src/foo.ts", + fileName: "foo", + header: { + name: "Foo", + version: "1.0.0", + match: "https://foo.example/*", + }, + }, + { + entry: "src/bar.ts", + fileName: "bar", + header: { + name: "Bar", + version: "1.0.0", + match: "https://bar.example/*", + }, + }, + ], + }); + + const foo = await readOut(outDir, "foo.user.js"); + const bar = await readOut(outDir, "bar.user.js"); + + expect(foo).toMatch(/@name\s+Foo/); + expect(foo).toContain("https://foo.example/*"); + expect(bar).toMatch(/@name\s+Bar/); + expect(bar).toContain("https://bar.example/*"); + expect(await readOut(outDir, "foo.meta.js")).toMatch(/@name\s+Foo/); + expect(await readOut(outDir, "bar.meta.js")).toMatch(/@name\s+Bar/); +}); + +it("grant none is preserved and CSS grant is not added", async () => { + const outDir = await buildFixture("grant-none", { + entry: "src/main.ts", + fileName: "none", + header: { + name: "None", + version: "1.0.0", + match: "https://example.com/*", + grant: "none", + }, + }); + + const userscript = await readOut(outDir, "none.user.js"); + expect(userscript).toMatch(/@grant\s+none/); + expect(userscript).not.toContain("GM_addStyle"); +}); + +it("imported images are inlined as data URLs", async () => { + const outDir = await buildFixture("asset", { + entry: "src/main.ts", + fileName: "asset", + header: { + name: "Asset", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + const userscript = await readOut(outDir, "asset.user.js"); + expect(userscript).toContain("data:image/png"); + expect(userscript).not.toMatch(/\/assets\/.+\.png/); +}); + +it("vue SFC styles are inlined", async () => { + const outDir = await buildFixture( + "vue", + { + entry: "src/main.ts", + fileName: "vue", + header: { + name: "Vue", + version: "1.0.0", + match: "https://example.com/*", + }, + }, + { plugins: [vue()] }, + ); + + const userscript = await readOut(outDir, "vue.user.js"); + expect(userscript).toContain("vue-fixture"); + expect(userscript).toContain("rebeccapurple"); +}); + +it("svelte SFC styles are inlined", async () => { + const outDir = await buildFixture( + "svelte", + { + entry: "src/main.ts", + fileName: "svelte", + header: { + name: "Svelte", + version: "1.0.0", + match: "https://example.com/*", + }, + }, + { plugins: [svelte()] }, + ); + + const userscript = await readOut(outDir, "svelte.user.js"); + expect(userscript).toContain("svelte-fixture"); + expect(userscript).toContain("darkorange"); +}); diff --git a/test/css.test.ts b/test/css.test.ts new file mode 100644 index 0000000..608768f --- /dev/null +++ b/test/css.test.ts @@ -0,0 +1,24 @@ +import { expect, it } from "vitest"; + +import { createCssInject, escapeCssForTemplate } from "../src/css.js"; + +it("escapeCssForTemplate escapes backticks, interpolations and slashes", () => { + expect(escapeCssForTemplate("a`b${c}\\d")).toBe("a\\`b\\${c}\\\\d"); +}); + +it("createCssInject embeds CSS via JSON and uses the auto injector", () => { + const css = "body { content: \"`${oops}`\" }"; + const injected = createCssInject(css); + + expect(injected).toContain("GM_addStyle"); + expect(injected).toContain(JSON.stringify(css)); +}); + +it("createCssInject uses a custom function", () => { + const injected = createCssInject("body{}", (css) => { + void css; + }); + + expect(injected.startsWith("(")).toBe(true); + expect(injected).toContain(JSON.stringify("body{}")); +}); diff --git a/test/fixtures/asset/src/main.ts b/test/fixtures/asset/src/main.ts new file mode 100644 index 0000000..3bcc225 --- /dev/null +++ b/test/fixtures/asset/src/main.ts @@ -0,0 +1,3 @@ +import img from "./pixel.png"; + +document.body?.setAttribute("data-img", img); diff --git a/test/fixtures/asset/src/pixel.png b/test/fixtures/asset/src/pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..f37764b1f7606623616dcdc169cc858273ea2d94 GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZYBRYe;|OLfu)tPp=D){ QB2a?C)78&qol`;+0Lr!y6951J literal 0 HcmV?d00001 diff --git a/test/fixtures/grant-none/src/main.ts b/test/fixtures/grant-none/src/main.ts new file mode 100644 index 0000000..b54040c --- /dev/null +++ b/test/fixtures/grant-none/src/main.ts @@ -0,0 +1 @@ +document.body?.setAttribute("data-grant", "none"); diff --git a/test/fixtures/multi/src/bar.ts b/test/fixtures/multi/src/bar.ts new file mode 100644 index 0000000..1eaadbd --- /dev/null +++ b/test/fixtures/multi/src/bar.ts @@ -0,0 +1 @@ +export const name = "bar"; diff --git a/test/fixtures/multi/src/foo.ts b/test/fixtures/multi/src/foo.ts new file mode 100644 index 0000000..6768d06 --- /dev/null +++ b/test/fixtures/multi/src/foo.ts @@ -0,0 +1 @@ +export const name = "foo"; diff --git a/test/fixtures/svelte/src/App.svelte b/test/fixtures/svelte/src/App.svelte new file mode 100644 index 0000000..29ce696 --- /dev/null +++ b/test/fixtures/svelte/src/App.svelte @@ -0,0 +1,7 @@ +

Svelte userscript

+ + diff --git a/test/fixtures/svelte/src/main.ts b/test/fixtures/svelte/src/main.ts new file mode 100644 index 0000000..4f3580a --- /dev/null +++ b/test/fixtures/svelte/src/main.ts @@ -0,0 +1,7 @@ +import { mount } from "svelte"; + +import App from "./App.svelte"; + +if (document.body) { + mount(App, { target: document.body }); +} diff --git a/test/fixtures/vanilla/src/main.ts b/test/fixtures/vanilla/src/main.ts new file mode 100644 index 0000000..91406a2 --- /dev/null +++ b/test/fixtures/vanilla/src/main.ts @@ -0,0 +1,5 @@ +import "./style.css"; + +export const hello = "userscript"; + +document.body?.setAttribute("data-userscript", hello); diff --git a/test/fixtures/vanilla/src/style.css b/test/fixtures/vanilla/src/style.css new file mode 100644 index 0000000..1618fae --- /dev/null +++ b/test/fixtures/vanilla/src/style.css @@ -0,0 +1,3 @@ +.userscript-fixture { + color: tomato; +} diff --git a/test/fixtures/vue/src/App.vue b/test/fixtures/vue/src/App.vue new file mode 100644 index 0000000..e2e5db1 --- /dev/null +++ b/test/fixtures/vue/src/App.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/test/fixtures/vue/src/main.ts b/test/fixtures/vue/src/main.ts new file mode 100644 index 0000000..15765bd --- /dev/null +++ b/test/fixtures/vue/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from "vue"; + +import App from "./App.vue"; + +createApp(App).mount(document.body); diff --git a/test/gm-shim.test.ts b/test/gm-shim.test.ts new file mode 100644 index 0000000..5b3237d --- /dev/null +++ b/test/gm-shim.test.ts @@ -0,0 +1,29 @@ +import { expect, it } from "vitest"; + +import { GM_NAMESPACE } from "../src/constants.js"; +import { createGmShimPrelude, shouldShimModule } from "../src/gm-shim.js"; + +it("shouldShimModule accepts user JS and framework script modules", () => { + expect(shouldShimModule("/src/main.ts")).toBe(true); + expect(shouldShimModule("/src/app.tsx")).toBe(true); + expect(shouldShimModule("/src/App.vue")).toBe(true); + expect(shouldShimModule("/src/App.vue?vue&type=script&lang.ts")).toBe(true); + expect(shouldShimModule("/src/Widget.svelte")).toBe(true); +}); + +it("shouldShimModule rejects styles, raw queries and node_modules", () => { + expect(shouldShimModule("/src/style.css")).toBe(false); + expect(shouldShimModule("/src/style.scss")).toBe(false); + expect(shouldShimModule("/src/App.vue?vue&type=style&lang.css")).toBe(false); + expect(shouldShimModule("/src/Widget.svelte?svelte&type=style")).toBe(false); + expect(shouldShimModule("/src/style.css?raw")).toBe(false); + expect(shouldShimModule("/node_modules/vue/dist/vue.js")).toBe(false); +}); + +it("createGmShimPrelude reads GM APIs from the namespace", () => { + const prelude = createGmShimPrelude(); + + expect(prelude).toContain(`globalThis.${GM_NAMESPACE}`); + expect(prelude).toContain("GM_addStyle"); + expect(prelude).toContain("unsafeWindow"); +}); diff --git a/test/grants.test.ts b/test/grants.test.ts new file mode 100644 index 0000000..c5ced33 --- /dev/null +++ b/test/grants.test.ts @@ -0,0 +1,106 @@ +import type { Grants } from "../src/types.js"; + +import { expect, it } from "vitest"; +import { ensureIife, resolveBuildHeader } from "../src/build.js"; +import { defineGrants, removeDuplicates } from "../src/grants.js"; + +it("defineGrants snapshot", () => { + const code = `(function(){"use strict";function e(){const t=document.createElement("button");return t.textContent="Button",t.addEventListener("click",()=>{GM_notification({text:"Hello"})}),t}document.querySelector("div").appendChild(e()),console.log(GM_info),GM_addStyle("button{border:none;background-color:tomato;padding:1rem;font-size:1rem;font-weight:600;border-radius:1rem}")})();`; + const grants = defineGrants(code); + expect(grants).toMatchSnapshot(); +}); + +it("removeDuplicates snapshot", () => { + const grants: Grants[] = [ + "GM_addElement", + "GM_addElement", + "GM_addStyle", + "GM_download", + "GM_addStyle", + ]; + + expect(removeDuplicates(grants)).toMatchSnapshot(); +}); + +it("removeDuplicates insert string to array", () => { + const str = "hello"; + expect(removeDuplicates(str)).toEqual([str]); +}); + +it("defineGrants detects batch storage APIs", () => { + const grants = defineGrants( + "await GM.getValues([\"foo\"]); GM_setValues({ foo: 1 }); GM.deleteValues([\"foo\"])", + ); + + expect(grants).toEqual( + expect.arrayContaining(["GM.getValues", "GM_setValues", "GM.deleteValues"]), + ); +}); + +it("defineGrants detects cookie and audio objects", () => { + const grants = defineGrants( + "GM_cookie.list({}); GM_audio.getState(() => {})", + ); + + expect(grants).toEqual( + expect.arrayContaining(["GM_cookie", "GM_audio"]), + ); +}); + +it("defineGrants detects official GM.* aliases", () => { + const grants = defineGrants( + "GM.xmlHttpRequest({ url: \"/\" }); await GM.getResourceUrl(\"icon\")", + ); + + expect(grants).toEqual( + expect.arrayContaining(["GM.xmlHttpRequest", "GM.getResourceUrl"]), + ); + expect(grants).not.toContain("GM_xmlHttpRequest"); + expect(grants).not.toContain("GM_getResourceUrl"); +}); + +it("resolveBuildHeader keeps grant none", () => { + const header = resolveBuildHeader( + { + name: "a", + version: "1.0.0", + match: "https://example.com", + grant: "none", + }, + "GM_addStyle(\"x\")", + true, + ); + + expect(header.grant).toBe("none"); +}); + +it("ensureIife wraps ESM exports", () => { + const wrapped = ensureIife("const name = \"foo\";\nexport { name };\n"); + + expect(wrapped.startsWith("(function () {")).toBe(true); + expect(wrapped).toContain("const name = \"foo\""); + expect(wrapped).not.toContain("export { name }"); +}); + +it("ensureIife wraps side-effect ESM", () => { + const wrapped = ensureIife("document.body.dataset.x = \"1\";\n"); + + expect(wrapped.startsWith("(function () {")).toBe(true); + expect(wrapped).toContain("document.body.dataset.x"); +}); + +it("resolveBuildHeader adds GM_addStyle when CSS is inlined", () => { + const header = resolveBuildHeader( + { + name: "a", + version: "1.0.0", + match: "https://example.com", + grant: ["GM_setValue"], + }, + "console.log(1)", + true, + ); + + expect(header.grant).toContain("GM_addStyle"); + expect(header.grant).toContain("GM_setValue"); +}); diff --git a/test/helpers.test.ts b/test/helpers.test.ts deleted file mode 100644 index 3523d3d..0000000 --- a/test/helpers.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { expect, test } from 'vitest' - -import { defineGrants, removeDuplicates } from '../src/helpers.js' -import type { Grants } from '../src/types.js' - -test('defineGrants snapshot', () => { - const code = `(function(){"use strict";function e(){const t=document.createElement("button");return t.textContent="Button",t.addEventListener("click",()=>{GM_notification({text:"Hello"})}),t}document.querySelector("div").appendChild(e()),console.log(GM_info),GM_addStyle("button{border:none;background-color:tomato;padding:1rem;font-size:1rem;font-weight:600;border-radius:1rem}")})();` - const grants = defineGrants(code) - expect(grants).toMatchSnapshot() -}) - -test('removeDuplicates snapshot', () => { - const grants: Grants[] = [ - 'GM_addElement', - 'GM_addElement', - 'GM_addStyle', - 'GM_download', - 'GM_addStyle' - ] - - expect(removeDuplicates(grants)).toMatchSnapshot() -}) - -test('removeDuplicates insert string to array', () => { - const str = 'hello' - expect(removeDuplicates(str)).toEqual([str]) -}) diff --git a/test/names.test.ts b/test/names.test.ts new file mode 100644 index 0000000..3486343 --- /dev/null +++ b/test/names.test.ts @@ -0,0 +1,14 @@ +import { expect, it } from "vitest"; + +import { sanitizeFileName, toIdentifier } from "../src/names.js"; + +it("sanitizeFileName replaces unsafe path characters", () => { + expect(sanitizeFileName("My Script / v2")).toBe("My-Script-v2"); + expect(sanitizeFileName("<>:\"foo")).toBe("foo"); +}); + +it("toIdentifier produces a valid JS identifier", () => { + expect(toIdentifier("my-script")).toBe("my_script"); + expect(toIdentifier("123foo")).toBe("_123foo"); + expect(toIdentifier("ΠŸΡ€ΠΈΠ²Π΅Ρ‚")).toBe("userscript"); +}); diff --git a/test/resolve.test.ts b/test/resolve.test.ts new file mode 100644 index 0000000..0e8a949 --- /dev/null +++ b/test/resolve.test.ts @@ -0,0 +1,117 @@ +import { expect, it } from "vitest"; + +import { collectAutoMetaUrlsWarnings, resolvePluginConfig } from "../src/resolve.js"; + +it("resolvePluginConfig accepts entry sugar", () => { + const resolved = resolvePluginConfig({ + entry: "src/main.ts", + header: { + name: "Demo Script", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + expect(resolved.scripts).toHaveLength(1); + expect(resolved.scripts[0]?.fileName).toBe("Demo-Script"); + expect(resolved.scripts[0]?.iifeName).toBe("Demo_Script"); +}); + +it("resolvePluginConfig merges header defaults into scripts", () => { + const resolved = resolvePluginConfig({ + header: { author: "you", connect: "api.example.com" }, + scripts: [ + { + entry: "src/a.ts", + header: { + name: "A", + version: "1.0.0", + match: "https://a.com/*", + }, + }, + ], + }); + + expect(resolved.scripts[0]?.header.author).toBe("you"); + expect(resolved.scripts[0]?.header.connect).toEqual(["api.example.com"]); +}); + +it("resolvePluginConfig throws without entry or scripts", () => { + expect(() => resolvePluginConfig({})).toThrow(/entry/); +}); + +it("resolvePluginConfig throws when both entry and scripts are set", () => { + expect(() => resolvePluginConfig({ + entry: "src/a.ts", + header: { name: "A", version: "1", match: "*" }, + scripts: [ + { + entry: "src/b.ts", + header: { name: "B", version: "1", match: "*" }, + }, + ], + }), + ).toThrow(/either/); +}); + +it("collectAutoMetaUrlsWarnings when homepage is missing", () => { + const resolved = resolvePluginConfig({ + entry: "src/main.ts", + autoMetaUrls: true, + header: { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + expect(collectAutoMetaUrlsWarnings(resolved)).toEqual([ + "[vite-userscript-plugin] autoMetaUrls is enabled but \"Demo\" has no homepage or homepageURL", + ]); +}); + +it("collectAutoMetaUrlsWarnings skips scripts with homepageURL", () => { + const resolved = resolvePluginConfig({ + entry: "src/main.ts", + autoMetaUrls: true, + header: { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + homepageURL: "https://example.com/project", + }, + }); + + expect(collectAutoMetaUrlsWarnings(resolved)).toEqual([]); +}); + +it("collectAutoMetaUrlsWarnings is empty when autoMetaUrls is off", () => { + const resolved = resolvePluginConfig({ + entry: "src/main.ts", + header: { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + expect(collectAutoMetaUrlsWarnings(resolved)).toEqual([]); +}); + +it("resolvePluginConfig throws on duplicate fileName", () => { + expect(() => resolvePluginConfig({ + scripts: [ + { + entry: "src/a.ts", + fileName: "same", + header: { name: "A", version: "1", match: "*" }, + }, + { + entry: "src/b.ts", + fileName: "same", + header: { name: "B", version: "1", match: "*" }, + }, + ], + }), + ).toThrow(/Duplicate fileName/); +}); diff --git a/test/serve.test.ts b/test/serve.test.ts new file mode 100644 index 0000000..5372a02 --- /dev/null +++ b/test/serve.test.ts @@ -0,0 +1,179 @@ +import { expect, it } from "vitest"; + +import { GM_NAMESPACE, REACT_BOOTSTRAP_PATH, REACT_PREAMBLE_PATH, VITE_CLIENT_FLAG } from "../src/constants.js"; +import { resolvePluginConfig } from "../src/resolve.js"; +import { + applyServeHeader, + createAfterLocalLogger, + createDevUserscript, + createReactBootstrapModule, + createReactPreambleModule, + DEV_SCRIPT_HEADERS, + formatInstallLine, + generateDevWrapper, + hasReactRefreshPlugin, + isViteLocalUrlLine, + matchDevUserscript, + matchReactBootstrap, + matchReactPreamble, + resolveBootstrapEntry, + stripAnsi, + toInstallUrl, + toServeEntryPath, +} from "../src/serve.js"; + +it("matchDevUserscript matches install path", () => { + expect(matchDevUserscript("/foo.dev.user.js", "foo")).toBe(true); + expect(matchDevUserscript("/foo.dev.user.js?t=1", "foo")).toBe(true); + expect(matchDevUserscript("/foo.user.js", "foo")).toBe(false); +}); + +it("toServeEntryPath is a root-relative URL", () => { + expect(toServeEntryPath("/proj", "/proj/src/main.ts")).toBe("/src/main.ts"); +}); + +it("applyServeHeader prefixes the name and fills grants", () => { + const header = applyServeHeader( + { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + }, + "server:", + ); + + expect(header.name).toBe("server:Demo"); + expect(header.grant).toContain("GM_addStyle"); +}); + +it("applyServeHeader keeps grant none", () => { + const header = applyServeHeader( + { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + grant: "none", + }, + "server:", + ); + + expect(header.grant).toBe("none"); +}); + +it("generateDevWrapper injects vite client once and the entry", () => { + const wrapper = generateDevWrapper({ + origin: "http://localhost:5173", + entryPath: "/src/main.ts", + }); + + expect(wrapper).toContain(GM_NAMESPACE); + expect(wrapper).toContain(VITE_CLIENT_FLAG); + expect(wrapper).toContain("http://localhost:5173/@vite/client"); + expect(wrapper).toContain("http://localhost:5173/src/main.ts"); + expect(wrapper).not.toContain(REACT_BOOTSTRAP_PATH); +}); + +it("generateDevWrapper boots React through the preamble module", () => { + const wrapper = generateDevWrapper({ + origin: "http://localhost:5173", + entryPath: "/src/index.tsx", + reactPreamble: true, + }); + + expect(wrapper).toContain(`${REACT_BOOTSTRAP_PATH}?entry=${encodeURIComponent("/src/index.tsx")}`); + expect(wrapper).not.toContain("http://localhost:5173/@vite/client"); + expect(createReactBootstrapModule("/src/index.tsx")).toContain(REACT_PREAMBLE_PATH); + expect(createReactBootstrapModule("/src/index.tsx")).toContain("/src/index.tsx"); + expect(createReactPreambleModule()).toContain("/@react-refresh"); + expect(createReactPreambleModule()).toContain("__vite_plugin_react_preamble_installed__"); +}); + +it("react preamble helpers match plugin-react and reject unsafe entries", () => { + expect(hasReactRefreshPlugin([{ name: "vite:react-refresh" }])).toBe(true); + expect(hasReactRefreshPlugin([{ name: "vite:react-virtual-preamble" }])).toBe(true); + expect(hasReactRefreshPlugin([{ name: "vite:vue" }])).toBe(false); + expect(matchReactPreamble(`${REACT_PREAMBLE_PATH}?t=1`)).toBe(true); + expect(matchReactBootstrap(`${REACT_BOOTSTRAP_PATH}?entry=/src/index.tsx`)).toBe(true); + expect(resolveBootstrapEntry(`${REACT_BOOTSTRAP_PATH}?entry=/src/index.tsx`)).toBe("/src/index.tsx"); + expect(resolveBootstrapEntry(`${REACT_BOOTSTRAP_PATH}?entry=https://evil.test`)).toBeUndefined(); + expect(resolveBootstrapEntry(`${REACT_BOOTSTRAP_PATH}?entry=//evil.test`)).toBeUndefined(); +}); + +it("createDevUserscript writes a banner and wrapper", () => { + const config = resolvePluginConfig({ + entry: "src/main.ts", + header: { + name: "Demo", + version: "1.0.0", + match: "https://example.com/*", + }, + }); + + const userscript = createDevUserscript(config, { + origin: "http://localhost:5173", + root: "/proj", + script: { + ...config.scripts[0]!, + entry: "/proj/src/main.ts", + }, + }); + + expect(userscript).toContain("==UserScript=="); + expect(userscript).toContain("@name"); + expect(userscript).toContain("server:Demo"); + expect(userscript).toContain("/@vite/client"); +}); + +it("dev userscript response headers disable caching", () => { + expect(DEV_SCRIPT_HEADERS["Content-Type"]).toContain("text/javascript"); + expect(DEV_SCRIPT_HEADERS["Cache-Control"]).toBe("no-store"); +}); + +it("toInstallUrl joins origin without a trailing slash", () => { + expect(toInstallUrl("http://localhost:5173/", "demo")).toBe( + "http://localhost:5173/demo.dev.user.js", + ); + expect(toInstallUrl("http://localhost:5173", "demo")).toBe( + "http://localhost:5173/demo.dev.user.js", + ); +}); + +it("formatInstallLine prints an OpenAPI-style install line", () => { + const line = formatInstallLine("http://localhost:5173/demo.dev.user.js"); + const plain = stripAnsi(line); + + expect(plain).toContain("Userscript"); + expect(plain).toContain("http://localhost:5173/demo.dev.user.js"); + expect(plain).toMatch(/^\s+➜\s+Userscript:/); +}); + +it("isViteLocalUrlLine matches Vite Local lines with ANSI", () => { + expect(isViteLocalUrlLine(" ➜ Local: http://localhost:5173/")).toBe(true); + expect( + isViteLocalUrlLine("\u001B[32m➜\u001B[39m \u001B[1mLocal\u001B[22m: http://localhost:5173/"), + ).toBe(true); + expect(isViteLocalUrlLine(" ➜ Network: use --host to expose")).toBe(false); +}); + +it("createAfterLocalLogger inserts after the last Local line", () => { + const lines: string[] = []; + const logger = createAfterLocalLogger( + (msg) => { + lines.push(String(msg)); + }, + 1, + () => { + lines.push("INSTALL"); + }, + ); + + logger.info(" ➜ Local: http://localhost:5173/"); + logger.info(" ➜ Network: use --host to expose"); + logger.flush(); + + expect(lines).toEqual([ + " ➜ Local: http://localhost:5173/", + "INSTALL", + " ➜ Network: use --host to expose", + ]); +}); diff --git a/test/sourcemap.test.ts b/test/sourcemap.test.ts new file mode 100644 index 0000000..a7f56a0 --- /dev/null +++ b/test/sourcemap.test.ts @@ -0,0 +1,26 @@ +import { expect, it } from "vitest"; + +import { countBannerLines, offsetSourceMap } from "../src/sourcemap.js"; + +it("countBannerLines counts prepended banner lines", () => { + const prefix = "// ==UserScript==\n// @name x\n// ==/UserScript==\n\n"; + + expect(countBannerLines(prefix)).toBe(4); +}); + +it("offsetSourceMap prepends empty generated lines", () => { + const map = offsetSourceMap( + { + version: 3, + file: "app.js", + mappings: "AAAA", + sources: ["app.ts"], + names: [], + }, + 4, + "app.user.js", + ); + + expect(map.file).toBe("app.user.js"); + expect(map.mappings).toBe(";;;;AAAA"); +}); diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..63c1401 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2023", + "lib": ["ES2023", "DOM", "DOM.Iterable"], + "moduleDetection": "force", + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "strict": true, + "strictPropertyInitialization": false, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noUncheckedIndexedAccess": true, + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "skipLibCheck": true + } +} diff --git a/tsconfig.json b/tsconfig.json index 6cd618d..b5b7769 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,9 @@ { - "extends": "@crashmax/tsconfig", - "compilerOptions": { - "outDir": "dist", - "emitDeclarationOnly": true, - "verbatimModuleSyntax": true - }, + "extends": "./tsconfig.base.json", "include": [ "src", - "types" + "test/**/*.test.ts", + "vitest.config.ts", + "tsdown.config.ts" ] } diff --git a/tsdown.config.ts b/tsdown.config.ts new file mode 100644 index 0000000..a8232e1 --- /dev/null +++ b/tsdown.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: "src/index.ts", + format: "esm", + target: "node22", + dts: true, + fixedExtension: false, + deps: { + neverBundle: ["vite"], + }, +}); diff --git a/tsup.config.ts b/tsup.config.ts deleted file mode 100644 index a058afe..0000000 --- a/tsup.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { defineConfig } from 'tsup' - -export default defineConfig((option) => { - return [ - { - entry: ['src/index.ts'], - format: 'esm', - external: ['vite'], - target: 'node20', - dts: true, - clean: true, - watch: option.watch - }, - { - entry: ['src/ws.ts'], - format: 'esm', - target: 'esnext', - platform: 'browser', - clean: true, - watch: option.watch - } - ] -}) diff --git a/turbo.json b/turbo.json index e5078fd..22af349 100644 --- a/turbo.json +++ b/turbo.json @@ -24,6 +24,9 @@ "outputs": [ "dist/**" ] + }, + "type-check": { + "outputs": [] } } } diff --git a/types/README.md b/types/README.md index 34b5856..0a7608c 100644 --- a/types/README.md +++ b/types/README.md @@ -4,18 +4,32 @@ [![greasemonkey](https://img.shields.io/npm/v/@types/greasemonkey?label=%40types%2Fgreasemonkey)](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/greasemonkey) [![violentmonkey](https://img.shields.io/npm/v/@violentmonkey/types?label=%40violentmonkey%2Ftypes)](https://github.com/violentmonkey/types) -> Type declaration for `GM_*`, `GM.*` APIs in Tampermonkey, Greasemonkey and Violentmonkey. +Vendored `GM_*` / `GM.*` declarations for Tampermonkey, Greasemonkey and Violentmonkey. Pick one manager β€” do not mix them in the same project. -## Installation +Synced versions are recorded in [sources.json](./sources.json). -```sh -npm install --save @types/tampermonkey +## Usage + +```json +{ + "compilerOptions": { + "types": [ + "vite-userscript-plugin/types/tampermonkey" + ] + } +} ``` -```sh -npm install --save @types/greasemonkey +```ts +/// ``` +Replace `tampermonkey` with `greasemonkey` or `violentmonkey` as needed. + +## Sync + ```sh -npm install --save @violentmonkey/types +pnpm sync-types ``` + +Copies the latest official `index.d.ts` from npm into this folder. Violentmonkey package-refs (`chrome-types`, `@types/firefox-webext-browser`, …) are rewritten to the local [violentmonkey-ambient.d.ts](./violentmonkey-ambient.d.ts) stub so consumers do not need those packages. diff --git a/types/greasemonkey.d.ts b/types/greasemonkey.d.ts index 1cada07..6c20c27 100644 --- a/types/greasemonkey.d.ts +++ b/types/greasemonkey.d.ts @@ -1,308 +1,305 @@ +// synced from @types/greasemonkey@4.0.7 +// do not edit; run pnpm sync-types + // This definition is based on the API reference of Greasemonkey // https://wiki.greasespot.net/Greasemonkey_Manual:API // TypeScript Version: 3.2 declare namespace GM { - interface ScriptInfo { - /** Possibly empty string. */ - description: string - excludes: string[] - includes: string[] - matches: string[] - name: string - /** Possibly empty string. */ - namespace: string - /** - * An object keyed by resource name. - * Each value is an object with keys `name` and `mimetype` and `url` - * with string values. - */ - resources: { - [resourceName: string]: { - name: string - mimetype: string - url: string - } + interface ScriptInfo { + /** Possibly empty string. */ + description: string; + excludes: string[]; + includes: string[]; + matches: string[]; + name: string; + /** Possibly empty string. */ + namespace: string; + /** + * An object keyed by resource name. + * Each value is an object with keys `name` and `mimetype` and `url` + * with string values. + */ + resources: { + [resourceName: string]: { + name: string; + mimetype: string; + url: string; + }; + }; + /** @default 'end' */ + runAt: "start" | "end" | "idle"; + uuid: string; + /** Possibly empty string. */ + version: string; } - /** @default 'end' */ - runAt: 'start' | 'end' | 'idle' - uuid: string - /** Possibly empty string. */ - version: string - } - type Value = string | boolean | number + type Value = string | boolean | number; - interface Response { - readonly responseHeaders: string - readonly finalUrl: string - /** The same object passed into the original request */ - readonly context?: TContext | undefined + interface Response { + readonly responseHeaders: string; + readonly finalUrl: string; + /** The same object passed into the original request */ + readonly context?: TContext | undefined; - readonly readyState: 1 | 2 | 3 | 4 - readonly response: any - readonly responseText: string - readonly responseXML: Document | false - readonly status: number - readonly statusText: string - } + readonly readyState: 1 | 2 | 3 | 4; + readonly response: any; + readonly responseText: string; + readonly responseXML: Document | false; + readonly status: number; + readonly statusText: string; + } - interface ProgressResponse extends Response { - lengthComputable: boolean - loaded: number - total: number - } + interface ProgressResponse extends Response { + lengthComputable: boolean; + loaded: number; + total: number; + } - interface Request { - // Fields + interface Request { + // Fields - /** - * The URL to make the request to. Must be an absolute URL, beginning - * with the scheme. May be relative to the current page. - */ - url: string - /** String type of HTTP request to make (E.G. "GET", "POST") */ - method: - | 'GET' - | 'POST' - | 'PUT' - | 'DELETE' - | 'PATCH' - | 'HEAD' - | 'TRACE' - | 'OPTIONS' - | 'CONNECT' - /** - * When true, the data is sent as a Blob - * @default false - */ - binary?: boolean | undefined - /** - * Any object (Compatibility: 1.10+). This object will also be the - * context property of the Response Object. - */ - context?: TContext | undefined - /** - * Data to send in the request body. Usually for POST method requests. - * If the data field contains form-encoded data, you usually must also - * set the header `'Content-Type': 'application/x-www-form-urlencoded'` - * in the `headers` field. - */ - data?: string | undefined - /** A set of headers to include in the request */ - headers?: - | { - [header: string]: string - } - | undefined - /** - * A MIME type to specify with the request (e.g. - * "text/html; charset=ISO-8859-1") - */ - overrideMimeType?: string | undefined - /** User name to use for authentication purposes. */ - user?: string | undefined - /** Password to use for authentication purposes */ - password?: string | undefined - /** Decode the response as specified type. Default value is "text" */ - responseType?: XMLHttpRequestResponseType | undefined - /** - * When `true`, this is a synchronous request. - * Be careful: The entire Firefox UI will be locked and frozen until the - * request completes.In this mode, more data will be available in the - * return value. - */ - synchronous?: boolean | undefined - /** - * The number of milliseconds to wait before terminating the call. Zero - * (the default) means wait forever. - */ - timeout?: number | undefined - /** - * Object containing optional function callbacks to monitor the upload - * of data. - */ - upload?: - | { - onabort?(response: Response): void - onerror?(response: Response): void - onload?(response: Response): void - onprogress?(response: ProgressResponse): void - } - | undefined + /** + * The URL to make the request to. Must be an absolute URL, beginning + * with the scheme. May be relative to the current page. + */ + url: string; + /** String type of HTTP request to make (E.G. "GET", "POST") */ + method: + | "GET" + | "POST" + | "PUT" + | "DELETE" + | "PATCH" + | "HEAD" + | "TRACE" + | "OPTIONS" + | "CONNECT"; + /** + * When true, the data is sent as a Blob + * @default false + */ + binary?: boolean | undefined; + /** + * Any object (Compatibility: 1.10+). This object will also be the + * context property of the Response Object. + */ + context?: TContext | undefined; + /** + * Data to send in the request body. Usually for POST method requests. + * If the data field contains form-encoded data, you usually must also + * set the header `'Content-Type': 'application/x-www-form-urlencoded'` + * in the `headers` field. + */ + data?: string | undefined; + /** A set of headers to include in the request */ + headers?: { + [header: string]: string; + } | undefined; + /** + * A MIME type to specify with the request (e.g. + * "text/html; charset=ISO-8859-1") + */ + overrideMimeType?: string | undefined; + /** User name to use for authentication purposes. */ + user?: string | undefined; + /** Password to use for authentication purposes */ + password?: string | undefined; + /** Decode the response as specified type. Default value is "text" */ + responseType?: XMLHttpRequestResponseType | undefined; + /** + * When `true`, this is a synchronous request. + * Be careful: The entire Firefox UI will be locked and frozen until the + * request completes.In this mode, more data will be available in the + * return value. + */ + synchronous?: boolean | undefined; + /** + * The number of milliseconds to wait before terminating the call. Zero + * (the default) means wait forever. + */ + timeout?: number | undefined; + /** + * Object containing optional function callbacks to monitor the upload + * of data. + */ + upload?: { + onabort?(response: Response): void; + onerror?(response: Response): void; + onload?(response: Response): void; + onprogress?(response: ProgressResponse): void; + } | undefined; - // Event handlers + // Event handlers - /** Will be called when the request is aborted */ - onabort?(response: Response): void - /** Will be called if an error occurs while processing the request */ - onerror?(response: Response): void - /** Will be called when the request has completed successfully */ - onload?(response: Response): void - /** Will be called when the request progress changes */ - onprogress?(response: ProgressResponse): void - /** Will be called repeatedly while the request is in progress */ - onreadystatechange?(response: Response): void - /** Will be called if/when the request times out */ - ontimeout?(response: Response): void - } + /** Will be called when the request is aborted */ + onabort?(response: Response): void; + /** Will be called if an error occurs while processing the request */ + onerror?(response: Response): void; + /** Will be called when the request has completed successfully */ + onload?(response: Response): void; + /** Will be called when the request progress changes */ + onprogress?(response: ProgressResponse): void; + /** Will be called repeatedly while the request is in progress */ + onreadystatechange?(response: Response): void; + /** Will be called if/when the request times out */ + ontimeout?(response: Response): void; + } } /** * Window object of the content page where the user script is running on. * @see {@link http://wiki.greasespot.net/UnsafeWindow} */ -declare var unsafeWindow: Window +declare var unsafeWindow: Window; declare var GM: { - // Headers + // Headers - /** - * Meta data about the running user script. - * @see {@link https://wiki.greasespot.net/GM.info} - */ - info: { - /** An object containing data about the currently running script */ - script: GM.ScriptInfo /** - * A string, the entire literal Metadata Block (without the delimiters) - * for the currently running script + * Meta data about the running user script. + * @see {@link https://wiki.greasespot.net/GM.info} */ - scriptMetaStr: string - /** - * The name of the user script engine handling this script's execution. - * The string `Greasemonkey` - */ - scriptHandler: string - /** The version of Greasemonkey, a string e.g. `4.0` */ - version: string - } + info: { + /** An object containing data about the currently running script */ + script: GM.ScriptInfo; + /** + * A string, the entire literal Metadata Block (without the delimiters) + * for the currently running script + */ + scriptMetaStr: string; + /** + * The name of the user script engine handling this script's execution. + * The string `Greasemonkey` + */ + scriptHandler: string; + /** The version of Greasemonkey, a string e.g. `4.0` */ + version: string; + }; - // Values + // Values - /** - * Allows user script authors to persist simple values across page loads and - * across origins. - * Strings, booleans, and integers are currently the only allowed data types. - * @see {@link https://wiki.greasespot.net/GM.setValue} - * @param name The unique (within this script) name for this value. - * Should be restricted to valid Javascript identifier characters. - * @param value Any valid value of these types. Any other type may cause - * undefined behavior, including crashes - * @returns A Promise, resolved successfully with no value on success, - * rejected with no value on failure - */ - setValue(name: string, value: GM.Value): Promise + /** + * Allows user script authors to persist simple values across page loads and + * across origins. + * Strings, booleans, and integers are currently the only allowed data types. + * @see {@link https://wiki.greasespot.net/GM.setValue} + * @param name The unique (within this script) name for this value. + * Should be restricted to valid Javascript identifier characters. + * @param value Any valid value of these types. Any other type may cause + * undefined behavior, including crashes + * @returns A Promise, resolved successfully with no value on success, + * rejected with no value on failure + */ + setValue(name: string, value: GM.Value): Promise; - /** - * Retrieves a value that was set with `GM.setValue` - * @see {@link https://wiki.greasespot.net/GM.getValue} - * @param name The property name to get - * @param defaultValue The default value to be returned when none has - * previously been set - * @returns A Promise, rejected in case of error and otherwise resolved with: - * - When this name has been set - `string`, `integer` or `boolean` as - * previously set - * - When this name has not been set, and default is provided - The value - * passed as default - * - When this name has not been set, and default is not provided - - * `undefined` - * @example - * // Retrieving the value associated with the name 'timezoneOffset' with a default value defined: - * const timezoneOffset = await GM.getValue("timezoneOffset", -5) - * @example - * // For structured data used `JSON.stringify()` to place an object into storage and then `JSON.parse()` to convert it back - * const storedObject = JSON.parse(await GM.getValue('foo', '{}')); - */ - getValue(name: string): Promise - getValue( - name: string, - defaultValue: TValue - ): Promise + /** + * Retrieves a value that was set with `GM.setValue` + * @see {@link https://wiki.greasespot.net/GM.getValue} + * @param name The property name to get + * @param defaultValue The default value to be returned when none has + * previously been set + * @returns A Promise, rejected in case of error and otherwise resolved with: + * - When this name has been set - `string`, `integer` or `boolean` as + * previously set + * - When this name has not been set, and default is provided - The value + * passed as default + * - When this name has not been set, and default is not provided - + * `undefined` + * @example + * // Retrieving the value associated with the name 'timezoneOffset' with a default value defined: + * const timezoneOffset = await GM.getValue("timezoneOffset", -5) + * @example + * // For structured data used `JSON.stringify()` to place an object into storage and then `JSON.parse()` to convert it back + * const storedObject = JSON.parse(await GM.getValue('foo', '{}')); + */ + getValue( + name: string, + ): Promise; + getValue( + name: string, + defaultValue: TValue, + ): Promise; - /** - * Deletes an existing name / value pair from storage. - * @see {@link https://wiki.greasespot.net/GM.deleteValue} - * @param name Property name to delete - * @returns A Promise, resolved successfully with no value on success, - * rejected with no value on failure. - */ - deleteValue(name: string): Promise + /** + * Deletes an existing name / value pair from storage. + * @see {@link https://wiki.greasespot.net/GM.deleteValue} + * @param name Property name to delete + * @returns A Promise, resolved successfully with no value on success, + * rejected with no value on failure. + */ + deleteValue(name: string): Promise; - /** - * Retrieves an array of preference names that this script has stored - * @see {@link https://wiki.greasespot.net/GM.listValues} - * @returns A Promise, rejected in case of error and otherwise resolved with - * an string[] for previously set values - */ - listValues(): Promise + /** + * Retrieves an array of preference names that this script has stored + * @see {@link https://wiki.greasespot.net/GM.listValues} + * @returns A Promise, rejected in case of error and otherwise resolved with + * an string[] for previously set values + */ + listValues(): Promise; - // Resources + // Resources - /** - * Given a defined `@resource`, this method returns it as a URL - * @see {@link https://wiki.greasespot.net/GM.getResourceUrl} - * @param resourceName The name provided when the `@resource` was defined - * @returns A Promise, rejected on failure and resolved with a string URL on - * success. - * Treat the result as opaque string. It will work where you need a URL - * (for a `` or `