You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by wu...@apache.org on 2025/06/26 09:01:05 UTC
(bigtop-manager) branch main updated: BIGTOP-4449: Bump few frontend dependencies to a newer version (#229)
This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new dfc6daaf BIGTOP-4449: Bump few frontend dependencies to a newer version (#229)
dfc6daaf is described below
commit dfc6daafe978bee2eb5e434469ee9ae831ba4a52
Author: Fdefined <55...@users.noreply.github.com>
AuthorDate: Thu Jun 26 17:00:55 2025 +0800
BIGTOP-4449: Bump few frontend dependencies to a newer version (#229)
---
bigtop-manager-ui/{.eslintrc.js => .eslintrc.cjs} | 0
bigtop-manager-ui/.gitignore | 4 +
bigtop-manager-ui/.prettierrc.js | 2 +-
bigtop-manager-ui/package.json | 16 +-
bigtop-manager-ui/pnpm-lock.yaml | 1853 ++++----------------
bigtop-manager-ui/postcss.config.js | 8 +-
.../images/{ai_disabled.png => ai-disabled.png} | Bin
.../assets/images/{ai_helper.png => ai-helper.png} | Bin
.../assets/images/svg/{bm_logo.svg => bm-logo.svg} | 0
.../svg/{chat_avatar.svg => chat-avatar.svg} | 0
...usters_activated.svg => clusters-activated.svg} | 0
...ents_activated.svg => components-activated.svg} | 0
.../svg/{exit_screen.svg => exit-screen.svg} | 0
.../{filter_activated.svg => filter-activated.svg} | 0
.../svg/{full_screen.svg => full-screen.svg} | 0
.../{hosts_activated.svg => hosts-activated.svg} | 0
...activated.svg => infrastructures-activated.svg} | 0
...nfig_activated.svg => llm-config-activated.svg} | 0
.../images/svg/{llm_config.svg => llm-config.svg} | 0
.../images/svg/{more_line.svg => more-line.svg} | 0
.../images/svg/{plus_dark.svg => plus-dark.svg} | 0
.../images/svg/{plus_gray.svg => plus-gray.svg} | 0
.../{search_activated.svg => search-activated.svg} | 0
.../src/components/ai-assistant/chat-message.vue | 2 +-
.../src/components/ai-assistant/empty-content.vue | 4 +-
.../src/components/ai-assistant/index.vue | 13 +-
.../src/components/common/svg-icon/index.vue | 77 +-
.../components/component-assigner.vue | 35 +-
.../components/component-installer.vue | 33 +-
.../components/service-configurator.vue | 2 +-
.../src/components/create-service/create.vue | 74 +-
.../components/service-management/components.vue | 4 +-
.../src/components/service-management/configs.vue | 2 +-
bigtop-manager-ui/src/layouts/header.vue | 2 +-
bigtop-manager-ui/src/layouts/index.vue | 4 +-
bigtop-manager-ui/src/layouts/sider.vue | 2 +-
bigtop-manager-ui/src/locales/en_US/common.ts | 4 +-
bigtop-manager-ui/src/locales/zh_CN/common.ts | 3 +-
bigtop-manager-ui/src/main.ts | 1 -
.../cluster/components/check-workflow.vue | 43 +-
.../cluster/components/host-config.vue | 2 +-
.../src/pages/cluster-manage/cluster/create.vue | 35 +-
.../src/pages/cluster-manage/cluster/host.vue | 4 +-
.../src/pages/cluster-manage/cluster/overview.vue | 23 +-
.../src/pages/cluster-manage/cluster/service.vue | 2 +-
.../src/pages/cluster-manage/hosts/index.vue | 4 +-
.../cluster-manage/hosts/install-dependencies.vue | 4 +-
.../cluster-manage/infrastructures/service.vue | 2 +-
.../llm-config/components/llm-item.vue | 2 +-
.../src/router/routes/modules/system.ts | 2 +-
.../src/store/create-service/index.ts | 28 +-
.../src/store/create-service/validation.ts | 91 +-
bigtop-manager-ui/src/store/service/index.ts | 12 +-
bigtop-manager-ui/src/store/theme/config.ts | 2 +-
bigtop-manager-ui/src/styles/index.scss | 40 +-
bigtop-manager-ui/src/types/components.d.ts | 30 -
.../tests/__components__/filter-form.test.ts | 103 ++
.../tests/__components__/svg-icon.test.ts | 47 -
bigtop-manager-ui/tsconfig.json | 6 +-
bigtop-manager-ui/vite.config.ts | 63 +-
60 files changed, 907 insertions(+), 1783 deletions(-)
diff --git a/bigtop-manager-ui/.eslintrc.js b/bigtop-manager-ui/.eslintrc.cjs
similarity index 100%
rename from bigtop-manager-ui/.eslintrc.js
rename to bigtop-manager-ui/.eslintrc.cjs
diff --git a/bigtop-manager-ui/.gitignore b/bigtop-manager-ui/.gitignore
index d63b3688..c0adcef4 100644
--- a/bigtop-manager-ui/.gitignore
+++ b/bigtop-manager-ui/.gitignore
@@ -24,3 +24,7 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+
+# Auto-generated TypeScript declaration files
+auto-imports.d.ts
+components.d.ts
\ No newline at end of file
diff --git a/bigtop-manager-ui/.prettierrc.js b/bigtop-manager-ui/.prettierrc.js
index a2007ad6..57e21a38 100644
--- a/bigtop-manager-ui/.prettierrc.js
+++ b/bigtop-manager-ui/.prettierrc.js
@@ -17,7 +17,7 @@
* under the License.
*/
-module.exports = {
+export default {
useTabs: false,
printWidth: 120,
semi: false,
diff --git a/bigtop-manager-ui/package.json b/bigtop-manager-ui/package.json
index 47d2d270..c123c8cf 100644
--- a/bigtop-manager-ui/package.json
+++ b/bigtop-manager-ui/package.json
@@ -1,9 +1,10 @@
{
"name": "bigtop-manager-ui",
"version": "0.0.0",
+ "type": "module",
"scripts": {
"dev": "vite --open --mode development",
- "build": "vue-tsc && vite build --mode production",
+ "build": "vite build && vue-tsc --noEmit",
"preview": "vite preview",
"lint": "eslint src --ext .ts,.tsx,.vue",
"prettier": "prettier --write \"src/**/*.{vue,ts,tsx}\"",
@@ -14,7 +15,8 @@
"@ant-design/icons-vue": "^6.1.0",
"@vueuse/core": "^10.5.0",
"ant-design-vue": "^4.2.3",
- "axios": "^1.7.4",
+ "axios": "^1.8.2",
+ "braces": "^3.0.3",
"clipboard": "^2.0.11",
"dayjs": "^1.11.9",
"echarts": "^5.4.3",
@@ -28,7 +30,7 @@
"pinia-plugin-persistedstate": "^3.2.0",
"vue": "^3.4.37",
"vue-dompurify-html": "^5.1.0",
- "vue-i18n": "^9.2.2",
+ "vue-i18n": "^11.1.5",
"vue-router": "^4.2.4"
},
"devDependencies": {
@@ -46,15 +48,17 @@
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-vue": "^9.17.0",
- "happy-dom": "^15.10.2",
+ "happy-dom": "^18.0.1",
"postcss": "^8.4.41",
"prettier": "^3.0.2",
"sass": "^1.66.1",
"sass-loader": "^13.3.2",
"typescript": "^5.0.2",
+ "unplugin-auto-import": "^19.3.0",
+ "unplugin-icons": "^22.1.0",
+ "unplugin-vue-components": "^28.7.0",
"vite": "^5.4.0",
- "vite-plugin-svg-icons": "^2.0.1",
- "vitest": "^2.1.9",
+ "vitest": "^3.2.3",
"vue-tsc": "^1.8.5"
},
"browserslist": [
diff --git a/bigtop-manager-ui/pnpm-lock.yaml b/bigtop-manager-ui/pnpm-lock.yaml
index fb6f4edc..a5afa1cf 100644
--- a/bigtop-manager-ui/pnpm-lock.yaml
+++ b/bigtop-manager-ui/pnpm-lock.yaml
@@ -15,8 +15,11 @@ dependencies:
specifier: ^4.2.3
version: 4.2.3(vue@3.4.37)
axios:
- specifier: ^1.7.4
- version: 1.7.4
+ specifier: ^1.8.2
+ version: 1.8.2
+ braces:
+ specifier: ^3.0.3
+ version: 3.0.3
clipboard:
specifier: ^2.0.11
version: 2.0.11
@@ -57,8 +60,8 @@ dependencies:
specifier: ^5.1.0
version: 5.1.0(vue@3.4.37)
vue-i18n:
- specifier: ^9.2.2
- version: 9.2.2(vue@3.4.37)
+ specifier: ^11.1.5
+ version: 11.1.5(vue@3.4.37)
vue-router:
specifier: ^4.2.4
version: 4.2.4(vue@3.4.37)
@@ -107,8 +110,8 @@ devDependencies:
specifier: ^9.17.0
version: 9.17.0(eslint@8.47.0)
happy-dom:
- specifier: ^15.10.2
- version: 15.10.2
+ specifier: ^18.0.1
+ version: 18.0.1
postcss:
specifier: ^8.4.41
version: 8.4.41
@@ -124,15 +127,21 @@ devDependencies:
typescript:
specifier: ^5.0.2
version: 5.0.2
+ unplugin-auto-import:
+ specifier: ^19.3.0
+ version: 19.3.0(@vueuse/core@10.5.0)
+ unplugin-icons:
+ specifier: ^22.1.0
+ version: 22.1.0
+ unplugin-vue-components:
+ specifier: ^28.7.0
+ version: 28.7.0(vue@3.4.37)
vite:
specifier: ^5.4.0
version: 5.4.0(@types/node@20.5.3)(sass@1.66.1)
- vite-plugin-svg-icons:
- specifier: ^2.0.1
- version: 2.0.1(vite@5.4.0)
vitest:
- specifier: ^2.1.9
- version: 2.1.9(@types/node@20.5.3)(happy-dom@15.10.2)(sass@1.66.1)
+ specifier: ^3.2.3
+ version: 3.2.3(@types/node@20.5.3)(happy-dom@18.0.1)(sass@1.66.1)
vue-tsc:
specifier: ^1.8.5
version: 1.8.5(typescript@5.0.2)
@@ -169,6 +178,17 @@ packages:
vue: 3.4.37(typescript@5.0.2)
dev: false
+ /@antfu/install-pkg@1.1.0:
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+ dependencies:
+ package-manager-detector: 1.3.0
+ tinyexec: 1.0.1
+ dev: true
+
+ /@antfu/utils@8.1.1:
+ resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
+ dev: true
+
/@babel/code-frame@7.27.1:
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
@@ -483,42 +503,44 @@ packages:
deprecated: Use @eslint/object-schema instead
dev: true
- /@intlify/core-base@9.2.2:
- resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==}
- engines: {node: '>= 14'}
- dependencies:
- '@intlify/devtools-if': 9.2.2
- '@intlify/message-compiler': 9.2.2
- '@intlify/shared': 9.2.2
- '@intlify/vue-devtools': 9.2.2
- dev: false
+ /@iconify/types@2.0.0:
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+ dev: true
- /@intlify/devtools-if@9.2.2:
- resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==}
- engines: {node: '>= 14'}
+ /@iconify/utils@2.3.0:
+ resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
dependencies:
- '@intlify/shared': 9.2.2
- dev: false
+ '@antfu/install-pkg': 1.1.0
+ '@antfu/utils': 8.1.1
+ '@iconify/types': 2.0.0
+ debug: 4.4.1
+ globals: 15.15.0
+ kolorist: 1.8.0
+ local-pkg: 1.1.1
+ mlly: 1.7.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@intlify/message-compiler@9.2.2:
- resolution: {integrity: sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==}
- engines: {node: '>= 14'}
+ /@intlify/core-base@11.1.5:
+ resolution: {integrity: sha512-xGRkISwV/2Trqb8yVQevlHm5roaQqy+75qwUzEQrviaQF0o4c5VDhjBW7WEGEoKFx09HSgq7NkvK/DAyuerTDg==}
+ engines: {node: '>= 16'}
dependencies:
- '@intlify/shared': 9.2.2
- source-map: 0.6.1
+ '@intlify/message-compiler': 11.1.5
+ '@intlify/shared': 11.1.5
dev: false
- /@intlify/shared@9.2.2:
- resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==}
- engines: {node: '>= 14'}
+ /@intlify/message-compiler@11.1.5:
+ resolution: {integrity: sha512-YLSBbjD7qUdShe3ZAat9Hnf9E8FRpN6qmNFD/x5Xg5JVXjsks0kJ90Zj6aAuyoppJQA/YJdWZ8/bB7k3dg2TjQ==}
+ engines: {node: '>= 16'}
+ dependencies:
+ '@intlify/shared': 11.1.5
+ source-map-js: 1.2.1
dev: false
- /@intlify/vue-devtools@9.2.2:
- resolution: {integrity: sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==}
- engines: {node: '>= 14'}
- dependencies:
- '@intlify/core-base': 9.2.2
- '@intlify/shared': 9.2.2
+ /@intlify/shared@11.1.5:
+ resolution: {integrity: sha512-+I4vRzHm38VjLr/CAciEPJhGYFzWWW4HMTm+6H3WqknXLh0ozNX9oC8ogMUwTSXYR/wGUb1/lTpNziiCH5MybQ==}
+ engines: {node: '>= 16'}
dev: false
/@isaacs/cliui@8.0.2:
@@ -823,6 +845,16 @@ packages:
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
dev: true
+ /@types/chai@5.2.2:
+ resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
+ dependencies:
+ '@types/deep-eql': 4.0.2
+ dev: true
+
+ /@types/deep-eql@4.0.2:
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+ dev: true
+
/@types/eslint-scope@3.7.7:
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
dependencies:
@@ -873,12 +905,6 @@ packages:
resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==}
dev: true
- /@types/svgo@2.6.4:
- resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
- dependencies:
- '@types/node': 20.5.3
- dev: true
-
/@types/trusted-types@2.0.7:
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
requiresBuild: true
@@ -887,7 +913,10 @@ packages:
/@types/web-bluetooth@0.0.18:
resolution: {integrity: sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==}
- dev: false
+
+ /@types/whatwg-mimetype@3.0.2:
+ resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==}
+ dev: true
/@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.0.2):
resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==}
@@ -1031,65 +1060,67 @@ packages:
vue: 3.4.37(typescript@5.0.2)
dev: true
- /@vitest/expect@2.1.9:
- resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==}
+ /@vitest/expect@3.2.3:
+ resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==}
dependencies:
- '@vitest/spy': 2.1.9
- '@vitest/utils': 2.1.9
+ '@types/chai': 5.2.2
+ '@vitest/spy': 3.2.3
+ '@vitest/utils': 3.2.3
chai: 5.2.0
- tinyrainbow: 1.2.0
+ tinyrainbow: 2.0.0
dev: true
- /@vitest/mocker@2.1.9(vite@5.4.0):
- resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==}
+ /@vitest/mocker@3.2.3(vite@5.4.0):
+ resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==}
peerDependencies:
msw: ^2.4.9
- vite: ^5.0.0
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
dependencies:
- '@vitest/spy': 2.1.9
+ '@vitest/spy': 3.2.3
estree-walker: 3.0.3
magic-string: 0.30.17
vite: 5.4.0(@types/node@20.5.3)(sass@1.66.1)
dev: true
- /@vitest/pretty-format@2.1.9:
- resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==}
+ /@vitest/pretty-format@3.2.3:
+ resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==}
dependencies:
- tinyrainbow: 1.2.0
+ tinyrainbow: 2.0.0
dev: true
- /@vitest/runner@2.1.9:
- resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==}
+ /@vitest/runner@3.2.3:
+ resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==}
dependencies:
- '@vitest/utils': 2.1.9
- pathe: 1.1.2
+ '@vitest/utils': 3.2.3
+ pathe: 2.0.3
+ strip-literal: 3.0.0
dev: true
- /@vitest/snapshot@2.1.9:
- resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==}
+ /@vitest/snapshot@3.2.3:
+ resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==}
dependencies:
- '@vitest/pretty-format': 2.1.9
+ '@vitest/pretty-format': 3.2.3
magic-string: 0.30.17
- pathe: 1.1.2
+ pathe: 2.0.3
dev: true
- /@vitest/spy@2.1.9:
- resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==}
+ /@vitest/spy@3.2.3:
+ resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==}
dependencies:
- tinyspy: 3.0.2
+ tinyspy: 4.0.3
dev: true
- /@vitest/utils@2.1.9:
- resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
+ /@vitest/utils@3.2.3:
+ resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==}
dependencies:
- '@vitest/pretty-format': 2.1.9
+ '@vitest/pretty-format': 3.2.3
loupe: 3.1.3
- tinyrainbow: 1.2.0
+ tinyrainbow: 2.0.0
dev: true
/@volar/language-core@1.9.2:
@@ -1251,11 +1282,9 @@ packages:
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- dev: false
/@vueuse/metadata@10.5.0:
resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==}
- dev: false
/@vueuse/shared@10.5.0(vue@3.4.37):
resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==}
@@ -1264,7 +1293,6 @@ packages:
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- dev: false
/@webassemblyjs/ast@1.14.1:
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -1437,11 +1465,6 @@ packages:
require-from-string: 2.0.2
dev: true
- /ansi-regex@2.1.1:
- resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -1452,11 +1475,6 @@ packages:
engines: {node: '>=12'}
dev: true
- /ansi-styles@2.2.1:
- resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@@ -1523,21 +1541,6 @@ packages:
deep-equal: 2.2.3
dev: true
- /arr-diff@4.0.0:
- resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /arr-flatten@1.1.0:
- resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /arr-union@3.1.0:
- resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/array-buffer-byte-length@1.0.2:
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
@@ -1555,39 +1558,11 @@ packages:
engines: {node: '>=8'}
dev: true
- /array-unique@0.3.2:
- resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /arraybuffer.prototype.slice@1.0.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- is-array-buffer: 3.0.5
- dev: true
-
/assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
dev: true
- /assign-symbols@1.0.0:
- resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- engines: {node: '>= 0.4'}
- dev: true
-
/async-validator@4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
dev: false
@@ -1596,12 +1571,6 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
- /atob@2.1.2:
- resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
- engines: {node: '>= 4.5.0'}
- hasBin: true
- dev: true
-
/autoprefixer@10.4.20(postcss@8.4.41):
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
engines: {node: ^10 || ^12 || >=14}
@@ -1625,8 +1594,8 @@ packages:
possible-typed-array-names: 1.1.0
dev: true
- /axios@1.7.4:
- resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==}
+ /axios@1.8.2:
+ resolution: {integrity: sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==}
dependencies:
follow-redirects: 1.15.9
form-data: 4.0.3
@@ -1639,32 +1608,11 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
- /base@0.11.2:
- resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- cache-base: 1.0.1
- class-utils: 0.3.6
- component-emitter: 1.3.1
- define-property: 1.0.0
- isobject: 3.0.1
- mixin-deep: 1.3.2
- pascalcase: 0.1.1
- dev: true
-
- /big.js@5.2.2:
- resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
- dev: true
-
/binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
dev: true
- /bluebird@3.7.2:
- resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
- dev: true
-
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
@@ -1682,30 +1630,11 @@ packages:
balanced-match: 1.0.2
dev: true
- /braces@2.3.2:
- resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-flatten: 1.1.0
- array-unique: 0.3.2
- extend-shallow: 2.0.1
- fill-range: 4.0.0
- isobject: 3.0.1
- repeat-element: 1.1.4
- snapdragon: 0.8.2
- snapdragon-node: 2.1.1
- split-string: 3.1.0
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.1.1
- dev: true
/browserslist@4.25.0:
resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==}
@@ -1727,21 +1656,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /cache-base@1.0.1:
- resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- collection-visit: 1.0.0
- component-emitter: 1.3.1
- get-value: 2.0.6
- has-value: 1.0.0
- isobject: 3.0.1
- set-value: 2.0.1
- to-object-path: 0.3.0
- union-value: 1.0.1
- unset-value: 1.0.0
- dev: true
-
/call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -1796,17 +1710,6 @@ packages:
pathval: 2.0.0
dev: true
- /chalk@1.1.3:
- resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
- engines: {node: '>=0.10.0'}
- dependencies:
- ansi-styles: 2.2.1
- escape-string-regexp: 1.0.5
- has-ansi: 2.0.0
- strip-ansi: 3.0.1
- supports-color: 2.0.0
- dev: true
-
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -1840,16 +1743,6 @@ packages:
engines: {node: '>=6.0'}
dev: true
- /class-utils@0.3.6:
- resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-union: 3.1.0
- define-property: 0.2.5
- isobject: 3.0.1
- static-extend: 0.1.2
- dev: true
-
/clipboard@2.0.11:
resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
dependencies:
@@ -1858,19 +1751,6 @@ packages:
tiny-emitter: 2.1.0
dev: false
- /clone@2.1.2:
- resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
- engines: {node: '>=0.8'}
- dev: true
-
- /collection-visit@1.0.0:
- resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- map-visit: 1.0.0
- object-visit: 1.0.1
- dev: true
-
/color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -1907,10 +1787,6 @@ packages:
engines: {node: '>= 10'}
dev: true
- /component-emitter@1.3.1:
- resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
- dev: true
-
/compute-scroll-into-view@1.0.20:
resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==}
dev: false
@@ -1919,6 +1795,14 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
+ /confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+ dev: true
+
+ /confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+ dev: true
+
/config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
dependencies:
@@ -1926,24 +1810,11 @@ packages:
proto-list: 1.2.4
dev: true
- /copy-descriptor@0.1.1:
- resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/core-js@3.43.0:
resolution: {integrity: sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==}
requiresBuild: true
dev: false
- /cors@2.8.5:
- resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
- engines: {node: '>= 0.10'}
- dependencies:
- object-assign: 4.1.1
- vary: 1.1.2
- dev: true
-
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -1962,16 +1833,6 @@ packages:
postcss: 8.4.41
dev: true
- /css-select@4.3.0:
- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 4.3.1
- domutils: 2.8.0
- nth-check: 2.1.1
- dev: true
-
/css-select@5.1.0:
resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
dependencies:
@@ -1982,14 +1843,6 @@ packages:
nth-check: 2.1.1
dev: true
- /css-tree@1.1.3:
- resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
- engines: {node: '>=8.0.0'}
- dependencies:
- mdn-data: 2.0.14
- source-map: 0.6.1
- dev: true
-
/css-tree@2.2.1:
resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
@@ -2076,13 +1929,6 @@ packages:
postcss: 8.4.41
dev: true
- /csso@4.2.0:
- resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
- engines: {node: '>=8.0.0'}
- dependencies:
- css-tree: 1.1.3
- dev: true
-
/csso@5.0.5:
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
@@ -2093,33 +1939,6 @@ packages:
/csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- /data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
- dev: true
-
- /data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
- dev: true
-
- /data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
- dev: true
-
/dayjs@1.11.9:
resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==}
dev: false
@@ -2128,17 +1947,6 @@ packages:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
- /debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.0.0
- dev: true
-
/debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
engines: {node: '>=6.0'}
@@ -2151,11 +1959,6 @@ packages:
ms: 2.1.3
dev: true
- /decode-uri-component@0.2.2:
- resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
- engines: {node: '>=0.10'}
- dev: true
-
/deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -2207,28 +2010,6 @@ packages:
object-keys: 1.1.1
dev: true
- /define-property@0.2.5:
- resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 0.1.7
- dev: true
-
- /define-property@1.0.0:
- resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 1.0.3
- dev: true
-
- /define-property@2.0.2:
- resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 1.0.3
- isobject: 3.0.1
- dev: true
-
/delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -2264,21 +2045,6 @@ packages:
resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==}
dev: false
- /dom-serializer@0.2.2:
- resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
- dependencies:
- domelementtype: 2.3.0
- entities: 2.2.0
- dev: true
-
- /dom-serializer@1.4.1:
- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- entities: 2.2.0
- dev: true
-
/dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
dependencies:
@@ -2287,27 +2053,10 @@ packages:
entities: 4.5.0
dev: true
- /domelementtype@1.3.1:
- resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
- dev: true
-
/domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
dev: true
- /domhandler@2.4.2:
- resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
- dependencies:
- domelementtype: 1.3.1
- dev: true
-
- /domhandler@4.3.1:
- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
- engines: {node: '>= 4'}
- dependencies:
- domelementtype: 2.3.0
- dev: true
-
/domhandler@5.0.3:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
@@ -2321,21 +2070,6 @@ packages:
'@types/trusted-types': 2.0.7
dev: false
- /domutils@1.7.0:
- resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
- dependencies:
- dom-serializer: 0.2.2
- domelementtype: 1.3.1
- dev: true
-
- /domutils@2.8.0:
- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
- dependencies:
- dom-serializer: 1.4.1
- domelementtype: 2.3.0
- domhandler: 4.3.1
- dev: true
-
/domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
dependencies:
@@ -2386,11 +2120,6 @@ packages:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
dev: true
- /emojis-list@3.0.0:
- resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
- engines: {node: '>= 4'}
- dev: true
-
/enhanced-resolve@5.18.1:
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
engines: {node: '>=10.13.0'}
@@ -2399,14 +2128,6 @@ packages:
tapable: 2.2.2
dev: true
- /entities@1.1.2:
- resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
- dev: true
-
- /entities@2.2.0:
- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
- dev: true
-
/entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -2416,66 +2137,6 @@ packages:
resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==}
engines: {node: '>=0.12'}
- /es-abstract@1.24.0:
- resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
- engines: {node: '>= 0.4'}
- dependencies:
- array-buffer-byte-length: 1.0.2
- arraybuffer.prototype.slice: 1.0.4
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- data-view-buffer: 1.0.2
- data-view-byte-length: 1.0.2
- data-view-byte-offset: 1.0.1
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-set-tostringtag: 2.1.0
- es-to-primitive: 1.3.0
- function.prototype.name: 1.1.8
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- get-symbol-description: 1.1.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- internal-slot: 1.1.0
- is-array-buffer: 3.0.5
- is-callable: 1.2.7
- is-data-view: 1.0.2
- is-negative-zero: 2.0.3
- is-regex: 1.2.1
- is-set: 2.0.3
- is-shared-array-buffer: 1.0.4
- is-string: 1.1.1
- is-typed-array: 1.1.15
- is-weakref: 1.1.1
- math-intrinsics: 1.1.0
- object-inspect: 1.13.4
- object-keys: 1.1.1
- object.assign: 4.1.7
- own-keys: 1.0.1
- regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
- safe-push-apply: 1.0.0
- safe-regex-test: 1.1.0
- set-proto: 1.0.0
- stop-iteration-iterator: 1.1.0
- string.prototype.trim: 1.2.10
- string.prototype.trimend: 1.0.9
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.3
- typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.4
- typed-array-length: 1.0.7
- unbox-primitive: 1.1.0
- which-typed-array: 1.1.19
- dev: true
-
/es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
@@ -2516,15 +2177,7 @@ packages:
get-intrinsic: 1.3.0
has-tostringtag: 1.0.2
hasown: 2.0.2
-
- /es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.1.0
- is-symbol: 1.1.1
- dev: true
+ dev: false
/esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
@@ -2562,16 +2215,16 @@ packages:
engines: {node: '>=6'}
dev: true
- /escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
- dev: true
-
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: true
+ /escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+ dev: true
+
/eslint-config-prettier@9.0.0(eslint@8.47.0):
resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
hasBin: true
@@ -2735,65 +2388,18 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /etag@1.8.1:
- resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
- engines: {node: '>= 0.6'}
- dev: true
-
/events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
dev: true
- /expand-brackets@2.1.4:
- resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- debug: 2.6.9
- define-property: 0.2.5
- extend-shallow: 2.0.1
- posix-character-classes: 0.1.1
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/expect-type@1.2.1:
resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
engines: {node: '>=12.0.0'}
dev: true
- /extend-shallow@2.0.1:
- resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extendable: 0.1.1
- dev: true
-
- /extend-shallow@3.0.2:
- resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- assign-symbols: 1.0.0
- is-extendable: 1.0.1
- dev: true
-
- /extglob@2.0.4:
- resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- array-unique: 0.3.2
- define-property: 1.0.0
- expand-brackets: 2.1.4
- extend-shallow: 2.0.1
- fragment-cache: 0.2.1
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
+ /exsolve@1.0.5:
+ resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
dev: true
/fast-deep-equal@3.1.3:
@@ -2833,6 +2439,17 @@ packages:
reusify: 1.1.0
dev: true
+ /fdir@6.4.6(picomatch@4.0.2):
+ resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ dependencies:
+ picomatch: 4.0.2
+ dev: true
+
/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -2840,22 +2457,11 @@ packages:
flat-cache: 3.2.0
dev: true
- /fill-range@4.0.0:
- resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-number: 3.0.0
- repeat-string: 1.6.1
- to-regex-range: 2.1.1
- dev: true
-
/fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
- dev: true
/find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
@@ -2895,11 +2501,6 @@ packages:
is-callable: 1.2.7
dev: true
- /for-in@1.0.2:
- resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/foreground-child@3.3.1:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
@@ -2923,22 +2524,6 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
- /fragment-cache@0.2.1:
- resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- map-cache: 0.2.2
- dev: true
-
- /fs-extra@10.1.0:
- resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
- engines: {node: '>=12'}
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.1.0
- universalify: 2.0.1
- dev: true
-
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@@ -2954,18 +2539,6 @@ packages:
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- /function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- functions-have-names: 1.2.3
- hasown: 2.0.2
- is-callable: 1.2.7
- dev: true
-
/functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
@@ -2992,20 +2565,6 @@ packages:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- /get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- dev: true
-
- /get-value@2.0.6:
- resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/github-markdown-css@5.6.1:
resolution: {integrity: sha512-DItLFgHd+s7HQmk63YN4/TdvLeRqk1QP7pPKTTPrDTYoI5x7f/luJWSOZxesmuxBI2srHp8RDyoZd+9WF+WK8Q==}
engines: {node: '>=10'}
@@ -3060,12 +2619,9 @@ packages:
type-fest: 0.20.2
dev: true
- /globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- define-properties: 1.2.1
- gopd: 1.2.0
+ /globals@15.15.0:
+ resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
+ engines: {node: '>=18'}
dev: true
/globby@11.1.0:
@@ -3098,32 +2654,20 @@ packages:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
- /happy-dom@15.10.2:
- resolution: {integrity: sha512-NbA5XrSovenJIIcfixCREX3ZnV7yHP4phhbfuxxf4CPn+LZpz/jIM9EqJ2DrPwgVDSMoAKH3pZwQvkbsSiCrUw==}
- engines: {node: '>=18.0.0'}
+ /happy-dom@18.0.1:
+ resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==}
+ engines: {node: '>=20.0.0'}
dependencies:
- entities: 4.5.0
- webidl-conversions: 7.0.0
+ '@types/node': 20.19.0
+ '@types/whatwg-mimetype': 3.0.2
whatwg-mimetype: 3.0.0
dev: true
- /has-ansi@2.0.0:
- resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- ansi-regex: 2.1.1
- dev: true
-
/has-bigints@1.1.0:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
engines: {node: '>= 0.4'}
dev: true
- /has-flag@1.0.0:
- resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -3135,13 +2679,6 @@ packages:
es-define-property: 1.0.1
dev: true
- /has-proto@1.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- dunder-proto: 1.0.1
- dev: true
-
/has-symbols@1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
@@ -3152,37 +2689,6 @@ packages:
dependencies:
has-symbols: 1.1.0
- /has-value@0.3.1:
- resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- get-value: 2.0.6
- has-values: 0.1.4
- isobject: 2.1.0
- dev: true
-
- /has-value@1.0.0:
- resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- get-value: 2.0.6
- has-values: 1.0.0
- isobject: 3.0.1
- dev: true
-
- /has-values@0.1.4:
- resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /has-values@1.0.0:
- resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- kind-of: 4.0.0
- dev: true
-
/hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
@@ -3199,28 +2705,11 @@ packages:
engines: {node: '>=12.0.0'}
dev: false
- /htmlparser2@3.10.1:
- resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
- dependencies:
- domelementtype: 1.3.1
- domhandler: 2.4.2
- domutils: 1.7.0
- entities: 1.1.2
- inherits: 2.0.4
- readable-stream: 3.6.2
- dev: true
-
/ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
dev: true
- /image-size@0.5.5:
- resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
- engines: {node: '>=0.10.0'}
- hasBin: true
- dev: true
-
/immutable@4.3.7:
resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==}
dev: true
@@ -3263,13 +2752,6 @@ packages:
side-channel: 1.1.0
dev: true
- /is-accessor-descriptor@1.0.1:
- resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
- engines: {node: '>= 0.10'}
- dependencies:
- hasown: 2.0.2
- dev: true
-
/is-arguments@1.2.0:
resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
engines: {node: '>= 0.4'}
@@ -3287,17 +2769,6 @@ packages:
get-intrinsic: 1.3.0
dev: true
- /is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- async-function: 1.0.0
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
- dev: true
-
/is-bigint@1.1.0:
resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
engines: {node: '>= 0.4'}
@@ -3320,31 +2791,11 @@ packages:
has-tostringtag: 1.0.2
dev: true
- /is-buffer@1.1.6:
- resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
- dev: true
-
/is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
dev: true
- /is-data-descriptor@1.0.1:
- resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
- engines: {node: '>= 0.4'}
- dependencies:
- hasown: 2.0.2
- dev: true
-
- /is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- is-typed-array: 1.1.15
- dev: true
-
/is-date-object@1.1.0:
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
@@ -3353,61 +2804,16 @@ packages:
has-tostringtag: 1.0.2
dev: true
- /is-descriptor@0.1.7:
- resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-accessor-descriptor: 1.0.1
- is-data-descriptor: 1.0.1
- dev: true
-
- /is-descriptor@1.0.3:
- resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-accessor-descriptor: 1.0.1
- is-data-descriptor: 1.0.1
- dev: true
-
- /is-extendable@0.1.1:
- resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-extendable@1.0.1:
- resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-plain-object: 2.0.4
- dev: true
-
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
- /is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- dev: true
-
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
dev: true
- /is-generator-function@1.1.0:
- resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
- dev: true
-
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -3420,11 +2826,6 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
- dev: true
-
/is-number-object@1.1.1:
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
engines: {node: '>= 0.4'}
@@ -3433,35 +2834,15 @@ packages:
has-tostringtag: 1.0.2
dev: true
- /is-number@3.0.0:
- resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: true
-
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- dev: true
/is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
dev: true
- /is-plain-obj@1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-plain-object@2.0.4:
- resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isobject: 3.0.1
- dev: true
-
/is-plain-object@3.0.1:
resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
engines: {node: '>=0.10.0'}
@@ -3506,25 +2887,11 @@ packages:
safe-regex-test: 1.1.0
dev: true
- /is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- which-typed-array: 1.1.19
- dev: true
-
/is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
dev: true
- /is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- dev: true
-
/is-weakset@2.0.4:
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
engines: {node: '>= 0.4'}
@@ -3533,15 +2900,6 @@ packages:
get-intrinsic: 1.3.0
dev: true
- /is-windows@1.0.2:
- resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /isarray@1.0.0:
- resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
- dev: true
-
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
dev: true
@@ -3550,18 +2908,6 @@ packages:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
- /isobject@2.1.0:
- resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isarray: 1.0.0
- dev: true
-
- /isobject@3.0.1:
- resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
dependencies:
@@ -3579,10 +2925,6 @@ packages:
supports-color: 8.1.1
dev: true
- /js-base64@2.6.4:
- resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
- dev: true
-
/js-beautify@1.15.4:
resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
engines: {node: '>=14'}
@@ -3603,6 +2945,10 @@ packages:
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ /js-tokens@9.0.1:
+ resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
+ dev: true
+
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -3630,49 +2976,14 @@ packages:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
- /json5@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
- hasBin: true
- dependencies:
- minimist: 1.2.8
- dev: true
-
- /jsonfile@6.1.0:
- resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
- dev: true
-
/keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
json-buffer: 3.0.1
dev: true
- /kind-of@3.2.2:
- resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-buffer: 1.1.6
- dev: true
-
- /kind-of@4.0.0:
- resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-buffer: 1.1.6
- dev: true
-
- /kind-of@5.1.0:
- resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
+ /kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
dev: true
/levn@0.4.1:
@@ -3693,13 +3004,13 @@ packages:
engines: {node: '>=6.11.5'}
dev: true
- /loader-utils@1.4.2:
- resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
- engines: {node: '>=4.0.0'}
+ /local-pkg@1.1.1:
+ resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==}
+ engines: {node: '>=14'}
dependencies:
- big.js: 5.2.2
- emojis-list: 3.0.0
- json5: 1.0.2
+ mlly: 1.7.4
+ pkg-types: 2.1.0
+ quansync: 0.2.10
dev: true
/locate-path@6.0.0:
@@ -3753,18 +3064,6 @@ packages:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
- /map-cache@0.2.2:
- resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /map-visit@1.0.0:
- resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- object-visit: 1.0.1
- dev: true
-
/marked-highlight@2.1.4(marked@14.1.2):
resolution: {integrity: sha512-D1GOkcdzP+1dzjoColL7umojefFrASDuLeyaHS0Zr/Uo9jkr1V6vpLRCzfi1djmEaWyK0SYMFtHnpkZ+cwFT1w==}
peerDependencies:
@@ -3783,10 +3082,6 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
- /mdn-data@2.0.14:
- resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
- dev: true
-
/mdn-data@2.0.28:
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
dev: true
@@ -3795,13 +3090,6 @@ packages:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
dev: true
- /merge-options@1.0.1:
- resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
- engines: {node: '>=4'}
- dependencies:
- is-plain-obj: 1.1.0
- dev: true
-
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true
@@ -3811,27 +3099,6 @@ packages:
engines: {node: '>= 8'}
dev: true
- /micromatch@3.1.0:
- resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-diff: 4.0.0
- array-unique: 0.3.2
- braces: 2.3.2
- define-property: 1.0.0
- extend-shallow: 2.0.1
- extglob: 2.0.4
- fragment-cache: 0.2.1
- kind-of: 5.1.0
- nanomatch: 1.2.13
- object.pick: 1.3.0
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -3870,25 +3137,18 @@ packages:
brace-expansion: 2.0.2
dev: true
- /minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- dev: true
-
/minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
dev: true
- /mixin-deep@1.3.2:
- resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
- engines: {node: '>=0.10.0'}
+ /mlly@1.7.4:
+ resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
dependencies:
- for-in: 1.0.2
- is-extendable: 1.0.1
- dev: true
-
- /ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
dev: true
/ms@2.1.3:
@@ -3904,25 +3164,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- /nanomatch@1.2.13:
- resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-diff: 4.0.0
- array-unique: 0.3.2
- define-property: 2.0.2
- extend-shallow: 3.0.2
- fragment-cache: 0.2.1
- is-windows: 1.0.2
- kind-of: 6.0.3
- object.pick: 1.3.0
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/nanopop@2.4.2:
resolution: {integrity: sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==}
dev: false
@@ -3968,20 +3209,6 @@ packages:
boolbase: 1.0.0
dev: true
- /object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /object-copy@0.1.0:
- resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- copy-descriptor: 0.1.1
- define-property: 0.2.5
- kind-of: 3.2.2
- dev: true
-
/object-inspect@1.13.4:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
@@ -4000,13 +3227,6 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /object-visit@1.0.1:
- resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isobject: 3.0.1
- dev: true
-
/object.assign@4.1.7:
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
engines: {node: '>= 0.4'}
@@ -4019,13 +3239,6 @@ packages:
object-keys: 1.1.1
dev: true
- /object.pick@1.3.0:
- resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isobject: 3.0.1
- dev: true
-
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
@@ -4044,15 +3257,6 @@ packages:
word-wrap: 1.2.5
dev: true
- /own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.3.0
- object-keys: 1.1.1
- safe-push-apply: 1.0.0
- dev: true
-
/p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -4071,6 +3275,10 @@ packages:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
dev: true
+ /package-manager-detector@1.3.0:
+ resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
+ dev: true
+
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -4078,11 +3286,6 @@ packages:
callsites: 3.1.0
dev: true
- /pascalcase@0.1.1:
- resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -4111,12 +3314,8 @@ packages:
engines: {node: '>=8'}
dev: true
- /pathe@0.2.0:
- resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
- dev: true
-
- /pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ /pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
dev: true
/pathval@2.0.0:
@@ -4132,6 +3331,11 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
+ dev: true
+
/pinia-plugin-persistedstate@3.2.0(pinia@2.1.6):
resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==}
peerDependencies:
@@ -4158,9 +3362,20 @@ packages:
vue-demi: 0.14.10(vue@3.4.37)
dev: false
- /posix-character-classes@0.1.1:
- resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
- engines: {node: '>=0.10.0'}
+ /pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.7.4
+ pathe: 2.0.3
+ dev: true
+
+ /pkg-types@2.1.0:
+ resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.5
+ pathe: 2.0.3
dev: true
/possible-typed-array-names@1.1.0:
@@ -4410,14 +3625,6 @@ packages:
postcss-value-parser: 4.2.0
dev: true
- /postcss-prefix-selector@1.16.1(postcss@5.2.18):
- resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==}
- peerDependencies:
- postcss: '>4 <9'
- dependencies:
- postcss: 5.2.18
- dev: true
-
/postcss-reduce-initial@7.0.3(postcss@8.4.41):
resolution: {integrity: sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==}
engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
@@ -4480,16 +3687,6 @@ packages:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
- /postcss@5.2.18:
- resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==}
- engines: {node: '>=0.12'}
- dependencies:
- chalk: 1.1.3
- js-base64: 2.6.4
- source-map: 0.5.7
- supports-color: 3.2.3
- dev: true
-
/postcss@8.4.41:
resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
engines: {node: ^10 || ^12 || >=14}
@@ -4498,41 +3695,6 @@ packages:
picocolors: 1.1.1
source-map-js: 1.2.1
- /posthtml-parser@0.2.1:
- resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==}
- dependencies:
- htmlparser2: 3.10.1
- isobject: 2.1.0
- dev: true
-
- /posthtml-rename-id@1.0.12:
- resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==}
- dependencies:
- escape-string-regexp: 1.0.5
- dev: true
-
- /posthtml-render@1.4.0:
- resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==}
- engines: {node: '>=10'}
- dev: true
-
- /posthtml-svg-mode@1.0.3:
- resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==}
- dependencies:
- merge-options: 1.0.1
- posthtml: 0.9.2
- posthtml-parser: 0.2.1
- posthtml-render: 1.4.0
- dev: true
-
- /posthtml@0.9.2:
- resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- posthtml-parser: 0.2.1
- posthtml-render: 1.4.0
- dev: true
-
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -4573,12 +3735,8 @@ packages:
engines: {node: '>=6'}
dev: true
- /query-string@4.3.4:
- resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- object-assign: 4.1.1
- strict-uri-encode: 1.1.0
+ /quansync@0.2.10:
+ resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
dev: true
/queue-microtask@1.2.3:
@@ -4595,15 +3753,6 @@ packages:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
dev: true
- /readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
- dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
- dev: true
-
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -4611,28 +3760,6 @@ packages:
picomatch: 2.3.1
dev: true
- /reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- which-builtin-type: 1.2.1
- dev: true
-
- /regex-not@1.0.2:
- resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 3.0.2
- safe-regex: 1.1.0
- dev: true
-
/regexp.prototype.flags@1.5.4:
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
engines: {node: '>= 0.4'}
@@ -4645,16 +3772,6 @@ packages:
set-function-name: 2.0.2
dev: true
- /repeat-element@1.1.4:
- resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
- dev: true
-
/require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
@@ -4669,16 +3786,6 @@ packages:
engines: {node: '>=4'}
dev: true
- /resolve-url@0.2.1:
- resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
- deprecated: https://github.com/lydell/resolve-url#deprecated
- dev: true
-
- /ret@0.1.15:
- resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
- engines: {node: '>=0.12'}
- dev: true
-
/reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -4728,29 +3835,10 @@ packages:
queue-microtask: 1.2.3
dev: true
- /safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- isarray: 2.0.5
- dev: true
-
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
- /safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
- dependencies:
- es-errors: 1.3.0
- isarray: 2.0.5
- dev: true
-
/safe-regex-test@1.1.0:
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
@@ -4760,12 +3848,6 @@ packages:
is-regex: 1.2.1
dev: true
- /safe-regex@1.1.0:
- resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
- dependencies:
- ret: 0.1.15
- dev: true
-
/sass-loader@13.3.2(sass@1.66.1)(webpack@5.99.9):
resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==}
engines: {node: '>= 14.15.0'}
@@ -4816,6 +3898,10 @@ packages:
compute-scroll-into-view: 1.0.20
dev: false
+ /scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+ dev: true
+
/select@1.1.2:
resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
dev: false
@@ -4854,25 +3940,6 @@ packages:
has-property-descriptors: 1.0.2
dev: true
- /set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
- dependencies:
- dunder-proto: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- dev: true
-
- /set-value@2.0.1:
- resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-extendable: 0.1.1
- is-plain-object: 2.0.4
- split-string: 3.1.0
- dev: true
-
/shallow-equal@1.2.1:
resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==}
dev: false
@@ -4943,53 +4010,10 @@ packages:
engines: {node: '>=8'}
dev: true
- /snapdragon-node@2.1.1:
- resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 1.0.0
- isobject: 3.0.1
- snapdragon-util: 3.0.1
- dev: true
-
- /snapdragon-util@3.0.1:
- resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: true
-
- /snapdragon@0.8.2:
- resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- base: 0.11.2
- debug: 2.6.9
- define-property: 0.2.5
- extend-shallow: 2.0.1
- map-cache: 0.2.2
- source-map: 0.5.7
- source-map-resolve: 0.5.3
- use: 3.1.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
- /source-map-resolve@0.5.3:
- resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
- deprecated: See https://github.com/lydell/source-map-resolve#deprecated
- dependencies:
- atob: 2.1.2
- decode-uri-component: 0.2.2
- resolve-url: 0.2.1
- source-map-url: 0.4.1
- urix: 0.1.0
- dev: true
-
/source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
@@ -4997,44 +4021,15 @@ packages:
source-map: 0.6.1
dev: true
- /source-map-url@0.4.1:
- resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
- deprecated: See https://github.com/lydell/source-map-url#deprecated
- dev: true
-
- /source-map@0.5.7:
- resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
-
- /split-string@3.1.0:
- resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 3.0.2
- dev: true
-
- /stable@0.1.8:
- resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
- deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
dev: true
/stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
- /static-extend@0.1.2:
- resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 0.2.5
- object-copy: 0.1.0
- dev: true
-
/std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
dev: true
@@ -5047,11 +4042,6 @@ packages:
internal-slot: 1.1.0
dev: true
- /strict-uri-encode@1.1.0:
- resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -5070,51 +4060,6 @@ packages:
strip-ansi: 7.1.0
dev: true
- /string.prototype.trim@1.2.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-data-property: 1.1.4
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-object-atoms: 1.1.1
- has-property-descriptors: 1.0.2
- dev: true
-
- /string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- dev: true
-
- /string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- dev: true
-
- /string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
- dependencies:
- safe-buffer: 5.2.1
- dev: true
-
- /strip-ansi@3.0.1:
- resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- ansi-regex: 2.1.1
- dev: true
-
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -5134,6 +4079,12 @@ packages:
engines: {node: '>=8'}
dev: true
+ /strip-literal@3.0.0:
+ resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
+ dependencies:
+ js-tokens: 9.0.1
+ dev: true
+
/stylehacks@7.0.5(postcss@8.4.41):
resolution: {integrity: sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==}
engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
@@ -5149,18 +4100,6 @@ packages:
resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
dev: false
- /supports-color@2.0.0:
- resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
- engines: {node: '>=0.8.0'}
- dev: true
-
- /supports-color@3.2.3:
- resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
- engines: {node: '>=0.8.0'}
- dependencies:
- has-flag: 1.0.0
- dev: true
-
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -5175,40 +4114,6 @@ packages:
has-flag: 4.0.0
dev: true
- /svg-baker@1.7.0:
- resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==}
- dependencies:
- bluebird: 3.7.2
- clone: 2.1.2
- he: 1.2.0
- image-size: 0.5.5
- loader-utils: 1.4.2
- merge-options: 1.0.1
- micromatch: 3.1.0
- postcss: 5.2.18
- postcss-prefix-selector: 1.16.1(postcss@5.2.18)
- posthtml-rename-id: 1.0.12
- posthtml-svg-mode: 1.0.3
- query-string: 4.3.4
- traverse: 0.6.11
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /svgo@2.8.0:
- resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 4.3.0
- css-tree: 1.1.3
- csso: 4.2.0
- picocolors: 1.1.1
- stable: 0.1.8
- dev: true
-
/svgo@3.3.2:
resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==}
engines: {node: '>=14.0.0'}
@@ -5292,61 +4197,38 @@ packages:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
dev: true
+ /tinyexec@1.0.1:
+ resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+ dev: true
+
+ /tinyglobby@0.2.14:
+ resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ fdir: 6.4.6(picomatch@4.0.2)
+ picomatch: 4.0.2
+ dev: true
+
/tinypool@1.1.0:
resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==}
engines: {node: ^18.0.0 || >=20.0.0}
dev: true
- /tinyrainbow@1.2.0:
- resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+ /tinyrainbow@2.0.0:
+ resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
dev: true
- /tinyspy@3.0.2:
- resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
+ /tinyspy@4.0.3:
+ resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==}
engines: {node: '>=14.0.0'}
dev: true
- /to-object-path@0.3.0:
- resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: true
-
- /to-regex-range@2.1.1:
- resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- repeat-string: 1.6.1
- dev: true
-
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
- dev: true
-
- /to-regex@3.0.2:
- resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 2.0.2
- extend-shallow: 3.0.2
- regex-not: 1.0.2
- safe-regex: 1.1.0
- dev: true
-
- /traverse@0.6.11:
- resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==}
- engines: {node: '>= 0.4'}
- dependencies:
- gopd: 1.2.0
- typedarray.prototype.slice: 1.0.5
- which-typed-array: 1.1.19
- dev: true
/ts-api-utils@1.4.3(typescript@5.0.2):
resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
@@ -5377,105 +4259,133 @@ packages:
engines: {node: '>=10'}
dev: true
- /typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-typed-array: 1.1.15
- dev: true
+ /typescript@5.0.2:
+ resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
+ engines: {node: '>=12.20'}
+ hasBin: true
- /typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
+ /ufo@1.6.1:
+ resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
dev: true
- /typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
- reflect.getprototypeof: 1.0.10
+ /undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
dev: true
- /typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
+ /unimport@4.2.0:
+ resolution: {integrity: sha512-mYVtA0nmzrysnYnyb3ALMbByJ+Maosee2+WyE0puXl+Xm2bUwPorPaaeZt0ETfuroPOtG8jj1g/qeFZ6buFnag==}
+ engines: {node: '>=18.12.0'}
dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- is-typed-array: 1.1.15
- possible-typed-array-names: 1.1.0
- reflect.getprototypeof: 1.0.10
- dev: true
-
- /typedarray.prototype.slice@1.0.5:
- resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==}
- engines: {node: '>= 0.4'}
+ acorn: 8.15.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ local-pkg: 1.1.1
+ magic-string: 0.30.17
+ mlly: 1.7.4
+ pathe: 2.0.3
+ picomatch: 4.0.2
+ pkg-types: 2.1.0
+ scule: 1.3.0
+ strip-literal: 3.0.0
+ tinyglobby: 0.2.14
+ unplugin: 2.3.5
+ unplugin-utils: 0.2.4
+ dev: true
+
+ /unplugin-auto-import@19.3.0(@vueuse/core@10.5.0):
+ resolution: {integrity: sha512-iIi0u4Gq2uGkAOGqlPJOAMI8vocvjh1clGTfSK4SOrJKrt+tirrixo/FjgBwXQNNdS7ofcr7OxzmOb/RjWxeEQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@nuxt/kit': ^3.2.2
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ '@vueuse/core':
+ optional: true
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.0
- es-errors: 1.3.0
- get-proto: 1.0.1
- math-intrinsics: 1.1.0
- typed-array-buffer: 1.0.3
- typed-array-byte-offset: 1.0.4
+ '@vueuse/core': 10.5.0(vue@3.4.37)
+ local-pkg: 1.1.1
+ magic-string: 0.30.17
+ picomatch: 4.0.2
+ unimport: 4.2.0
+ unplugin: 2.3.5
+ unplugin-utils: 0.2.4
dev: true
- /typescript@5.0.2:
- resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
- engines: {node: '>=12.20'}
- hasBin: true
-
- /unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
+ /unplugin-icons@22.1.0:
+ resolution: {integrity: sha512-ect2ZNtk1Zgwb0NVHd0C1IDW/MV+Jk/xaq4t8o6rYdVS3+L660ZdD5kTSQZvsgdwCvquRw+/wYn75hsweRjoIA==}
+ peerDependencies:
+ '@svgr/core': '>=7.0.0'
+ '@svgx/core': ^1.0.1
+ '@vue/compiler-sfc': ^3.0.2 || ^2.7.0
+ svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
+ vue-template-compiler: ^2.6.12
+ vue-template-es2015-compiler: ^1.9.0
+ peerDependenciesMeta:
+ '@svgr/core':
+ optional: true
+ '@svgx/core':
+ optional: true
+ '@vue/compiler-sfc':
+ optional: true
+ svelte:
+ optional: true
+ vue-template-compiler:
+ optional: true
+ vue-template-es2015-compiler:
+ optional: true
dependencies:
- call-bound: 1.0.4
- has-bigints: 1.1.0
- has-symbols: 1.1.0
- which-boxed-primitive: 1.1.1
- dev: true
-
- /undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+ '@antfu/install-pkg': 1.1.0
+ '@iconify/utils': 2.3.0
+ debug: 4.4.1
+ local-pkg: 1.1.1
+ unplugin: 2.3.5
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /union-value@1.0.1:
- resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
- engines: {node: '>=0.10.0'}
+ /unplugin-utils@0.2.4:
+ resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==}
+ engines: {node: '>=18.12.0'}
dependencies:
- arr-union: 3.1.0
- get-value: 2.0.6
- is-extendable: 0.1.1
- set-value: 2.0.1
+ pathe: 2.0.3
+ picomatch: 4.0.2
dev: true
- /universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
+ /unplugin-vue-components@28.7.0(vue@3.4.37):
+ resolution: {integrity: sha512-3SuWAHlTjOiZckqRBGXRdN/k6IMmKyt2Ch5/+DKwYaT321H0ItdZDvW4r8/YkEKQpN9TN3F/SZ0W342gQROC3Q==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@babel/parser': ^7.15.8
+ '@nuxt/kit': ^3.2.2
+ vue: 2 || 3
+ peerDependenciesMeta:
+ '@babel/parser':
+ optional: true
+ '@nuxt/kit':
+ optional: true
+ dependencies:
+ chokidar: 3.6.0
+ debug: 4.4.1
+ local-pkg: 1.1.1
+ magic-string: 0.30.17
+ mlly: 1.7.4
+ tinyglobby: 0.2.14
+ unplugin: 2.3.5
+ unplugin-utils: 0.2.4
+ vue: 3.4.37(typescript@5.0.2)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /unset-value@1.0.0:
- resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
- engines: {node: '>=0.10.0'}
+ /unplugin@2.3.5:
+ resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==}
+ engines: {node: '>=18.12.0'}
dependencies:
- has-value: 0.3.1
- isobject: 3.0.1
+ acorn: 8.15.0
+ picomatch: 4.0.2
+ webpack-virtual-modules: 0.6.2
dev: true
/update-browserslist-db@1.1.3(browserslist@4.25.0):
@@ -5495,34 +4405,19 @@ packages:
punycode: 2.3.1
dev: true
- /urix@0.1.0:
- resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
- deprecated: Please see https://github.com/lydell/urix#deprecated
- dev: true
-
- /use@3.1.1:
- resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
- /vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
- dev: true
-
- /vite-node@2.1.9(@types/node@20.5.3)(sass@1.66.1):
- resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ /vite-node@3.2.3(@types/node@20.5.3)(sass@1.66.1):
+ resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.4.1
es-module-lexer: 1.7.0
- pathe: 1.1.2
+ pathe: 2.0.3
vite: 5.4.0(@types/node@20.5.3)(sass@1.66.1)
transitivePeerDependencies:
- '@types/node'
@@ -5536,24 +4431,6 @@ packages:
- terser
dev: true
- /vite-plugin-svg-icons@2.0.1(vite@5.4.0):
- resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
- peerDependencies:
- vite: '>=2.0.0'
- dependencies:
- '@types/svgo': 2.6.4
- cors: 2.8.5
- debug: 4.4.1
- etag: 1.8.1
- fs-extra: 10.1.0
- pathe: 0.2.0
- svg-baker: 1.7.0
- svgo: 2.8.0
- vite: 5.4.0(@types/node@20.5.3)(sass@1.66.1)
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/vite@5.4.0(@types/node@20.5.3)(sass@1.66.1):
resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -5594,20 +4471,23 @@ packages:
fsevents: 2.3.3
dev: true
- /vitest@2.1.9(@types/node@20.5.3)(happy-dom@15.10.2)(sass@1.66.1):
- resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ /vitest@3.2.3(@types/node@20.5.3)(happy-dom@18.0.1)(sass@1.66.1):
+ resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 2.1.9
- '@vitest/ui': 2.1.9
+ '@types/debug': ^4.1.12
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ '@vitest/browser': 3.2.3
+ '@vitest/ui': 3.2.3
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
+ '@types/debug':
+ optional: true
'@types/node':
optional: true
'@vitest/browser':
@@ -5619,27 +4499,30 @@ packages:
jsdom:
optional: true
dependencies:
+ '@types/chai': 5.2.2
'@types/node': 20.5.3
- '@vitest/expect': 2.1.9
- '@vitest/mocker': 2.1.9(vite@5.4.0)
- '@vitest/pretty-format': 2.1.9
- '@vitest/runner': 2.1.9
- '@vitest/snapshot': 2.1.9
- '@vitest/spy': 2.1.9
- '@vitest/utils': 2.1.9
+ '@vitest/expect': 3.2.3
+ '@vitest/mocker': 3.2.3(vite@5.4.0)
+ '@vitest/pretty-format': 3.2.3
+ '@vitest/runner': 3.2.3
+ '@vitest/snapshot': 3.2.3
+ '@vitest/spy': 3.2.3
+ '@vitest/utils': 3.2.3
chai: 5.2.0
debug: 4.4.1
expect-type: 1.2.1
- happy-dom: 15.10.2
+ happy-dom: 18.0.1
magic-string: 0.30.17
- pathe: 1.1.2
+ pathe: 2.0.3
+ picomatch: 4.0.2
std-env: 3.9.0
tinybench: 2.9.0
tinyexec: 0.3.2
+ tinyglobby: 0.2.14
tinypool: 1.1.0
- tinyrainbow: 1.2.0
+ tinyrainbow: 2.0.0
vite: 5.4.0(@types/node@20.5.3)(sass@1.66.1)
- vite-node: 2.1.9(@types/node@20.5.3)(sass@1.66.1)
+ vite-node: 3.2.3(@types/node@20.5.3)(sass@1.66.1)
why-is-node-running: 2.3.0
transitivePeerDependencies:
- less
@@ -5670,7 +4553,6 @@ packages:
optional: true
dependencies:
vue: 3.4.37(typescript@5.0.2)
- dev: false
/vue-dompurify-html@5.1.0(vue@3.4.37):
resolution: {integrity: sha512-616o2/PBdOLM2bwlRWLdzeEC9NerLkwiudqNgaIJ5vBQWXec+u7Kuzh+45DtQQrids67s4pHnTnJZLVfyPMxbA==}
@@ -5699,15 +4581,14 @@ packages:
- supports-color
dev: true
- /vue-i18n@9.2.2(vue@3.4.37):
- resolution: {integrity: sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==}
- engines: {node: '>= 14'}
+ /vue-i18n@11.1.5(vue@3.4.37):
+ resolution: {integrity: sha512-XCwuaEA5AF97g1frvH/EI1zI9uo1XKTf2/OCFgts7NvUWRsjlgeHPrkJV+a3gpzai2pC4quZ4AnOHFO8QK9hsg==}
+ engines: {node: '>= 16'}
peerDependencies:
vue: ^3.0.0
dependencies:
- '@intlify/core-base': 9.2.2
- '@intlify/shared': 9.2.2
- '@intlify/vue-devtools': 9.2.2
+ '@intlify/core-base': 11.1.5
+ '@intlify/shared': 11.1.5
'@vue/devtools-api': 6.6.4
vue: 3.4.37(typescript@5.0.2)
dev: false
@@ -5779,16 +4660,15 @@ packages:
graceful-fs: 4.2.11
dev: true
- /webidl-conversions@7.0.0:
- resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
- engines: {node: '>=12'}
- dev: true
-
/webpack-sources@3.3.2:
resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==}
engines: {node: '>=10.13.0'}
dev: true
+ /webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+ dev: true
+
/webpack@5.99.9:
resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==}
engines: {node: '>=10.13.0'}
@@ -5845,25 +4725,6 @@ packages:
is-symbol: 1.1.1
dev: true
- /which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bound: 1.0.4
- function.prototype.name: 1.1.8
- has-tostringtag: 1.0.2
- is-async-function: 2.1.1
- is-date-object: 1.1.0
- is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.0
- is-regex: 1.2.1
- is-weakref: 1.1.1
- isarray: 2.0.5
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.19
- dev: true
-
/which-collection@1.0.2:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
diff --git a/bigtop-manager-ui/postcss.config.js b/bigtop-manager-ui/postcss.config.js
index b98e52aa..e81720a6 100644
--- a/bigtop-manager-ui/postcss.config.js
+++ b/bigtop-manager-ui/postcss.config.js
@@ -17,13 +17,13 @@
* under the License.
*/
-const autoprefixer = require('autoprefixer')
-const cssnano = require('cssnano')
+import autoprefixer from 'autoprefixer'
+import cssnanoPlugin from 'cssnano'
-module.exports = {
+export default {
plugins: [
autoprefixer(),
- cssnano({
+ cssnanoPlugin({
preset: 'default'
})
]
diff --git a/bigtop-manager-ui/src/assets/images/ai_disabled.png b/bigtop-manager-ui/src/assets/images/ai-disabled.png
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/ai_disabled.png
rename to bigtop-manager-ui/src/assets/images/ai-disabled.png
diff --git a/bigtop-manager-ui/src/assets/images/ai_helper.png b/bigtop-manager-ui/src/assets/images/ai-helper.png
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/ai_helper.png
rename to bigtop-manager-ui/src/assets/images/ai-helper.png
diff --git a/bigtop-manager-ui/src/assets/images/svg/bm_logo.svg b/bigtop-manager-ui/src/assets/images/svg/bm-logo.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/bm_logo.svg
rename to bigtop-manager-ui/src/assets/images/svg/bm-logo.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/chat_avatar.svg b/bigtop-manager-ui/src/assets/images/svg/chat-avatar.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/chat_avatar.svg
rename to bigtop-manager-ui/src/assets/images/svg/chat-avatar.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/clusters_activated.svg b/bigtop-manager-ui/src/assets/images/svg/clusters-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/clusters_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/clusters-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/components_activated.svg b/bigtop-manager-ui/src/assets/images/svg/components-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/components_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/components-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/exit_screen.svg b/bigtop-manager-ui/src/assets/images/svg/exit-screen.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/exit_screen.svg
rename to bigtop-manager-ui/src/assets/images/svg/exit-screen.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/filter_activated.svg b/bigtop-manager-ui/src/assets/images/svg/filter-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/filter_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/filter-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/full_screen.svg b/bigtop-manager-ui/src/assets/images/svg/full-screen.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/full_screen.svg
rename to bigtop-manager-ui/src/assets/images/svg/full-screen.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/hosts_activated.svg b/bigtop-manager-ui/src/assets/images/svg/hosts-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/hosts_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/hosts-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/infrastructures_activated.svg b/bigtop-manager-ui/src/assets/images/svg/infrastructures-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/infrastructures_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/infrastructures-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/llm_config_activated.svg b/bigtop-manager-ui/src/assets/images/svg/llm-config-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/llm_config_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/llm-config-activated.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/llm_config.svg b/bigtop-manager-ui/src/assets/images/svg/llm-config.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/llm_config.svg
rename to bigtop-manager-ui/src/assets/images/svg/llm-config.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/more_line.svg b/bigtop-manager-ui/src/assets/images/svg/more-line.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/more_line.svg
rename to bigtop-manager-ui/src/assets/images/svg/more-line.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/plus_dark.svg b/bigtop-manager-ui/src/assets/images/svg/plus-dark.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/plus_dark.svg
rename to bigtop-manager-ui/src/assets/images/svg/plus-dark.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/plus_gray.svg b/bigtop-manager-ui/src/assets/images/svg/plus-gray.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/plus_gray.svg
rename to bigtop-manager-ui/src/assets/images/svg/plus-gray.svg
diff --git a/bigtop-manager-ui/src/assets/images/svg/search_activated.svg b/bigtop-manager-ui/src/assets/images/svg/search-activated.svg
similarity index 100%
rename from bigtop-manager-ui/src/assets/images/svg/search_activated.svg
rename to bigtop-manager-ui/src/assets/images/svg/search-activated.svg
diff --git a/bigtop-manager-ui/src/components/ai-assistant/chat-message.vue b/bigtop-manager-ui/src/components/ai-assistant/chat-message.vue
index 4499b183..8d5713b0 100644
--- a/bigtop-manager-ui/src/components/ai-assistant/chat-message.vue
+++ b/bigtop-manager-ui/src/components/ai-assistant/chat-message.vue
@@ -31,7 +31,7 @@
<template>
<div class="chat-item">
<div class="chat-item-avatar">
- <svg-icon :name="isUser ? 'chat_avatar' : 'chatbot'" />
+ <svg-icon :name="isUser ? 'chat-avatar' : 'chatbot'" />
</div>
<article class="chat-item-message">
<div class="msg-wrp">
diff --git a/bigtop-manager-ui/src/components/ai-assistant/empty-content.vue b/bigtop-manager-ui/src/components/ai-assistant/empty-content.vue
index bb63bd66..a2240d1d 100644
--- a/bigtop-manager-ui/src/components/ai-assistant/empty-content.vue
+++ b/bigtop-manager-ui/src/components/ai-assistant/empty-content.vue
@@ -34,8 +34,8 @@
})
const aiChatStore = useAiChatStore()
const { hasActivePlatform, threads, chatRecords } = storeToRefs(aiChatStore)
- const emptyState = usePngImage('ai_helper')
- const disabledState = usePngImage('ai_disabled')
+ const emptyState = usePngImage('ai-helper')
+ const disabledState = usePngImage('ai-disabled')
const goSetUpLlmConfig = () => {
emits('goSetUp')
diff --git a/bigtop-manager-ui/src/components/ai-assistant/index.vue b/bigtop-manager-ui/src/components/ai-assistant/index.vue
index 7b0e0496..1c74ab06 100644
--- a/bigtop-manager-ui/src/components/ai-assistant/index.vue
+++ b/bigtop-manager-ui/src/components/ai-assistant/index.vue
@@ -22,13 +22,13 @@
import { useAiChatStore } from '@/store/ai-assistant'
import { useLlmConfigStore } from '@/store/llm-config'
import { storeToRefs } from 'pinia'
+ import { useMenuStore } from '@/store/menu'
import EmptyContent from './empty-content.vue'
import ChatInput from './chat-input.vue'
import ChatHistory from './chat-history.vue'
import ChatMessage from './chat-message.vue'
import type { ChatMessageItem } from '@/api/ai-assistant/types'
import type { GroupItem } from '@/components/common/button-group/types'
- import { useRouter } from 'vue-router'
enum Action {
ADD,
@@ -40,9 +40,10 @@
type ActionType = keyof typeof Action
- const router = useRouter()
const aiChatStore = useAiChatStore()
const llmConfigStore = useLlmConfigStore()
+ const menuStore = useMenuStore()
+
const { currThread, chatRecords, threads, messageReceiver, hasActivePlatform, loadingChatRecords } =
storeToRefs(aiChatStore)
const { currAuthPlatform } = storeToRefs(llmConfigStore)
@@ -66,7 +67,7 @@
? filterActions(['EXITSCREEN', 'CLOSE'])
: filterActions(['ADD', 'RECORDS', 'FULLSCREEN', 'CLOSE'])
})
- const addIcon = computed(() => (threads.value.length >= 10 ? 'plus_gray' : 'plus'))
+ const addIcon = computed(() => (threads.value.length >= 10 ? 'plus-gray' : 'plus'))
const addState = computed(() => threads.value.length >= 10 || loadingChatRecords.value || !hasActivePlatform.value)
const actionGroup = computed((): GroupItem<ActionType>[] => [
{
@@ -84,13 +85,13 @@
},
{
tip: 'full_screen',
- icon: 'full_screen',
+ icon: 'full-screen',
action: 'FULLSCREEN',
clickEvent: toggleFullScreen
},
{
tip: 'exit_screen',
- icon: 'exit_screen',
+ icon: 'exit-screen',
action: 'EXITSCREEN',
clickEvent: toggleFullScreen
},
@@ -147,7 +148,7 @@
const goSetUpLlmConfig = () => {
controlVisible(false)
- router.push('/system-manage/llm-config')
+ menuStore.onHeaderClick('/system-manage')
}
defineExpose({
diff --git a/bigtop-manager-ui/src/components/common/svg-icon/index.vue b/bigtop-manager-ui/src/components/common/svg-icon/index.vue
index db973d4a..42d2d0b2 100644
--- a/bigtop-manager-ui/src/components/common/svg-icon/index.vue
+++ b/bigtop-manager-ui/src/components/common/svg-icon/index.vue
@@ -20,33 +20,62 @@
<script setup lang="ts">
import { computed } from 'vue'
- interface SvgIconProps {
- prefix?: string
- name: string
- color?: string
+ const icons = {
+ avatar: IconSvgAvatar,
+ 'bm-logo': IconSvgBmLogo,
+ book: IconSvgBook,
+ 'bottom-activated': IconSvgBottomActivated,
+ bottom: IconSvgBottom,
+ canceled: IconSvgCanceled,
+ 'chat-avatar': IconSvgChatAvatar,
+ chatbot: IconSvgChatbot,
+ close: IconSvgClose,
+ 'clusters-activated': IconSvgClustersActivated,
+ clusters: IconSvgClusters,
+ communication: IconSvgCommunication,
+ 'components-activated': IconSvgComponentsActivated,
+ components: IconSvgComponents,
+ copy: IconSvgCopy,
+ download: IconSvgDownload,
+ error: IconSvgError,
+ 'exit-screen': IconSvgExitScreen,
+ failed: IconSvgFailed,
+ 'filter-activated': IconSvgFilterActivated,
+ filter: IconSvgFilter,
+ 'full-screen': IconSvgFullScreen,
+ github: IconSvgGithub,
+ history: IconSvgHistory,
+ 'hosts-activated': IconSvgHostsActivated,
+ hosts: IconSvgHosts,
+ 'infrastructures-activated': IconSvgInfrastructuresActivated,
+ infrastructures: IconSvgInfrastructures,
+ installing: IconSvgInstalling,
+ language: IconSvgLanguage,
+ 'llm-config-activated': IconSvgLlmConfigActivated,
+ 'llm-config': IconSvgLlmConfig,
+ 'more-line': IconSvgMoreLine,
+ more: IconSvgMore,
+ 'plus-dark': IconSvgPlusDark,
+ 'plus-gray': IconSvgPlusGray,
+ plus: IconSvgPlus,
+ processing: IconSvgProcessing,
+ question: IconSvgQuestion,
+ remove: IconSvgRemove,
+ restart: IconSvgRestart,
+ retry: IconSvgRetry,
+ 'search-activated': IconSvgSearchActivated,
+ search: IconSvgSearch,
+ send: IconSvgSend,
+ start: IconSvgStart,
+ stop: IconSvgStop,
+ success: IconSvgSuccess,
+ unknown: IconSvgUnknown
}
- const props = withDefaults(defineProps<SvgIconProps>(), {
- prefix: 'icon',
- color: '#000'
- })
-
- const symbolId = computed(() => `#${props.prefix}-${props.name}`)
+ const props = defineProps<{ name: string | undefined }>()
+ const isIcon = computed(() => props.name && icons[props.name])
</script>
<template>
- <svg class="svg-icon" aria-hidden="true">
- <use :xlink:href="symbolId" :fill="color" />
- </svg>
+ <component :is="isIcon" v-if="props.name" />
</template>
-
-<style lang="scss" scoped>
- .svg-icon {
- height: 1.2em;
- width: 1.2em;
- margin: 0 6px;
- vertical-align: -0.25em;
- overflow: hidden;
- flex-shrink: 0;
- }
-</style>
diff --git a/bigtop-manager-ui/src/components/create-service/components/component-assigner.vue b/bigtop-manager-ui/src/components/create-service/components/component-assigner.vue
index 9f8664f5..c5b68aa6 100644
--- a/bigtop-manager-ui/src/components/create-service/components/component-assigner.vue
+++ b/bigtop-manager-ui/src/components/create-service/components/component-assigner.vue
@@ -69,7 +69,7 @@
)
const hostsOfCurrComp = computed((): HostVO[] => {
const temp = currComp.value.split('/').at(-1)
- return allComps.value.has(temp!) ? allComps.value.get(temp!)?.hosts ?? [] : []
+ return allComps.value.get(temp!)?.hosts ?? []
})
const columns = computed((): TableColumnType<HostVO>[] => [
@@ -96,10 +96,8 @@
const handleSearch = (selectedKeys: Key[], confirm: (param?: FilterConfirmProps) => void, dataIndex: string) => {
confirm()
- Object.assign(state, {
- searchText: selectedKeys[0] as string,
- searchedColumn: dataIndex
- })
+ state.searchText = selectedKeys[0] as string
+ state.searchedColumn = dataIndex
}
const handleReset = (clearFilters: (param?: FilterResetProps) => void) => {
@@ -120,7 +118,7 @@
paginationProps.value.total = res.total
loading.value = false
} catch (error) {
- console.log('error :>> ', error)
+ console.error('Error fetching host list:', error)
} finally {
loading.value = false
}
@@ -142,35 +140,28 @@
}
}
- const getCheckboxProps: TableRowSelection['getCheckboxProps'] = (record) => {
- return {
- disabled: validateHostIsCheck(record),
- name: record.hostname
- }
- }
+ const getCheckboxProps: TableRowSelection['getCheckboxProps'] = (record) => ({
+ disabled: validateHostIsCheck(record),
+ name: record.hostname
+ })
const onSelectChange: TableRowSelection['onChange'] = (selectedRowKeys, selectedRows) => {
const { cardinality, displayName } = currCompInfo.value || {}
const newCount = selectedRowKeys.length
const compKey = currComp.value.split('/').at(-1)!
- const isInAllComps = allComps.value.has(compKey)
- const shouldValidate = !!cardinality
- const isValid = !shouldValidate || createStore.validCardinality(cardinality, newCount, displayName || '')
-
- const isDeselecting = newCount < state.selectedRowKeys.length
+ const isValid = !cardinality || createStore.validCardinality(cardinality, newCount, displayName || '')
- if (isValid || isDeselecting) {
+ if (isValid || newCount < state.selectedRowKeys.length) {
state.selectedRowKeys = selectedRowKeys
- if (isInAllComps) {
+ if (allComps.value.has(compKey)) {
createStore.setComponentHosts(currComp.value, selectedRows)
}
}
}
const resetSelectedRowKeys = (key: string) => {
- state.selectedRowKeys = allComps.value.has(key)
- ? (allComps.value.get(key)?.hosts.map((v: HostVO) => v.hostname) as Key[]) ?? ([] as Key[])
- : []
+ const hosts = allComps.value.get(key)?.hosts ?? []
+ state.selectedRowKeys = hosts.map((v: HostVO) => v.hostname) as Key[]
}
const treeSelectedChange = (keyPath: string) => {
diff --git a/bigtop-manager-ui/src/components/create-service/components/component-installer.vue b/bigtop-manager-ui/src/components/create-service/components/component-installer.vue
index 78f282d1..480c62a6 100644
--- a/bigtop-manager-ui/src/components/create-service/components/component-installer.vue
+++ b/bigtop-manager-ui/src/components/create-service/components/component-installer.vue
@@ -22,11 +22,14 @@
import { Empty } from 'ant-design-vue'
import { getJobDetails, retryJob } from '@/api/job'
import { CommandVO } from '@/api/command/types'
+ import { useCreateServiceStore } from '@/store/create-service'
import LogsView, { type LogViewProps } from '@/components/log-view/index.vue'
import type { JobVO, StageVO, StateType, TaskVO } from '@/api/job/types'
const props = defineProps<{ stepData: CommandVO }>()
const { stepData } = toRefs(props)
+
+ const createStore = useCreateServiceStore()
const activeKey = ref<number[]>([])
const jobDetail = ref<JobVO>({})
const spinning = ref(false)
@@ -55,6 +58,7 @@
try {
const data = await getJobDetails({ jobId, clusterId })
jobDetail.value = data
+ createStore.updateInstalledStatus(data.state as StateType)
return ['Successful', 'Failed'].includes(data.state as StateType)
} catch (error) {
console.log('error :>> ', error)
@@ -135,20 +139,24 @@
<template #header>
<div class="stage-item">
<span>{{ stage.name }}</span>
- <svg-icon :name="stage.state && status[stage.state]"></svg-icon>
+ <div style="min-width: 100px">
+ <svg-icon :name="stage.state && status[stage.state]"></svg-icon>
+ </div>
</div>
</template>
<div v-for="task in stage.tasks" :key="task.id" class="task-item">
<span>{{ task.name }}</span>
<a-space :size="16">
<svg-icon :name="task.state && status[task.state]"></svg-icon>
- <a-button
- v-if="task.state && !['Canceled', 'Pending'].includes(task.state)"
- type="link"
- @click="viewLogs(stage, task)"
- >
- {{ $t('cluster.view_log') }}
- </a-button>
+ <div style="min-width: 62px">
+ <a-button
+ v-if="task.state && !['Canceled', 'Pending'].includes(task.state)"
+ type="link"
+ @click="viewLogs(stage, task)"
+ >
+ {{ $t('cluster.view_log') }}
+ </a-button>
+ </div>
</a-space>
</div>
</a-collapse-panel>
@@ -186,8 +194,11 @@
}
}
.stage-item {
- margin-right: 68px;
@include flexbox($justify: space-between, $align: center);
+ .svg-icon {
+ width: 16px;
+ height: 16px;
+ }
}
.task-item {
height: 45px;
@@ -199,5 +210,9 @@
&:last-child {
border-bottom: 1px solid $color-border-secondary;
}
+ .svg-icon {
+ width: 16px;
+ height: 16px;
+ }
}
</style>
diff --git a/bigtop-manager-ui/src/components/create-service/components/service-configurator.vue b/bigtop-manager-ui/src/components/create-service/components/service-configurator.vue
index 150a876c..1d83e697 100644
--- a/bigtop-manager-ui/src/components/create-service/components/service-configurator.vue
+++ b/bigtop-manager-ui/src/components/create-service/components/service-configurator.vue
@@ -185,7 +185,7 @@
@click.stop="manualAddPropertyForConfig(config)"
>
<template #icon>
- <svg-icon name="plus_dark" />
+ <svg-icon name="plus-dark" />
</template>
</a-button>
</template>
diff --git a/bigtop-manager-ui/src/components/create-service/create.vue b/bigtop-manager-ui/src/components/create-service/create.vue
index 101434bb..fe188ef6 100644
--- a/bigtop-manager-ui/src/components/create-service/create.vue
+++ b/bigtop-manager-ui/src/components/create-service/create.vue
@@ -18,16 +18,19 @@
-->
<script setup lang="ts">
- import { computed, onUnmounted, ref, shallowRef, watch } from 'vue'
- import { message } from 'ant-design-vue'
+ import { computed, h, onUnmounted, ref, shallowRef, watch } from 'vue'
+ import { message, Modal } from 'ant-design-vue'
import { useI18n } from 'vue-i18n'
import { storeToRefs } from 'pinia'
- import { useRoute } from 'vue-router'
- import { StepContext, useCreateServiceStore } from '@/store/create-service'
+ import { onBeforeRouteLeave, useRoute } from 'vue-router'
+
import ServiceSelector from './components/service-selector.vue'
import ComponentAssigner from './components/component-assigner.vue'
import ServiceConfigurator from './components/service-configurator.vue'
import ComponentInstaller from './components/component-installer.vue'
+ import SvgIcon from '@/components/common/svg-icon/index.vue'
+
+ import { type StepContext, useCreateServiceStore } from '@/store/create-service'
const { t } = useI18n()
const route = useRoute()
@@ -37,27 +40,37 @@
const compRef = ref<any>()
const components = shallowRef<any[]>([ServiceSelector, ComponentAssigner, ServiceConfigurator, ServiceConfigurator])
const currComp = computed(() => components.value[current.value])
+ const isDone = computed(() => ['Successful', 'Failed'].includes(createdPayload.value.state ?? ''))
- const validateServiceSelection = async () => {
+ /**
+ * Validate the service selection step
+ */
+ const validateServiceSelection = async (): Promise<boolean> => {
if (stepContext.value.type === 'component') {
return true
}
- if (selectedServices.value.filter((v) => !v.isInstalled).length === 0) {
+ const uninstalledServices = selectedServices.value.filter((v) => !v.isInstalled)
+ if (uninstalledServices.length === 0) {
message.error(t('service.service_selection'))
return false
- } else {
- return await validateDependenciesOfServiceSelection()
}
+
+ return await validateDependenciesOfServiceSelection()
}
+ /**
+ * Validate service dependencies
+ */
const validateDependenciesOfServiceSelection = async () => {
let selectedServiceNames = new Set(selectedServices.value.map((service) => service.name))
+
for (const selectedService of selectedServices.value) {
const serviceDependencies = await createStore.confirmServiceDependencyAction('add', selectedService)
if (serviceDependencies.length === 0) {
return false
}
+
for (const service of serviceDependencies) {
if (!selectedServiceNames.has(service.name)) {
compRef.value.modifyInstallItems('add', service)
@@ -68,24 +81,26 @@
return true
}
- const validateComponentAssignments = () => {
- let valid = true
+ /**
+ * Validate the component assignment step
+ */
+ const validateComponentAssignments = (): boolean => {
for (const info of createStore.allComps.values()) {
- if (!info.cardinality) {
- continue
- }
- valid = createStore.validCardinality(info.cardinality, info.hosts.length, info.displayName!)
- if (!valid) {
- return
+ if (!info.cardinality) continue
+
+ const isValid = createStore.validCardinality(info.cardinality, info.hosts?.length ?? 0, info.displayName!)
+ if (!isValid) {
+ return false
}
}
- return valid
+ return true
}
const stepValidators = [validateServiceSelection, validateComponentAssignments, () => true, () => true]
const proceedToNextStep = async () => {
const { type } = stepContext.value
+
if (current.value < 3 && (await stepValidators[current.value]())) {
createStore.nextStep()
} else if (current.value === 3) {
@@ -116,6 +131,29 @@
onUnmounted(() => {
createStore.$reset()
})
+
+ onBeforeRouteLeave((_to, _from, next) => {
+ if (current.value === stepsLimit.value && !isDone.value) {
+ Modal.confirm({
+ title: () =>
+ h('div', { style: { display: 'flex' } }, [
+ h(SvgIcon, { name: 'unknown', style: { width: '24px', height: '24px' } }),
+ h('span', t('common.exit_confirm'))
+ ]),
+ content: h('div', { style: { paddingLeft: '36px' } }, t('common.installing_exit_confirm_content')),
+ cancelText: t('common.no'),
+ icon: null,
+ okText: t('common.yes'),
+ onOk: () => {
+ next()
+ Modal.destroyAll()
+ createStore.$reset()
+ }
+ })
+ return
+ }
+ next()
+ })
</script>
<template>
@@ -153,7 +191,7 @@
{{ $t('common.next') }}
</a-button>
</template>
- <a-button v-show="current === stepsLimit" type="primary" @click="$router.go(-1)">
+ <a-button v-show="current === stepsLimit && isDone" type="primary" @click="$router.go(-1)">
{{ $t('common.done') }}
</a-button>
</a-space>
diff --git a/bigtop-manager-ui/src/components/service-management/components.vue b/bigtop-manager-ui/src/components/service-management/components.vue
index 9fb8539f..a11f4bfc 100644
--- a/bigtop-manager-ui/src/components/service-management/components.vue
+++ b/bigtop-manager-ui/src/components/service-management/components.vue
@@ -362,8 +362,8 @@
</div>
</template>
<template #customFilterIcon="{ filtered, column }">
- <svg-icon v-if="!['name', 'status'].includes(column.key)" :name="filtered ? 'search_activated' : 'search'" />
- <svg-icon v-else :name="filtered ? 'filter_activated' : 'filter'" />
+ <svg-icon v-if="!['name', 'status'].includes(column.key)" :name="filtered ? 'search-activated' : 'search'" />
+ <svg-icon v-else :name="filtered ? 'filter-activated' : 'filter'" />
</template>
<template #bodyCell="{ record, column }">
<template v-if="['status'].includes(column.key)">
diff --git a/bigtop-manager-ui/src/components/service-management/configs.vue b/bigtop-manager-ui/src/components/service-management/configs.vue
index 06f997d7..116a1b9f 100644
--- a/bigtop-manager-ui/src/components/service-management/configs.vue
+++ b/bigtop-manager-ui/src/components/service-management/configs.vue
@@ -151,7 +151,7 @@
<template #extra>
<a-button type="text" shape="circle" @click.stop="manualAddPropertyForConfig(config)">
<template #icon>
- <svg-icon name="plus_dark" />
+ <svg-icon name="plus-dark" />
</template>
</a-button>
</template>
diff --git a/bigtop-manager-ui/src/layouts/header.vue b/bigtop-manager-ui/src/layouts/header.vue
index 7b7f18dd..7af58b48 100644
--- a/bigtop-manager-ui/src/layouts/header.vue
+++ b/bigtop-manager-ui/src/layouts/header.vue
@@ -40,7 +40,7 @@
<template>
<a-layout-header class="header">
<h1 class="header-left common-layout">
- <svg-icon name="bm_logo" />
+ <svg-icon name="bm-logo" />
</h1>
<div class="header-menu">
<a-menu
diff --git a/bigtop-manager-ui/src/layouts/index.vue b/bigtop-manager-ui/src/layouts/index.vue
index a9032d53..1b1d26ff 100644
--- a/bigtop-manager-ui/src/layouts/index.vue
+++ b/bigtop-manager-ui/src/layouts/index.vue
@@ -36,9 +36,9 @@
const clusterStore = useClusterStore()
onMounted(async () => {
- stackStore.loadStacks()
+ await stackStore.loadStacks()
await clusterStore.loadClusters()
- serviceStore.getServicesOfInfra()
+ await serviceStore.getServicesOfInfra()
userStore.getUserInfo()
menuStore.setupMenu()
})
diff --git a/bigtop-manager-ui/src/layouts/sider.vue b/bigtop-manager-ui/src/layouts/sider.vue
index 34a5cb34..3e1991c6 100644
--- a/bigtop-manager-ui/src/layouts/sider.vue
+++ b/bigtop-manager-ui/src/layouts/sider.vue
@@ -69,7 +69,7 @@
const { key, icon } = menuItem
const matchedRouteFromClusters = selectMenuKeyFromClusters.value && routeParamsLen.value > 0
return key === siderMenuSelectedKey.value || (matchedRouteFromClusters && key === 'clusters')
- ? `${icon}_activated`
+ ? `${icon}-activated`
: icon
}
diff --git a/bigtop-manager-ui/src/locales/en_US/common.ts b/bigtop-manager-ui/src/locales/en_US/common.ts
index 19782df5..e6a46d18 100644
--- a/bigtop-manager-ui/src/locales/en_US/common.ts
+++ b/bigtop-manager-ui/src/locales/en_US/common.ts
@@ -125,5 +125,7 @@ export default {
disabled: 'Disabled',
restore: 'Restore',
selected: 'Selected',
- feature_not_supported: 'Feature not supported yet'
+ feature_not_supported: 'Feature not supported yet',
+ installing_exit_confirm_content:
+ 'Installation is in progress, exiting the page will cause the installation to fail. Are you sure you want to exit?'
}
diff --git a/bigtop-manager-ui/src/locales/zh_CN/common.ts b/bigtop-manager-ui/src/locales/zh_CN/common.ts
index f7aab381..ac593b7b 100644
--- a/bigtop-manager-ui/src/locales/zh_CN/common.ts
+++ b/bigtop-manager-ui/src/locales/zh_CN/common.ts
@@ -125,5 +125,6 @@ export default {
disabled: '关闭',
restore: '恢复',
selected: '选中',
- feature_not_supported: '功能暂不支持'
+ feature_not_supported: '功能暂不支持',
+ installing_exit_confirm_content: '正在安装中,退出页面将导致安装失败。是否确定退出?'
}
diff --git a/bigtop-manager-ui/src/main.ts b/bigtop-manager-ui/src/main.ts
index 528bf2c3..29d96ab3 100644
--- a/bigtop-manager-ui/src/main.ts
+++ b/bigtop-manager-ui/src/main.ts
@@ -21,7 +21,6 @@ import { createApp } from 'vue'
import App from './App.vue'
import plugins from '@/plugins'
import 'ant-design-vue/dist/reset.css'
-import 'virtual:svg-icons-register'
import '@/styles/scrollbar.scss'
import '@/styles/marked.scss'
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/check-workflow.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/check-workflow.vue
index d09f541f..2b49b62f 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/check-workflow.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/check-workflow.vue
@@ -21,19 +21,24 @@
import { computed, onMounted, reactive, ref, shallowRef, toRefs } from 'vue'
import { Empty } from 'ant-design-vue'
import { getJobDetails, retryJob } from '@/api/job'
- import { CommandVO } from '@/api/command/types'
+
import LogsView, { type LogViewProps } from '@/components/log-view/index.vue'
+
import type { JobVO, StageVO, StateType, TaskVO } from '@/api/job/types'
+ import type { CommandVO } from '@/api/command/types'
const props = defineProps<{ stepData: CommandVO }>()
const emits = defineEmits(['updateData'])
+
const { stepData } = toRefs(props)
+
const activeKey = ref<number[]>([])
const jobDetail = ref<JobVO>({})
const spinning = ref(false)
const logsViewState = reactive<LogViewProps>({
open: false
})
+
const status = shallowRef<Record<StateType, string>>({
Pending: 'installing',
Processing: 'processing',
@@ -41,6 +46,7 @@
Canceled: 'canceled',
Successful: 'success'
})
+
const stages = computed(() => {
if (jobDetail.value.stages) {
return [...jobDetail.value.stages].sort((a, b) => a.order! - b.order!)
@@ -128,29 +134,33 @@
<a-empty v-if="stages.length == 0" :image="Empty.PRESENTED_IMAGE_SIMPLE" />
<div v-else class="check-workflow">
<div class="retry">
- <a-button v-if="stepData.state === 'Failed'" type="link" @click="handleRetryJob">{{
- $t('common.retry')
- }}</a-button>
+ <a-button v-if="stepData.state === 'Failed'" type="link" @click="handleRetryJob">
+ {{ $t('common.retry') }}
+ </a-button>
</div>
<a-collapse v-model:active-key="activeKey" :bordered="false" :ghost="true">
<a-collapse-panel v-for="stage in stages" :key="stage.id">
<template #header>
<div class="stage-item">
<span>{{ stage.name }}</span>
- <svg-icon :name="stage.state && status[stage.state]"></svg-icon>
+ <div style="min-width: 100px">
+ <svg-icon :name="stage.state && status[stage.state]"></svg-icon>
+ </div>
</div>
</template>
<div v-for="task in stage.tasks" :key="task.id" class="task-item">
<span>{{ task.name }}</span>
<a-space :size="16">
<svg-icon :name="task.state && status[task.state]"></svg-icon>
- <a-button
- v-if="task.state && !['Canceled', 'Pending'].includes(task.state)"
- type="link"
- @click="viewLogs(stage, task)"
- >
- {{ $t('cluster.view_log') }}
- </a-button>
+ <div style="min-width: 62px">
+ <a-button
+ v-if="task.state && !['Canceled', 'Pending'].includes(task.state)"
+ type="link"
+ @click="viewLogs(stage, task)"
+ >
+ {{ $t('cluster.view_log') }}
+ </a-button>
+ </div>
</a-space>
</div>
</a-collapse-panel>
@@ -188,8 +198,11 @@
}
}
.stage-item {
- margin-right: 68px;
@include flexbox($justify: space-between, $align: center);
+ .svg-icon {
+ width: 16px;
+ height: 16px;
+ }
}
.task-item {
height: 45px;
@@ -201,5 +214,9 @@
&:last-child {
border-bottom: 1px solid $color-border-secondary;
}
+ .svg-icon {
+ width: 16px;
+ height: 16px;
+ }
}
</style>
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/host-config.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/host-config.vue
index 98b0d0a5..e51f2617 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/host-config.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/components/host-config.vue
@@ -223,7 +223,7 @@
</div>
</template>
<template #customFilterIcon="{ filtered }">
- <svg-icon :name="filtered ? 'search_activated' : 'search'" />
+ <svg-icon :name="filtered ? 'search-activated' : 'search'" />
</template>
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'status'">
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/create.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/create.vue
index 2c58d5b8..416323af 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/create.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/create.vue
@@ -19,17 +19,21 @@
<script setup lang="ts">
import { useMenuStore } from '@/store/menu'
- import { message } from 'ant-design-vue'
- import { computed, ref, shallowRef } from 'vue'
+ import { message, Modal } from 'ant-design-vue'
+ import { computed, h, ref, shallowRef } from 'vue'
import { useI18n } from 'vue-i18n'
import { getInstalledStatus, installDependencies } from '@/api/hosts'
- import { InstalledStatusVO, Status } from '@/api/hosts/types'
import { execCommand } from '@/api/command'
+ import { onBeforeRouteLeave } from 'vue-router'
+
+ import SvgIcon from '@/components/common/svg-icon/index.vue'
import useSteps from '@/composables/use-steps'
import ClusterBase from './components/cluster-base.vue'
import ComponentInfo from './components/component-info.vue'
import HostConfig from './components/host-config.vue'
import CheckWorkflow from './components/check-workflow.vue'
+
+ import { type InstalledStatusVO, Status } from '@/api/hosts/types'
import type { ClusterCommandReq, CommandRequest, CommandVO, HostReq } from '@/api/command/types'
const { t } = useI18n()
@@ -41,10 +45,13 @@
command: 'Add',
commandLevel: 'cluster'
})
+
const installStatus = shallowRef<InstalledStatusVO[]>([])
const components = shallowRef<any[]>([ClusterBase, ComponentInfo, HostConfig, CheckWorkflow])
+
const isInstall = computed(() => current.value === 2)
const hasUnknownHost = computed(() => stepData.value[2].filter((v) => v.status === Status.Unknown).length == 0)
+
const allInstallSuccess = computed(
() =>
stepData.value[2].length != 0 &&
@@ -174,6 +181,28 @@
const onSave = () => {
menuStore.updateSider()
}
+
+ onBeforeRouteLeave((_to, _from, next) => {
+ if (current.value === stepsLimit.value && !isDone.value) {
+ Modal.confirm({
+ title: () =>
+ h('div', { style: { display: 'flex' } }, [
+ h(SvgIcon, { name: 'unknown', style: { width: '24px', height: '24px' } }),
+ h('span', t('common.exit_confirm'))
+ ]),
+ content: h('div', { style: { paddingLeft: '36px' } }, t('common.installing_exit_confirm_content')),
+ cancelText: t('common.no'),
+ icon: null,
+ okText: t('common.yes'),
+ onOk: () => {
+ next()
+ Modal.destroyAll()
+ }
+ })
+ return
+ }
+ next()
+ })
</script>
<template>
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
index 495becf0..a2b212d4 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/host.vue
@@ -266,8 +266,8 @@
</div>
</template>
<template #customFilterIcon="{ filtered, column }">
- <svg-icon v-if="column.key != 'status'" :name="filtered ? 'search_activated' : 'search'" />
- <svg-icon v-else :name="filtered ? 'filter_activated' : 'filter'" />
+ <svg-icon v-if="column.key != 'status'" :name="filtered ? 'search-activated' : 'search'" />
+ <svg-icon v-else :name="filtered ? 'filter-activated' : 'filter'" />
</template>
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'hostname'">
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/overview.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/overview.vue
index 848c244d..05b7df00 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/overview.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/overview.vue
@@ -18,7 +18,7 @@
-->
<script setup lang="ts">
- import { computed, onActivated, ref, shallowRef, useAttrs } from 'vue'
+ import { computed, onActivated, ref, shallowRef, useAttrs, watch, watchEffect } from 'vue'
import { useI18n } from 'vue-i18n'
import { storeToRefs } from 'pinia'
import { formatFromByte } from '@/utils/storage'
@@ -26,9 +26,12 @@
import { CommonStatus, CommonStatusTexts } from '@/enums/state'
import { useServiceStore } from '@/store/service'
import { useJobProgress } from '@/store/job-progress'
+ import { useStackStore } from '@/store/stack'
import { Empty } from 'ant-design-vue'
+
import GaugeChart from './components/gauge-chart.vue'
import CategoryChart from './components/category-chart.vue'
+
import type { ClusterStatusType, ClusterVO } from '@/api/cluster/types'
import type { ServiceListParams, ServiceVO } from '@/api/service/types'
import type { MenuItem } from '@/store/menu/types'
@@ -44,6 +47,7 @@
const { t } = useI18n()
const attrs = useAttrs() as ClusterVO
const jobProgressStore = useJobProgress()
+ const stackStore = useStackStore()
const serviceStore = useServiceStore()
const currTimeRange = ref<TimeRangeText>('15m')
const chartData = ref({
@@ -57,7 +61,8 @@
2: 'unhealthy',
3: 'unknown'
})
- const { locateStackWithService, serviceNames } = storeToRefs(serviceStore)
+ const { serviceNames } = storeToRefs(serviceStore)
+ const locateStackWithService = shallowRef<StackVO[]>([])
const clusterDetail = computed(() => ({
...attrs,
@@ -155,6 +160,20 @@
onActivated(() => {
getServices()
})
+
+ watchEffect(() => {
+ locateStackWithService.value = stackStore.stacks.filter((item) =>
+ item.services.some((service) => service.name && serviceNames.value.includes(service.name))
+ )
+ })
+
+ watch(
+ () => attrs,
+ () => {
+ getServices()
+ },
+ { immediate: true, deep: true }
+ )
</script>
<template>
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue b/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
index 253b89ef..c45178e6 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/cluster/service.vue
@@ -71,7 +71,7 @@
},
{
action: 'More',
- icon: 'more_line',
+ icon: 'more-line',
clickEvent: (item, args) => {
handleServiceOperate(item!.action!, args)
}
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue b/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
index b184f20d..f0cee396 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/hosts/index.vue
@@ -314,9 +314,9 @@
<template #customFilterIcon="{ filtered, column }">
<svg-icon
v-if="!['status', 'clusterDisplayName'].includes(column.key)"
- :name="filtered ? 'search_activated' : 'search'"
+ :name="filtered ? 'search-activated' : 'search'"
/>
- <svg-icon v-else :name="filtered ? 'filter_activated' : 'filter'" />
+ <svg-icon v-else :name="filtered ? 'filter-activated' : 'filter'" />
</template>
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'hostname'">
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/hosts/install-dependencies.vue b/bigtop-manager-ui/src/pages/cluster-manage/hosts/install-dependencies.vue
index c9c2d034..adc60a9f 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/hosts/install-dependencies.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/hosts/install-dependencies.vue
@@ -306,8 +306,8 @@
</div>
</template>
<template #customFilterIcon="{ filtered, column }">
- <svg-icon v-if="column.key === 'hostname'" :name="filtered ? 'search_activated' : 'search'" />
- <svg-icon v-else :name="filtered ? 'filter_activated' : 'filter'" />
+ <svg-icon v-if="column.key === 'hostname'" :name="filtered ? 'search-activated' : 'search'" />
+ <svg-icon v-else :name="filtered ? 'filter-activated' : 'filter'" />
</template>
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'clusterId'">
diff --git a/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue b/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
index f014ee53..a92d506d 100644
--- a/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
+++ b/bigtop-manager-ui/src/pages/cluster-manage/infrastructures/service.vue
@@ -91,7 +91,7 @@
},
{
action: 'More',
- icon: 'more_line',
+ icon: 'more-line',
clickEvent: (item, args) => {
infraAction(item!.action!, args)
}
diff --git a/bigtop-manager-ui/src/pages/system-manage/llm-config/components/llm-item.vue b/bigtop-manager-ui/src/pages/system-manage/llm-config/components/llm-item.vue
index 46269893..d79797c4 100644
--- a/bigtop-manager-ui/src/pages/system-manage/llm-config/components/llm-item.vue
+++ b/bigtop-manager-ui/src/pages/system-manage/llm-config/components/llm-item.vue
@@ -227,7 +227,7 @@
</template>
<template v-else>
<div class="llm-card-action" @click="handleCreateLlmConfig">
- <svg-icon name="plus_dark" />
+ <svg-icon name="plus-dark" />
<a-typography-text type="secondary" :content="$t('llmConfig.add_authorization')" />
</div>
</template>
diff --git a/bigtop-manager-ui/src/router/routes/modules/system.ts b/bigtop-manager-ui/src/router/routes/modules/system.ts
index 5a591a13..5a87ea6e 100644
--- a/bigtop-manager-ui/src/router/routes/modules/system.ts
+++ b/bigtop-manager-ui/src/router/routes/modules/system.ts
@@ -35,7 +35,7 @@ const routes: RouteRecordRaw[] = [
path: 'llm-config',
redirect: '/system-manage/llm-config/list',
meta: {
- icon: 'llm_config',
+ icon: 'llm-config',
title: 'menu.llm_config'
},
children: [
diff --git a/bigtop-manager-ui/src/store/create-service/index.ts b/bigtop-manager-ui/src/store/create-service/index.ts
index 385d0919..1f4132e0 100644
--- a/bigtop-manager-ui/src/store/create-service/index.ts
+++ b/bigtop-manager-ui/src/store/create-service/index.ts
@@ -20,8 +20,10 @@ import { computed, ref, shallowRef } from 'vue'
import { defineStore } from 'pinia'
import useSteps from '@/composables/use-steps'
import { useValidations } from './validation'
-import { ExpandServiceVO, useStackStore } from '@/store/stack'
import { execCommand } from '@/api/command'
+
+import { type ExpandServiceVO, useStackStore } from '@/store/stack'
+
import type { ServiceVO } from '@/api/service/types'
import type { CommandRequest, CommandVO, ComponentCommandReq, ServiceCommandReq } from '@/api/command/types'
import type { HostVO } from '@/api/hosts/types'
@@ -59,6 +61,7 @@ export const useCreateServiceStore = defineStore(
const stackStore = useStackStore()
const steps = shallowRef(STEPS_TITLES)
+
const selectedServices = ref<ExpandServiceVO[]>([])
const selectedServicesMeta = ref<ExpandServiceVO[]>([])
const createdPayload = ref<CommandVO>({})
@@ -71,7 +74,9 @@ export const useCreateServiceStore = defineStore(
command: 'Add',
commandLevel: 'service'
})
+
const { current, stepsLimit, previousStep, nextStep } = useSteps(steps.value)
+
const infraServices = computed(() => stackStore.getServicesByExclude(['bigtop', 'extra']) as ExpandServiceVO[])
const excludeInfraServices = computed(() => stackStore.getServicesByExclude(['infra']))
const infraServiceNames = computed(() => infraServices.value.map((v) => v.name!))
@@ -116,6 +121,10 @@ export const useCreateServiceStore = defineStore(
stepContext.value = partial
}
+ function updateInstalledStatus(state: string) {
+ createdPayload.value.state = state
+ }
+
async function confirmServiceDependencyAction(type: 'add' | 'remove', preSelectedService: ExpandServiceVO) {
const { requiredServices } = preSelectedService
if (!requiredServices && type === 'add') {
@@ -130,15 +139,15 @@ export const useCreateServiceStore = defineStore(
}
async function handleServiceDependencyConfirm(type: 'add' | 'remove', preSelectedService: ExpandServiceVO) {
- let dependenciesSuccess: ProcessResult = { success: false }
const result: ExpandServiceVO[] = []
- if (type === 'add') {
- const target = creationMode.value === 'public' ? infraServices.value : excludeInfraServices.value
- const serviceMap = getServiceMap(target)
- dependenciesSuccess = await processDependencies(preSelectedService, serviceMap, infraServices.value, result)
- } else {
- dependenciesSuccess = await notifyDependents(preSelectedService, result)
- }
+ const target = creationMode.value === 'public' ? infraServices.value : excludeInfraServices.value
+ const serviceMap = getServiceMap(target)
+
+ const dependenciesSuccess =
+ type === 'add'
+ ? await processDependencies(preSelectedService, serviceMap, infraServices.value, result)
+ : await notifyDependents(preSelectedService, result)
+
if (dependenciesSuccess.success) {
result.unshift(preSelectedService)
return result
@@ -287,6 +296,7 @@ export const useCreateServiceStore = defineStore(
allComps,
allCompsMeta,
updateSelectedService,
+ updateInstalledStatus,
setStepContext,
setTempData,
confirmServiceDependencyAction,
diff --git a/bigtop-manager-ui/src/store/create-service/validation.ts b/bigtop-manager-ui/src/store/create-service/validation.ts
index cf5c361e..5ee41116 100644
--- a/bigtop-manager-ui/src/store/create-service/validation.ts
+++ b/bigtop-manager-ui/src/store/create-service/validation.ts
@@ -28,30 +28,43 @@ export function useValidations() {
const { t } = useI18n()
const serviceStore = useServiceStore()
- // Validate services from infra
+ /**
+ * Validate services from infrastructure
+ * @param targetService - The service being validated
+ * @param requiredServices - List of required services
+ * @param infraServiceNames - List of available infrastructure services
+ * @returns Whether there are missing services
+ */
function validServiceFromInfra(
targetService: ExpandServiceVO,
- requiredServices: string[],
+ requiredServices: string[] | undefined,
infraServiceNames: string[]
) {
- const installedInfra = serviceStore.getInstalledNamesOrIdsOfServiceByKey('0', 'names')
- const set = new Set(installedInfra)
- const missServices = requiredServices.reduce((acc, name) => {
- !set.has(name) && infraServiceNames.includes(name) && acc.push(name)
- return acc
- }, [] as string[])
-
- if (missServices.length === 0) return false
- message.error(t('service.dependencies_conflict_msg', [targetService.displayName!, missServices.join(',')]))
+ const installedInfra = new Set(serviceStore.getInstalledNamesOrIdsOfServiceByKey('0', 'names'))
+ const missingServices = (requiredServices ?? []).filter(
+ (name) => !installedInfra.has(name) && infraServiceNames.includes(name)
+ )
+
+ if (missingServices.length === 0) return false
+
+ message.error(t('service.dependencies_conflict_msg', [targetService.displayName!, missingServices.join(',')]))
return true
}
+ /**
+ * Confirm dependency addition or removal
+ * @param type - The action type ('add' or 'remove')
+ * @param targetService - The target service
+ * @param requiredService - The required service
+ * @returns A promise resolving to the user's decision
+ */
function confirmDependencyAddition(
type: 'add' | 'remove',
targetService: ExpandServiceVO,
requiredService: ExpandServiceVO
) {
const content = type === 'add' ? 'dependencies_add_msg' : 'dependencies_remove_msg'
+
return new Promise((resolve) => {
Modal.confirm({
content: t(`service.${content}`, [targetService.displayName, requiredService.displayName]),
@@ -67,31 +80,53 @@ export function useValidations() {
})
}
- function validCardinality(cardinality: string, count: number, displayName: string): boolean {
+ /**
+ * Parse cardinality string into a structured object
+ * @param cardinality - The cardinality string
+ * @returns Parsed cardinality object
+ */
+ function parseCardinality(cardinality: string): { min?: number; max?: number } {
if (/^\d+$/.test(cardinality)) {
- const expected = parseInt(cardinality, 10)
- if (count != expected) {
- message.error(t('service.exact', [displayName, expected]))
- return false
- }
+ const value = parseInt(cardinality, 10)
+ return { min: value, max: value }
}
if (/^\d+-\d+$/.test(cardinality)) {
- const [minStr, maxStr] = cardinality.split('-')
- const min = parseInt(minStr, 10)
- const max = parseInt(maxStr, 10)
- if (count < min || count > max) {
- message.error(t('service.range', [displayName, min, max]))
- return false
- }
+ const [min, max] = cardinality.split('-').map((v) => parseInt(v, 10))
+ return { min, max }
}
if (/^\d+\+$/.test(cardinality)) {
const min = parseInt(cardinality.slice(0, -1), 10)
- if (count < min) {
- message.error(t('service.minOnly', [displayName, min]))
- return false
- }
+ return { min }
+ }
+
+ return {}
+ }
+
+ /**
+ * Validate cardinality constraints
+ * @param cardinality - The cardinality string
+ * @param count - The current count
+ * @param displayName - The display name of the comp
+ * @returns Whether the cardinality is valid
+ */
+ function validCardinality(cardinality: string, count: number, displayName: string): boolean {
+ const { min, max } = parseCardinality(cardinality)
+
+ if (min !== undefined && max !== undefined && (count < min || count > max)) {
+ message.error(t('service.range', [displayName, min, max]))
+ return false
+ }
+
+ if (min !== undefined && max === undefined && count < min) {
+ message.error(t('service.minOnly', [displayName, min]))
+ return false
+ }
+
+ if (min === max && count !== min) {
+ message.error(t('service.exact', [displayName, min]))
+ return false
}
return true
diff --git a/bigtop-manager-ui/src/store/service/index.ts b/bigtop-manager-ui/src/store/service/index.ts
index 1c233cdb..79d3f783 100644
--- a/bigtop-manager-ui/src/store/service/index.ts
+++ b/bigtop-manager-ui/src/store/service/index.ts
@@ -17,28 +17,19 @@
* under the License.
*/
-import { defineStore, storeToRefs } from 'pinia'
+import { defineStore } from 'pinia'
import { computed, ref } from 'vue'
import { getService, getServiceList } from '@/api/service'
-import { useStackStore } from '@/store/stack'
import type { ServiceListParams, ServiceVO } from '@/api/service/types'
export const useServiceStore = defineStore(
'service',
() => {
- const stackStore = useStackStore()
const services = ref<ServiceVO[]>([])
const serviceMap = ref<Record<string, (ServiceVO & { clusterId: number })[]>>({})
const total = ref(0)
const loading = ref(false)
- const { stacks } = storeToRefs(stackStore)
const serviceNames = computed(() => services.value.map((v) => v.name))
- const locateStackWithService = computed(() => {
- return stacks.value.filter((item) =>
- item.services.some((service) => service.name && serviceNames.value.includes(service.name))
- )
- })
-
const serviceFlatMap = computed(() => {
const result: Record<string, ServiceVO> = {}
@@ -102,7 +93,6 @@ export const useServiceStore = defineStore(
services,
loading,
serviceNames,
- locateStackWithService,
serviceFlatMap,
getServices,
getServiceDetail,
diff --git a/bigtop-manager-ui/src/store/theme/config.ts b/bigtop-manager-ui/src/store/theme/config.ts
index d3b98dff..34d872b1 100644
--- a/bigtop-manager-ui/src/store/theme/config.ts
+++ b/bigtop-manager-ui/src/store/theme/config.ts
@@ -23,7 +23,7 @@ export const componentsConfigProvider = {
paddingMD: 16,
paddingLG: 16,
paddingContentHorizontalLG: 16,
- colorTextHeading: 'rgba(0, 0,.0,1)',
+ colorTextHeading: 'rgba(0, 0,0,1)',
fontWeightStrong: 500
},
Form: {
diff --git a/bigtop-manager-ui/src/styles/index.scss b/bigtop-manager-ui/src/styles/index.scss
index 12dd0203..4bcb02ea 100644
--- a/bigtop-manager-ui/src/styles/index.scss
+++ b/bigtop-manager-ui/src/styles/index.scss
@@ -51,16 +51,14 @@
display: none !important;
}
-:where(.ant-modal-header) {
- margin-bottom: 16px !important;
-}
-
-
.header-title {
font-weight: 500;
margin-bottom: $space-md;
}
+:where(.ant-modal-confirm-content) {
+ max-width: 100% !important;
+}
.ellipsis {
white-space: nowrap;
@@ -71,33 +69,31 @@
position: relative;
}
-
-.job-progress-notification{
- &:hover{
+.job-progress-notification {
+ &:hover {
background-color: $color-bg-layout;
cursor: pointer;
}
- .ant-notification-notice-close{
+ .ant-notification-notice-close {
top: 16px !important;
}
- :where(.ant-notification-notice-content){
-
+ :where(.ant-notification-notice-content) {
.ant-notification-notice-message,
.ant-notification-notice-description {
margin-left: 50px !important;
- margin-bottom: 0 !important;
+ margin-bottom: 0 !important;
padding-inline-end: calc(24px / 2);
- .ant-progress-line{
+ .ant-progress-line {
margin-bottom: 6px !important;
}
}
-
- .ant-notification-notice-message{
+
+ .ant-notification-notice-message {
font-size: 14px !important;
font-weight: 500 !important;
}
-
- .ant-notification-notice-icon{
+
+ .ant-notification-notice-icon {
top: 50%;
transform: translateY(-50%);
margin: auto;
@@ -105,7 +101,6 @@
}
}
-
.text-loading::after {
content: '';
display: inline-block;
@@ -136,4 +131,11 @@
}
}
-
+.svg-icon {
+ height: 1.2em;
+ width: 1.2em;
+ margin: 0 6px;
+ vertical-align: -0.25em;
+ overflow: hidden;
+ flex-shrink: 0;
+}
diff --git a/bigtop-manager-ui/src/types/components.d.ts b/bigtop-manager-ui/src/types/components.d.ts
deleted file mode 100644
index f9673d00..00000000
--- a/bigtop-manager-ui/src/types/components.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-export {}
-
-declare module 'vue' {
- export interface GlobalComponents {
- HeaderCard: (typeof import('@/components/common/header-card/index.vue'))['default']
- MainCard: (typeof import('@/components/common/main-card/index.vue'))['default']
- AutoForm: (typeof import('@/components/common/auto-form/index.vue'))['default']
- ButtonGroup: (typeof import('@/components/common/button-group/index.vue'))['default']
- MarkdownView: (typeof import('@/components/common/markdown-view/index.vue'))['default']
- StatusDot: (typeof import('@/components/common/status-dot/index.vue'))['default']
- }
-}
diff --git a/bigtop-manager-ui/tests/__components__/filter-form.test.ts b/bigtop-manager-ui/tests/__components__/filter-form.test.ts
new file mode 100644
index 00000000..e2c4ecd0
--- /dev/null
+++ b/bigtop-manager-ui/tests/__components__/filter-form.test.ts
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { mount } from '@vue/test-utils'
+import { describe, it, expect } from 'vitest'
+import FilterForm from '../../src/components/common/filter-form/index.vue'
+
+describe('FilterForm.vue', () => {
+ const filterItems = [
+ {
+ key: 'status',
+ label: 'Status',
+ type: 'status',
+ options: [
+ { value: 'active', label: 'Active' },
+ { value: 'inactive', label: 'Inactive' }
+ ]
+ },
+ {
+ key: 'search',
+ label: 'Search',
+ type: 'search'
+ }
+ ]
+
+ it('renders filter items correctly', () => {
+ const wrapper = mount(FilterForm, {
+ props: {
+ filterItems
+ },
+ global: {
+ mocks: {
+ $t: (key: string) => key
+ }
+ }
+ })
+
+ expect(wrapper.findAll('.filter-form-label').length).toBe(filterItems.length)
+ expect(wrapper.html()).toContain('Status')
+ expect(wrapper.html()).toContain('Search')
+ })
+
+ it('emits filter event with correct parameters', async () => {
+ const wrapper = mount(FilterForm, {
+ props: {
+ filterItems
+ },
+ global: {
+ mocks: {
+ $t: (key: string) => key
+ }
+ }
+ })
+
+ // Simulate selecting a status
+ wrapper.vm['filterParams'].status = 'active'
+ await wrapper.vm.$nextTick()
+
+ // Confirm filter
+ wrapper.vm['confirmFilterParams']()
+ expect(wrapper.emitted().filter).toBeTruthy()
+ expect(wrapper.emitted().filter[0]).toEqual([{ status: 'active', search: undefined }])
+ })
+
+ it('resets filter correctly', async () => {
+ const wrapper = mount(FilterForm, {
+ props: {
+ filterItems
+ },
+ global: {
+ mocks: {
+ $t: (key: string) => key
+ }
+ }
+ })
+
+ // Simulate selecting a status
+ wrapper.vm['filterParams'].status = 'active'
+ await wrapper.vm.$nextTick()
+
+ // Reset filter
+ wrapper.vm['resetFilter'](filterItems[0])
+ await wrapper.vm.$nextTick()
+
+ expect(wrapper.vm['filterParams'].status).toBeUndefined()
+ })
+})
diff --git a/bigtop-manager-ui/tests/__components__/svg-icon.test.ts b/bigtop-manager-ui/tests/__components__/svg-icon.test.ts
deleted file mode 100644
index 69fc7918..00000000
--- a/bigtop-manager-ui/tests/__components__/svg-icon.test.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import { mount } from '@vue/test-utils'
-import SvgIcon from '../../src/components/common/svg-icon/index.vue'
-import { expect, it, describe } from 'vitest'
-
-describe('SvgIcon', () => {
- it('renders default config of SVG icon', () => {
- const wrapper = mount(SvgIcon, {
- props: {
- name: 'test'
- }
- })
- expect(wrapper.find('use').attributes()['href']).toBe('#icon-test')
- expect(wrapper.find('use').attributes().fill).toBe('#000')
- expect(wrapper.find('svg').classes()).toContain('svg-icon')
- })
-
- it('renders custom config of SVG icon', () => {
- const wrapper = mount(SvgIcon, {
- props: {
- name: 'home',
- prefix: 'vietest',
- color: 'yellow'
- }
- })
- expect(wrapper.find('use').attributes()['href']).toBe('#vietest-home')
- expect(wrapper.find('use').attributes().fill).toBe('yellow')
- })
-})
diff --git a/bigtop-manager-ui/tsconfig.json b/bigtop-manager-ui/tsconfig.json
index d33b1fa6..150c7c63 100644
--- a/bigtop-manager-ui/tsconfig.json
+++ b/bigtop-manager-ui/tsconfig.json
@@ -9,7 +9,7 @@
"@/*": ["src/*"]
},
"skipLibCheck": true,
- "types": ["vitest", "vitest/globals", "vite/client", "vite-plugin-svg-icons/client"],
+ "types": ["vitest", "vitest/globals", "vite/client"],
/* Bundler mode */
// "moduleResolution": "Bundler",
"moduleResolution": "Node",
@@ -24,9 +24,9 @@
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
- "noImplicitAny": false,
+ "noImplicitAny": false
},
- "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "src/types/**/*.d.ts"],
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/types/**/*.d.ts"],
"references": [
{
"path": "./tsconfig.node.json"
diff --git a/bigtop-manager-ui/vite.config.ts b/bigtop-manager-ui/vite.config.ts
index 4fd219ed..d5cc8b4b 100644
--- a/bigtop-manager-ui/vite.config.ts
+++ b/bigtop-manager-ui/vite.config.ts
@@ -19,8 +19,12 @@
import { loadEnv, defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
-import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
-import path from 'path'
+import path from 'node:path'
+import Icons from 'unplugin-icons/vite'
+import Components from 'unplugin-vue-components/vite'
+import AutoImport from 'unplugin-auto-import/vite'
+import IconsResolver from 'unplugin-icons/resolver'
+import { FileSystemIconLoader } from 'unplugin-icons/loaders'
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
@@ -33,10 +37,33 @@ export default defineConfig(({ mode }) => {
defineModel: true
}
}),
- createSvgIconsPlugin({
- iconDirs: [path.resolve(process.cwd(), 'src/assets/images/svg')],
- symbolId: 'icon-[dir]-[name]',
- customDomId: '__svg__icons__dom__'
+ Icons({
+ compiler: 'vue3',
+ customCollections: {
+ svg: FileSystemIconLoader('src/assets/images/svg')
+ },
+ iconCustomizer(collection, icon, props) {
+ props.class = (props.class ? props.class + ' ' : '') + 'svg-icon'
+ }
+ }),
+ Components({
+ dts: 'src/types/components.d.ts',
+ resolvers: [
+ IconsResolver({
+ customCollections: ['svg'],
+ componentPrefix: 'icon'
+ })
+ ]
+ }),
+ AutoImport({
+ imports: [],
+ resolvers: [
+ IconsResolver({
+ customCollections: ['svg'],
+ componentPrefix: 'icon'
+ })
+ ],
+ dts: 'src/types/auto-imports.d.ts'
})
],
resolve: {
@@ -59,6 +86,30 @@ export default defineConfig(({ mode }) => {
changeOrigin: true
}
}
+ },
+ build: {
+ outDir: 'dist',
+ sourcemap: true,
+ reportCompressedSize: true,
+ chunkSizeWarningLimit: 1024,
+ rollupOptions: {
+ output: {
+ chunkFileNames: 'static/js/[name]-[hash].js',
+ entryFileNames: 'static/js/[name]-[hash].js',
+ assetFileNames: 'static/[ext]/name-[hash].[ext]',
+ manualChunks(id) {
+ if (id.includes('node_modules/lodash-es')) {
+ return 'lodash'
+ }
+ }
+ }
+ },
+ terserOptions: {
+ compress: {
+ drop_console: true, // remove console
+ drop_debugger: true // remove debugger
+ }
+ }
}
}
})