diff --git a/.browserslistrc b/.browserslistrc
deleted file mode 100644
index 214388f..0000000
--- a/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index c24743d..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,7 +0,0 @@
-[*.{js,jsx,ts,tsx,vue}]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-max_line_length = 100
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..de4d1f0
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..6c64e78
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,39 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true,
+ "node": true
+ },
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:import/recommended",
+ "plugin:vue/vue3-recommended",
+ "plugin:prettier/recommended"
+ ],
+ "parser": "vue-eslint-parser",
+ "parserOptions": {
+ "parser": "@typescript-eslint/parser"
+ },
+ "plugins": ["@typescript-eslint", "import"],
+ "settings": {
+ "import/resolver": {
+ "typescript": {
+ "project": "./tsconfig.json"
+ }
+ }
+ },
+ "rules": {
+ "linebreak-style": 0,
+ "prettier/prettier": [
+ "error",
+ {
+ "endOfLine": "auto"
+ }
+ ]
+ },
+ "globals": {
+ "chrome": "readonly"
+ },
+ "ignorePatterns": ["watch.js", "dist/**"]
+}
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 79efcbe..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,20 +0,0 @@
-module.exports = {
- root: true,
- env: {
- node: true,
- webextensions: true,
- },
- extends: [
- 'plugin:vue/essential',
- '@vue/airbnb',
- ],
- parserOptions: {
- parser: '@babel/eslint-parser',
- },
- rules: {
- 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
- 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
- 'max-len': 0,
- 'consistent-return': 0,
- },
-};
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..a9e3402
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,31 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: bug
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. Mac, Window, Linux]
+ - Browser [e.g. chrome, firefox]
+ - Node Version [e.g. 18.12.0]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..97b760b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,19 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: enhancement
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..3a3cce5
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,11 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+ - package-ecosystem: "npm" # See documentation for possible values
+ directory: "/" # Location of package manifests
+ schedule:
+ interval: "weekly"
diff --git a/.github/stale.yml b/.github/stale.yml
new file mode 100644
index 0000000..3c25536
--- /dev/null
+++ b/.github/stale.yml
@@ -0,0 +1,21 @@
+# Number of days of inactivity before an Issue or Pull Request becomes stale
+daysUntilStale: 90
+# Number of days of inactivity before a stale Issue or Pull Request is closed
+daysUntilClose: 30
+# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
+exemptLabels:
+ - pinned
+ - security
+# Label to use when marking as stale
+staleLabel: stale
+# Comment to post when marking as stale. Set to `false` to disable
+markComment: >
+ This issue has been automatically marked as stale because it has not had
+ recent activity. It will be closed if no further activity occurs. Thank you
+ for your contributions.
+# Comment to post when removing the stale label. Set to `false` to disable
+unmarkComment: false
+# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable
+closeComment: true
+# Limit to only `issues` or `pulls`
+only: issues
diff --git a/.gitignore b/.gitignore
index bdd5d65..347eda7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,30 +1,19 @@
-.DS_Store
-node_modules
-/dist
-/web
+# dependencies
+/node_modules
+# testing
+/coverage
-# local env files
-.env.local
-.env.*.local
-
-# Log files
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
+# build
+/dist
+/dist-zip
-# Editor directories and files
+# etc
+.DS_Store
+.env.local
.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-# Vue Browser Extension Output
-*.pem
-*.pub
-*.zip
-/artifacts
+# compiled
+utils/reload/*.js
+utils/reload/injections/*.js
+public/manifest.json
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100644
index 0000000..9ef2ef0
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+pnpm run commitlint ${1}
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 0000000..f1e5685
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+pnpm dlx lint-staged
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..7a8a624
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+public-hoist-pattern[]=@testing-library/dom
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..3e558c9
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18.12.0
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..822a463
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,11 @@
+dist
+node_modules
+.gitignore
+.github
+.eslintignore
+.husky
+.nvmrc
+.prettierignore
+LICENSE
+*.md
+pnpm-lock.yaml
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..4e38528
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,7 @@
+{
+ "tabWidth": 2,
+ "trailingComma": "all",
+ "semi": true,
+ "singleQuote": true,
+ "printWidth": 80
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..0d3e49c
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Ahmad Kholid
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 70a333b..2be0bfb 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,10 @@
+
# Inspect CSS
The easiest way to inspect and edit CSS
-
+
## Features
- 🔎 Get CSS Properties from any element by selecting it
@@ -11,6 +12,8 @@ The easiest way to inspect and edit CSS
- 📷 Download website assets
- ⌨️ Add your custom CSS to the website
- 🎨 Get the color palette of the website
+- 🧭 DOM Navigation
+- 🎯 Color picker (Chromium only)
## Installation
- `yarn install` to install all dependencies
diff --git a/babel.config.js b/babel.config.js
deleted file mode 100644
index 757ff9b..0000000
--- a/babel.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset',
- ],
-};
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000..3f5e287
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1 @@
+export default { extends: ['@commitlint/config-conventional'] };
diff --git a/docs/image.png b/docs/image.png
new file mode 100644
index 0000000..d9d13a6
Binary files /dev/null and b/docs/image.png differ
diff --git a/manifest.js b/manifest.js
new file mode 100644
index 0000000..78bdb73
--- /dev/null
+++ b/manifest.js
@@ -0,0 +1,46 @@
+import fs from 'node:fs';
+const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
+
+/**
+ * After changing, please reload the extension at `chrome://extensions`
+ * @type {chrome.runtime.ManifestV3}
+ */
+const manifest = {
+ manifest_version: 3,
+ default_locale: 'en',
+ /**
+ * if you want to support multiple languages, you can use the following reference
+ * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization
+ */
+ name: '__MSG_extensionName__',
+ version: packageJson.version,
+ description: '__MSG_extensionDescription__',
+ permissions: ['activeTab', 'scripting', 'storage'],
+ action: {},
+ background: {
+ service_worker: 'src/pages/background/index.js',
+ type: 'module',
+ },
+ icons: {
+ 128: 'icon-128.png',
+ },
+ web_accessible_resources: [
+ {
+ resources: [
+ 'assets/js/*.js',
+ 'assets/woff2/*.woff2',
+ 'assets/css/*.css',
+ 'icon-128.png',
+ 'icon-34.png',
+ ],
+ matches: ['*://*/*'],
+ },
+ ],
+};
+
+if (process.env.__DEV__) {
+ manifest.permissions.push('tabs');
+ // manifest.host_permissions = ['http://*/*'];
+}
+
+export default manifest;
diff --git a/package.json b/package.json
index dfd6077..24a5aff 100644
--- a/package.json
+++ b/package.json
@@ -1,39 +1,101 @@
{
- "name": "inspectcss",
- "version": "0.3.1",
- "private": false,
+ "name": "inspect-css",
+ "version": "1.0.4",
+ "license": "MIT",
"scripts": {
- "serve": "vue-cli-service build --mode development --watch",
- "build": "vue-cli-service build",
- "lint": "vue-cli-service lint"
+ "build": "vue-tsc --noEmit && vite build",
+ "build:firefox": "vue-tsc --noEmit && cross-env __FIREFOX__=true vite build",
+ "build:watch": "cross-env __DEV__=true vite build -w --mode development",
+ "build:firefox:watch": "cross-env __DEV__=true __FIREFOX__=true vite build -w --mode development",
+ "build:hmr": "rollup --config utils/reload/rollup.config.mjs",
+ "wss": "node utils/reload/initReloadServer.js",
+ "dev": "pnpm build:hmr && (run-p wss build:watch)",
+ "dev:firefox": "pnpm build:hmr && (run-p wss build:firefox:watch)",
+ "test": "vitest",
+ "commitlint": "commitlint --edit",
+ "lint": "eslint src --ext .ts,.js,.tsx,.jsx",
+ "lint:fix": "pnpm lint --fix",
+ "prettier": "prettier . --write",
+ "prepare": "husky install",
+ "build:zip": "node ./utils/scripts/build-zip.js",
+ "build:prod": "pnpm build:prod-chrome && pnpm build:prod-firefox",
+ "build:prod-chrome": "pnpm build && pnpm build:zip",
+ "build:prod-firefox": "pnpm build:firefox && cross-env __FIREFOX__=true pnpm build:zip"
},
+ "type": "module",
"dependencies": {
- "@popperjs/core": "^2.9.2",
- "colorthief": "^2.3.2",
- "core-js": "^3.6.5",
+ "@codemirror/autocomplete": "^6.12.0",
+ "@codemirror/commands": "^6.3.3",
+ "@codemirror/lang-css": "^6.2.1",
+ "@codemirror/lang-html": "^6.4.8",
+ "@codemirror/language": "^6.10.0",
+ "@codemirror/state": "^6.4.0",
+ "@codemirror/view": "^6.23.0",
+ "@floating-ui/vue": "^1.0.3",
+ "@medv/finder": "^3.1.0",
+ "@uiw/codemirror-extensions-color": "^4.21.21",
+ "@uiw/codemirror-themes": "^4.21.21",
+ "@vueuse/core": "^10.7.2",
+ "@vueuse/motion": "^2.2.3",
+ "class-variance-authority": "^0.7.0",
+ "color2k": "^2.0.3",
+ "colorthief": "^2.4.0",
+ "css-tree": "^2.3.1",
"file-saver": "^2.0.5",
- "jszip": "^3.7.0",
- "prismjs": "^1.25.0",
- "vue": "^3.0.11",
- "vue-prism-editor": "^2.0.0-alpha.2"
+ "jszip": "^3.10.1",
+ "lucide-vue-next": "^0.321.0",
+ "mitt": "^3.0.1",
+ "radix-vue": "^1.3.2",
+ "specificity": "^1.0.0",
+ "type-fest": "^4.10.2",
+ "vue": "^3.5.0",
+ "webextension-polyfill": "0.10.0"
},
"devDependencies": {
- "@babel/core": "^7.12.16",
- "@babel/eslint-parser": "^7.12.16",
- "@vue/cli-plugin-babel": "^4.5.13",
- "@vue/cli-plugin-eslint": "^4.5.13",
- "@vue/cli-service": "^4.5.13",
- "@vue/compiler-sfc": "^3.0.11",
- "@vue/eslint-config-airbnb": "^5.3.0",
- "autoprefixer": "9",
- "eslint": "^7.20.0",
- "eslint-plugin-import": "^2.20.2",
- "eslint-plugin-vue": "^7.6.0",
- "lint-staged": "^9.5.0",
- "postcss": "7",
- "postcss-import": "12",
- "tailwindcss": "npm:@tailwindcss/postcss7-compat",
- "to-string-loader": "^1.1.6",
- "vue-cli-plugin-browser-extension": "latest"
+ "@commitlint/cli": "18.4.4",
+ "@commitlint/config-conventional": "18.6.0",
+ "@rollup/plugin-typescript": "11.1.6",
+ "@rushstack/eslint-patch": "^1.6.1",
+ "@types/chrome": "0.0.251",
+ "@types/css-tree": "^2.3.5",
+ "@types/node": "20.8.10",
+ "@types/webextension-polyfill": "^0.10.7",
+ "@types/ws": "8.5.8",
+ "@typescript-eslint/eslint-plugin": "6.19.1",
+ "@typescript-eslint/parser": "6.20.0",
+ "@vitejs/plugin-vue": "^5.0.3",
+ "@vue/eslint-config-airbnb": "^8.0.0",
+ "archiver": "^6.0.1",
+ "autoprefixer": "^10.4.16",
+ "chokidar": "3.5.3",
+ "cross-env": "7.0.3",
+ "eslint": "8.56.0",
+ "eslint-config-prettier": "9.0.0",
+ "eslint-import-resolver-typescript": "^3.6.1",
+ "eslint-plugin-import": "2.29.0",
+ "eslint-plugin-prettier": "5.0.1",
+ "eslint-plugin-vue": "^9.20.0",
+ "fs-extra": "11.1.1",
+ "husky": "8.0.3",
+ "jsdom": "^24.0.0",
+ "lint-staged": "15.2.0",
+ "npm-run-all": "4.1.5",
+ "postcss": "^8.4.33",
+ "prettier": "3.1.0",
+ "rollup": "4.3.0",
+ "tailwindcss": "^3.4.1",
+ "ts-loader": "9.5.0",
+ "tslib": "2.6.2",
+ "typescript": "^5.3.3",
+ "vite": "5.4.3",
+ "vue-eslint-parser": "^9.4.0",
+ "vue-tsc": "^2.1.4",
+ "ws": "8.14.2"
+ },
+ "lint-staged": {
+ "*.{js,jsx,ts,tsx}": [
+ "prettier --write",
+ "eslint --fix"
+ ]
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..4beb98b
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,8470 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@codemirror/autocomplete':
+ specifier: ^6.12.0
+ version: 6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1)
+ '@codemirror/commands':
+ specifier: ^6.3.3
+ version: 6.6.1
+ '@codemirror/lang-css':
+ specifier: ^6.2.1
+ version: 6.2.1(@codemirror/view@6.33.0)
+ '@codemirror/lang-html':
+ specifier: ^6.4.8
+ version: 6.4.9
+ '@codemirror/language':
+ specifier: ^6.10.0
+ version: 6.10.2
+ '@codemirror/state':
+ specifier: ^6.4.0
+ version: 6.4.1
+ '@codemirror/view':
+ specifier: ^6.23.0
+ version: 6.33.0
+ '@floating-ui/vue':
+ specifier: ^1.0.3
+ version: 1.1.4(vue@3.5.0(typescript@5.5.4))
+ '@medv/finder':
+ specifier: ^3.1.0
+ version: 3.2.0
+ '@uiw/codemirror-extensions-color':
+ specifier: ^4.21.21
+ version: 4.23.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)
+ '@uiw/codemirror-themes':
+ specifier: ^4.21.21
+ version: 4.23.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)
+ '@vueuse/core':
+ specifier: ^10.7.2
+ version: 10.11.1(vue@3.5.0(typescript@5.5.4))
+ '@vueuse/motion':
+ specifier: ^2.2.3
+ version: 2.2.3(rollup@4.3.0)(vue@3.5.0(typescript@5.5.4))
+ class-variance-authority:
+ specifier: ^0.7.0
+ version: 0.7.0
+ color2k:
+ specifier: ^2.0.3
+ version: 2.0.3
+ colorthief:
+ specifier: ^2.4.0
+ version: 2.4.0
+ css-tree:
+ specifier: ^2.3.1
+ version: 2.3.1
+ file-saver:
+ specifier: ^2.0.5
+ version: 2.0.5
+ jszip:
+ specifier: ^3.10.1
+ version: 3.10.1
+ lucide-vue-next:
+ specifier: ^0.321.0
+ version: 0.321.0(vue@3.5.0(typescript@5.5.4))
+ mitt:
+ specifier: ^3.0.1
+ version: 3.0.1
+ radix-vue:
+ specifier: ^1.3.2
+ version: 1.9.5(vue@3.5.0(typescript@5.5.4))
+ specificity:
+ specifier: ^1.0.0
+ version: 1.0.0
+ type-fest:
+ specifier: ^4.10.2
+ version: 4.26.0
+ vue:
+ specifier: ^3.5.0
+ version: 3.5.0(typescript@5.5.4)
+ webextension-polyfill:
+ specifier: 0.10.0
+ version: 0.10.0
+ devDependencies:
+ '@commitlint/cli':
+ specifier: 18.4.4
+ version: 18.4.4(@types/node@20.8.10)(typescript@5.5.4)
+ '@commitlint/config-conventional':
+ specifier: 18.6.0
+ version: 18.6.0
+ '@rollup/plugin-typescript':
+ specifier: 11.1.6
+ version: 11.1.6(rollup@4.3.0)(tslib@2.6.2)(typescript@5.5.4)
+ '@rushstack/eslint-patch':
+ specifier: ^1.6.1
+ version: 1.10.4
+ '@types/chrome':
+ specifier: 0.0.251
+ version: 0.0.251
+ '@types/css-tree':
+ specifier: ^2.3.5
+ version: 2.3.8
+ '@types/node':
+ specifier: 20.8.10
+ version: 20.8.10
+ '@types/webextension-polyfill':
+ specifier: ^0.10.7
+ version: 0.10.7
+ '@types/ws':
+ specifier: 8.5.8
+ version: 8.5.8
+ '@typescript-eslint/eslint-plugin':
+ specifier: 6.19.1
+ version: 6.19.1(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint@8.56.0)(typescript@5.5.4)
+ '@typescript-eslint/parser':
+ specifier: 6.20.0
+ version: 6.20.0(eslint@8.56.0)(typescript@5.5.4)
+ '@vitejs/plugin-vue':
+ specifier: ^5.0.3
+ version: 5.1.3(vite@5.4.3(@types/node@20.8.10)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))
+ '@vue/eslint-config-airbnb':
+ specifier: ^8.0.0
+ version: 8.0.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint-plugin-vue@9.28.0(eslint@8.56.0))(eslint@8.56.0)
+ archiver:
+ specifier: ^6.0.1
+ version: 6.0.2
+ autoprefixer:
+ specifier: ^10.4.16
+ version: 10.4.20(postcss@8.4.44)
+ chokidar:
+ specifier: 3.5.3
+ version: 3.5.3
+ cross-env:
+ specifier: 7.0.3
+ version: 7.0.3
+ eslint:
+ specifier: 8.56.0
+ version: 8.56.0
+ eslint-config-prettier:
+ specifier: 9.0.0
+ version: 9.0.0(eslint@8.56.0)
+ eslint-import-resolver-typescript:
+ specifier: ^3.6.1
+ version: 3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0)
+ eslint-plugin-import:
+ specifier: 2.29.0
+ version: 2.29.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.56.0)
+ eslint-plugin-prettier:
+ specifier: 5.0.1
+ version: 5.0.1(eslint-config-prettier@9.0.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.1.0)
+ eslint-plugin-vue:
+ specifier: ^9.20.0
+ version: 9.28.0(eslint@8.56.0)
+ fs-extra:
+ specifier: 11.1.1
+ version: 11.1.1
+ husky:
+ specifier: 8.0.3
+ version: 8.0.3
+ jsdom:
+ specifier: ^24.0.0
+ version: 24.1.3
+ lint-staged:
+ specifier: 15.2.0
+ version: 15.2.0
+ npm-run-all:
+ specifier: 4.1.5
+ version: 4.1.5
+ postcss:
+ specifier: ^8.4.33
+ version: 8.4.44
+ prettier:
+ specifier: 3.1.0
+ version: 3.1.0
+ rollup:
+ specifier: 4.3.0
+ version: 4.3.0
+ tailwindcss:
+ specifier: ^3.4.1
+ version: 3.4.10
+ ts-loader:
+ specifier: 9.5.0
+ version: 9.5.0(typescript@5.5.4)(webpack@5.94.0)
+ tslib:
+ specifier: 2.6.2
+ version: 2.6.2
+ typescript:
+ specifier: ^5.3.3
+ version: 5.5.4
+ vite:
+ specifier: 5.4.3
+ version: 5.4.3(@types/node@20.8.10)(terser@5.31.6)
+ vue-eslint-parser:
+ specifier: ^9.4.0
+ version: 9.4.3(eslint@8.56.0)
+ vue-tsc:
+ specifier: ^2.1.4
+ version: 2.1.4(typescript@5.5.4)
+ ws:
+ specifier: 8.14.2
+ version: 8.14.2
+
+packages:
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.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.25.4':
+ resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
+ 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.25.6':
+ resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.25.2':
+ resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.24.7':
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.25.2':
+ resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.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-string-parser@7.24.8':
+ resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
+ 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.24.8':
+ resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.25.6':
+ resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/highlight@7.24.7':
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.25.6':
+ resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/standalone@7.25.6':
+ resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.25.0':
+ resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.6':
+ resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.25.6':
+ resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
+ engines: {node: '>=6.9.0'}
+
+ '@codemirror/autocomplete@6.18.0':
+ resolution: {integrity: sha512-5DbOvBbY4qW5l57cjDsmmpDh3/TeK1vXfTHa+BUMrRzdWdcxKZ4U4V7vQaTtOpApNU4kLS4FQ6cINtLg245LXA==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+
+ '@codemirror/commands@6.6.1':
+ resolution: {integrity: sha512-iBfKbyIoXS1FGdsKcZmnrxmbc8VcbMrSgD7AVrsnX+WyAYjmUDWvE93dt5D874qS4CCVu4O1JpbagHdXbbLiOw==}
+
+ '@codemirror/lang-css@6.2.1':
+ resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==}
+
+ '@codemirror/lang-html@6.4.9':
+ resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==}
+
+ '@codemirror/lang-javascript@6.2.2':
+ resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==}
+
+ '@codemirror/language@6.10.2':
+ resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==}
+
+ '@codemirror/lint@6.8.1':
+ resolution: {integrity: sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==}
+
+ '@codemirror/state@6.4.1':
+ resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
+
+ '@codemirror/view@6.33.0':
+ resolution: {integrity: sha512-AroaR3BvnjRW8fiZBalAaK+ZzB5usGgI014YKElYZvQdNH5ZIidHlO+cyf/2rWzyBFRkvG6VhiXeAEbC53P2YQ==}
+
+ '@commitlint/cli@18.4.4':
+ resolution: {integrity: sha512-Ro3wIo//fV3XiV1EkdpHog6huaEyNcUAVrSmtgKqYM5g982wOWmP4FXvEDFwRMVgz878CNBvvCc33dMZ5AQJ/g==}
+ engines: {node: '>=v18'}
+ hasBin: true
+
+ '@commitlint/config-conventional@18.6.0':
+ resolution: {integrity: sha512-CDCOf2eJz9D/TL44IBks0stM9TmdLCNE2B48owIU3YCadwzts/bobXPScagIgPQF6hhKYMEdj5zpUDlmbwuqwQ==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/config-validator@18.6.1':
+ resolution: {integrity: sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/ensure@18.6.1':
+ resolution: {integrity: sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/execute-rule@18.6.1':
+ resolution: {integrity: sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/format@18.6.1':
+ resolution: {integrity: sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/is-ignored@18.6.1':
+ resolution: {integrity: sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/lint@18.6.1':
+ resolution: {integrity: sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/load@18.6.1':
+ resolution: {integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/message@18.6.1':
+ resolution: {integrity: sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/parse@18.6.1':
+ resolution: {integrity: sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/read@18.6.1':
+ resolution: {integrity: sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/resolve-extends@18.6.1':
+ resolution: {integrity: sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/rules@18.6.1':
+ resolution: {integrity: sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/to-lines@18.6.1':
+ resolution: {integrity: sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/top-level@18.6.1':
+ resolution: {integrity: sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw==}
+ engines: {node: '>=v18'}
+
+ '@commitlint/types@18.6.1':
+ resolution: {integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==}
+ engines: {node: '>=v18'}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ 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-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ 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-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ 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-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ 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-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ 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-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ 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-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ 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/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ 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-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.4.0':
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.11.0':
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.56.0':
+ resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@floating-ui/core@1.6.7':
+ resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
+
+ '@floating-ui/dom@1.6.10':
+ resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
+
+ '@floating-ui/utils@0.2.7':
+ resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
+
+ '@floating-ui/vue@1.1.4':
+ resolution: {integrity: sha512-ammH7T3vyCx7pmm9OF19Wc42zrGnUw0QvLoidgypWsCLJMtGXEwY7paYIHO+K+oLC3mbWpzIHzeTVienYenlNg==}
+
+ '@humanwhocodes/config-array@0.11.14':
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@internationalized/date@3.5.5':
+ resolution: {integrity: sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==}
+
+ '@internationalized/number@3.5.3':
+ resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==}
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.6':
+ resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@lezer/common@1.2.1':
+ resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
+
+ '@lezer/css@1.1.8':
+ resolution: {integrity: sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==}
+
+ '@lezer/highlight@1.2.1':
+ resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
+
+ '@lezer/html@1.3.10':
+ resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==}
+
+ '@lezer/javascript@1.4.17':
+ resolution: {integrity: sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==}
+
+ '@lezer/lr@1.4.2':
+ resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
+
+ '@lokesh.dhakar/quantize@1.3.0':
+ resolution: {integrity: sha512-4KBSyaMj65d8A+2vnzLxtHFu4OmBU4IKO0yLxZ171Itdf9jGV4w+WbG7VsKts2jUdRkFSzsZqpZOz6hTB3qGAw==}
+
+ '@medv/finder@3.2.0':
+ resolution: {integrity: sha512-JmU7JIBwyL8RAzefvzALT4sP2M0biGk8i2invAgpQmma/QgfsaqoHIvJ7S0YC8n9hUVG8X3Leul2nGa06PvhbQ==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
+ '@nuxt/kit@3.13.0':
+ resolution: {integrity: sha512-gbhSbDvYfkGQ0R2ztqTLQLHRMv+7g50kAKKuN6mbF4tL9jg7NPnQ8bAarn2I4Qx8xtmwO+qY1ABkmYMn5S1CpA==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ '@nuxt/schema@3.13.0':
+ resolution: {integrity: sha512-JBGSjF9Hd8guvTV2312eM1RulCMJc50yR3CeMZPLDsI02A8TXQnABS8EbgvGRvxD43q/ITjj21B2ffG1wEVrnQ==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@rollup/plugin-typescript@11.1.6':
+ resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.14.0||^3.0.0||^4.0.0
+ tslib: '*'
+ typescript: '>=3.7.0'
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ tslib:
+ optional: true
+
+ '@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
+
+ '@rollup/rollup-android-arm-eabi@4.21.2':
+ resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm-eabi@4.3.0':
+ resolution: {integrity: sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.21.2':
+ resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.3.0':
+ resolution: {integrity: sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.21.2':
+ resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-arm64@4.3.0':
+ resolution: {integrity: sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.21.2':
+ resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.3.0':
+ resolution: {integrity: sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
+ resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.3.0':
+ resolution: {integrity: sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
+ resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
+ resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.3.0':
+ resolution: {integrity: sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
+ resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.3.0':
+ resolution: {integrity: sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
+ resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
+ resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
+ resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
+ resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.3.0':
+ resolution: {integrity: sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.21.2':
+ resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.3.0':
+ resolution: {integrity: sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
+ resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-arm64-msvc@4.3.0':
+ resolution: {integrity: sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
+ resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.3.0':
+ resolution: {integrity: sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
+ resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.3.0':
+ resolution: {integrity: sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
+ '@rushstack/eslint-patch@1.10.4':
+ resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
+
+ '@sindresorhus/merge-streams@2.3.0':
+ resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
+ engines: {node: '>=18'}
+
+ '@swc/helpers@0.5.13':
+ resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
+
+ '@tanstack/virtual-core@3.10.6':
+ resolution: {integrity: sha512-1giLc4dzgEKLMx5pgKjL6HlG5fjZMgCjzlKAlpr7yoUtetVPELgER1NtephAI910nMwfPTHNyWKSFmJdHkz2Cw==}
+
+ '@tanstack/vue-virtual@3.10.6':
+ resolution: {integrity: sha512-uVyUAV7rugRxgrw/f3J6FX6TGhxWAjXdT0PAbVNcIFNrj1Ftu/NT9bFLxKVQTkd8hnM6y8ijAlJ1xtBDGmo4gQ==}
+ peerDependencies:
+ vue: ^2.7.0 || ^3.0.0
+
+ '@types/chrome@0.0.251':
+ resolution: {integrity: sha512-UF+yr0LEKWWGsKxQ5A3XOSF5SNoU1ctW3pXcWJPpT8OOUTEspYeaLU8spDKe+6xalXeMTS0TBrX1g0b6qlWmkw==}
+
+ '@types/css-tree@2.3.8':
+ resolution: {integrity: sha512-zABG3nI2UENsx7AQv63tI5/ptoAG/7kQR1H0OvG+WTWYHOR5pfAT3cGgC8SdyCrgX/TTxJBZNmx82IjCXs1juQ==}
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+
+ '@types/filesystem@0.0.36':
+ resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==}
+
+ '@types/filewriter@0.0.33':
+ resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==}
+
+ '@types/har-format@1.2.15':
+ resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ '@types/minimist@1.2.5':
+ resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+
+ '@types/node@20.8.10':
+ resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==}
+
+ '@types/normalize-package-data@2.4.4':
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@types/web-bluetooth@0.0.20':
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+
+ '@types/webextension-polyfill@0.10.7':
+ resolution: {integrity: sha512-10ql7A0qzBmFB+F+qAke/nP1PIonS0TXZAOMVOxEUsm+lGSW6uwVcISFNa0I4Oyj0884TZVWGGMIWeXOVSNFHw==}
+
+ '@types/ws@8.5.8':
+ resolution: {integrity: sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==}
+
+ '@typescript-eslint/eslint-plugin@6.19.1':
+ resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@6.20.0':
+ resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@6.19.1':
+ resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/scope-manager@6.20.0':
+ resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/type-utils@6.19.1':
+ resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@6.19.1':
+ resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/types@6.20.0':
+ resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/typescript-estree@6.19.1':
+ resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/typescript-estree@6.20.0':
+ resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@6.19.1':
+ resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/visitor-keys@6.19.1':
+ resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/visitor-keys@6.20.0':
+ resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@uiw/codemirror-extensions-color@4.23.0':
+ resolution: {integrity: sha512-FeU4zmxgTmxD3Xce8OVb9VFBPJL/L4ctxr9FPuU6k5vdvXRSZYT0GOYHlUd3C42h8T7zUneXFGkM6LGJr5DTBA==}
+ peerDependencies:
+ '@codemirror/language': '>=6.0.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+
+ '@uiw/codemirror-themes@4.23.0':
+ resolution: {integrity: sha512-9fiji9xooZyBQozR1i6iTr56YP7j/Dr/VgsNWbqf5Szv+g+4WM1iZuiDGwNXmFMWX8gbkDzp6ASE21VCPSofWw==}
+ peerDependencies:
+ '@codemirror/language': '>=6.0.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ '@vitejs/plugin-vue@5.1.3':
+ resolution: {integrity: sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.2.25
+
+ '@volar/language-core@2.4.1':
+ resolution: {integrity: sha512-9AKhC7Qn2mQYxj7Dz3bVxeOk7gGJladhWixUYKef/o0o7Bm4an+A3XvmcTHVqZ8stE6lBVH++g050tBtJ4TZPQ==}
+
+ '@volar/source-map@2.4.1':
+ resolution: {integrity: sha512-Xq6ep3OZg9xUqN90jEgB9ztX5SsTz1yiV8wiQbcYNjWkek+Ie3dc8l7AVt3EhDm9mSIR58oWczHkzM2H6HIsmQ==}
+
+ '@volar/typescript@2.4.1':
+ resolution: {integrity: sha512-UoRzC0PXcwajFQTu8XxKSYNsWNBtVja6Y9gC8eLv7kYm+UEKJCcZ8g7dialsOYA0HKs3Vpg57MeCsawFLC6m9Q==}
+
+ '@vue/compiler-core@3.5.0':
+ resolution: {integrity: sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw==}
+
+ '@vue/compiler-dom@3.5.0':
+ resolution: {integrity: sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==}
+
+ '@vue/compiler-sfc@3.5.0':
+ resolution: {integrity: sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==}
+
+ '@vue/compiler-ssr@3.5.0':
+ resolution: {integrity: sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==}
+
+ '@vue/compiler-vue2@2.7.16':
+ resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
+
+ '@vue/eslint-config-airbnb@8.0.0':
+ resolution: {integrity: sha512-0PGJubVK8+arJC+07xeL7gFLLfr5hxub7UCl+x+bxgvE2qtJodbOXZ27mdt1tAYsgUuhmp3ymn9mNbAIvNGahA==}
+ peerDependencies:
+ eslint: ^8.2.0
+ eslint-plugin-vue: ^9.2.0
+
+ '@vue/language-core@2.1.4':
+ resolution: {integrity: sha512-i8pfAgNjTNjabBX1xRsuV6aRw2E8bdQXwd5H8m3cUkTVJju3QN5nfdoXET0uK+yXsuloNJPzo6PXFujRRPNmMA==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@vue/reactivity@3.5.0':
+ resolution: {integrity: sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ==}
+
+ '@vue/runtime-core@3.5.0':
+ resolution: {integrity: sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w==}
+
+ '@vue/runtime-dom@3.5.0':
+ resolution: {integrity: sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A==}
+
+ '@vue/server-renderer@3.5.0':
+ resolution: {integrity: sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg==}
+ peerDependencies:
+ vue: 3.5.0
+
+ '@vue/shared@3.5.0':
+ resolution: {integrity: sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q==}
+
+ '@vueuse/core@10.11.1':
+ resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
+
+ '@vueuse/metadata@10.11.1':
+ resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==}
+
+ '@vueuse/motion@2.2.3':
+ resolution: {integrity: sha512-QsS9P7MDKFF2j4eDPuo6lezUDPE7MQp4+unBeR2Ym8RkhtMEw/oVbnHPHL986rsmnnlUZkHVSv5kKoHJzjbtmQ==}
+ peerDependencies:
+ vue: '>=3.0.0'
+
+ '@vueuse/shared@10.11.1':
+ resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==}
+
+ '@webassemblyjs/ast@1.12.1':
+ resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==}
+
+ '@webassemblyjs/floating-point-hex-parser@1.11.6':
+ resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
+
+ '@webassemblyjs/helper-api-error@1.11.6':
+ resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
+
+ '@webassemblyjs/helper-buffer@1.12.1':
+ resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==}
+
+ '@webassemblyjs/helper-numbers@1.11.6':
+ resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
+
+ '@webassemblyjs/helper-wasm-bytecode@1.11.6':
+ resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==}
+
+ '@webassemblyjs/helper-wasm-section@1.12.1':
+ resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==}
+
+ '@webassemblyjs/ieee754@1.11.6':
+ resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==}
+
+ '@webassemblyjs/leb128@1.11.6':
+ resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==}
+
+ '@webassemblyjs/utf8@1.11.6':
+ resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==}
+
+ '@webassemblyjs/wasm-edit@1.12.1':
+ resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==}
+
+ '@webassemblyjs/wasm-gen@1.12.1':
+ resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==}
+
+ '@webassemblyjs/wasm-opt@1.12.1':
+ resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==}
+
+ '@webassemblyjs/wasm-parser@1.12.1':
+ resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==}
+
+ '@webassemblyjs/wast-printer@1.12.1':
+ resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==}
+
+ '@xtuc/ieee754@1.2.0':
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ '@xtuc/long@4.2.2':
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ JSONStream@1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@7.1.1:
+ resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
+ engines: {node: '>= 14'}
+
+ ajv-keywords@3.5.2:
+ resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
+ peerDependencies:
+ ajv: ^6.9.1
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
+ ansi-escapes@7.0.0:
+ resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
+ engines: {node: '>=18'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ archiver-utils@4.0.1:
+ resolution: {integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==}
+ engines: {node: '>= 12.0.0'}
+
+ archiver@6.0.2:
+ resolution: {integrity: sha512-UQ/2nW7NMl1G+1UnrLypQw1VdT9XZg/ECcKPq7l+STzStrSivFIXIp34D8M5zeNGW5NoOupdYCHv6VySCPNNlw==}
+ engines: {node: '>= 12.0.0'}
+
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-hidden@1.2.4:
+ resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
+ engines: {node: '>=10'}
+
+ aria-query@5.1.3:
+ resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+
+ aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+
+ array-ify@1.0.0:
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
+
+ array-includes@3.1.8:
+ resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ engines: {node: '>= 0.4'}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ array.prototype.findlast@1.2.5:
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.findlastindex@1.2.5:
+ resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.2:
+ resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.tosorted@1.1.4:
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
+
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ engines: {node: '>= 0.4'}
+
+ arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+
+ asn1@0.2.6:
+ resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
+
+ assert-plus@1.0.0:
+ resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
+ engines: {node: '>=0.8'}
+
+ ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ autoprefixer@10.4.20:
+ resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ aws-sign2@0.7.0:
+ resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
+
+ aws4@1.13.2:
+ resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==}
+
+ axe-core@4.10.0:
+ resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==}
+ engines: {node: '>=4'}
+
+ axobject-query@3.1.1:
+ resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==}
+
+ b4a@1.6.6:
+ resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ bare-events@2.4.2:
+ resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==}
+
+ bcrypt-pbkdf@1.0.2:
+ resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ 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
+
+ buffer-crc32@0.2.13:
+ resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ c12@1.11.2:
+ resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==}
+ peerDependencies:
+ magicast: ^0.3.4
+ peerDependenciesMeta:
+ magicast:
+ optional: true
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+
+ camelcase-keys@6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ caniuse-lite@1.0.30001655:
+ resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==}
+
+ caseless@0.12.0:
+ resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
+ engines: {node: '>=6.0'}
+
+ citty@0.1.6:
+ resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+
+ class-variance-authority@0.7.0:
+ resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
+
+ cli-cursor@5.0.0:
+ resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
+ engines: {node: '>=18'}
+
+ cli-truncate@4.0.0:
+ resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
+ engines: {node: '>=18'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ clsx@2.0.0:
+ resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
+ engines: {node: '>=6'}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color2k@2.0.3:
+ resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==}
+
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+
+ colors-named-hex@1.0.2:
+ resolution: {integrity: sha512-k6kq1e1pUCQvSVwIaGFq2l0LrkAPQZWyeuZn1Z8nOiYSEZiKoFj4qx690h2Kd34DFl9Me0gKS6MUwAMBJj8nuA==}
+ engines: {node: '>=14.16'}
+
+ colors-named@1.0.2:
+ resolution: {integrity: sha512-2ANq2r393PV9njYUD66UdfBcxR1slMqRA3QRTWgCx49JoCJ+kOhyfbQYxKJbPZQIhZUcNjVOs5AlyY1WwXec3w==}
+ engines: {node: '>=14.16'}
+
+ colorthief@2.4.0:
+ resolution: {integrity: sha512-0U48RGNRo5fVO+yusBwgp+d3augWSorXabnqXUu9SabEhCpCgZJEUjUTTI41OOBBYuMMxawa3177POT6qLfLeQ==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ compare-func@2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+
+ compatx@0.1.8:
+ resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==}
+
+ compress-commons@5.0.3:
+ resolution: {integrity: sha512-/UIcLWvwAQyVibgpQDPtfNM3SvqN7G9elAPAV7GM0L53EbNWwWiCsWtK8Fwed/APEbptPHXs5PuW+y8Bq8lFTA==}
+ engines: {node: '>= 12.0.0'}
+
+ computeds@0.0.1:
+ resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ confbox@0.1.7:
+ resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+
+ confusing-browser-globals@1.0.11:
+ resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
+
+ consola@3.2.3:
+ resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ conventional-changelog-angular@7.0.0:
+ resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-conventionalcommits@7.0.2:
+ resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
+ engines: {node: '>=16'}
+
+ conventional-commits-parser@5.0.0:
+ resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ core-util-is@1.0.2:
+ resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cosmiconfig-typescript-loader@5.0.0:
+ resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
+ engines: {node: '>=v16'}
+ peerDependencies:
+ '@types/node': '*'
+ cosmiconfig: '>=8.2'
+ typescript: '>=4'
+
+ cosmiconfig@8.3.6:
+ resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ crc-32@1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+
+ crc32-stream@5.0.1:
+ resolution: {integrity: sha512-lO1dFui+CEUh/ztYIpgpKItKW9Bb4NWakCRJrnqAbFIYD+OZAwb2VfD5T5eXMw2FNcsDHkQcNl/Wh3iVXYwU6g==}
+ engines: {node: '>= 12.0.0'}
+
+ crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+
+ cross-env@7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+
+ cross-spawn@6.0.5:
+ resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
+ engines: {node: '>=4.8'}
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ css-tree@2.3.1:
+ resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ cssstyle@4.0.1:
+ resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
+ engines: {node: '>=18'}
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ cwise-compiler@1.1.3:
+ resolution: {integrity: sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==}
+
+ damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+
+ dargs@7.0.0:
+ resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
+ engines: {node: '>=8'}
+
+ dashdash@1.14.1:
+ resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
+ engines: {node: '>=0.10'}
+
+ data-uri-to-buffer@0.0.3:
+ resolution: {integrity: sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw==}
+
+ data-urls@5.0.0:
+ resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
+ engines: {node: '>=18'}
+
+ data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+
+ de-indent@1.0.2:
+ resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize-keys@1.1.1:
+ resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
+ engines: {node: '>=0.10.0'}
+
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+
+ deep-equal@2.2.3:
+ resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ defu@6.1.4:
+ resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ destr@2.0.3:
+ resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==}
+
+ didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ dot-prop@5.3.0:
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
+
+ dotenv@16.4.5:
+ resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+ engines: {node: '>=12'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ecc-jsbn@0.1.2:
+ resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
+
+ electron-to-chromium@1.5.13:
+ resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==}
+
+ emoji-regex@10.4.0:
+ resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ enhanced-resolve@5.17.1:
+ resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
+ engines: {node: '>=10.13.0'}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ environment@1.1.0:
+ resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
+ engines: {node: '>=18'}
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ es-abstract@1.23.3:
+ resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-get-iterator@1.1.3:
+ resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+
+ es-iterator-helpers@1.0.19:
+ resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
+ es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+
+ es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ eslint-config-airbnb-base@15.0.0:
+ resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: ^7.32.0 || ^8.2.0
+ eslint-plugin-import: ^2.25.2
+
+ eslint-config-prettier@9.0.0:
+ resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-import-resolver-custom-alias@1.3.2:
+ resolution: {integrity: sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==}
+ peerDependencies:
+ eslint-plugin-import: '>=2.2.0'
+
+ eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+
+ eslint-import-resolver-typescript@3.6.3:
+ resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.9.0:
+ resolution: {integrity: sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-import@2.29.0:
+ resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-import@2.30.0:
+ resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.9.0:
+ resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+
+ eslint-plugin-prettier@5.0.1:
+ resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
+ eslint-config-prettier: '*'
+ prettier: '>=3.0.0'
+ peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-react@7.35.2:
+ resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-plugin-vue@9.28.0:
+ resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+
+ eslint-plugin-vuejs-accessibility@2.4.1:
+ resolution: {integrity: sha512-ZRZhPdslplZXSF71MtSG+zXYRAT5KiHR4JVuo/DERQf9noAkDvi5W418VOE1qllmJd7wTenndxi1q8XeDMxdHw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ 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}
+
+ eslint@8.56.0:
+ resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ extsprintf@1.3.0:
+ resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
+ engines: {'0': node >=0.6.0}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fast-uri@3.0.1:
+ resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ file-saver@2.0.5:
+ resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
+ engines: {node: '>=14'}
+
+ forever-agent@0.6.1:
+ resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
+
+ form-data@2.3.3:
+ resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==}
+ engines: {node: '>= 0.12'}
+
+ form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ framesync@6.1.2:
+ resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==}
+
+ fs-extra@11.1.1:
+ resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
+ engines: {node: '>=14.14'}
+
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function.prototype.name@1.1.6:
+ resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ engines: {node: '>= 0.4'}
+
+ functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-east-asian-width@1.2.0:
+ resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
+ engines: {node: '>=18'}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ get-pixels@3.3.3:
+ resolution: {integrity: sha512-5kyGBn90i9tSMUVHTqkgCHsoWoR+/lGbl4yC83Gefyr0HLIhgSWEx/2F/3YgsZ7UpYNuM6pDhDK7zebrUJ5nXg==}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+ engines: {node: '>= 0.4'}
+
+ get-tsconfig@4.8.0:
+ resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==}
+
+ getpass@0.1.7:
+ resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
+
+ giget@1.2.3:
+ resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==}
+ hasBin: true
+
+ git-raw-commits@2.0.11:
+ resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ global-dirs@0.1.1:
+ resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
+ engines: {node: '>=4'}
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ globby@14.0.2:
+ resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
+ engines: {node: '>=18'}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ har-schema@2.0.0:
+ resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
+ engines: {node: '>=4'}
+
+ har-validator@5.1.5:
+ resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
+ engines: {node: '>=6'}
+ deprecated: this library is no longer supported
+
+ hard-rejection@2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+
+ has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hash-sum@2.0.0:
+ resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ hey-listen@1.0.8:
+ resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
+
+ hookable@5.5.3:
+ resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+
+ hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ hosted-git-info@4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+
+ hsl-matcher@1.2.4:
+ resolution: {integrity: sha512-tS7XnJS33Egirm+6cI+Z/kH/aVZt94uxGlJxOZlGql2/yqbAzPg3zHHnTnVN4cVpoJnEYEGq+LE3iXbuUIe8BA==}
+ engines: {node: '>=16.0.0'}
+
+ html-encoding-sniffer@4.0.0:
+ resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
+ engines: {node: '>=18'}
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
+ http-signature@1.2.0:
+ resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
+ engines: {node: '>=0.8', npm: '>=1.3.7'}
+
+ https-proxy-agent@7.0.5:
+ resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
+ engines: {node: '>= 14'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ husky@8.0.3:
+ resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+
+ iota-array@1.0.0:
+ resolution: {integrity: sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA==}
+
+ is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-async-function@2.0.0:
+ resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+
+ is-buffer@1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+
+ is-bun-module@1.1.0:
+ resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.0.2:
+ resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-fullwidth-code-point@4.0.0:
+ resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
+ engines: {node: '>=12'}
+
+ is-fullwidth-code-point@5.0.0:
+ resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
+ engines: {node: '>=18'}
+
+ is-generator-function@1.0.10:
+ resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
+ is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-obj@2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
+ is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+
+ is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+
+ is-text-path@2.0.0:
+ resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
+ engines: {node: '>=8'}
+
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+
+ is-typedarray@1.0.0:
+ resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
+
+ is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+
+ is-weakset@2.0.3:
+ resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+ engines: {node: '>= 0.4'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isstream@0.1.2:
+ resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
+
+ iterator.prototype@1.1.2:
+ resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
+ jiti@1.21.6:
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
+ hasBin: true
+
+ jpeg-js@0.4.4:
+ resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-tokens@9.0.0:
+ resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ jsbn@0.1.1:
+ resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
+
+ jsdom@24.1.3:
+ resolution: {integrity: sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ canvas: ^2.11.2
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
+ jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-better-errors@1.0.2:
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ json-schema@0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json-stringify-safe@5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
+ jsonparse@1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+
+ jsprim@1.4.2:
+ resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
+ engines: {node: '>=0.6.0'}
+
+ jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ klona@2.0.6:
+ resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
+ engines: {node: '>= 8'}
+
+ knitwork@1.1.0:
+ resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==}
+
+ language-subtag-registry@0.3.23:
+ resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
+
+ language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
+
+ lazystream@1.0.1:
+ resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
+ engines: {node: '>= 0.6.3'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ lilconfig@3.0.0:
+ resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
+ engines: {node: '>=14'}
+
+ lilconfig@3.1.2:
+ resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
+ engines: {node: '>=14'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ lint-staged@15.2.0:
+ resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==}
+ engines: {node: '>=18.12.0'}
+ hasBin: true
+
+ listr2@8.0.0:
+ resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==}
+ engines: {node: '>=18.0.0'}
+
+ load-json-file@4.0.0:
+ resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
+ engines: {node: '>=4'}
+
+ loader-runner@4.3.0:
+ resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
+ engines: {node: '>=6.11.5'}
+
+ local-pkg@0.5.0:
+ resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
+ engines: {node: '>=14'}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+
+ lodash.isfunction@3.0.9:
+ resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.kebabcase@4.1.1:
+ resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash.mergewith@4.6.2:
+ resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
+
+ lodash.snakecase@4.1.1:
+ resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
+
+ lodash.startcase@4.4.0:
+ resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
+
+ lodash.uniq@4.5.0:
+ resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
+
+ lodash.upperfirst@4.3.1:
+ resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ log-update@6.1.0:
+ resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
+ engines: {node: '>=18'}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ lucide-vue-next@0.321.0:
+ resolution: {integrity: sha512-r4IXuXuFneX2tAJF9TxXY/X5J0zIblI/pBPMR5vcAtDFVAKwWHoGSvCMk3dkH2dmD/uUZfNZiLI5fa07g4pbMA==}
+ peerDependencies:
+ vue: '>=3.0.1'
+
+ magic-string@0.30.11:
+ resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
+
+ map-obj@1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+
+ map-obj@4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+
+ mdn-data@2.0.30:
+ resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+
+ memorystream@0.3.1:
+ resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
+ engines: {node: '>= 0.10.0'}
+
+ meow@12.1.1:
+ resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
+ engines: {node: '>=16.10'}
+
+ meow@8.1.2:
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ mimic-function@5.0.1:
+ resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
+ engines: {node: '>=18'}
+
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
+ minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist-options@4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
+ mitt@3.0.1:
+ resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mlly@1.7.1:
+ resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ muggle-string@0.4.1:
+ resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
+
+ mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ nanoid@5.0.7:
+ resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ ndarray-pack@1.2.1:
+ resolution: {integrity: sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==}
+
+ ndarray@1.0.19:
+ resolution: {integrity: sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==}
+
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ nice-try@1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+
+ node-bitmap@0.0.1:
+ resolution: {integrity: sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==}
+ engines: {node: '>=v0.6.5'}
+
+ node-fetch-native@1.6.4:
+ resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+
+ normalize-package-data@3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-run-all@4.1.5:
+ resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
+ engines: {node: '>= 4'}
+ hasBin: true
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
+ nwsapi@2.2.12:
+ resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==}
+
+ nypm@0.3.11:
+ resolution: {integrity: sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==}
+ engines: {node: ^14.16.0 || >=16.10.0}
+ hasBin: true
+
+ oauth-sign@0.9.0:
+ resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
+
+ object-is@1.1.6:
+ resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.8:
+ resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
+ engines: {node: '>= 0.4'}
+
+ object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
+
+ object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
+
+ object.values@1.2.0:
+ resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+ engines: {node: '>= 0.4'}
+
+ ohash@1.1.3:
+ resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==}
+
+ omggif@1.0.10:
+ resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ onetime@7.0.0:
+ resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
+ engines: {node: '>=18'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-data-uri@0.2.0:
+ resolution: {integrity: sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w==}
+
+ parse-json@4.0.0:
+ resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+ engines: {node: '>=4'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@2.0.1:
+ resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+ engines: {node: '>=4'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ path-type@3.0.0:
+ resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
+ engines: {node: '>=4'}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ path-type@5.0.0:
+ resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
+ engines: {node: '>=12'}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ perfect-debounce@1.0.0:
+ resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+
+ performance-now@2.1.0:
+ resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pidtree@0.3.1:
+ resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ pidtree@0.6.0:
+ resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+
+ pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ pkg-types@1.2.0:
+ resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
+
+ pngjs@3.4.0:
+ resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
+ engines: {node: '>=4.0.0'}
+
+ popmotion@11.0.5:
+ resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==}
+
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ postcss-import@15.1.0:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.0.1:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@4.0.2:
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-nested@6.2.0:
+ resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.1.2:
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.4.44:
+ resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-linter-helpers@1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+
+ prettier@3.1.0:
+ resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ psl@1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ qs@6.5.3:
+ resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
+ engines: {node: '>=0.6'}
+
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ queue-tick@1.0.1:
+ resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
+
+ quick-lru@4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+
+ radix-vue@1.9.5:
+ resolution: {integrity: sha512-vtCq+WDAZj5BQtJiChGf/oC7w3y7jaod3agcntgph7fD6aqdcghLZYcUWdgT/XNJs2bEsk+3cjK3ONPRNeFcuQ==}
+ peerDependencies:
+ vue: '>= 3.2.0'
+
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+
+ rc9@2.1.2:
+ resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
+ read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+
+ read-pkg@3.0.0:
+ resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
+ engines: {node: '>=4'}
+
+ read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdir-glob@1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+
+ reflect.getprototypeof@1.0.6:
+ resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+ engines: {node: '>= 0.4'}
+
+ regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+
+ request@2.88.2:
+ resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
+ engines: {node: '>= 6'}
+ deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ resolve-global@1.0.0:
+ resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
+ engines: {node: '>=8'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ hasBin: true
+
+ restore-cursor@5.1.0:
+ resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
+ engines: {node: '>=18'}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rollup@4.21.2:
+ resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ rollup@4.3.0:
+ resolution: {integrity: sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ rrweb-cssom@0.6.0:
+ resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
+
+ rrweb-cssom@0.7.1:
+ resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+ engines: {node: '>=0.4'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+
+ schema-utils@3.3.0:
+ resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
+ engines: {node: '>= 10.13.0'}
+
+ scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.0:
+ resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
+ shebang-command@1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.8.1:
+ resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+
+ side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ slash@5.1.0:
+ resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
+ engines: {node: '>=14.16'}
+
+ slice-ansi@5.0.0:
+ resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
+ engines: {node: '>=12'}
+
+ slice-ansi@7.1.0:
+ resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
+ engines: {node: '>=18'}
+
+ source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.20:
+ resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==}
+
+ specificity@1.0.0:
+ resolution: {integrity: sha512-nCtHb5/MTfZ1D36EpLLz03AcUf1v+PxWFFieW4O721MaJUo/anSMckB94Ylj5VQPrjdlx+4BXcKD+s1N0yT+ww==}
+
+ split2@3.2.2:
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ sshpk@1.18.0:
+ resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ std-env@3.7.0:
+ resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+
+ stop-iteration-iterator@1.0.0:
+ resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+
+ streamx@2.20.0:
+ resolution: {integrity: sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==}
+
+ string-argv@0.3.2:
+ resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
+ engines: {node: '>=0.6.19'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
+
+ string.prototype.includes@2.0.0:
+ resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==}
+
+ string.prototype.matchall@4.0.11:
+ resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.padend@3.1.6:
+ resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.repeat@1.0.0:
+ resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+
+ string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ strip-literal@2.1.0:
+ resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
+
+ style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+
+ style-value-types@5.1.2:
+ resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==}
+
+ sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ 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'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+
+ synckit@0.8.8:
+ resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tailwindcss@3.4.10:
+ resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+
+ terser-webpack-plugin@5.3.10:
+ resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+
+ terser@5.31.6:
+ resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ text-decoder@1.1.1:
+ resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==}
+
+ text-extensions@2.4.0:
+ resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
+ engines: {node: '>=8'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+
+ thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+
+ through2@4.0.2:
+ resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
+
+ through@2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+
+ to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ tough-cookie@2.5.0:
+ resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
+ engines: {node: '>=0.8'}
+
+ tough-cookie@4.1.4:
+ resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
+ engines: {node: '>=6'}
+
+ tr46@5.0.0:
+ resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
+ engines: {node: '>=18'}
+
+ trim-newlines@3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+
+ ts-api-utils@1.3.0:
+ resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+
+ ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ ts-loader@9.5.0:
+ resolution: {integrity: sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ typescript: '*'
+ webpack: ^5.0.0
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
+ tslib@2.4.0:
+ resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
+
+ tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
+ tweetnacl@0.14.5:
+ resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+
+ type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+
+ type-fest@4.26.0:
+ resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==}
+ engines: {node: '>=16'}
+
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
+
+ typescript@5.5.4:
+ resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
+ unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+
+ uncrypto@0.1.3:
+ resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+
+ unctx@2.3.1:
+ resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==}
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ unicorn-magic@0.1.0:
+ resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
+ engines: {node: '>=18'}
+
+ unimport@3.11.1:
+ resolution: {integrity: sha512-DuB1Uoq01LrrXTScxnwOoMSlTXxyKcULguFxbLrMDFcE/CO0ZWHpEiyhovN0mycPt7K6luAHe8laqvwvuoeUPg==}
+
+ uniq@1.0.1:
+ resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==}
+
+ universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ unplugin@1.12.3:
+ resolution: {integrity: sha512-my8DH0/T/Kx33KO+6QXAqdeMYgyy0GktlOpdQjpagfHKw5DrD0ctPr7SHUyOT3g4ZVpzCQGt/qcpuoKJ/pniHA==}
+ engines: {node: '>=14.0.0'}
+
+ untyped@1.4.2:
+ resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==}
+ hasBin: true
+
+ update-browserslist-db@1.1.0:
+ resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ uuid@3.4.0:
+ resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
+ deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
+ hasBin: true
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ verror@1.10.0:
+ resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
+ engines: {'0': node >=0.6.0}
+
+ 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
+
+ vscode-uri@3.0.8:
+ resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-eslint-parser@9.4.3:
+ resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+
+ vue-tsc@2.1.4:
+ resolution: {integrity: sha512-XTzMXQcsixAvNbpou/9qngEsZawaiJRZH3Ja+lfgRfv2A1TJv9vnZ/Kyv7XxPqv/TaZVFSnjGpM87VbWIg6yQg==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.0.0'
+
+ vue@3.5.0:
+ resolution: {integrity: sha512-1t70favYoFijwfWJ7g81aTd32obGaAnKYE9FNyMgnEzn3F4YncRi/kqAHHKloG0VXTD8vBYMhbgLKCA+Sk6QDw==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
+ w3c-xmlserializer@5.0.0:
+ resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
+
+ watchpack@2.4.2:
+ resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==}
+ engines: {node: '>=10.13.0'}
+
+ webextension-polyfill@0.10.0:
+ resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==}
+
+ webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+
+ webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
+ webpack@5.94.0:
+ resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+
+ whatwg-encoding@3.1.1:
+ resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
+
+ whatwg-mimetype@4.0.0:
+ resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
+
+ whatwg-url@14.0.0:
+ resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
+ engines: {node: '>=18'}
+
+ which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+
+ which-builtin-type@1.1.4:
+ resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+
+ which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ engines: {node: '>= 0.4'}
+
+ which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrap-ansi@9.0.0:
+ resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
+ engines: {node: '>=18'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ ws@8.14.2:
+ resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.18.0:
+ resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yaml@2.3.4:
+ resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
+ engines: {node: '>= 14'}
+
+ yaml@2.5.1:
+ resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ zip-stream@5.0.2:
+ resolution: {integrity: sha512-LfOdrUvPB8ZoXtvOBz6DlNClfvi//b5d56mSWyJi7XbH/HfhOHfUhOqxhT/rUiR7yiktlunqRo+jY6y/cWC/5g==}
+ engines: {node: '>= 12.0.0'}
+
+snapshots:
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ optional: true
+
+ '@babel/code-frame@7.24.7':
+ dependencies:
+ '@babel/highlight': 7.24.7
+ picocolors: 1.1.0
+
+ '@babel/compat-data@7.25.4':
+ optional: true
+
+ '@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.6
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/generator@7.25.6':
+ dependencies:
+ '@babel/types': 7.25.6
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
+ optional: true
+
+ '@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
+ optional: true
+
+ '@babel/helper-module-imports@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
+ 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
+ optional: true
+
+ '@babel/helper-simple-access@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/helper-string-parser@7.24.8': {}
+
+ '@babel/helper-validator-identifier@7.24.7': {}
+
+ '@babel/helper-validator-option@7.24.8':
+ optional: true
+
+ '@babel/helpers@7.25.6':
+ dependencies:
+ '@babel/template': 7.25.0
+ '@babel/types': 7.25.6
+ optional: true
+
+ '@babel/highlight@7.24.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.24.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.1.0
+
+ '@babel/parser@7.25.6':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/standalone@7.25.6':
+ optional: true
+
+ '@babel/template@7.25.0':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
+ optional: true
+
+ '@babel/traverse@7.25.6':
+ 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.6
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@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
+
+ '@codemirror/autocomplete@6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1)':
+ dependencies:
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ '@lezer/common': 1.2.1
+
+ '@codemirror/commands@6.6.1':
+ dependencies:
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ '@lezer/common': 1.2.1
+
+ '@codemirror/lang-css@6.2.1(@codemirror/view@6.33.0)':
+ dependencies:
+ '@codemirror/autocomplete': 6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ transitivePeerDependencies:
+ - '@codemirror/view'
+
+ '@codemirror/lang-html@6.4.9':
+ dependencies:
+ '@codemirror/autocomplete': 6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1)
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.33.0)
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ '@lezer/html': 1.3.10
+
+ '@codemirror/lang-javascript@6.2.2':
+ dependencies:
+ '@codemirror/autocomplete': 6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.2
+ '@codemirror/lint': 6.8.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ '@lezer/common': 1.2.1
+ '@lezer/javascript': 1.4.17
+
+ '@codemirror/language@6.10.2':
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+ style-mod: 4.1.2
+
+ '@codemirror/lint@6.8.1':
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ crelt: 1.0.6
+
+ '@codemirror/state@6.4.1': {}
+
+ '@codemirror/view@6.33.0':
+ dependencies:
+ '@codemirror/state': 6.4.1
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
+
+ '@commitlint/cli@18.4.4(@types/node@20.8.10)(typescript@5.5.4)':
+ dependencies:
+ '@commitlint/format': 18.6.1
+ '@commitlint/lint': 18.6.1
+ '@commitlint/load': 18.6.1(@types/node@20.8.10)(typescript@5.5.4)
+ '@commitlint/read': 18.6.1
+ '@commitlint/types': 18.6.1
+ execa: 5.1.1
+ lodash.isfunction: 3.0.9
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - typescript
+
+ '@commitlint/config-conventional@18.6.0':
+ dependencies:
+ conventional-changelog-conventionalcommits: 7.0.2
+
+ '@commitlint/config-validator@18.6.1':
+ dependencies:
+ '@commitlint/types': 18.6.1
+ ajv: 8.17.1
+
+ '@commitlint/ensure@18.6.1':
+ dependencies:
+ '@commitlint/types': 18.6.1
+ lodash.camelcase: 4.3.0
+ lodash.kebabcase: 4.1.1
+ lodash.snakecase: 4.1.1
+ lodash.startcase: 4.4.0
+ lodash.upperfirst: 4.3.1
+
+ '@commitlint/execute-rule@18.6.1': {}
+
+ '@commitlint/format@18.6.1':
+ dependencies:
+ '@commitlint/types': 18.6.1
+ chalk: 4.1.2
+
+ '@commitlint/is-ignored@18.6.1':
+ dependencies:
+ '@commitlint/types': 18.6.1
+ semver: 7.6.0
+
+ '@commitlint/lint@18.6.1':
+ dependencies:
+ '@commitlint/is-ignored': 18.6.1
+ '@commitlint/parse': 18.6.1
+ '@commitlint/rules': 18.6.1
+ '@commitlint/types': 18.6.1
+
+ '@commitlint/load@18.6.1(@types/node@20.8.10)(typescript@5.5.4)':
+ dependencies:
+ '@commitlint/config-validator': 18.6.1
+ '@commitlint/execute-rule': 18.6.1
+ '@commitlint/resolve-extends': 18.6.1
+ '@commitlint/types': 18.6.1
+ chalk: 4.1.2
+ cosmiconfig: 8.3.6(typescript@5.5.4)
+ cosmiconfig-typescript-loader: 5.0.0(@types/node@20.8.10)(cosmiconfig@8.3.6(typescript@5.5.4))(typescript@5.5.4)
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ lodash.uniq: 4.5.0
+ resolve-from: 5.0.0
+ transitivePeerDependencies:
+ - '@types/node'
+ - typescript
+
+ '@commitlint/message@18.6.1': {}
+
+ '@commitlint/parse@18.6.1':
+ dependencies:
+ '@commitlint/types': 18.6.1
+ conventional-changelog-angular: 7.0.0
+ conventional-commits-parser: 5.0.0
+
+ '@commitlint/read@18.6.1':
+ dependencies:
+ '@commitlint/top-level': 18.6.1
+ '@commitlint/types': 18.6.1
+ git-raw-commits: 2.0.11
+ minimist: 1.2.8
+
+ '@commitlint/resolve-extends@18.6.1':
+ dependencies:
+ '@commitlint/config-validator': 18.6.1
+ '@commitlint/types': 18.6.1
+ import-fresh: 3.3.0
+ lodash.mergewith: 4.6.2
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+
+ '@commitlint/rules@18.6.1':
+ dependencies:
+ '@commitlint/ensure': 18.6.1
+ '@commitlint/message': 18.6.1
+ '@commitlint/to-lines': 18.6.1
+ '@commitlint/types': 18.6.1
+ execa: 5.1.1
+
+ '@commitlint/to-lines@18.6.1': {}
+
+ '@commitlint/top-level@18.6.1':
+ dependencies:
+ find-up: 5.0.0
+
+ '@commitlint/types@18.6.1':
+ dependencies:
+ chalk: 4.1.2
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)':
+ dependencies:
+ eslint: 8.56.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.11.0': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.6
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.56.0': {}
+
+ '@floating-ui/core@1.6.7':
+ dependencies:
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/dom@1.6.10':
+ dependencies:
+ '@floating-ui/core': 1.6.7
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/utils@0.2.7': {}
+
+ '@floating-ui/vue@1.1.4(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@floating-ui/dom': 1.6.10
+ '@floating-ui/utils': 0.2.7
+ vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@humanwhocodes/config-array@0.11.14':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.6
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@internationalized/date@3.5.5':
+ dependencies:
+ '@swc/helpers': 0.5.13
+
+ '@internationalized/number@3.5.3':
+ dependencies:
+ '@swc/helpers': 0.5.13
+
+ '@isaacs/cliui@8.0.2':
+ 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
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/source-map@0.3.6':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@lezer/common@1.2.1': {}
+
+ '@lezer/css@1.1.8':
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+
+ '@lezer/highlight@1.2.1':
+ dependencies:
+ '@lezer/common': 1.2.1
+
+ '@lezer/html@1.3.10':
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+
+ '@lezer/javascript@1.4.17':
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+
+ '@lezer/lr@1.4.2':
+ dependencies:
+ '@lezer/common': 1.2.1
+
+ '@lokesh.dhakar/quantize@1.3.0': {}
+
+ '@medv/finder@3.2.0': {}
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@nolyfill/is-core-module@1.0.39': {}
+
+ '@nuxt/kit@3.13.0(rollup@4.3.0)':
+ dependencies:
+ '@nuxt/schema': 3.13.0(rollup@4.3.0)
+ c12: 1.11.2
+ consola: 3.2.3
+ defu: 6.1.4
+ destr: 2.0.3
+ globby: 14.0.2
+ hash-sum: 2.0.0
+ ignore: 5.3.2
+ jiti: 1.21.6
+ klona: 2.0.6
+ knitwork: 1.1.0
+ mlly: 1.7.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ scule: 1.3.0
+ semver: 7.6.3
+ ufo: 1.5.4
+ unctx: 2.3.1
+ unimport: 3.11.1(rollup@4.3.0)
+ untyped: 1.4.2
+ transitivePeerDependencies:
+ - magicast
+ - rollup
+ - supports-color
+ optional: true
+
+ '@nuxt/schema@3.13.0(rollup@4.3.0)':
+ dependencies:
+ compatx: 0.1.8
+ consola: 3.2.3
+ defu: 6.1.4
+ hookable: 5.5.3
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ scule: 1.3.0
+ std-env: 3.7.0
+ ufo: 1.5.4
+ uncrypto: 0.1.3
+ unimport: 3.11.1(rollup@4.3.0)
+ untyped: 1.4.2
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+ optional: true
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.1.1': {}
+
+ '@rollup/plugin-typescript@11.1.6(rollup@4.3.0)(tslib@2.6.2)(typescript@5.5.4)':
+ dependencies:
+ '@rollup/pluginutils': 5.1.0(rollup@4.3.0)
+ resolve: 1.22.8
+ typescript: 5.5.4
+ optionalDependencies:
+ rollup: 4.3.0
+ tslib: 2.6.2
+
+ '@rollup/pluginutils@5.1.0(rollup@4.3.0)':
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ optionalDependencies:
+ rollup: 4.3.0
+
+ '@rollup/rollup-android-arm-eabi@4.21.2':
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.3.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.21.2':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.3.0':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.21.2':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.3.0':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.21.2':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.3.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.3.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.3.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.3.0':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.3.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.21.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.3.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.3.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.3.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.3.0':
+ optional: true
+
+ '@rtsao/scc@1.1.0': {}
+
+ '@rushstack/eslint-patch@1.10.4': {}
+
+ '@sindresorhus/merge-streams@2.3.0':
+ optional: true
+
+ '@swc/helpers@0.5.13':
+ dependencies:
+ tslib: 2.6.2
+
+ '@tanstack/virtual-core@3.10.6': {}
+
+ '@tanstack/vue-virtual@3.10.6(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@tanstack/virtual-core': 3.10.6
+ vue: 3.5.0(typescript@5.5.4)
+
+ '@types/chrome@0.0.251':
+ dependencies:
+ '@types/filesystem': 0.0.36
+ '@types/har-format': 1.2.15
+
+ '@types/css-tree@2.3.8': {}
+
+ '@types/estree@1.0.5': {}
+
+ '@types/filesystem@0.0.36':
+ dependencies:
+ '@types/filewriter': 0.0.33
+
+ '@types/filewriter@0.0.33': {}
+
+ '@types/har-format@1.2.15': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/json5@0.0.29': {}
+
+ '@types/minimist@1.2.5': {}
+
+ '@types/node@20.8.10':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/normalize-package-data@2.4.4': {}
+
+ '@types/semver@7.5.8': {}
+
+ '@types/web-bluetooth@0.0.20': {}
+
+ '@types/webextension-polyfill@0.10.7': {}
+
+ '@types/ws@8.5.8':
+ dependencies:
+ '@types/node': 20.8.10
+
+ '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint@8.56.0)(typescript@5.5.4)':
+ dependencies:
+ '@eslint-community/regexpp': 4.11.0
+ '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 6.19.1
+ '@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 6.19.1
+ debug: 4.3.6
+ eslint: 8.56.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ semver: 7.6.3
+ ts-api-utils: 1.3.0(typescript@5.5.4)
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 6.20.0
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 6.20.0
+ debug: 4.3.6
+ eslint: 8.56.0
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@6.19.1':
+ dependencies:
+ '@typescript-eslint/types': 6.19.1
+ '@typescript-eslint/visitor-keys': 6.19.1
+
+ '@typescript-eslint/scope-manager@6.20.0':
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/visitor-keys': 6.20.0
+
+ '@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.5.4)
+ '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.5.4)
+ debug: 4.3.6
+ eslint: 8.56.0
+ ts-api-utils: 1.3.0(typescript@5.5.4)
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@6.19.1': {}
+
+ '@typescript-eslint/types@6.20.0': {}
+
+ '@typescript-eslint/typescript-estree@6.19.1(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/types': 6.19.1
+ '@typescript-eslint/visitor-keys': 6.19.1
+ debug: 4.3.6
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.3
+ semver: 7.6.3
+ ts-api-utils: 1.3.0(typescript@5.5.4)
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@6.20.0(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/visitor-keys': 6.20.0
+ debug: 4.3.6
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.3
+ semver: 7.6.3
+ ts-api-utils: 1.3.0(typescript@5.5.4)
+ optionalDependencies:
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.5.4)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 6.19.1
+ '@typescript-eslint/types': 6.19.1
+ '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.5.4)
+ eslint: 8.56.0
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@6.19.1':
+ dependencies:
+ '@typescript-eslint/types': 6.19.1
+ eslint-visitor-keys: 3.4.3
+
+ '@typescript-eslint/visitor-keys@6.20.0':
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ eslint-visitor-keys: 3.4.3
+
+ '@uiw/codemirror-extensions-color@4.23.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)':
+ dependencies:
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+ colors-named: 1.0.2
+ colors-named-hex: 1.0.2
+ hsl-matcher: 1.2.4
+
+ '@uiw/codemirror-themes@4.23.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.33.0)':
+ dependencies:
+ '@codemirror/language': 6.10.2
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.33.0
+
+ '@ungap/structured-clone@1.2.0': {}
+
+ '@vitejs/plugin-vue@5.1.3(vite@5.4.3(@types/node@20.8.10)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ vite: 5.4.3(@types/node@20.8.10)(terser@5.31.6)
+ vue: 3.5.0(typescript@5.5.4)
+
+ '@volar/language-core@2.4.1':
+ dependencies:
+ '@volar/source-map': 2.4.1
+
+ '@volar/source-map@2.4.1': {}
+
+ '@volar/typescript@2.4.1':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ path-browserify: 1.0.1
+ vscode-uri: 3.0.8
+
+ '@vue/compiler-core@3.5.0':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/shared': 3.5.0
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.0
+
+ '@vue/compiler-dom@3.5.0':
+ dependencies:
+ '@vue/compiler-core': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/compiler-sfc@3.5.0':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/compiler-core': 3.5.0
+ '@vue/compiler-dom': 3.5.0
+ '@vue/compiler-ssr': 3.5.0
+ '@vue/shared': 3.5.0
+ estree-walker: 2.0.2
+ magic-string: 0.30.11
+ postcss: 8.4.44
+ source-map-js: 1.2.0
+
+ '@vue/compiler-ssr@3.5.0':
+ dependencies:
+ '@vue/compiler-dom': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/compiler-vue2@2.7.16':
+ dependencies:
+ de-indent: 1.0.2
+ he: 1.2.0
+
+ '@vue/eslint-config-airbnb@8.0.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint-plugin-vue@9.28.0(eslint@8.56.0))(eslint@8.56.0)':
+ dependencies:
+ eslint: 8.56.0
+ eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
+ eslint-import-resolver-custom-alias: 1.3.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0))
+ eslint-import-resolver-node: 0.3.9
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ eslint-plugin-jsx-a11y: 6.9.0(eslint@8.56.0)
+ eslint-plugin-react: 7.35.2(eslint@8.56.0)
+ eslint-plugin-vue: 9.28.0(eslint@8.56.0)
+ eslint-plugin-vuejs-accessibility: 2.4.1(eslint@8.56.0)
+ vue-eslint-parser: 9.4.3(eslint@8.56.0)
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ '@vue/language-core@2.1.4(typescript@5.5.4)':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ '@vue/compiler-dom': 3.5.0
+ '@vue/compiler-vue2': 2.7.16
+ '@vue/shared': 3.5.0
+ computeds: 0.0.1
+ minimatch: 9.0.5
+ muggle-string: 0.4.1
+ path-browserify: 1.0.1
+ optionalDependencies:
+ typescript: 5.5.4
+
+ '@vue/reactivity@3.5.0':
+ dependencies:
+ '@vue/shared': 3.5.0
+
+ '@vue/runtime-core@3.5.0':
+ dependencies:
+ '@vue/reactivity': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/runtime-dom@3.5.0':
+ dependencies:
+ '@vue/reactivity': 3.5.0
+ '@vue/runtime-core': 3.5.0
+ '@vue/shared': 3.5.0
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.0(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.0
+ '@vue/shared': 3.5.0
+ vue: 3.5.0(typescript@5.5.4)
+
+ '@vue/shared@3.5.0': {}
+
+ '@vueuse/core@10.11.1(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 10.11.1
+ '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4))
+ vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/metadata@10.11.1': {}
+
+ '@vueuse/motion@2.2.3(rollup@4.3.0)(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@vueuse/core': 10.11.1(vue@3.5.0(typescript@5.5.4))
+ '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4))
+ csstype: 3.1.3
+ framesync: 6.1.2
+ popmotion: 11.0.5
+ style-value-types: 5.1.2
+ vue: 3.5.0(typescript@5.5.4)
+ optionalDependencies:
+ '@nuxt/kit': 3.13.0(rollup@4.3.0)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - magicast
+ - rollup
+ - supports-color
+
+ '@vueuse/shared@10.11.1(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@webassemblyjs/ast@1.12.1':
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+
+ '@webassemblyjs/floating-point-hex-parser@1.11.6': {}
+
+ '@webassemblyjs/helper-api-error@1.11.6': {}
+
+ '@webassemblyjs/helper-buffer@1.12.1': {}
+
+ '@webassemblyjs/helper-numbers@1.11.6':
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.11.6
+ '@webassemblyjs/helper-api-error': 1.11.6
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/helper-wasm-bytecode@1.11.6': {}
+
+ '@webassemblyjs/helper-wasm-section@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/helper-buffer': 1.12.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/wasm-gen': 1.12.1
+
+ '@webassemblyjs/ieee754@1.11.6':
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ '@webassemblyjs/leb128@1.11.6':
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/utf8@1.11.6': {}
+
+ '@webassemblyjs/wasm-edit@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/helper-buffer': 1.12.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/helper-wasm-section': 1.12.1
+ '@webassemblyjs/wasm-gen': 1.12.1
+ '@webassemblyjs/wasm-opt': 1.12.1
+ '@webassemblyjs/wasm-parser': 1.12.1
+ '@webassemblyjs/wast-printer': 1.12.1
+
+ '@webassemblyjs/wasm-gen@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/ieee754': 1.11.6
+ '@webassemblyjs/leb128': 1.11.6
+ '@webassemblyjs/utf8': 1.11.6
+
+ '@webassemblyjs/wasm-opt@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/helper-buffer': 1.12.1
+ '@webassemblyjs/wasm-gen': 1.12.1
+ '@webassemblyjs/wasm-parser': 1.12.1
+
+ '@webassemblyjs/wasm-parser@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/helper-api-error': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/ieee754': 1.11.6
+ '@webassemblyjs/leb128': 1.11.6
+ '@webassemblyjs/utf8': 1.11.6
+
+ '@webassemblyjs/wast-printer@1.12.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.12.1
+ '@xtuc/long': 4.2.2
+
+ '@xtuc/ieee754@1.2.0': {}
+
+ '@xtuc/long@4.2.2': {}
+
+ JSONStream@1.3.5:
+ dependencies:
+ jsonparse: 1.3.1
+ through: 2.3.8
+
+ acorn-import-attributes@1.9.5(acorn@8.12.1):
+ dependencies:
+ acorn: 8.12.1
+
+ acorn-jsx@5.3.2(acorn@8.12.1):
+ dependencies:
+ acorn: 8.12.1
+
+ acorn@8.12.1: {}
+
+ agent-base@7.1.1:
+ dependencies:
+ debug: 4.3.6
+ transitivePeerDependencies:
+ - supports-color
+
+ ajv-keywords@3.5.2(ajv@6.12.6):
+ dependencies:
+ ajv: 6.12.6
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.0.1
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-escapes@7.0.0:
+ dependencies:
+ environment: 1.1.0
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ any-promise@1.3.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ archiver-utils@4.0.1:
+ dependencies:
+ glob: 8.1.0
+ graceful-fs: 4.2.11
+ lazystream: 1.0.1
+ lodash: 4.17.21
+ normalize-path: 3.0.0
+ readable-stream: 3.6.2
+
+ archiver@6.0.2:
+ dependencies:
+ archiver-utils: 4.0.1
+ async: 3.2.6
+ buffer-crc32: 0.2.13
+ readable-stream: 3.6.2
+ readdir-glob: 1.1.3
+ tar-stream: 3.1.7
+ zip-stream: 5.0.2
+
+ arg@5.0.2: {}
+
+ argparse@2.0.1: {}
+
+ aria-hidden@1.2.4:
+ dependencies:
+ tslib: 2.6.2
+
+ aria-query@5.1.3:
+ dependencies:
+ deep-equal: 2.2.3
+
+ aria-query@5.3.0:
+ dependencies:
+ dequal: 2.0.3
+
+ array-buffer-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
+
+ array-ify@1.0.0: {}
+
+ array-includes@3.1.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ is-string: 1.0.7
+
+ array-union@2.1.0: {}
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.findlastindex@1.2.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flat@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flatmap@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+
+ arraybuffer.prototype.slice@1.0.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
+
+ arrify@1.0.1: {}
+
+ asn1@0.2.6:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ assert-plus@1.0.0: {}
+
+ ast-types-flow@0.0.8: {}
+
+ async@3.2.6: {}
+
+ asynckit@0.4.0: {}
+
+ autoprefixer@10.4.20(postcss@8.4.44):
+ dependencies:
+ browserslist: 4.23.3
+ caniuse-lite: 1.0.30001655
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.1.0
+ postcss: 8.4.44
+ postcss-value-parser: 4.2.0
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
+ aws-sign2@0.7.0: {}
+
+ aws4@1.13.2: {}
+
+ axe-core@4.10.0: {}
+
+ axobject-query@3.1.1:
+ dependencies:
+ deep-equal: 2.2.3
+
+ b4a@1.6.6: {}
+
+ balanced-match@1.0.2: {}
+
+ bare-events@2.4.2:
+ optional: true
+
+ bcrypt-pbkdf@1.0.2:
+ dependencies:
+ tweetnacl: 0.14.5
+
+ binary-extensions@2.3.0: {}
+
+ boolbase@1.0.0: {}
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.23.3:
+ dependencies:
+ caniuse-lite: 1.0.30001655
+ electron-to-chromium: 1.5.13
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.0(browserslist@4.23.3)
+
+ buffer-crc32@0.2.13: {}
+
+ buffer-from@1.1.2: {}
+
+ c12@1.11.2:
+ dependencies:
+ chokidar: 3.6.0
+ confbox: 0.1.7
+ defu: 6.1.4
+ dotenv: 16.4.5
+ giget: 1.2.3
+ jiti: 1.21.6
+ mlly: 1.7.1
+ ohash: 1.1.3
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.2.0
+ rc9: 2.1.2
+ optional: true
+
+ call-bind@1.0.7:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
+
+ callsites@3.1.0: {}
+
+ camelcase-css@2.0.1: {}
+
+ camelcase-keys@6.2.2:
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+
+ camelcase@5.3.1: {}
+
+ caniuse-lite@1.0.30001655: {}
+
+ caseless@0.12.0: {}
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.3.0: {}
+
+ chokidar@3.5.3:
+ 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
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chokidar@3.6.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
+ optionalDependencies:
+ fsevents: 2.3.3
+ optional: true
+
+ chownr@2.0.0:
+ optional: true
+
+ chrome-trace-event@1.0.4: {}
+
+ citty@0.1.6:
+ dependencies:
+ consola: 3.2.3
+ optional: true
+
+ class-variance-authority@0.7.0:
+ dependencies:
+ clsx: 2.0.0
+
+ cli-cursor@5.0.0:
+ dependencies:
+ restore-cursor: 5.1.0
+
+ cli-truncate@4.0.0:
+ dependencies:
+ slice-ansi: 5.0.0
+ string-width: 7.2.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clsx@2.0.0: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ color2k@2.0.3: {}
+
+ colorette@2.0.20: {}
+
+ colors-named-hex@1.0.2: {}
+
+ colors-named@1.0.2: {}
+
+ colorthief@2.4.0:
+ dependencies:
+ '@lokesh.dhakar/quantize': 1.3.0
+ get-pixels: 3.3.3
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@11.1.0: {}
+
+ commander@2.20.3: {}
+
+ commander@4.1.1: {}
+
+ compare-func@2.0.0:
+ dependencies:
+ array-ify: 1.0.0
+ dot-prop: 5.3.0
+
+ compatx@0.1.8:
+ optional: true
+
+ compress-commons@5.0.3:
+ dependencies:
+ crc-32: 1.2.2
+ crc32-stream: 5.0.1
+ normalize-path: 3.0.0
+ readable-stream: 3.6.2
+
+ computeds@0.0.1: {}
+
+ concat-map@0.0.1: {}
+
+ confbox@0.1.7:
+ optional: true
+
+ confusing-browser-globals@1.0.11: {}
+
+ consola@3.2.3:
+ optional: true
+
+ conventional-changelog-angular@7.0.0:
+ dependencies:
+ compare-func: 2.0.0
+
+ conventional-changelog-conventionalcommits@7.0.2:
+ dependencies:
+ compare-func: 2.0.0
+
+ conventional-commits-parser@5.0.0:
+ dependencies:
+ JSONStream: 1.3.5
+ is-text-path: 2.0.0
+ meow: 12.1.1
+ split2: 4.2.0
+
+ convert-source-map@2.0.0:
+ optional: true
+
+ core-util-is@1.0.2: {}
+
+ core-util-is@1.0.3: {}
+
+ cosmiconfig-typescript-loader@5.0.0(@types/node@20.8.10)(cosmiconfig@8.3.6(typescript@5.5.4))(typescript@5.5.4):
+ dependencies:
+ '@types/node': 20.8.10
+ cosmiconfig: 8.3.6(typescript@5.5.4)
+ jiti: 1.21.6
+ typescript: 5.5.4
+
+ cosmiconfig@8.3.6(typescript@5.5.4):
+ dependencies:
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ optionalDependencies:
+ typescript: 5.5.4
+
+ crc-32@1.2.2: {}
+
+ crc32-stream@5.0.1:
+ dependencies:
+ crc-32: 1.2.2
+ readable-stream: 3.6.2
+
+ crelt@1.0.6: {}
+
+ cross-env@7.0.3:
+ dependencies:
+ cross-spawn: 7.0.3
+
+ cross-spawn@6.0.5:
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.2
+ shebang-command: 1.2.0
+ which: 1.3.1
+
+ cross-spawn@7.0.3:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-tree@2.3.1:
+ dependencies:
+ mdn-data: 2.0.30
+ source-map-js: 1.2.0
+
+ cssesc@3.0.0: {}
+
+ cssstyle@4.0.1:
+ dependencies:
+ rrweb-cssom: 0.6.0
+
+ csstype@3.1.3: {}
+
+ cwise-compiler@1.1.3:
+ dependencies:
+ uniq: 1.0.1
+
+ damerau-levenshtein@1.0.8: {}
+
+ dargs@7.0.0: {}
+
+ dashdash@1.14.1:
+ dependencies:
+ assert-plus: 1.0.0
+
+ data-uri-to-buffer@0.0.3: {}
+
+ data-urls@5.0.0:
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+
+ data-view-buffer@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-offset@1.0.0:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ de-indent@1.0.2: {}
+
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.3
+
+ debug@4.3.4:
+ dependencies:
+ ms: 2.1.2
+
+ debug@4.3.6:
+ dependencies:
+ ms: 2.1.2
+
+ decamelize-keys@1.1.1:
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+
+ decamelize@1.2.0: {}
+
+ decimal.js@10.4.3: {}
+
+ deep-equal@2.2.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ es-get-iterator: 1.1.3
+ get-intrinsic: 1.2.4
+ is-arguments: 1.1.1
+ is-array-buffer: 3.0.4
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ isarray: 2.0.5
+ object-is: 1.1.6
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ side-channel: 1.0.6
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.2
+ which-typed-array: 1.1.15
+
+ deep-is@0.1.4: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ defu@6.1.4: {}
+
+ delayed-stream@1.0.0: {}
+
+ dequal@2.0.3: {}
+
+ destr@2.0.3:
+ optional: true
+
+ didyoumean@1.2.2: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ dlv@1.1.3: {}
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dot-prop@5.3.0:
+ dependencies:
+ is-obj: 2.0.0
+
+ dotenv@16.4.5:
+ optional: true
+
+ eastasianwidth@0.2.0: {}
+
+ ecc-jsbn@0.1.2:
+ dependencies:
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+
+ electron-to-chromium@1.5.13: {}
+
+ emoji-regex@10.4.0: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ enhanced-resolve@5.17.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
+ entities@4.5.0: {}
+
+ environment@1.1.0: {}
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-abstract@1.23.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ data-view-buffer: 1.0.1
+ data-view-byte-length: 1.0.1
+ data-view-byte-offset: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.0.3
+ es-to-primitive: 1.2.1
+ function.prototype.name: 1.1.6
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
+ globalthis: 1.0.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
+ is-callable: 1.2.7
+ is-data-view: 1.0.1
+ is-negative-zero: 2.0.3
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ is-string: 1.0.7
+ is-typed-array: 1.1.13
+ is-weakref: 1.0.2
+ object-inspect: 1.13.2
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.2
+ typed-array-byte-length: 1.0.1
+ typed-array-byte-offset: 1.0.2
+ typed-array-length: 1.0.6
+ unbox-primitive: 1.0.2
+ which-typed-array: 1.1.15
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ es-get-iterator@1.1.3:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ is-arguments: 1.1.1
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-string: 1.0.7
+ isarray: 2.0.5
+ stop-iteration-iterator: 1.0.0
+
+ es-iterator-helpers@1.0.19:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.0.3
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.4
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ iterator.prototype: 1.1.2
+ safe-array-concat: 1.1.2
+
+ es-module-lexer@1.5.4: {}
+
+ es-object-atoms@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.0.3:
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-shim-unscopables@1.0.2:
+ dependencies:
+ hasown: 2.0.2
+
+ es-to-primitive@1.2.1:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+
+ 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
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ escape-string-regexp@5.0.0:
+ optional: true
+
+ eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
+ dependencies:
+ confusing-browser-globals: 1.0.11
+ eslint: 8.56.0
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ object.assign: 4.1.5
+ object.entries: 1.1.8
+ semver: 6.3.1
+
+ eslint-config-prettier@9.0.0(eslint@8.56.0):
+ dependencies:
+ eslint: 8.56.0
+
+ eslint-import-resolver-custom-alias@1.3.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)):
+ dependencies:
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ glob-parent: 6.0.2
+ resolve: 1.22.8
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.15.1
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0):
+ dependencies:
+ '@nolyfill/is-core-module': 1.0.39
+ debug: 4.3.6
+ enhanced-resolve: 5.17.1
+ eslint: 8.56.0
+ eslint-module-utils: 2.9.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ fast-glob: 3.3.2
+ get-tsconfig: 4.8.0
+ is-bun-module: 1.1.0
+ is-glob: 4.0.3
+ optionalDependencies:
+ eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.56.0)
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-node
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-module-utils@2.9.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.5.4)
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.56.0):
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.9.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ hasown: 2.0.2
+ is-core-module: 2.15.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.0
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.5.4)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0):
+ dependencies:
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.9.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.5.4))(eslint-plugin-import@2.29.0)(eslint@8.56.0))(eslint@8.56.0)
+ hasown: 2.0.2
+ is-core-module: 2.15.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.0
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.5.4)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-jsx-a11y@6.9.0(eslint@8.56.0):
+ dependencies:
+ aria-query: 5.1.3
+ array-includes: 3.1.8
+ array.prototype.flatmap: 1.3.2
+ ast-types-flow: 0.0.8
+ axe-core: 4.10.0
+ axobject-query: 3.1.1
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ es-iterator-helpers: 1.0.19
+ eslint: 8.56.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ safe-regex-test: 1.0.3
+ string.prototype.includes: 2.0.0
+
+ eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.1.0):
+ dependencies:
+ eslint: 8.56.0
+ prettier: 3.1.0
+ prettier-linter-helpers: 1.0.0
+ synckit: 0.8.8
+ optionalDependencies:
+ eslint-config-prettier: 9.0.0(eslint@8.56.0)
+
+ eslint-plugin-react@7.35.2(eslint@8.56.0):
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.2
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.0.19
+ eslint: 8.56.0
+ estraverse: 5.3.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.8
+ object.fromentries: 2.0.8
+ object.values: 1.2.0
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.5
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.11
+ string.prototype.repeat: 1.0.0
+
+ eslint-plugin-vue@9.28.0(eslint@8.56.0):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ eslint: 8.56.0
+ globals: 13.24.0
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 6.1.2
+ semver: 7.6.3
+ vue-eslint-parser: 9.4.3(eslint@8.56.0)
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-vuejs-accessibility@2.4.1(eslint@8.56.0):
+ dependencies:
+ aria-query: 5.3.0
+ emoji-regex: 10.4.0
+ eslint: 8.56.0
+ vue-eslint-parser: 9.4.3(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.56.0:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@eslint-community/regexpp': 4.11.0
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.56.0
+ '@humanwhocodes/config-array': 0.11.14
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.2.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.6
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
+ eslint-visitor-keys: 3.4.3
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.5
+ optional: true
+
+ esutils@2.0.3: {}
+
+ eventemitter3@5.0.1: {}
+
+ events@3.3.0: {}
+
+ execa@5.1.1:
+ 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
+
+ execa@8.0.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
+
+ extend@3.0.2: {}
+
+ extsprintf@1.3.0: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-diff@1.3.0: {}
+
+ fast-fifo@1.3.2: {}
+
+ 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
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-uri@3.0.1: {}
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ file-saver@2.0.5: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.1
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flatted@3.3.1: {}
+
+ for-each@0.3.3:
+ dependencies:
+ is-callable: 1.2.7
+
+ foreground-child@3.3.0:
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+
+ forever-agent@0.6.1: {}
+
+ form-data@2.3.3:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ form-data@4.0.0:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ fraction.js@4.3.7: {}
+
+ framesync@6.1.2:
+ dependencies:
+ tslib: 2.4.0
+
+ fs-extra@11.1.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+ optional: true
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ functions-have-names: 1.2.3
+
+ functions-have-names@1.2.3: {}
+
+ gensync@1.0.0-beta.2:
+ optional: true
+
+ get-caller-file@2.0.5: {}
+
+ get-east-asian-width@1.2.0: {}
+
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+
+ get-pixels@3.3.3:
+ dependencies:
+ data-uri-to-buffer: 0.0.3
+ jpeg-js: 0.4.4
+ mime-types: 2.1.35
+ ndarray: 1.0.19
+ ndarray-pack: 1.2.1
+ node-bitmap: 0.0.1
+ omggif: 1.0.10
+ parse-data-uri: 0.2.0
+ pngjs: 3.4.0
+ request: 2.88.2
+ through: 2.3.8
+
+ get-stream@6.0.1: {}
+
+ get-stream@8.0.1: {}
+
+ get-symbol-description@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+
+ get-tsconfig@4.8.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ getpass@0.1.7:
+ dependencies:
+ assert-plus: 1.0.0
+
+ giget@1.2.3:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.2.3
+ defu: 6.1.4
+ node-fetch-native: 1.6.4
+ nypm: 0.3.11
+ ohash: 1.1.3
+ pathe: 1.1.2
+ tar: 6.2.1
+ optional: true
+
+ git-raw-commits@2.0.11:
+ dependencies:
+ dargs: 7.0.0
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-to-regexp@0.4.1: {}
+
+ glob@10.4.5:
+ 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
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@8.1.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.6
+ once: 1.4.0
+
+ global-dirs@0.1.1:
+ dependencies:
+ ini: 1.3.8
+
+ globals@11.12.0:
+ optional: true
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.0.1
+
+ globby@11.1.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
+
+ globby@14.0.2:
+ dependencies:
+ '@sindresorhus/merge-streams': 2.3.0
+ fast-glob: 3.3.2
+ ignore: 5.3.2
+ path-type: 5.0.0
+ slash: 5.1.0
+ unicorn-magic: 0.1.0
+ optional: true
+
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ har-schema@2.0.0: {}
+
+ har-validator@5.1.5:
+ dependencies:
+ ajv: 6.12.6
+ har-schema: 2.0.0
+
+ hard-rejection@2.1.0: {}
+
+ has-bigints@1.0.2: {}
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.0
+
+ has-proto@1.0.3: {}
+
+ has-symbols@1.0.3: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.0.3
+
+ hash-sum@2.0.0:
+ optional: true
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0: {}
+
+ hey-listen@1.0.8: {}
+
+ hookable@5.5.3:
+ optional: true
+
+ hosted-git-info@2.8.9: {}
+
+ hosted-git-info@4.1.0:
+ dependencies:
+ lru-cache: 6.0.0
+
+ hsl-matcher@1.2.4: {}
+
+ html-encoding-sniffer@4.0.0:
+ dependencies:
+ whatwg-encoding: 3.1.1
+
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.6
+ transitivePeerDependencies:
+ - supports-color
+
+ http-signature@1.2.0:
+ dependencies:
+ assert-plus: 1.0.0
+ jsprim: 1.4.2
+ sshpk: 1.18.0
+
+ https-proxy-agent@7.0.5:
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.6
+ transitivePeerDependencies:
+ - supports-color
+
+ human-signals@2.1.0: {}
+
+ human-signals@5.0.0: {}
+
+ husky@8.0.3: {}
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ignore@5.3.2: {}
+
+ immediate@3.0.6: {}
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ internal-slot@1.0.7:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.0.6
+
+ iota-array@1.0.0: {}
+
+ is-arguments@1.1.1:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-array-buffer@3.0.4:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ is-arrayish@0.2.1: {}
+
+ is-async-function@2.0.0:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-bigint@1.0.4:
+ dependencies:
+ has-bigints: 1.0.2
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-boolean-object@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-buffer@1.1.6: {}
+
+ is-bun-module@1.1.0:
+ dependencies:
+ semver: 7.6.3
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.15.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-data-view@1.0.1:
+ dependencies:
+ is-typed-array: 1.1.13
+
+ is-date-object@1.0.5:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-fullwidth-code-point@4.0.0: {}
+
+ is-fullwidth-code-point@5.0.0:
+ dependencies:
+ get-east-asian-width: 1.2.0
+
+ is-generator-function@1.0.10:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-map@2.0.3: {}
+
+ is-negative-zero@2.0.3: {}
+
+ is-number-object@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-obj@2.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@1.1.0: {}
+
+ is-potential-custom-element-name@1.0.1: {}
+
+ is-regex@1.1.4:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-stream@2.0.1: {}
+
+ is-stream@3.0.0: {}
+
+ is-string@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.0.4:
+ dependencies:
+ has-symbols: 1.0.3
+
+ is-text-path@2.0.0:
+ dependencies:
+ text-extensions: 2.4.0
+
+ is-typed-array@1.1.13:
+ dependencies:
+ which-typed-array: 1.1.15
+
+ is-typedarray@1.0.0: {}
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-weakset@2.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ isstream@0.1.2: {}
+
+ iterator.prototype@1.1.2:
+ dependencies:
+ define-properties: 1.2.1
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ reflect.getprototypeof: 1.0.6
+ set-function-name: 2.0.2
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 20.8.10
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jiti@1.21.6: {}
+
+ jpeg-js@0.4.4: {}
+
+ js-tokens@4.0.0: {}
+
+ js-tokens@9.0.0:
+ optional: true
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsbn@0.1.1: {}
+
+ jsdom@24.1.3:
+ dependencies:
+ cssstyle: 4.0.1
+ data-urls: 5.0.0
+ decimal.js: 10.4.3
+ form-data: 4.0.0
+ html-encoding-sniffer: 4.0.0
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.5
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.12
+ parse5: 7.1.2
+ rrweb-cssom: 0.7.1
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.4
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 3.1.1
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+ ws: 8.18.0
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ jsesc@2.5.2:
+ optional: true
+
+ json-buffer@3.0.1: {}
+
+ json-parse-better-errors@1.0.2: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ json-schema@0.4.0: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json-stringify-safe@5.0.1: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+
+ json5@2.2.3:
+ optional: true
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsonparse@1.3.1: {}
+
+ jsprim@1.4.2:
+ dependencies:
+ assert-plus: 1.0.0
+ extsprintf: 1.3.0
+ json-schema: 0.4.0
+ verror: 1.10.0
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.flat: 1.3.2
+ object.assign: 4.1.5
+ object.values: 1.2.0
+
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kind-of@6.0.3: {}
+
+ klona@2.0.6:
+ optional: true
+
+ knitwork@1.1.0:
+ optional: true
+
+ language-subtag-registry@0.3.23: {}
+
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.23
+
+ lazystream@1.0.1:
+ dependencies:
+ readable-stream: 2.3.8
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
+ lilconfig@2.1.0: {}
+
+ lilconfig@3.0.0: {}
+
+ lilconfig@3.1.2: {}
+
+ lines-and-columns@1.2.4: {}
+
+ lint-staged@15.2.0:
+ dependencies:
+ chalk: 5.3.0
+ commander: 11.1.0
+ debug: 4.3.4
+ execa: 8.0.1
+ lilconfig: 3.0.0
+ listr2: 8.0.0
+ micromatch: 4.0.5
+ pidtree: 0.6.0
+ string-argv: 0.3.2
+ yaml: 2.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ listr2@8.0.0:
+ dependencies:
+ cli-truncate: 4.0.0
+ colorette: 2.0.20
+ eventemitter3: 5.0.1
+ log-update: 6.1.0
+ rfdc: 1.4.1
+ wrap-ansi: 9.0.0
+
+ load-json-file@4.0.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 4.0.0
+ pify: 3.0.0
+ strip-bom: 3.0.0
+
+ loader-runner@4.3.0: {}
+
+ local-pkg@0.5.0:
+ dependencies:
+ mlly: 1.7.1
+ pkg-types: 1.2.0
+ optional: true
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.camelcase@4.3.0: {}
+
+ lodash.isfunction@3.0.9: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.kebabcase@4.1.1: {}
+
+ lodash.merge@4.6.2: {}
+
+ lodash.mergewith@4.6.2: {}
+
+ lodash.snakecase@4.1.1: {}
+
+ lodash.startcase@4.4.0: {}
+
+ lodash.uniq@4.5.0: {}
+
+ lodash.upperfirst@4.3.1: {}
+
+ lodash@4.17.21: {}
+
+ log-update@6.1.0:
+ dependencies:
+ ansi-escapes: 7.0.0
+ cli-cursor: 5.0.0
+ slice-ansi: 7.1.0
+ strip-ansi: 7.1.0
+ wrap-ansi: 9.0.0
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+ optional: true
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ lucide-vue-next@0.321.0(vue@3.5.0(typescript@5.5.4)):
+ dependencies:
+ vue: 3.5.0(typescript@5.5.4)
+
+ magic-string@0.30.11:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ map-obj@1.0.1: {}
+
+ map-obj@4.3.0: {}
+
+ mdn-data@2.0.30: {}
+
+ memorystream@0.3.1: {}
+
+ meow@12.1.1: {}
+
+ meow@8.1.2:
+ dependencies:
+ '@types/minimist': 1.2.5
+ camelcase-keys: 6.2.2
+ decamelize-keys: 1.1.1
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 3.0.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.5:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mimic-fn@2.1.0: {}
+
+ mimic-fn@4.0.0: {}
+
+ mimic-function@5.0.1: {}
+
+ min-indent@1.0.1: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@9.0.3:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimist-options@4.1.0:
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+
+ minimist@1.2.8: {}
+
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+ optional: true
+
+ minipass@5.0.0:
+ optional: true
+
+ minipass@7.1.2: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+ optional: true
+
+ mitt@3.0.1: {}
+
+ mkdirp@1.0.4:
+ optional: true
+
+ mlly@1.7.1:
+ dependencies:
+ acorn: 8.12.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ ufo: 1.5.4
+ optional: true
+
+ mri@1.2.0:
+ optional: true
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ muggle-string@0.4.1: {}
+
+ mz@2.7.0:
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ nanoid@3.3.7: {}
+
+ nanoid@5.0.7: {}
+
+ natural-compare@1.4.0: {}
+
+ ndarray-pack@1.2.1:
+ dependencies:
+ cwise-compiler: 1.1.3
+ ndarray: 1.0.19
+
+ ndarray@1.0.19:
+ dependencies:
+ iota-array: 1.0.0
+ is-buffer: 1.1.6
+
+ neo-async@2.6.2: {}
+
+ nice-try@1.0.5: {}
+
+ node-bitmap@0.0.1: {}
+
+ node-fetch-native@1.6.4:
+ optional: true
+
+ node-releases@2.0.18: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.8
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-package-data@3.0.3:
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.15.1
+ semver: 7.6.3
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2: {}
+
+ npm-run-all@4.1.5:
+ dependencies:
+ ansi-styles: 3.2.1
+ chalk: 2.4.2
+ cross-spawn: 6.0.5
+ memorystream: 0.3.1
+ minimatch: 3.1.2
+ pidtree: 0.3.1
+ read-pkg: 3.0.0
+ shell-quote: 1.8.1
+ string.prototype.padend: 3.1.6
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
+ nwsapi@2.2.12: {}
+
+ nypm@0.3.11:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.2.3
+ execa: 8.0.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ ufo: 1.5.4
+ optional: true
+
+ oauth-sign@0.9.0: {}
+
+ object-assign@4.1.1: {}
+
+ object-hash@3.0.0: {}
+
+ object-inspect@1.13.2: {}
+
+ object-is@1.1.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+
+ object.entries@1.1.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+
+ object.values@1.2.0:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ ohash@1.1.3:
+ optional: true
+
+ omggif@1.0.10: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ onetime@7.0.0:
+ dependencies:
+ mimic-function: 5.0.1
+
+ 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
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-try@2.2.0: {}
+
+ package-json-from-dist@1.0.0: {}
+
+ pako@1.0.11: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-data-uri@0.2.0:
+ dependencies:
+ data-uri-to-buffer: 0.0.3
+
+ parse-json@4.0.0:
+ dependencies:
+ error-ex: 1.3.2
+ json-parse-better-errors: 1.0.2
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ parse5@7.1.2:
+ dependencies:
+ entities: 4.5.0
+
+ path-browserify@1.0.1: {}
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@2.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ path-type@3.0.0:
+ dependencies:
+ pify: 3.0.0
+
+ path-type@4.0.0: {}
+
+ path-type@5.0.0:
+ optional: true
+
+ pathe@1.1.2:
+ optional: true
+
+ perfect-debounce@1.0.0:
+ optional: true
+
+ performance-now@2.1.0: {}
+
+ picocolors@1.1.0: {}
+
+ picomatch@2.3.1: {}
+
+ pidtree@0.3.1: {}
+
+ pidtree@0.6.0: {}
+
+ pify@2.3.0: {}
+
+ pify@3.0.0: {}
+
+ pirates@4.0.6: {}
+
+ pkg-types@1.2.0:
+ dependencies:
+ confbox: 0.1.7
+ mlly: 1.7.1
+ pathe: 1.1.2
+ optional: true
+
+ pngjs@3.4.0: {}
+
+ popmotion@11.0.5:
+ dependencies:
+ framesync: 6.1.2
+ hey-listen: 1.0.8
+ style-value-types: 5.1.2
+ tslib: 2.4.0
+
+ possible-typed-array-names@1.0.0: {}
+
+ postcss-import@15.1.0(postcss@8.4.44):
+ dependencies:
+ postcss: 8.4.44
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.8
+
+ postcss-js@4.0.1(postcss@8.4.44):
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.44
+
+ postcss-load-config@4.0.2(postcss@8.4.44):
+ dependencies:
+ lilconfig: 3.1.2
+ yaml: 2.5.1
+ optionalDependencies:
+ postcss: 8.4.44
+
+ postcss-nested@6.2.0(postcss@8.4.44):
+ dependencies:
+ postcss: 8.4.44
+ postcss-selector-parser: 6.1.2
+
+ postcss-selector-parser@6.1.2:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.4.44:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.0
+ source-map-js: 1.2.0
+
+ prelude-ls@1.2.1: {}
+
+ prettier-linter-helpers@1.0.0:
+ dependencies:
+ fast-diff: 1.3.0
+
+ prettier@3.1.0: {}
+
+ process-nextick-args@2.0.1: {}
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ psl@1.9.0: {}
+
+ punycode@2.3.1: {}
+
+ qs@6.5.3: {}
+
+ querystringify@2.2.0: {}
+
+ queue-microtask@1.2.3: {}
+
+ queue-tick@1.0.1: {}
+
+ quick-lru@4.0.1: {}
+
+ radix-vue@1.9.5(vue@3.5.0(typescript@5.5.4)):
+ dependencies:
+ '@floating-ui/dom': 1.6.10
+ '@floating-ui/vue': 1.1.4(vue@3.5.0(typescript@5.5.4))
+ '@internationalized/date': 3.5.5
+ '@internationalized/number': 3.5.3
+ '@tanstack/vue-virtual': 3.10.6(vue@3.5.0(typescript@5.5.4))
+ '@vueuse/core': 10.11.1(vue@3.5.0(typescript@5.5.4))
+ '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4))
+ aria-hidden: 1.2.4
+ defu: 6.1.4
+ fast-deep-equal: 3.1.3
+ nanoid: 5.0.7
+ vue: 3.5.0(typescript@5.5.4)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ rc9@2.1.2:
+ dependencies:
+ defu: 6.1.4
+ destr: 2.0.3
+ optional: true
+
+ react-is@16.13.1: {}
+
+ read-cache@1.0.0:
+ dependencies:
+ pify: 2.3.0
+
+ read-pkg-up@7.0.1:
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+
+ read-pkg@3.0.0:
+ dependencies:
+ load-json-file: 4.0.0
+ normalize-package-data: 2.5.0
+ path-type: 3.0.0
+
+ read-pkg@5.2.0:
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdir-glob@1.1.3:
+ dependencies:
+ minimatch: 5.1.6
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ redent@3.0.0:
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+
+ reflect.getprototypeof@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.4
+ which-builtin-type: 1.1.4
+
+ regexp.prototype.flags@1.5.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
+
+ request@2.88.2:
+ dependencies:
+ aws-sign2: 0.7.0
+ aws4: 1.13.2
+ caseless: 0.12.0
+ combined-stream: 1.0.8
+ extend: 3.0.2
+ forever-agent: 0.6.1
+ form-data: 2.3.3
+ har-validator: 5.1.5
+ http-signature: 1.2.0
+ is-typedarray: 1.0.0
+ isstream: 0.1.2
+ json-stringify-safe: 5.0.1
+ mime-types: 2.1.35
+ oauth-sign: 0.9.0
+ performance-now: 2.1.0
+ qs: 6.5.3
+ safe-buffer: 5.2.1
+ tough-cookie: 2.5.0
+ tunnel-agent: 0.6.0
+ uuid: 3.4.0
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
+ requires-port@1.0.0: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-from@5.0.0: {}
+
+ resolve-global@1.0.0:
+ dependencies:
+ global-dirs: 0.1.1
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.5:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@5.1.0:
+ dependencies:
+ onetime: 7.0.0
+ signal-exit: 4.1.0
+
+ reusify@1.0.4: {}
+
+ rfdc@1.4.1: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ 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
+
+ rollup@4.3.0:
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.3.0
+ '@rollup/rollup-android-arm64': 4.3.0
+ '@rollup/rollup-darwin-arm64': 4.3.0
+ '@rollup/rollup-darwin-x64': 4.3.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.3.0
+ '@rollup/rollup-linux-arm64-gnu': 4.3.0
+ '@rollup/rollup-linux-arm64-musl': 4.3.0
+ '@rollup/rollup-linux-x64-gnu': 4.3.0
+ '@rollup/rollup-linux-x64-musl': 4.3.0
+ '@rollup/rollup-win32-arm64-msvc': 4.3.0
+ '@rollup/rollup-win32-ia32-msvc': 4.3.0
+ '@rollup/rollup-win32-x64-msvc': 4.3.0
+ fsevents: 2.3.3
+
+ rrweb-cssom@0.6.0: {}
+
+ rrweb-cssom@0.7.1: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ safe-array-concat@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-regex-test@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-regex: 1.1.4
+
+ safer-buffer@2.1.2: {}
+
+ saxes@6.0.0:
+ dependencies:
+ xmlchars: 2.2.0
+
+ schema-utils@3.3.0:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2(ajv@6.12.6)
+
+ scule@1.3.0:
+ optional: true
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.6.0:
+ dependencies:
+ lru-cache: 6.0.0
+
+ semver@7.6.3: {}
+
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ setimmediate@1.0.5: {}
+
+ shebang-command@1.2.0:
+ dependencies:
+ shebang-regex: 1.0.0
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@1.0.0: {}
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.8.1: {}
+
+ side-channel@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.2
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
+ slash@3.0.0: {}
+
+ slash@5.1.0:
+ optional: true
+
+ slice-ansi@5.0.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ is-fullwidth-code-point: 4.0.0
+
+ slice-ansi@7.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ is-fullwidth-code-point: 5.0.0
+
+ source-map-js@1.2.0: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.4: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.20
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.20
+
+ spdx-license-ids@3.0.20: {}
+
+ specificity@1.0.0:
+ dependencies:
+ css-tree: 2.3.1
+
+ split2@3.2.2:
+ dependencies:
+ readable-stream: 3.6.2
+
+ split2@4.2.0: {}
+
+ sshpk@1.18.0:
+ dependencies:
+ asn1: 0.2.6
+ assert-plus: 1.0.0
+ bcrypt-pbkdf: 1.0.2
+ dashdash: 1.14.1
+ ecc-jsbn: 0.1.2
+ getpass: 0.1.7
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+ tweetnacl: 0.14.5
+
+ std-env@3.7.0:
+ optional: true
+
+ stop-iteration-iterator@1.0.0:
+ dependencies:
+ internal-slot: 1.0.7
+
+ streamx@2.20.0:
+ dependencies:
+ fast-fifo: 1.3.2
+ queue-tick: 1.0.1
+ text-decoder: 1.1.1
+ optionalDependencies:
+ bare-events: 2.4.2
+
+ 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
+
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.4.0
+ get-east-asian-width: 1.2.0
+ strip-ansi: 7.1.0
+
+ string.prototype.includes@2.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+
+ string.prototype.matchall@4.0.11:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ regexp.prototype.flags: 1.5.2
+ set-function-name: 2.0.2
+ side-channel: 1.0.6
+
+ string.prototype.padend@3.1.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+
+ string.prototype.trim@1.2.9:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+
+ string.prototype.trimend@1.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.0.1
+
+ strip-bom@3.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-final-newline@3.0.0: {}
+
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
+ strip-json-comments@3.1.1: {}
+
+ strip-literal@2.1.0:
+ dependencies:
+ js-tokens: 9.0.0
+ optional: true
+
+ style-mod@4.1.2: {}
+
+ style-value-types@5.1.2:
+ dependencies:
+ hey-listen: 1.0.8
+ tslib: 2.4.0
+
+ 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:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ symbol-tree@3.2.4: {}
+
+ synckit@0.8.8:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.6.2
+
+ tailwindcss@3.4.10:
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.5.3
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.2
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.6
+ lilconfig: 2.1.0
+ micromatch: 4.0.8
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.1.0
+ postcss: 8.4.44
+ postcss-import: 15.1.0(postcss@8.4.44)
+ postcss-js: 4.0.1(postcss@8.4.44)
+ postcss-load-config: 4.0.2(postcss@8.4.44)
+ postcss-nested: 6.2.0(postcss@8.4.44)
+ postcss-selector-parser: 6.1.2
+ resolve: 1.22.8
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+
+ tapable@2.2.1: {}
+
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.6.6
+ fast-fifo: 1.3.2
+ streamx: 2.20.0
+
+ tar@6.2.1:
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+ optional: true
+
+ terser-webpack-plugin@5.3.10(webpack@5.94.0):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 3.3.0
+ serialize-javascript: 6.0.2
+ terser: 5.31.6
+ webpack: 5.94.0
+
+ terser@5.31.6:
+ dependencies:
+ '@jridgewell/source-map': 0.3.6
+ acorn: 8.12.1
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ text-decoder@1.1.1:
+ dependencies:
+ b4a: 1.6.6
+
+ text-extensions@2.4.0: {}
+
+ text-table@0.2.0: {}
+
+ thenify-all@1.6.0:
+ dependencies:
+ thenify: 3.3.1
+
+ thenify@3.3.1:
+ dependencies:
+ any-promise: 1.3.0
+
+ through2@4.0.2:
+ dependencies:
+ readable-stream: 3.6.2
+
+ through@2.3.8: {}
+
+ to-fast-properties@2.0.0: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ tough-cookie@2.5.0:
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+
+ tough-cookie@4.1.4:
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+
+ tr46@5.0.0:
+ dependencies:
+ punycode: 2.3.1
+
+ trim-newlines@3.0.1: {}
+
+ ts-api-utils@1.3.0(typescript@5.5.4):
+ dependencies:
+ typescript: 5.5.4
+
+ ts-interface-checker@0.1.13: {}
+
+ ts-loader@9.5.0(typescript@5.5.4)(webpack@5.94.0):
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.17.1
+ micromatch: 4.0.8
+ semver: 7.6.3
+ source-map: 0.7.4
+ typescript: 5.5.4
+ webpack: 5.94.0
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@2.4.0: {}
+
+ tslib@2.6.2: {}
+
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ tweetnacl@0.14.5: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@0.18.1: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.6.0: {}
+
+ type-fest@0.8.1: {}
+
+ type-fest@4.26.0: {}
+
+ typed-array-buffer@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-typed-array: 1.1.13
+
+ typed-array-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+
+ typed-array-byte-offset@1.0.2:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+
+ typed-array-length@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+ possible-typed-array-names: 1.0.0
+
+ typescript@5.5.4: {}
+
+ ufo@1.5.4:
+ optional: true
+
+ unbox-primitive@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+
+ uncrypto@0.1.3:
+ optional: true
+
+ unctx@2.3.1:
+ dependencies:
+ acorn: 8.12.1
+ estree-walker: 3.0.3
+ magic-string: 0.30.11
+ unplugin: 1.12.3
+ optional: true
+
+ undici-types@5.26.5: {}
+
+ unicorn-magic@0.1.0:
+ optional: true
+
+ unimport@3.11.1(rollup@4.3.0):
+ dependencies:
+ '@rollup/pluginutils': 5.1.0(rollup@4.3.0)
+ acorn: 8.12.1
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ fast-glob: 3.3.2
+ local-pkg: 0.5.0
+ magic-string: 0.30.11
+ mlly: 1.7.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ scule: 1.3.0
+ strip-literal: 2.1.0
+ unplugin: 1.12.3
+ transitivePeerDependencies:
+ - rollup
+ optional: true
+
+ uniq@1.0.1: {}
+
+ universalify@0.2.0: {}
+
+ universalify@2.0.1: {}
+
+ unplugin@1.12.3:
+ dependencies:
+ acorn: 8.12.1
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.6.2
+ optional: true
+
+ untyped@1.4.2:
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/standalone': 7.25.6
+ '@babel/types': 7.25.6
+ defu: 6.1.4
+ jiti: 1.21.6
+ mri: 1.2.0
+ scule: 1.3.0
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ update-browserslist-db@1.1.0(browserslist@4.23.3):
+ dependencies:
+ browserslist: 4.23.3
+ escalade: 3.2.0
+ picocolors: 1.1.0
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
+ util-deprecate@1.0.2: {}
+
+ uuid@3.4.0: {}
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ verror@1.10.0:
+ dependencies:
+ assert-plus: 1.0.0
+ core-util-is: 1.0.2
+ extsprintf: 1.3.0
+
+ vite@5.4.3(@types/node@20.8.10)(terser@5.31.6):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.44
+ rollup: 4.21.2
+ optionalDependencies:
+ '@types/node': 20.8.10
+ fsevents: 2.3.3
+ terser: 5.31.6
+
+ vscode-uri@3.0.8: {}
+
+ vue-demi@0.14.10(vue@3.5.0(typescript@5.5.4)):
+ dependencies:
+ vue: 3.5.0(typescript@5.5.4)
+
+ vue-eslint-parser@9.4.3(eslint@8.56.0):
+ dependencies:
+ debug: 4.3.6
+ eslint: 8.56.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ lodash: 4.17.21
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ vue-tsc@2.1.4(typescript@5.5.4):
+ dependencies:
+ '@volar/typescript': 2.4.1
+ '@vue/language-core': 2.1.4(typescript@5.5.4)
+ semver: 7.6.3
+ typescript: 5.5.4
+
+ vue@3.5.0(typescript@5.5.4):
+ dependencies:
+ '@vue/compiler-dom': 3.5.0
+ '@vue/compiler-sfc': 3.5.0
+ '@vue/runtime-dom': 3.5.0
+ '@vue/server-renderer': 3.5.0(vue@3.5.0(typescript@5.5.4))
+ '@vue/shared': 3.5.0
+ optionalDependencies:
+ typescript: 5.5.4
+
+ w3c-keyname@2.2.8: {}
+
+ w3c-xmlserializer@5.0.0:
+ dependencies:
+ xml-name-validator: 5.0.0
+
+ watchpack@2.4.2:
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+
+ webextension-polyfill@0.10.0: {}
+
+ webidl-conversions@7.0.0: {}
+
+ webpack-sources@3.2.3: {}
+
+ webpack-virtual-modules@0.6.2:
+ optional: true
+
+ webpack@5.94.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/wasm-edit': 1.12.1
+ '@webassemblyjs/wasm-parser': 1.12.1
+ acorn: 8.12.1
+ acorn-import-attributes: 1.9.5(acorn@8.12.1)
+ browserslist: 4.23.3
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.17.1
+ es-module-lexer: 1.5.4
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 3.3.0
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.10(webpack@5.94.0)
+ watchpack: 2.4.2
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ whatwg-encoding@3.1.1:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ whatwg-mimetype@4.0.0: {}
+
+ whatwg-url@14.0.0:
+ dependencies:
+ tr46: 5.0.0
+ webidl-conversions: 7.0.0
+
+ which-boxed-primitive@1.0.2:
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+
+ which-builtin-type@1.1.4:
+ dependencies:
+ function.prototype.name: 1.1.6
+ has-tostringtag: 1.0.2
+ is-async-function: 2.0.0
+ is-date-object: 1.0.5
+ is-finalizationregistry: 1.0.2
+ is-generator-function: 1.0.10
+ is-regex: 1.1.4
+ is-weakref: 1.0.2
+ isarray: 2.0.5
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.2
+ which-typed-array: 1.1.15
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.3
+
+ which-typed-array@1.1.15:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.2
+
+ which@1.3.1:
+ dependencies:
+ isexe: 2.0.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ wrap-ansi@9.0.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 7.2.0
+ strip-ansi: 7.1.0
+
+ wrappy@1.0.2: {}
+
+ ws@8.14.2: {}
+
+ ws@8.18.0: {}
+
+ xml-name-validator@4.0.0: {}
+
+ xml-name-validator@5.0.0: {}
+
+ xmlchars@2.2.0: {}
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1:
+ optional: true
+
+ yallist@4.0.0: {}
+
+ yaml@2.3.4: {}
+
+ yaml@2.5.1: {}
+
+ yargs-parser@20.2.9: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yocto-queue@0.1.0: {}
+
+ zip-stream@5.0.2:
+ dependencies:
+ archiver-utils: 4.0.1
+ compress-commons: 5.0.3
+ readable-stream: 3.6.2
diff --git a/postcss.config.js b/postcss.config.js
index fa35cd6..feab351 100644
--- a/postcss.config.js
+++ b/postcss.config.js
@@ -1,6 +1,7 @@
-module.exports = {
+export default {
plugins: {
'postcss-import': {},
+ 'tailwindcss/nesting': {},
tailwindcss: {},
autoprefixer: {},
},
diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json
index ffe71b3..2f9e13c 100644
--- a/public/_locales/en/messages.json
+++ b/public/_locales/en/messages.json
@@ -1,6 +1,10 @@
{
- "extName": {
- "message": "Inspect CSS",
- "description": "The easiest way to inspect and edit CSS."
+ "extensionDescription": {
+ "description": "Extension description",
+ "message": "The easiest way to inspect and edit CSS"
+ },
+ "extensionName": {
+ "description": "Extension name",
+ "message": "Inspect CSS"
}
}
diff --git a/public/browser-extension.html b/public/browser-extension.html
deleted file mode 100644
index 2dbc525..0000000
--- a/public/browser-extension.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- <%= htmlWebpackPlugin.options.title %>
-
-
-
-
-
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index df36fcf..0000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/icons/128.png b/public/icon-128.png
similarity index 100%
rename from public/icons/128.png
rename to public/icon-128.png
diff --git a/public/icons/48.png b/public/icon-34.png
similarity index 100%
rename from public/icons/48.png
rename to public/icon-34.png
diff --git a/public/icons/icon.xcf b/public/icons/icon.xcf
deleted file mode 100644
index e1cde95..0000000
Binary files a/public/icons/icon.xcf and /dev/null differ
diff --git a/public/image.png b/public/image.png
deleted file mode 100644
index 33740c4..0000000
Binary files a/public/image.png and /dev/null differ
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 3e5a139..0000000
--- a/public/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
- <%= htmlWebpackPlugin.options.title %>
-
-
-
-
-
-
-
diff --git a/src/assets/css/base/fonts.css b/src/assets/css/base/fonts.css
deleted file mode 100644
index 3cfdb60..0000000
--- a/src/assets/css/base/fonts.css
+++ /dev/null
@@ -1,28 +0,0 @@
-/* poppins-regular - latin */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- src: local(''),
- url('../../fonts/poppins-v15-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('../../fonts/poppins-v15-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* poppins-600 - latin */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 600;
- src: local(''),
- url('../../fonts/poppins-v15-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('../../fonts/poppins-v15-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* fira-code-regular - latin */
-@font-face {
- font-family: 'Fira Code';
- font-style: normal;
- font-weight: 400;
- src: local(''),
- url('../../fonts/fira-code-v10-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('../../fonts/fira-code-v10-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
\ No newline at end of file
diff --git a/src/assets/css/base/prism-onedark.css b/src/assets/css/base/prism-onedark.css
deleted file mode 100644
index 4ac32e6..0000000
--- a/src/assets/css/base/prism-onedark.css
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
- text-shadow: none;
- background: #383e49;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
- text-shadow: none;
- background: #9aa2b1;
-}
-
-@media print {
- code[class*="language-"],
- pre[class*="language-"] {
- text-shadow: none;
- }
-}
-/* Code blocks */
-pre[class*="language-"] {
- padding: 1em;
- margin: .5em 0;
- overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
- background: #282c34;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
- padding: .1em;
- border-radius: .3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: #5C6370;
-}
-
-.token.punctuation {
- color: #abb2bf;
-}
-
-.token.selector,
-.token.tag {
- color: #e06c75;
-}
-
-.token.property,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.attr-name,
-.token.deleted {
- color: #d19a66;
-}
-
-.token.string,
-.token.char,
-.token.attr-value,
-.token.builtin,
-.token.inserted {
- color: #98c379;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
- color: #56b6c2;
-}
-
-.token.atrule,
-.token.keyword {
- color: #c678dd;
-}
-
-.token.function {
- color: #61afef;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
- color: #c678dd;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
-
-pre.line-numbers {
- position: relative;
- padding-left: 3.8em;
- counter-reset: linenumber;
-}
-
-pre.line-numbers > code {
- position: relative;
-}
-
-.line-numbers .line-numbers-rows {
- position: absolute;
- pointer-events: none;
- top: 0;
- font-size: 100%;
- left: -3.8em;
- width: 3em; /* works for line-numbers below 1000 lines */
- letter-spacing: -1px;
- border-right: 0;
-
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
-}
-
-.line-numbers-rows > span {
- pointer-events: none;
- display: block;
- counter-increment: linenumber;
-}
-
-.line-numbers-rows > span:before {
- content: counter(linenumber);
- color: #5C6370;
- display: block;
- padding-right: 0.8em;
- text-align: right;
-}
\ No newline at end of file
diff --git a/src/assets/css/base/tailwind.css b/src/assets/css/base/tailwind.css
deleted file mode 100644
index 8b2d8ea..0000000
--- a/src/assets/css/base/tailwind.css
+++ /dev/null
@@ -1,43 +0,0 @@
-
-@import "tailwindcss/base";
-@import "tailwindcss/components";
-@import "tailwindcss/utilities";
-
-input:focus,
-button:focus,
-textarea:focus,
-select:focus {
- outline: none;
- @apply ring-4 transition duration-200;
-}
-option {
- background-color: theme('colors.gray.800');
-}
-
-.scroll::-webkit-scrollbar {
- width: 7px;
- height: 9px;
-}
-
-.scroll::-webkit-scrollbar-thumb {
- @apply bg-gray-700;
- border-radius: 8px;
-}
-
-.scroll::-webkit-scrollbar-track {
- background: transparent;
-}
-
-.line-clamp {
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.text-overflow {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
diff --git a/src/assets/css/base/transitions.css b/src/assets/css/base/transitions.css
deleted file mode 100644
index 1cf0ac4..0000000
--- a/src/assets/css/base/transitions.css
+++ /dev/null
@@ -1,13 +0,0 @@
-.list-transition {
- transition: all 0.4s ease;
-}
-
-.list-transition-enter-from,
-.list-transition-leave-to {
- opacity: 0;
- transform: translateX(-30px);
-}
-
-.list-transition-leave-active {
- position: absolute;
-}
\ No newline at end of file
diff --git a/src/assets/css/content-script/app.css b/src/assets/css/content-script/app.css
deleted file mode 100644
index a61e4c0..0000000
--- a/src/assets/css/content-script/app.css
+++ /dev/null
@@ -1,96 +0,0 @@
-@import "vue-prism-editor/dist/prismeditor.min.css";
-@import "../base/prism-onedark.css";
-@import "../base/tailwind.css";
-@import "../base/transitions.css";
-
-.app {
- font-family: 'Poppins', sans-serif !important;
- font-size: 16px;
- color: white;
-}
-
-.my-editor {
- font-family: 'Fira Code', monospace;
- color: #ABB2BF;
- font-size: 15px;
- line-height: 1.5;
- padding: 5px;
- min-height: 70px;
-}
-
-.prism-editor__textarea:focus {
- outline: none;
-}
-
-.color-card .color-card__text,
-.color-card .color-card__copy-text {
- transition: all 250ms ease;
- transform: translateY(12px);
-}
-.color-card:hover .color-card__text,
-.color-card:hover .color-card__copy-text {
- transform: translateY(0);
-}
-.color-card:hover .color-card__copy-text {
- opacity: 1;
- visibility: visible;
-}
-
-.horizontal-center {
- position: absolute;
- left: 50%;
- transform: translateX(-50%);
-}
-
-.horizontal-center.top {
- top: 5px;
-}
-
-.horizontal-center.bottom {
- bottom: 5px;
-}
-
-.vertical-center {
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
-}
-
-.vertical-center.left {
- left: 5px;
-}
-
-.vertical-center.right {
- right: 5px;
-}
-
-.app-element {
- position: fixed;
- z-index: 9999;
- top: 1.5rem;
- backdrop-filter: blur(10px);
-}
-
-.app-element .edit-element {
- --tw-bg-opacity: 0.94;
- min-height: 500px;
- width: 310px;
- max-height: calc(100vh - 3rem);
-}
-
-.image-card {
- background-image: url('../../images/background.png');
-}
-.image-card .image-card__meta {
- transition: transform 250ms ease;
- transform: translateY(100%);
-}
-.image-card .image-card__image {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
-}
-.image-card:hover .image-card__meta {
- transform: translateY(0);
-}
\ No newline at end of file
diff --git a/src/assets/css/content-script/style.css b/src/assets/css/content-script/style.css
deleted file mode 100644
index 73ed31c..0000000
--- a/src/assets/css/content-script/style.css
+++ /dev/null
@@ -1,35 +0,0 @@
-@import "../base/fonts.css";
-
-body.is-screenshotting .inspect-css {
- display: none;
-}
-body.is-screenshotting .hover-element,
-body.is-screenshotting [active-element],
-body.is-screenshotting .display-grid * {
- outline: none !important;
-}
-
-.inspect-css {
- z-index: 99999;
- position: relative;
-}
-
-body.is-screenshotting [is-sticky] {
- position: relative !important;
-}
-.hide-fixed [is-fixed] {
- visibility: hidden !important;
- opacity: 0 !important;
-}
-
-.hover-element {
- outline: 1px solid #f56565 !important;
-}
-
-.display-grid * {
- outline: 1px solid rgba(245, 101, 101, 0.2);
-}
-
-[active-element] {
- outline: 1px solid #4299e1 !important;
-}
diff --git a/src/assets/fonts/fira-code-v10-latin-regular.woff b/src/assets/fonts/fira-code-v10-latin-regular.woff
deleted file mode 100644
index 10a14ac..0000000
Binary files a/src/assets/fonts/fira-code-v10-latin-regular.woff and /dev/null differ
diff --git a/src/assets/fonts/fira-code-v10-latin-regular.woff2 b/src/assets/fonts/fira-code-v10-latin-regular.woff2
deleted file mode 100644
index 99f05e3..0000000
Binary files a/src/assets/fonts/fira-code-v10-latin-regular.woff2 and /dev/null differ
diff --git a/src/assets/fonts/ibm-plex-mono-v19-latin-regular.woff2 b/src/assets/fonts/ibm-plex-mono-v19-latin-regular.woff2
new file mode 100644
index 0000000..a6c77d6
Binary files /dev/null and b/src/assets/fonts/ibm-plex-mono-v19-latin-regular.woff2 differ
diff --git a/src/assets/fonts/poppins-v15-latin-600.woff b/src/assets/fonts/poppins-v15-latin-600.woff
deleted file mode 100644
index da49269..0000000
Binary files a/src/assets/fonts/poppins-v15-latin-600.woff and /dev/null differ
diff --git a/src/assets/fonts/poppins-v15-latin-600.woff2 b/src/assets/fonts/poppins-v15-latin-600.woff2
deleted file mode 100644
index 53e8d4d..0000000
Binary files a/src/assets/fonts/poppins-v15-latin-600.woff2 and /dev/null differ
diff --git a/src/assets/fonts/poppins-v15-latin-regular.woff b/src/assets/fonts/poppins-v15-latin-regular.woff
deleted file mode 100644
index 62ac314..0000000
Binary files a/src/assets/fonts/poppins-v15-latin-regular.woff and /dev/null differ
diff --git a/src/assets/fonts/poppins-v15-latin-regular.woff2 b/src/assets/fonts/poppins-v15-latin-regular.woff2
deleted file mode 100644
index 36195bd..0000000
Binary files a/src/assets/fonts/poppins-v15-latin-regular.woff2 and /dev/null differ
diff --git a/src/assets/fonts/poppins-v20-latin-600.woff2 b/src/assets/fonts/poppins-v20-latin-600.woff2
new file mode 100644
index 0000000..921e962
Binary files /dev/null and b/src/assets/fonts/poppins-v20-latin-600.woff2 differ
diff --git a/src/assets/fonts/poppins-v20-latin-regular.woff2 b/src/assets/fonts/poppins-v20-latin-regular.woff2
new file mode 100644
index 0000000..b69e009
Binary files /dev/null and b/src/assets/fonts/poppins-v20-latin-regular.woff2 differ
diff --git a/src/assets/images/background.png b/src/assets/img/background.png
similarity index 100%
rename from src/assets/images/background.png
rename to src/assets/img/background.png
diff --git a/src/assets/logo.png b/src/assets/logo.png
deleted file mode 100644
index f3d2503..0000000
Binary files a/src/assets/logo.png and /dev/null differ
diff --git a/src/assets/style/fonts.css b/src/assets/style/fonts.css
new file mode 100644
index 0000000..ebf2602
--- /dev/null
+++ b/src/assets/style/fonts.css
@@ -0,0 +1,25 @@
+/* poppins-regular - latin */
+@font-face {
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+ font-family: 'Poppins';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../fonts/poppins-v20-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
+}
+/* poppins-600 - latin */
+@font-face {
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+ font-family: 'Poppins';
+ font-style: normal;
+ font-weight: 600;
+ src: url('../fonts/poppins-v20-latin-600.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
+}
+
+/* ibm-plex-mono-regular - latin */
+@font-face {
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+ font-family: 'IBM Plex Mono';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../fonts/ibm-plex-mono-v19-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
+}
diff --git a/src/assets/style/theme.css b/src/assets/style/theme.css
new file mode 100644
index 0000000..3c5e41e
--- /dev/null
+++ b/src/assets/style/theme.css
@@ -0,0 +1,74 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+:host,
+:root {
+ --background: 222.2 84% 4.9%;
+ --foreground: 210 40% 98%;
+ --primary: 217.22 91.22% 59.8%;
+ --foreground: 210 40% 98%;
+ --card: 222.2 84% 4.9%;
+ --card-foreground: 210 40% 98%;
+ --popover: 222.2 84% 4.9%;
+ --popover-foreground: 210 40% 98%;
+ --secondary: 217.2 32.6% 17.5%;
+ --secondary-foreground: 210 40% 98%;
+ --muted: 217.2 32.6% 17.5%;
+ --muted-foreground: 215 20.2% 65.1%;
+ --accent: 217.2 32.6% 17.5%;
+ --accent-foreground: 210 40% 98%;
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 210 40% 98%;
+ --border: 217.2 32.6% 17.5%;
+ --input: 217.2 32.6% 17.5%;
+ --ring: 224.3 76.3% 48%;
+
+ --radius: 12px;
+}
+
+@layer base {
+ * {
+ @apply border-border;
+ }
+}
+
+.horizontal-center {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.horizontal-center.top {
+ top: 5px;
+}
+
+.horizontal-center.bottom {
+ bottom: 5px;
+}
+
+.vertical-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+.vertical-center.left {
+ left: 5px;
+}
+
+.vertical-center.right {
+ right: 5px;
+}
+
+.kbd {
+ @apply rounded-sm border border-b-2 px-1 py-0.5 inline-flex items-center justify-center bg-popover min-w-2 min-h-2;
+}
+
+.tooltip {
+ @apply invisible absolute;
+}
+
+.has-tooltip:hover .tooltip {
+ @apply visible z-40;
+}
\ No newline at end of file
diff --git a/src/background.js b/src/background.js
deleted file mode 100644
index 659d9b3..0000000
--- a/src/background.js
+++ /dev/null
@@ -1,13 +0,0 @@
-browser.browserAction.onClicked.addListener(() => {
- browser.tabs.executeScript({
- file: './js/content-script.js',
- });
-});
-
-browser.runtime.onMessage.addListener(async ({ type }) => {
- if (type === 'screenshot') {
- const imageUri = await browser.tabs.captureVisibleTab({ quality: 70 });
-
- return imageUri;
- }
-});
diff --git a/src/components/app/AppElement.vue b/src/components/app/AppElement.vue
deleted file mode 100644
index 21756f9..0000000
--- a/src/components/app/AppElement.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
diff --git a/src/components/app/AppProperties.vue b/src/components/app/AppProperties.vue
deleted file mode 100644
index bfc3f97..0000000
--- a/src/components/app/AppProperties.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
diff --git a/src/components/app/edit/EditAssets.vue b/src/components/app/edit/EditAssets.vue
deleted file mode 100644
index f3dc255..0000000
--- a/src/components/app/edit/EditAssets.vue
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
-
-
-
diff --git a/src/components/app/edit/EditAttributes.vue b/src/components/app/edit/EditAttributes.vue
deleted file mode 100644
index 56e7f9e..0000000
--- a/src/components/app/edit/EditAttributes.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
Click an element to edit attributes
-
-
-
-
-
-
-
-
diff --git a/src/components/app/edit/EditCss.vue b/src/components/app/edit/EditCss.vue
deleted file mode 100644
index 7b0c329..0000000
--- a/src/components/app/edit/EditCss.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
diff --git a/src/components/app/edit/EditElementMenu.vue b/src/components/app/edit/EditElementMenu.vue
deleted file mode 100644
index 11758ea..0000000
--- a/src/components/app/edit/EditElementMenu.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
diff --git a/src/components/app/edit/EditPalette.vue b/src/components/app/edit/EditPalette.vue
deleted file mode 100644
index 60fbccc..0000000
--- a/src/components/app/edit/EditPalette.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
- Extracting Colors...
-
-
-
-
-
Website Color Palettes
-
-
-
-
-
- {{ color.hex }}
-
-
- {{ color.copied ? 'copied' : 'Copy color' }}
-
-
-
-
-
-
-
diff --git a/src/components/app/edit/EditProperties.vue b/src/components/app/edit/EditProperties.vue
deleted file mode 100644
index 6c0b4de..0000000
--- a/src/components/app/edit/EditProperties.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
-
-
-
- {{ tab.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
Click an element to see the properties
-
-
-
-
diff --git a/src/components/ui/Button.vue b/src/components/ui/Button.vue
deleted file mode 100644
index b7395a6..0000000
--- a/src/components/ui/Button.vue
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/ui/ElementProperties/ElementComputed.vue b/src/components/ui/ElementProperties/ElementComputed.vue
deleted file mode 100644
index 49c2d2a..0000000
--- a/src/components/ui/ElementProperties/ElementComputed.vue
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
- {{ title }}
-
- {{ computedStyles[`${title}-${direction}`] }}
-
-
-
-
-
diff --git a/src/components/ui/ElementProperties/ElementSelector.vue b/src/components/ui/ElementProperties/ElementSelector.vue
deleted file mode 100644
index 01ef38c..0000000
--- a/src/components/ui/ElementProperties/ElementSelector.vue
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- {{ selector.tag }}
-
-
- {{ selector.id }}
-
-
- {{ selector.classes }}
-
-
-
-
diff --git a/src/components/ui/ElementProperties/index.vue b/src/components/ui/ElementProperties/index.vue
deleted file mode 100644
index cb6f87c..0000000
--- a/src/components/ui/ElementProperties/index.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
- {{ properties.computedStyles.fontFamily }}
-
-
-
-
- {{ Math.floor(properties.size.width) }}
- x
- {{ Math.floor(properties.size.height) }}
-
-
-
-
- Click or press "Ctrl" + "Space" to edit element
-
-
-
-
diff --git a/src/components/ui/Icon.vue b/src/components/ui/Icon.vue
deleted file mode 100644
index 41835f4..0000000
--- a/src/components/ui/Icon.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
diff --git a/src/components/ui/PrismEdtior.vue b/src/components/ui/PrismEdtior.vue
deleted file mode 100644
index 2f80b9e..0000000
--- a/src/components/ui/PrismEdtior.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
diff --git a/src/components/ui/Select.vue b/src/components/ui/Select.vue
deleted file mode 100644
index 8bac5c4..0000000
--- a/src/components/ui/Select.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
diff --git a/src/components/ui/Spinner.vue b/src/components/ui/Spinner.vue
deleted file mode 100644
index 83ebb83..0000000
--- a/src/components/ui/Spinner.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
diff --git a/src/content-scripts/App.vue b/src/content-scripts/App.vue
deleted file mode 100644
index 54b8488..0000000
--- a/src/content-scripts/App.vue
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/content-scripts/content-script.js b/src/content-scripts/content-script.js
deleted file mode 100644
index 2a87995..0000000
--- a/src/content-scripts/content-script.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* eslint-disable import/no-webpack-loader-syntax */
-import app, { insertShadowRoot } from './main';
-import appCss from '!to-string-loader!css-loader!postcss-loader!../assets/css/content-script/app.css';
-import contentCss from '!to-string-loader!css-loader!postcss-loader!../assets/css/content-script/style.css';
-
-function generateCSS() {
- const style = document.createElement('style');
- style.innerText = contentCss;
-
- document.body.appendChild(style);
-
- return function () {
- document.body.removeChild(style);
- };
-}
-
-function generateContent(container) {
- const content = document.createElement('div');
-
- const style = document.createElement('style');
- style.innerText = appCss;
-
- app.mount(content);
-
- container.shadowRoot.appendChild(content);
- container.shadowRoot.appendChild(style);
-
- return function () {
- app.unmount();
- document.body.removeChild(container);
- };
-}
-
-(() => {
- const isAppExist = document.querySelector('.inspect-css');
-
- if (isAppExist) return;
-
- const container = document.createElement('div');
-
- container.attachShadow({ mode: 'open' });
- container.classList = 'inspect-css';
-
- insertShadowRoot(container.shadowRoot);
-
- const content = generateContent(container);
- const css = generateCSS();
-
- app.config.globalProperties.destoryExtension = () => {
- content();
- css();
-
- const activeElement = document.querySelector('[active-element]');
- if (activeElement) activeElement.removeAttribute('active-element');
-
- ['pause', 'display-grid'].forEach((classes) => {
- document.body.classList.remove(classes);
- });
- };
-
- document.body.appendChild(container);
-})();
diff --git a/src/content-scripts/main.js b/src/content-scripts/main.js
deleted file mode 100644
index 802743e..0000000
--- a/src/content-scripts/main.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { createApp } from 'vue';
-import App from './App.vue?shadow';
-import compsUi from '../lib/comps-ui';
-
-const app = createApp(App);
-
-app.use(compsUi);
-
-export function insertShadowRoot(shadowRoot) {
- App.shadowRoot = shadowRoot;
-}
-
-export default app;
diff --git a/src/environment.d.ts b/src/environment.d.ts
new file mode 100644
index 0000000..bedafd8
--- /dev/null
+++ b/src/environment.d.ts
@@ -0,0 +1,10 @@
+declare global {
+ namespace NodeJS {
+ interface ProcessEnv {
+ __DEV__: string;
+ __FIREFOX__: string;
+ }
+ }
+}
+
+export {};
diff --git a/src/global.d.ts b/src/global.d.ts
new file mode 100644
index 0000000..ef600b6
--- /dev/null
+++ b/src/global.d.ts
@@ -0,0 +1,53 @@
+declare module 'virtual:reload-on-update-in-background-script' {
+ export const reloadOnUpdate: (watchPath: string) => void;
+ export default reloadOnUpdate;
+}
+
+declare module 'virtual:reload-on-update-in-view' {
+ const refreshOnUpdate: (watchPath: string) => void;
+ export default refreshOnUpdate;
+}
+
+declare module '*.svg' {
+ import React = require('react');
+ export const ReactComponent: React.SFC>;
+ const src: string;
+ export default src;
+}
+
+declare module '*.jpg' {
+ const content: string;
+ export default content;
+}
+
+declare module '*.png' {
+ const content: string;
+ export default content;
+}
+
+declare module '*.json' {
+ const content: string;
+ export default content;
+}
+
+interface ColorSelectionOptions {
+ signal?: AbortSignal;
+}
+
+interface ColorSelectionResult {
+ sRGBHex: string;
+}
+
+interface EyeDropper {
+ open: (options?: ColorSelectionOptions) => Promise;
+}
+
+interface EyeDropperConstructor {
+ new (): EyeDropper;
+}
+
+interface Window {
+ EyeDropper?: EyeDropperConstructor | undefined;
+}
+
+declare const VITE_IS_FIREFOX: boolean;
diff --git a/src/icons/icon.xcf b/src/icons/icon.xcf
deleted file mode 100644
index e1cde95..0000000
Binary files a/src/icons/icon.xcf and /dev/null differ
diff --git a/src/icons/icon_128.png b/src/icons/icon_128.png
deleted file mode 100644
index f27fce8..0000000
Binary files a/src/icons/icon_128.png and /dev/null differ
diff --git a/src/icons/icon_48.png b/src/icons/icon_48.png
deleted file mode 100644
index 305c150..0000000
Binary files a/src/icons/icon_48.png and /dev/null differ
diff --git a/src/interfaces/app.interface.ts b/src/interfaces/app.interface.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/lib.d.ts b/src/lib.d.ts
new file mode 100644
index 0000000..1e48c3f
--- /dev/null
+++ b/src/lib.d.ts
@@ -0,0 +1,12 @@
+declare module 'colorthief' {
+ export type RGBColor = [number, number, number];
+
+ export default class ColorThief {
+ getColor: (img: HTMLImageElement, quality?: number) => Promise;
+ getPalette: (
+ img: HTMLImageElement,
+ colorCount?: number,
+ quality?: number,
+ ) => Promise;
+ }
+}
diff --git a/src/lib/codemirror/css.ts b/src/lib/codemirror/css.ts
new file mode 100644
index 0000000..9c9ace9
--- /dev/null
+++ b/src/lib/codemirror/css.ts
@@ -0,0 +1,41 @@
+import { parser } from './lang-css';
+import {
+ LRLanguage,
+ continuedIndent,
+ indentNodeProp,
+ foldNodeProp,
+ foldInside,
+ LanguageSupport,
+} from '@codemirror/language';
+import { cssCompletionSource } from '@codemirror/lang-css';
+
+/// A language provider based on the [Lezer CSS
+/// parser](https://github.com/lezer-parser/css), extended with
+/// highlighting and indentation information.
+export const cssLanguage = LRLanguage.define({
+ name: 'css',
+ // @ts-expect-error IDK
+ parser: parser.configure({
+ props: [
+ indentNodeProp.add({
+ Declaration: continuedIndent(),
+ }),
+ foldNodeProp.add({
+ 'Block KeyframeList': foldInside,
+ }),
+ ],
+ }),
+ languageData: {
+ commentTokens: { block: { open: '/*', close: '*/' } },
+ indentOnInput: /^\s*\}$/,
+ wordChars: '-',
+ },
+});
+
+/// Language support for CSS.
+export function css() {
+ return new LanguageSupport(
+ cssLanguage,
+ cssLanguage.data.of({ autocomplete: cssCompletionSource }),
+ );
+}
diff --git a/src/lib/codemirror/extensions.ts b/src/lib/codemirror/extensions.ts
new file mode 100644
index 0000000..4a0dc94
--- /dev/null
+++ b/src/lib/codemirror/extensions.ts
@@ -0,0 +1,54 @@
+import { BlockInfo, EditorView, gutter, GutterMarker } from '@codemirror/view';
+import { toggleBlockCommentByLine } from '@codemirror/commands';
+
+function isCommented(view: EditorView, line: BlockInfo) {
+ const lineText = view.state.sliceDoc(line.from, line.to).trim();
+ return lineText.startsWith('/*') && lineText.endsWith('*/');
+}
+
+const gutterMarkerCheckbox = new (class extends GutterMarker {
+ checked: boolean;
+
+ constructor() {
+ super();
+ this.checked = false;
+ }
+
+ toDOM() {
+ const checkboxEl = document.createElement('input');
+ checkboxEl.setAttribute('type', 'checkbox');
+ checkboxEl.checked = this.checked;
+
+ return checkboxEl;
+ }
+})();
+
+const gutterMarkerCheckboxChecked = new (class extends GutterMarker {
+ toDOM() {
+ const checkboxEl = document.createElement('input');
+ checkboxEl.setAttribute('type', 'checkbox');
+ checkboxEl.checked = true;
+
+ return checkboxEl;
+ }
+})();
+
+export const toggleCommentGutter = [
+ gutter({
+ lineMarker(view, line) {
+ if (line.from === line.to) return null;
+
+ const insideComment = isCommented(view, line);
+ return insideComment ? gutterMarkerCheckbox : gutterMarkerCheckboxChecked;
+ },
+ initialSpacer: () => gutterMarkerCheckbox,
+ domEventHandlers: {
+ click(view, line) {
+ view.dispatch({ selection: { anchor: line.to } });
+ toggleBlockCommentByLine(view);
+
+ return true;
+ },
+ },
+ }),
+];
diff --git a/src/lib/codemirror/lang-css/highlight.js b/src/lib/codemirror/lang-css/highlight.js
new file mode 100644
index 0000000..cf9cdbe
--- /dev/null
+++ b/src/lib/codemirror/lang-css/highlight.js
@@ -0,0 +1,37 @@
+import { styleTags, tags as t } from '@lezer/highlight';
+
+export const cssHighlighting = styleTags({
+ 'AtKeyword import charset namespace keyframes media supports':
+ t.definitionKeyword,
+ 'from to selector': t.keyword,
+ NamespaceName: t.namespace,
+ KeyframeName: t.labelName,
+ KeyframeRangeName: t.operatorKeyword,
+ TagName: t.tagName,
+ ClassName: t.className,
+ PseudoClassName: t.constant(t.className),
+ IdName: t.labelName,
+ 'FeatureName PropertyName': t.propertyName,
+ AttributeName: t.attributeName,
+ NumberLiteral: t.number,
+ KeywordQuery: t.keyword,
+ UnaryQueryOp: t.operatorKeyword,
+ 'CallTag ValueName': t.atom,
+ VariableName: t.variableName,
+ Callee: t.operatorKeyword,
+ Unit: t.unit,
+ 'UniversalSelector NestingSelector': t.definitionOperator,
+ MatchOp: t.compareOperator,
+ 'ChildOp SiblingOp, LogicOp': t.logicOperator,
+ BinOp: t.arithmeticOperator,
+ Important: t.modifier,
+ Comment: t.blockComment,
+ ColorLiteral: t.color,
+ 'ParenthesizedContent StringLiteral': t.string,
+ ':': t.punctuation,
+ 'PseudoOp #': t.derefOperator,
+ '; ,': t.separator,
+ '( )': t.paren,
+ '[ ]': t.squareBracket,
+ '{ }': t.brace,
+});
diff --git a/src/lib/codemirror/lang-css/index.cjs b/src/lib/codemirror/lang-css/index.cjs
new file mode 100644
index 0000000..858d336
--- /dev/null
+++ b/src/lib/codemirror/lang-css/index.cjs
@@ -0,0 +1,74 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var lr = require('@lezer/lr');
+var tokens_js = require('./tokens.js');
+var highlight_js = require('./highlight.js');
+
+// This file was generated by lezer-generator. You probably shouldn't edit it.
+const spec_callee = {
+ __proto__: null,
+ lang: 32,
+ 'nth-child': 32,
+ 'nth-last-child': 32,
+ 'nth-of-type': 32,
+ 'nth-last-of-type': 32,
+ dir: 32,
+ 'host-context': 32,
+ url: 60,
+ 'url-prefix': 60,
+ domain: 60,
+ regexp: 60,
+ selector: 138,
+};
+const spec_AtKeyword = {
+ __proto__: null,
+ '@import': 118,
+ '@media': 142,
+ '@charset': 146,
+ '@namespace': 150,
+ '@keyframes': 156,
+ '@supports': 168,
+};
+const spec_identifier = { __proto__: null, not: 132, only: 132 };
+const parser = lr.LRParser.deserialize({
+ version: 14,
+ states:
+ ":^QYQ[OOOYQ[OOP!aOWOOO!fQXO'#CdOOQP'#Cc'#CcO#ZQ[O'#CfO#}QXO'#CaO$UQ[O'#ChO$aQ[O'#DTO$fQ[O'#DWOOQP'#Em'#EmO$kQWO'#DcO$pQWO'#EsQ${Q[O'#EsO&SQdO'#DgO&qQ[O'#DtO&SQdO'#DvO'SQ[O'#DxO'_Q[O'#D{O'gQ[O'#ERO'uQ[O'#ETOOQS'#El'#ElOOQS'#EW'#EWQOQWOOO'|Q[O'#EsP(TO#tO'#C_POOO)C@[)C@[OOQP'#Cg'#CgOOQP,59Q,59QO#ZQ[O,59QO(`Q[O'#E[O(zQWO,58{O)SQ[O,59SO$aQ[O,59oO$fQ[O,59rO(`Q[O,59uO(`Q[O,59wO(`Q[O,59xO*cQ[O'#DbOOQS,58{,58{OOQP'#Ck'#CkOOQO'#DR'#DROOQP,59S,59SO*jQWO,59SO*oQWO,59SOOQP'#DV'#DVOOQP,59o,59oOOQO'#DX'#DXO*tQ`O,59rO&SQdO,59}O*|Q[O'#E^O+ZQWO,5;_O+ZQWO,5;_OOQS-E8U-E8UOOQS'#Cp'#CpO&SQdO'#CqO+fQvO'#CsO,vQtO,5:ROOQO'#Cx'#CxO*oQWO'#CwO-[QWO'#CyO-aQ[O'#DOOOQS'#Ep'#EpOOQO'#Dj'#DjO-iQ[O'#DqO-wQWO'#EtO'gQ[O'#DoO.VQWO'#DrOOQO'#Eu'#EuO(}QWO,5:`O.[QpO,5:bOOQS'#Dz'#DzO.dQWO,5:dO.iQ[O,5:dOOQO'#D}'#D}O.qQWO,5:gO.vQWO,5:mO/OQWO,5:oPOOO'#EV'#EVP/WO#tO,58yPOOO,58y,58yOOQP1G.l1G.lOOQP'#Cd'#CdO/}QXO,5:vOOQO-E8Y-E8YOOQS1G.g1G.gOOQP1G.n1G.nO*jQWO1G.nO*oQWO1G.nOOQP1G/Z1G/ZO0[Q`O1G/^O0uQXO1G/aO1]QXO1G/cO1sQXO1G/dO2ZQWO,59|O2`Q[O'#DSO2gQdO'#CoOOQP1G/^1G/^O&SQdO1G/^O2nQtO1G/iOOQO,5:x,5:xO3UQ[O,5:xOOQO-E8[-E8[O3cQWO1G0yO3nQpO,59]OOQS,59_,59_O&SQdO,59aO3vQWO1G/mOOQS,59c,59cO3{Q!bO,59eOOQS'#DP'#DPOOQS'#EY'#EYO4TQ[O,59jOOQS,59j,59jO4]QWO'#DjO4hQWO,5:VO4mQWO,5:]O'gQ[O,5:XO'gQ[O'#E_O4uQWO,5;`O5QQWO,5:ZO(`Q[O,5:^OOQS1G/z1G/zOOQS1G/|1G/|OOQS1G0O1G0OO5cQWO1G0OO5hQdO'#EOOOQS1G0R1G0ROOQS1G0X1G0XOOQS1G0Z1G0ZPOOO-E8T-E8TPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$x7+$xO&SQdO7+$xOOQS1G/h1G/hO5sQXO'#ErO5zQWO,59nO6PQtO'#EXO6wQdO'#EoO7RQWO,59ZO7WQpO7+$xO7`QtO'#E]O&SQdO'#E]O8aQdO7+%TOOQO7+%T7+%TOOQO1G0d1G0dOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%X7+%XO8tQWO1G/POOQS-E8W-E8WOOQS1G/U1G/UO&SQdO1G/qOOQO1G/w1G/wOOQO1G/s1G/sO8yQWO,5:yOOQO-E8]-E8]O9XQXO1G/xOOQS7+%j7+%jO9`QYO'#CsOOQO'#EQ'#EQO9kQ`O'#EPOOQO'#EP'#EPO9vQWO'#E`O:OQdO,5:jOOQS,5:j,5:jO:ZQpO<<<<<OAN>OO;{QdO,5:uOOQO-E8X-E8XOOQO<<<_~O#ZOS#[QQ~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO#U#gP~O#[iO~O]WX]!WX^WXqWXtWXxWX!OWX!RWX!TWX#VWX#bWX~O#XkO~O]pO^pOqrOtnOxqO!OsO!RuO#VtO#bmO~O!TvO~P#`O`|O#WyO#XxO~O#X}O~O#X!PO~O]!RO~O!Y!SO#U#gX!S#gX~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO#U#gX~OQ!`Ob!XOf!`Oh!`On!^Oq!_O#W![O#X!WO#e!YO~Ob!bO!d!dO!g!eO#X!aO!T#hP~Oh!jOn!^O#X!iO~Oh!lO#X!lO~Ob!bO!d!dO!g!eO#X!aO~O!Y#hP~P&qO!S#gX~P${O#]!pO#^!pO#_!rO~OUYOXYO]VO^VOqXOxWO#X!tO#bTO~OtnO!TvO~O`!zO#WyO#XxO~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO~O!S#gP~P)_Ob#RO~Ob#SO~Op#TO|#UO~O!Y#QX#U#QX!S#QX~P)_O!Y!SO#U#ga!S#ga~OP#]ObgXjgX!YgX!dgX!ggX#XgXQgXfgXhgXngXqgXtgX!XgX#UgX#WgX#egXagXpgX!SgX~Ob!bOj#^O!d!dO!g!eO#X!aO!Y#hP~Ob#aO~Op#eO#X#bO~Ob!bO!d!dO!g!eO#X#fO~Ot#jO!b#iO!T#hX!Y#hX~Ob#mO~Oj#^O!Y#oO~O!Y#pO~Oh#qOn!^O~O!T#rO~O!TvO!b#iO~O!TvO!Y#uO~O#]!pO#^!pO#_#wO~O]pO^pOqrOxqO!OsO!RuO#VtO#bmO~Ot#Oa!T#Oaa#Oa~P/cOp#yO|#zO~O]pO^pOqrOxqO#bmO~Ot}i!O}i!R}i!T}i#V}ia}i~P0dOt!Pi!O!Pi!R!Pi!T!Pi#V!Pia!Pi~P0dOt!Qi!O!Qi!R!Qi!T!Qi#V!Qia!Qi~P0dO!S#{O~Oa#fP~P(`Oa#cP~P&SOj#^Ot$TO!X$VO!Y!Vi#U!Vi!S!Vi~P&SO!Y#Qa#U#Qa!S#Qa~P)_O!Y!SO#U#gi!S#gi~Oa$XOj#^O~O!Y$ZO~Oh$[Oo$[O~Op$^O#X#bO~O]!`Xa!^X!b!^X~O]$_O~Oa$`O!b#iO~Ot#jO!T#ha!Y#ha~O!b#iOt!ca!T!ca!Y!caa!ca~O!Y$eO~O!S$lO#X$gO#e$fO~Oa#fX~P#`Oa$oO~Oj#^OQ!{Xa!{Xb!{Xf!{Xh!{Xn!{Xq!{Xt!{X#W!{X#X!{X#e!{X~Ot$qOa#cX~P&SOa$sO~Oj#^Op$tO~Oj#^OQ#PXb#PXf#PXh#PXn#PXq#PXt#PX!X#PX!Y#PX#U#PX#W#PX#X#PX#e#PX!S#PX~Ot$TO!X$wO!Y!Vq#U!Vq!S!Vq~P&SOa$xO~O!b#iOt#Ra!T#Ra!Y#Ra~Oa$zO~P/cOP#]OtgX!TgX~O#e$fOt!sX!T!sX~Ot$|O!TvO~O!S%QO#X$gO#e$fO~Oj#^Op%RO~OtnOa#fa~Ot$qOa#ca~Oj#^OQ#Pab#Paf#Pah#Pan#Paq#Pat#Pa!X#Pa!Y#Pa#U#Pa#W#Pa#X#Pa#e#Pa!S#Pa~Oa%UO~P&SOa!}at!}a~P&SO#Zo#[#ej!R#e~',
+ goto: "-l#jPPP#kP#nP#w$WP#w$g#wPP$mPPP$s$|$|P%`P$|P$|%z&^PPPP$|&vP&z'Q#wP'W#w'^P#wP#w#wPPP'd'y(YPP#nPP(c(c(m(cP(cP(c(cP#nP#nP#nP(p#nP(s(v(y)Q#nP#nP)V)])l)z*Q*W*b*h*r*x+OPPPPPPPPPP+U+_P+z+}P,s,v,}-WRjQ_eOP]hv!S#XkYOP]hnstuv!S#R#X#mkSOP]hnstuv!S#R#X#mQlTR!smQzVR!xpQ!x|Q#`!]R#x!zq!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%Sp!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%SU$i#r$k$|R${$hq!]^`!R!X#S#U#V#^#z$P$T$U$_$q$y%Sp!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%SQ!jaR#q!kT#c!_#dQ{VR!ypQ!x{R#x!yQ!OWR!{qQ!QXR!|rQwUQ!woQ#n!gQ#t!nQ#u!oQ%O$jR%X$}U[OPvS!U]hQ#W!SR$W#X_ZOP]hv!S#Xa!f_cd!Z!b!d#i#jR#g!bR!kaR!mbR#s!mS$j#r$kR%V$|V$h#r$k$|Q!qiR#v!qQ]OShPvU!V]h#XR#X!SQ$P#SU$p$P$y%SQ$y$_R%S$qQ#d!_R$]#dQ$r$PR%T$rQoUS!vo$nR$n#|Q$U#VR$v$UQ!T[S#Y!T#ZR#Z!UQ#k!cR$c#kQ$k#rR%P$kQ$}$jR%W$}_fOP]hv!S#X^UOP]hv!S#XQ!unQ!}sQ#OtQ#PuQ#|#RR$d#mR$Q#SQ!Z^Q!h`Q#V!RQ#[!X[$O#S$P$_$q$y%SQ$R#US$S#V$UQ$Y#^Q$m#zR$u$TR#}#RSgOPR#QvQ!g_Q!odR#_!ZU!c_d!ZQ!ncQ#h!bQ#l!dQ$a#iR$b#j",
+ nodeNames:
+ '⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName , PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports AtRule Styles',
+ maxTerm: 117,
+ nodeProps: [
+ ['isolate', -2, 3, 24, ''],
+ ['openedBy', 17, '(', 32, '[', 50, '{'],
+ ['closedBy', 18, ')', 33, ']', 51, '}'],
+ ],
+ propSources: [highlight_js.cssHighlighting],
+ skippedNodes: [0, 3, 87],
+ repeatNodeCount: 11,
+ tokenData:
+ "J^~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Ab![!]B]!]!^CX!^!_$}!_!`Cj!`!aC{!a!b$}!b!cDw!c!}$}!}#OFa#O#P$}#P#QFr#Q#R6d#R#T$}#T#UGT#U#c$}#c#dHf#d#o$}#o#pH{#p#q6d#q#rI^#r#sIo#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`JW<%lO$}`%QSOy%^z;'S%^;'S;=`%o<%lO%^`%cSo`Oy%^z;'S%^;'S;=`%o<%lO%^`%rP;=`<%l%^~%zh#Z~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^~'mh#Z~o`OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^l)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o<%lO%^l)sUo`Oy%^z#a%^#a#b*V#b;'S%^;'S;=`%o<%lO%^l*[Uo`Oy%^z#d%^#d#e*n#e;'S%^;'S;=`%o<%lO%^l*sUo`Oy%^z#c%^#c#d+V#d;'S%^;'S;=`%o<%lO%^l+[Uo`Oy%^z#f%^#f#g+n#g;'S%^;'S;=`%o<%lO%^l+sUo`Oy%^z#h%^#h#i,V#i;'S%^;'S;=`%o<%lO%^l,[Uo`Oy%^z#T%^#T#U,n#U;'S%^;'S;=`%o<%lO%^l,sUo`Oy%^z#b%^#b#c-V#c;'S%^;'S;=`%o<%lO%^l-[Uo`Oy%^z#h%^#h#i-n#i;'S%^;'S;=`%o<%lO%^l-uS!X[o`Oy%^z;'S%^;'S;=`%o<%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o<%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`<%l.R<%lO.R~/rP;=`<%l.Rn/zYxQOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o<%lO%^l0oYo`Oy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o<%lO%^l1dYo`Oy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o<%lO%^l2ZYf[o`Oy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o<%lO%^l3QYf[o`Oy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o<%lO%^l3uYo`Oy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o<%lO%^l4lYf[o`Oy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o<%lO%^l5aYo`Oy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o<%lO%^l6WSf[o`Oy%^z;'S%^;'S;=`%o<%lO%^d6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^d7QS|So`Oy%^z;'S%^;'S;=`%o<%lO%^b7cSXQOy%^z;'S%^;'S;=`%o<%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W<%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`<%l7o<%lO7o~9ZP;=`<%l7on9cSb^Oy%^z;'S%^;'S;=`%o<%lO%^~9tOa~n9{UUQjWOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^n:fWjW!RQOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^l;nYo`#e[Oy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^l<%lO%^l=WUo`Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l=qUo`#e[Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l>[[o`#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^n?VSt^Oy%^z;'S%^;'S;=`%o<%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^n@VU#bQOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o<%lO%^~AUSo`#[~Oy%^z;'S%^;'S;=`%o<%lO%^lAg[#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o<%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o<%lO%^nC^S!Y^Oy%^z;'S%^;'S;=`%o<%lO%^dCoS|SOy%^z;'S%^;'S;=`%o<%lO%^bDQU!OQOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o<%lO%^bDkS!OQo`Oy%^z;'S%^;'S;=`%o<%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bEk[![Qo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^nFfSq^Oy%^z;'S%^;'S;=`%o<%lO%^nFwSp^Oy%^z;'S%^;'S;=`%o<%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o<%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o<%lO%^bHYS!bQo`Oy%^z;'S%^;'S;=`%o<%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o<%lO%^fIQS!TUOy%^z;'S%^;'S;=`%o<%lO%^nIcS!S^Oy%^z;'S%^;'S;=`%o<%lO%^fItU!RQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^`JZP;=`<%l$}",
+ tokenizers: [
+ tokens_js.descendant,
+ tokens_js.unitToken,
+ tokens_js.identifiers,
+ 1,
+ 2,
+ 3,
+ 4,
+ new lr.LocalTokenGroup('m~RRYZ[z{a~~g~aO#^~~dP!P!Qg~lO#_~~', 28, 105),
+ ],
+ topRules: { StyleSheet: [0, 4], Styles: [1, 86] },
+ specialized: [
+ { term: 100, get: (value) => spec_callee[value] || -1 },
+ { term: 58, get: (value) => spec_AtKeyword[value] || -1 },
+ { term: 101, get: (value) => spec_identifier[value] || -1 },
+ ],
+ tokenPrec: 1249,
+});
+
+exports.parser = parser;
diff --git a/src/lib/codemirror/lang-css/index.d.cts b/src/lib/codemirror/lang-css/index.d.cts
new file mode 100644
index 0000000..333353f
--- /dev/null
+++ b/src/lib/codemirror/lang-css/index.d.cts
@@ -0,0 +1,3 @@
+import { LRParser } from '@lezer/lr';
+
+export const parser: LRParser;
diff --git a/src/lib/codemirror/lang-css/index.d.ts b/src/lib/codemirror/lang-css/index.d.ts
new file mode 100644
index 0000000..333353f
--- /dev/null
+++ b/src/lib/codemirror/lang-css/index.d.ts
@@ -0,0 +1,3 @@
+import { LRParser } from '@lezer/lr';
+
+export const parser: LRParser;
diff --git a/src/lib/codemirror/lang-css/index.js b/src/lib/codemirror/lang-css/index.js
new file mode 100644
index 0000000..5f1aaf7
--- /dev/null
+++ b/src/lib/codemirror/lang-css/index.js
@@ -0,0 +1,70 @@
+import { LRParser, LocalTokenGroup } from '@lezer/lr';
+import { descendant, unitToken, identifiers } from './tokens.js';
+import { cssHighlighting } from './highlight.js';
+
+// This file was generated by lezer-generator. You probably shouldn't edit it.
+const spec_callee = {
+ __proto__: null,
+ lang: 32,
+ 'nth-child': 32,
+ 'nth-last-child': 32,
+ 'nth-of-type': 32,
+ 'nth-last-of-type': 32,
+ dir: 32,
+ 'host-context': 32,
+ url: 60,
+ 'url-prefix': 60,
+ domain: 60,
+ regexp: 60,
+ selector: 138,
+};
+const spec_AtKeyword = {
+ __proto__: null,
+ '@import': 118,
+ '@media': 142,
+ '@charset': 146,
+ '@namespace': 150,
+ '@keyframes': 156,
+ '@supports': 168,
+};
+const spec_identifier = { __proto__: null, not: 132, only: 132 };
+const parser = LRParser.deserialize({
+ version: 14,
+ states:
+ ":^QYQ[OOOYQ[OOP!aOWOOO!fQXO'#CdOOQP'#Cc'#CcO#ZQ[O'#CfO#}QXO'#CaO$UQ[O'#ChO$aQ[O'#DTO$fQ[O'#DWOOQP'#Em'#EmO$kQWO'#DcO$pQWO'#EsQ${Q[O'#EsO&SQdO'#DgO&qQ[O'#DtO&SQdO'#DvO'SQ[O'#DxO'_Q[O'#D{O'gQ[O'#ERO'uQ[O'#ETOOQS'#El'#ElOOQS'#EW'#EWQOQWOOO'|Q[O'#EsP(TO#tO'#C_POOO)C@[)C@[OOQP'#Cg'#CgOOQP,59Q,59QO#ZQ[O,59QO(`Q[O'#E[O(zQWO,58{O)SQ[O,59SO$aQ[O,59oO$fQ[O,59rO(`Q[O,59uO(`Q[O,59wO(`Q[O,59xO*cQ[O'#DbOOQS,58{,58{OOQP'#Ck'#CkOOQO'#DR'#DROOQP,59S,59SO*jQWO,59SO*oQWO,59SOOQP'#DV'#DVOOQP,59o,59oOOQO'#DX'#DXO*tQ`O,59rO&SQdO,59}O*|Q[O'#E^O+ZQWO,5;_O+ZQWO,5;_OOQS-E8U-E8UOOQS'#Cp'#CpO&SQdO'#CqO+fQvO'#CsO,vQtO,5:ROOQO'#Cx'#CxO*oQWO'#CwO-[QWO'#CyO-aQ[O'#DOOOQS'#Ep'#EpOOQO'#Dj'#DjO-iQ[O'#DqO-wQWO'#EtO'gQ[O'#DoO.VQWO'#DrOOQO'#Eu'#EuO(}QWO,5:`O.[QpO,5:bOOQS'#Dz'#DzO.dQWO,5:dO.iQ[O,5:dOOQO'#D}'#D}O.qQWO,5:gO.vQWO,5:mO/OQWO,5:oPOOO'#EV'#EVP/WO#tO,58yPOOO,58y,58yOOQP1G.l1G.lOOQP'#Cd'#CdO/}QXO,5:vOOQO-E8Y-E8YOOQS1G.g1G.gOOQP1G.n1G.nO*jQWO1G.nO*oQWO1G.nOOQP1G/Z1G/ZO0[Q`O1G/^O0uQXO1G/aO1]QXO1G/cO1sQXO1G/dO2ZQWO,59|O2`Q[O'#DSO2gQdO'#CoOOQP1G/^1G/^O&SQdO1G/^O2nQtO1G/iOOQO,5:x,5:xO3UQ[O,5:xOOQO-E8[-E8[O3cQWO1G0yO3nQpO,59]OOQS,59_,59_O&SQdO,59aO3vQWO1G/mOOQS,59c,59cO3{Q!bO,59eOOQS'#DP'#DPOOQS'#EY'#EYO4TQ[O,59jOOQS,59j,59jO4]QWO'#DjO4hQWO,5:VO4mQWO,5:]O'gQ[O,5:XO'gQ[O'#E_O4uQWO,5;`O5QQWO,5:ZO(`Q[O,5:^OOQS1G/z1G/zOOQS1G/|1G/|OOQS1G0O1G0OO5cQWO1G0OO5hQdO'#EOOOQS1G0R1G0ROOQS1G0X1G0XOOQS1G0Z1G0ZPOOO-E8T-E8TPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$x7+$xO&SQdO7+$xOOQS1G/h1G/hO5sQXO'#ErO5zQWO,59nO6PQtO'#EXO6wQdO'#EoO7RQWO,59ZO7WQpO7+$xO7`QtO'#E]O&SQdO'#E]O8aQdO7+%TOOQO7+%T7+%TOOQO1G0d1G0dOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%X7+%XO8tQWO1G/POOQS-E8W-E8WOOQS1G/U1G/UO&SQdO1G/qOOQO1G/w1G/wOOQO1G/s1G/sO8yQWO,5:yOOQO-E8]-E8]O9XQXO1G/xOOQS7+%j7+%jO9`QYO'#CsOOQO'#EQ'#EQO9kQ`O'#EPOOQO'#EP'#EPO9vQWO'#E`O:OQdO,5:jOOQS,5:j,5:jO:ZQpO<<<<<OAN>OO;{QdO,5:uOOQO-E8X-E8XOOQO<<<_~O#ZOS#[QQ~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO#U#gP~O#[iO~O]WX]!WX^WXqWXtWXxWX!OWX!RWX!TWX#VWX#bWX~O#XkO~O]pO^pOqrOtnOxqO!OsO!RuO#VtO#bmO~O!TvO~P#`O`|O#WyO#XxO~O#X}O~O#X!PO~O]!RO~O!Y!SO#U#gX!S#gX~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO#U#gX~OQ!`Ob!XOf!`Oh!`On!^Oq!_O#W![O#X!WO#e!YO~Ob!bO!d!dO!g!eO#X!aO!T#hP~Oh!jOn!^O#X!iO~Oh!lO#X!lO~Ob!bO!d!dO!g!eO#X!aO~O!Y#hP~P&qO!S#gX~P${O#]!pO#^!pO#_!rO~OUYOXYO]VO^VOqXOxWO#X!tO#bTO~OtnO!TvO~O`!zO#WyO#XxO~OQZOUYOXYO]VO^VOqXOxWO![dO!]^O!i_O!k`O!maO!pbO!vcO#XRO#bTO~O!S#gP~P)_Ob#RO~Ob#SO~Op#TO|#UO~O!Y#QX#U#QX!S#QX~P)_O!Y!SO#U#ga!S#ga~OP#]ObgXjgX!YgX!dgX!ggX#XgXQgXfgXhgXngXqgXtgX!XgX#UgX#WgX#egXagXpgX!SgX~Ob!bOj#^O!d!dO!g!eO#X!aO!Y#hP~Ob#aO~Op#eO#X#bO~Ob!bO!d!dO!g!eO#X#fO~Ot#jO!b#iO!T#hX!Y#hX~Ob#mO~Oj#^O!Y#oO~O!Y#pO~Oh#qOn!^O~O!T#rO~O!TvO!b#iO~O!TvO!Y#uO~O#]!pO#^!pO#_#wO~O]pO^pOqrOxqO!OsO!RuO#VtO#bmO~Ot#Oa!T#Oaa#Oa~P/cOp#yO|#zO~O]pO^pOqrOxqO#bmO~Ot}i!O}i!R}i!T}i#V}ia}i~P0dOt!Pi!O!Pi!R!Pi!T!Pi#V!Pia!Pi~P0dOt!Qi!O!Qi!R!Qi!T!Qi#V!Qia!Qi~P0dO!S#{O~Oa#fP~P(`Oa#cP~P&SOj#^Ot$TO!X$VO!Y!Vi#U!Vi!S!Vi~P&SO!Y#Qa#U#Qa!S#Qa~P)_O!Y!SO#U#gi!S#gi~Oa$XOj#^O~O!Y$ZO~Oh$[Oo$[O~Op$^O#X#bO~O]!`Xa!^X!b!^X~O]$_O~Oa$`O!b#iO~Ot#jO!T#ha!Y#ha~O!b#iOt!ca!T!ca!Y!caa!ca~O!Y$eO~O!S$lO#X$gO#e$fO~Oa#fX~P#`Oa$oO~Oj#^OQ!{Xa!{Xb!{Xf!{Xh!{Xn!{Xq!{Xt!{X#W!{X#X!{X#e!{X~Ot$qOa#cX~P&SOa$sO~Oj#^Op$tO~Oj#^OQ#PXb#PXf#PXh#PXn#PXq#PXt#PX!X#PX!Y#PX#U#PX#W#PX#X#PX#e#PX!S#PX~Ot$TO!X$wO!Y!Vq#U!Vq!S!Vq~P&SOa$xO~O!b#iOt#Ra!T#Ra!Y#Ra~Oa$zO~P/cOP#]OtgX!TgX~O#e$fOt!sX!T!sX~Ot$|O!TvO~O!S%QO#X$gO#e$fO~Oj#^Op%RO~OtnOa#fa~Ot$qOa#ca~Oj#^OQ#Pab#Paf#Pah#Pan#Paq#Pat#Pa!X#Pa!Y#Pa#U#Pa#W#Pa#X#Pa#e#Pa!S#Pa~Oa%UO~P&SOa!}at!}a~P&SO#Zo#[#ej!R#e~',
+ goto: "-l#jPPP#kP#nP#w$WP#w$g#wPP$mPPP$s$|$|P%`P$|P$|%z&^PPPP$|&vP&z'Q#wP'W#w'^P#wP#w#wPPP'd'y(YPP#nPP(c(c(m(cP(cP(c(cP#nP#nP#nP(p#nP(s(v(y)Q#nP#nP)V)])l)z*Q*W*b*h*r*x+OPPPPPPPPPP+U+_P+z+}P,s,v,}-WRjQ_eOP]hv!S#XkYOP]hnstuv!S#R#X#mkSOP]hnstuv!S#R#X#mQlTR!smQzVR!xpQ!x|Q#`!]R#x!zq!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%Sp!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%SU$i#r$k$|R${$hq!]^`!R!X#S#U#V#^#z$P$T$U$_$q$y%Sp!`^`!R!X#S#U#V#^#z$P$T$U$_$q$y%SQ!jaR#q!kT#c!_#dQ{VR!ypQ!x{R#x!yQ!OWR!{qQ!QXR!|rQwUQ!woQ#n!gQ#t!nQ#u!oQ%O$jR%X$}U[OPvS!U]hQ#W!SR$W#X_ZOP]hv!S#Xa!f_cd!Z!b!d#i#jR#g!bR!kaR!mbR#s!mS$j#r$kR%V$|V$h#r$k$|Q!qiR#v!qQ]OShPvU!V]h#XR#X!SQ$P#SU$p$P$y%SQ$y$_R%S$qQ#d!_R$]#dQ$r$PR%T$rQoUS!vo$nR$n#|Q$U#VR$v$UQ!T[S#Y!T#ZR#Z!UQ#k!cR$c#kQ$k#rR%P$kQ$}$jR%W$}_fOP]hv!S#X^UOP]hv!S#XQ!unQ!}sQ#OtQ#PuQ#|#RR$d#mR$Q#SQ!Z^Q!h`Q#V!RQ#[!X[$O#S$P$_$q$y%SQ$R#US$S#V$UQ$Y#^Q$m#zR$u$TR#}#RSgOPR#QvQ!g_Q!odR#_!ZU!c_d!ZQ!ncQ#h!bQ#l!dQ$a#iR$b#j",
+ nodeNames:
+ '⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName , PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports AtRule Styles',
+ maxTerm: 117,
+ nodeProps: [
+ ['isolate', -2, 3, 24, ''],
+ ['openedBy', 17, '(', 32, '[', 50, '{'],
+ ['closedBy', 18, ')', 33, ']', 51, '}'],
+ ],
+ propSources: [cssHighlighting],
+ skippedNodes: [0, 3, 87],
+ repeatNodeCount: 11,
+ tokenData:
+ "J^~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Ab![!]B]!]!^CX!^!_$}!_!`Cj!`!aC{!a!b$}!b!cDw!c!}$}!}#OFa#O#P$}#P#QFr#Q#R6d#R#T$}#T#UGT#U#c$}#c#dHf#d#o$}#o#pH{#p#q6d#q#rI^#r#sIo#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`JW<%lO$}`%QSOy%^z;'S%^;'S;=`%o<%lO%^`%cSo`Oy%^z;'S%^;'S;=`%o<%lO%^`%rP;=`<%l%^~%zh#Z~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^~'mh#Z~o`OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o<%lO%^l)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o<%lO%^l)sUo`Oy%^z#a%^#a#b*V#b;'S%^;'S;=`%o<%lO%^l*[Uo`Oy%^z#d%^#d#e*n#e;'S%^;'S;=`%o<%lO%^l*sUo`Oy%^z#c%^#c#d+V#d;'S%^;'S;=`%o<%lO%^l+[Uo`Oy%^z#f%^#f#g+n#g;'S%^;'S;=`%o<%lO%^l+sUo`Oy%^z#h%^#h#i,V#i;'S%^;'S;=`%o<%lO%^l,[Uo`Oy%^z#T%^#T#U,n#U;'S%^;'S;=`%o<%lO%^l,sUo`Oy%^z#b%^#b#c-V#c;'S%^;'S;=`%o<%lO%^l-[Uo`Oy%^z#h%^#h#i-n#i;'S%^;'S;=`%o<%lO%^l-uS!X[o`Oy%^z;'S%^;'S;=`%o<%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o<%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`<%l.R<%lO.R~/rP;=`<%l.Rn/zYxQOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o<%lO%^l0oYo`Oy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o<%lO%^l1dYo`Oy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o<%lO%^l2ZYf[o`Oy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o<%lO%^l3QYf[o`Oy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o<%lO%^l3uYo`Oy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o<%lO%^l4lYf[o`Oy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o<%lO%^l5aYo`Oy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o<%lO%^l6WSf[o`Oy%^z;'S%^;'S;=`%o<%lO%^d6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^d7QS|So`Oy%^z;'S%^;'S;=`%o<%lO%^b7cSXQOy%^z;'S%^;'S;=`%o<%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W<%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`<%l7o<%lO7o~9ZP;=`<%l7on9cSb^Oy%^z;'S%^;'S;=`%o<%lO%^~9tOa~n9{UUQjWOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^n:fWjW!RQOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^l;nYo`#e[Oy%^z!Q%^!Q![;g![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^l<%lO%^l=WUo`Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l=qUo`#e[Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o<%lO%^l>[[o`#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^n?VSt^Oy%^z;'S%^;'S;=`%o<%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o<%lO%^n@VU#bQOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o<%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o<%lO%^~AUSo`#[~Oy%^z;'S%^;'S;=`%o<%lO%^lAg[#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h<^!h#X%^#X#Y<^#Y;'S%^;'S;=`%o<%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o<%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o<%lO%^nC^S!Y^Oy%^z;'S%^;'S;=`%o<%lO%^dCoS|SOy%^z;'S%^;'S;=`%o<%lO%^bDQU!OQOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o<%lO%^bDkS!OQo`Oy%^z;'S%^;'S;=`%o<%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^bEk[![Qo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o<%lO%^nFfSq^Oy%^z;'S%^;'S;=`%o<%lO%^nFwSp^Oy%^z;'S%^;'S;=`%o<%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o<%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o<%lO%^bHYS!bQo`Oy%^z;'S%^;'S;=`%o<%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o<%lO%^fIQS!TUOy%^z;'S%^;'S;=`%o<%lO%^nIcS!S^Oy%^z;'S%^;'S;=`%o<%lO%^fItU!RQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o<%lO%^`JZP;=`<%l$}",
+ tokenizers: [
+ descendant,
+ unitToken,
+ identifiers,
+ 1,
+ 2,
+ 3,
+ 4,
+ new LocalTokenGroup('m~RRYZ[z{a~~g~aO#^~~dP!P!Qg~lO#_~~', 28, 105),
+ ],
+ topRules: { StyleSheet: [0, 4], Styles: [1, 86] },
+ specialized: [
+ { term: 100, get: (value) => spec_callee[value] || -1 },
+ { term: 58, get: (value) => spec_AtKeyword[value] || -1 },
+ { term: 101, get: (value) => spec_identifier[value] || -1 },
+ ],
+ tokenPrec: 1249,
+});
+
+export { parser };
diff --git a/src/lib/codemirror/lang-css/parser.terms.js b/src/lib/codemirror/lang-css/parser.terms.js
new file mode 100644
index 0000000..241451e
--- /dev/null
+++ b/src/lib/codemirror/lang-css/parser.terms.js
@@ -0,0 +1,36 @@
+// This file was generated by lezer-generator. You probably shouldn't edit it.
+export const descendantOp = 99,
+ Unit = 1,
+ callee = 100,
+ identifier = 101,
+ VariableName = 2,
+ Comment = 3,
+ StyleSheet = 4,
+ RuleSet = 5,
+ UniversalSelector = 6,
+ NestingSelector = 9,
+ ColorLiteral = 22,
+ NumberLiteral = 23,
+ StringLiteral = 24,
+ BinOp = 26,
+ CallExpression = 27,
+ CallLiteral = 29,
+ ParenthesizedContent = 31,
+ MatchOp = 44,
+ ChildOp = 46,
+ SiblingOp = 49,
+ Block = 52,
+ Declaration = 53,
+ Important = 55,
+ ImportStatement = 57,
+ AtKeyword = 58,
+ LogicOp = 64,
+ MediaStatement = 70,
+ CharsetStatement = 72,
+ NamespaceStatement = 74,
+ KeyframesStatement = 77,
+ KeyframeList = 80,
+ KeyframeSelector = 81,
+ SupportsStatement = 83,
+ AtRule = 85,
+ Styles = 86;
diff --git a/src/lib/codemirror/lang-css/tokens.js b/src/lib/codemirror/lang-css/tokens.js
new file mode 100644
index 0000000..b0afe8a
--- /dev/null
+++ b/src/lib/codemirror/lang-css/tokens.js
@@ -0,0 +1,98 @@
+/* Hand-written tokenizers for CSS tokens that can't be
+ expressed by Lezer's built-in tokenizer. */
+
+import { ExternalTokenizer } from '@lezer/lr';
+import {
+ callee,
+ identifier,
+ VariableName,
+ descendantOp,
+ Unit,
+} from './parser.terms.js';
+
+const space = [
+ 9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197,
+ 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288,
+];
+const colon = 58,
+ parenL = 40,
+ underscore = 95,
+ bracketL = 91,
+ dash = 45,
+ period = 46,
+ hash = 35,
+ percent = 37,
+ ampersand = 38,
+ backslash = 92,
+ newline = 10;
+
+function isAlpha(ch) {
+ return (ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122) || ch >= 161;
+}
+
+function isDigit(ch) {
+ return ch >= 48 && ch <= 57;
+}
+
+export const identifiers = new ExternalTokenizer((input, stack) => {
+ for (let inside = false, dashes = 0, i = 0; ; i++) {
+ let { next } = input;
+ if (
+ isAlpha(next) ||
+ next == dash ||
+ next == underscore ||
+ (inside && isDigit(next))
+ ) {
+ if (!inside && (next != dash || i > 0)) inside = true;
+ if (dashes === i && next == dash) dashes++;
+ input.advance();
+ } else if (next == backslash && input.peek(1) != newline) {
+ input.advance();
+ if (input.next > -1) input.advance();
+ inside = true;
+ } else {
+ if (inside)
+ input.acceptToken(
+ next == parenL
+ ? callee
+ : dashes == 2 && stack.canShift(VariableName)
+ ? VariableName
+ : identifier,
+ );
+ break;
+ }
+ }
+});
+
+export const descendant = new ExternalTokenizer((input) => {
+ if (space.includes(input.peek(-1))) {
+ let { next } = input;
+ if (
+ isAlpha(next) ||
+ next == underscore ||
+ next == hash ||
+ next == period ||
+ next == bracketL ||
+ (next == colon && isAlpha(input.peek(1))) ||
+ next == dash ||
+ next == ampersand
+ )
+ input.acceptToken(descendantOp);
+ }
+});
+
+export const unitToken = new ExternalTokenizer((input) => {
+ if (!space.includes(input.peek(-1))) {
+ let { next } = input;
+ if (next == percent) {
+ input.advance();
+ input.acceptToken(Unit);
+ }
+ if (isAlpha(next)) {
+ do {
+ input.advance();
+ } while (isAlpha(input.next));
+ input.acceptToken(Unit);
+ }
+ }
+});
diff --git a/src/lib/codemirror/theme.ts b/src/lib/codemirror/theme.ts
new file mode 100644
index 0000000..1a9346c
--- /dev/null
+++ b/src/lib/codemirror/theme.ts
@@ -0,0 +1,115 @@
+import { tags as t } from '@lezer/highlight';
+import { createTheme } from '@uiw/codemirror-themes';
+import type { CreateThemeOptions } from '@uiw/codemirror-themes';
+
+export const defaultSettingsTheme: CreateThemeOptions['settings'] = {
+ background: '#1e1e1e',
+ foreground: '#9cdcfe',
+ caret: '#c6c6c6',
+ selection: '#6199ff2f',
+ selectionMatch: '#72a1ff59',
+ lineHighlight: '#ffffff0f',
+ gutterBackground: '#1e1e1e',
+ gutterForeground: '#838383',
+ gutterActiveForeground: '#fff',
+};
+
+// Colors from https://www.nordtheme.com/docs/colors-and-palettes
+export const themeInit = (options?: Partial) => {
+ const { theme = 'dark', settings = {}, styles = [] } = options || {};
+ return createTheme({
+ theme: theme,
+ settings: {
+ ...defaultSettingsTheme,
+ ...settings,
+ },
+ styles: [
+ {
+ tag: [
+ t.keyword,
+ t.operatorKeyword,
+ t.modifier,
+ t.color,
+ t.constant(t.name),
+ t.standard(t.name),
+ t.standard(t.tagName),
+ t.special(t.brace),
+ t.atom,
+ t.bool,
+ t.special(t.variableName),
+ ],
+ color: '#569cd6',
+ },
+ {
+ tag: [t.controlKeyword, t.moduleKeyword],
+ color: '#c586c0',
+ },
+ {
+ tag: [
+ t.name,
+ t.deleted,
+ t.character,
+ t.macroName,
+ t.propertyName,
+ t.variableName,
+ t.labelName,
+ t.definition(t.name),
+ ],
+ color: '#9cdcfe',
+ },
+ { tag: t.heading, fontWeight: 'bold', color: '#9cdcfe' },
+ {
+ tag: [
+ t.typeName,
+ t.className,
+ t.tagName,
+ t.number,
+ t.changed,
+ t.annotation,
+ t.self,
+ t.namespace,
+ ],
+ color: '#4ec9b0',
+ },
+ {
+ tag: [t.function(t.variableName), t.function(t.propertyName)],
+ color: '#dcdcaa',
+ },
+ { tag: [t.number], color: '#b5cea8' },
+ {
+ tag: [
+ t.operator,
+ t.punctuation,
+ t.separator,
+ t.url,
+ t.escape,
+ t.regexp,
+ ],
+ color: '#d4d4d4',
+ },
+ {
+ tag: [t.regexp],
+ color: '#d16969',
+ },
+ {
+ tag: [
+ t.special(t.string),
+ t.processingInstruction,
+ t.string,
+ t.inserted,
+ ],
+ color: '#ce9178',
+ },
+ { tag: [t.angleBracket], color: '#808080' },
+ { tag: t.strong, fontWeight: 'bold' },
+ { tag: t.emphasis, fontStyle: 'italic' },
+ { tag: t.strikethrough, textDecoration: 'line-through' },
+ { tag: [t.meta, t.comment], color: '#6a9955' },
+ { tag: t.link, color: '#6a9955', textDecoration: 'underline' },
+ { tag: t.invalid, color: '#ff0000' },
+ ...styles,
+ ],
+ });
+};
+
+export const theme = themeInit();
diff --git a/src/lib/comps-ui.js b/src/lib/comps-ui.js
deleted file mode 100644
index 496ba1d..0000000
--- a/src/lib/comps-ui.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import UiButton from '../components/ui/Button.vue';
-import UiIcon from '../components/ui/Icon.vue';
-import UiSelect from '../components/ui/Select.vue';
-import UiSpinner from '../components/ui/Spinner.vue';
-import UiPrismEditor from '../components/ui/PrismEdtior.vue';
-import UiElementProperties from '../components/ui/ElementProperties/index.vue';
-
-export default {
- install(app) {
- app.component('UiIcon', UiIcon);
- app.component('UiButton', UiButton);
- app.component('UiSelect', UiSelect);
- app.component('UiSpinner', UiSpinner);
- app.component('UiPrismEditor', UiPrismEditor);
- app.component('UiElementProperties', UiElementProperties);
- },
-};
diff --git a/src/lib/icons.js b/src/lib/icons.js
deleted file mode 100644
index 7457280..0000000
--- a/src/lib/icons.js
+++ /dev/null
@@ -1,19 +0,0 @@
-export default {
- close: '',
- 'focus-line-3': '',
- pause: '',
- 'arrow-left': '',
- grid: '',
- 'edit-box': '',
- image: '',
- 'code-s-slash': '',
- palette: '',
- 'font-size': '',
- cursor: '',
- 'file-copy': '',
- add: '',
- 'delete-bin': '',
- download: '',
- restart: '',
- github: '',
-};
diff --git a/src/lib/mitt.ts b/src/lib/mitt.ts
new file mode 100644
index 0000000..29a6a2f
--- /dev/null
+++ b/src/lib/mitt.ts
@@ -0,0 +1,11 @@
+import mitt from 'mitt';
+import { ElementProperties } from '../utils/getElProperties';
+
+export type EmitterEvents = {
+ 'content:remove-selected': void;
+ 'content:el-selected': { el: Element; properties: ElementProperties };
+};
+
+export const emitter = mitt();
+
+export default mitt;
diff --git a/src/manifest.json b/src/manifest.json
deleted file mode 100644
index 78463c6..0000000
--- a/src/manifest.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "manifest_version": 2,
- "name": "__MSG_extName__",
- "description": "The easiest way to inspect and edit CSS.",
- "default_locale": "en",
- "permissions": ["activeTab"],
- "icons": {
- "48": "icons/48.png",
- "128": "icons/128.png"
- },
- "background": {
- "scripts": [
- "js/background.js"
- ],
- "persistent": false
- },
- "browser_action": {}
-}
diff --git a/src/pages/background/index.ts b/src/pages/background/index.ts
new file mode 100644
index 0000000..df1454d
--- /dev/null
+++ b/src/pages/background/index.ts
@@ -0,0 +1,56 @@
+import RuntimeMessage from '@root/src/utils/RuntimeMessage';
+import reloadOnUpdate from 'virtual:reload-on-update-in-background-script';
+import Browser from 'webextension-polyfill';
+
+reloadOnUpdate('pages/background');
+
+async function injectContentScript(tabId: number) {
+ try {
+ const isInjected = await new Promise((resolve) => {
+ Browser.tabs
+ .sendMessage(tabId, { type: 'init' })
+ .then(() => resolve(true))
+ .catch(() => resolve(false));
+ });
+ if (isInjected) return;
+
+ await Browser.scripting.executeScript({
+ target: { tabId },
+ files: ['/src/pages/content/index.js'],
+ });
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+Browser.action.onClicked.addListener((tab) => {
+ if (!tab.id) return;
+
+ injectContentScript(tab.id);
+});
+
+// DEV ONLY
+if (import.meta.env.MODE === 'development') {
+ Browser.tabs.onUpdated.addListener((tabId, changeInfo) => {
+ if (!changeInfo.status || changeInfo.status !== 'complete') return;
+
+ Browser.tabs.get(tabId).then((tab) => {
+ if (!tab.url || !tab.url.includes('localhost')) return;
+
+ injectContentScript(tabId);
+ });
+ });
+}
+
+RuntimeMessage.onMessage('background:screenshot-tab', (sender) => {
+ if (!sender.tab?.windowId) return Promise.resolve('');
+
+ return Browser.tabs.captureVisibleTab(sender.tab.windowId, { quality: 70 });
+});
+
+/**
+ * Extension reloading is necessary because the browser automatically caches the css.
+ * If you do not use the css of the content script, please delete it.
+ */
+
+console.log('background loaded');
diff --git a/src/pages/components/custom-css/CustomCSSElements.vue b/src/pages/components/custom-css/CustomCSSElements.vue
new file mode 100644
index 0000000..be5ee29
--- /dev/null
+++ b/src/pages/components/custom-css/CustomCSSElements.vue
@@ -0,0 +1,136 @@
+
+
+ No changes
+
+
+
+ Reset all
+
+
+
+ {{ isCopied === 'all' ? '✅ Copied' : 'Copy changes' }}
+
+
+
+ -
+
+
+
+ ✅
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/components/custom-css/CustomCSSGlobal.vue b/src/pages/components/custom-css/CustomCSSGlobal.vue
new file mode 100644
index 0000000..e5668fe
--- /dev/null
+++ b/src/pages/components/custom-css/CustomCSSGlobal.vue
@@ -0,0 +1,53 @@
+
+
+
+
diff --git a/src/pages/components/dom-navigation/DomNavigationItem.vue b/src/pages/components/dom-navigation/DomNavigationItem.vue
new file mode 100644
index 0000000..10337ac
--- /dev/null
+++ b/src/pages/components/dom-navigation/DomNavigationItem.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ {{ nodeObject.tagName }}
+
+ (
+
+ {{ attrKey }}="{{
+ attrValue
+ }}"
+
+ )
+
+
+ "{{ nodeObject.textContent }}"
+
+
+
+
+
+
+
+
diff --git a/src/pages/components/ui/UiButton.vue b/src/pages/components/ui/UiButton.vue
new file mode 100644
index 0000000..cbd4174
--- /dev/null
+++ b/src/pages/components/ui/UiButton.vue
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/src/pages/components/ui/UiCodemirror.vue b/src/pages/components/ui/UiCodemirror.vue
new file mode 100644
index 0000000..cc1b341
--- /dev/null
+++ b/src/pages/components/ui/UiCodemirror.vue
@@ -0,0 +1,83 @@
+
+
+
+
diff --git a/src/pages/components/ui/UiElementProperties.vue b/src/pages/components/ui/UiElementProperties.vue
new file mode 100644
index 0000000..12658b5
--- /dev/null
+++ b/src/pages/components/ui/UiElementProperties.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+ {{ properties.computedStyles.fontFamily }}
+ {{ properties.computedStyles.fontSize }}px
+
+
+
+
+
+ {{ Math.floor(properties.size.width) }}x{{
+ Math.floor(properties.size.height)
+ }}
+
+
+
+
+
diff --git a/src/pages/components/ui/UiElementSelector.vue b/src/pages/components/ui/UiElementSelector.vue
new file mode 100644
index 0000000..9e426aa
--- /dev/null
+++ b/src/pages/components/ui/UiElementSelector.vue
@@ -0,0 +1,24 @@
+
+
+
+ {{ selector.tag }}
+
+
+ {{ selector.id }}
+
+
+ {{ selector.classes }}
+
+
+
+
diff --git a/src/pages/components/ui/UiElementSpacing.vue b/src/pages/components/ui/UiElementSpacing.vue
new file mode 100644
index 0000000..f3df7d9
--- /dev/null
+++ b/src/pages/components/ui/UiElementSpacing.vue
@@ -0,0 +1,35 @@
+
+
+ {{ title }}
+
+ {{ computedStyles[`${title}-${direction}`] }}
+
+
+
+
+
diff --git a/src/pages/components/ui/UiPopover.vue b/src/pages/components/ui/UiPopover.vue
new file mode 100644
index 0000000..f728e73
--- /dev/null
+++ b/src/pages/components/ui/UiPopover.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/components/ui/UiSwitch.vue b/src/pages/components/ui/UiSwitch.vue
new file mode 100644
index 0000000..412746c
--- /dev/null
+++ b/src/pages/components/ui/UiSwitch.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
diff --git a/src/pages/components/ui/UiTooltip.vue b/src/pages/components/ui/UiTooltip.vue
new file mode 100644
index 0000000..2c66cc0
--- /dev/null
+++ b/src/pages/components/ui/UiTooltip.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ {{ label }}
+
+
+
+
diff --git a/src/pages/content/index.ts b/src/pages/content/index.ts
new file mode 100644
index 0000000..36ec8e3
--- /dev/null
+++ b/src/pages/content/index.ts
@@ -0,0 +1,10 @@
+/**
+ * DO NOT USE import someModule from '...';
+ *
+ * @issue-url https://github.com/Jonghakseo/chrome-extension-boilerplate-react-vite/issues/160
+ *
+ * Chrome extensions don't support modules in content scripts.
+ * If you want to use other modules in content scripts, you need to import them via these files.
+ *
+ */
+import('@pages/content/ui');
diff --git a/src/pages/content/ui/App.vue b/src/pages/content/ui/App.vue
new file mode 100644
index 0000000..9a6f897
--- /dev/null
+++ b/src/pages/content/ui/App.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app-plugin.ts b/src/pages/content/ui/app-plugin.ts
new file mode 100644
index 0000000..6fd51a0
--- /dev/null
+++ b/src/pages/content/ui/app-plugin.ts
@@ -0,0 +1,135 @@
+import settingsStorage from '@root/src/storages/settings.storage';
+import { ElementAppliedStyleRules } from '@root/src/utils/CSSRulesUtils';
+import { EL_IDS } from '@root/src/utils/constant';
+import { resetAppliedStyleValue } from '@root/src/utils/generate-element-css';
+import { ElementBasicSelector } from '@root/src/utils/getElProperties';
+import { Plugin, Ref, ref, inject, shallowReactive } from 'vue';
+
+export interface StyleData {
+ index: number;
+ items: Record;
+ dirtyItems: Ref>;
+}
+export interface StyleDataItem {
+ id: number;
+ elSelector: string;
+ basicSelector: ElementBasicSelector;
+ currentProps: ElementAppliedStyleRules;
+ initialProps: ElementAppliedStyleRules;
+}
+
+export interface AppState {
+ paused: boolean;
+ showGrid: boolean;
+ tempHide: boolean;
+ interactive: boolean;
+ hasGlobalCSS: boolean;
+}
+export interface AppStateProvider {
+ state: AppState;
+ destroy: () => void;
+ styleData: StyleData;
+ shadowRoot: ShadowRoot;
+ addDirtyStyleItem(id: number): void;
+ removeDirtyStyleItem(id: number): void;
+ updateState: (state: Partial) => void;
+ addStyleItem(
+ detail: Omit,
+ ): StyleDataItem;
+ updateStyleItem(id: number, detail: Partial): void;
+}
+
+const APP_PROVIDER_KEY = Symbol('app-provider');
+
+const styleData: StyleData = {
+ index: 0,
+ items: {},
+ dirtyItems: ref({}),
+};
+
+export function useAppProvider() {
+ const state = inject(APP_PROVIDER_KEY)!;
+
+ return state;
+}
+
+// To-do: use pinia?
+
+const defaultState: AppState = {
+ paused: false,
+ tempHide: false,
+ showGrid: false,
+ interactive: true,
+ hasGlobalCSS: false,
+};
+
+export const appPlugin: Plugin = {
+ install(app, shadowRoot: ShadowRoot) {
+ const appState = shallowReactive({ ...defaultState });
+
+ settingsStorage.get().then((settings) => {
+ Object.assign(appState, settings);
+ });
+
+ function updateState(newState: Partial) {
+ Object.assign(appState, newState);
+
+ if (
+ Object.hasOwn(newState, 'showGrid') ||
+ Object.hasOwn(newState, 'interactive')
+ ) {
+ settingsStorage.set({
+ showGrid: appState.showGrid,
+ interactive: appState.interactive,
+ });
+ }
+ }
+ function addStyleItem(detail: Omit) {
+ const data: StyleDataItem = {
+ ...detail,
+ id: styleData.index,
+ currentProps: detail.initialProps,
+ initialProps: resetAppliedStyleValue(detail.initialProps),
+ };
+ styleData.items[styleData.index] = data;
+ styleData.index += 1;
+
+ return data;
+ }
+ function updateStyleItem(id: number, detail: Partial) {
+ if (!Object.hasOwn(styleData.items, id)) return;
+
+ styleData.items[id] = {
+ ...styleData.items[id],
+ ...detail,
+ };
+ }
+ function addDirtyStyleItem(id: number) {
+ styleData.dirtyItems.value[id] = true;
+ }
+ function removeDirtyStyleItem(id: number) {
+ delete styleData.dirtyItems.value[id];
+ }
+
+ function destroy() {
+ Object.assign(appState, defaultState);
+
+ app.unmount();
+ shadowRoot.host.remove();
+
+ document.getElementById(EL_IDS.customCSS)?.remove();
+ }
+
+ app.provide(APP_PROVIDER_KEY, {
+ destroy,
+ styleData,
+ shadowRoot,
+ updateState,
+ addStyleItem,
+ state: appState,
+ updateStyleItem,
+ addDirtyStyleItem,
+ removeDirtyStyleItem,
+ });
+ },
+};
diff --git a/src/pages/content/ui/app/AppElementDetail.vue b/src/pages/content/ui/app/AppElementDetail.vue
new file mode 100644
index 0000000..88daa46
--- /dev/null
+++ b/src/pages/content/ui/app/AppElementDetail.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+ {{ elProperties.computedStyles.fontFamily }}
+ {{ elProperties.computedStyles.fontSize }}px
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/AppElementScanner.vue b/src/pages/content/ui/app/AppElementScanner.vue
new file mode 100644
index 0000000..399f703
--- /dev/null
+++ b/src/pages/content/ui/app/AppElementScanner.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+ | Space / Click |
+ Select element |
+
+
+ |
+ Arrow keys
+ |
+ Navigate element |
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/AppToolbar.vue b/src/pages/content/ui/app/AppToolbar.vue
new file mode 100644
index 0000000..af6e86f
--- /dev/null
+++ b/src/pages/content/ui/app/AppToolbar.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/detail/DetailAttributes.vue b/src/pages/content/ui/app/detail/DetailAttributes.vue
new file mode 100644
index 0000000..dc51124
--- /dev/null
+++ b/src/pages/content/ui/app/detail/DetailAttributes.vue
@@ -0,0 +1,195 @@
+
+
+
+
Attributes
+
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/detail/DetailCSSEditor.vue b/src/pages/content/ui/app/detail/DetailCSSEditor.vue
new file mode 100644
index 0000000..0d6583f
--- /dev/null
+++ b/src/pages/content/ui/app/detail/DetailCSSEditor.vue
@@ -0,0 +1,65 @@
+
+
+
+
diff --git a/src/pages/content/ui/app/detail/DetailElementHTML.vue b/src/pages/content/ui/app/detail/DetailElementHTML.vue
new file mode 100644
index 0000000..e6a87c2
--- /dev/null
+++ b/src/pages/content/ui/app/detail/DetailElementHTML.vue
@@ -0,0 +1,47 @@
+
+ HTML
+
+
+
+
+
diff --git a/src/pages/content/ui/app/detail/DetailHeader.vue b/src/pages/content/ui/app/detail/DetailHeader.vue
new file mode 100644
index 0000000..63f552c
--- /dev/null
+++ b/src/pages/content/ui/app/detail/DetailHeader.vue
@@ -0,0 +1,80 @@
+
+
+
+
diff --git a/src/pages/content/ui/app/detail/DetailStyle.vue b/src/pages/content/ui/app/detail/DetailStyle.vue
new file mode 100644
index 0000000..7cc8668
--- /dev/null
+++ b/src/pages/content/ui/app/detail/DetailStyle.vue
@@ -0,0 +1,188 @@
+
+
+
+
+ {{ Math.floor(properties.size.width) }}x{{
+ Math.floor(properties.size.height)
+ }}
+
+
+
+
+
+
+
+ @media{{ wrapInParenthesis(mediaCSS.mediaCondition) }}
+
+
+
+
+
+ {{ pseudoCSS.pseudo }}
+
+
+
+
+
+
+
+ {{ pseudoCSS.pseudo }}
+
+
+
+
+
+ @keyframes {{ animation.name }}
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/scanner/ScannerNavigation.vue b/src/pages/content/ui/app/scanner/ScannerNavigation.vue
new file mode 100644
index 0000000..764a5e2
--- /dev/null
+++ b/src/pages/content/ui/app/scanner/ScannerNavigation.vue
@@ -0,0 +1,188 @@
+
+
+
{{ elNavigation.parent?.name }}
+
+
+ {{ getNodeArrow(index) + ' ' + node.name }}
+
+
+ │
+ {{ '└─ ' + node.firstChild.name }}
+
+
+
+
+
diff --git a/src/pages/content/ui/app/toolbar/ToolbarAssets.vue b/src/pages/content/ui/app/toolbar/ToolbarAssets.vue
new file mode 100644
index 0000000..5fb480c
--- /dev/null
+++ b/src/pages/content/ui/app/toolbar/ToolbarAssets.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
Assets
+
Website assets
+
+
+
+ Save all
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
{{ asset.filename }}
+
+ {{ asset.size.width }}x{{ asset.size.height }}
+
+
+
+
![]()
+
+
+
+
+
diff --git a/src/pages/content/ui/app/toolbar/ToolbarColorPalette.vue b/src/pages/content/ui/app/toolbar/ToolbarColorPalette.vue
new file mode 100644
index 0000000..5024133
--- /dev/null
+++ b/src/pages/content/ui/app/toolbar/ToolbarColorPalette.vue
@@ -0,0 +1,115 @@
+
+
+
+
Website Color Palettes
+
+
+
+
+
+
+
+ Extract colors
+
+
+
+
+
+ {{ color.hex }}
+
+
+ {{ copyColorIndicator === color.hex ? '✅ Copied' : 'Copy' }}
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/toolbar/ToolbarCustomCSS.vue b/src/pages/content/ui/app/toolbar/ToolbarCustomCSS.vue
new file mode 100644
index 0000000..b6e5da4
--- /dev/null
+++ b/src/pages/content/ui/app/toolbar/ToolbarCustomCSS.vue
@@ -0,0 +1,64 @@
+
+
+
+
Custom CSS
+
+ Add custom css to the page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/content/ui/app/toolbar/ToolbarEyeDropper.vue b/src/pages/content/ui/app/toolbar/ToolbarEyeDropper.vue
new file mode 100644
index 0000000..644d725
--- /dev/null
+++ b/src/pages/content/ui/app/toolbar/ToolbarEyeDropper.vue
@@ -0,0 +1,329 @@
+
+
+
+
+
+ Press the Color Picker icon to start capturing a color
+
+
+
+
+
+ {{
+ copyColorIndicator === lightVariant.color
+ ? '✅ Copied'
+ : lightVariant.color.toUpperCase()
+ }}
+
+
+
+
+ {{
+ copyColorIndicator === activeColor.baseColor
+ ? '✅ Copied'
+ : activeColor.baseColor.toUpperCase()
+ }}
+
+
+
+
+ {{
+ copyColorIndicator === darkVariant.color
+ ? '✅ Copied'
+ : darkVariant.color.toUpperCase()
+ }}
+
+
+
+
+
+
+
+
+
+
+
Pick color on activate
+
+
+
+
diff --git a/src/pages/content/ui/app/toolbar/ToolbarNavigator.vue b/src/pages/content/ui/app/toolbar/ToolbarNavigator.vue
new file mode 100644
index 0000000..6b3bd74
--- /dev/null
+++ b/src/pages/content/ui/app/toolbar/ToolbarNavigator.vue
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/src/pages/content/ui/index.ts b/src/pages/content/ui/index.ts
new file mode 100644
index 0000000..2037475
--- /dev/null
+++ b/src/pages/content/ui/index.ts
@@ -0,0 +1,74 @@
+import { createApp } from 'vue';
+import Browser from 'webextension-polyfill';
+import App from '@root/src/pages/content/ui/App.vue';
+import refreshOnUpdate from 'virtual:reload-on-update-in-view';
+import injectedStyle from './injected.css?inline';
+import fontCss from '@assets/style/fonts.css?inline';
+import { EL_ATTR_NAME } from '@root/src/utils/constant';
+import { appPlugin } from './app-plugin';
+import { MotionPlugin } from '@vueuse/motion';
+
+refreshOnUpdate('pages/content');
+
+function initSelectedStyleEl() {
+ const selectedElStyle = document.createElement('style');
+ selectedElStyle.id = 'inspect-css-style';
+ selectedElStyle.textContent = `
+ body.is-screenshotting [${EL_ATTR_NAME.selected}],
+ body.is-screenshotting [${EL_ATTR_NAME.hover}] { outline: none !important; }
+ [${EL_ATTR_NAME.hover}] { outline: 2px solid hsl(0deg 90.6% 70.78%) !important }
+ [${EL_ATTR_NAME.selected}="true"] { outline: 2px solid hsl(217.22deg 91.22% 59.8%) !important }
+ [${EL_ATTR_NAME.dragging}] { user-select: none !important; }
+ [${EL_ATTR_NAME.showGrid}] * { outline: 1px solid hsl(0deg 90.6% 70.78% / 20%); }
+ `;
+
+ document.head.appendChild(selectedElStyle);
+}
+
+function initApp() {
+ const appId = 'inspect-css-root';
+ const appExists = Boolean(document.getElementById(appId));
+ if (appExists) return false;
+
+ const root = document.createElement('div');
+ root.id = appId;
+ root.setAttribute('style', 'all: unset');
+
+ document.body.append(root);
+
+ const rootIntoShadow = document.createElement('div');
+ rootIntoShadow.id = 'shadow-root';
+
+ const shadowRoot = root.attachShadow({ mode: 'open' });
+ shadowRoot.appendChild(rootIntoShadow);
+
+ // Font styyle
+ const fontURL = Browser.runtime.getURL('/assets/');
+ const fontStyle = document.createElement('style');
+ fontStyle.textContent = fontCss.replaceAll('/assets/', fontURL);
+ document.head.appendChild(fontStyle);
+
+ // Inject styles into shadow dom
+ const styleElement = document.createElement('style');
+ styleElement.innerHTML = injectedStyle;
+ shadowRoot.appendChild(styleElement);
+
+ initSelectedStyleEl();
+
+ createApp(App)
+ .use(appPlugin, shadowRoot)
+ .use(MotionPlugin)
+ .mount(rootIntoShadow);
+
+ return true;
+}
+
+(() => {
+ initApp();
+
+ Browser.runtime.onMessage.addListener((message: { type: string }) => {
+ if (message?.type !== 'init') return;
+
+ initApp();
+ });
+})();
diff --git a/src/pages/content/ui/injected.css b/src/pages/content/ui/injected.css
new file mode 100644
index 0000000..afb2b76
--- /dev/null
+++ b/src/pages/content/ui/injected.css
@@ -0,0 +1,89 @@
+@import '@src/assets/style/theme.css';
+
+.toolbar-button {
+ @apply h-10 w-10 text-center rounded-lg hover:bg-muted/80 hover:highlight-white/10 hover:text-foreground transition inline-flex items-center justify-center;
+ position: relative;
+
+ &.indicator {
+ &::before {
+ content: '';
+ height: 3px;
+ left: 50%;
+ transform: translateX(-50%);
+ bottom: 0;
+ position: absolute;
+ background-color: theme('colors.muted.DEFAULT');
+ transition: all 250ms ease;
+ @apply w-2/12 rounded-full;
+ }
+ &.active::before {
+ background-color: theme('colors.primary.DEFAULT');
+ @apply w-5/12;
+ }
+ }
+ &.active {
+
+ @apply text-primary;
+ }
+
+ svg {
+ width: theme('size.5');
+ height: theme('size.5');
+ }
+}
+
+.cm-editor {
+ .cm-activeLineGutter,
+ .cm-activeLine {
+ background-color: transparent !important;
+ }
+
+ &.cm-focused {
+ outline: none !important;
+
+ .cm-activeLineGutter {
+ @apply bg-muted/90 !important;
+ }
+ .cm-activeLine {
+ @apply bg-muted/60 !important;
+ }
+ }
+
+ .cm-content {
+ font-family: theme('fontFamily.mono');
+ }
+ .cm-line {
+ @apply py-0.5 rounded-r !important;
+ }
+ .cm-gutterElement {
+ @apply rounded-l px-1;
+
+ input[type='checkbox'] {
+ appearance: none;
+ width: 18px;
+ height: 18px;
+ margin-top: 3px;
+ @apply border rounded bg-input/40 border-white/10;
+
+ &:hover,
+ &:checked {
+ @apply bg-primary/20 border-primary/60;
+ }
+ &:checked {
+ background-size: 100% 100%;
+ background-position: center;
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMzYjgyZjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGVjayI+PHBhdGggZD0iTTIwIDYgOSAxN2wtNS01Ii8+PC9zdmc+');
+ }
+ }
+ }
+}
+
+.list-enter-active,
+.list-leave-active {
+ transition: all 0.5s ease;
+}
+.list-enter-from,
+.list-leave-to {
+ opacity: 0;
+ transform: translateY(30px);
+}
\ No newline at end of file
diff --git a/src/pages/content/ui/keys.ts b/src/pages/content/ui/keys.ts
new file mode 100644
index 0000000..d3945dc
--- /dev/null
+++ b/src/pages/content/ui/keys.ts
@@ -0,0 +1,3 @@
+export const APP_PROVIDER_KEY = Symbol('app-provider');
+
+export const DOM_NAVIGATOR_KEY = Symbol('dom-navigation');
diff --git a/src/storages/base.ts b/src/storages/base.ts
new file mode 100644
index 0000000..fb5e155
--- /dev/null
+++ b/src/storages/base.ts
@@ -0,0 +1,219 @@
+import Browser from 'webextension-polyfill';
+
+/**
+ * Storage area type for persisting and exchanging data.
+ * @see https://developer.Browser.com/docs/extensions/reference/storage/#overview
+ */
+export enum StorageType {
+ /**
+ * Persist data locally against browser restarts. Will be deleted by uninstalling the extension.
+ * @default
+ */
+ Local = 'local',
+ /**
+ * Uploads data to the users account in the cloud and syncs to the users browsers on other devices. Limits apply.
+ */
+ Sync = 'sync',
+ /**
+ * Requires an [enterprise policy](https://www.chromium.org/administrators/configuring-policy-for-extensions) with a
+ * json schema for company wide config.
+ */
+ Managed = 'managed',
+ /**
+ * Only persist data until the browser is closed. Recommended for service workers which can shutdown anytime and
+ * therefore need to restore their state. Set {@link SessionAccessLevel} for permitting content scripts access.
+ * @implements Chromes [Session Storage](https://developer.Browser.com/docs/extensions/reference/storage/#property-session)
+ */
+ Session = 'session',
+}
+
+/**
+ * Global access level requirement for the {@link StorageType.Session} Storage Area.
+ * @implements Chromes [Session Access Level](https://developer.Browser.com/docs/extensions/reference/storage/#method-StorageArea-setAccessLevel)
+ */
+export enum SessionAccessLevel {
+ /**
+ * Storage can only be accessed by Extension pages (not Content scripts).
+ * @default
+ */
+ ExtensionPagesOnly = 'TRUSTED_CONTEXTS',
+ /**
+ * Storage can be accessed by both Extension pages and Content scripts.
+ */
+ ExtensionPagesAndContentScripts = 'TRUSTED_AND_UNTRUSTED_CONTEXTS',
+}
+
+export type ValueOrUpdate = D | ((prev: D) => Promise | D);
+
+export type BaseStorage = {
+ $key: string;
+ $defaultValue: D;
+ get: () => Promise;
+ set: (value: ValueOrUpdate) => Promise;
+ getSnapshot: () => D | null;
+ subscribe: (listener: () => void) => () => void;
+};
+
+type StorageConfig = {
+ /**
+ * Assign the {@link StorageType} to use.
+ * @default Local
+ */
+ storageType?: StorageType;
+ /**
+ * Only for {@link StorageType.Session}: Grant Content scripts access to storage area?
+ * @default false
+ */
+ sessionAccessForContentScripts?: boolean;
+ /**
+ * Keeps state live in sync between all instances of the extension. Like between popup, side panel and content scripts.
+ * To allow chrome background scripts to stay in sync as well, use {@link StorageType.Session} storage area with
+ * {@link StorageConfig.sessionAccessForContentScripts} potentially also set to true.
+ * @see https://stackoverflow.com/a/75637138/2763239
+ * @default false
+ */
+ liveUpdate?: boolean;
+};
+
+/**
+ * Sets or updates an arbitrary cache with a new value or the result of an update function.
+ */
+async function updateCache(
+ valueOrUpdate: ValueOrUpdate,
+ cache: D | null,
+): Promise {
+ // Type guard to check if our value or update is a function
+ function isFunction(
+ value: ValueOrUpdate,
+ ): value is (prev: D) => D | Promise {
+ return typeof value === 'function';
+ }
+
+ // Type guard to check in case of a function, if its a Promise
+ function returnsPromise(func: (prev: D) => D | Promise): boolean {
+ // Use ReturnType to infer the return type of the function and check if it's a Promise
+ return (func as (prev: D) => Promise) instanceof Promise;
+ }
+
+ if (isFunction(valueOrUpdate)) {
+ // Check if the function returns a Promise
+ if (returnsPromise(valueOrUpdate)) {
+ return await valueOrUpdate(cache as D);
+ } else {
+ return valueOrUpdate(cache as D);
+ }
+ } else {
+ return valueOrUpdate;
+ }
+}
+
+/**
+ * If one session storage needs access from content scripts, we need to enable it globally.
+ * @default false
+ */
+let globalSessionAccessLevelFlag: StorageConfig['sessionAccessForContentScripts'] =
+ false;
+
+/**
+ * Checks if the storage permission is granted in the manifest.json.
+ */
+function checkStoragePermission(storageType: StorageType): void {
+ if (Browser.storage[storageType] === undefined) {
+ throw new Error(
+ `Check your storage permission in manifest.json: ${storageType} is not defined`,
+ );
+ }
+}
+
+/**
+ * Creates a storage area for persisting and exchanging data.
+ */
+export function createStorage(
+ key: string,
+ fallback: D,
+ config?: StorageConfig,
+): BaseStorage {
+ let cache: D | null = null;
+ let listeners: Array<() => void> = [];
+ const storageType = config?.storageType ?? StorageType.Local;
+ const liveUpdate = config?.liveUpdate ?? false;
+
+ // Set global session storage access level for StoryType.Session, only when not already done but needed.
+ if (
+ globalSessionAccessLevelFlag === false &&
+ storageType === StorageType.Session &&
+ config?.sessionAccessForContentScripts === true
+ ) {
+ checkStoragePermission(storageType);
+ chrome.storage[storageType].setAccessLevel({
+ accessLevel: SessionAccessLevel.ExtensionPagesAndContentScripts,
+ });
+ globalSessionAccessLevelFlag = true;
+ }
+
+ // Register life cycle methods
+ const _getDataFromStorage = async (): Promise => {
+ checkStoragePermission(storageType);
+ const value = await Browser.storage[storageType].get([key]);
+ return value[key] ?? fallback;
+ };
+
+ const _emitChange = () => {
+ listeners.forEach((listener) => listener());
+ };
+
+ const set = async (valueOrUpdate: ValueOrUpdate) => {
+ cache = await updateCache(valueOrUpdate, cache);
+
+ await Browser.storage[storageType].set({ [key]: cache });
+ _emitChange();
+ };
+
+ const subscribe = (listener: () => void) => {
+ listeners = [...listeners, listener];
+ return () => {
+ listeners = listeners.filter((l) => l !== listener);
+ };
+ };
+
+ const getSnapshot = () => {
+ return cache;
+ };
+
+ _getDataFromStorage().then((data) => {
+ cache = data;
+ _emitChange();
+ });
+
+ // Listener for live updates from the browser
+ async function _updateFromStorageOnChanged(changes: {
+ [key: string]: Browser.Storage.StorageChange;
+ }) {
+ // Check if the key we are listening for is in the changes object
+ if (changes[key] === undefined) return;
+
+ const valueOrUpdate: ValueOrUpdate = changes[key].newValue;
+
+ if (cache === valueOrUpdate) return;
+
+ cache = await updateCache(valueOrUpdate, cache);
+
+ _emitChange();
+ }
+
+ // Register listener for live updates for our storage area
+ if (liveUpdate) {
+ Browser.storage[storageType].onChanged.addListener(
+ _updateFromStorageOnChanged,
+ );
+ }
+
+ return {
+ set,
+ subscribe,
+ $key: key,
+ getSnapshot,
+ $defaultValue: fallback,
+ get: _getDataFromStorage,
+ };
+}
diff --git a/src/storages/eye-dropper.storage.ts b/src/storages/eye-dropper.storage.ts
new file mode 100644
index 0000000..914aec6
--- /dev/null
+++ b/src/storages/eye-dropper.storage.ts
@@ -0,0 +1,43 @@
+import { BaseStorage, createStorage, StorageType } from './base';
+
+export interface ColorVariant {
+ color: string;
+ textIsBlack: boolean;
+}
+
+export interface EyeDropperHistoryItem {
+ baseColor: string;
+ textIsBlack: boolean;
+ darkVariants: ColorVariant[];
+ lightVariants: ColorVariant[];
+}
+
+export interface EyeDropperSettings {
+ pickOnActivate: boolean;
+}
+
+export interface BaseEyeDropperStorage {
+ settings: EyeDropperSettings;
+ history: EyeDropperHistoryItem[];
+}
+
+export type EyeDropperStorage = BaseStorage & {
+ update: (newData: Partial) => Promise;
+};
+
+const storage = createStorage(
+ 'eye-dropper',
+ { history: [], settings: { pickOnActivate: true } },
+ {
+ storageType: StorageType.Local,
+ },
+);
+
+const eyeDropperStorage: EyeDropperStorage = {
+ ...storage,
+ update: async (newData) => {
+ await storage.set((storageData) => ({ ...storageData, ...newData }));
+ },
+};
+
+export default eyeDropperStorage;
diff --git a/src/storages/settings.storage.ts b/src/storages/settings.storage.ts
new file mode 100644
index 0000000..bcc1828
--- /dev/null
+++ b/src/storages/settings.storage.ts
@@ -0,0 +1,32 @@
+import { BaseStorage, createStorage, StorageType } from './base';
+
+export interface ColorVariant {
+ color: string;
+ textIsBlack: boolean;
+}
+
+export interface Settings {
+ showGrid: boolean;
+ interactive: boolean;
+}
+
+type SettingsStorage = BaseStorage & {
+ update: (newData: Partial) => Promise;
+};
+
+const storage = createStorage(
+ 'settings',
+ { interactive: true, showGrid: false },
+ {
+ storageType: StorageType.Local,
+ },
+);
+
+const settingsStorage: SettingsStorage = {
+ ...storage,
+ update: async (newData) => {
+ await storage.set((storageData) => ({ ...storageData, ...newData }));
+ },
+};
+
+export default settingsStorage;
diff --git a/src/utils/CSSRulesUtils.ts b/src/utils/CSSRulesUtils.ts
new file mode 100644
index 0000000..9daaf73
--- /dev/null
+++ b/src/utils/CSSRulesUtils.ts
@@ -0,0 +1,154 @@
+import { EL_ATTR_NAME } from './constant';
+import {
+ ElementAppliedCSS,
+ ElementCSSRule,
+ ElementMediaCSSRule,
+ cssTextToObject,
+ extractCSSText,
+ getAppliedCSSProperties,
+ parseCSSStyleRule,
+} from './css-rule-parser';
+import type { SetRequired } from 'type-fest';
+
+const MAX_RULES_CACHE_MS = 60_000; // 1 minute
+
+export interface ElementAppliedStyleRules extends ElementAppliedCSS {
+ animation: AnimationKeyframeRule[];
+ media: SetRequired[];
+}
+
+export type AnimationKeyframeRule = Pick<
+ CSSKeyframesRule,
+ 'name' | 'cssText'
+> & { isDirty?: boolean };
+export type AnimationKeyframeRuleRecord = Record;
+
+class CSSRulesUtils {
+ private lastRetrievedRules: null | number = null;
+
+ private _rules: (CSSMediaRule | CSSStyleRule)[] = [];
+ private _keyframeRules: AnimationKeyframeRuleRecord = {};
+
+ constructor() {}
+
+ get rules() {
+ if (
+ !this.lastRetrievedRules ||
+ Date.now() - this.lastRetrievedRules < MAX_RULES_CACHE_MS
+ ) {
+ this._rules = [];
+ this._keyframeRules = {};
+
+ const excludeStyleEl = (
+ ownerNode: Element | ProcessingInstruction | null,
+ ) => {
+ if (!(ownerNode instanceof HTMLElement)) return false;
+
+ return (
+ ownerNode.id === 'inspect-css-style' ||
+ ownerNode.hasAttribute(EL_ATTR_NAME.customStyle)
+ );
+ };
+
+ for (const styleSheet of document.styleSheets) {
+ try {
+ if (styleSheet.disabled || excludeStyleEl(styleSheet.ownerNode))
+ continue;
+
+ for (const rule of styleSheet.cssRules) {
+ if (rule instanceof CSSKeyframesRule) {
+ this._keyframeRules[rule.name] = {
+ name: rule.name,
+ cssText: extractCSSText(rule.cssText),
+ };
+ } else if (
+ rule instanceof CSSStyleRule ||
+ rule instanceof CSSMediaRule
+ ) {
+ this._rules.push(rule);
+ }
+ }
+ } catch (error) {
+ // 3rd-party CSS;
+ console.error(error);
+ }
+ }
+
+ this.lastRetrievedRules = Date.now();
+ }
+
+ return this._rules;
+ }
+
+ getAppliedRules(element: Element): ElementAppliedStyleRules {
+ const rules: ElementCSSRule[] = [];
+ const mediaRules: ElementMediaCSSRule[] = [];
+ const animationRules: AnimationKeyframeRule[] = [];
+
+ const mediaIndexMap = new Map();
+
+ for (const rule of this.rules) {
+ const result = parseCSSStyleRule(element, rule);
+
+ if (result.mediaCondition) {
+ if (result.rules.length <= 0) continue;
+
+ const mediaIndex = mediaIndexMap.get(result.mediaCondition);
+ if (typeof mediaIndex === 'number') {
+ mediaRules[mediaIndex].rules.push(...result.rules);
+ } else {
+ mediaRules.push(result);
+ }
+
+ mediaIndexMap.set(result.mediaCondition, mediaRules.length - 1);
+ } else {
+ rules.push(...result.rules);
+ }
+ }
+
+ const inlineStyle = element.getAttribute('style');
+ if (inlineStyle) {
+ rules.push({
+ selector: '',
+ specificity: 1000,
+ cssText: inlineStyle,
+ properties: cssTextToObject(inlineStyle),
+ });
+ }
+
+ const sortedRules = rules.sort((a, b) =>
+ a.specificity > b.specificity ? -1 : 1,
+ );
+ const mainRules = getAppliedCSSProperties(
+ element,
+ sortedRules,
+ this._keyframeRules,
+ );
+ animationRules.push(...mainRules.animation);
+
+ const appliedMediaCSS = mediaRules.map((mediaRule) => {
+ const sortedMediaRules = mediaRule.rules.sort((a, b) =>
+ a.specificity > b.specificity ? -1 : 1,
+ );
+
+ return getAppliedCSSProperties(
+ element,
+ sortedMediaRules,
+ this._keyframeRules,
+ mediaRule.mediaCondition,
+ ) as SetRequired;
+ });
+
+ return {
+ ...mainRules,
+ animation: animationRules,
+ media: appliedMediaCSS.reverse(),
+ };
+ }
+
+ destroy() {
+ this._rules = [];
+ }
+}
+
+export default CSSRulesUtils;
diff --git a/src/utils/CaptureTab.ts b/src/utils/CaptureTab.ts
new file mode 100644
index 0000000..96750e4
--- /dev/null
+++ b/src/utils/CaptureTab.ts
@@ -0,0 +1,190 @@
+import RuntimeMessage from './RuntimeMessage';
+
+function findScrollableElement(
+ element = document.documentElement,
+ maxDepth = 5,
+): HTMLElement | null {
+ if (maxDepth === 0) return null;
+
+ const excludeTags = ['SCRIPT', 'STYLE', 'SVG', 'HEAD'];
+ const isScrollable = element.scrollHeight > window.innerHeight;
+
+ if (isScrollable) return element;
+
+ for (const childNode of element.childNodes) {
+ if (!(childNode instanceof HTMLElement)) continue;
+
+ const isExcluded =
+ childNode.tagName.includes('-') ||
+ excludeTags.includes(childNode.tagName);
+
+ if (!isExcluded) {
+ const scrollableElement = findScrollableElement(childNode, maxDepth - 1);
+ if (scrollableElement) return scrollableElement;
+ }
+ }
+
+ return null;
+}
+
+class CaptureTab {
+ static async capture() {
+ const imageUri = await RuntimeMessage.sendMessage(
+ 'background:screenshot-tab',
+ );
+ const image = new Image();
+
+ image.src = imageUri;
+
+ return image;
+ }
+
+ static captureWholePage() {
+ return new Promise((resolve) => {
+ const { body } = document;
+ const element = findScrollableElement() || document.documentElement;
+ if (!element) return resolve(null);
+
+ const originalSize = element.scrollHeight;
+ const originalPosition = window.scrollY;
+
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ if (!context) return resolve(null);
+
+ if (body) body.style.overflowY = 'visible';
+
+ this.insertStyle();
+ this.fixedElements();
+
+ canvas.height = element.scrollHeight * 0.7;
+ canvas.width = window.innerWidth * 0.7;
+
+ body.classList.add('is-screenshotting');
+
+ this.getImages({
+ limit: 10,
+ originalSize,
+ scrollElement: element,
+ callback: (images) => {
+ this.clearUp();
+
+ element.scrollTo(0, originalPosition);
+
+ let position = 0;
+ images.forEach((image) => {
+ context.drawImage(
+ image,
+ 0,
+ position,
+ window.innerWidth * 0.7,
+ window.innerHeight * 0.7,
+ );
+
+ position += window.innerHeight * 0.7;
+ });
+
+ const image = new Image(canvas.width, canvas.height);
+ image.src = canvas.toDataURL('image/png');
+
+ resolve(image);
+ },
+ });
+ });
+ }
+
+ private static getImages(
+ {
+ limit,
+ callback,
+ originalSize,
+ scrollElement,
+ }: {
+ limit: number;
+ originalSize: number;
+ scrollElement: HTMLElement;
+ callback: (images: HTMLImageElement[]) => void;
+ },
+ images: HTMLImageElement[] = [],
+ scrollPosition = 0,
+ ) {
+ const timeout = setTimeout(() => {
+ callback(images);
+ }, 5000);
+
+ if (scrollPosition >= originalSize || images.length > limit) {
+ clearTimeout(timeout);
+ callback(images);
+
+ return;
+ }
+
+ if (scrollPosition > 0) {
+ document.body.classList.add('hide-fixed');
+ }
+
+ scrollElement.scrollTo({
+ top: scrollPosition,
+ behavior: 'instant',
+ });
+
+ setTimeout(() => {
+ this.capture()
+ .then((image) => {
+ images.push(image);
+ clearTimeout(timeout);
+
+ this.getImages(
+ { originalSize, callback, scrollElement, limit },
+ images,
+ scrollPosition + window.innerHeight,
+ );
+ })
+ .catch((error) => {
+ console.error(error);
+ callback(images);
+ });
+ }, 500);
+ }
+
+ private static insertStyle() {
+ const style = document.createElement('style');
+ style.innerText = `
+ html::-webkit-scrollbar, body::-webkit-scrollbar{ width: 0 !important; height: 0 !important }
+ body.is-screenshotting [is-sticky] {
+ position: relative !important;
+ }
+ .hide-fixed [is-fixed] {
+ visibility: hidden !important;
+ opacity: 0 !important;
+ }
+ `;
+ style.id = 'inspect-css-scroll';
+
+ document.body.appendChild(style);
+
+ return style;
+ }
+
+ private static fixedElements() {
+ const elements = document.body.getElementsByTagName('*');
+ for (let index = 0; index < elements.length; index += 1) {
+ const el = elements[index];
+ const { position } = getComputedStyle(el);
+
+ if (position === 'sticky') el.setAttribute('is-sticky', '');
+ if (position === 'fixed') el.setAttribute('is-fixed', '');
+ }
+ }
+
+ private static clearUp() {
+ const style = document.getElementById('inspect-css-scroll');
+ if (style) style.remove();
+
+ document.body.classList.remove('hide-fixed');
+ document.body.classList.remove('is-screenshotting');
+ document.body.style.overflowY = '';
+ }
+}
+
+export default CaptureTab;
diff --git a/src/utils/RuntimeMessage.ts b/src/utils/RuntimeMessage.ts
new file mode 100644
index 0000000..4a04f72
--- /dev/null
+++ b/src/utils/RuntimeMessage.ts
@@ -0,0 +1,85 @@
+import Browser, { Runtime } from 'webextension-polyfill';
+import { isObject } from './helper';
+
+export interface RuntimeMsgEvents {
+ 'background:screenshot-tab': () => string;
+}
+
+type EventListener = Map unknown>;
+
+export interface RuntimeMessagePayload {
+ args: unknown[];
+ name: keyof RuntimeMsgEvents;
+}
+
+class RuntimeMessage {
+ private eventListeners: EventListener;
+
+ constructor() {
+ this.eventListeners = new Map();
+ this.runtimeMessageListener = this.runtimeMessageListener.bind(this);
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ private runtimeMessageListener(message: any, sender: Runtime.MessageSender) {
+ if (!isObject(message) || !Object.hasOwn(message, 'name')) return;
+ const callback = this.eventListeners.get(message.name);
+ if (!callback) return;
+
+ return callback(...(message.args ?? []), sender) as Promise;
+ }
+
+ onMessage(
+ name: T,
+ callback: (
+ ...args: [
+ ...Parameters,
+ Browser.Runtime.MessageSender,
+ ]
+ ) => ReturnType extends void
+ ? void
+ : Promise>,
+ ) {
+ // @ts-expect-error aaa
+ this.eventListeners.set(name, callback);
+
+ const hasListener = Browser.runtime.onMessage.hasListener(
+ this.runtimeMessageListener,
+ );
+ if (!hasListener) {
+ Browser.runtime.onMessage.addListener(this.runtimeMessageListener);
+ }
+
+ return this.onMessage;
+ }
+
+ removeListener(name: keyof RuntimeMsgEvents) {
+ this.eventListeners.delete(name);
+
+ if (this.eventListeners.size === 0) {
+ Browser.runtime.onMessage.removeListener(this.runtimeMessageListener);
+ }
+ }
+
+ sendMessage(
+ name: T,
+ ...args: Parameters
+ ) {
+ return Browser.runtime.sendMessage({ name, args }) as Promise<
+ ReturnType
+ >;
+ }
+
+ sendMessageToTab(
+ { name, tabId, frameId }: { name: T; tabId: number; frameId?: number },
+ ...args: Parameters
+ ) {
+ return Browser.tabs.sendMessage(
+ tabId,
+ { name, args },
+ { frameId },
+ ) as Promise>;
+ }
+}
+
+export default new RuntimeMessage();
diff --git a/src/utils/constant.ts b/src/utils/constant.ts
new file mode 100644
index 0000000..d41f2c6
--- /dev/null
+++ b/src/utils/constant.ts
@@ -0,0 +1,25 @@
+export const EL_ATTR_NAME = {
+ hover: 'inspect-css-hover',
+ selected: 'inspect-css-selected',
+ dragging: 'inspect-css-dragging',
+ showGrid: 'inspect-css-show-grid',
+ customStyle: 'inspect-style-selector',
+} as const;
+
+export const CONTENT_ZINDEX = {
+ overlay: 999997,
+ content: 999998,
+ toolbar: 999999,
+} as const;
+
+export const EL_IDS = {
+ customCSS: 'inspect-css-custom-style',
+} as const;
+
+export const IS_MAC_OS = navigator.userAgent.indexOf('Mac OS X') !== -1;
+
+export const SESSION_STORAGE_KEY = {
+ elPropsPosition: 'inspect-css-pos',
+} as const;
+
+export const IS_FIREFOX = Boolean(VITE_IS_FIREFOX);
diff --git a/src/utils/createPopper.js b/src/utils/createPopper.js
deleted file mode 100644
index 361da6e..0000000
--- a/src/utils/createPopper.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createPopper } from '@popperjs/core';
-
-export default function ({ container = null, content, options = {} }) {
- if (container === null) throw new Error('container is required');
-
- const instance = createPopper(container, content, {
- placement: 'top',
- modifiers: [
- {
- name: 'offset',
- options: {
- offset: [20, 20],
- },
- },
- ],
- ...options,
- });
-
- return instance;
-}
diff --git a/src/utils/css-rule-parser.ts b/src/utils/css-rule-parser.ts
new file mode 100644
index 0000000..4fd37ea
--- /dev/null
+++ b/src/utils/css-rule-parser.ts
@@ -0,0 +1,296 @@
+import * as specificity from 'specificity';
+import { SetRequired } from 'type-fest';
+import {
+ AnimationKeyframeRule,
+ AnimationKeyframeRuleRecord,
+} from './CSSRulesUtils';
+
+// TO-DO: use css-tree
+
+const CSS_PSEUDO = [
+ ':active',
+ ':checked',
+ ':disabled',
+ ':empty',
+ ':enabled',
+ ':focus',
+ ':hover',
+ ':invalid',
+ ':valid',
+ ':visited',
+ ':first-letter',
+ ':first-line',
+ ':first-child',
+ ':last-child',
+ ':before',
+ ':after',
+ ':marker',
+ ':selection',
+] as const;
+
+const CSS_PSEUDO_REGEX = new RegExp(`:?(${CSS_PSEUDO.join('|')})$`);
+
+export interface ElementStyleProperty {
+ key: string;
+ value: string;
+ isImportant: boolean;
+}
+
+export interface ElementCSSRule {
+ pseudo?: string;
+ cssText: string;
+ selector: string;
+ specificity: number;
+ properties: ElementStyleProperty[];
+}
+
+export interface ElementMediaCSSRule {
+ rules: ElementCSSRule[];
+ mediaCondition?: string;
+}
+
+export interface ElementAppliedPseudoCSS {
+ pseudo: string;
+ cssText: string;
+ isDirty?: boolean;
+}
+
+export interface ElementAppliedCSS {
+ cssText: string;
+ isDirty?: boolean;
+ mediaCondition?: string;
+ animation: AnimationKeyframeRule[];
+ pseudo: ElementAppliedPseudoCSS[];
+}
+
+export const extractCSSText = (cssText: string) =>
+ cssText.slice(cssText.indexOf('{') + 1, -1).trim();
+
+export function cssTextToObject(cssText: string) {
+ const properties: ElementStyleProperty[] = [];
+
+ for (const property of cssText.split(';')) {
+ const trimmedProperty = property.trim();
+ if (!trimmedProperty) continue;
+
+ const [key, value] = trimmedProperty.split(/:(.*)/s);
+ if (!key || !value) continue;
+
+ properties.push({
+ key,
+ value,
+ isImportant: value.trim().endsWith('!important'),
+ });
+ }
+
+ return properties;
+}
+
+export function getAppliedCSSProperties(
+ element: Element,
+ rules: ElementCSSRule[],
+ animationRules: AnimationKeyframeRuleRecord,
+ mediaCondition?: string,
+): ElementAppliedCSS {
+ const pseudo: ElementAppliedCSS['pseudo'] = [];
+
+ type PropertyValue = {
+ value: string;
+ isImportant: boolean;
+ specificity: number;
+ };
+
+ const mainProperties = new Map();
+ const animationProperties = new Map();
+ const pseudoProperties = new Map>();
+
+ const handleMainProps = (rule: ElementCSSRule) => {
+ for (const { isImportant, key, value } of rule.properties) {
+ const property = mainProperties.get(key);
+ if (!property) {
+ mainProperties.set(key, {
+ isImportant,
+ value,
+ specificity: rule.specificity,
+ });
+ continue;
+ }
+
+ if (
+ isImportant ||
+ (!isImportant &&
+ !property.isImportant &&
+ property.specificity === rule.specificity)
+ ) {
+ mainProperties.set(key, {
+ value,
+ isImportant,
+ specificity: rule.specificity,
+ });
+ }
+ }
+ };
+ const handlePseudoProps = (rule: SetRequired) => {
+ const pseudoProps = pseudoProperties.get(rule.pseudo);
+ if (!pseudoProps) {
+ const objProps = rule.properties.reduce>(
+ (acc, curr) => {
+ acc[curr.key] = {
+ value: curr.value,
+ isImportant: curr.isImportant,
+ specificity: rule.specificity,
+ };
+
+ return acc;
+ },
+ {},
+ );
+ pseudoProperties.set(rule.pseudo, objProps);
+ return;
+ }
+
+ for (const { key, value, isImportant } of rule.properties) {
+ const property = pseudoProps[key];
+
+ if (!property) {
+ pseudoProps[key] = {
+ value,
+ isImportant,
+ specificity: rule.specificity,
+ };
+ continue;
+ }
+
+ if (
+ isImportant ||
+ (!isImportant &&
+ !property.isImportant &&
+ property.specificity === rule.specificity)
+ ) {
+ pseudoProps[key] = {
+ value,
+ isImportant,
+ specificity: rule.specificity,
+ };
+ }
+ }
+
+ pseudoProperties.set(rule.pseudo, pseudoProps);
+ };
+
+ for (const rule of rules) {
+ if (rule.pseudo) {
+ handlePseudoProps(rule as SetRequired);
+ } else {
+ handleMainProps(rule);
+ }
+ }
+
+ const computedStyle = getComputedStyle(element);
+
+ const { animationName } = computedStyle;
+ if (animationName !== 'none' && animationRules[animationName]) {
+ animationProperties.set(animationName, animationRules[animationName]);
+ }
+
+ const mainCSSText = [...mainProperties.entries()].reduce(
+ (acc, [key, { value }]) => {
+ let propertyValue = value;
+ if (key.startsWith('--')) {
+ propertyValue = computedStyle.getPropertyValue(key);
+ }
+
+ acc += `${key}:${propertyValue};\n`;
+
+ return acc;
+ },
+ '',
+ );
+
+ pseudoProperties.forEach((props, key) => {
+ let cssText = '';
+ for (const key in props) {
+ let propertyValue = props[key].value;
+ if (key.startsWith('--')) {
+ propertyValue = computedStyle.getPropertyValue(key);
+ }
+
+ cssText += `${key}:${propertyValue};\n`;
+ }
+
+ pseudo.push({ cssText: cssText.trim(), pseudo: key });
+ });
+
+ return {
+ pseudo,
+ mediaCondition,
+ cssText: mainCSSText.trim(),
+ animation: [...animationProperties.values()],
+ };
+}
+
+export function parseCSSStyleRule(
+ element: Element,
+ rule: CSSMediaRule | CSSStyleRule,
+) {
+ const result: ElementMediaCSSRule = {
+ rules: [],
+ };
+
+ const pushRule = (
+ styleRule: CSSStyleRule,
+ mediaCondition: string | null = null,
+ ) => {
+ let pseudo: string | undefined;
+
+ const selector = styleRule.selectorText
+ .split(/,(?![^(]*\))/)
+ .find((str) => {
+ const normalizeSelector = str
+ .trim()
+ .replace(CSS_PSEUDO_REGEX, (match) => {
+ pseudo = match;
+ return '';
+ });
+
+ try {
+ return element.matches(normalizeSelector);
+ } catch (error) {
+ return false;
+ }
+ });
+
+ if (!selector || (mediaCondition && !window.matchMedia(mediaCondition)))
+ return;
+
+ const extractedCSSText = extractCSSText(styleRule.cssText).trim();
+
+ const weight = specificity.calculate(selector);
+ const weightTotal = +(
+ weight.A.toString() +
+ weight.B.toString() +
+ weight.C.toString()
+ );
+
+ result.rules.push({
+ pseudo,
+ specificity: weightTotal,
+ selector: selector.trim(),
+ cssText: extractedCSSText,
+ properties: cssTextToObject(extractedCSSText),
+ });
+ };
+
+ if (rule instanceof CSSStyleRule) {
+ pushRule(rule);
+ } else {
+ [...rule.cssRules].forEach((styleRule) => {
+ if (!(styleRule instanceof CSSStyleRule)) return;
+
+ pushRule(styleRule, rule.conditionText);
+ });
+ result.mediaCondition = rule.conditionText;
+ }
+
+ return result;
+}
diff --git a/src/utils/dom-navigator.ts b/src/utils/dom-navigator.ts
new file mode 100644
index 0000000..e2b3361
--- /dev/null
+++ b/src/utils/dom-navigator.ts
@@ -0,0 +1,88 @@
+import { EL_ATTR_NAME } from './constant';
+
+const IGNORE_TAGS = ['HEAD', 'STYLE', 'SCRIPT'];
+const IGNORE_ATTRS = [...Object.values(EL_ATTR_NAME), 'style'];
+
+export interface NodeObject {
+ path: string;
+ tagName: string;
+ childCount: number;
+ textContent?: string;
+ childrens: NodeObject[];
+ attrs: Record;
+}
+
+export function getElementPath(element: Element, root = document.body): string {
+ if (element === root) return element.tagName.toLowerCase();
+
+ const siblings = element.parentNode?.childNodes;
+ if (!siblings) return '';
+
+ let childIndex = 1;
+ for (let index = 0; index < siblings.length; index++) {
+ const sibling = siblings[index];
+
+ if (sibling === element) {
+ let selector = `>${element.tagName.toLowerCase()}`;
+ if (childIndex > 1) selector += `:nth-child(${childIndex})`;
+
+ return getElementPath(element.parentNode as Element, root) + selector;
+ }
+
+ if (
+ sibling.nodeType === Node.ELEMENT_NODE &&
+ (sibling).tagName === element.tagName
+ ) {
+ childIndex += 1;
+ }
+ }
+
+ return '';
+}
+
+export function elementToNodeObject(element: Element) {
+ const attrs: Record = {};
+ const childCount = element.childElementCount;
+
+ for (let index = 0; index < element.attributes.length; index += 1) {
+ const attr = element.attributes.item(index);
+ if (!attr || IGNORE_ATTRS.includes(attr.name)) continue;
+
+ attrs[attr.name] = attr.value;
+ }
+
+ const nodeObject: NodeObject = {
+ attrs,
+ path: '',
+ childCount,
+ childrens: [],
+ tagName: element.tagName.toLowerCase(),
+ };
+ if (childCount === 0) nodeObject.textContent = element.textContent || '';
+
+ return nodeObject;
+}
+
+export function traverseElementChild(element: Element, path?: string) {
+ const children: NodeObject[] = [];
+ const parentPath = path || getElementPath(element);
+
+ let elementIndex = 1;
+ element.childNodes.forEach((node) => {
+ if (!(node instanceof Element)) return;
+ if (IGNORE_TAGS.includes(node.tagName)) {
+ elementIndex += 1;
+ return;
+ }
+
+ const nodeObject = elementToNodeObject(node);
+ nodeObject.path = `${parentPath}>${node.tagName.toLowerCase()}`;
+ if (elementIndex > 1) nodeObject.path += `:nth-child(${elementIndex})`;
+
+ children.push(nodeObject);
+
+ elementIndex += 1;
+ });
+
+ return children;
+}
diff --git a/src/utils/extractColorFromImage.ts b/src/utils/extractColorFromImage.ts
new file mode 100644
index 0000000..8f131e1
--- /dev/null
+++ b/src/utils/extractColorFromImage.ts
@@ -0,0 +1,39 @@
+import ColorThief, { RGBColor } from 'colorthief';
+
+/* eslint-disable radix */
+function getTextColor(rgb: RGBColor) {
+ const brightness = Math.round(
+ (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000,
+ );
+ const textColor = brightness > 125 ? 'black' : 'white';
+
+ return textColor;
+}
+function convertToHex(rgb: RGBColor) {
+ const color = rgb
+ .map((num) => {
+ const hex = num.toString(16);
+
+ return hex.length === 1 ? `0${hex}` : hex;
+ })
+ .join('');
+
+ return `#${color}`;
+}
+
+export default async function (image: HTMLImageElement) {
+ try {
+ const colorThief = new ColorThief();
+ const palette = await colorThief.getPalette(image);
+ const colors = palette.map((rgb) => ({
+ hex: convertToHex(rgb),
+ title: getTextColor(rgb),
+ }));
+
+ sessionStorage.setItem('color-palettes', JSON.stringify(colors));
+
+ return colors;
+ } catch (err) {
+ console.error(err);
+ }
+}
diff --git a/src/utils/extractColors.js b/src/utils/extractColors.js
deleted file mode 100644
index aa4cbdf..0000000
--- a/src/utils/extractColors.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import ColorThief from 'colorthief';
-
-/* eslint-disable radix */
-function getTextColor(rgb) {
- const brightness = Math.round(((parseInt(rgb[0]) * 299)
- + (parseInt(rgb[1]) * 587)
- + (parseInt(rgb[2]) * 114)) / 1000);
- const textColor = (brightness > 125) ? 'black' : 'white';
-
- return textColor;
-}
-function convertToHex(rgb) {
- const color = rgb.map((num) => {
- const hex = num.toString(16);
-
- return hex.length === 1 ? `0${hex}` : hex;
- }).join('');
-
- return `#${color}`;
-}
-
-export default async function (image) {
- try {
- const colorThief = new ColorThief();
- const palette = await colorThief.getPalette(image);
- const colors = palette.map((rgb) => ({
- hex: convertToHex(rgb),
- title: getTextColor(rgb),
- }));
-
- sessionStorage.setItem('color-palettes', JSON.stringify(colors));
-
- return colors;
- } catch (err) {
- console.error(err);
- }
-}
diff --git a/src/utils/generate-element-css.ts b/src/utils/generate-element-css.ts
new file mode 100644
index 0000000..1307ee2
--- /dev/null
+++ b/src/utils/generate-element-css.ts
@@ -0,0 +1,124 @@
+import { ElementAppliedStyleRules } from './CSSRulesUtils';
+import { wrapInParenthesis } from './helper';
+
+function replaceAllStyleValue(
+ css: string,
+ replacement: string | ((key: string, value: string) => string),
+) {
+ return css.replace(/\s*([a-zA-Z-]+)\s*:\s*([^;]+)\s*;/g, (match) => {
+ const [key, value] = match.split(/:\s*([^;]+)/);
+ const newProperty =
+ typeof replacement === 'string'
+ ? replacement
+ : replacement(key.trim(), value);
+
+ return newProperty;
+ });
+}
+
+export function resetAppliedStyleValue(style: ElementAppliedStyleRules) {
+ const copyStyle = structuredClone(style);
+ const replaceValue = (key: string) => {
+ if (key.startsWith('--')) return '';
+
+ return `${key}: initial !important;\n`;
+ };
+
+ copyStyle.cssText = replaceAllStyleValue(copyStyle.cssText, replaceValue);
+ copyStyle.media = copyStyle.media.map((media) => ({
+ ...media,
+ cssText: replaceAllStyleValue(media.cssText, replaceValue),
+ pseudo: media.pseudo.map((pseudo) => ({
+ ...pseudo,
+ cssText: replaceAllStyleValue(pseudo.cssText, replaceValue),
+ })),
+ }));
+ copyStyle.pseudo = copyStyle.pseudo.map((pseudo) => ({
+ ...pseudo,
+ cssText: replaceAllStyleValue(pseudo.cssText, replaceValue),
+ }));
+ copyStyle.animation = copyStyle.animation.map((animation) => ({
+ ...animation,
+ cssText: replaceAllStyleValue(
+ animation.cssText,
+ (key) => `${key}: initial;\n`,
+ ),
+ }));
+
+ return copyStyle;
+}
+
+export function generateElementCSS({
+ style,
+ selector,
+ initialStyle,
+}: {
+ selector: string;
+ style: ElementAppliedStyleRules;
+ initialStyle: ElementAppliedStyleRules;
+}) {
+ const addImportantRule = (cssStr: string) => {
+ return replaceAllStyleValue(cssStr, (key, value) => {
+ if (!key || !value) return `${key || ''}${value || ''}`;
+ if (value.includes('!important') || key.startsWith('--'))
+ return `${key}: ${value};\n`;
+
+ return `${key}: ${value} !important;\n`;
+ });
+ };
+
+ let css = `${selector} {
+ ${initialStyle.cssText}
+
+ ${addImportantRule(style.cssText)}
+ }\n`;
+
+ style.media.forEach((media, index) => {
+ const pseudoMediaCSS = media.pseudo
+ .map(
+ (pseudo, pseudoIdx) =>
+ `${selector}${pseudo.pseudo} {
+ ${initialStyle.media[index]?.pseudo[pseudoIdx]?.cssText || ''}
+ ${addImportantRule(pseudo.cssText)}
+ }`,
+ )
+ .join('\n');
+
+ const mediaCss = `@media ${wrapInParenthesis(media.mediaCondition)} {
+ ${selector} {
+ ${initialStyle.media[index]?.cssText || ''}
+
+ ${addImportantRule(media.cssText)}
+
+ ${pseudoMediaCSS}
+ }
+ }\n`;
+
+ css = `${css}\n${mediaCss}`;
+ });
+
+ const pseudoCSS = style.pseudo
+ .map(
+ (pseudo, pseudoIdx) =>
+ `${selector}${pseudo.pseudo} {
+ ${initialStyle.pseudo[pseudoIdx]?.cssText || ''}
+ ${addImportantRule(pseudo.cssText)}
+ }`,
+ )
+ .join('\n');
+ css = `${css}\n${pseudoCSS}`;
+
+ const animationCSS = style.animation
+ .map(
+ (animation, index) =>
+ `@keyframes ${animation.name} {
+ ${initialStyle.animation[index]?.cssText ?? ''}
+
+ ${animation.cssText}
+ }`,
+ )
+ .join('\n');
+ css = `${css}\n${animationCSS}`;
+
+ return css;
+}
diff --git a/src/utils/get-applied-css.ts b/src/utils/get-applied-css.ts
new file mode 100644
index 0000000..1cf7964
--- /dev/null
+++ b/src/utils/get-applied-css.ts
@@ -0,0 +1,108 @@
+import { StyleDataItem } from '../pages/content/ui/app-plugin';
+import { ElementAppliedCSS, ElementAppliedPseudoCSS } from './css-rule-parser';
+import { AnimationKeyframeRule } from './CSSRulesUtils';
+
+function applyRulesWhitespace(cssText: string, space = ' ') {
+ return cssText
+ .split('\n')
+ .map((line) => `${space}${line}`)
+ .join('\n');
+}
+
+function extractPseudoCSS(
+ selector: string,
+ style: ElementAppliedPseudoCSS[],
+ space = ' ',
+) {
+ let cssText = '';
+ const baseSpace = space.slice(2);
+
+ style.forEach((item) => {
+ if (!item.isDirty) return;
+
+ cssText += `${baseSpace}${selector}${item.pseudo} {\n${applyRulesWhitespace(
+ item.cssText,
+ space,
+ )}\n${baseSpace}}\n`;
+ });
+
+ return cssText;
+}
+function extractAnimationCSS(
+ animations: AnimationKeyframeRule[],
+ space = ' ',
+) {
+ const animation = animations.reduce(
+ (acc, curr) => {
+ return curr.isDirty ? curr : acc;
+ },
+ null,
+ );
+ if (!animation) return '';
+
+ const baseSpace = space.slice(2);
+
+ return `${baseSpace}@keyframes zoomInDown {\n${applyRulesWhitespace(
+ animation.cssText,
+ space,
+ )}\n${baseSpace}}`;
+}
+
+function extractAppliedCSS(
+ selector: string,
+ style: ElementAppliedCSS,
+ space = ' ',
+) {
+ const baseSpace = space.slice(2);
+ return {
+ main: style.isDirty
+ ? `${baseSpace}${selector} {\n${applyRulesWhitespace(
+ style.cssText,
+ space,
+ )}\n${baseSpace}}\n`
+ : '',
+ pseudo: extractPseudoCSS(selector, style.pseudo, space + ' '),
+ animation: extractAnimationCSS(style.animation, space + ' '),
+ };
+}
+
+export function getAppliedCSS(items: StyleDataItem[]) {
+ let mainCssText = '';
+ let mediaCssText = '';
+
+ const mediaRules: Record<
+ string,
+ (ElementAppliedCSS & { selector: string })[]
+ > = {};
+
+ for (const item of items) {
+ item.currentProps.media.forEach((mediaRule) => {
+ if (!mediaRules[mediaRule.mediaCondition]) {
+ mediaRules[mediaRule.mediaCondition] = [];
+ }
+
+ mediaRules[mediaRule.mediaCondition].push({
+ ...mediaRule,
+ selector: item.elSelector,
+ });
+ });
+
+ const extractedCSS = extractAppliedCSS(item.elSelector, item.currentProps);
+ mainCssText +=
+ extractedCSS.main + extractedCSS.pseudo + extractedCSS.animation;
+ }
+
+ for (const rule in mediaRules) {
+ const cssText = mediaRules[rule].reduce((acc, curr) => {
+ const extractedCSS = extractAppliedCSS(curr.selector, curr, ' ');
+ acc += extractedCSS.main + extractedCSS.pseudo + extractedCSS.animation;
+
+ return acc;
+ }, '');
+ if (!cssText.trim()) continue;
+
+ mediaCssText += `@media ${rule} {\n${cssText.trimEnd()}\n}\n`;
+ }
+
+ return `${mainCssText}\n\n${mediaCssText}`;
+}
diff --git a/src/utils/getAppliedCSS.js b/src/utils/getAppliedCSS.js
deleted file mode 100644
index 011e296..0000000
--- a/src/utils/getAppliedCSS.js
+++ /dev/null
@@ -1,129 +0,0 @@
-/* eslint-disable */
-
-function extractCSS(rules) {
- const result = { css: '', hover: '' };
-
- rules.forEach(({ selectorText, style }) => {
- if (/\:\:before|\:\:after|\*/g.test(selectorText)) return;
- if (/\:hover/g.test(selectorText)) {
- result.hover += style.cssText;
-
- return;
- }
-
- result.css += style.cssText;
- });
-
- return result;
-}
-
-function removeDuplicateCSS(css) {
- const seen = new Set();
- const cssArray = css.split(';');
- const filteredCssArray = cssArray.filter((property) => {
- if (property === '') return;
-
- const [key] = property.split(':');
- const duplicate = seen.has(key.trim());
-
- seen.add(key.trim());
-
- return !duplicate;
- });
-
- return filteredCssArray.map((cssStr) => cssStr.trim()).join(';\n');
-}
-
-function getNumber(text) {
- const number = +text.replace(/\D/g, '');
-
- return number;
-}
-
-function filterRules(element, rules) {
- const filteredRules = rules.filter(({ selectorText }) => element.matches(selectorText));
-
- return filteredRules;
-}
-
-class GetAppliedCSS {
- constructor(el) {
- // el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector;
- this.element = el;
- }
-
- get rules() {
- const slice = Function.call.bind(Array.prototype.slice);
- const rules = Array.from(document.styleSheets).reduce((rulesArr, sheet) => {
- try {
- if (sheet?.cssRules) {
- return rulesArr.concat(slice(sheet.cssRules));
- }
- } catch {
- return rulesArr;
- }
- }, []);
-
- return rules;
- }
-
- all() {
- const { css: mediaCSS, hover: mediaHover } = this.mediaQueryCSS();
- const { css: styleCSS, hover: styleHover } = this.css();
- const inlineCSS = this.inlineCSS();
-
- const css = removeDuplicateCSS(inlineCSS + mediaCSS + styleCSS);
- const hover = removeDuplicateCSS(mediaHover + styleHover);
-
- return { css, hover };
- }
-
- inlineCSS() {
- const styleAttribute = this.element.getAttribute('style');
-
- if (!styleAttribute) return '';
-
- return styleAttribute.endsWith(';') ? styleAttribute : `${styleAttribute};`;
- }
-
- mediaQueryCSS() {
- const mediaQueries = this.rules.filter(({ conditionText, media }) => media && window.matchMedia(conditionText).matches && getNumber(conditionText));
- const mediaQueriesSorted = mediaQueries.sort((a, b) => {
- const aMedia = getNumber(a.conditionText);
- const bMedia = getNumber(b.conditionText);
-
- if (aMedia > bMedia) return -1;
- if (bMedia > aMedia) return 1;
-
- return 0;
- });
-
- const cssRules = mediaQueriesSorted.reduce(
- (result, media) => {
- if (media.cssRules) {
- const filteredRules = filterRules(this.element, Array.from(media.cssRules));
- const { css, hover } = extractCSS(filteredRules);
-
- result.css += css;
- result.hover += hover;
-
- return result;
- }
-
- return result;
- },
- { css: '', hover: '' },
- );
-
- return cssRules;
- }
-
- css() {
- const filteredRules = filterRules(this.element, this.rules);
- const result = extractCSS(filteredRules);
-
- return result;
- }
-}
-
-export default GetAppliedCSS;
diff --git a/src/utils/getElProperties.ts b/src/utils/getElProperties.ts
new file mode 100644
index 0000000..a8aeb7c
--- /dev/null
+++ b/src/utils/getElProperties.ts
@@ -0,0 +1,95 @@
+function generateBoxModels(name: string) {
+ const directions = ['top', 'right', 'bottom', 'left'];
+ const keys = directions.map((direction) => `${name}-${direction}`);
+
+ return keys;
+}
+
+function removePx(str: string) {
+ if (str === 'fontFamily') return '';
+
+ const value = +str.replace('px', '');
+ const result = value === 0 ? '-' : Math.floor(value);
+
+ return result;
+}
+
+type ComputedStyles = Record;
+
+export interface ElementBasicSelector {
+ id: string;
+ tag: string;
+ classes: string;
+}
+
+export interface ElementProperties {
+ selector: ElementBasicSelector;
+ computedStyles: ComputedStyles;
+ size: { height: number; width: number };
+}
+
+export function getElBasicSelector(target: Element) {
+ const selector: ElementBasicSelector = {
+ tag: target.tagName.toLowerCase(),
+ id: target.id ? `#${target.id}` : '',
+ classes: Array.from(target.classList).join('.'),
+ };
+ if (selector.classes) selector.classes = `.${selector.classes}`;
+
+ return {
+ ...selector,
+ string: `${selector.tag}${selector.id}${selector.classes}`,
+ };
+}
+
+function getElProperties(target: Element) {
+ const computedStyleKeys = [
+ ...generateBoxModels('margin'),
+ ...generateBoxModels('padding'),
+ 'fontSize',
+ 'fontFamily',
+ ];
+ const selector = getElBasicSelector(target);
+
+ const getSize = () => {
+ const { height, width } = target.getBoundingClientRect();
+ return { height, width };
+ };
+ const getComputedStyles = () => {
+ const computedStyles = computedStyleKeys.reduce(
+ (styles, key: string) => {
+ const value = getComputedStyle(target)[
+ key as keyof CSSStyleDeclaration
+ ] as string;
+
+ styles[key] =
+ key === 'fontFamily'
+ ? value.split(',')[0].replace(/"/g, '')
+ : removePx(value);
+
+ return styles;
+ },
+ {},
+ );
+
+ return computedStyles;
+ };
+ const getAll = () => {
+ const properties = {
+ selector,
+ size: getSize(),
+ computedStyles: getComputedStyles(),
+ };
+
+ return properties;
+ };
+
+ return {
+ getAll,
+ getSize,
+ selector,
+ getComputedStyles,
+ };
+}
+
+export default getElProperties;
diff --git a/src/utils/getElementProperties.js b/src/utils/getElementProperties.js
deleted file mode 100644
index 10b13f9..0000000
--- a/src/utils/getElementProperties.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/* eslint-disable no-param-reassign */
-
-function generateBoxModels(name) {
- const directions = ['top', 'right', 'bottom', 'left'];
- const keys = directions.map((direction) => `${name}-${direction}`);
-
- return keys;
-}
-
-function removePx(str) {
- if (str === 'fontFamily') return '';
-
- const value = str.replace('px', '');
- const result = +value === 0 ? '-' : Math.floor(value);
-
- return result;
-}
-
-function filterClasses(classes) {
- const blackListClasses = ['hover-element', 'active-element'];
- const filtered = classes.filter((name) => !blackListClasses.includes(name));
-
- return filtered.length !== 0 ? `.${filtered.join('.')}` : '';
-}
-
-class ElementProperties {
- constructor(reference) {
- this.reference = reference;
- this.computedStyleKeys = [
- ...generateBoxModels('margin'),
- ...generateBoxModels('padding'),
- 'fontFamily',
- ];
- }
-
- getSelector() {
- const selector = {
- tag: this.reference.tagName.toLowerCase(),
- id: this.reference.id ? `#${this.reference.id}` : '',
- classes: filterClasses(Array.from(this.reference.classList)),
- };
-
- return selector;
- }
-
- getSize() {
- const { height, width } = this.reference.getBoundingClientRect();
-
- return { height, width };
- }
-
- getComputedStyles() {
- const computedStyles = this.computedStyleKeys.reduce((styles, key) => {
- const value = getComputedStyle(this.reference)[key];
-
- styles[key] = key === 'fontFamily' ? value.split(',')[0].replace(/"/g, '') : removePx(value);
-
- return styles;
- }, {});
-
- return computedStyles;
- }
-
- getAll() {
- const properties = {
- selector: this.getSelector(),
- size: this.getSize(),
- computedStyles: this.getComputedStyles(),
- };
-
- return properties;
- }
-}
-
-export default ElementProperties;
diff --git a/src/utils/globalEvent.js b/src/utils/globalEvent.js
deleted file mode 100644
index 2012732..0000000
--- a/src/utils/globalEvent.js
+++ /dev/null
@@ -1,46 +0,0 @@
-export default class GlobalEvent {
- static init(callback) {
- this.callback = callback;
- this.bindMouseEvent = this.clickHandler.bind(this);
- this.bindKeyupEvent = this.keyupHandler.bind(this);
-
- this.addListener();
- }
-
- static addListener() {
- window.addEventListener('click', this.bindMouseEvent);
- document.addEventListener('keyup', this.bindKeyupEvent);
- }
-
- static removeListeners() {
- window.removeEventListener('click', this.bindMouseEvent);
- document.removeEventListener('keyup', this.bindKeyupEvent);
- }
-
- static keyupHandler({ code, ctrlKey }) {
- if (ctrlKey && code === 'Space') {
- const target = document.querySelector('.hover-element');
-
- this.eventHandler(target);
- }
- }
-
- static clickHandler({ target }) {
- this.eventHandler(target);
- }
-
- static eventHandler(target) {
- const isPaused = document.body.classList.contains('pause');
- const isMatchExtensionElement = target.matches('.inspect-css,[active-element],html');
-
- if (isMatchExtensionElement || isPaused) return;
-
- const activeElement = document.querySelector('[active-element]');
- activeElement?.removeAttribute('active-element');
-
- target.setAttribute('active-element', '');
- target.classList.remove('hover-element');
-
- this.callback();
- }
-}
diff --git a/src/utils/helper.js b/src/utils/helper.js
deleted file mode 100644
index 2040bfd..0000000
--- a/src/utils/helper.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/* eslint-disable */
-
-export const generateGetBoundingClientRect = (x = 0, y = 0) => () => ({
- width: 0,
- height: 0,
- top: y,
- right: x,
- bottom: y,
- left: x,
-});
-
-export function copyToClipboard(text = '') {
- const textarea = document.createElement('textarea');
-
- textarea.value = text;
- textarea.style.top = 0;
- textarea.style.left = 0;
- textarea.style.opacity = 0;
- textarea.style.position = 'fixed';
-
- document.body.appendChild(textarea);
-
- textarea.focus();
- textarea.select();
-
- document.execCommand('Copy');
-
- textarea.remove();
-
- return true;
-}
-
-export function debounce(func, wait, immediate) {
- let timeout;
-
- return function () {
- const context = this;
- const args = arguments;
- const later = function () {
- timeout = null;
- if (!immediate) func.apply(context, args);
- };
- const callNow = immediate && !timeout;
-
- clearTimeout(timeout);
-
- timeout = setTimeout(later, wait);
-
- if (callNow) func.apply(context, args);
- };
-}
diff --git a/src/utils/helper.ts b/src/utils/helper.ts
new file mode 100644
index 0000000..999afcd
--- /dev/null
+++ b/src/utils/helper.ts
@@ -0,0 +1,81 @@
+import { ClientRectObject } from '@floating-ui/vue';
+
+export const generateBoundingClientRect =
+ (x = 0, y = 0) =>
+ (): ClientRectObject => ({
+ x,
+ y,
+ top: y,
+ left: x,
+ width: 0,
+ right: x,
+ height: 0,
+ bottom: y,
+ });
+
+export function debounce(
+ fn: (...args: T) => void,
+ delay: number,
+) {
+ let timeoutId: NodeJS.Timeout;
+
+ return (...args: T) => {
+ clearTimeout(timeoutId);
+ timeoutId = setTimeout(() => {
+ fn(...args);
+ }, delay);
+ };
+}
+
+export function wrapInParenthesis(text: string) {
+ let wrappedText = text;
+
+ if (!text.startsWith('(')) wrappedText = `(${wrappedText}`;
+ if (!text.endsWith(')')) wrappedText = `${wrappedText})`;
+
+ return wrappedText;
+}
+
+export function downloadFile(filename: string, blob: Blob | string) {
+ const isString = typeof blob === 'string';
+ const objectURL = isString ? blob : URL.createObjectURL(blob);
+
+ const anchorEl = document.createElement('a');
+ anchorEl.href = objectURL;
+ anchorEl.download = filename;
+
+ document.body.appendChild(anchorEl);
+
+ anchorEl.click();
+ anchorEl.remove();
+
+ if (!isString) URL.revokeObjectURL(objectURL);
+}
+
+export function parseURL(url: string) {
+ try {
+ return new URL(url);
+ } catch (error) {
+ return null;
+ }
+}
+
+export function copyToClipboard(text: string) {
+ return navigator.clipboard.writeText(text);
+}
+
+export function parseJSON(
+ input: string,
+ def?: K,
+): T | K {
+ try {
+ return JSON.parse(input) as T;
+ } catch (_error) {
+ //@ts-expect-error I don't know how to type this
+ return def;
+ }
+}
+
+export function isObject(input: T) {
+ return typeof input === 'object' && !Array.isArray(input);
+}
diff --git a/src/utils/screenshot.js b/src/utils/screenshot.js
deleted file mode 100644
index 7307fa6..0000000
--- a/src/utils/screenshot.js
+++ /dev/null
@@ -1,106 +0,0 @@
-class Screenshot {
- static async captureVisible() {
- const imageUri = await browser.runtime.sendMessage({ type: 'screenshot' });
- const image = new Image();
-
- image.src = imageUri;
-
- return image;
- }
-
- static captureAll() {
- return new Promise((resolve) => {
- const canvas = document.createElement('canvas');
- const context = canvas.getContext('2d');
- const { body } = document;
- const element = document.documentElement;
- const originalSize = element.scrollHeight;
- const originalPosition = window.scrollY;
-
- if (body) body.style.overflowY = 'visible';
-
- this.insertStyle();
- this.fixedElements();
-
- canvas.height = element.scrollHeight * 0.7;
- canvas.width = window.innerWidth * 0.7;
-
- body.classList.add('is-screenshotting');
-
- this.getImages(originalSize, (images) => {
- this.clearUp();
- element.scrollTo(0, originalPosition);
-
- let position = 0;
-
- images.forEach((image) => {
- context.drawImage(image, 0, position, window.innerWidth * 0.7, window.innerHeight * 0.7);
-
- position += window.innerHeight * 0.7;
- });
-
- const image = new Image(canvas.width, canvas.height);
- image.src = canvas.toDataURL('image/png');
-
- resolve(image);
- });
- });
- }
-
- static getImages(originalSize, callback, images = [], scrollPosition = 0) {
- const timeout = setTimeout(() => {
- callback(images);
- }, 5000);
-
- if (scrollPosition >= originalSize) {
- clearTimeout(timeout);
- callback(images);
-
- return;
- }
-
- if (scrollPosition > 0) {
- document.body.classList.add('hide-fixed');
- }
-
- document.documentElement.scrollTo(0, scrollPosition);
-
- setTimeout(() => {
- this.captureVisible().then((image) => {
- images.push(image);
- clearTimeout(timeout);
-
- this.getImages(originalSize, callback, images, scrollPosition + window.innerHeight);
- });
- }, 500);
- }
-
- static insertStyle() {
- const style = document.createElement('style');
- style.innerText = 'html::-webkit-scrollbar, body::-webkit-scrollbar{ width: 0 !important; height: 0 !important }';
- style.id = 'inspect-css-scroll';
-
- document.body.appendChild(style);
- }
-
- static fixedElements() {
- Array.from(document.body.getElementsByTagName('*')).forEach((el) => {
- const { position } = getComputedStyle(el);
-
- if (position === 'sticky') el.setAttribute('is-sticky', '');
- if (position === 'fixed') el.setAttribute('is-fixed', '');
- });
- }
-
- static clearUp() {
- const style = document.getElementById('inspect-css-scroll');
-
- if (style) style.remove();
-
- document.body.classList.remove('hide-fixed');
- document.body.classList.remove('is-screenshotting');
- document.body.style.overflowY = '';
- }
-}
-
-export default Screenshot;
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/src/vue-shim.d.ts b/src/vue-shim.d.ts
new file mode 100644
index 0000000..94cc8d4
--- /dev/null
+++ b/src/vue-shim.d.ts
@@ -0,0 +1,6 @@
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue';
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const component: DefineComponent