From 3934e34b1a9911ef67567992bceb5f9323848a3b Mon Sep 17 00:00:00 2001 From: zstar <65890619+zstar1003@users.noreply.github.com> Date: Fri, 28 Mar 2025 22:45:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=8E=E5=8F=B0=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 56 +- management/Dockerfile | 30 + management/docker-compose.yml | 27 + management/nginx.conf | 13 + management/server/app.py | 90 + management/server/database.py | 269 + management/server/requirements.txt | 6 + management/server/utils.py | 28 + management/web/.editorconfig | 24 + management/web/.env | 7 + management/web/.env.development | 7 + management/web/.env.production | 7 + management/web/.env.staging | 7 + management/web/.gitignore | 18 + management/web/.npmrc | 5 + management/web/eslint.config.js | 43 + management/web/index.html | 17 + management/web/package.json | 64 + management/web/pnpm-lock.yaml | 7477 +++++++++++++++++ management/web/public/app-loading.css | 45 + management/web/public/detect-ie.js | 4 + management/web/public/favicon.ico | Bin 0 -> 8627 bytes management/web/src/App.vue | 24 + .../web/src/common/apis/tables/index.ts | 37 + management/web/src/common/apis/tables/type.ts | 30 + management/web/src/common/apis/users/index.ts | 10 + management/web/src/common/apis/users/type.ts | 1 + .../web/src/common/assets/icons/dashboard.svg | 1 + .../common/assets/icons/fullscreen-exit.svg | 1 + .../src/common/assets/icons/fullscreen.svg | 1 + .../src/common/assets/icons/keyboard-down.svg | 1 + .../common/assets/icons/keyboard-enter.svg | 1 + .../src/common/assets/icons/keyboard-esc.svg | 1 + .../src/common/assets/icons/keyboard-up.svg | 1 + .../assets/icons/preserve-color/README.md | 11 + .../web/src/common/assets/icons/search.svg | 1 + .../src/common/assets/images/docs/preview.png | Bin 0 -> 503620 bytes .../assets/images/layouts/logo-text-1.png | Bin 0 -> 11324 bytes .../assets/images/layouts/logo-text-2.png | Bin 0 -> 11324 bytes .../src/common/assets/images/layouts/logo.png | Bin 0 -> 3990 bytes .../src/common/assets/styles/element-plus.css | 90 + .../common/assets/styles/element-plus.scss | 20 + .../web/src/common/assets/styles/index.scss | 67 + .../web/src/common/assets/styles/mixins.scss | 42 + .../styles/theme/core/element-plus.scss | 29 + .../assets/styles/theme/core/index.scss | 4 + .../assets/styles/theme/core/layouts.scss | 34 + .../assets/styles/theme/dark-blue/index.scss | 2 + .../styles/theme/dark-blue/variables.scss | 6 + .../assets/styles/theme/dark/index.scss | 2 + .../assets/styles/theme/dark/variables.scss | 6 + .../common/assets/styles/theme/register.scss | 3 + .../src/common/assets/styles/transition.scss | 25 + .../src/common/assets/styles/variables.css | 72 + .../common/assets/styles/view-transition.scss | 20 + .../src/common/assets/styles/vxe-table.css | 97 + .../src/common/assets/styles/vxe-table.scss | 38 + .../web/src/common/components/Notify/List.vue | 60 + .../web/src/common/components/Notify/data.ts | 58 + .../src/common/components/Notify/index.vue | 94 + .../web/src/common/components/Notify/type.ts | 8 + .../common/components/Screenfull/index.vue | 111 + .../common/components/SearchMenu/Footer.vue | 54 + .../common/components/SearchMenu/Modal.vue | 193 + .../common/components/SearchMenu/Result.vue | 115 + .../common/components/SearchMenu/index.vue | 29 + .../common/components/ThemeSwitch/index.vue | 30 + .../web/src/common/composables/useDevice.ts | 12 + .../src/common/composables/useFetchSelect.ts | 42 + .../composables/useFullscreenLoading.ts | 36 + .../composables/useGreyAndColorWeakness.ts | 20 + .../src/common/composables/useLayoutMode.ts | 17 + .../src/common/composables/usePagination.ts | 32 + .../web/src/common/composables/usePany.ts | 42 + .../common/composables/useRouteListener.ts | 52 + .../web/src/common/composables/useTheme.ts | 75 + .../web/src/common/composables/useTitle.ts | 22 + .../src/common/composables/useWatermark.ts | 233 + .../web/src/common/constants/app-key.ts | 22 + .../web/src/common/constants/cache-key.ts | 11 + .../web/src/common/utils/cache/cookies.ts | 16 + .../src/common/utils/cache/local-storage.ts | 60 + management/web/src/common/utils/css.ts | 18 + management/web/src/common/utils/datetime.ts | 9 + management/web/src/common/utils/permission.ts | 13 + management/web/src/common/utils/validate.ts | 15 + management/web/src/http/axios.ts | 131 + .../src/layouts/components/AppMain/index.vue | 49 + .../layouts/components/Breadcrumb/index.vue | 63 + .../src/layouts/components/Footer/index.vue | 20 + .../layouts/components/Hamburger/index.vue | 35 + .../web/src/layouts/components/Logo/index.vue | 64 + .../components/NavigationBar/index.vue | 126 + .../layouts/components/RightPanel/index.vue | 35 + .../components/Settings/SelectLayoutMode.vue | 103 + .../src/layouts/components/Settings/index.vue | 93 + .../src/layouts/components/Sidebar/Item.vue | 98 + .../src/layouts/components/Sidebar/Link.vue | 18 + .../src/layouts/components/Sidebar/index.vue | 134 + .../components/TagsView/ScrollPane.vue | 162 + .../src/layouts/components/TagsView/index.vue | 271 + .../web/src/layouts/components/index.ts | 10 + .../web/src/layouts/composables/useResize.ts | 55 + management/web/src/layouts/config.ts | 55 + management/web/src/layouts/index.vue | 49 + management/web/src/layouts/modes/LeftMode.vue | 177 + .../web/src/layouts/modes/LeftTopMode.vue | 111 + management/web/src/layouts/modes/TopMode.vue | 74 + management/web/src/main.ts | 28 + .../src/pages/dashboard/components/Admin.vue | 23 + .../src/pages/dashboard/components/Editor.vue | 23 + .../src/pages/dashboard/images/dashboard.svg | 1 + management/web/src/pages/dashboard/index.vue | 12 + .../composable-demo/apis/use-fetch-select.ts | 39 + .../apis/use-fullscreen-loading.ts | 26 + .../demo/composable-demo/use-fetch-select.vue | 30 + .../use-fullscreen-loading.vue | 60 + .../demo/composable-demo/use-watermark.vue | 59 + .../web/src/pages/demo/element-plus/index.vue | 282 + .../web/src/pages/demo/level2/index.vue | 30 + .../src/pages/demo/level2/level3/index.vue | 15 + .../pages/demo/permission/button-level.vue | 42 + .../permission/components/SwitchRoles.vue | 37 + .../src/pages/demo/permission/page-level.vue | 18 + .../web/src/pages/demo/unocss/index.vue | 17 + .../web/src/pages/demo/vxe-table/index.vue | 425 + .../demo/vxe-table/tsx/RoleColumnSlots.tsx | 9 + .../demo/vxe-table/tsx/StatusColumnSlots.tsx | 9 + management/web/src/pages/error/403.vue | 10 + management/web/src/pages/error/404.vue | 10 + .../web/src/pages/error/components/Layout.vue | 26 + management/web/src/pages/error/images/403.svg | 1 + management/web/src/pages/error/images/404.svg | 1 + management/web/src/pages/login/apis/index.ts | 19 + management/web/src/pages/login/apis/type.ts | 10 + .../web/src/pages/login/components/Owl.vue | 92 + .../src/pages/login/composables/useFocus.ts | 17 + .../web/src/pages/login/images/close-eyes.png | Bin 0 -> 2098 bytes .../web/src/pages/login/images/face.png | Bin 0 -> 6382 bytes .../src/pages/login/images/hand-down-left.png | Bin 0 -> 1382 bytes .../pages/login/images/hand-down-right.png | Bin 0 -> 1306 bytes .../src/pages/login/images/hand-up-left.png | Bin 0 -> 2074 bytes .../src/pages/login/images/hand-up-right.png | Bin 0 -> 2015 bytes management/web/src/pages/login/index.vue | 203 + management/web/src/pages/redirect/index.vue | 10 + management/web/src/pinia/index.ts | 1 + management/web/src/pinia/stores/app.ts | 59 + management/web/src/pinia/stores/permission.ts | 59 + management/web/src/pinia/stores/settings.ts | 49 + management/web/src/pinia/stores/tags-view.ts | 108 + management/web/src/pinia/stores/user.ts | 73 + .../web/src/plugins/element-plus-icons.ts | 9 + management/web/src/plugins/index.ts | 12 + .../web/src/plugins/permission-directive.ts | 24 + management/web/src/plugins/svg-icon.ts | 7 + management/web/src/plugins/vxe-table.ts | 61 + management/web/src/router/config.ts | 41 + management/web/src/router/guard.ts | 59 + management/web/src/router/helper.ts | 56 + management/web/src/router/index.ts | 290 + management/web/src/router/whitelist.ts | 13 + .../web/tests/components/Notify.test.ts | 34 + management/web/tests/demo.test.ts | 32 + management/web/tests/utils/validate.test.ts | 32 + management/web/tsconfig.json | 45 + management/web/types/api.d.ts | 6 + management/web/types/auto/auto-imports.d.ts | 92 + management/web/types/auto/components.d.ts | 59 + .../web/types/auto/svg-component-global.d.ts | 26 + management/web/types/auto/svg-component.d.ts | 26 + management/web/types/directives.d.ts | 10 + management/web/types/env.d.ts | 11 + management/web/types/vue-router.d.ts | 57 + management/web/uno.config.ts | 25 + management/web/vite.config.ts | 148 + python_sql/add.json | 9 - python_sql/add_sql_final.py | 165 - python_sql/private.pem | 30 - web/public/logo.svg | 34 +- 179 files changed, 15434 insertions(+), 266 deletions(-) create mode 100644 management/Dockerfile create mode 100644 management/docker-compose.yml create mode 100644 management/nginx.conf create mode 100644 management/server/app.py create mode 100644 management/server/database.py create mode 100644 management/server/requirements.txt create mode 100644 management/server/utils.py create mode 100644 management/web/.editorconfig create mode 100644 management/web/.env create mode 100644 management/web/.env.development create mode 100644 management/web/.env.production create mode 100644 management/web/.env.staging create mode 100644 management/web/.gitignore create mode 100644 management/web/.npmrc create mode 100644 management/web/eslint.config.js create mode 100644 management/web/index.html create mode 100644 management/web/package.json create mode 100644 management/web/pnpm-lock.yaml create mode 100644 management/web/public/app-loading.css create mode 100644 management/web/public/detect-ie.js create mode 100644 management/web/public/favicon.ico create mode 100644 management/web/src/App.vue create mode 100644 management/web/src/common/apis/tables/index.ts create mode 100644 management/web/src/common/apis/tables/type.ts create mode 100644 management/web/src/common/apis/users/index.ts create mode 100644 management/web/src/common/apis/users/type.ts create mode 100644 management/web/src/common/assets/icons/dashboard.svg create mode 100644 management/web/src/common/assets/icons/fullscreen-exit.svg create mode 100644 management/web/src/common/assets/icons/fullscreen.svg create mode 100644 management/web/src/common/assets/icons/keyboard-down.svg create mode 100644 management/web/src/common/assets/icons/keyboard-enter.svg create mode 100644 management/web/src/common/assets/icons/keyboard-esc.svg create mode 100644 management/web/src/common/assets/icons/keyboard-up.svg create mode 100644 management/web/src/common/assets/icons/preserve-color/README.md create mode 100644 management/web/src/common/assets/icons/search.svg create mode 100644 management/web/src/common/assets/images/docs/preview.png create mode 100644 management/web/src/common/assets/images/layouts/logo-text-1.png create mode 100644 management/web/src/common/assets/images/layouts/logo-text-2.png create mode 100644 management/web/src/common/assets/images/layouts/logo.png create mode 100644 management/web/src/common/assets/styles/element-plus.css create mode 100644 management/web/src/common/assets/styles/element-plus.scss create mode 100644 management/web/src/common/assets/styles/index.scss create mode 100644 management/web/src/common/assets/styles/mixins.scss create mode 100644 management/web/src/common/assets/styles/theme/core/element-plus.scss create mode 100644 management/web/src/common/assets/styles/theme/core/index.scss create mode 100644 management/web/src/common/assets/styles/theme/core/layouts.scss create mode 100644 management/web/src/common/assets/styles/theme/dark-blue/index.scss create mode 100644 management/web/src/common/assets/styles/theme/dark-blue/variables.scss create mode 100644 management/web/src/common/assets/styles/theme/dark/index.scss create mode 100644 management/web/src/common/assets/styles/theme/dark/variables.scss create mode 100644 management/web/src/common/assets/styles/theme/register.scss create mode 100644 management/web/src/common/assets/styles/transition.scss create mode 100644 management/web/src/common/assets/styles/variables.css create mode 100644 management/web/src/common/assets/styles/view-transition.scss create mode 100644 management/web/src/common/assets/styles/vxe-table.css create mode 100644 management/web/src/common/assets/styles/vxe-table.scss create mode 100644 management/web/src/common/components/Notify/List.vue create mode 100644 management/web/src/common/components/Notify/data.ts create mode 100644 management/web/src/common/components/Notify/index.vue create mode 100644 management/web/src/common/components/Notify/type.ts create mode 100644 management/web/src/common/components/Screenfull/index.vue create mode 100644 management/web/src/common/components/SearchMenu/Footer.vue create mode 100644 management/web/src/common/components/SearchMenu/Modal.vue create mode 100644 management/web/src/common/components/SearchMenu/Result.vue create mode 100644 management/web/src/common/components/SearchMenu/index.vue create mode 100644 management/web/src/common/components/ThemeSwitch/index.vue create mode 100644 management/web/src/common/composables/useDevice.ts create mode 100644 management/web/src/common/composables/useFetchSelect.ts create mode 100644 management/web/src/common/composables/useFullscreenLoading.ts create mode 100644 management/web/src/common/composables/useGreyAndColorWeakness.ts create mode 100644 management/web/src/common/composables/useLayoutMode.ts create mode 100644 management/web/src/common/composables/usePagination.ts create mode 100644 management/web/src/common/composables/usePany.ts create mode 100644 management/web/src/common/composables/useRouteListener.ts create mode 100644 management/web/src/common/composables/useTheme.ts create mode 100644 management/web/src/common/composables/useTitle.ts create mode 100644 management/web/src/common/composables/useWatermark.ts create mode 100644 management/web/src/common/constants/app-key.ts create mode 100644 management/web/src/common/constants/cache-key.ts create mode 100644 management/web/src/common/utils/cache/cookies.ts create mode 100644 management/web/src/common/utils/cache/local-storage.ts create mode 100644 management/web/src/common/utils/css.ts create mode 100644 management/web/src/common/utils/datetime.ts create mode 100644 management/web/src/common/utils/permission.ts create mode 100644 management/web/src/common/utils/validate.ts create mode 100644 management/web/src/http/axios.ts create mode 100644 management/web/src/layouts/components/AppMain/index.vue create mode 100644 management/web/src/layouts/components/Breadcrumb/index.vue create mode 100644 management/web/src/layouts/components/Footer/index.vue create mode 100644 management/web/src/layouts/components/Hamburger/index.vue create mode 100644 management/web/src/layouts/components/Logo/index.vue create mode 100644 management/web/src/layouts/components/NavigationBar/index.vue create mode 100644 management/web/src/layouts/components/RightPanel/index.vue create mode 100644 management/web/src/layouts/components/Settings/SelectLayoutMode.vue create mode 100644 management/web/src/layouts/components/Settings/index.vue create mode 100644 management/web/src/layouts/components/Sidebar/Item.vue create mode 100644 management/web/src/layouts/components/Sidebar/Link.vue create mode 100644 management/web/src/layouts/components/Sidebar/index.vue create mode 100644 management/web/src/layouts/components/TagsView/ScrollPane.vue create mode 100644 management/web/src/layouts/components/TagsView/index.vue create mode 100644 management/web/src/layouts/components/index.ts create mode 100644 management/web/src/layouts/composables/useResize.ts create mode 100644 management/web/src/layouts/config.ts create mode 100644 management/web/src/layouts/index.vue create mode 100644 management/web/src/layouts/modes/LeftMode.vue create mode 100644 management/web/src/layouts/modes/LeftTopMode.vue create mode 100644 management/web/src/layouts/modes/TopMode.vue create mode 100644 management/web/src/main.ts create mode 100644 management/web/src/pages/dashboard/components/Admin.vue create mode 100644 management/web/src/pages/dashboard/components/Editor.vue create mode 100644 management/web/src/pages/dashboard/images/dashboard.svg create mode 100644 management/web/src/pages/dashboard/index.vue create mode 100644 management/web/src/pages/demo/composable-demo/apis/use-fetch-select.ts create mode 100644 management/web/src/pages/demo/composable-demo/apis/use-fullscreen-loading.ts create mode 100644 management/web/src/pages/demo/composable-demo/use-fetch-select.vue create mode 100644 management/web/src/pages/demo/composable-demo/use-fullscreen-loading.vue create mode 100644 management/web/src/pages/demo/composable-demo/use-watermark.vue create mode 100644 management/web/src/pages/demo/element-plus/index.vue create mode 100644 management/web/src/pages/demo/level2/index.vue create mode 100644 management/web/src/pages/demo/level2/level3/index.vue create mode 100644 management/web/src/pages/demo/permission/button-level.vue create mode 100644 management/web/src/pages/demo/permission/components/SwitchRoles.vue create mode 100644 management/web/src/pages/demo/permission/page-level.vue create mode 100644 management/web/src/pages/demo/unocss/index.vue create mode 100644 management/web/src/pages/demo/vxe-table/index.vue create mode 100644 management/web/src/pages/demo/vxe-table/tsx/RoleColumnSlots.tsx create mode 100644 management/web/src/pages/demo/vxe-table/tsx/StatusColumnSlots.tsx create mode 100644 management/web/src/pages/error/403.vue create mode 100644 management/web/src/pages/error/404.vue create mode 100644 management/web/src/pages/error/components/Layout.vue create mode 100644 management/web/src/pages/error/images/403.svg create mode 100644 management/web/src/pages/error/images/404.svg create mode 100644 management/web/src/pages/login/apis/index.ts create mode 100644 management/web/src/pages/login/apis/type.ts create mode 100644 management/web/src/pages/login/components/Owl.vue create mode 100644 management/web/src/pages/login/composables/useFocus.ts create mode 100644 management/web/src/pages/login/images/close-eyes.png create mode 100644 management/web/src/pages/login/images/face.png create mode 100644 management/web/src/pages/login/images/hand-down-left.png create mode 100644 management/web/src/pages/login/images/hand-down-right.png create mode 100644 management/web/src/pages/login/images/hand-up-left.png create mode 100644 management/web/src/pages/login/images/hand-up-right.png create mode 100644 management/web/src/pages/login/index.vue create mode 100644 management/web/src/pages/redirect/index.vue create mode 100644 management/web/src/pinia/index.ts create mode 100644 management/web/src/pinia/stores/app.ts create mode 100644 management/web/src/pinia/stores/permission.ts create mode 100644 management/web/src/pinia/stores/settings.ts create mode 100644 management/web/src/pinia/stores/tags-view.ts create mode 100644 management/web/src/pinia/stores/user.ts create mode 100644 management/web/src/plugins/element-plus-icons.ts create mode 100644 management/web/src/plugins/index.ts create mode 100644 management/web/src/plugins/permission-directive.ts create mode 100644 management/web/src/plugins/svg-icon.ts create mode 100644 management/web/src/plugins/vxe-table.ts create mode 100644 management/web/src/router/config.ts create mode 100644 management/web/src/router/guard.ts create mode 100644 management/web/src/router/helper.ts create mode 100644 management/web/src/router/index.ts create mode 100644 management/web/src/router/whitelist.ts create mode 100644 management/web/tests/components/Notify.test.ts create mode 100644 management/web/tests/demo.test.ts create mode 100644 management/web/tests/utils/validate.test.ts create mode 100644 management/web/tsconfig.json create mode 100644 management/web/types/api.d.ts create mode 100644 management/web/types/auto/auto-imports.d.ts create mode 100644 management/web/types/auto/components.d.ts create mode 100644 management/web/types/auto/svg-component-global.d.ts create mode 100644 management/web/types/auto/svg-component.d.ts create mode 100644 management/web/types/directives.d.ts create mode 100644 management/web/types/env.d.ts create mode 100644 management/web/types/vue-router.d.ts create mode 100644 management/web/uno.config.ts create mode 100644 management/web/vite.config.ts delete mode 100644 python_sql/add.json delete mode 100644 python_sql/add_sql_final.py delete mode 100644 python_sql/private.pem diff --git a/README.md b/README.md index 08e7ebc..9175942 100644 --- a/README.md +++ b/README.md @@ -9,33 +9,9 @@ Ragflow-Plus,该名字不是说比 Ragflow 项目牛的意思,而是对标 D ## 新增功能介绍 -### 一. 用户批量注册/批量加入团队 -隐藏了原本用户注册的功能,改为管理员通过后台批量注册,并加入管理员团队,可共享团队知识库及默认模型配置 - -使用方式: -1. python环境安装依赖: - -参考python版本:python == 3.10.16 -```python -pip install mysql-connector-python -pip install pycryptodomex -pip install werkzeug -``` - -2. 修改`python_sql\add.json`文件内容: - -- student_id 为 待添加用户学号 -- tenant_id 为 共享知识库的队长id,需要连接数据库查看 - -3. 执行批量插入操作: - -```python -python python_sql/add_sql_final.py -``` - -默认用户名为 `学号@xidian.cn` -默认密码为 `学号` +### 一. 用户后台管理系统 +移除原登陆页用户注册的通道,搭建用户后台管理系统,可对用户进行管理,包括用户注册、查询、删除、修改等功能。 ### 二. 优化对话显示 微调了对话界面的样式,使其观感更为友好 @@ -44,6 +20,9 @@ python python_sql/add_sql_final.py 新增文档撰写全新的交互方式,支持直接导出为 Word 文档 ## 使用方式 + +### 前端文件替换 + 1. 克隆项目 ```bash git clone https://github.com/zstar1003/ragflow-plus.git @@ -66,6 +45,8 @@ rm -rf /ragflow/web/dist docker cp dist ragflow-server:/ragflow/web/ ``` +### 管理系统运行 + ## Agent功能恢复 由于在我的应用场景中,不需要Agent功能,故隐藏了Agent按钮的入口,如需恢复Agent功能,可修改`web\src\layouts\components\header\index.tsx`,对以下内容取消注释: @@ -77,23 +58,32 @@ docker cp dist ragflow-server:/ragflow/web/ 同时可将排列样式进行重置,以还原原本的样式布局,修改`web\src\layouts\components\header\index.less`文件,替换为ragflow原始样式:`https://github.com/infiniflow/ragflow/blob/main/web/src/layouts/components/header/index.less` -## TODO +## Todo List -- [ ] 用户批量注册可视化后台管理 - -- [ ] 文档撰写插入图片 +- [x] 搭建用户后台管理 - [ ] 知识库批量上传解析 +- [ ] 文档撰写图表支持 + ## 交流群 如果有其它需求或问题建议,可加入交流群进行讨论 -![交流群.jpg](assets/group.jpg) - +
+ 交流群 +
## License 版权说明:本项目在 Ragflow 项目基础上进行二开,需要遵守 Ragflow 的开源协议,如下 This repository is available under the [Ragflow - Open Source License](LICENSE), which is essentially Apache 2.0 with a few additional restrictions. \ No newline at end of file + Open Source License](LICENSE), which is essentially Apache 2.0 with a few additional restrictions. + +## 鸣谢 + +本项目基于以下开源项目开发: + +- [ragflow](https://github.com/infiniflow/ragflow) + +- [v3-admin-vite](https://github.com/un-pany/v3-admin-vite) \ No newline at end of file diff --git a/management/Dockerfile b/management/Dockerfile new file mode 100644 index 0000000..358c027 --- /dev/null +++ b/management/Dockerfile @@ -0,0 +1,30 @@ +# 前端构建阶段 +FROM node:18 AS frontend-builder +WORKDIR /app/frontend +COPY web /app/frontend +# 安装 pnpm +RUN npm install -g pnpm +# 设置环境变量禁用交互式提示 +ENV CI=true +# 安装依赖并构建 +RUN pnpm i && pnpm build + +# 前端服务阶段 +FROM nginx:alpine AS frontend +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html +# 暴露前端端口 +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] + +# 后端构建阶段 +FROM python:3.10.16 AS backend +WORKDIR /app +COPY server/requirements.txt /app/ +# 安装依赖 +RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple +# 复制后端代码 +COPY server /app +# 暴露后端端口 +EXPOSE 5000 +CMD ["python", "app.py"] \ No newline at end of file diff --git a/management/docker-compose.yml b/management/docker-compose.yml new file mode 100644 index 0000000..e073099 --- /dev/null +++ b/management/docker-compose.yml @@ -0,0 +1,27 @@ +services: + frontend: + image: zstar1003/ragflowplus-management-web:v0.1.0 + build: + context: . + dockerfile: Dockerfile + target: frontend + ports: + - "8080:80" + depends_on: + - backend + environment: + - API_URL=http://backend:5000 + + backend: + image: zstar1003/ragflowplus-management-server:v0.1.0 + build: + context: . + dockerfile: Dockerfile + target: backend + ports: + - "5000:5000" + environment: + - FLASK_ENV=development + - CORS_ALLOWED_ORIGINS=http://localhost:8080,http://frontend + extra_hosts: + - "host.docker.internal:host-gateway" \ No newline at end of file diff --git a/management/nginx.conf b/management/nginx.conf new file mode 100644 index 0000000..e0db9a3 --- /dev/null +++ b/management/nginx.conf @@ -0,0 +1,13 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html; + try_files $uri $uri/ /index.html; + } + + location /v3-admin-vite/ { + alias /usr/share/nginx/html/; + try_files $uri $uri/ /index.html; + } +} \ No newline at end of file diff --git a/management/server/app.py b/management/server/app.py new file mode 100644 index 0000000..b72a63b --- /dev/null +++ b/management/server/app.py @@ -0,0 +1,90 @@ +from flask import Flask, jsonify, request +from flask_cors import CORS +import mysql.connector +import database + +app = Flask(__name__) +# 启用CORS,允许前端访问 +CORS(app, resources={r"/api/*": {"origins": "*"}}, supports_credentials=True) + +# 添加 v1 前缀 +@app.route('/api/v1/auth/login', methods=['POST']) +def login(): + # 实现登录逻辑 + return {"code": 0, "data": {"token": "your-token"}, "message": "登录成功"} + + +@app.route('/api/v1/users/me', methods=['GET']) +def get_current_user(): + return jsonify({ + "code": 0, + "data": { + "username": "admin", + "roles": ["admin"] + }, + "message": "获取用户信息成功" + }) + + +@app.route('/api/v1/users', methods=['GET']) +def get_users(): + """获取用户的API端点,支持分页和条件查询""" + try: + # 获取查询参数 + current_page = int(request.args.get('currentPage', 1)) + page_size = int(request.args.get('size', 10)) + username = request.args.get('username', '') + email = request.args.get('email', '') + + # 调用数据库函数获取分页和筛选后的用户数据 + users, total = database.get_users_with_pagination(current_page, page_size, username, email) + + # 返回符合前端期望格式的数据 + return jsonify({ + "code": 0, # 成功状态码 + "data": { + "list": users, + "total": total + }, + "message": "获取用户列表成功" + }) + except Exception as e: + # 错误处理 + return jsonify({ + "code": 500, + "message": f"获取用户列表失败: {str(e)}" + }), 500 + +@app.route('/api/v1/users/', methods=['DELETE']) +def delete_user(user_id): + """删除用户的API端点""" + database.delete_user(user_id) + return jsonify({ + "code": 0, + "message": f"用户 {user_id} 删除成功" + }) + +@app.route('/api/v1/users', methods=['POST']) +def create_user(): + """创建用户的API端点""" + data = request.json + # 创建用户 + database.create_user(user_data=data) + return jsonify({ + "code": 0, + "message": "用户创建成功" + }) + +@app.route('/api/v1/users/', methods=['PUT']) +def update_user(user_id): + """更新用户的API端点""" + data = request.json + user_id = data.get('id') + database.update_user(user_id=user_id, user_data=data) + return jsonify({ + "code": 0, + "message": f"用户 {user_id} 更新成功" + }) + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file diff --git a/management/server/database.py b/management/server/database.py new file mode 100644 index 0000000..09e93b3 --- /dev/null +++ b/management/server/database.py @@ -0,0 +1,269 @@ +import mysql.connector +from utils import generate_uuid, encrypt_password +from datetime import datetime +from tabulate import tabulate + +# 数据库连接配置 +db_config = { + "host": "host.docker.internal", + "port": 5455, + "user": "root", + "password": "infini_rag_flow", + "database": "rag_flow", +} + +def get_users_with_pagination(current_page, page_size, username='', email=''): + """查询用户信息,支持分页和条件筛选""" + try: + # 建立数据库连接 + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor(dictionary=True) + + # 构建WHERE子句和参数 + where_clauses = [] + params = [] + + if username: + where_clauses.append("nickname LIKE %s") + params.append(f"%{username}%") + + if email: + where_clauses.append("email LIKE %s") + params.append(f"%{email}%") + + # 组合WHERE子句 + where_sql = " AND ".join(where_clauses) if where_clauses else "1=1" + + # 查询总记录数 + count_sql = f"SELECT COUNT(*) as total FROM user WHERE {where_sql}" + cursor.execute(count_sql, params) + total = cursor.fetchone()['total'] + + # 计算分页偏移量 + offset = (current_page - 1) * page_size + + # 执行分页查询 + query = f""" + SELECT id, nickname, email, create_date, update_date, status, is_superuser + FROM user + WHERE {where_sql} + ORDER BY id DESC + LIMIT %s OFFSET %s + """ + cursor.execute(query, params + [page_size, offset]) + results = cursor.fetchall() + + # 关闭连接 + cursor.close() + conn.close() + + # 格式化结果 + formatted_users = [] + for user in results: + formatted_users.append({ + "id": user["id"], + "username": user["nickname"], + "email": user["email"], + "createTime": user["create_date"].strftime("%Y-%m-%d %H:%M:%S") if user["create_date"] else "", + "updateTime": user["update_date"].strftime("%Y-%m-%d %H:%M:%S") if user["update_date"] else "", + }) + + return formatted_users, total + + except mysql.connector.Error as err: + print(f"数据库错误: {err}") + return [], 0 + +def delete_user(user_id): + """删除指定ID的用户""" + try: + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor() + + # 删除 user 表中的用户记录 + query = "DELETE FROM user WHERE id = %s" + cursor.execute(query, (user_id,)) + + # 删除 user_tenant 表中的关联记录 + user_tenant_query = "DELETE FROM user_tenant WHERE user_id = %s" + cursor.execute(user_tenant_query, (user_id,)) + + # 删除 tenant 表中的关联记录 + tenant_query = "DELETE FROM tenant WHERE id = %s" + cursor.execute(tenant_query, (user_id,)) + + # 删除 tenant_llm 表中的关联记录 + tenant_llm_query = "DELETE FROM tenant_llm WHERE tenant_id = %s" + cursor.execute(tenant_llm_query, (user_id,)) + + conn.commit() + cursor.close() + conn.close() + + return True + except mysql.connector.Error as err: + print(f"删除用户错误: {err}") + return False + +def create_user(user_data): + """创建新用户,并加入最早用户的团队,并使用相同的模型配置""" + try: + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor(dictionary=True) + + # 查询最早创建的tenant配置 + query_earliest_tenant = """ + SELECT id, llm_id, embd_id, asr_id, img2txt_id, rerank_id, tts_id, parser_ids, credit + FROM tenant + WHERE create_time = (SELECT MIN(create_time) FROM tenant) + LIMIT 1 + """ + cursor.execute(query_earliest_tenant) + earliest_tenant = cursor.fetchone() + + # 查询最早创建的tenant配置 + query_earliest_tenant_llm = """ + SELECT llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens + FROM tenant_llm + WHERE create_time = (SELECT MIN(create_time) FROM tenant_llm) + LIMIT 1 + """ + cursor.execute(query_earliest_tenant_llm) + earliest_tenant_llm = cursor.fetchone() + + # 开始插入 + user_id = generate_uuid() + # 获取基本信息 + username = user_data.get("username") + email = user_data.get("email") + password = user_data.get("password") + # 加密密码 + encrypted_password = encrypt_password(password) + + current_datetime = datetime.now() + create_time = int(current_datetime.timestamp() * 1000) + current_date = current_datetime.strftime("%Y-%m-%d %H:%M:%S") + + # 插入用户表 + user_insert_query = """ + INSERT INTO user ( + id, create_time, create_date, update_time, update_date, access_token, + nickname, password, email, avatar, language, color_schema, timezone, + last_login_time, is_authenticated, is_active, is_anonymous, login_channel, + status, is_superuser + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, + %s, %s + ) + """ + user_data = ( + user_id, create_time, current_date, create_time, current_date, None, + username, encrypted_password, email, None, "Chinese", "Bright", "UTC+8 Asia/Shanghai", + current_date, 1, 1, 0, "password", + 1, 0 + ) + cursor.execute(user_insert_query, user_data) + + # 插入租户表 + tenant_insert_query = """ + INSERT INTO tenant ( + id, create_time, create_date, update_time, update_date, name, + public_key, llm_id, embd_id, asr_id, img2txt_id, rerank_id, tts_id, + parser_ids, credit, status + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, %s, %s, + %s, %s, %s + ) + """ + tenant_data = ( + user_id, create_time, current_date, create_time, current_date, username + "'s Kingdom", + None, str(earliest_tenant['llm_id']), str(earliest_tenant['embd_id']), + str(earliest_tenant['asr_id']), str(earliest_tenant['img2txt_id']), + str(earliest_tenant['rerank_id']), str(earliest_tenant['tts_id']), + str(earliest_tenant['parser_ids']), str(earliest_tenant['credit']), 1 + ) + cursor.execute(tenant_insert_query, tenant_data) + + # 插入用户租户关系表(owner角色) + user_tenant_insert_owner_query = """ + INSERT INTO user_tenant ( + id, create_time, create_date, update_time, update_date, user_id, + tenant_id, role, invited_by, status + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s + ) + """ + user_tenant_data_owner = ( + generate_uuid(), create_time, current_date, create_time, current_date, user_id, + user_id, "owner", user_id, 1 + ) + cursor.execute(user_tenant_insert_owner_query, user_tenant_data_owner) + + # 插入用户租户关系表(normal角色) + user_tenant_insert_normal_query = """ + INSERT INTO user_tenant ( + id, create_time, create_date, update_time, update_date, user_id, + tenant_id, role, invited_by, status + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s + ) + """ + user_tenant_data_normal = ( + generate_uuid(), create_time, current_date, create_time, current_date, user_id, + earliest_tenant['id'], "normal", earliest_tenant['id'], 1 + ) + cursor.execute(user_tenant_insert_normal_query, user_tenant_data_normal) + + # 插入租户LLM配置表 + tenant_llm_insert_query = """ + INSERT INTO tenant_llm ( + create_time, create_date, update_time, update_date, tenant_id, + llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens + ) VALUES ( + %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, %s, %s + ) + """ + tenant_llm_data = ( + create_time, current_date, create_time, current_date, user_id, + str(earliest_tenant_llm['llm_factory']), str(earliest_tenant_llm['model_type']), str(earliest_tenant_llm['llm_name']), + str(earliest_tenant_llm['api_key']), str(earliest_tenant_llm['api_base']), str(earliest_tenant_llm['max_tokens']), 0 + ) + cursor.execute(tenant_llm_insert_query, tenant_llm_data) + + conn.commit() + cursor.close() + conn.close() + + return True + except mysql.connector.Error as err: + print(f"创建用户错误: {err}") + return False + +def update_user(user_id, user_data): + """更新用户信息""" + try: + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor() + + query = """ + UPDATE user SET nickname = %s WHERE id = %s + """ + cursor.execute(query, ( + user_data.get("username"), + user_id + )) + conn.commit() + + cursor.close() + conn.close() + + return True + except mysql.connector.Error as err: + print(f"更新用户错误: {err}") + return False \ No newline at end of file diff --git a/management/server/requirements.txt b/management/server/requirements.txt new file mode 100644 index 0000000..d7dc9c1 --- /dev/null +++ b/management/server/requirements.txt @@ -0,0 +1,6 @@ +Flask==3.1.0 +flask_cors==5.0.1 +mysql-connector-python==9.2.0 +pycryptodomex==3.20.0 +tabulate==0.9.0 +Werkzeug==3.1.3 \ No newline at end of file diff --git a/management/server/utils.py b/management/server/utils.py new file mode 100644 index 0000000..8dcc70c --- /dev/null +++ b/management/server/utils.py @@ -0,0 +1,28 @@ +import uuid +import base64 +from datetime import datetime +from Cryptodome.PublicKey import RSA +from Cryptodome.Cipher import PKCS1_v1_5 +from werkzeug.security import generate_password_hash + + +# 生成随机的 UUID 作为 id +def generate_uuid(): + return str(uuid.uuid4()).replace("-", "") + +# RSA 加密密码 +def rsa_psw(password: str) -> str: + pub_key = """-----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB + -----END PUBLIC KEY-----""" + + rsa_key = RSA.import_key(pub_key) + cipher = PKCS1_v1_5.new(rsa_key) + encrypted_data = cipher.encrypt(base64.b64encode(password.encode())) + return base64.b64encode(encrypted_data).decode() + +# 加密密码 +def encrypt_password(raw_password: str) -> str: + base64_password = base64.b64encode(raw_password.encode()).decode() + encrypted_password = rsa_psw(base64_password) + return generate_password_hash(base64_password) \ No newline at end of file diff --git a/management/web/.editorconfig b/management/web/.editorconfig new file mode 100644 index 0000000..1104dd5 --- /dev/null +++ b/management/web/.editorconfig @@ -0,0 +1,24 @@ +# 配置项文档:https://editorconfig.org(修改配置后重启编辑器) + +## 告知 EditorConfig 插件,当前即是根文件 +root = true + +## 适用全部文件 +[*] +### 设置字符集 +charset = utf-8 +### 缩进风格 space | tab,建议 space +indent_style = space +### 缩进的空格数 +indent_size = 2 +### 换行符类型 lf | cr | crlf,一般都是设置为 lf +end_of_line = lf +### 是否在文件末尾插入空白行 +insert_final_newline = true +### 是否删除一行中的前后空格 +trim_trailing_whitespace = true + +## 适用 .md 文件 +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/management/web/.env b/management/web/.env new file mode 100644 index 0000000..4d97a03 --- /dev/null +++ b/management/web/.env @@ -0,0 +1,7 @@ +# 所有环境的环境变量(命名必须以 VITE_ 开头) + +## 项目标题 +VITE_APP_TITLE = Ragflow Plus + +## 路由模式 hash 或 html5 +VITE_ROUTER_HISTORY = hash diff --git a/management/web/.env.development b/management/web/.env.development new file mode 100644 index 0000000..fe768a9 --- /dev/null +++ b/management/web/.env.development @@ -0,0 +1,7 @@ +# 开发环境的环境变量(命名必须以 VITE_ 开头) + +## 后端接口地址(如果解决跨域问题采用反向代理就只需写相对路径) +VITE_BASE_URL = /api + +## 开发环境域名和静态资源公共路径(一般 / 或 ./ 都可以) +VITE_PUBLIC_PATH = / diff --git a/management/web/.env.production b/management/web/.env.production new file mode 100644 index 0000000..7e59a62 --- /dev/null +++ b/management/web/.env.production @@ -0,0 +1,7 @@ +# 生产环境的环境变量(命名必须以 VITE_ 开头) + +## 后端接口地址(如果解决跨域问题采用 CORS 就需要写绝对路径) +VITE_BASE_URL = http://localhost:5000 + +## 打包构建静态资源公共路径(例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下就需要填写 /v3-admin-vite/) +VITE_PUBLIC_PATH = /v3-admin-vite/ diff --git a/management/web/.env.staging b/management/web/.env.staging new file mode 100644 index 0000000..2134b2c --- /dev/null +++ b/management/web/.env.staging @@ -0,0 +1,7 @@ +# 预发布环境的环境变量(命名必须以 VITE_ 开头) + +## 后端接口地址(如果解决跨域问题采用 CORS 就需要写绝对路径) +VITE_BASE_URL = http://localhost:5000 + +## 打包构建静态资源公共路径(例如部署到 https://un-pany.github.io/ 域名下就需要填写 /) +VITE_PUBLIC_PATH = / diff --git a/management/web/.gitignore b/management/web/.gitignore new file mode 100644 index 0000000..bb4bd4f --- /dev/null +++ b/management/web/.gitignore @@ -0,0 +1,18 @@ +# Common +dist +node_modules +.eslintcache +vite.config.*.timestamp* + +# MacOS +.DS_Store + +# Local env files +*.local + +# Logs +*.log + +# Use the pnpm +package-lock.json +yarn.lock diff --git a/management/web/.npmrc b/management/web/.npmrc new file mode 100644 index 0000000..1db20f5 --- /dev/null +++ b/management/web/.npmrc @@ -0,0 +1,5 @@ +# China mirror of npm +registry = https://registry.npmmirror.com + +# 安装依赖时锁定版本号 +save-exact = true diff --git a/management/web/eslint.config.js b/management/web/eslint.config.js new file mode 100644 index 0000000..42c14df --- /dev/null +++ b/management/web/eslint.config.js @@ -0,0 +1,43 @@ +import antfu from "@antfu/eslint-config" + +// 更多自定义配置可查阅仓库:https://github.com/antfu/eslint-config +export default antfu( + { + // 使用外部格式化程序格式化 css、html、markdown 等文件 + formatters: true, + // 启用样式规则 + stylistic: { + // 缩进级别 + indent: 2, + // 引号风格 'single' | 'double' + quotes: "double", + // 是否启用分号 + semi: false + }, + // 忽略文件 + ignores: [] + }, + { + // 对所有文件都生效的规则 + rules: { + // vue + "vue/block-order": ["error", { order: ["script", "template", "style"] }], + "vue/attributes-order": "off", + // ts + "ts/no-use-before-define": "off", + // node + "node/prefer-global/process": "off", + // style + "style/comma-dangle": ["error", "never"], + "style/brace-style": ["error", "1tbs"], + // regexp + "regexp/no-unused-capturing-group": "off", + // other + "no-console": "off", + "no-debugger": "off", + "symbol-description": "off", + "antfu/if-newline": "off", + "unicorn/no-instanceof-builtins": "off" + } + } +) diff --git a/management/web/index.html b/management/web/index.html new file mode 100644 index 0000000..89002c2 --- /dev/null +++ b/management/web/index.html @@ -0,0 +1,17 @@ + + + + + + + + %VITE_APP_TITLE% + + + +
+
+
+ + + diff --git a/management/web/package.json b/management/web/package.json new file mode 100644 index 0000000..86b5289 --- /dev/null +++ b/management/web/package.json @@ -0,0 +1,64 @@ +{ + "name": "v3-admin-vite", + "type": "module", + "version": "5.0.0-beta.5", + "description": "A crafted admin template, built with Vue3, Vite, TypeScript, Element Plus, and more", + "author": "pany <939630029@qq.com> (https://github.com/pany-ang)", + "repository": "https://github.com/un-pany/v3-admin-vite", + "scripts": { + "dev": "vite", + "build:staging": "vue-tsc && vite build --mode staging", + "build": "vue-tsc && vite build", + "preview": "vite preview", + "lint": "eslint . --fix", + "prepare": "husky", + "test": "vitest" + }, + "dependencies": { + "@element-plus/icons-vue": "2.3.1", + "axios": "1.8.4", + "dayjs": "1.11.13", + "element-plus": "2.9.7", + "js-cookie": "3.0.5", + "lodash-es": "4.17.21", + "mitt": "3.0.1", + "normalize.css": "8.0.1", + "nprogress": "0.2.0", + "path-browserify": "1.0.1", + "path-to-regexp": "8.2.0", + "pinia": "3.0.1", + "screenfull": "6.0.2", + "vue": "3.5.13", + "vue-router": "4.5.0", + "vxe-table": "4.6.25" + }, + "devDependencies": { + "@antfu/eslint-config": "4.11.0", + "@types/js-cookie": "3.0.6", + "@types/lodash-es": "4.17.12", + "@types/node": "22.13.14", + "@types/nprogress": "0.2.3", + "@types/path-browserify": "1.0.3", + "@vitejs/plugin-vue": "5.2.3", + "@vitejs/plugin-vue-jsx": "4.1.2", + "@vue/test-utils": "2.4.6", + "eslint": "9.23.0", + "eslint-plugin-format": "1.0.1", + "happy-dom": "17.4.4", + "husky": "9.1.7", + "lint-staged": "15.5.0", + "sass": "1.78.0", + "typescript": "5.8.2", + "unocss": "66.1.0-beta.7", + "unplugin-auto-import": "19.1.2", + "unplugin-svg-component": "0.12.1", + "unplugin-vue-components": "28.4.1", + "vite": "6.2.3", + "vite-svg-loader": "5.1.0", + "vitest": "3.0.9", + "vue-tsc": "2.2.8" + }, + "lint-staged": { + "*": "eslint --fix" + } +} diff --git a/management/web/pnpm-lock.yaml b/management/web/pnpm-lock.yaml new file mode 100644 index 0000000..c12a07e --- /dev/null +++ b/management/web/pnpm-lock.yaml @@ -0,0 +1,7477 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@element-plus/icons-vue': + specifier: 2.3.1 + version: 2.3.1(vue@3.5.13(typescript@5.8.2)) + axios: + specifier: 1.8.4 + version: 1.8.4 + dayjs: + specifier: 1.11.13 + version: 1.11.13 + element-plus: + specifier: 2.9.7 + version: 2.9.7(vue@3.5.13(typescript@5.8.2)) + js-cookie: + specifier: 3.0.5 + version: 3.0.5 + lodash-es: + specifier: 4.17.21 + version: 4.17.21 + mitt: + specifier: 3.0.1 + version: 3.0.1 + normalize.css: + specifier: 8.0.1 + version: 8.0.1 + nprogress: + specifier: 0.2.0 + version: 0.2.0 + path-browserify: + specifier: 1.0.1 + version: 1.0.1 + path-to-regexp: + specifier: 8.2.0 + version: 8.2.0 + pinia: + specifier: 3.0.1 + version: 3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) + screenfull: + specifier: 6.0.2 + version: 6.0.2 + vue: + specifier: 3.5.13 + version: 3.5.13(typescript@5.8.2) + vue-router: + specifier: 4.5.0 + version: 4.5.0(vue@3.5.13(typescript@5.8.2)) + vxe-table: + specifier: 4.6.25 + version: 4.6.25(vue@3.5.13(typescript@5.8.2)) + devDependencies: + '@antfu/eslint-config': + specifier: 4.11.0 + version: 4.11.0(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0)) + '@types/js-cookie': + specifier: 3.0.6 + version: 3.0.6 + '@types/lodash-es': + specifier: 4.17.12 + version: 4.17.12 + '@types/node': + specifier: 22.13.14 + version: 22.13.14 + '@types/nprogress': + specifier: 0.2.3 + version: 0.2.3 + '@types/path-browserify': + specifier: 1.0.3 + version: 1.0.3 + '@vitejs/plugin-vue': + specifier: 5.2.3 + version: 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@vitejs/plugin-vue-jsx': + specifier: 4.1.2 + version: 4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@vue/test-utils': + specifier: 2.4.6 + version: 2.4.6 + eslint: + specifier: 9.23.0 + version: 9.23.0(jiti@2.4.2) + eslint-plugin-format: + specifier: 1.0.1 + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) + happy-dom: + specifier: 17.4.4 + version: 17.4.4 + husky: + specifier: 9.1.7 + version: 9.1.7 + lint-staged: + specifier: 15.5.0 + version: 15.5.0 + sass: + specifier: 1.78.0 + version: 1.78.0 + typescript: + specifier: 5.8.2 + version: 5.8.2 + unocss: + specifier: 66.1.0-beta.7 + version: 66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + unplugin-auto-import: + specifier: 19.1.2 + version: 19.1.2(@vueuse/core@9.13.0(vue@3.5.13(typescript@5.8.2))) + unplugin-svg-component: + specifier: 0.12.1 + version: 0.12.1 + unplugin-vue-components: + specifier: 28.4.1 + version: 28.4.1(@babel/parser@7.27.0)(vue@3.5.13(typescript@5.8.2)) + vite: + specifier: 6.2.3 + version: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + vite-svg-loader: + specifier: 5.1.0 + version: 5.1.0(vue@3.5.13(typescript@5.8.2)) + vitest: + specifier: 3.0.9 + version: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + vue-tsc: + specifier: 2.2.8 + version: 2.2.8(typescript@5.8.2) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/eslint-config@4.11.0': + resolution: {integrity: sha512-KMLIrZflEFsOEF/N0Xl8iVaheLTdgT3gAwXVzdG5Ng8ieNhBsRsaThnqI7of10kh6psSBLJ6SkNK+ZF98fQIXQ==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.19.0 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + + '@antfu/install-pkg@1.0.0': + resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@clack/core@0.4.1': + resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} + + '@clack/prompts@0.10.0': + resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + + '@dprint/formatter@0.3.0': + resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} + + '@dprint/markdown@0.17.8': + resolution: {integrity: sha512-ukHFOg+RpG284aPdIg7iPrCYmMs3Dqy43S1ejybnwlJoFiW02b+6Bbr5cfZKFRYNP3dKGM86BqHEnMzBOyLvvA==} + + '@dprint/toml@0.6.4': + resolution: {integrity: sha512-bZXIUjxr0LIuHWshZr/5mtUkOrnh0NKVZEF6ACojW5z7zkJu7s9sV2mMXm8XQDqN4cJzdHYUYzUyEGdfciaLJA==} + + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + + '@emnapi/core@1.3.1': + resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + + '@es-joy/jsdoccomment@0.50.0': + resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} + engines: {node: '>=18'} + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-plugin-eslint-comments@4.4.1': + resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.7': + resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@6.3.0': + resolution: {integrity: sha512-8rj7wmuP5hwXZ0HWoad+WL9nftpN373bCCQz9QL6sA+clZiz7et8Pk0yDAKeo//xLlPONKQ6wCpjkOHCLkbYUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@napi-rs/wasm-runtime@0.2.7': + resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.2': + resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pkgr/core@0.2.0': + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@quansync/fs@0.1.1': + resolution: {integrity: sha512-sx8J1O/+j2lqs8MvsEz6rs/6UAUpCb4fu7C6EqtMqzbS3CmqLkTDTOMK+DrWukvyUuHzl8DhMjfNJzQDTqfGJg==} + engines: {node: '>=20.18.0'} + + '@resvg/resvg-js-android-arm-eabi@2.6.2': + resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@resvg/resvg-js-android-arm64@2.6.2': + resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@resvg/resvg-js-darwin-arm64@2.6.2': + resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@resvg/resvg-js-darwin-x64@2.6.2': + resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': + resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@resvg/resvg-js-linux-arm64-gnu@2.6.2': + resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@resvg/resvg-js-linux-arm64-musl@2.6.2': + resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@resvg/resvg-js-linux-x64-gnu@2.6.2': + resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@resvg/resvg-js-linux-x64-musl@2.6.2': + resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@resvg/resvg-js-win32-arm64-msvc@2.6.2': + resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@resvg/resvg-js-win32-ia32-msvc@2.6.2': + resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@resvg/resvg-js-win32-x64-msvc@2.6.2': + resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@resvg/resvg-js@2.6.2': + resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} + engines: {node: '>= 10'} + + '@rollup/rollup-android-arm-eabi@4.37.0': + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.37.0': + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.37.0': + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.37.0': + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.37.0': + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.37.0': + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.37.0': + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.37.0': + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.37.0': + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.37.0': + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.37.0': + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.37.0': + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.37.0': + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.37.0': + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.37.0': + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + cpu: [x64] + os: [win32] + + '@stylistic/eslint-plugin@4.2.0': + resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.13.14': + resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + + '@types/path-browserify@1.0.3': + resolution: {integrity: sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@typescript-eslint/eslint-plugin@8.28.0': + resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.28.0': + resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.28.0': + resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.28.0': + resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.28.0': + resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.28.0': + resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.28.0': + resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.28.0': + resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@unocss/astro@66.1.0-beta.7': + resolution: {integrity: sha512-cqimcWi/JNwNIMFHi3MCWUlF64y867AQmXd1/L3ZpGwb45EdYY2T7RsTsFwh4POdDQT1GRKwpAeYObOs8DhExQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@66.1.0-beta.7': + resolution: {integrity: sha512-fRof8VrgH77Ig/favY6bVjDi1OhsJINsNw6jslgKxuaOR3oiJOe9tprsNWIAl4W2/NZq3RMBpjErDBvGCA4UtA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@66.1.0-beta.7': + resolution: {integrity: sha512-4FILwDExyRgBmZpky9OyJpgjHetCLUzythNhuU6wxBD+6xyfa8aZSrtC27bcMRbjLweXMKFVYk49bSkajmUWMw==} + engines: {node: '>=14'} + + '@unocss/core@66.1.0-beta.7': + resolution: {integrity: sha512-l1/r+Jd9TbsRqR/geEdIV/Erzvs26GitTtMVsGcJfuaK1/WWOLtbSHRUDQAB/UpcOOWvuNuAv4UWsXX9Z0DFmw==} + + '@unocss/extractor-arbitrary-variants@66.1.0-beta.7': + resolution: {integrity: sha512-LD8W9PlpHnFmuynI+TJzdE5z9OKY/tVaagY/Ak1mICFEWveH3jFuN13KH2jaI3/V2KaTwkcY/8tGQJXv8dKWAw==} + + '@unocss/inspector@66.1.0-beta.7': + resolution: {integrity: sha512-kyldOXJKv04ctQWRjThQ20XIHsLCAv+IFPK3keltT5krs/BtuwZ6HjHViCRwtoAd6h96svnzUVmuUP+QxM15bQ==} + + '@unocss/postcss@66.1.0-beta.7': + resolution: {integrity: sha512-5Bfbl0gzAXKD4Orztmx4/zr2wRAwHMEFev5Jfsv9Ao4nfkpmjWbb7Ro56UPeocqXOYbcceZgIluh2xFM48/woA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@66.1.0-beta.7': + resolution: {integrity: sha512-WAighG842BQCjh8JS0O5uckxL7s+uS5pScYH8Ilx9KaJKIgLfMim76BZg4jRPlZ4gB0UjToqdNtOPH0aZ/mCuA==} + + '@unocss/preset-icons@66.1.0-beta.7': + resolution: {integrity: sha512-KcPpFRytoVigVhD7UKk7n9Qz/gIMK3tRY6DL6tOY0V6WcNmZ/8EVgH4rQRbiTC6T318pQh3k9DgX8HGjwNXYVA==} + + '@unocss/preset-mini@66.1.0-beta.7': + resolution: {integrity: sha512-5v9RNFTk2OMLbE45JVoYA0HtZKCDCI3j7uRAcuRLVP3O/yAd9JlP/b8ou3wvtgxHTXFEgk6Pt8dFDKPadA3Hrw==} + + '@unocss/preset-tagify@66.1.0-beta.7': + resolution: {integrity: sha512-8eJLHiyfzwfKjqV4sIP+158h6RSTwuQ4AOC8UZij0AketU9bhFIyfOzgvFALiZBo71LFFDe1gSliZpK/eGan2g==} + + '@unocss/preset-typography@66.1.0-beta.7': + resolution: {integrity: sha512-ouYVaQFndrH2bz1Pkc+knpxAF7o8+Gma9DEW6OraduXVZFr4NXtzM08O9D0wepr6ZkQbtMj3mub2L2P/0R646w==} + + '@unocss/preset-uno@66.1.0-beta.7': + resolution: {integrity: sha512-0St/Tgh+HJyXmQIuZlvZrVHQotDpNDAlJnqs1IQs9h+8VEjeIXmrZazcMmqiWBpBb7GNDTsqpbeSfmoiBB8XAw==} + + '@unocss/preset-web-fonts@66.1.0-beta.7': + resolution: {integrity: sha512-2ZTUhV1qGmBo38ZIIdxShqxrTww4qaFE0cLMT7pem6meBO6Wp5eux5fndWvaaHh1rRcbDUadsiBEzNDknm1AYg==} + + '@unocss/preset-wind3@66.1.0-beta.7': + resolution: {integrity: sha512-JgiHl2L0J6VdmowGk45WB9NLYxO1tTQpr6GspMyhMz63pkcqjJtP5g8JfeIw5G0uwfWhoGubqG3RxKKaWHsoyg==} + + '@unocss/preset-wind4@66.1.0-beta.7': + resolution: {integrity: sha512-R5PATx3onKKkawHOhwFRZpbRfQbQg1bOZjitIJR3/VsDELYo1abhIdCe48tD/c2QbYPiG5JJFVbv//RiQqK7TA==} + + '@unocss/preset-wind@66.1.0-beta.7': + resolution: {integrity: sha512-bBZrsq2znTCuHrXY9s8Q5Nsm6zWx3YaRSU7HF/nnA1OFErANz4ZqGvZOT72JdOYyFIzCFjrkRsWpm+6zYZfEwg==} + + '@unocss/reset@66.1.0-beta.7': + resolution: {integrity: sha512-6GAvIfcuEGkx3rryIHWaF6Uwh0QZJYJTmDog/88X2He8v1yGR2RfrUSrrYUf8KfmLQYSZ/u7WazLwJTVmpvjaQ==} + + '@unocss/rule-utils@66.1.0-beta.7': + resolution: {integrity: sha512-oJ5lcHRgN1aabsszkBXoiYp0G6LLM011BJoAEfKOeRZ14FGFlg0zuOi/h7aKlVuIvBt6q8BWosJLlZSAQnNypg==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@66.1.0-beta.7': + resolution: {integrity: sha512-4d5XqNmTW5HRIsrmTCEde5owor0jRfUIo0kDIkrCzmCQPkOPuZ0YSmtFWdiwZHGQ6P9XjITpUIGRkGuG88YQzQ==} + + '@unocss/transformer-compile-class@66.1.0-beta.7': + resolution: {integrity: sha512-QuK8KQfsV2Ak3S5vhTlvLUOMBW98hJ8LDUt8AUgPu+OyhW4VE61wGzfStRYR3UCZXHob70Efd6VOuyuHE/yKcg==} + + '@unocss/transformer-directives@66.1.0-beta.7': + resolution: {integrity: sha512-R3mLIcIjitsrVKvkrVPTUwPzZAV3S5Ka4X3PXLihq9gdRfl8kZVOCxXjSojdcwhCF5nggHDt2WD0ZAoFxG4zeA==} + + '@unocss/transformer-variant-group@66.1.0-beta.7': + resolution: {integrity: sha512-4ECJ2dAcl0pW1kIHpAwpPc8qOZ2OJOwiRp8TJrQdK+sLl2XgHci0ERiSr1tED6BvIP9Mp4w2iJ3TtMWiGC4gXg==} + + '@unocss/vite@66.1.0-beta.7': + resolution: {integrity: sha512-7dDdFdaO6Mz7xTd/jZYqe8NkBn4CjJFN7uPK9xLLZEPNFT6anOkTv2UB9qU5lb4NcHFr5dyCVrRtqb0X4rmOMQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + + '@unrs/resolver-binding-darwin-arm64@1.3.2': + resolution: {integrity: sha512-ddnlXgRi0Fog5+7U5Q1qY62wl95Q1lB4tXQX1UIA9YHmRCHN2twaQW0/4tDVGCvTVEU3xEayU7VemEr7GcBYUw==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.3.2': + resolution: {integrity: sha512-tnl9xoEeg503jis+LW5cuq4hyLGQyqaoBL8VdPSqcewo/FL1C8POHbzl+AL25TidWYJD+R6bGUTE381kA1sT9w==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.3.2': + resolution: {integrity: sha512-zyPn9LFCCjhKPeCtECZaiMUgkYN/VpLb4a9Xv7QriJmTaQxsuDtXqOHifrzUXIhorJTyS+5MOKDuNL0X9I4EHA==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.2': + resolution: {integrity: sha512-UWx56Wh59Ro69fe+Wfvld4E1n9KG0e3zeouWLn8eSasyi/yVH/7ZW3CLTVFQ81oMKSpXwr5u6RpzttDXZKiO4g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.2': + resolution: {integrity: sha512-VYGQXsOEJtfaoY2fOm8Z9ii5idFaHFYlrq3yMFZPaFKo8ufOXYm8hnfru7qetbM9MX116iWaPC0ZX5sK+1Dr+g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.2': + resolution: {integrity: sha512-3zP420zxJfYPD1rGp2/OTIBxF8E3+/6VqCG+DEO6kkDgBiloa7Y8pw1o7N9BfgAC+VC8FPZsFXhV2lpx+lLRMQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.3.2': + resolution: {integrity: sha512-ZWjSleUgr88H4Kei7yT4PlPqySTuWN1OYDDcdbmMCtLWFly3ed+rkrcCb3gvqXdDbYrGOtzv3g2qPEN+WWNv5Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.2': + resolution: {integrity: sha512-p+5OvYJ2UOlpjes3WfBlxyvQok2u26hLyPxLFHkYlfzhZW0juhvBf/tvewz1LDFe30M7zL9cF4OOO5dcvtk+cw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.2': + resolution: {integrity: sha512-yweY7I6SqNn3kvj6vE4PQRo7j8Oz6+NiUhmgciBNAUOuI3Jq0bnW29hbHJdxZRSN1kYkQnSkbbA1tT8VnK816w==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.3.2': + resolution: {integrity: sha512-fNIvtzJcGN9hzWTIayrTSk2+KHQrqKbbY+I88xMVMOFV9t4AXha4veJdKaIuuks+2JNr6GuuNdsL7+exywZ32w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.3.2': + resolution: {integrity: sha512-OaFEw8WAjiwBGxutQgkWhoAGB5BQqZJ8Gjt/mW+m6DWNjimcxU22uWCuEtfw1CIwLlKPOzsgH0429fWmZcTGkg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-wasm32-wasi@1.3.2': + resolution: {integrity: sha512-u+sumtO7M0AGQ9bNQrF4BHNpUyxo23FM/yXZfmVAicTQ+mXtG06O7pm5zQUw3Mr4jRs2I84uh4O0hd8bdouuvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.2': + resolution: {integrity: sha512-ZAJKy95vmDIHsRFuPNqPQRON8r2mSMf3p9DoX+OMOhvu2c8OXGg8MvhGRf3PNg45ozRrPdXDnngURKgaFfpGoQ==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.2': + resolution: {integrity: sha512-nQG4YFAS2BLoKVQFK/FrWJvFATI5DQUWQrcPcsWG9Ve5BLLHZuPOrJ2SpAJwLXQrRv6XHSFAYGI8wQpBg/CiFA==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.3.2': + resolution: {integrity: sha512-XBWpUP0mHya6yGBwNefhyEa6V7HgYKCxEAY4qhTm/PcAQyBPNmjj97VZJOJkVdUsyuuii7xmq0pXWX/c2aToHQ==} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-vue-jsx@4.1.2': + resolution: {integrity: sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.2.3': + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.1.38': + resolution: {integrity: sha512-KcOTZyVz8RiM5HyriiDVrP1CyBGuhRxle+lBsmSs6NTJEO/8dKVAq+f5vQzHj1/Kc7bYXSDO6yBe62Zx0t5iaw==} + peerDependencies: + '@typescript-eslint/utils': ^8.24.0 + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + + '@volar/language-core@2.4.12': + resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} + + '@volar/source-map@2.4.12': + resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==} + + '@volar/typescript@2.4.12': + resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==} + + '@vue/babel-helper-vue-transform-on@1.4.0': + resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==} + + '@vue/babel-plugin-jsx@1.4.0': + resolution: {integrity: sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.4.0': + resolution: {integrity: sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.2': + resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + + '@vue/devtools-kit@7.7.2': + resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} + + '@vue/devtools-shared@7.7.2': + resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} + + '@vue/language-core@2.2.8': + resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vue/test-utils@2.4.6': + resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + alien-signals@1.0.8: + resolution: {integrity: sha512-5Tnk+Q3E7b4NgTgxAyoggQHeEzUicxgiZhcFvBQhM4catV+wFDTmoHPectL7FL5YzkCjz4zhB/y00Q7n3vwVGQ==} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + builtin-modules@4.0.0: + resolution: {integrity: sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==} + engines: {node: '>=18.20'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.1: + resolution: {integrity: sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-selector-parser@1.4.1: + resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + 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'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + 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'} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom-zindex@1.0.6: + resolution: {integrity: sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.126: + resolution: {integrity: sha512-AtH1uLcTC72LA4vfYcEJJkrMk/MY/X0ub8Hv7QGAePW2JkeUFHEL/QfS4J77R6M87Sss8O0OcqReSaN1bpyA+Q==} + + element-plus@2.9.7: + resolution: {integrity: sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==} + peerDependencies: + vue: ^3.2.0 + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.4: + resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@2.0.1: + resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} + + eslint-formatting-reporter@0.0.0: + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} + peerDependencies: + eslint: '>=8.40.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' + + eslint-parser-plain@0.1.1: + resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==} + + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@3.2.0: + resolution: {integrity: sha512-PSDOB9k7Wd57pp4HD/l3C1D93pKX8/wQo0kWDI4q6/UpgrfMTyNsavklipgiZqbXl1+VBABY1buCcQE5LDpg5g==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-format@1.0.1: + resolution: {integrity: sha512-Tdns+CDjS+m7QrM85wwRi2yLae88XiWVdIOXjp9mDII0pmTBQlczPCmjpKnjiUIY3yPZNLqb5Ms/A/JXcBF2Dw==} + peerDependencies: + eslint: ^8.40.0 || ^9.0.0 + + eslint-plugin-import-x@4.9.3: + resolution: {integrity: sha512-NrPUarxpFzGpQVXdVWkGttDD8WIxBuM/dRNw5kKFxrlGdjAJ3l8ma0LK5hsK5Qp79GBGM+HY1zYVbHqateTklA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.6.9: + resolution: {integrity: sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.20.0: + resolution: {integrity: sha512-FRgCn9Hzk5eKboCbVMrr9QrhM0eO4G+WKH8IFXoaeqhM/2kuWzbStJn4kkr0VWL8J5H8RYZF+Aoam1vlBaZVkw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.17.0: + resolution: {integrity: sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.10.1: + resolution: {integrity: sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-plugin-pnpm@0.3.1: + resolution: {integrity: sha512-vi5iHoELIAlBbX4AW8ZGzU3tUnfxuXhC/NKo3qRcI5o9igbz6zJUqSlQ03bPeMqWIGTPatZnbWsNR1RnlNERNQ==} + peerDependencies: + eslint: ^9.0.0 + + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@57.0.0: + resolution: {integrity: sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=9.20.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@10.0.0: + resolution: {integrity: sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + + eslint-plugin-yml@1.17.0: + resolution: {integrity: sha512-Q3LXFRnNpGYAK/PM0BY1Xs0IY1xTLfM0kC986nNQkx1l8tOGz+YS50N6wXkAJkrBpeUN9OxEMB7QJ+9MTDAqIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + engines: {node: '>=12.0.0'} + + exsolve@1.0.4: + resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.0.0: + resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + happy-dom@17.4.4: + resolution: {integrity: sha512-/Pb0ctk3HTZ5xEL3BZ0hK1AqDSAUuRQitOmROPHhfUYEWpmTImwfD8vFDGADmMAX0JYgbcgxWoLFKtsWhcpuVA==} + engines: {node: '>=18.0.0'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@1.0.0: + resolution: {integrity: sha512-sCO7uaLVhRJ25vz1o8s9IFM3nVS4DkuQnyjMwiQPKvQuBYBDmb8H7zx8ki7nVh4HJQOdVWebyvLE0qt+clruxA==} + engines: {node: '>=18'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@4.0.0: + resolution: {integrity: sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==} + engines: {node: '>=18.20'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lint-staged@15.5.0: + resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + + normalize.css@8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports@2.2.1: + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} + engines: {node: '>= 18'} + + parse-json@8.2.0: + resolution: {integrity: sha512-eONBZy4hm2AgxjNFd8a4nyDJnzUAH0g34xSQAwWEVGCjdZ4ZL7dKZBfq267GWP/JaS9zW62Xs2FeAdDvpHHJGQ==} + engines: {node: '>=18'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pinia@3.0.1: + resolution: {integrity: sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.1.0: + resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pnpm-workspace-yaml@0.3.1: + resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + prettysize@2.0.0: + resolution: {integrity: sha512-VVtxR7sOh0VsG8o06Ttq5TrI1aiZKmC+ClSn4eBPaNf4SHr5lzbYW+kYGX3HocBL/MfpVrRfFZ9V3vCbLaiplg==} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + sass@1.78.0: + resolution: {integrity: sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + screenfull@6.0.2: + resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==} + engines: {node: ^14.13.1 || >=16.0.0} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + 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' + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-sprite@2.0.4: + resolution: {integrity: sha512-kjDoATgr4k6tdtfQczpkbuFW6RE7tPUPe/rbRd1n2NV92kdwaXEZMIxJqAZfMGOMfU/Kp1u89SUYsfHCbAvVHg==} + engines: {node: '>=12'} + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + synckit@0.10.3: + resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@4.38.0: + resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} + engines: {node: '>=16'} + + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + unconfig@7.3.1: + resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unimport@4.1.2: + resolution: {integrity: sha512-oVUL7PSlyVV3QRhsdcyYEMaDX8HJyS/CnUonEJTYA3//bWO+o/4gG8F7auGWWWkrrxBQBYOO8DKe+C53ktpRXw==} + engines: {node: '>=18.12.0'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + unocss@66.1.0-beta.7: + resolution: {integrity: sha512-LFS45xWUOfu1+4EaFlSvpcXEJ6ZYwZ3HMmQpgKRvMmp6WAcv+WQEgvgM6Y/ar8TIFBpXwr5fvSM/OEXesqX7Ng==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 66.1.0-beta.7 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unplugin-auto-import@19.1.2: + resolution: {integrity: sha512-EkxNIJm4ZPYtV7rRaPBKnsscgTaifIZNrJF5DkMffTxkUOJOlJuKVypA6YBSBOjzPJDTFPjfVmCQPoBuOO+YYQ==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-svg-component@0.12.1: + resolution: {integrity: sha512-/K9I8+rsChiFOQgwL7FxiKqqUl8U/wozGC2sCdJL28EVo4dAu2IfZDlZg5dSKv65Gii4b8Gpj8K+ZkHTWnKyFg==} + + unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} + + unplugin-vue-components@28.4.1: + resolution: {integrity: sha512-niGSc0vJD9ueAnsqcfAldmtpkppZ09B6p2G1dL7X5S8KPdgbk1P+txPwaaDCe7N+eZh2VG1aAypLXkuJs3OSUg==} + 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 + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unplugin@2.2.2: + resolution: {integrity: sha512-Qp+iiD+qCRnUek+nDoYvtWX7tfnYyXsrOnJ452FRTgOyKmTM7TUJ3l+PLPJOOWPTUyKISKp4isC5JJPSXUjGgw==} + engines: {node: '>=18.12.0'} + + unrs-resolver@1.3.2: + resolution: {integrity: sha512-ZKQBC351Ubw0PY8xWhneIfb6dygTQeUHtCcNGd0QB618zabD/WbFMYdRyJ7xeVT+6G82K5v/oyZO0QSHFtbIuw==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite-svg-loader@5.1.0: + resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==} + peerDependencies: + vue: '>=3.2.13' + + vite@6.2.3: + resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-component-type-helpers@2.2.8: + resolution: {integrity: sha512-4bjIsC284coDO9om4HPA62M7wfsTvcmZyzdfR0aUlFXqq4tXxM1APyXpNVxPC8QazKw9OhmZNHBVDA6ODaZsrA==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@10.1.1: + resolution: {integrity: sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + vue-flow-layout@0.1.1: + resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} + peerDependencies: + vue: ^3.4.37 + + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@2.2.8: + resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vxe-table@4.6.25: + resolution: {integrity: sha512-rFhGh8w+420cdnIasQKisiKagz9F/iNieB/z6v0j4GcsMfGHEmSJ72YrHcXogQh4wNlCzKVfb7rl7nREL5eIOg==} + peerDependencies: + vue: ^3.2.28 + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.17.0: + resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} + engines: {node: '>= 12.0.0'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xe-utils@3.7.4: + resolution: {integrity: sha512-9yuCHLOU+og4OEkPWWtzrYk1Zt1hgN66U/NCJ0+vYJSx1MplBtoQRz8aEA+2RmCr3leLru98vQxNpw/vJsu/sg==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xpath@0.0.34: + resolution: {integrity: sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==} + engines: {node: '>=0.6.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-eslint-parser@1.3.0: + resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/eslint-config@4.11.0(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))': + dependencies: + '@antfu/install-pkg': 1.0.0 + '@clack/prompts': 0.10.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint/markdown': 6.3.0 + '@stylistic/eslint-plugin': 4.2.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@vitest/eslint-plugin': 1.1.38(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0)) + ansis: 3.17.0 + cac: 6.7.14 + eslint: 9.23.0(jiti@2.4.2) + eslint-config-flat-gitignore: 2.1.0(eslint@9.23.0(jiti@2.4.2)) + eslint-flat-config-utils: 2.0.1 + eslint-merge-processors: 2.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-antfu: 3.1.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-command: 3.2.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.9.3(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint-plugin-jsdoc: 50.6.9(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.20.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-n: 17.17.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.10.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint-plugin-pnpm: 0.3.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.7.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-toml: 0.12.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-unicorn: 57.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-vue: 10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))) + eslint-plugin-yml: 1.17.0(eslint@9.23.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.23.0(jiti@2.4.2)) + globals: 16.0.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 1.1.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + yaml-eslint-parser: 1.3.0 + optionalDependencies: + eslint-plugin-format: 1.0.1(eslint@9.23.0(jiti@2.4.2)) + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.0.0': + dependencies: + package-manager-detector: 0.2.11 + tinyexec: 0.3.2 + + '@antfu/utils@8.1.1': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-compilation-targets@7.27.0': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.27.0': + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@clack/core@0.4.1': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.10.0': + dependencies: + '@clack/core': 0.4.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@colors/colors@1.6.0': {} + + '@ctrl/tinycolor@3.6.1': {} + + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@dprint/formatter@0.3.0': {} + + '@dprint/markdown@0.17.8': {} + + '@dprint/toml@0.6.4': {} + + '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.8.2))': + dependencies: + vue: 3.5.13(typescript@5.8.2) + + '@emnapi/core@1.3.1': + dependencies: + '@emnapi/wasi-threads': 1.0.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.50.0': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + '@typescript-eslint/types': 8.28.0 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.25.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.25.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.25.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.25.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.25.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.25.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.25.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.25.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.25.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.25.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.25.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.25.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.25.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.25.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.25.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.25.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.25.1': + optional: true + + '@esbuild/netbsd-arm64@0.25.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.25.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.25.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.25.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.25.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.25.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.25.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.25.1': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.23.0(jiti@2.4.2))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': + dependencies: + eslint: 9.23.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.2.7(eslint@9.23.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.23.0(jiti@2.4.2) + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.0': {} + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.23.0': {} + + '@eslint/markdown@6.3.0': + dependencies: + '@eslint/core': 0.10.0 + '@eslint/plugin-kit': 0.2.7 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/utils@0.2.9': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.0.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.0 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@napi-rs/wasm-runtime@0.2.7': + dependencies: + '@emnapi/core': 1.3.1 + '@emnapi/runtime': 1.3.1 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@one-ini/wasm@0.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.2': {} + + '@pkgr/core@0.2.0': {} + + '@polka/url@1.0.0-next.28': {} + + '@quansync/fs@0.1.1': + dependencies: + quansync: 0.2.10 + + '@resvg/resvg-js-android-arm-eabi@2.6.2': + optional: true + + '@resvg/resvg-js-android-arm64@2.6.2': + optional: true + + '@resvg/resvg-js-darwin-arm64@2.6.2': + optional: true + + '@resvg/resvg-js-darwin-x64@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm64-gnu@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm64-musl@2.6.2': + optional: true + + '@resvg/resvg-js-linux-x64-gnu@2.6.2': + optional: true + + '@resvg/resvg-js-linux-x64-musl@2.6.2': + optional: true + + '@resvg/resvg-js-win32-arm64-msvc@2.6.2': + optional: true + + '@resvg/resvg-js-win32-ia32-msvc@2.6.2': + optional: true + + '@resvg/resvg-js-win32-x64-msvc@2.6.2': + optional: true + + '@resvg/resvg-js@2.6.2': + optionalDependencies: + '@resvg/resvg-js-android-arm-eabi': 2.6.2 + '@resvg/resvg-js-android-arm64': 2.6.2 + '@resvg/resvg-js-darwin-arm64': 2.6.2 + '@resvg/resvg-js-darwin-x64': 2.6.2 + '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2 + '@resvg/resvg-js-linux-arm64-gnu': 2.6.2 + '@resvg/resvg-js-linux-arm64-musl': 2.6.2 + '@resvg/resvg-js-linux-x64-gnu': 2.6.2 + '@resvg/resvg-js-linux-x64-musl': 2.6.2 + '@resvg/resvg-js-win32-arm64-msvc': 2.6.2 + '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 + '@resvg/resvg-js-win32-x64-msvc': 2.6.2 + + '@rollup/rollup-android-arm-eabi@4.37.0': + optional: true + + '@rollup/rollup-android-arm64@4.37.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.37.0': + optional: true + + '@rollup/rollup-darwin-x64@4.37.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.37.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.37.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.37.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.37.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.37.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.37.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.37.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.37.0': + optional: true + + '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@sxzz/popperjs-es@2.11.7': {} + + '@trysound/sax@0.2.0': {} + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/doctrine@0.0.9': {} + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.6': {} + + '@types/estree@1.0.7': {} + + '@types/js-cookie@3.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.16 + + '@types/lodash@4.17.16': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@22.13.14': + dependencies: + undici-types: 6.20.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/nprogress@0.2.3': {} + + '@types/path-browserify@1.0.3': {} + + '@types/triple-beam@1.3.5': {} + + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.16': {} + + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 + eslint: 9.23.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.28.0': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + + '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.28.0': {} + + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.28.0': + dependencies: + '@typescript-eslint/types': 8.28.0 + eslint-visitor-keys: 4.2.0 + + '@unocss/astro@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/reset': 66.1.0-beta.7 + '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + optionalDependencies: + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - vue + + '@unocss/cli@66.1.0-beta.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.1.0-beta.7 + '@unocss/core': 66.1.0-beta.7 + '@unocss/preset-uno': 66.1.0-beta.7 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.17 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.12 + unplugin-utils: 0.2.4 + + '@unocss/config@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + unconfig: 7.3.1 + + '@unocss/core@66.1.0-beta.7': {} + + '@unocss/extractor-arbitrary-variants@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/inspector@66.1.0-beta.7(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.1 + vue-flow-layout: 0.1.1(vue@3.5.13(typescript@5.8.2)) + transitivePeerDependencies: + - vue + + '@unocss/postcss@66.1.0-beta.7(postcss@8.5.3)': + dependencies: + '@unocss/config': 66.1.0-beta.7 + '@unocss/core': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + css-tree: 3.1.0 + postcss: 8.5.3 + tinyglobby: 0.2.12 + + '@unocss/preset-attributify@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/preset-icons@66.1.0-beta.7': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 66.1.0-beta.7 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/extractor-arbitrary-variants': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + + '@unocss/preset-tagify@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/preset-typography@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/preset-mini': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + + '@unocss/preset-uno@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/preset-wind3': 66.1.0-beta.7 + + '@unocss/preset-web-fonts@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + ofetch: 1.4.1 + + '@unocss/preset-wind3@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/preset-mini': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + + '@unocss/preset-wind4@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/extractor-arbitrary-variants': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + + '@unocss/preset-wind@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/preset-wind3': 66.1.0-beta.7 + + '@unocss/reset@66.1.0-beta.7': {} + + '@unocss/rule-utils@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + magic-string: 0.30.17 + + '@unocss/transformer-attributify-jsx@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/transformer-compile-class@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/transformer-directives@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + '@unocss/rule-utils': 66.1.0-beta.7 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@66.1.0-beta.7': + dependencies: + '@unocss/core': 66.1.0-beta.7 + + '@unocss/vite@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.1.0-beta.7 + '@unocss/core': 66.1.0-beta.7 + '@unocss/inspector': 66.1.0-beta.7(vue@3.5.13(typescript@5.8.2)) + chokidar: 3.6.0 + magic-string: 0.30.17 + tinyglobby: 0.2.12 + unplugin-utils: 0.2.4 + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - vue + + '@unrs/resolver-binding-darwin-arm64@1.3.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.3.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.3.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.3.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.7 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.3.2': + optional: true + + '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) + '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + vue: 3.5.13(typescript@5.8.2) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + dependencies: + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + vue: 3.5.13(typescript@5.8.2) + + '@vitest/eslint-plugin@1.1.38(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))': + dependencies: + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.8.2 + vitest: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + + '@vitest/expect@3.0.9': + dependencies: + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.9(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 3.0.9 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + + '@vitest/pretty-format@3.0.9': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.9': + dependencies: + '@vitest/utils': 3.0.9 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.9': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + '@volar/language-core@2.4.12': + dependencies: + '@volar/source-map': 2.4.12 + + '@volar/source-map@2.4.12': {} + + '@volar/typescript@2.4.12': + dependencies: + '@volar/language-core': 2.4.12 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.4.0': {} + + '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + '@vue/babel-helper-vue-transform-on': 1.4.0 + '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.26.10) + '@vue/shared': 3.5.13 + optionalDependencies: + '@babel/core': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/parser': 7.27.0 + '@vue/compiler-sfc': 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.2': + dependencies: + '@vue/devtools-kit': 7.7.2 + + '@vue/devtools-kit@7.7.2': + dependencies: + '@vue/devtools-shared': 7.7.2 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.2': + dependencies: + rfdc: 1.4.1 + + '@vue/language-core@2.2.8(typescript@5.8.2)': + dependencies: + '@volar/language-core': 2.4.12 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + alien-signals: 1.0.8 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.8.2 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.8.2) + + '@vue/shared@3.5.13': {} + + '@vue/test-utils@2.4.6': + dependencies: + js-beautify: 1.15.4 + vue-component-type-helpers: 2.2.8 + + '@vueuse/core@9.13.0(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.13(typescript@5.8.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.5.13(typescript@5.8.2))': + dependencies: + vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@xmldom/xmldom@0.8.10': {} + + abbrev@2.0.0: {} + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + alien-signals@1.0.8: {} + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + ansis@3.17.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + are-docs-informative@0.0.2: {} + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + async-validator@4.2.5: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + axios@1.8.4: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + binary-extensions@2.3.0: {} + + birpc@0.2.19: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001707 + electron-to-chromium: 1.5.126 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + builtin-modules@4.0.0: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001707: {} + + ccount@2.0.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + character-entities@2.0.2: {} + + check-error@2.1.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@4.2.0: {} + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-buffer@1.0.0: {} + + clone-stats@1.0.0: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colorette@2.0.20: {} + + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@13.1.0: {} + + commander@7.2.0: {} + + comment-parser@1.4.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.1: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + consola@3.4.2: {} + + convert-source-map@2.0.0: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@1.4.1: {} + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cssom@0.5.0: {} + + csstype@3.1.3: {} + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom-zindex@1.0.6: {} + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + editorconfig@1.0.4: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.7.1 + + electron-to-chromium@1.5.126: {} + + element-plus@2.9.7(vue@3.5.13(typescript@5.8.2)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2)) + '@floating-ui/dom': 1.6.13 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.16 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.8.2)) + async-validator: 4.2.5 + dayjs: 1.11.13 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.13(typescript@5.8.2) + transitivePeerDependencies: + - '@vue/composition-api' + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enabled@2.0.0: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + environment@1.1.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + optional: true + + esbuild@0.25.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-compat-utils@0.5.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-compat-utils@0.6.4(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-config-flat-gitignore@2.1.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint/compat': 1.2.7(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + + eslint-flat-config-utils@2.0.1: + dependencies: + pathe: 2.0.3 + + eslint-formatting-reporter@0.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + prettier-linter-helpers: 1.0.0 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-json-compat-utils@0.2.1(eslint@9.23.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@2.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-parser-plain@0.1.1: {} + + eslint-plugin-antfu@3.1.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-command@3.2.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.50.0 + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-es-x@7.8.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.23.0(jiti@2.4.2)) + + eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@dprint/formatter': 0.3.0 + '@dprint/markdown': 0.17.8 + '@dprint/toml': 0.6.4 + eslint: 9.23.0(jiti@2.4.2) + eslint-formatting-reporter: 0.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-parser-plain: 0.1.1 + prettier: 3.5.3 + synckit: 0.9.2 + + eslint-plugin-import-x@4.9.3(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): + dependencies: + '@types/doctrine': 0.0.9 + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + debug: 4.4.0 + doctrine: 3.0.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 10.0.1 + semver: 7.7.1 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.3.2 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@50.6.9(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports: 2.2.1 + semver: 7.7.1 + spdx-expression-parse: 4.0.0 + synckit: 0.9.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.20.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.23.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + espree: 10.3.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.10.3 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + enhanced-resolve: 5.18.1 + eslint: 9.23.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.23.0(jiti@2.4.2)) + get-tsconfig: 4.10.0 + globals: 15.15.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.7.1 + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.10.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@0.3.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + find-up-simple: 1.0.1 + jsonc-eslint-parser: 2.4.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 0.3.1 + tinyglobby: 0.2.12 + yaml-eslint-parser: 1.3.0 + + eslint-plugin-regexp@2.7.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.23.0(jiti@2.4.2) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@57.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + ci-info: 4.2.0 + clean-regexp: 1.0.0 + core-js-compat: 3.41.0 + eslint: 9.23.0(jiti@2.4.2) + esquery: 1.6.0 + globals: 15.15.0 + indent-string: 5.0.0 + is-builtin-module: 4.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + read-package-up: 11.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.1 + strip-indent: 4.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + + eslint-plugin-vue@10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.1 + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + xml-name-validator: 4.0.0 + + eslint-plugin-yml@1.17.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + natural-compare: 1.4.0 + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@vue/compiler-sfc': 3.5.13 + eslint: 9.23.0(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.23.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/config-helpers': 0.2.0 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 + '@eslint/plugin-kit': 0.2.7 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + expect-type@1.2.0: {} + + exsolve@1.0.4: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fecha@4.2.3: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up-simple@1.0.1: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + fn.name@1.1.0: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@8.0.1: {} + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.0.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + happy-dom@17.4.4: + dependencies: + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hookable@5.5.3: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + human-signals@5.0.0: {} + + husky@9.1.7: {} + + ignore@5.3.2: {} + + immutable@4.3.7: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@5.0.0: {} + + index-to-position@1.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + is-arrayish@0.3.2: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@4.0.0: + dependencies: + builtin-modules: 4.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-what@4.1.16: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.4.2: {} + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.4.5 + js-cookie: 3.0.5 + nopt: 7.2.1 + + js-cookie@3.0.5: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.1 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kolorist@1.8.0: {} + + kuler@2.0.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@3.1.3: {} + + lint-staged@15.5.0: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.0 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.0 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.1 + + local-pkg@1.1.1: + dependencies: + mlly: 1.7.4 + pkg-types: 2.1.0 + quansync: 0.2.10 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.escape@4.0.1: {} + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + longest-streak@3.1.0: {} + + loupe@3.1.3: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.14: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.12.2: {} + + memoize-one@6.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + mitt@3.0.1: {} + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.5.4 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + mustache@4.2.0: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + node-fetch-native@1.6.6: {} + + node-releases@2.0.19: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-wheel-es@1.2.0: {} + + normalize.css@8.0.1: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.6 + ufo: 1.5.4 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.10 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-gitignore@2.0.0: {} + + parse-imports@2.2.1: + dependencies: + es-module-lexer: 1.6.0 + slashes: 3.0.12 + + parse-json@8.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.0.0 + type-fest: 4.38.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@8.2.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pinia@3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)): + dependencies: + '@vue/devtools-api': 7.7.2 + vue: 3.5.13(typescript@5.8.2) + optionalDependencies: + typescript: 5.8.2 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + + pkg-types@2.1.0: + dependencies: + confbox: 0.2.1 + exsolve: 1.0.4 + pathe: 2.0.3 + + pluralize@8.0.0: {} + + pnpm-workspace-yaml@0.3.1: + dependencies: + yaml: 2.7.0 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.5.3: {} + + prettysize@2.0.0: {} + + process-nextick-args@2.0.1: {} + + proto-list@1.2.4: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + quansync@0.2.10: {} + + queue-microtask@1.2.3: {} + + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.38.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.2.0 + type-fest: 4.38.0 + unicorn-magic: 0.1.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + remove-trailing-separator@1.1.0: {} + + replace-ext@1.0.1: {} + + require-directory@2.1.1: {} + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rollup@4.37.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + + sass@1.78.0: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + + screenfull@6.0.2: {} + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slashes@3.0.12: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + speakingurl@14.0.1: {} + + stable-hash@0.0.5: {} + + stable@0.1.8: {} + + stack-trace@0.0.10: {} + + stackback@0.0.2: {} + + std-env@3.8.1: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@3.0.0: {} + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-sprite@2.0.4: + dependencies: + '@resvg/resvg-js': 2.6.2 + '@xmldom/xmldom': 0.8.10 + async: 3.2.6 + css-selector-parser: 1.4.1 + csso: 4.2.0 + cssom: 0.5.0 + glob: 7.2.3 + js-yaml: 4.1.0 + lodash.escape: 4.0.1 + lodash.merge: 4.6.2 + mustache: 4.2.0 + prettysize: 2.0.0 + svgo: 2.8.0 + vinyl: 2.2.1 + winston: 3.17.0 + xpath: 0.0.34 + yargs: 17.7.2 + + svgo@2.8.0: + 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 + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + synckit@0.10.3: + dependencies: + '@pkgr/core': 0.2.0 + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.2 + tslib: 2.8.1 + + tapable@2.2.1: {} + + text-hex@1.0.0: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + + totalist@3.0.1: {} + + triple-beam@1.4.1: {} + + ts-api-utils@2.1.0(typescript@5.8.2): + dependencies: + typescript: 5.8.2 + + tslib@2.8.1: {} + + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.38.0: {} + + typescript@5.8.2: {} + + ufo@1.5.4: {} + + unconfig@7.3.1: + dependencies: + '@quansync/fs': 0.1.1 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.10 + + undici-types@6.20.0: {} + + unicorn-magic@0.1.0: {} + + unimport@4.1.2: + dependencies: + acorn: 8.14.1 + 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: 1.3.1 + scule: 1.3.0 + strip-literal: 3.0.0 + tinyglobby: 0.2.12 + unplugin: 2.2.2 + unplugin-utils: 0.2.4 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + unocss@66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): + dependencies: + '@unocss/astro': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@unocss/cli': 66.1.0-beta.7 + '@unocss/core': 66.1.0-beta.7 + '@unocss/postcss': 66.1.0-beta.7(postcss@8.5.3) + '@unocss/preset-attributify': 66.1.0-beta.7 + '@unocss/preset-icons': 66.1.0-beta.7 + '@unocss/preset-mini': 66.1.0-beta.7 + '@unocss/preset-tagify': 66.1.0-beta.7 + '@unocss/preset-typography': 66.1.0-beta.7 + '@unocss/preset-uno': 66.1.0-beta.7 + '@unocss/preset-web-fonts': 66.1.0-beta.7 + '@unocss/preset-wind': 66.1.0-beta.7 + '@unocss/preset-wind3': 66.1.0-beta.7 + '@unocss/preset-wind4': 66.1.0-beta.7 + '@unocss/transformer-attributify-jsx': 66.1.0-beta.7 + '@unocss/transformer-compile-class': 66.1.0-beta.7 + '@unocss/transformer-directives': 66.1.0-beta.7 + '@unocss/transformer-variant-group': 66.1.0-beta.7 + '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + optionalDependencies: + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - postcss + - supports-color + - vue + + unplugin-auto-import@19.1.2(@vueuse/core@9.13.0(vue@3.5.13(typescript@5.8.2))): + dependencies: + local-pkg: 1.1.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + unimport: 4.1.2 + unplugin: 2.2.2 + unplugin-utils: 0.2.4 + optionalDependencies: + '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.8.2)) + + unplugin-svg-component@0.12.1: + dependencies: + cors: 2.8.5 + etag: 1.8.1 + fast-glob: 3.3.3 + local-pkg: 0.5.1 + picocolors: 1.1.1 + svg-sprite: 2.0.4 + svgo: 3.3.2 + unplugin: 1.16.1 + + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + + unplugin-vue-components@28.4.1(@babel/parser@7.27.0)(vue@3.5.13(typescript@5.8.2)): + dependencies: + chokidar: 3.6.0 + debug: 4.4.0 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + tinyglobby: 0.2.12 + unplugin: 2.2.2 + unplugin-utils: 0.2.4 + vue: 3.5.13(typescript@5.8.2) + optionalDependencies: + '@babel/parser': 7.27.0 + transitivePeerDependencies: + - supports-color + + unplugin@1.16.1: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + + unplugin@2.2.2: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + + unrs-resolver@1.3.2: + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.3.2 + '@unrs/resolver-binding-darwin-x64': 1.3.2 + '@unrs/resolver-binding-freebsd-x64': 1.3.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.3.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.3.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.3.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.3.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-x64-musl': 1.3.2 + '@unrs/resolver-binding-wasm32-wasi': 1.3.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.3.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.3.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.3.2 + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vite-node@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-svg-loader@5.1.0(vue@3.5.13(typescript@5.8.2)): + dependencies: + svgo: 3.3.2 + vue: 3.5.13(typescript@5.8.2) + + vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0): + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.37.0 + optionalDependencies: + '@types/node': 22.13.14 + fsevents: 2.3.3 + jiti: 2.4.2 + sass: 1.78.0 + tsx: 4.19.2 + yaml: 2.7.0 + + vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0): + dependencies: + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + vite-node: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(sass@1.78.0)(tsx@4.19.2)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 22.13.14 + happy-dom: 17.4.4 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vscode-uri@3.1.0: {} + + vue-component-type-helpers@2.2.8: {} + + vue-demi@0.14.10(vue@3.5.13(typescript@5.8.2)): + dependencies: + vue: 3.5.13(typescript@5.8.2) + + vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.8.2)): + dependencies: + vue: 3.5.13(typescript@5.8.2) + + vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.13(typescript@5.8.2) + + vue-tsc@2.2.8(typescript@5.8.2): + dependencies: + '@volar/typescript': 2.4.12 + '@vue/language-core': 2.2.8(typescript@5.8.2) + typescript: 5.8.2 + + vue@3.5.13(typescript@5.8.2): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.8.2 + + vxe-table@4.6.25(vue@3.5.13(typescript@5.8.2)): + dependencies: + dom-zindex: 1.0.6 + vue: 3.5.13(typescript@5.8.2) + xe-utils: 3.7.4 + + webidl-conversions@7.0.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-mimetype@3.0.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.17.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xe-utils@3.7.4: {} + + xml-name-validator@4.0.0: {} + + xpath@0.0.34: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-eslint-parser@1.3.0: + dependencies: + eslint-visitor-keys: 3.4.3 + yaml: 2.7.0 + + yaml@2.7.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + zwitch@2.0.4: {} diff --git a/management/web/public/app-loading.css b/management/web/public/app-loading.css new file mode 100644 index 0000000..13fdbc7 --- /dev/null +++ b/management/web/public/app-loading.css @@ -0,0 +1,45 @@ +/* 白屏阶段会执行的 CSS 加载动画 */ + +#app-loading { + position: relative; + top: 45vh; + margin: 0 auto; + color: #409eff; + font-size: 12px; +} + +#app-loading, +#app-loading::before, +#app-loading::after { + width: 2em; + height: 2em; + border-radius: 50%; + animation: 2s ease-in-out infinite app-loading-animation; +} + +#app-loading::before, +#app-loading::after { + content: ""; + position: absolute; +} + +#app-loading::before { + left: -4em; + animation-delay: -0.2s; +} + +#app-loading::after { + left: 4em; + animation-delay: 0.2s; +} + +@keyframes app-loading-animation { + 0%, + 80%, + 100% { + box-shadow: 0 2em 0 -2em; + } + 40% { + box-shadow: 0 2em 0 0; + } +} diff --git a/management/web/public/detect-ie.js b/management/web/public/detect-ie.js new file mode 100644 index 0000000..6dc2f08 --- /dev/null +++ b/management/web/public/detect-ie.js @@ -0,0 +1,4 @@ +// Tip: Simple judgments may not fully cover +if (/MSIE\s|Trident\//.test(navigator.userAgent)) { + document.body.innerHTML = "Sorry, this browser is currently not supported. We recommend using the latest version of a modern browser. For example, Chrome/Firefox/Edge." +} diff --git a/management/web/public/favicon.ico b/management/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c641cd002918bdb009192b6b74f55e42bb97adc9 GIT binary patch literal 8627 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 R=UV|lPD)v_M%*;ye*o|wcIE&8 literal 0 HcmV?d00001 diff --git a/management/web/src/App.vue b/management/web/src/App.vue new file mode 100644 index 0000000..9d210cc --- /dev/null +++ b/management/web/src/App.vue @@ -0,0 +1,24 @@ + + + diff --git a/management/web/src/common/apis/tables/index.ts b/management/web/src/common/apis/tables/index.ts new file mode 100644 index 0000000..d2018b9 --- /dev/null +++ b/management/web/src/common/apis/tables/index.ts @@ -0,0 +1,37 @@ +import type * as Tables from "./type" +import { request } from "@/http/axios" + +/** 增 */ +export function createTableDataApi(data: Tables.CreateOrUpdateTableRequestData) { + return request({ + url: "api/v1/users", + method: "post", + data + }) +} + +/** 删 */ +export function deleteTableDataApi(id: number) { + return request({ + url: `api/v1/users/${id}`, + method: "delete" + }) +} + +/** 改 */ +export function updateTableDataApi(data: Tables.CreateOrUpdateTableRequestData) { + return request({ + url: `api/v1/users/${data.id}`, + method: "put", + data + }) +} + +/** 查 */ +export function getTableDataApi(params: Tables.TableRequestData) { + return request({ + url: "api/v1/users", + method: "get", + params + }) +} diff --git a/management/web/src/common/apis/tables/type.ts b/management/web/src/common/apis/tables/type.ts new file mode 100644 index 0000000..52d3ba6 --- /dev/null +++ b/management/web/src/common/apis/tables/type.ts @@ -0,0 +1,30 @@ +export interface CreateOrUpdateTableRequestData { + id?: number + username: string + email?: string + password?: string +} + +export interface TableRequestData { + /** 当前页码 */ + currentPage: number + /** 查询条数 */ + size: number + /** 查询参数:用户名 */ + username?: string + /** 查询参数:邮箱 */ + email?: string +} + +export interface TableData { + id: number + username: string + email: string + createTime: string + updateTime: string +} + +export type TableResponseData = ApiResponseData<{ + list: TableData[] + total: number +}> diff --git a/management/web/src/common/apis/users/index.ts b/management/web/src/common/apis/users/index.ts new file mode 100644 index 0000000..b3c3d78 --- /dev/null +++ b/management/web/src/common/apis/users/index.ts @@ -0,0 +1,10 @@ +import type * as Users from "./type" +import { request } from "@/http/axios" + +/** 获取当前登录用户详情 */ +export function getCurrentUserApi() { + return request({ + url: "api/v1/users/me", + method: "get" + }) +} diff --git a/management/web/src/common/apis/users/type.ts b/management/web/src/common/apis/users/type.ts new file mode 100644 index 0000000..6423d98 --- /dev/null +++ b/management/web/src/common/apis/users/type.ts @@ -0,0 +1 @@ +export type CurrentUserResponseData = ApiResponseData<{ username: string, roles: string[] }> diff --git a/management/web/src/common/assets/icons/dashboard.svg b/management/web/src/common/assets/icons/dashboard.svg new file mode 100644 index 0000000..c8863a0 --- /dev/null +++ b/management/web/src/common/assets/icons/dashboard.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/fullscreen-exit.svg b/management/web/src/common/assets/icons/fullscreen-exit.svg new file mode 100644 index 0000000..42aa505 --- /dev/null +++ b/management/web/src/common/assets/icons/fullscreen-exit.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/fullscreen.svg b/management/web/src/common/assets/icons/fullscreen.svg new file mode 100644 index 0000000..a97be9e --- /dev/null +++ b/management/web/src/common/assets/icons/fullscreen.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/keyboard-down.svg b/management/web/src/common/assets/icons/keyboard-down.svg new file mode 100644 index 0000000..de62543 --- /dev/null +++ b/management/web/src/common/assets/icons/keyboard-down.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/keyboard-enter.svg b/management/web/src/common/assets/icons/keyboard-enter.svg new file mode 100644 index 0000000..819b87e --- /dev/null +++ b/management/web/src/common/assets/icons/keyboard-enter.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/keyboard-esc.svg b/management/web/src/common/assets/icons/keyboard-esc.svg new file mode 100644 index 0000000..33256bf --- /dev/null +++ b/management/web/src/common/assets/icons/keyboard-esc.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/keyboard-up.svg b/management/web/src/common/assets/icons/keyboard-up.svg new file mode 100644 index 0000000..e84519a --- /dev/null +++ b/management/web/src/common/assets/icons/keyboard-up.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/icons/preserve-color/README.md b/management/web/src/common/assets/icons/preserve-color/README.md new file mode 100644 index 0000000..f76c600 --- /dev/null +++ b/management/web/src/common/assets/icons/preserve-color/README.md @@ -0,0 +1,11 @@ +## 目录说明 + +- `common/assets/icons/preserve-color` 目录下存放带颜色的 svg icon + +- `common/assets/icons` 目录存放的 svg icon 会被插件重写 `fill` 和 `stroke` 属性,使得图片自带的颜色丢失,从而继承父元素的颜色 + +## 使用说明 + +`common/assets/icons/preserve-color` 目录下需要添加 `preserve-color/` 前缀,像这样: `` + +`common/assets/icons` 目录下则不需要,像这样: `` diff --git a/management/web/src/common/assets/icons/search.svg b/management/web/src/common/assets/icons/search.svg new file mode 100644 index 0000000..691a5f1 --- /dev/null +++ b/management/web/src/common/assets/icons/search.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/common/assets/images/docs/preview.png b/management/web/src/common/assets/images/docs/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..860ea0023b5f25faad019e01bfe8d45d435ab6ac GIT binary patch literal 503620 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
)`rX$G&|Ex?(6yCeVJ)v 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ұ^l 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 Q^q&{ZS!{gKXw~lj0v#z4YybcN literal 0 HcmV?d00001 diff --git a/management/web/src/common/assets/images/layouts/logo-text-1.png b/management/web/src/common/assets/images/layouts/logo-text-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3543917ae3337af19ce01b4cde355e3e68af941d GIT binary patch literal 11324 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 fWXm$aZl2dYl4#Y%B0?!hVU?pEC0Z~DCN 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 literal 0 HcmV?d00001 diff --git a/management/web/src/common/assets/styles/element-plus.css b/management/web/src/common/assets/styles/element-plus.css new file mode 100644 index 0000000..c550ac9 --- /dev/null +++ b/management/web/src/common/assets/styles/element-plus.css @@ -0,0 +1,90 @@ +/** + * @description dark-blue 主题模式下的 Element Plus CSS 变量 + * @description 在此查阅所有可自定义的变量:https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/common/var.scss + * @description 也可以打开浏览器控制台选择元素,查看要覆盖的变量名 + */ + +/* 基础颜色 */ +html.dark-blue { + /* color-primary */ + --el-color-primary: #00bb99; + --el-color-primary-light-3: #00bb99b3; + --el-color-primary-light-5: #00bb9980; + --el-color-primary-light-7: #00bb994d; + --el-color-primary-light-8: #00bb9933; + --el-color-primary-light-9: #00bb991a; + --el-color-primary-dark-2: #00bb99; + /* color-success */ + --el-color-success: #67c23a; + --el-color-success-light-3: #67c23ab3; + --el-color-success-light-5: #67c23a80; + --el-color-success-light-7: #67c23a4d; + --el-color-success-light-8: #67c23a33; + --el-color-success-light-9: #67c23a1a; + --el-color-success-dark-2: #67c23a; + /* color-warning */ + --el-color-warning: #e6a23c; + --el-color-warning-light-3: #e6a23cb3; + --el-color-warning-light-5: #e6a23c80; + --el-color-warning-light-7: #e6a23c4d; + --el-color-warning-light-8: #e6a23c33; + --el-color-warning-light-9: #e6a23c1a; + --el-color-warning-dark-2: #e6a23c; + /* color-danger */ + --el-color-danger: #f56c6c; + --el-color-danger-light-3: #f56c6cb3; + --el-color-danger-light-5: #f56c6c80; + --el-color-danger-light-7: #f56c6c4d; + --el-color-danger-light-8: #f56c6c33; + --el-color-danger-light-9: #f56c6c1a; + --el-color-danger-dark-2: #f56c6c; + /* color-error */ + --el-color-error: #f56c6c; + --el-color-error-light-3: #f56c6cb3; + --el-color-error-light-5: #f56c6c80; + --el-color-error-light-7: #f56c6c4d; + --el-color-error-light-8: #f56c6c33; + --el-color-error-light-9: #f56c6c1a; + --el-color-error-dark-2: #f56c6c; + /* color-info */ + --el-color-info: #909399; + --el-color-info-light-3: #909399b3; + --el-color-info-light-5: #90939980; + --el-color-info-light-7: #9093994d; + --el-color-info-light-8: #90939933; + --el-color-info-light-9: #9093991a; + --el-color-info-dark-2: #909399; + /* text-color */ + --el-text-color-primary: #e5eaf3; + --el-text-color-regular: #cfd3dc; + --el-text-color-secondary: #a3a6ad; + --el-text-color-placeholder: #8d9095; + --el-text-color-disabled: #6c6e72; + /* border-color */ + --el-border-color-darker: #003380; + --el-border-color-dark: #003380; + --el-border-color: #003380; + --el-border-color-light: #003380; + --el-border-color-lighter: #003380; + --el-border-color-extra-light: #003380; + /* fill-color */ + --el-fill-color-darker: #002b6b; + --el-fill-color-dark: #002b6b; + --el-fill-color: #002b6b; + --el-fill-color-light: #002359; + --el-fill-color-lighter: #002359; + --el-fill-color-blank: #001b44; + --el-fill-color-extra-light: #001b44; + /* bg-color */ + --el-bg-color-page: #001535; + --el-bg-color: #001b44; + --el-bg-color-overlay: #002359; + /* mask-color */ + --el-mask-color: rgba(0, 0, 0, 0.5); + --el-mask-color-extra-light: rgba(0, 0, 0, 0.3); +} + +/* button */ +html.dark-blue .el-button { + --el-button-disabled-text-color: rgba(255, 255, 255, 0.5); +} diff --git a/management/web/src/common/assets/styles/element-plus.scss b/management/web/src/common/assets/styles/element-plus.scss new file mode 100644 index 0000000..564e9d3 --- /dev/null +++ b/management/web/src/common/assets/styles/element-plus.scss @@ -0,0 +1,20 @@ +// 自定义 Element Plus 样式 + +// 卡片 +.el-card { + background-color: var(--el-bg-color) !important; +} + +// 分页 +.el-pagination { + // 参考 Bootstrap 的响应式设计 WIDTH = 768 + @media screen and (max-width: 768px) { + .el-pagination__total, + .el-pagination__sizes, + .el-pagination__jump, + .btn-prev, + .btn-next { + display: none; + } + } +} diff --git a/management/web/src/common/assets/styles/index.scss b/management/web/src/common/assets/styles/index.scss new file mode 100644 index 0000000..db2f8b0 --- /dev/null +++ b/management/web/src/common/assets/styles/index.scss @@ -0,0 +1,67 @@ +// 全局 CSS 变量 +@import "./variables.css"; +// Transition +@import "./transition.scss"; +// Element Plus +@import "./element-plus.css"; +@import "./element-plus.scss"; +// Vxe Table +@import "./vxe-table.css"; +@import "./vxe-table.scss"; +// 注册多主题 +@import "./theme/register.scss"; +// Mixins +@import "./mixins.scss"; +// View Transition +@import "./view-transition.scss"; + +// 业务页面几乎都应该在根元素上挂载 class="app-container",以保持页面美观 +.app-container { + padding: 20px; +} + +html { + height: 100%; + // 灰色模式 + &.grey-mode { + filter: grayscale(1); + } + // 色弱模式 + &.color-weakness { + filter: invert(0.8); + } +} + +body { + height: 100%; + color: var(--v3-body-text-color); + background-color: var(--v3-body-bg-color); + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: + Inter, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, + sans-serif; + @extend %scrollbar; +} + +#app { + height: 100%; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +a, +a:focus, +a:hover { + color: inherit; + outline: none; + text-decoration: none; +} + +div:focus { + outline: none; +} diff --git a/management/web/src/common/assets/styles/mixins.scss b/management/web/src/common/assets/styles/mixins.scss new file mode 100644 index 0000000..758e6e5 --- /dev/null +++ b/management/web/src/common/assets/styles/mixins.scss @@ -0,0 +1,42 @@ +// 清除浮动 +%clearfix { + &::after { + content: ""; + display: table; + clear: both; + } +} + +// 美化原生滚动条 +%scrollbar { + // 整个滚动条 + &::-webkit-scrollbar { + width: 8px; + height: 8px; + } + // 滚动条上的滚动滑块 + &::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: #90939955; + } + &::-webkit-scrollbar-thumb:hover { + background-color: #90939977; + } + &::-webkit-scrollbar-thumb:active { + background-color: #90939999; + } + // 当同时有垂直滚动条和水平滚动条时交汇的部分 + &::-webkit-scrollbar-corner { + background-color: transparent; + } +} + +// 文本溢出时显示省略号 +%ellipsis { + // 隐藏溢出的文本 + overflow: hidden; + // 防止文本换行 + white-space: nowrap; + // 文本内容溢出容器时,文本末尾显示省略号 + text-overflow: ellipsis; +} diff --git a/management/web/src/common/assets/styles/theme/core/element-plus.scss b/management/web/src/common/assets/styles/theme/core/element-plus.scss new file mode 100644 index 0000000..54061a7 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/core/element-plus.scss @@ -0,0 +1,29 @@ +// Element Plus 相关 + +// 侧边栏的 item 的 popper +.el-popper { + .el-menu { + background-color: var(--el-bg-color); + .el-menu-item { + background-color: var(--el-bg-color); + &.is-active, + &:hover { + background-color: var(--el-bg-color-overlay); + color: #ffffff; + } + } + .el-sub-menu__title { + background-color: var(--el-bg-color); + } + .el-sub-menu { + &.is-active { + > .el-sub-menu__title { + color: #ffffff; + } + } + } + } + .el-menu--horizontal { + border: none; + } +} diff --git a/management/web/src/common/assets/styles/theme/core/index.scss b/management/web/src/common/assets/styles/theme/core/index.scss new file mode 100644 index 0000000..5bfe156 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/core/index.scss @@ -0,0 +1,4 @@ +.#{$theme-name} { + @import "./layouts.scss"; + @import "./element-plus.scss"; +} diff --git a/management/web/src/common/assets/styles/theme/core/layouts.scss b/management/web/src/common/assets/styles/theme/core/layouts.scss new file mode 100644 index 0000000..faa23b6 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/core/layouts.scss @@ -0,0 +1,34 @@ +// Layout 相关 + +.app-wrapper { + // 侧边栏 + .sidebar-container { + background-color: var(--el-bg-color); + .el-menu { + background-color: var(--el-bg-color); + .el-menu-item { + background-color: var(--el-bg-color); + &.is-active, + &:hover { + background-color: var(--el-bg-color-overlay); + color: #ffffff; + } + } + } + .el-sub-menu__title { + background-color: var(--el-bg-color); + } + .el-sub-menu { + &.is-active { + > .el-sub-menu__title { + color: #ffffff; + } + } + } + } +} + +// 右侧设置面板 +.handle-button { + background-color: lighten($theme-bg-color, 20%) !important; +} diff --git a/management/web/src/common/assets/styles/theme/dark-blue/index.scss b/management/web/src/common/assets/styles/theme/dark-blue/index.scss new file mode 100644 index 0000000..d39200d --- /dev/null +++ b/management/web/src/common/assets/styles/theme/dark-blue/index.scss @@ -0,0 +1,2 @@ +@import "./variables.scss"; +@import "../core/index.scss"; diff --git a/management/web/src/common/assets/styles/theme/dark-blue/variables.scss b/management/web/src/common/assets/styles/theme/dark-blue/variables.scss new file mode 100644 index 0000000..e65ab92 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/dark-blue/variables.scss @@ -0,0 +1,6 @@ +// dark-blue 主题下的变量 + +// 主题名称 +$theme-name: "dark-blue"; +// 主题背景颜色 +$theme-bg-color: #001b44; diff --git a/management/web/src/common/assets/styles/theme/dark/index.scss b/management/web/src/common/assets/styles/theme/dark/index.scss new file mode 100644 index 0000000..d39200d --- /dev/null +++ b/management/web/src/common/assets/styles/theme/dark/index.scss @@ -0,0 +1,2 @@ +@import "./variables.scss"; +@import "../core/index.scss"; diff --git a/management/web/src/common/assets/styles/theme/dark/variables.scss b/management/web/src/common/assets/styles/theme/dark/variables.scss new file mode 100644 index 0000000..df0a354 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/dark/variables.scss @@ -0,0 +1,6 @@ +// dark 主题下的变量 + +// 主题名称 +$theme-name: "dark"; +// 主题背景颜色 +$theme-bg-color: #141414; diff --git a/management/web/src/common/assets/styles/theme/register.scss b/management/web/src/common/assets/styles/theme/register.scss new file mode 100644 index 0000000..6b74211 --- /dev/null +++ b/management/web/src/common/assets/styles/theme/register.scss @@ -0,0 +1,3 @@ +// 注册多主题 +@import "./dark/index.scss"; +@import "./dark-blue/index.scss"; diff --git a/management/web/src/common/assets/styles/transition.scss b/management/web/src/common/assets/styles/transition.scss new file mode 100644 index 0000000..5a4657a --- /dev/null +++ b/management/web/src/common/assets/styles/transition.scss @@ -0,0 +1,25 @@ +// https://cn.vuejs.org/guide/built-ins/transition + +// fade-transform +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all 0.5s; +} +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +// layout-logo-fade +.layout-logo-fade-enter-active, +.layout-logo-fade-leave-active { + transition: opacity 1.5s; +} +.layout-logo-fade-enter-from, +.layout-logo-fade-leave-to { + opacity: 0; +} diff --git a/management/web/src/common/assets/styles/variables.css b/management/web/src/common/assets/styles/variables.css new file mode 100644 index 0000000..32ec870 --- /dev/null +++ b/management/web/src/common/assets/styles/variables.css @@ -0,0 +1,72 @@ +/* 全局 CSS 变量,这种变量不仅可以在 CSS 和 SCSS 中使用,还可以导入到 JS 中使用 */ + +:root { + /* Body */ + --v3-body-text-color: var(--el-text-color-primary); + --v3-body-bg-color: var(--el-bg-color-page); + /* Header 区域 = NavigationBar 组件 + TagsView 组件 */ + --v3-header-height: calc( + var(--v3-navigationbar-height) + var(--v3-tagsview-height) + var(--v3-header-border-bottom-width) + ); + --v3-header-bg-color: var(--el-bg-color); + --v3-header-box-shadow: var(--el-box-shadow-lighter); + --v3-header-border-bottom-width: 1px; + --v3-header-border-bottom: var(--v3-header-border-bottom-width) solid var(--el-fill-color); + /* NavigationBar 组件 */ + --v3-navigationbar-height: 50px; + --v3-navigationbar-text-color: var(--el-text-color-regular); + /* Sidebar 组件(左侧模式全部生效、顶部模式全部不生效、混合模式非颜色部分生效) */ + --v3-sidebar-width: 220px; + --v3-sidebar-hide-width: 58px; + --v3-sidebar-border-right: 1px solid var(--el-fill-color); + --v3-sidebar-menu-item-height: 60px; + --v3-sidebar-menu-tip-line-bg-color: var(--el-color-primary); + --v3-sidebar-menu-bg-color: #001428; + --v3-sidebar-menu-hover-bg-color: #409eff10; + --v3-sidebar-menu-text-color: #cfd3dc; + --v3-sidebar-menu-active-text-color: #ffffff; + /* TagsView 组件 */ + --v3-tagsview-height: 34px; + --v3-tagsview-text-color: var(--el-text-color-regular); + --v3-tagsview-tag-active-text-color: #ffffff; + --v3-tagsview-tag-bg-color: var(--el-bg-color); + --v3-tagsview-tag-active-bg-color: var(--el-color-primary); + --v3-tagsview-tag-border-radius: 2px; + --v3-tagsview-tag-border-color: var(--el-border-color-lighter); + --v3-tagsview-tag-active-border-color: var(--el-color-primary); + --v3-tagsview-tag-icon-hover-bg-color: #00000030; + --v3-tagsview-tag-icon-hover-color: #ffffff; + --v3-tagsview-contextmenu-text-color: var(--el-text-color-regular); + --v3-tagsview-contextmenu-hover-text-color: var(--el-text-color-primary); + --v3-tagsview-contextmenu-bg-color: var(--el-bg-color-overlay); + --v3-tagsview-contextmenu-hover-bg-color: var(--el-fill-color); + --v3-tagsview-contextmenu-box-shadow: var(--el-box-shadow); + /* Hamburger 组件 */ + --v3-hamburger-text-color: var(--el-text-color-primary); + /* RightPanel 组件 */ + --v3-rightpanel-button-bg-color: #001428; +} + +/* 内容区放大时,将不需要的组件隐藏 */ +body.content-large { + /* Header 区域 = TagsView 组件 */ + --v3-header-height: var(--v3-tagsview-height); + /* NavigationBar 组件 */ + --v3-navigationbar-height: 0px; + /* Sidebar 组件 */ + --v3-sidebar-width: 0px; + --v3-sidebar-hide-width: 0px; +} + +/* 内容区全屏时,将不需要的组件隐藏 */ +body.content-full { + /* Header 区域 */ + --v3-header-height: 0px; + /* NavigationBar 组件 */ + --v3-navigationbar-height: 0px; + /* Sidebar 组件 */ + --v3-sidebar-width: 0px; + --v3-sidebar-hide-width: 0px; + /* TagsView 组件 */ + --v3-tagsview-height: 0px; +} diff --git a/management/web/src/common/assets/styles/view-transition.scss b/management/web/src/common/assets/styles/view-transition.scss new file mode 100644 index 0000000..72d5975 --- /dev/null +++ b/management/web/src/common/assets/styles/view-transition.scss @@ -0,0 +1,20 @@ +// 控制切换主题时的动画效果(只在较新的浏览器上生效,例如 Chrome 111+) + +::view-transition-old(root) { + animation: none; + mix-blend-mode: normal; +} + +::view-transition-new(root) { + animation: 0.5s ease-in clip-animation; + mix-blend-mode: normal; +} + +@keyframes clip-animation { + from { + clip-path: circle(0px at var(--v3-theme-x) var(--v3-theme-y)); + } + to { + clip-path: circle(var(--v3-theme-r) at var(--v3-theme-x) var(--v3-theme-y)); + } +} diff --git a/management/web/src/common/assets/styles/vxe-table.css b/management/web/src/common/assets/styles/vxe-table.css new file mode 100644 index 0000000..37743c6 --- /dev/null +++ b/management/web/src/common/assets/styles/vxe-table.css @@ -0,0 +1,97 @@ +/** + * @description 所有主题模式下的 Vxe Table CSS 变量 + * @description 用 Element Plus 的 CSS 变量来覆写 Vxe Table 的 CSS 变量,目的是使 Vxe Table 支持多主题模式且样式统一 + * @description 在此查阅所有可自定义的变量:https://github.com/x-extends/vxe-table/blob/master/styles/css-variable.scss + */ + +:root { + /* color */ + --vxe-font-color: var(--el-text-color-regular); + --vxe-primary-color: var(--el-color-primary); + --vxe-success-color: var(--el-color-success); + --vxe-info-color: var(--el-color-info); + --vxe-warning-color: var(--el-color-warning); + --vxe-danger-color: var(--el-color-danger); + + --vxe-font-lighten-color: var(--el-text-color-primary); + --vxe-primary-lighten-color: var(--el-color-primary-light-3); + --vxe-success-lighten-color: var(--el-color-success-light-3); + --vxe-info-lighten-color: var(--el-color-info-light-3); + --vxe-warning-lighten-color: var(--el-color-warning-light-3); + --vxe-danger-lighten-color: var(--el-color-danger-light-3); + + --vxe-font-darken-color: var(--el-text-color-secondary); + --vxe-primary-darken-color: var(--el-color-primary-dark-2); + --vxe-success-darken-color: var(--el-color-success-dark-2); + --vxe-info-darken-color: var(--el-color-info-dark-2); + --vxe-warning-darken-color: var(--el-color-warning-dark-2); + --vxe-danger-darken-color: var(--el-color-danger-dark-2); + + --vxe-font-disabled-color: var(--el-text-color-disabled); + --vxe-primary-disabled-color: var(--el-color-primary-light-5); + --vxe-success-disabled-color: var(--el-color-success-light-5); + --vxe-info-disabled-color: var(--el-color-info-light-5); + --vxe-warning-disabled-color: var(--el-color-warning-light-5); + --vxe-danger-disabled-color: var(--el-color-danger-light-5); + + /* input/radio/checkbox */ + --vxe-input-border-color: var(--el-border-color); + --vxe-input-disabled-color: var(--el-text-color-disabled); + --vxe-input-disabled-background-color: var(--el-fill-color-light); + --vxe-input-placeholder-color: var(--el-text-color-placeholder); + + /* popup */ + --vxe-table-popup-border-color: var(--el-border-color); + + /* table */ + --vxe-table-header-font-color: var(--el-text-color-regular); + --vxe-table-footer-font-color: var(--el-text-color-regular); + --vxe-table-border-color: var(--el-border-color-lighter); + --vxe-table-header-background-color: var(--el-bg-color); + --vxe-table-body-background-color: var(--el-bg-color); + --vxe-table-footer-background-color: var(--el-bg-color); + + --vxe-table-row-hover-background-color: var(--el-fill-color-light); + --vxe-table-row-current-background-color: var(--el-fill-color-light); + --vxe-table-row-hover-current-background-color: var(--el-fill-color-light); + + --vxe-table-checkbox-range-background-color: var(--el-fill-color-light); + + /* menu */ + --vxe-table-menu-background-color: var(--el-bg-color-overlay); + + /* loading */ + --vxe-loading-color: var(--el-color-primary); + --vxe-loading-background-color: var(--el-mask-color); + + /* validate */ + --vxe-table-validate-error-color: var(--el-color-danger); + + /* toolbar */ + --vxe-toolbar-background-color: var(--el-bg-color); + --vxe-toolbar-custom-active-background-color: var(--el-bg-color-overlay); + --vxe-toolbar-panel-background-color: var(--el-bg-color-overlay); + + /* pager */ + --vxe-pager-background-color: var(--el-bg-color); + + /* modal */ + --vxe-modal-header-background-color: var(--el-bg-color); + --vxe-modal-body-background-color: var(--el-bg-color); + --vxe-modal-border-color: var(--el-border-color); + + /* button */ + --vxe-button-default-background-color: var(--el-bg-color-overlay); + + /* input */ + --vxe-input-background-color: var(--el-fill-color-blank); + --vxe-input-panel-background-color: var(--el-fill-color-blank); + + /* form */ + --vxe-form-background-color: var(--el-bg-color); + --vxe-form-validate-error-color: var(--el-color-danger); + + /* select */ + --vxe-select-option-hover-background-color: var(--el-bg-color-overlay); + --vxe-select-panel-background-color: var(--el-bg-color); +} diff --git a/management/web/src/common/assets/styles/vxe-table.scss b/management/web/src/common/assets/styles/vxe-table.scss new file mode 100644 index 0000000..ee86a35 --- /dev/null +++ b/management/web/src/common/assets/styles/vxe-table.scss @@ -0,0 +1,38 @@ +// 自定义 Vxe Table 样式 + +.vxe-grid { + // 表单 + &--form-wrapper { + .vxe-form { + padding: 10px 20px; + margin-bottom: 20px; + } + } + + // 工具栏 + &--toolbar-wrapper { + .vxe-toolbar { + padding: 20px; + } + } + + // 分页 + &--pager-wrapper { + .vxe-pager { + height: 70px; + padding: 0 20px; + &--wrapper { + // 参考 Bootstrap 的响应式设计 WIDTH = 768 + @media screen and (max-width: 768px) { + .vxe-pager--total, + .vxe-pager--sizes, + .vxe-pager--jump, + .vxe-pager--jump-prev, + .vxe-pager--jump-next { + display: none; + } + } + } + } + } +} diff --git a/management/web/src/common/components/Notify/List.vue b/management/web/src/common/components/Notify/List.vue new file mode 100644 index 0000000..174a42a --- /dev/null +++ b/management/web/src/common/components/Notify/List.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/management/web/src/common/components/Notify/data.ts b/management/web/src/common/components/Notify/data.ts new file mode 100644 index 0000000..6d4b55b --- /dev/null +++ b/management/web/src/common/components/Notify/data.ts @@ -0,0 +1,58 @@ +import type { NotifyItem } from "./type" + +export const notifyData: NotifyItem[] = [ + { + avatar: "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + title: "V3 Admin Vite 上线啦", + datetime: "两年前", + description: "一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术" + }, + { + avatar: "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + title: "V3 Admin 上线啦", + datetime: "三年前", + description: "一个中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus 和 Pinia" + } +] + +export const messageData: NotifyItem[] = [ + { + avatar: "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + title: "来自楚门的世界", + description: "如果再也不能见到你,祝你早安、午安和晚安", + datetime: "1998-06-05" + }, + { + avatar: "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + title: "来自大话西游", + description: "如果非要在这份爱上加上一个期限,我希望是一万年", + datetime: "1995-02-04" + }, + { + avatar: "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + title: "来自龙猫", + description: "心存善意,定能途遇天使", + datetime: "1988-04-16" + } +] + +export const todoData: NotifyItem[] = [ + { + title: "任务名称", + description: "这家伙很懒,什么都没留下", + extra: "未开始", + status: "info" + }, + { + title: "任务名称", + description: "这家伙很懒,什么都没留下", + extra: "进行中", + status: "primary" + }, + { + title: "任务名称", + description: "这家伙很懒,什么都没留下", + extra: "已超时", + status: "danger" + } +] diff --git a/management/web/src/common/components/Notify/index.vue b/management/web/src/common/components/Notify/index.vue new file mode 100644 index 0000000..6d7e3a5 --- /dev/null +++ b/management/web/src/common/components/Notify/index.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/management/web/src/common/components/Notify/type.ts b/management/web/src/common/components/Notify/type.ts new file mode 100644 index 0000000..d41fa7a --- /dev/null +++ b/management/web/src/common/components/Notify/type.ts @@ -0,0 +1,8 @@ +export interface NotifyItem { + avatar?: string + title: string + datetime?: string + description?: string + status?: "primary" | "success" | "info" | "warning" | "danger" + extra?: string +} diff --git a/management/web/src/common/components/Screenfull/index.vue b/management/web/src/common/components/Screenfull/index.vue new file mode 100644 index 0000000..7c21c18 --- /dev/null +++ b/management/web/src/common/components/Screenfull/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/management/web/src/common/components/SearchMenu/Footer.vue b/management/web/src/common/components/SearchMenu/Footer.vue new file mode 100644 index 0000000..f8eeeb9 --- /dev/null +++ b/management/web/src/common/components/SearchMenu/Footer.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/management/web/src/common/components/SearchMenu/Modal.vue b/management/web/src/common/components/SearchMenu/Modal.vue new file mode 100644 index 0000000..f2aab0e --- /dev/null +++ b/management/web/src/common/components/SearchMenu/Modal.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/management/web/src/common/components/SearchMenu/Result.vue b/management/web/src/common/components/SearchMenu/Result.vue new file mode 100644 index 0000000..ba769c4 --- /dev/null +++ b/management/web/src/common/components/SearchMenu/Result.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/management/web/src/common/components/SearchMenu/index.vue b/management/web/src/common/components/SearchMenu/index.vue new file mode 100644 index 0000000..2f42e80 --- /dev/null +++ b/management/web/src/common/components/SearchMenu/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/management/web/src/common/components/ThemeSwitch/index.vue b/management/web/src/common/components/ThemeSwitch/index.vue new file mode 100644 index 0000000..c910b4f --- /dev/null +++ b/management/web/src/common/components/ThemeSwitch/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/management/web/src/common/composables/useDevice.ts b/management/web/src/common/composables/useDevice.ts new file mode 100644 index 0000000..c44c629 --- /dev/null +++ b/management/web/src/common/composables/useDevice.ts @@ -0,0 +1,12 @@ +import { useAppStore } from "@/pinia/stores/app" +import { DeviceEnum } from "@@/constants/app-key" + +const appStore = useAppStore() + +const isMobile = computed(() => appStore.device === DeviceEnum.Mobile) +const isDesktop = computed(() => appStore.device === DeviceEnum.Desktop) + +/** 设备类型 Composable */ +export function useDevice() { + return { isMobile, isDesktop } +} diff --git a/management/web/src/common/composables/useFetchSelect.ts b/management/web/src/common/composables/useFetchSelect.ts new file mode 100644 index 0000000..8442743 --- /dev/null +++ b/management/web/src/common/composables/useFetchSelect.ts @@ -0,0 +1,42 @@ +type OptionValue = string | number + +/** Select 需要的数据格式 */ +interface SelectOption { + value: OptionValue + label: string + disabled?: boolean +} + +/** 接口响应格式 */ +type ApiData = ApiResponseData + +/** 入参格式,暂时只需要传递 api 函数即可 */ +interface FetchSelectProps { + api: () => Promise +} + +/** 下拉选择器 Composable */ +export function useFetchSelect(props: FetchSelectProps) { + const { api } = props + + const loading = ref(false) + const options = ref([]) + const value = ref("") + + // 调用接口获取数据 + const loadData = () => { + loading.value = true + options.value = [] + api().then((res) => { + options.value = res.data + }).finally(() => { + loading.value = false + }) + } + + onMounted(() => { + loadData() + }) + + return { loading, options, value } +} diff --git a/management/web/src/common/composables/useFullscreenLoading.ts b/management/web/src/common/composables/useFullscreenLoading.ts new file mode 100644 index 0000000..f5671a6 --- /dev/null +++ b/management/web/src/common/composables/useFullscreenLoading.ts @@ -0,0 +1,36 @@ +import type { LoadingOptions } from "element-plus" + +interface UseFullscreenLoading { + ) => ReturnType>( + fn: T, + options?: LoadingOptions + ): (...args: Parameters) => Promise> +} + +interface LoadingInstance { + close: () => void +} + +const DEFAULT_OPTIONS = { + lock: true, + text: "加载中..." +} + +/** + * @name 全屏加载 Composable + * @description 传入一个函数 fn,在它执行周期内,加上「全屏」Loading + * @param fn 要执行的函数 + * @param options LoadingOptions + * @returns 返回一个新的函数,该函数返回一个 Promise + */ +export const useFullscreenLoading: UseFullscreenLoading = (fn, options = {}) => { + let loadingInstance: LoadingInstance + return async (...args) => { + try { + loadingInstance = ElLoading.service({ ...DEFAULT_OPTIONS, ...options }) + return await fn(...args) + } finally { + loadingInstance.close() + } + } +} diff --git a/management/web/src/common/composables/useGreyAndColorWeakness.ts b/management/web/src/common/composables/useGreyAndColorWeakness.ts new file mode 100644 index 0000000..2738528 --- /dev/null +++ b/management/web/src/common/composables/useGreyAndColorWeakness.ts @@ -0,0 +1,20 @@ +import { useSettingsStore } from "@/pinia/stores/settings" + +const GREY_MODE = "grey-mode" +const COLOR_WEAKNESS = "color-weakness" + +const classList = document.documentElement.classList + +/** 初始化 */ +function initGreyAndColorWeakness() { + const settingsStore = useSettingsStore() + watchEffect(() => { + classList.toggle(GREY_MODE, settingsStore.showGreyMode) + classList.toggle(COLOR_WEAKNESS, settingsStore.showColorWeakness) + }) +} + +/** 灰色模式和色弱模式 Composable */ +export function useGreyAndColorWeakness() { + return { initGreyAndColorWeakness } +} diff --git a/management/web/src/common/composables/useLayoutMode.ts b/management/web/src/common/composables/useLayoutMode.ts new file mode 100644 index 0000000..7835f36 --- /dev/null +++ b/management/web/src/common/composables/useLayoutMode.ts @@ -0,0 +1,17 @@ +import { useSettingsStore } from "@/pinia/stores/settings" +import { LayoutModeEnum } from "@@/constants/app-key" + +const settingsStore = useSettingsStore() + +const isLeft = computed(() => settingsStore.layoutMode === LayoutModeEnum.Left) +const isTop = computed(() => settingsStore.layoutMode === LayoutModeEnum.Top) +const isLeftTop = computed(() => settingsStore.layoutMode === LayoutModeEnum.LeftTop) + +function setLayoutMode(mode: LayoutModeEnum) { + settingsStore.layoutMode = mode +} + +/** 布局模式 Composable */ +export function useLayoutMode() { + return { isLeft, isTop, isLeftTop, setLayoutMode } +} diff --git a/management/web/src/common/composables/usePagination.ts b/management/web/src/common/composables/usePagination.ts new file mode 100644 index 0000000..976e748 --- /dev/null +++ b/management/web/src/common/composables/usePagination.ts @@ -0,0 +1,32 @@ +interface PaginationData { + total?: number + currentPage?: number + pageSizes?: number[] + pageSize?: number + layout?: string +} + +/** 默认的分页参数 */ +const DEFAULT_PAGINATION_DATA = { + total: 0, + currentPage: 1, + pageSizes: [10, 20, 50], + pageSize: 10, + layout: "total, sizes, prev, pager, next, jumper" +} + +/** 分页 Composable */ +export function usePagination(initPaginationData: PaginationData = {}) { + // 合并分页参数 + const paginationData = reactive({ ...DEFAULT_PAGINATION_DATA, ...initPaginationData }) + // 改变当前页码 + const handleCurrentChange = (value: number) => { + paginationData.currentPage = value + } + // 改变每页显示条数 + const handleSizeChange = (value: number) => { + paginationData.pageSize = value + } + + return { paginationData, handleCurrentChange, handleSizeChange } +} diff --git a/management/web/src/common/composables/usePany.ts b/management/web/src/common/composables/usePany.ts new file mode 100644 index 0000000..21abf02 --- /dev/null +++ b/management/web/src/common/composables/usePany.ts @@ -0,0 +1,42 @@ +function initStarNotification() { + // setTimeout(() => { + // ElNotification({ + // title: "为爱发电!", + // type: "success", + // message: h( + // "div", + // null, + // [ + // h("div", null, "所有源码均免费开源,如果对你有帮助,欢迎点个 Star 支持一下!"), + // h("a", { style: "color: teal", target: "_blank", href: "https://github.com/un-pany/v3-admin-vite" }, "点击传送") + // ] + // ), + // duration: 0, + // position: "bottom-right" + // }) + // }, 0) +} + +function initStoreNotification() { + // setTimeout(() => { + // ElNotification({ + // title: "懒人服务?", + // type: "warning", + // message: h( + // "div", + // null, + // [ + // h("div", null, "不想自己动手,但想移除 TS 或其他模块?也有懒人套餐!"), + // h("a", { style: "color: teal", target: "_blank", href: "https://github.com/un-pany/v3-admin-vite/issues/225" }, "点击查看") + // ] + // ), + // duration: 0, + // position: "bottom-right" + // }) + // }, 500) +} + +export function usePany() { + // return null + return { initStarNotification, initStoreNotification } +} diff --git a/management/web/src/common/composables/useRouteListener.ts b/management/web/src/common/composables/useRouteListener.ts new file mode 100644 index 0000000..82b5ac3 --- /dev/null +++ b/management/web/src/common/composables/useRouteListener.ts @@ -0,0 +1,52 @@ +import type { Handler } from "mitt" +import type { RouteLocationNormalizedGeneric } from "vue-router" +import mitt from "mitt" + +/** 回调函数的类型 */ +type Callback = (route: RouteLocationNormalizedGeneric) => void + +const emitter = mitt() + +const key = Symbol("ROUTE_CHANGE") + +let latestRoute: RouteLocationNormalizedGeneric + +/** 设置最新的路由信息,触发路由变化事件 */ +export function setRouteChange(to: RouteLocationNormalizedGeneric) { + // 触发事件 + emitter.emit(key, to) + // 缓存最新的路由信息 + latestRoute = to +} + +/** + * @name 订阅路由变化 Composable + * @description 1. 单独用 watch 监听路由会浪费渲染性能 + * @description 2. 可优先选择使用该发布订阅模式去进行分发管理 + */ +export function useRouteListener() { + // 回调函数集合 + const callbackList: Callback[] = [] + + // 监听路由变化(可以选择立即执行) + const listenerRouteChange = (callback: Callback, immediate = false) => { + // 缓存回调函数 + callbackList.push(callback) + // 监听事件 + emitter.on(key, callback as Handler) + // 可以选择立即执行一次回调函数 + immediate && latestRoute && callback(latestRoute) + } + + // 移除路由变化事件监听器 + const removeRouteListener = (callback: Callback) => { + emitter.off(key, callback as Handler) + } + + // 组件销毁前移除监听器 + onBeforeUnmount(() => { + callbackList.forEach(removeRouteListener) + }) + + return { listenerRouteChange, removeRouteListener } +} diff --git a/management/web/src/common/composables/useTheme.ts b/management/web/src/common/composables/useTheme.ts new file mode 100644 index 0000000..ec0c12f --- /dev/null +++ b/management/web/src/common/composables/useTheme.ts @@ -0,0 +1,75 @@ +import { getActiveThemeName, setActiveThemeName } from "@@/utils/cache/local-storage" +import { setCssVar } from "@@/utils/css" + +const DEFAULT_THEME_NAME = "normal" + +type DefaultThemeName = typeof DEFAULT_THEME_NAME + +/** 注册的主题名称, 其中 DefaultThemeName 是必填的 */ +export type ThemeName = DefaultThemeName | "dark" | "dark-blue" + +interface ThemeList { + title: string + name: ThemeName +} + +/** 主题列表 */ +const themeList: ThemeList[] = [ + { + title: "默认", + name: DEFAULT_THEME_NAME + }, + { + title: "黑暗", + name: "dark" + }, + { + title: "深蓝", + name: "dark-blue" + } +] + +/** 正在应用的主题名称 */ +const activeThemeName = ref(getActiveThemeName() || DEFAULT_THEME_NAME) + +/** 设置主题 */ +function setTheme({ clientX, clientY }: MouseEvent, value: ThemeName) { + const maxRadius = Math.hypot( + Math.max(clientX, window.innerWidth - clientX), + Math.max(clientY, window.innerHeight - clientY) + ) + setCssVar("--v3-theme-x", `${clientX}px`) + setCssVar("--v3-theme-y", `${clientY}px`) + setCssVar("--v3-theme-r", `${maxRadius}px`) + const handler = () => { + activeThemeName.value = value + } + document.startViewTransition ? document.startViewTransition(handler) : handler() +} + +/** 在 html 根元素上挂载 class */ +function addHtmlClass(value: ThemeName) { + document.documentElement.classList.add(value) +} + +/** 在 html 根元素上移除其他主题 class */ +function removeHtmlClass(value: ThemeName) { + const otherThemeNameList = themeList.map(item => item.name).filter(name => name !== value) + document.documentElement.classList.remove(...otherThemeNameList) +} + +/** 初始化 */ +function initTheme() { + // watchEffect 来收集副作用 + watchEffect(() => { + const value = activeThemeName.value + removeHtmlClass(value) + addHtmlClass(value) + setActiveThemeName(value) + }) +} + +/** 主题 Composable */ +export function useTheme() { + return { themeList, activeThemeName, initTheme, setTheme } +} diff --git a/management/web/src/common/composables/useTitle.ts b/management/web/src/common/composables/useTitle.ts new file mode 100644 index 0000000..1305363 --- /dev/null +++ b/management/web/src/common/composables/useTitle.ts @@ -0,0 +1,22 @@ +/** 项目标题 */ +const VITE_APP_TITLE = import.meta.env.VITE_APP_TITLE ?? "V3 Admin Vite" + +/** 动态标题 */ +const dynamicTitle = ref("") + +/** 设置标题 */ +function setTitle(title?: string) { + dynamicTitle.value = title ? `${VITE_APP_TITLE} | ${title}` : VITE_APP_TITLE +} + +// 监听标题变化 +watch(dynamicTitle, (value, oldValue) => { + if (document && value !== oldValue) { + document.title = value + } +}) + +/** 标题 Composable */ +export function useTitle() { + return { setTitle } +} diff --git a/management/web/src/common/composables/useWatermark.ts b/management/web/src/common/composables/useWatermark.ts new file mode 100644 index 0000000..d975a4a --- /dev/null +++ b/management/web/src/common/composables/useWatermark.ts @@ -0,0 +1,233 @@ +import type { Ref } from "vue" +import { debounce } from "lodash-es" + +/** 默认配置 */ +const DEFAULT_CONFIG = { + /** 防御(默认开启,能防御水印被删除或隐藏,但可能会有性能损耗) */ + defense: true, + /** 文本颜色 */ + color: "#c0c4cc", + /** 文本透明度 */ + opacity: 0.5, + /** 文本字体大小 */ + size: 16, + /** 文本字体 */ + family: "serif", + /** 文本倾斜角度 */ + angle: -20, + /** 一处水印所占宽度(数值越大水印密度越低) */ + width: 300, + /** 一处水印所占高度(数值越大水印密度越低) */ + height: 200 +} + +type DefaultConfig = typeof DEFAULT_CONFIG + +interface Observer { + watermarkElMutationObserver?: MutationObserver + parentElMutationObserver?: MutationObserver + parentElResizeObserver?: ResizeObserver +} + +/** body 元素 */ +const bodyEl = ref(document.body) + +/** + * @name 水印 Composable + * @description 1. 可以选择传入挂载水印的容器元素,默认是 body + * @description 2. 做了水印防御,能有效防御别人打开控制台删除或隐藏水印 + */ +export function useWatermark(parentEl: Ref = bodyEl) { + // 备份文本 + let backupText: string + // 最终配置 + let mergeConfig: DefaultConfig + // 水印元素 + let watermarkEl: HTMLElement | null = null + // 观察器 + const observer: Observer = { + watermarkElMutationObserver: undefined, + parentElMutationObserver: undefined, + parentElResizeObserver: undefined + } + + // 设置水印 + const setWatermark = (text: string, config: Partial = {}) => { + if (!parentEl.value) return console.warn("请在 DOM 挂载完成后再调用 setWatermark 方法设置水印") + // 备份文本 + backupText = text + // 合并配置 + mergeConfig = { ...DEFAULT_CONFIG, ...config } + // 创建或更新水印元素 + watermarkEl ? updateWatermarkEl() : createWatermarkEl() + // 监听水印元素和容器元素的变化 + addElListener(parentEl.value) + } + + // 创建水印元素 + const createWatermarkEl = () => { + const isBody = parentEl.value!.tagName.toLowerCase() === bodyEl.value.tagName.toLowerCase() + const watermarkElPosition = isBody ? "fixed" : "absolute" + const parentElPosition = isBody ? "" : "relative" + watermarkEl = document.createElement("div") + watermarkEl.style.pointerEvents = "none" + watermarkEl.style.top = "0" + watermarkEl.style.left = "0" + watermarkEl.style.position = watermarkElPosition + watermarkEl.style.zIndex = "99999" + const { clientWidth, clientHeight } = parentEl.value! + updateWatermarkEl({ width: clientWidth, height: clientHeight }) + // 设置水印容器为相对定位 + parentEl.value!.style.position = parentElPosition + // 将水印元素添加到水印容器中 + parentEl.value!.appendChild(watermarkEl) + } + + // 更新水印元素 + const updateWatermarkEl = ( + options: Partial<{ + width: number + height: number + }> = {} + ) => { + if (!watermarkEl) return + backupText && (watermarkEl.style.background = `url(${createBase64()}) left top repeat`) + options.width && (watermarkEl.style.width = `${options.width}px`) + options.height && (watermarkEl.style.height = `${options.height}px`) + } + + // 创建 base64 图片 + const createBase64 = () => { + const { color, opacity, size, family, angle, width, height } = mergeConfig + const canvasEl = document.createElement("canvas") + canvasEl.width = width + canvasEl.height = height + const ctx = canvasEl.getContext("2d") + if (ctx) { + ctx.fillStyle = color + ctx.globalAlpha = opacity + ctx.font = `${size}px ${family}` + ctx.rotate((Math.PI / 180) * angle) + ctx.fillText(backupText, 0, height / 2) + } + return canvasEl.toDataURL() + } + + // 清除水印 + const clearWatermark = () => { + if (!parentEl.value || !watermarkEl) return + // 移除对水印元素和容器元素的监听 + removeListener() + // 移除水印元素 + try { + parentEl.value.removeChild(watermarkEl) + } catch { + // 比如在无防御情况下,用户打开控制台删除了这个元素 + console.warn("水印元素已不存在,请重新创建") + } finally { + watermarkEl = null + } + } + + // 刷新水印(防御时调用) + const updateWatermark = debounce(() => { + clearWatermark() + createWatermarkEl() + addElListener(parentEl.value!) + }, 100) + + // 监听水印元素和容器元素的变化(DOM 变化 & DOM 大小变化) + const addElListener = (targetNode: HTMLElement) => { + // 判断是否开启防御 + if (mergeConfig.defense) { + // 防止重复添加监听 + if (!observer.watermarkElMutationObserver && !observer.parentElMutationObserver) { + // 监听 DOM 变化 + addMutationListener(targetNode) + } + } else { + // 无防御时不需要 mutation 监听 + removeListener("mutation") + } + // 防止重复添加监听 + if (!observer.parentElResizeObserver) { + // 监听 DOM 大小变化 + addResizeListener(targetNode) + } + } + + // 移除对水印元素和容器元素的监听,传参可指定要移除哪个监听,不传默认移除全部监听 + const removeListener = (kind: "mutation" | "resize" | "all" = "all") => { + // 移除 mutation 监听 + if (kind === "mutation" || kind === "all") { + observer.watermarkElMutationObserver?.disconnect() + observer.watermarkElMutationObserver = undefined + observer.parentElMutationObserver?.disconnect() + observer.parentElMutationObserver = undefined + } + // 移除 resize 监听 + if (kind === "resize" || kind === "all") { + observer.parentElResizeObserver?.disconnect() + observer.parentElResizeObserver = undefined + } + } + + // 监听 DOM 变化 + const addMutationListener = (targetNode: HTMLElement) => { + // 当观察到变动时执行的回调 + const mutationCallback = debounce((mutationList: MutationRecord[]) => { + // 水印的防御(防止用户手动删除水印元素或通过 CSS 隐藏水印) + mutationList.forEach( + debounce((mutation: MutationRecord) => { + switch (mutation.type) { + case "attributes": + mutation.target === watermarkEl && updateWatermark() + break + case "childList": + mutation.removedNodes.forEach((item) => { + item === watermarkEl && targetNode.appendChild(watermarkEl) + }) + break + } + }, 100) + ) + }, 100) + // 创建观察器实例并传入回调 + observer.watermarkElMutationObserver = new MutationObserver(mutationCallback) + observer.parentElMutationObserver = new MutationObserver(mutationCallback) + // 以上述配置开始观察目标节点 + observer.watermarkElMutationObserver.observe(watermarkEl!, { + // 观察目标节点属性是否变动,默认为 true + attributes: true, + // 观察目标子节点是否有添加或者删除,默认为 false + childList: false, + // 是否拓展到观察所有后代节点,默认为 false + subtree: false + }) + observer.parentElMutationObserver.observe(targetNode, { + attributes: false, + childList: true, + subtree: false + }) + } + + // 监听 DOM 大小变化 + const addResizeListener = (targetNode: HTMLElement) => { + // 当 targetNode 元素大小变化时去更新整个水印的大小 + const resizeCallback = debounce(() => { + const { clientWidth, clientHeight } = targetNode + updateWatermarkEl({ width: clientWidth, height: clientHeight }) + }, 500) + // 创建一个观察器实例并传入回调 + observer.parentElResizeObserver = new ResizeObserver(resizeCallback) + // 开始观察目标节点 + observer.parentElResizeObserver.observe(targetNode) + } + + // 在组件卸载前移除水印以及各种监听 + onBeforeUnmount(() => { + clearWatermark() + }) + + return { setWatermark, clearWatermark } +} diff --git a/management/web/src/common/constants/app-key.ts b/management/web/src/common/constants/app-key.ts new file mode 100644 index 0000000..cd5d7b9 --- /dev/null +++ b/management/web/src/common/constants/app-key.ts @@ -0,0 +1,22 @@ +/** 设备类型 */ +export enum DeviceEnum { + Mobile, + Desktop +} + +/** 布局模式 */ +export enum LayoutModeEnum { + Left = "left", + Top = "top", + LeftTop = "left-top" +} + +/** 侧边栏打开状态常量 */ +export const SIDEBAR_OPENED = "opened" + +/** 侧边栏关闭状态常量 */ +export const SIDEBAR_CLOSED = "closed" + +export type SidebarOpened = typeof SIDEBAR_OPENED + +export type SidebarClosed = typeof SIDEBAR_CLOSED diff --git a/management/web/src/common/constants/cache-key.ts b/management/web/src/common/constants/cache-key.ts new file mode 100644 index 0000000..8b6fc64 --- /dev/null +++ b/management/web/src/common/constants/cache-key.ts @@ -0,0 +1,11 @@ +const SYSTEM_NAME = "v3-admin-vite" + +/** 缓存数据时用到的 Key */ +export class CacheKey { + static readonly TOKEN = `${SYSTEM_NAME}-token-key` + static readonly CONFIG_LAYOUT = `${SYSTEM_NAME}-config-layout-key` + static readonly SIDEBAR_STATUS = `${SYSTEM_NAME}-sidebar-status-key` + static readonly ACTIVE_THEME_NAME = `${SYSTEM_NAME}-active-theme-name-key` + static readonly VISITED_VIEWS = `${SYSTEM_NAME}-visited-views-key` + static readonly CACHED_VIEWS = `${SYSTEM_NAME}-cached-views-key` +} diff --git a/management/web/src/common/utils/cache/cookies.ts b/management/web/src/common/utils/cache/cookies.ts new file mode 100644 index 0000000..d542159 --- /dev/null +++ b/management/web/src/common/utils/cache/cookies.ts @@ -0,0 +1,16 @@ +// 统一处理 Cookie + +import { CacheKey } from "@@/constants/cache-key" +import Cookies from "js-cookie" + +export function getToken() { + return Cookies.get(CacheKey.TOKEN) +} + +export function setToken(token: string) { + Cookies.set(CacheKey.TOKEN, token) +} + +export function removeToken() { + Cookies.remove(CacheKey.TOKEN) +} diff --git a/management/web/src/common/utils/cache/local-storage.ts b/management/web/src/common/utils/cache/local-storage.ts new file mode 100644 index 0000000..98519e2 --- /dev/null +++ b/management/web/src/common/utils/cache/local-storage.ts @@ -0,0 +1,60 @@ +// 统一处理 localStorage + +import type { LayoutsConfig } from "@/layouts/config" +import type { TagView } from "@/pinia/stores/tags-view" +import type { ThemeName } from "@@/composables/useTheme" +import type { SidebarClosed, SidebarOpened } from "@@/constants/app-key" +import { CacheKey } from "@@/constants/cache-key" + +// #region 系统布局配置 +export function getLayoutsConfig() { + const json = localStorage.getItem(CacheKey.CONFIG_LAYOUT) + return json ? (JSON.parse(json) as LayoutsConfig) : null +} +export function setLayoutsConfig(settings: LayoutsConfig) { + localStorage.setItem(CacheKey.CONFIG_LAYOUT, JSON.stringify(settings)) +} +export function removeLayoutsConfig() { + localStorage.removeItem(CacheKey.CONFIG_LAYOUT) +} +// #endregion + +// #region 侧边栏状态 +export function getSidebarStatus() { + return localStorage.getItem(CacheKey.SIDEBAR_STATUS) +} +export function setSidebarStatus(sidebarStatus: SidebarOpened | SidebarClosed) { + localStorage.setItem(CacheKey.SIDEBAR_STATUS, sidebarStatus) +} +// #endregion + +// #region 正在应用的主题名称 +export function getActiveThemeName() { + return localStorage.getItem(CacheKey.ACTIVE_THEME_NAME) as ThemeName | null +} +export function setActiveThemeName(themeName: ThemeName) { + localStorage.setItem(CacheKey.ACTIVE_THEME_NAME, themeName) +} +// #endregion + +// #region 标签栏 +export function getVisitedViews() { + const json = localStorage.getItem(CacheKey.VISITED_VIEWS) + return JSON.parse(json ?? "[]") as TagView[] +} +export function setVisitedViews(views: TagView[]) { + views.forEach((view) => { + // 删除不必要的属性,防止 JSON.stringify 处理到循环引用 + delete view.matched + delete view.redirectedFrom + }) + localStorage.setItem(CacheKey.VISITED_VIEWS, JSON.stringify(views)) +} +export function getCachedViews() { + const json = localStorage.getItem(CacheKey.CACHED_VIEWS) + return JSON.parse(json ?? "[]") as string[] +} +export function setCachedViews(views: string[]) { + localStorage.setItem(CacheKey.CACHED_VIEWS, JSON.stringify(views)) +} +// #endregion diff --git a/management/web/src/common/utils/css.ts b/management/web/src/common/utils/css.ts new file mode 100644 index 0000000..b5b3c64 --- /dev/null +++ b/management/web/src/common/utils/css.ts @@ -0,0 +1,18 @@ +/** 获取指定元素(默认全局)上的 CSS 变量的值 */ +export function getCssVar(varName: string, element: HTMLElement = document.documentElement) { + if (!varName?.startsWith("--")) { + console.error("CSS 变量名应以 '--' 开头") + return "" + } + // 没有拿到值时,会返回空串 + return getComputedStyle(element).getPropertyValue(varName) +} + +/** 设置指定元素(默认全局)上的 CSS 变量的值 */ +export function setCssVar(varName: string, value: string, element: HTMLElement = document.documentElement) { + if (!varName?.startsWith("--")) { + console.error("CSS 变量名应以 '--' 开头") + return + } + element.style.setProperty(varName, value) +} diff --git a/management/web/src/common/utils/datetime.ts b/management/web/src/common/utils/datetime.ts new file mode 100644 index 0000000..5c71f9b --- /dev/null +++ b/management/web/src/common/utils/datetime.ts @@ -0,0 +1,9 @@ +import dayjs from "dayjs" + +const INVALID_DATE = "N/A" + +/** 格式化日期时间 */ +export function formatDateTime(datetime: string | number | Date = "", template: string = "YYYY-MM-DD HH:mm:ss") { + const day = dayjs(datetime) + return day.isValid() ? day.format(template) : INVALID_DATE +} diff --git a/management/web/src/common/utils/permission.ts b/management/web/src/common/utils/permission.ts new file mode 100644 index 0000000..be2c4dc --- /dev/null +++ b/management/web/src/common/utils/permission.ts @@ -0,0 +1,13 @@ +import { useUserStore } from "@/pinia/stores/user" +import { isArray } from "@@/utils/validate" + +/** 全局权限判断函数,和权限指令 v-permission 功能类似 */ +export function checkPermission(permissionRoles: string[]): boolean { + if (isArray(permissionRoles) && permissionRoles.length > 0) { + const { roles } = useUserStore() + return roles.some(role => permissionRoles.includes(role)) + } else { + console.error("参数必须是一个数组且长度大于 0,参考:checkPermission(['admin', 'editor'])") + return false + } +} diff --git a/management/web/src/common/utils/validate.ts b/management/web/src/common/utils/validate.ts new file mode 100644 index 0000000..47c7f5f --- /dev/null +++ b/management/web/src/common/utils/validate.ts @@ -0,0 +1,15 @@ +/** 判断是否为数组 */ +export function isArray(arg: T) { + return Array.isArray ? Array.isArray(arg) : Object.prototype.toString.call(arg) === "[object Array]" +} + +/** 判断是否为字符串 */ +export function isString(str: unknown) { + return typeof str === "string" || str instanceof String +} + +/** 判断是否为外链 */ +export function isExternal(path: string) { + const reg = /^(https?:|mailto:|tel:)/ + return reg.test(path) +} diff --git a/management/web/src/http/axios.ts b/management/web/src/http/axios.ts new file mode 100644 index 0000000..a186324 --- /dev/null +++ b/management/web/src/http/axios.ts @@ -0,0 +1,131 @@ +import type { AxiosInstance, AxiosRequestConfig } from "axios" +import { useUserStore } from "@/pinia/stores/user" +import { getToken } from "@@/utils/cache/cookies" +import axios from "axios" +import { get, merge } from "lodash-es" + +/** 退出登录并强制刷新页面(会重定向到登录页) */ +function logout() { + useUserStore().logout() + location.reload() +} + +/** 创建请求实例 */ +function createInstance() { + // 创建一个 axios 实例命名为 instance + const instance = axios.create() + // 请求拦截器 + instance.interceptors.request.use( + // 发送之前 + config => config, + // 发送失败 + error => Promise.reject(error) + ) + // 响应拦截器(可根据具体业务作出相应的调整) + instance.interceptors.response.use( + (response) => { + // apiData 是 api 返回的数据 + const apiData = response.data + // 二进制数据则直接返回 + const responseType = response.request?.responseType + if (responseType === "blob" || responseType === "arraybuffer") return apiData + // 这个 code 是和后端约定的业务 code + const code = apiData.code + // 如果没有 code, 代表这不是项目后端开发的 api + if (code === undefined) { + ElMessage.error("非本系统的接口") + return Promise.reject(new Error("非本系统的接口")) + } + switch (code) { + case 0: + // 本系统采用 code === 0 来表示没有业务错误 + return apiData + case 401: + // Token 过期时 + return logout() + default: + // 不是正确的 code + ElMessage.error(apiData.message || "Error") + return Promise.reject(new Error("Error")) + } + }, + (error) => { + // status 是 HTTP 状态码 + const status = get(error, "response.status") + const message = get(error, "response.data.message") + switch (status) { + case 400: + error.message = "请求错误" + break + case 401: + // Token 过期时 + error.message = message || "未授权" + logout() + break + case 403: + error.message = message || "拒绝访问" + break + case 404: + error.message = "请求地址出错" + break + case 408: + error.message = "请求超时" + break + case 500: + error.message = "服务器内部错误" + break + case 501: + error.message = "服务未实现" + break + case 502: + error.message = "网关错误" + break + case 503: + error.message = "服务不可用" + break + case 504: + error.message = "网关超时" + break + case 505: + error.message = "HTTP 版本不受支持" + break + } + ElMessage.error(error.message) + return Promise.reject(error) + } + ) + return instance +} + +/** 创建请求方法 */ +function createRequest(instance: AxiosInstance) { + return (config: AxiosRequestConfig): Promise => { + const token = getToken() + // 默认配置 + const defaultConfig: AxiosRequestConfig = { + // 接口地址 + baseURL: import.meta.env.VITE_BASE_URL, + // 请求头 + headers: { + // 携带 Token + "Authorization": token ? `Bearer ${token}` : undefined, + "Content-Type": "application/json" + }, + // 请求体 + data: {}, + // 请求超时 + timeout: 5000, + // 跨域请求时是否携带 Cookies + withCredentials: false + } + // 将默认配置 defaultConfig 和传入的自定义配置 config 进行合并成为 mergeConfig + const mergeConfig = merge(defaultConfig, config) + return instance(mergeConfig) + } +} + +/** 用于请求的实例 */ +const instance = createInstance() + +/** 用于请求的方法 */ +export const request = createRequest(instance) diff --git a/management/web/src/layouts/components/AppMain/index.vue b/management/web/src/layouts/components/AppMain/index.vue new file mode 100644 index 0000000..133aedf --- /dev/null +++ b/management/web/src/layouts/components/AppMain/index.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/management/web/src/layouts/components/Breadcrumb/index.vue b/management/web/src/layouts/components/Breadcrumb/index.vue new file mode 100644 index 0000000..56863f1 --- /dev/null +++ b/management/web/src/layouts/components/Breadcrumb/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/management/web/src/layouts/components/Footer/index.vue b/management/web/src/layouts/components/Footer/index.vue new file mode 100644 index 0000000..fe54173 --- /dev/null +++ b/management/web/src/layouts/components/Footer/index.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/management/web/src/layouts/components/Hamburger/index.vue b/management/web/src/layouts/components/Hamburger/index.vue new file mode 100644 index 0000000..d7d5ba7 --- /dev/null +++ b/management/web/src/layouts/components/Hamburger/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/management/web/src/layouts/components/Logo/index.vue b/management/web/src/layouts/components/Logo/index.vue new file mode 100644 index 0000000..86f3af4 --- /dev/null +++ b/management/web/src/layouts/components/Logo/index.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/management/web/src/layouts/components/NavigationBar/index.vue b/management/web/src/layouts/components/NavigationBar/index.vue new file mode 100644 index 0000000..608865d --- /dev/null +++ b/management/web/src/layouts/components/NavigationBar/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/management/web/src/layouts/components/RightPanel/index.vue b/management/web/src/layouts/components/RightPanel/index.vue new file mode 100644 index 0000000..90accec --- /dev/null +++ b/management/web/src/layouts/components/RightPanel/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/management/web/src/layouts/components/Settings/SelectLayoutMode.vue b/management/web/src/layouts/components/Settings/SelectLayoutMode.vue new file mode 100644 index 0000000..37322fb --- /dev/null +++ b/management/web/src/layouts/components/Settings/SelectLayoutMode.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/management/web/src/layouts/components/Settings/index.vue b/management/web/src/layouts/components/Settings/index.vue new file mode 100644 index 0000000..4ba4bc6 --- /dev/null +++ b/management/web/src/layouts/components/Settings/index.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/management/web/src/layouts/components/Sidebar/Item.vue b/management/web/src/layouts/components/Sidebar/Item.vue new file mode 100644 index 0000000..a5b22be --- /dev/null +++ b/management/web/src/layouts/components/Sidebar/Item.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/management/web/src/layouts/components/Sidebar/Link.vue b/management/web/src/layouts/components/Sidebar/Link.vue new file mode 100644 index 0000000..f9907dc --- /dev/null +++ b/management/web/src/layouts/components/Sidebar/Link.vue @@ -0,0 +1,18 @@ + + + diff --git a/management/web/src/layouts/components/Sidebar/index.vue b/management/web/src/layouts/components/Sidebar/index.vue new file mode 100644 index 0000000..3f864f0 --- /dev/null +++ b/management/web/src/layouts/components/Sidebar/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/management/web/src/layouts/components/TagsView/ScrollPane.vue b/management/web/src/layouts/components/TagsView/ScrollPane.vue new file mode 100644 index 0000000..c9e8d55 --- /dev/null +++ b/management/web/src/layouts/components/TagsView/ScrollPane.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/management/web/src/layouts/components/TagsView/index.vue b/management/web/src/layouts/components/TagsView/index.vue new file mode 100644 index 0000000..899bda7 --- /dev/null +++ b/management/web/src/layouts/components/TagsView/index.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/management/web/src/layouts/components/index.ts b/management/web/src/layouts/components/index.ts new file mode 100644 index 0000000..7669934 --- /dev/null +++ b/management/web/src/layouts/components/index.ts @@ -0,0 +1,10 @@ +export { default as AppMain } from "./AppMain/index.vue" +export { default as Breadcrumb } from "./Breadcrumb/index.vue" +export { default as Footer } from "./Footer/index.vue" +export { default as Hamburger } from "./Hamburger/index.vue" +export { default as Logo } from "./Logo/index.vue" +export { default as NavigationBar } from "./NavigationBar/index.vue" +export { default as RightPanel } from "./RightPanel/index.vue" +export { default as Settings } from "./Settings/index.vue" +export { default as Sidebar } from "./Sidebar/index.vue" +export { default as TagsView } from "./TagsView/index.vue" diff --git a/management/web/src/layouts/composables/useResize.ts b/management/web/src/layouts/composables/useResize.ts new file mode 100644 index 0000000..d012ee3 --- /dev/null +++ b/management/web/src/layouts/composables/useResize.ts @@ -0,0 +1,55 @@ +import { useAppStore } from "@/pinia/stores/app" +import { useRouteListener } from "@@/composables/useRouteListener" +import { DeviceEnum } from "@@/constants/app-key" + +/** 参考 Bootstrap 的响应式设计将最大移动端宽度设置为 992 */ +const MAX_MOBILE_WIDTH = 992 + +/** + * @name 浏览器宽度变化 Composable + * @description 根据浏览器宽度变化,变换 Layout 布局 + */ +export function useResize() { + const appStore = useAppStore() + const { listenerRouteChange } = useRouteListener() + + // 用于判断当前设备是否为移动端 + const isMobile = () => { + const rect = document.body.getBoundingClientRect() + return rect.width - 1 < MAX_MOBILE_WIDTH + } + + // 用于处理窗口大小变化事件 + const resizeHandler = () => { + if (!document.hidden) { + const _isMobile = isMobile() + appStore.toggleDevice(_isMobile ? DeviceEnum.Mobile : DeviceEnum.Desktop) + _isMobile && appStore.closeSidebar(true) + } + } + + // 监听路由变化,根据设备类型调整布局 + listenerRouteChange(() => { + if (appStore.device === DeviceEnum.Mobile && appStore.sidebar.opened) { + appStore.closeSidebar(false) + } + }) + + // 在组件挂载前添加窗口大小变化事件监听器 + onBeforeMount(() => { + window.addEventListener("resize", resizeHandler) + }) + + // 在组件挂载后根据窗口大小判断设备类型并调整布局 + onMounted(() => { + if (isMobile()) { + appStore.toggleDevice(DeviceEnum.Mobile) + appStore.closeSidebar(true) + } + }) + + // 在组件卸载前移除窗口大小变化事件监听器 + onBeforeUnmount(() => { + window.removeEventListener("resize", resizeHandler) + }) +} diff --git a/management/web/src/layouts/config.ts b/management/web/src/layouts/config.ts new file mode 100644 index 0000000..3ab74bc --- /dev/null +++ b/management/web/src/layouts/config.ts @@ -0,0 +1,55 @@ +import { LayoutModeEnum } from "@@/constants/app-key" +import { getLayoutsConfig } from "@@/utils/cache/local-storage" + +/** 项目配置类型 */ +export interface LayoutsConfig { + /** 是否显示设置按钮和面板 */ + showSettings: boolean + /** 布局模式 */ + layoutMode: LayoutModeEnum + /** 是否显示标签栏 */ + showTagsView: boolean + /** 是否显示 Logo */ + showLogo: boolean + /** 是否固定 Header */ + fixedHeader: boolean + /** 是否显示页脚 */ + showFooter: boolean + /** 是否显示消息通知 */ + showNotify: boolean + /** 是否显示切换主题按钮 */ + showThemeSwitch: boolean + /** 是否显示全屏按钮 */ + showScreenfull: boolean + /** 是否显示搜索按钮 */ + showSearchMenu: boolean + /** 是否缓存标签栏 */ + cacheTagsView: boolean + /** 开启系统水印 */ + showWatermark: boolean + /** 是否显示灰色模式 */ + showGreyMode: boolean + /** 是否显示色弱模式 */ + showColorWeakness: boolean +} + +/** 默认配置 */ +const DEFAULT_CONFIG: LayoutsConfig = { + layoutMode: LayoutModeEnum.LeftTop, + showSettings: true, + showTagsView: true, + fixedHeader: true, + showFooter: true, + showLogo: true, + showNotify: false, + showThemeSwitch: true, + showScreenfull: true, + showSearchMenu: true, + cacheTagsView: false, + showWatermark: false, + showGreyMode: false, + showColorWeakness: false +} + +/** 项目配置 */ +export const layoutsConfig: LayoutsConfig = { ...DEFAULT_CONFIG, ...getLayoutsConfig() } diff --git a/management/web/src/layouts/index.vue b/management/web/src/layouts/index.vue new file mode 100644 index 0000000..78eae93 --- /dev/null +++ b/management/web/src/layouts/index.vue @@ -0,0 +1,49 @@ + + + diff --git a/management/web/src/layouts/modes/LeftMode.vue b/management/web/src/layouts/modes/LeftMode.vue new file mode 100644 index 0000000..607000d --- /dev/null +++ b/management/web/src/layouts/modes/LeftMode.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/management/web/src/layouts/modes/LeftTopMode.vue b/management/web/src/layouts/modes/LeftTopMode.vue new file mode 100644 index 0000000..2e8cf69 --- /dev/null +++ b/management/web/src/layouts/modes/LeftTopMode.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/management/web/src/layouts/modes/TopMode.vue b/management/web/src/layouts/modes/TopMode.vue new file mode 100644 index 0000000..4d5bfe5 --- /dev/null +++ b/management/web/src/layouts/modes/TopMode.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/management/web/src/main.ts b/management/web/src/main.ts new file mode 100644 index 0000000..98a1276 --- /dev/null +++ b/management/web/src/main.ts @@ -0,0 +1,28 @@ +/* eslint-disable perfectionist/sort-imports */ + +// core +import { pinia } from "@/pinia" +import { router } from "@/router" +import { installPlugins } from "@/plugins" +import App from "@/App.vue" +// css +import "normalize.css" +import "nprogress/nprogress.css" +import "element-plus/theme-chalk/dark/css-vars.css" +import "vxe-table/lib/style.css" +import "@@/assets/styles/index.scss" +import "virtual:uno.css" + +// 创建应用实例 +const app = createApp(App) + +// 安装插件(全局组件、自定义指令等) +installPlugins(app) + +// 安装 pinia 和 router +app.use(pinia).use(router) + +// router 准备就绪后挂载应用 +router.isReady().then(() => { + app.mount("#app") +}) diff --git a/management/web/src/pages/dashboard/components/Admin.vue b/management/web/src/pages/dashboard/components/Admin.vue new file mode 100644 index 0000000..f204fed --- /dev/null +++ b/management/web/src/pages/dashboard/components/Admin.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/management/web/src/pages/dashboard/components/Editor.vue b/management/web/src/pages/dashboard/components/Editor.vue new file mode 100644 index 0000000..1aaf09b --- /dev/null +++ b/management/web/src/pages/dashboard/components/Editor.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/management/web/src/pages/dashboard/images/dashboard.svg b/management/web/src/pages/dashboard/images/dashboard.svg new file mode 100644 index 0000000..434d465 --- /dev/null +++ b/management/web/src/pages/dashboard/images/dashboard.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/pages/dashboard/index.vue b/management/web/src/pages/dashboard/index.vue new file mode 100644 index 0000000..904f5d8 --- /dev/null +++ b/management/web/src/pages/dashboard/index.vue @@ -0,0 +1,12 @@ + + + diff --git a/management/web/src/pages/demo/composable-demo/apis/use-fetch-select.ts b/management/web/src/pages/demo/composable-demo/apis/use-fetch-select.ts new file mode 100644 index 0000000..3dc6f2d --- /dev/null +++ b/management/web/src/pages/demo/composable-demo/apis/use-fetch-select.ts @@ -0,0 +1,39 @@ +/** 模拟接口响应数据 */ +const SELECT_RESPONSE_DATA = { + code: 0, + data: [ + { + label: "苹果", + value: 1 + }, + { + label: "香蕉", + value: 2 + }, + { + label: "橘子", + value: 3, + disabled: true + } + ], + message: "获取 Select 数据成功" +} + +const ERROR_MESSAGE = "接口发生错误" + +/** 模拟接口 */ +export function getSelectDataApi() { + return new Promise((resolve, reject) => { + // 模拟接口响应时间 2s + setTimeout(() => { + if (Math.random() < 0.8) { + // 模拟接口调用成功 + resolve(SELECT_RESPONSE_DATA) + } else { + // 模拟接口调用出错 + reject(new Error(ERROR_MESSAGE)) + ElMessage.error(ERROR_MESSAGE) + } + }, 2000) + }) +} diff --git a/management/web/src/pages/demo/composable-demo/apis/use-fullscreen-loading.ts b/management/web/src/pages/demo/composable-demo/apis/use-fullscreen-loading.ts new file mode 100644 index 0000000..756cd7e --- /dev/null +++ b/management/web/src/pages/demo/composable-demo/apis/use-fullscreen-loading.ts @@ -0,0 +1,26 @@ +/** 模拟接口响应数据 */ +const SUCCESS_RESPONSE_DATA = { + code: 0, + data: { + list: [] as number[] + }, + message: "获取成功" +} + +/** 模拟请求接口成功 */ +export function getSuccessApi(list: number[]) { + return new Promise((resolve) => { + setTimeout(() => { + resolve({ ...SUCCESS_RESPONSE_DATA, data: { list } }) + }, 1000) + }) +} + +/** 模拟请求接口失败 */ +export function getErrorApi() { + return new Promise((_resolve, reject) => { + setTimeout(() => { + reject(new Error("发生错误")) + }, 1000) + }) +} diff --git a/management/web/src/pages/demo/composable-demo/use-fetch-select.vue b/management/web/src/pages/demo/composable-demo/use-fetch-select.vue new file mode 100644 index 0000000..6fa5f95 --- /dev/null +++ b/management/web/src/pages/demo/composable-demo/use-fetch-select.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/management/web/src/pages/demo/composable-demo/use-fullscreen-loading.vue b/management/web/src/pages/demo/composable-demo/use-fullscreen-loading.vue new file mode 100644 index 0000000..c04225b --- /dev/null +++ b/management/web/src/pages/demo/composable-demo/use-fullscreen-loading.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/management/web/src/pages/demo/composable-demo/use-watermark.vue b/management/web/src/pages/demo/composable-demo/use-watermark.vue new file mode 100644 index 0000000..5438772 --- /dev/null +++ b/management/web/src/pages/demo/composable-demo/use-watermark.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/management/web/src/pages/demo/element-plus/index.vue b/management/web/src/pages/demo/element-plus/index.vue new file mode 100644 index 0000000..233c994 --- /dev/null +++ b/management/web/src/pages/demo/element-plus/index.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/management/web/src/pages/demo/level2/index.vue b/management/web/src/pages/demo/level2/index.vue new file mode 100644 index 0000000..3018f18 --- /dev/null +++ b/management/web/src/pages/demo/level2/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/management/web/src/pages/demo/level2/level3/index.vue b/management/web/src/pages/demo/level2/level3/index.vue new file mode 100644 index 0000000..a1ad378 --- /dev/null +++ b/management/web/src/pages/demo/level2/level3/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/management/web/src/pages/demo/permission/button-level.vue b/management/web/src/pages/demo/permission/button-level.vue new file mode 100644 index 0000000..34c2b31 --- /dev/null +++ b/management/web/src/pages/demo/permission/button-level.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/management/web/src/pages/demo/permission/components/SwitchRoles.vue b/management/web/src/pages/demo/permission/components/SwitchRoles.vue new file mode 100644 index 0000000..a1ce0a2 --- /dev/null +++ b/management/web/src/pages/demo/permission/components/SwitchRoles.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/management/web/src/pages/demo/permission/page-level.vue b/management/web/src/pages/demo/permission/page-level.vue new file mode 100644 index 0000000..4474602 --- /dev/null +++ b/management/web/src/pages/demo/permission/page-level.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/management/web/src/pages/demo/unocss/index.vue b/management/web/src/pages/demo/unocss/index.vue new file mode 100644 index 0000000..64b69bf --- /dev/null +++ b/management/web/src/pages/demo/unocss/index.vue @@ -0,0 +1,17 @@ + diff --git a/management/web/src/pages/demo/vxe-table/index.vue b/management/web/src/pages/demo/vxe-table/index.vue new file mode 100644 index 0000000..b05b5de --- /dev/null +++ b/management/web/src/pages/demo/vxe-table/index.vue @@ -0,0 +1,425 @@ + + + + + diff --git a/management/web/src/pages/demo/vxe-table/tsx/RoleColumnSlots.tsx b/management/web/src/pages/demo/vxe-table/tsx/RoleColumnSlots.tsx new file mode 100644 index 0000000..d8f075d --- /dev/null +++ b/management/web/src/pages/demo/vxe-table/tsx/RoleColumnSlots.tsx @@ -0,0 +1,9 @@ +import type { VxeColumnPropTypes } from "vxe-table/types/column" + +export const RoleColumnSlots: VxeColumnPropTypes.Slots = { + default: ({ row, column }) => { + const cellValue = row[column.field] + const type = cellValue === "admin" ? "primary" : "warning" + return [{cellValue}] + } +} diff --git a/management/web/src/pages/demo/vxe-table/tsx/StatusColumnSlots.tsx b/management/web/src/pages/demo/vxe-table/tsx/StatusColumnSlots.tsx new file mode 100644 index 0000000..94e532a --- /dev/null +++ b/management/web/src/pages/demo/vxe-table/tsx/StatusColumnSlots.tsx @@ -0,0 +1,9 @@ +import type { VxeColumnPropTypes } from "vxe-table/types/column" + +export const StatusColumnSlots: VxeColumnPropTypes.Slots = { + default: ({ row, column }) => { + const cellValue = row[column.field] + const [type, value] = cellValue ? ["success", "启用"] : ["danger", "禁用"] + return [{value}] + } +} diff --git a/management/web/src/pages/error/403.vue b/management/web/src/pages/error/403.vue new file mode 100644 index 0000000..db16d5b --- /dev/null +++ b/management/web/src/pages/error/403.vue @@ -0,0 +1,10 @@ + + + diff --git a/management/web/src/pages/error/404.vue b/management/web/src/pages/error/404.vue new file mode 100644 index 0000000..982b6f1 --- /dev/null +++ b/management/web/src/pages/error/404.vue @@ -0,0 +1,10 @@ + + + diff --git a/management/web/src/pages/error/components/Layout.vue b/management/web/src/pages/error/components/Layout.vue new file mode 100644 index 0000000..7039d31 --- /dev/null +++ b/management/web/src/pages/error/components/Layout.vue @@ -0,0 +1,26 @@ + + + diff --git a/management/web/src/pages/error/images/403.svg b/management/web/src/pages/error/images/403.svg new file mode 100644 index 0000000..254dd53 --- /dev/null +++ b/management/web/src/pages/error/images/403.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/pages/error/images/404.svg b/management/web/src/pages/error/images/404.svg new file mode 100644 index 0000000..7813181 --- /dev/null +++ b/management/web/src/pages/error/images/404.svg @@ -0,0 +1 @@ + diff --git a/management/web/src/pages/login/apis/index.ts b/management/web/src/pages/login/apis/index.ts new file mode 100644 index 0000000..0ab2de9 --- /dev/null +++ b/management/web/src/pages/login/apis/index.ts @@ -0,0 +1,19 @@ +import type * as Auth from "./type" +import { request } from "@/http/axios" + +/** 获取登录验证码 */ +// export function getCaptchaApi() { +// return request({ +// url: "v1/auth/captcha", +// method: "get" +// }) +// } + +/** 登录并返回 Token */ +export function loginApi(data: Auth.LoginRequestData) { + return request({ + url: "/api/v1/auth/login", + method: "post", + data + }) +} diff --git a/management/web/src/pages/login/apis/type.ts b/management/web/src/pages/login/apis/type.ts new file mode 100644 index 0000000..1685d69 --- /dev/null +++ b/management/web/src/pages/login/apis/type.ts @@ -0,0 +1,10 @@ +export interface LoginRequestData { + /** admin 或 editor */ + username: "admin" | "editor" + /** 密码 */ + password: string +} + +export type CaptchaResponseData = ApiResponseData + +export type LoginResponseData = ApiResponseData<{ token: string }> diff --git a/management/web/src/pages/login/components/Owl.vue b/management/web/src/pages/login/components/Owl.vue new file mode 100644 index 0000000..ca3cf65 --- /dev/null +++ b/management/web/src/pages/login/components/Owl.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/management/web/src/pages/login/composables/useFocus.ts b/management/web/src/pages/login/composables/useFocus.ts new file mode 100644 index 0000000..9167564 --- /dev/null +++ b/management/web/src/pages/login/composables/useFocus.ts @@ -0,0 +1,17 @@ +/** 焦点 Composable */ +export function useFocus() { + // 是否有焦点 + const isFocus = ref(false) + + // 失去焦点 + const handleBlur = () => { + isFocus.value = false + } + + // 获取焦点 + const handleFocus = () => { + isFocus.value = true + } + + return { isFocus, handleBlur, handleFocus } +} diff --git a/management/web/src/pages/login/images/close-eyes.png b/management/web/src/pages/login/images/close-eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..14e483a462f2b6967ee5f39b447b885e1b5cc1b0 GIT binary patch literal 2098 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 literal 0 HcmV?d00001 diff --git a/management/web/src/pages/login/images/hand-down-left.png b/management/web/src/pages/login/images/hand-down-left.png new file mode 100644 index 0000000000000000000000000000000000000000..aefef6cf3085c5f9a954dbb45b2368eec82e8c79 GIT binary patch literal 1382 zcmV-s1)2JZP)o$?G$R;3Djhl}8!u+55dZ)H6?9TgQveM`X)b=Gk5?Sn|Mbh}|GWSH z|NLjOCR_jj1b<0HK~#7FoRVdN!Y~jb=0zkhQ^tQc4)-LVk^P3Zky(j4*~bW9;$l9c>$|+$*tAQc7)v ziUAR!BtR)a@y-0{^^f5AXFLlQY$z&FfET(2iB2^ODnYf+kdO4x2EN{i4Xz#jD+0+!+BW5;oWU-dqZ3LJ2Z-7 z*bP20m~9N(tJ_$(l3iKz5H^b9bQ)px@s^EY2O;lz!-?6gdF?0k6V~8coLJR=>*b+j zEeb^8+M6@8fr?_OpwRvP54bi*W&r=W6RCKEUpHSLEhNNXuK3;>Y&(zbTvB(E{iPK< zND!NhV4Xo`|3I~G+`06<#O}r0(%#_2Voq%s4#sJXZC=5X4Ej(z_qbk+j;(MhK16L1J1C{kI2DbR|=dC)BudJsdJHoYXHc0(wgeC#+c1}4u-Mi z5U2-u=t{ju^aqh+sn#}upq7U9ymZUn2Tw3OQITGG=(_<5$cT~50R?V_s?u4bVylxIP7k*7nmi%`YCh3V^UjF*#L`% zI|~gdWg7)7M7D)S>jI5ywP<0s*T9(6f?>qx>qxuP^J9t85B`S$!1{~qNZ^S zDx%Ob^)?o3IH1)1qZ6`3K`}>$j-rDsP}vDq2@AziI!+%Sk)>TXbIA!d4sV}>Hq)$ literal 0 HcmV?d00001 diff --git a/management/web/src/pages/login/images/hand-down-right.png b/management/web/src/pages/login/images/hand-down-right.png new file mode 100644 index 0000000000000000000000000000000000000000..a2602a6a0a021a920553d719fe0c604fc50f76c5 GIT binary patch literal 1306 zcmV+#1?BpQP)a-D@QCGRXQm;CmS#z7B?jt zJ}Mn!o&cl(000nlQchC5!NyeNvSe7GxBQ8#Vd)x~>nS!IE1Yh_J8JTXqM z>D088&C6BN;Vo_UIUS3Ot<&(4={a4uecx!13%%u2Q~d#q!MUYFlhwm|GUOt_*>em?;(F%}DvBlMd3v(B~w)KylFUe{I`f%L@ob$oKXxYk}h<45*)tcrF5D~&W z_4iM%Y~yV}OHPtR$4Tq8&!N+dYJrex*AP~cf2WPs4d9KGI%c>g?`dC)d2z;sdGD=d z0z>oPc$?IbC+Rz}rFMI--el1<{8KvMG{#f)m32;5WxhhuU;A%g66GM)dMv(-njFPp zAUsKC6JjQbL3O;?FbL`Y|HfO~UY870N$U3D^ptXuk9Mn#Z9ir8|NQo$`GI;|ADZX! z$C?Ooqj_tXoiQd(9;>mghw1gcLYCW)hCB7PkCPzD`*y`?i?fKeyc+I2u0wG)Z{9BG z^X~_=Q1=GU5iZbR<#y`?irjwZ?rCl6RG{$(xgIXCv3DA5JSN_LCw|!wguu&Q@3g=L z*05>X_a7HxyJ=cuUK*nIy^*wWfq4wIe=E|__{F_YlT+Jy9g+Pp~|u=+{{a;a}SC4vasc3_J=Afbz4)Pz03*ldAFcx!g3!>#;m-n_KlG3RbsmPBnn9$W4)KZV`#%{p(C;Wk(*e+Cct%jJB+-uS-W zQg>KW1efd0UtOzj#q)FX_0?Q%(Dz@#339zxkk8MLzpcmdbUPhBKmO8J~=Q zPcf-K{YZ{x=-}A|2@t(`h60qNo#apoS z^te6mg)>eQ46VAGO!jY()9a-r z;%?q3ni8;EUf{^__NWP;y!yV3wjShAKU(hzMOB2-=thWj=NHY~%Synj@66u?!Jc2SR*M75n~P3SM)m74UqU`~?EVk>_ zEbhAUb;LWXK}CTQ)ORt;Euf(J*k-dP9!rR@h}td@KMtSYs}807py(l#(Bi6WGynAR zU4JFGn6k$mQ;(tsQBJ`y-xhH8>?X;M-$WtHnR0IjQZR?fJrv_~9-%7ElYL?EOoyVZp=1>li2ZyE5zV$j8(`#>oIiVG+>l&D?n2EUy5U?f>X zFdDzw2V=zb8WvMk9|cAEF-GS>&NEU@^zc{GyLfBBxW0V z#pJas;wahNhc!Y0O*ENSme&&~&iXCwqt1C#Z3G}E&WbIr+^Q#x`xHzS8cawAOhb)f z4r@gTKo zumvAbS(l%Lhhl<4=QhWtW2hVW95v{Zhk^KONR~Z&^0$uCN>H-IN)b)}-s#rSgf)m$ zuXC*l=2^UTp~~4pGNag*(MHlIP~sUJn4*SY-FREGjL!OF=>UVt?XH!qWLt*RqQGPB zjJ2EegdB&b-kL>prZ@#*5LvN?WQK(aby;x~V{B``NKfZ`^n1wIw`PXd{agdpNE_9c z429bo+B_Wwk47raQO3K>qG}k7ae%Rc?HW8$P|{OmG-*L`d=@+w&}E0OxqxH=9ua<+eTL;z+kc&G}=_u zxeo&2VgE9~RWc1T%u19L&S?G~O-PoBkmi9I1Qxw~&pyRE7|JF}hUaDo1>2UDazkWv6JOF% zHh@8;OEhLaLPz8tSY?LEWc*VJXNxS~CBVBD#vlr+$(SKBECAs;mX~dVAgU?+|361D zumOJoh`!zuHBj{zGwJ_;nEDFfz?ykoZkSdZH$Hp(ngs&Qw0J20CZL1wm21hpOlf*DcfFziz$$ms8 z=e-#{0C{fPQ?5pnX}YUv!eF*OXcYInP`@Cf8%73W=YwYK4^WEFXV!wDBmxN_GU&DA zVDM$C1#6n&WBIA9R^}&UtVGisN`NhkX0&9u<)SpvGX9_#AGn$TFOTK%72|_QVx*$7YY!6a7vbyHUIzs07*qoM6N<$ Ef`lx~HUIzs literal 0 HcmV?d00001 diff --git a/management/web/src/pages/login/images/hand-up-right.png b/management/web/src/pages/login/images/hand-up-right.png new file mode 100644 index 0000000000000000000000000000000000000000..088fa16089012f7fdfb53b93c1895128aa536011 GIT binary patch literal 2015 zcmV<52O#)~P)rJ0}~9d2X46cwtULPcW~EN-!Z&Hzr*~HF{@T zlYetaJ~;m9qNe}=01-2M&MkIi}FjB_~K)1pTy@(Fb>@4w0PlM7to2~IIG#V&>)%j zeOttIe%wAQQVn#-2ZTe8v#Iu7SHu-&TK7-h7zK?7TFzZID{n89Z|jQ1v>adM zIlo^SS!a)S5dO6jXQjt^jAO!Spp4h@Ri54Zv$@RD0@MB!!D}!Z+kmZZan#VDJlAi* z6j7E|j1^xw+Rh+tAfayKKJ7x$)$ zL$;)Zn7%xd+fHx8AmpJpvL$6Y4?i_UiH?G7m&`#)yR zHo9)MAq)gcA2b{T^FlV|WW#gy>f9;Y=23mv@V{U~lM;jjA$W>TvbBTsazaeV_MB${ zY7yv3?aA$sTOqnhwpuZcE+|9Ym1;b4vS9<+%u9iDB>u@@vLmc^&eNS}YHDnHw@Enk- zay|G+IZYnm4gGIEcOuCTNj4|9&{za3a0A>o8-+#G*4t$mZNr zl~o#AgXpYyxrnpe!o%z!<)Yepy8eB^KuVyTQv6c2-7JEL>h z1U?Vir*k?#M2tB)HKY5Ey2I1ZOcx5hqL%!9iPIgl_lmXbU44hKeJ~&;$^p zOPC^#&Ryr0D&$xcFu}%sOBw7wcQh2zlXuGC=*K;wcLMP4K7EOgCGN`*#gejvhu-PH zeT$VAFZ0PoNRfaZQhwEvO6G#?YHu9EkTcLxP%WLol*tT6KeD)*U8qRN1SjiGz;pz| z3(1a`8TIuTQJLAZTqa*(boZokU!@x=^aL@$qv$&AW;2D1(L&8|@=DI7?4+X;O;JQK zz@dhj1J%m;)nVQcTx4@8D@W%l0K;js%)kyWlLk| z%uO(t3=85M8^7u%7+tvC5-=RAFu{8V;2}kZ!P@i6PPR1vRR7rloeD#W){#B|439ki zss3Xa?Qe^0OdlN4I1&E|NG+oyYX<|XHG;?Ll+qHvZ5Pt1CU+Y^(3gMegRXabdIwgEHfuJd3L@UFPX1V~k@eF+%VbYFin zo>;YX37yi7aQp*Sp508f#U?O$LVF7KlK~MOswNhh0H&5a!t){wHN+?Xm1~Kqd4JG_ zK-zG8qIDLS0O6gGqp`CfZ9cA=%4?wwAoF{eHc(A|KsBS#IGA3|wO*Hx8?| zxOIRNq#PX09m=f}!YoT4SdFIvPaXXs9HZd@KD&>p7N$bz0XD(sR6}t>m^0I1uPucs x=P-#o_3{o4H&hXYFgsnADgQsNPgUn}{2$qfBtJXDKbrsm002ovPDHLkV1jbhn~eYf literal 0 HcmV?d00001 diff --git a/management/web/src/pages/login/index.vue b/management/web/src/pages/login/index.vue new file mode 100644 index 0000000..c73bbbf --- /dev/null +++ b/management/web/src/pages/login/index.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/management/web/src/pages/redirect/index.vue b/management/web/src/pages/redirect/index.vue new file mode 100644 index 0000000..fa562a9 --- /dev/null +++ b/management/web/src/pages/redirect/index.vue @@ -0,0 +1,10 @@ + + + diff --git a/management/web/src/pinia/index.ts b/management/web/src/pinia/index.ts new file mode 100644 index 0000000..8359d2b --- /dev/null +++ b/management/web/src/pinia/index.ts @@ -0,0 +1 @@ +export const pinia = createPinia() diff --git a/management/web/src/pinia/stores/app.ts b/management/web/src/pinia/stores/app.ts new file mode 100644 index 0000000..ee4b445 --- /dev/null +++ b/management/web/src/pinia/stores/app.ts @@ -0,0 +1,59 @@ +import { pinia } from "@/pinia" +import { DeviceEnum, SIDEBAR_CLOSED, SIDEBAR_OPENED } from "@@/constants/app-key" +import { getSidebarStatus, setSidebarStatus } from "@@/utils/cache/local-storage" + +interface Sidebar { + opened: boolean + withoutAnimation: boolean +} + +/** 设置侧边栏状态本地缓存 */ +function handleSidebarStatus(opened: boolean) { + opened ? setSidebarStatus(SIDEBAR_OPENED) : setSidebarStatus(SIDEBAR_CLOSED) +} + +export const useAppStore = defineStore("app", () => { + // 侧边栏状态 + const sidebar: Sidebar = reactive({ + opened: getSidebarStatus() !== SIDEBAR_CLOSED, + withoutAnimation: false + }) + + // 设备类型 + const device = ref(DeviceEnum.Desktop) + + // 监听侧边栏 opened 状态 + watch( + () => sidebar.opened, + (opened) => { + handleSidebarStatus(opened) + } + ) + + // 切换侧边栏 + const toggleSidebar = (withoutAnimation: boolean) => { + sidebar.opened = !sidebar.opened + sidebar.withoutAnimation = withoutAnimation + } + + // 关闭侧边栏 + const closeSidebar = (withoutAnimation: boolean) => { + sidebar.opened = false + sidebar.withoutAnimation = withoutAnimation + } + + // 切换设备类型 + const toggleDevice = (value: DeviceEnum) => { + device.value = value + } + + return { device, sidebar, toggleSidebar, closeSidebar, toggleDevice } +}) + +/** + * @description 在 SPA 应用中可用于在 pinia 实例被激活前使用 store + * @description 在 SSR 应用中可用于在 setup 外使用 store + */ +export function useAppStoreOutside() { + return useAppStore(pinia) +} diff --git a/management/web/src/pinia/stores/permission.ts b/management/web/src/pinia/stores/permission.ts new file mode 100644 index 0000000..c78eaac --- /dev/null +++ b/management/web/src/pinia/stores/permission.ts @@ -0,0 +1,59 @@ +import type { RouteRecordRaw } from "vue-router" +import { pinia } from "@/pinia" +import { constantRoutes, dynamicRoutes } from "@/router" +import { routerConfig } from "@/router/config" +import { flatMultiLevelRoutes } from "@/router/helper" + +function hasPermission(roles: string[], route: RouteRecordRaw) { + const routeRoles = route.meta?.roles + return routeRoles ? roles.some(role => routeRoles.includes(role)) : true +} + +function filterDynamicRoutes(routes: RouteRecordRaw[], roles: string[]) { + const res: RouteRecordRaw[] = [] + routes.forEach((route) => { + const tempRoute = { ...route } + if (hasPermission(roles, tempRoute)) { + if (tempRoute.children) { + tempRoute.children = filterDynamicRoutes(tempRoute.children, roles) + } + res.push(tempRoute) + } + }) + return res +} + +export const usePermissionStore = defineStore("permission", () => { + // 可访问的路由 + const routes = ref([]) + + // 有访问权限的动态路由 + const addRoutes = ref([]) + + // 根据角色生成可访问的 Routes(可访问的路由 = 常驻路由 + 有访问权限的动态路由) + const setRoutes = (roles: string[]) => { + const accessedRoutes = filterDynamicRoutes(dynamicRoutes, roles) + set(accessedRoutes) + } + + // 所有路由 = 所有常驻路由 + 所有动态路由 + const setAllRoutes = () => { + set(dynamicRoutes) + } + + // 统一设置 + const set = (accessedRoutes: RouteRecordRaw[]) => { + routes.value = constantRoutes.concat(accessedRoutes) + addRoutes.value = routerConfig.thirdLevelRouteCache ? flatMultiLevelRoutes(accessedRoutes) : accessedRoutes + } + + return { routes, addRoutes, setRoutes, setAllRoutes } +}) + +/** + * @description 在 SPA 应用中可用于在 pinia 实例被激活前使用 store + * @description 在 SSR 应用中可用于在 setup 外使用 store + */ +export function usePermissionStoreOutside() { + return usePermissionStore(pinia) +} diff --git a/management/web/src/pinia/stores/settings.ts b/management/web/src/pinia/stores/settings.ts new file mode 100644 index 0000000..a6a3425 --- /dev/null +++ b/management/web/src/pinia/stores/settings.ts @@ -0,0 +1,49 @@ +import type { LayoutsConfig } from "@/layouts/config" +import type { Ref } from "vue" +import { layoutsConfig } from "@/layouts/config" +import { pinia } from "@/pinia" +import { setLayoutsConfig } from "@@/utils/cache/local-storage" + +type SettingsStore = { + // 使用映射类型来遍历 LayoutsConfig 对象的键 + [Key in keyof LayoutsConfig]: Ref +} + +type SettingsStoreKey = keyof SettingsStore + +export const useSettingsStore = defineStore("settings", () => { + // 状态对象 + const state = {} as SettingsStore + // 遍历 LayoutsConfig 对象的键值对 + for (const [key, value] of Object.entries(layoutsConfig)) { + // 使用类型断言来指定 key 的类型,将 value 包装在 ref 函数中,创建一个响应式变量 + const refValue = ref(value) + // @ts-expect-error ignore + state[key as SettingsStoreKey] = refValue + // 监听每个响应式变量 + watch(refValue, () => { + // 缓存 + const settings = getCacheData() + setLayoutsConfig(settings) + }) + } + // 获取要缓存的数据:将 state 对象转化为 settings 对象 + const getCacheData = () => { + const settings = {} as LayoutsConfig + for (const [key, value] of Object.entries(state)) { + // @ts-expect-error ignore + settings[key as SettingsStoreKey] = value.value + } + return settings + } + + return state +}) + +/** + * @description 在 SPA 应用中可用于在 pinia 实例被激活前使用 store + * @description 在 SSR 应用中可用于在 setup 外使用 store + */ +export function useSettingsStoreOutside() { + return useSettingsStore(pinia) +} diff --git a/management/web/src/pinia/stores/tags-view.ts b/management/web/src/pinia/stores/tags-view.ts new file mode 100644 index 0000000..468e3ff --- /dev/null +++ b/management/web/src/pinia/stores/tags-view.ts @@ -0,0 +1,108 @@ +import type { RouteLocationNormalizedGeneric } from "vue-router" +import { pinia } from "@/pinia" +import { getCachedViews, getVisitedViews, setCachedViews, setVisitedViews } from "@@/utils/cache/local-storage" +import { useSettingsStore } from "./settings" + +export type TagView = Partial + +export const useTagsViewStore = defineStore("tags-view", () => { + const { cacheTagsView } = useSettingsStore() + const visitedViews = ref(cacheTagsView ? getVisitedViews() : []) + const cachedViews = ref(cacheTagsView ? getCachedViews() : []) + + // 缓存标签栏数据 + watchEffect(() => { + setVisitedViews(visitedViews.value) + setCachedViews(cachedViews.value) + }) + + // #region add + const addVisitedView = (view: TagView) => { + // 检查是否已经存在相同的 visitedView + const index = visitedViews.value.findIndex(v => v.path === view.path) + if (index !== -1) { + // 防止 query 参数丢失 + visitedViews.value[index].fullPath !== view.fullPath && (visitedViews.value[index] = { ...view }) + } else { + // 添加新的 visitedView + visitedViews.value.push({ ...view }) + } + } + + const addCachedView = (view: TagView) => { + if (typeof view.name !== "string") return + if (cachedViews.value.includes(view.name)) return + if (view.meta?.keepAlive) { + cachedViews.value.push(view.name) + } + } + // #endregion + + // #region del + const delVisitedView = (view: TagView) => { + const index = visitedViews.value.findIndex(v => v.path === view.path) + if (index !== -1) { + visitedViews.value.splice(index, 1) + } + } + + const delCachedView = (view: TagView) => { + if (typeof view.name !== "string") return + const index = cachedViews.value.indexOf(view.name) + if (index !== -1) { + cachedViews.value.splice(index, 1) + } + } + // #endregion + + // #region delOthers + const delOthersVisitedViews = (view: TagView) => { + visitedViews.value = visitedViews.value.filter((v) => { + return v.meta?.affix || v.path === view.path + }) + } + + const delOthersCachedViews = (view: TagView) => { + if (typeof view.name !== "string") return + const index = cachedViews.value.indexOf(view.name) + if (index !== -1) { + cachedViews.value = cachedViews.value.slice(index, index + 1) + } else { + // 如果 index = -1, 没有缓存的 tags + cachedViews.value = [] + } + } + // #endregion + + // #region delAll + const delAllVisitedViews = () => { + // 保留固定的 tags + visitedViews.value = visitedViews.value.filter(tag => tag.meta?.affix) + } + + const delAllCachedViews = () => { + cachedViews.value = [] + } + // #endregion + + return { + visitedViews, + cachedViews, + addVisitedView, + addCachedView, + delVisitedView, + delCachedView, + delOthersVisitedViews, + delOthersCachedViews, + delAllVisitedViews, + delAllCachedViews + } +}) + +/** + * @description 在 SPA 应用中可用于在 pinia 实例被激活前使用 store + * @description 在 SSR 应用中可用于在 setup 外使用 store + */ +export function useTagsViewStoreOutside() { + return useTagsViewStore(pinia) +} diff --git a/management/web/src/pinia/stores/user.ts b/management/web/src/pinia/stores/user.ts new file mode 100644 index 0000000..5169470 --- /dev/null +++ b/management/web/src/pinia/stores/user.ts @@ -0,0 +1,73 @@ +import { pinia } from "@/pinia" +import { resetRouter } from "@/router" +import { routerConfig } from "@/router/config" +import { getCurrentUserApi } from "@@/apis/users" +import { setToken as _setToken, getToken, removeToken } from "@@/utils/cache/cookies" +import { useSettingsStore } from "./settings" +import { useTagsViewStore } from "./tags-view" + +export const useUserStore = defineStore("user", () => { + const token = ref(getToken() || "") + const roles = ref([]) + const username = ref("") + const avatar = ref("https://pic1.zhimg.com/v2-aaf12b68b54b8812e6b449e7368d30cf_l.jpg?source=32738c0c&needBackground=1") + const tagsViewStore = useTagsViewStore() + const settingsStore = useSettingsStore() + + // 设置 Token + const setToken = (value: string) => { + _setToken(value) + token.value = value + } + + // 获取用户详情 + const getInfo = async () => { + const { data } = await getCurrentUserApi() + username.value = data.username + // 验证返回的 roles 是否为一个非空数组,否则塞入一个没有任何作用的默认角色,防止路由守卫逻辑进入无限循环 + roles.value = data.roles?.length > 0 ? data.roles : routerConfig.defaultRoles + } + + // 模拟角色变化 + const changeRoles = (role: string) => { + const newToken = `token-${role}` + token.value = newToken + _setToken(newToken) + // 用刷新页面代替重新登录 + location.reload() + } + + // 登出 + const logout = () => { + removeToken() + token.value = "" + roles.value = [] + resetRouter() + resetTagsView() + } + + // 重置 Token + const resetToken = () => { + removeToken() + token.value = "" + roles.value = [] + } + + // 重置 Visited Views 和 Cached Views + const resetTagsView = () => { + if (!settingsStore.cacheTagsView) { + tagsViewStore.delAllVisitedViews() + tagsViewStore.delAllCachedViews() + } + } + + return { token, roles, username, avatar, setToken, getInfo, changeRoles, logout, resetToken } +}) + +/** + * @description 在 SPA 应用中可用于在 pinia 实例被激活前使用 store + * @description 在 SSR 应用中可用于在 setup 外使用 store + */ +export function useUserStoreOutside() { + return useUserStore(pinia) +} diff --git a/management/web/src/plugins/element-plus-icons.ts b/management/web/src/plugins/element-plus-icons.ts new file mode 100644 index 0000000..5fb6456 --- /dev/null +++ b/management/web/src/plugins/element-plus-icons.ts @@ -0,0 +1,9 @@ +import type { App } from "vue" +import * as ElementPlusIconsVue from "@element-plus/icons-vue" + +export function installElementPlusIcons(app: App) { + // 注册所有 Element Plus Icons + for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) + } +} diff --git a/management/web/src/plugins/index.ts b/management/web/src/plugins/index.ts new file mode 100644 index 0000000..ac348f6 --- /dev/null +++ b/management/web/src/plugins/index.ts @@ -0,0 +1,12 @@ +import type { App } from "vue" +import { installElementPlusIcons } from "./element-plus-icons" +import { installPermissionDirective } from "./permission-directive" +import { installSvgIcon } from "./svg-icon" +import { installVxeTable } from "./vxe-table" + +export function installPlugins(app: App) { + installElementPlusIcons(app) + installPermissionDirective(app) + installSvgIcon(app) + installVxeTable(app) +} diff --git a/management/web/src/plugins/permission-directive.ts b/management/web/src/plugins/permission-directive.ts new file mode 100644 index 0000000..6c5d696 --- /dev/null +++ b/management/web/src/plugins/permission-directive.ts @@ -0,0 +1,24 @@ +import type { App, Directive } from "vue" +import { useUserStore } from "@/pinia/stores/user" +import { isArray } from "@@/utils/validate" + +/** + * @name 权限指令 + * @description 和权限判断函数 checkPermission 功能类似 + */ +const permission: Directive = { + mounted(el, binding) { + const { value: permissionRoles } = binding + const { roles } = useUserStore() + if (isArray(permissionRoles) && permissionRoles.length > 0) { + const hasPermission = roles.some(role => permissionRoles.includes(role)) + hasPermission || el.parentNode?.removeChild(el) + } else { + throw new Error(`参数必须是一个数组且长度大于 0,参考:v-permission="['admin', 'editor']"`) + } + } +} + +export function installPermissionDirective(app: App) { + app.directive("permission", permission) +} diff --git a/management/web/src/plugins/svg-icon.ts b/management/web/src/plugins/svg-icon.ts new file mode 100644 index 0000000..5ecd869 --- /dev/null +++ b/management/web/src/plugins/svg-icon.ts @@ -0,0 +1,7 @@ +import type { App } from "vue" +import SvgIcon from "~virtual/svg-component" + +export function installSvgIcon(app: App) { + // 注册 SvgIcon 组件 + app.component("SvgIcon", SvgIcon) +} diff --git a/management/web/src/plugins/vxe-table.ts b/management/web/src/plugins/vxe-table.ts new file mode 100644 index 0000000..6a0685d --- /dev/null +++ b/management/web/src/plugins/vxe-table.ts @@ -0,0 +1,61 @@ +import type { App } from "vue" +import VXETable from "vxe-table" // https://vxetable.cn/#/start/install + +// 全局默认参数 +VXETable.setConfig({ + // 全局尺寸 + size: "medium", + // 全局 zIndex 起始值,如果项目的的 z-index 样式值过大时就需要跟随设置更大,避免被遮挡 + zIndex: 9999, + // 版本号,对于某些带数据缓存的功能有用到,上升版本号可以用于重置数据 + version: 0, + // 全局 loading 提示内容,如果为 null 则不显示文本 + loadingText: null, + table: { + showHeader: true, + showOverflow: "tooltip", + showHeaderOverflow: "tooltip", + autoResize: true, + // stripe: false, + border: "inner", + // round: false, + emptyText: "暂无数据", + rowConfig: { + isHover: true, + isCurrent: true, + // 行数据的唯一主键字段名 + keyField: "_VXE_ID" + }, + columnConfig: { + resizable: false + }, + align: "center", + headerAlign: "center" + }, + pager: { + // size: "medium", + // 配套的样式 + perfect: false, + pageSize: 10, + pagerCount: 7, + pageSizes: [10, 20, 50], + layouts: ["Total", "PrevJump", "PrevPage", "Number", "NextPage", "NextJump", "Sizes", "FullJump"] + }, + modal: { + minWidth: 500, + minHeight: 400, + lockView: true, + mask: true, + // duration: 3000, + // marginSize: 20, + dblclickZoom: false, + showTitleOverflow: true, + transfer: true, + draggable: false + } +}) + +export function installVxeTable(app: App) { + // Vxe Table 组件完整引入 + app.use(VXETable) +} diff --git a/management/web/src/router/config.ts b/management/web/src/router/config.ts new file mode 100644 index 0000000..c87ee2f --- /dev/null +++ b/management/web/src/router/config.ts @@ -0,0 +1,41 @@ +import type { RouterHistory } from "vue-router" +import { createWebHashHistory, createWebHistory } from "vue-router" + +/** 路由配置 */ +interface RouterConfig { + /** + * @name 路由模式 + * @description hash 模式和 html5 模式 + */ + history: RouterHistory + /** + * @name 是否开启动态路由功能 + * @description 1. 开启后需要后端配合,在查询用户详情接口返回当前用户可以用来判断并加载动态路由的字段(该项目用的是角色 roles 字段) + * @description 2. 假如项目不需要根据不同的用户来显示不同的页面,则应该将 dynamic: false + */ + dynamic: boolean + /** + * @name 默认角色 + * @description 当动态路由功能关闭时: + * @description 1. 应该将所有路由都写到常驻路由里面(表明所有登录的用户能访问的页面都是一样的) + * @description 2. 系统自动给当前登录用户赋值一个没有任何作用的默认角色 + */ + defaultRoles: Array + /** + * @name 是否开启三级及其以上路由缓存功能 + * @description 1. 开启后会进行路由降级(把三级及其以上的路由转化为二级路由) + * @description 2. 由于都会转成二级路由,所以二级及其以上路由有内嵌子路由将会失效 + */ + thirdLevelRouteCache: boolean +} + +const VITE_ROUTER_HISTORY = import.meta.env.VITE_ROUTER_HISTORY + +const VITE_PUBLIC_PATH = import.meta.env.VITE_PUBLIC_PATH + +export const routerConfig: RouterConfig = { + history: VITE_ROUTER_HISTORY === "hash" ? createWebHashHistory(VITE_PUBLIC_PATH) : createWebHistory(VITE_PUBLIC_PATH), + dynamic: true, + defaultRoles: ["DEFAULT_ROLE"], + thirdLevelRouteCache: false +} diff --git a/management/web/src/router/guard.ts b/management/web/src/router/guard.ts new file mode 100644 index 0000000..7d0bc56 --- /dev/null +++ b/management/web/src/router/guard.ts @@ -0,0 +1,59 @@ +import type { Router } from "vue-router" +import { usePermissionStore } from "@/pinia/stores/permission" +import { useUserStore } from "@/pinia/stores/user" +import { routerConfig } from "@/router/config" +import { isWhiteList } from "@/router/whitelist" +import { setRouteChange } from "@@/composables/useRouteListener" +import { useTitle } from "@@/composables/useTitle" +import { getToken } from "@@/utils/cache/cookies" +import NProgress from "nprogress" + +NProgress.configure({ showSpinner: false }) + +const { setTitle } = useTitle() + +const LOGIN_PATH = "/login" + +export function registerNavigationGuard(router: Router) { + // 全局前置守卫 + router.beforeEach(async (to, _from) => { + NProgress.start() + const userStore = useUserStore() + const permissionStore = usePermissionStore() + // 如果没有登录 + if (!getToken()) { + // 如果在免登录的白名单中,则直接进入 + if (isWhiteList(to)) return true + // 其他没有访问权限的页面将被重定向到登录页面 + return LOGIN_PATH + } + // 如果已经登录,并准备进入 Login 页面,则重定向到主页 + if (to.path === LOGIN_PATH) return "/" + // 如果用户已经获得其权限角色 + if (userStore.roles.length !== 0) return true + // 否则要重新获取权限角色 + try { + await userStore.getInfo() + // 注意:角色必须是一个数组! 例如: ["admin"] 或 ["developer", "editor"] + const roles = userStore.roles + // 生成可访问的 Routes + routerConfig.dynamic ? permissionStore.setRoutes(roles) : permissionStore.setAllRoutes() + // 将 "有访问权限的动态路由" 添加到 Router 中 + permissionStore.addRoutes.forEach(route => router.addRoute(route)) + // 设置 replace: true, 因此导航将不会留下历史记录 + return { ...to, replace: true } + } catch (error) { + // 过程中发生任何错误,都直接重置 Token,并重定向到登录页面 + userStore.resetToken() + ElMessage.error((error as Error).message || "路由守卫发生错误") + return LOGIN_PATH + } + }) + + // 全局后置钩子 + router.afterEach((to) => { + setRouteChange(to) + setTitle(to.meta.title) + NProgress.done() + }) +} diff --git a/management/web/src/router/helper.ts b/management/web/src/router/helper.ts new file mode 100644 index 0000000..383fd36 --- /dev/null +++ b/management/web/src/router/helper.ts @@ -0,0 +1,56 @@ +import type { Router, RouteRecordNormalized, RouteRecordRaw } from "vue-router" +import { cloneDeep, omit } from "lodash-es" +import { createRouter } from "vue-router" +import { routerConfig } from "./config" + +/** 路由降级(把三级及其以上的路由转化为二级路由) */ +export function flatMultiLevelRoutes(routes: RouteRecordRaw[]) { + const routesMirror = cloneDeep(routes) + routesMirror.forEach((route) => { + // 如果路由是三级及其以上路由,对其进行降级处理 + isMultipleRoute(route) && promoteRouteLevel(route) + }) + return routesMirror +} + +/** 判断路由层级是否大于 2 */ +function isMultipleRoute(route: RouteRecordRaw) { + const children = route.children + // 只要有一个子路由的 children 长度大于 0,就说明是三级及其以上路由 + if (children?.length) return children.some(child => child.children?.length) + return false +} + +/** 生成二级路由 */ +function promoteRouteLevel(route: RouteRecordRaw) { + // 创建 router 实例是为了获取到当前传入的 route 的所有路由信息 + let router: Router | null = createRouter({ + history: routerConfig.history, + routes: [route] + }) + const routes = router.getRoutes() + // 在 addToChildren 函数中使用上面获取到的路由信息来更新 route 的 children + addToChildren(routes, route.children || [], route) + router = null + // 转为二级路由后,去除所有子路由中的 children + route.children = route.children?.map(item => omit(item, "children") as RouteRecordRaw) +} + +/** 将给定的子路由添加到指定的路由模块中 */ +function addToChildren(routes: RouteRecordNormalized[], children: RouteRecordRaw[], routeModule: RouteRecordRaw) { + children.forEach((child) => { + const route = routes.find(item => item.name === child.name) + if (route) { + // 初始化 routeModule 的 children + routeModule.children = routeModule.children || [] + // 如果 routeModule 的 children 属性中不包含该路由,则将其添加进去 + if (!routeModule.children.includes(route)) { + routeModule.children.push(route) + } + // 如果该子路由还有自己的子路由,则递归调用此函数将它们也添加进去 + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } + }) +} diff --git a/management/web/src/router/index.ts b/management/web/src/router/index.ts new file mode 100644 index 0000000..2fa71b3 --- /dev/null +++ b/management/web/src/router/index.ts @@ -0,0 +1,290 @@ +import type { RouteRecordRaw } from "vue-router" +import { routerConfig } from "@/router/config" +import { registerNavigationGuard } from "@/router/guard" +import { createRouter } from "vue-router" +import { flatMultiLevelRoutes } from "./helper" + +const Layouts = () => import("@/layouts/index.vue") + +/** + * @name 常驻路由 + * @description 除了 redirect/403/404/login 等隐藏页面,其他页面建议设置唯一的 Name 属性 + */ +export const constantRoutes: RouteRecordRaw[] = [ + { + path: "/redirect", + component: Layouts, + meta: { + hidden: true + }, + children: [ + { + path: ":path(.*)", + component: () => import("@/pages/redirect/index.vue") + } + ] + }, + { + path: "/403", + component: () => import("@/pages/error/403.vue"), + meta: { + hidden: true + } + }, + { + path: "/404", + component: () => import("@/pages/error/404.vue"), + meta: { + hidden: true + }, + alias: "/:pathMatch(.*)*" + }, + { + path: "/login", + component: () => import("@/pages/login/index.vue"), + meta: { + hidden: true + } + }, + // { + // path: "/", + // component: Layouts, + // redirect: "/dashboard", + // children: [ + // { + // path: "dashboard", + // component: () => import("@/pages/dashboard/index.vue"), + // name: "Dashboard", + // meta: { + // title: "首页", + // svgIcon: "dashboard", + // affix: true + // } + // } + // ] + // }, + + // { + // path: "/", + // component: Layouts, + // redirect: "/dashboard", + // children: [ + // { + // path: "dashboard", + // component: () => import("@/pages/dashboard/index.vue"), + // name: "Dashboard", + // meta: { + // title: "首页", + // svgIcon: "dashboard", + // affix: true + // } + // } + // ] + // }, + + { + path: "/", + component: Layouts, + redirect: "/dashboard", + children: [ + { + path: "dashboard", + component: () => import("@/pages/demo/element-plus/index.vue"), + name: "ElementPlus", + meta: { + title: "用户管理", + svgIcon: "dashboard", + affix: true + } + } + ] + } + // { + // path: "/", + // component: () => import("@/pages/demo/element-plus/index.vue"), + // name: "ElementPlus", + // meta: { + // title: "Element Plus", + // keepAlive: true + // } + // } + + // { + // path: "/demo", + // component: Layouts, + // redirect: "/demo/unocss", + // name: "Demo", + // meta: { + // title: "示例集合", + // elIcon: "DataBoard" + // }, + // children: [ + // { + // path: "unocss", + // component: () => import("@/pages/demo/unocss/index.vue"), + // name: "UnoCSS", + // meta: { + // title: "UnoCSS" + // } + // }, + + // { + // path: "vxe-table", + // component: () => import("@/pages/demo/vxe-table/index.vue"), + // name: "VxeTable", + // meta: { + // title: "Vxe Table", + // keepAlive: true + // } + // }, + // { + // path: "level2", + // component: () => import("@/pages/demo/level2/index.vue"), + // redirect: "/demo/level2/level3", + // name: "Level2", + // meta: { + // title: "二级路由", + // alwaysShow: true + // }, + // children: [ + // { + // path: "level3", + // component: () => import("@/pages/demo/level2/level3/index.vue"), + // name: "Level3", + // meta: { + // title: "三级路由", + // keepAlive: true + // } + // } + // ] + // }, + // { + // path: "composable-demo", + // redirect: "/demo/composable-demo/use-fetch-select", + // name: "ComposableDemo", + // meta: { + // title: "组合式函数" + // }, + // children: [ + // { + // path: "use-fetch-select", + // component: () => import("@/pages/demo/composable-demo/use-fetch-select.vue"), + // name: "UseFetchSelect", + // meta: { + // title: "useFetchSelect" + // } + // }, + // { + // path: "use-fullscreen-loading", + // component: () => import("@/pages/demo/composable-demo/use-fullscreen-loading.vue"), + // name: "UseFullscreenLoading", + // meta: { + // title: "useFullscreenLoading" + // } + // }, + // { + // path: "use-watermark", + // component: () => import("@/pages/demo/composable-demo/use-watermark.vue"), + // name: "UseWatermark", + // meta: { + // title: "useWatermark" + // } + // } + // ] + // } + // ] + // }, + // { + // path: "/link", + // meta: { + // title: "文档链接", + // elIcon: "Link" + // }, + // children: [ + // { + // path: "https://juejin.cn/post/7445151895121543209", + // component: () => {}, + // name: "Link1", + // meta: { + // title: "中文文档" + // } + // }, + // { + // path: "https://juejin.cn/column/7207659644487139387", + // component: () => {}, + // name: "Link2", + // meta: { + // title: "新手教程" + // } + // } + // ] + // } +] + +/** + * @name 动态路由 + * @description 用来放置有权限 (Roles 属性) 的路由 + * @description 必须带有唯一的 Name 属性 + */ +export const dynamicRoutes: RouteRecordRaw[] = [ + // { + // path: "/permission", + // component: Layouts, + // redirect: "/permission/page-level", + // name: "Permission", + // meta: { + // title: "权限演示", + // elIcon: "Lock", + // // 可以在根路由中设置角色 + // roles: ["admin", "editor"], + // alwaysShow: true + // }, + // children: [ + // { + // path: "page-level", + // component: () => import("@/pages/demo/permission/page-level.vue"), + // name: "PermissionPageLevel", + // meta: { + // title: "页面级", + // // 或者在子路由中设置角色 + // roles: ["admin"] + // } + // }, + // { + // path: "button-level", + // component: () => import("@/pages/demo/permission/button-level.vue"), + // name: "PermissionButtonLevel", + // meta: { + // title: "按钮级", + // // 如果未设置角色,则表示:该页面不需要权限,但会继承根路由的角色 + // roles: undefined + // } + // } + // ] + // } +] + +/** 路由实例 */ +export const router = createRouter({ + history: routerConfig.history, + routes: routerConfig.thirdLevelRouteCache ? flatMultiLevelRoutes(constantRoutes) : constantRoutes +}) + +/** 重置路由 */ +export function resetRouter() { + try { + // 注意:所有动态路由路由必须带有 Name 属性,否则可能会不能完全重置干净 + router.getRoutes().forEach((route) => { + const { name, meta } = route + if (name && meta.roles?.length) { + router.hasRoute(name) && router.removeRoute(name) + } + }) + } catch { + // 强制刷新浏览器也行,只是交互体验不是很好 + location.reload() + } +} + +// 注册路由导航守卫 +registerNavigationGuard(router) diff --git a/management/web/src/router/whitelist.ts b/management/web/src/router/whitelist.ts new file mode 100644 index 0000000..7811e19 --- /dev/null +++ b/management/web/src/router/whitelist.ts @@ -0,0 +1,13 @@ +import type { RouteLocationNormalizedGeneric, RouteRecordNameGeneric } from "vue-router" + +/** 免登录白名单(匹配路由 path) */ +const whiteListByPath: string[] = ["/login"] + +/** 免登录白名单(匹配路由 name) */ +const whiteListByName: RouteRecordNameGeneric[] = [] + +/** 判断是否在白名单 */ +export function isWhiteList(to: RouteLocationNormalizedGeneric) { + // path 和 name 任意一个匹配上即可 + return whiteListByPath.includes(to.path) || whiteListByName.includes(to.name) +} diff --git a/management/web/tests/components/Notify.test.ts b/management/web/tests/components/Notify.test.ts new file mode 100644 index 0000000..d842283 --- /dev/null +++ b/management/web/tests/components/Notify.test.ts @@ -0,0 +1,34 @@ +import Notify from "@@/components/Notify/index.vue" +import List from "@@/components/Notify/List.vue" +import { shallowMount } from "@vue/test-utils" +import { describe, expect, it } from "vitest" + +describe("notify", () => { + it("正常渲染", () => { + const wrapper = shallowMount(Notify) + expect(wrapper.classes("notify")).toBe(true) + }) +}) + +describe("list", () => { + it("list 长度为 0", () => { + const wrapper = shallowMount(List, { + props: { + data: [] + } + }) + expect(wrapper.find("el-empty-stub").exists()).toBe(true) + }) + it("list 长度不为 0", () => { + const wrapper = shallowMount(List, { + props: { + data: [ + { + title: "" + } + ] + } + }) + expect(wrapper.find("el-empty-stub").exists()).toBe(false) + }) +}) diff --git a/management/web/tests/demo.test.ts b/management/web/tests/demo.test.ts new file mode 100644 index 0000000..9656da2 --- /dev/null +++ b/management/web/tests/demo.test.ts @@ -0,0 +1,32 @@ +/** + * @description 该文件所有示例均是为了向你演示 Vitest 最基本的用法 + * @link https://cn.vitest.dev/api + * @api describe: 形成一个作用域 + * @api test/it: 定义了一组关于测试期望的方法,它接收测试名称和一个含有测试期望的函数 + * @api expect: 用来创建断言 + * @api toBe: 可以用于断言原始类型是否相等,或者对象是否共享相同的引用 + * @api toEqual: 断言实际值是否等于接收到的值或具有相同的结构(如果是对象,则递归比较它们) + */ + +import { describe, expect, it } from "vitest" + +const author1 = { + name: "pany", + email: "939630029@qq.com", + url: "https://github.com/pany-ang" +} + +const author2 = { + name: "pany", + email: "939630029@qq.com", + url: "https://github.com/pany-ang" +} + +describe("这里填写作用域名称", () => { + it("测试基础数据类型", () => { + expect(1 + 1).toBe(2) + }) + it("测试引用类型", () => { + expect(author1).toEqual(author2) + }) +}) diff --git a/management/web/tests/utils/validate.test.ts b/management/web/tests/utils/validate.test.ts new file mode 100644 index 0000000..4c94ad0 --- /dev/null +++ b/management/web/tests/utils/validate.test.ts @@ -0,0 +1,32 @@ +import { isArray } from "@@/utils/validate" +import { describe, expect, it } from "vitest" + +describe("isArray", () => { + it("string", () => { + expect(isArray("")).toBe(false) + }) + it("number", () => { + expect(isArray(1)).toBe(false) + }) + it("boolean", () => { + expect(isArray(true)).toBe(false) + }) + it("null", () => { + expect(isArray(null)).toBe(false) + }) + it("undefined", () => { + expect(isArray(undefined)).toBe(false) + }) + it("symbol", () => { + expect(isArray(Symbol())).toBe(false) + }) + it("bigInt", () => { + expect(isArray(BigInt(1))).toBe(false) + }) + it("object", () => { + expect(isArray({})).toBe(false) + }) + it("array object", () => { + expect(isArray([])).toBe(true) + }) +}) diff --git a/management/web/tsconfig.json b/management/web/tsconfig.json new file mode 100644 index 0000000..d552060 --- /dev/null +++ b/management/web/tsconfig.json @@ -0,0 +1,45 @@ +/** + * @link https://www.typescriptlang.org/tsconfig + * @link https://cn.vuejs.org/guide/typescript/overview#configuring-tsconfig-json + * @link https://cn.vite.dev/guide/features#typescript-compiler-options + */ + +{ + "compilerOptions": { + "target": "esnext", + "jsx": "preserve", + "jsxImportSource": "vue", + "lib": ["esnext", "dom"], + "useDefineForClassFields": true, + "experimentalDecorators": true, + // baseUrl 用来告诉编译器到哪里去查找模块,使用非相对模块时必须配置此项 + "baseUrl": ".", + "module": "esnext", + "moduleResolution": "bundler", + // 非相对模块导入的路径映射配置,根据 baseUrl 配置进行路径计算,与 vite.config 中 alias 配置同步 + "paths": { + "@/*": ["src/*"], + "@@/*": ["src/common/*"] + }, + "resolveJsonModule": true, + "types": ["vite/client", "element-plus/global"], + // 允许导入 .ts .mts .tsx 拓展名的文件 + "allowImportingTsExtensions": true, + // 允许 JS + "allowJs": true, + // TS 严格模式 + "strict": true, + "importHelpers": true, + // 不输出任何编译后的文件,只进行类型检查 + "noEmit": true, + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "isolatedModules": true, + "skipLibCheck": true + }, + // 需要被编译的文件列表 + "include": ["**/*.ts", "**/*.tsx", "**/*.vue", "**/*.d.ts"], + // 从编译中排除的文件列表 + "exclude": ["node_modules", "dist"] +} diff --git a/management/web/types/api.d.ts b/management/web/types/api.d.ts new file mode 100644 index 0000000..8ab5c24 --- /dev/null +++ b/management/web/types/api.d.ts @@ -0,0 +1,6 @@ +/** 所有 api 接口的响应数据都应该准守该格式 */ +interface ApiResponseData { + code: number + data: T + message: string +} diff --git a/management/web/types/auto/auto-imports.d.ts b/management/web/types/auto/auto-imports.d.ts new file mode 100644 index 0000000..f48310e --- /dev/null +++ b/management/web/types/auto/auto-imports.d.ts @@ -0,0 +1,92 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const ElLoading: typeof import('element-plus/es')['ElLoading'] + const ElMessage: typeof import('element-plus/es')['ElMessage'] + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] + const ElNotification: typeof import('element-plus/es')['ElNotification'] + const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const createPinia: typeof import('pinia')['createPinia'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const defineStore: typeof import('pinia')['defineStore'] + const effectScope: typeof import('vue')['effectScope'] + const getActivePinia: typeof import('pinia')['getActivePinia'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const mapActions: typeof import('pinia')['mapActions'] + const mapGetters: typeof import('pinia')['mapGetters'] + const mapState: typeof import('pinia')['mapState'] + const mapStores: typeof import('pinia')['mapStores'] + const mapWritableState: typeof import('pinia')['mapWritableState'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const setActivePinia: typeof import('pinia')['setActivePinia'] + const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const storeToRefs: typeof import('pinia')['storeToRefs'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useLink: typeof import('vue-router')['useLink'] + const useModel: typeof import('vue')['useModel'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/management/web/types/auto/components.d.ts b/management/web/types/auto/components.d.ts new file mode 100644 index 0000000..dad3078 --- /dev/null +++ b/management/web/types/auto/components.d.ts @@ -0,0 +1,59 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +// biome-ignore lint: disable +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAside: typeof import('element-plus/es')['ElAside'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBacktop: typeof import('element-plus/es')['ElBacktop'] + ElBadge: typeof import('element-plus/es')['ElBadge'] + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElContainer: typeof import('element-plus/es')['ElContainer'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElHeader: typeof import('element-plus/es')['ElHeader'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElMain: typeof import('element-plus/es')['ElMain'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElText: typeof import('element-plus/es')['ElText'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/management/web/types/auto/svg-component-global.d.ts b/management/web/types/auto/svg-component-global.d.ts new file mode 100644 index 0000000..8c7ee10 --- /dev/null +++ b/management/web/types/auto/svg-component-global.d.ts @@ -0,0 +1,26 @@ +/* eslint-disable */ +/* prettier-ignore */ +// biome-ignore format: off +// biome-ignore lint: off +// @ts-nocheck +// Generated by unplugin-svg-component +import 'vue' +declare module 'vue' { + export interface GlobalComponents { + SvgIcon: import("vue").DefineComponent<{ + name: { + type: import("vue").PropType<"dashboard" | "fullscreen-exit" | "fullscreen" | "keyboard-down" | "keyboard-enter" | "keyboard-esc" | "keyboard-up" | "search">; + default: string; + required: true; + }; + }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: string; + required: true; + }; + }>>, { + name: "dashboard" | "fullscreen-exit" | "fullscreen" | "keyboard-down" | "keyboard-enter" | "keyboard-esc" | "keyboard-up" | "search"; + }>; + } +} diff --git a/management/web/types/auto/svg-component.d.ts b/management/web/types/auto/svg-component.d.ts new file mode 100644 index 0000000..ca3f244 --- /dev/null +++ b/management/web/types/auto/svg-component.d.ts @@ -0,0 +1,26 @@ +/* eslint-disable */ +/* prettier-ignore */ +// biome-ignore format: off +// biome-ignore lint: off +// @ts-nocheck +// Generated by unplugin-svg-component +declare module '~virtual/svg-component' { + const SvgIcon: import("vue").DefineComponent<{ + name: { + type: import("vue").PropType<"dashboard" | "fullscreen-exit" | "fullscreen" | "keyboard-down" | "keyboard-enter" | "keyboard-esc" | "keyboard-up" | "search">; + default: string; + required: true; + }; + }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: string; + required: true; + }; + }>>, { + name: "dashboard" | "fullscreen-exit" | "fullscreen" | "keyboard-down" | "keyboard-enter" | "keyboard-esc" | "keyboard-up" | "search"; + }>; + export const svgNames: ["dashboard", "fullscreen-exit", "fullscreen", "keyboard-down", "keyboard-enter", "keyboard-esc", "keyboard-up", "search"]; + export type SvgName = "dashboard" | "fullscreen-exit" | "fullscreen" | "keyboard-down" | "keyboard-enter" | "keyboard-esc" | "keyboard-up" | "search"; + export default SvgIcon; +} diff --git a/management/web/types/directives.d.ts b/management/web/types/directives.d.ts new file mode 100644 index 0000000..6788f00 --- /dev/null +++ b/management/web/types/directives.d.ts @@ -0,0 +1,10 @@ +import type { Directive } from "vue" + +export {} + +// 由 app.directive 全局注册的自定义指令需要在这里声明 TS 类型才能获得类型提示 +declare module "vue" { + export interface ComponentCustomProperties { + vPermission: Directive + } +} diff --git a/management/web/types/env.d.ts b/management/web/types/env.d.ts new file mode 100644 index 0000000..4b07d10 --- /dev/null +++ b/management/web/types/env.d.ts @@ -0,0 +1,11 @@ +/** 声明 vite 环境变量的类型(如果未声明则默认是 any) */ +interface ImportMetaEnv { + readonly VITE_APP_TITLE: string + readonly VITE_BASE_URL: string + readonly VITE_ROUTER_HISTORY: "hash" | "html5" + readonly VITE_PUBLIC_PATH: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/management/web/types/vue-router.d.ts b/management/web/types/vue-router.d.ts new file mode 100644 index 0000000..9a27d55 --- /dev/null +++ b/management/web/types/vue-router.d.ts @@ -0,0 +1,57 @@ +import type * as ElementPlusIconsVue from "@element-plus/icons-vue" +import type { SvgName } from "~virtual/svg-component" +import "vue-router" + +export {} + +type ElementPlusIconsName = keyof typeof ElementPlusIconsVue + +declare module "vue-router" { + interface RouteMeta { + /** + * @description 设置该路由在侧边栏和面包屑中展示的名字 + */ + title?: string + /** + * @description 设置该路由的图标,记得将 svg 导入 src/common/assets/icons + */ + svgIcon?: SvgName + /** + * @description 设置该路由的图标,直接使用 Element Plus 的 Icon(与 svgIcon 同时设置时,svgIcon 将优先生效) + */ + elIcon?: ElementPlusIconsName + /** + * @description 默认 false,设置 true 的时候该路由不会在侧边栏出现 + */ + hidden?: boolean + /** + * @description 设置能进入该路由的角色,支持多个角色叠加 + */ + roles?: string[] + /** + * @description 默认 true,如果设置为 false,则不会在面包屑中显示 + */ + breadcrumb?: boolean + /** + * @description 默认 false,如果设置为 true,它则会固定在 tags-view 中 + */ + affix?: boolean + /** + * @description 当一个路由的 children 属性中声明的非隐藏子路由只有 1 个且该子路由为叶子节点时,会将这个子路由当做父路由显示在侧边栏 + * @description 当大于 1 个时,会恢复成嵌套模式 + * @description 如果想不管个数总是显示父路由,可以在父路由上设置 alwaysShow: true + */ + alwaysShow?: boolean + /** + * @description 示例: activeMenu: "/xxx/xxx", + * @description 当设置了该属性进入路由时,则会高亮 activeMenu 属性对应的侧边栏 + * @description 该属性适合使用在有 hidden: true 属性的路由上 + */ + activeMenu?: string + /** + * @description 是否缓存该路由页面 + * @description 默认为 false,为 true 时代表需要缓存,此时该路由和该页面都需要设置一致的 Name + */ + keepAlive?: boolean + } +} diff --git a/management/web/uno.config.ts b/management/web/uno.config.ts new file mode 100644 index 0000000..35c8f2d --- /dev/null +++ b/management/web/uno.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, presetAttributify, presetWind3 } from "unocss" + +export default defineConfig({ + // 预设 + presets: [ + // 属性化模式 & 无值的属性模式 + presetAttributify({ + prefix: "un-", + prefixedOnly: false + }), + // 默认预设 + presetWind3({ + important: "#app" + }) + ], + // 自定义规则 + rules: [], + // 自定义快捷方式 + shortcuts: { + "wh-full": "w-full h-full", + "flex-center": "flex justify-center items-center", + "flex-x-center": "flex justify-center", + "flex-y-center": "flex items-center" + } +}) diff --git a/management/web/vite.config.ts b/management/web/vite.config.ts new file mode 100644 index 0000000..02c1b75 --- /dev/null +++ b/management/web/vite.config.ts @@ -0,0 +1,148 @@ +/// + +import { resolve } from "node:path" +import vue from "@vitejs/plugin-vue" +import vueJsx from "@vitejs/plugin-vue-jsx" +import UnoCSS from "unocss/vite" +import AutoImport from "unplugin-auto-import/vite" +import SvgComponent from "unplugin-svg-component/vite" +import { ElementPlusResolver } from "unplugin-vue-components/resolvers" +import Components from "unplugin-vue-components/vite" +import { defineConfig, loadEnv } from "vite" +import svgLoader from "vite-svg-loader" + +// Configuring Vite: https://cn.vite.dev/config +export default defineConfig(({ mode }) => { + const { VITE_PUBLIC_PATH } = loadEnv(mode, process.cwd(), "") as ImportMetaEnv + return { + // 开发或打包构建时用到的公共基础路径 + base: VITE_PUBLIC_PATH, + resolve: { + alias: { + // @ 符号指向 src 目录 + "@": resolve(__dirname, "src"), + // @@ 符号指向 src/common 通用目录 + "@@": resolve(__dirname, "src/common") + } + }, + // 开发环境服务器配置 + server: { + // 是否监听所有地址 + host: true, + // 端口号 + port: 3333, + // 端口被占用时,是否直接退出 + strictPort: false, + // 是否自动打开浏览器 + open: true, + // 反向代理 + proxy: { + "/api": { + // target: "https://apifoxmock.com/m1/2930465-2145633-default", + target: "http://localhost:5000", + // 是否为 WebSocket + ws: false, + // 是否允许跨域 + changeOrigin: true + } + }, + // 是否允许跨域 + cors: true, + // 预热常用文件,提高初始页面加载速度 + warmup: { + clientFiles: [ + "./src/layouts/**/*.*", + "./src/pinia/**/*.*", + "./src/router/**/*.*" + ] + } + }, + // 构建配置 + build: { + // 自定义底层的 Rollup 打包配置 + rollupOptions: { + output: { + /** + * @name 分块策略 + * @description 1. 注意这些包名必须存在,否则打包会报错 + * @description 2. 如果你不想自定义 chunk 分割策略,可以直接移除这段配置 + */ + manualChunks: { + vue: ["vue", "vue-router", "pinia"], + element: ["element-plus", "@element-plus/icons-vue"], + vxe: ["vxe-table"] + } + } + }, + // 是否开启 gzip 压缩大小报告,禁用时能略微提高构建性能 + reportCompressedSize: false, + // 单个 chunk 文件的大小超过 2048kB 时发出警告 + chunkSizeWarningLimit: 2048 + }, + // 混淆器 + esbuild: + mode === "development" + ? undefined + : { + // 打包构建时移除 console.log + pure: ["console.log"], + // 打包构建时移除 debugger + drop: ["debugger"], + // 打包构建时移除所有注释 + legalComments: "none" + }, + // 插件配置 + plugins: [ + vue(), + // 支持 JSX、TSX 语法 + vueJsx(), + // 支持将 SVG 文件导入为 Vue 组件 + svgLoader({ + defaultImport: "url", + svgoConfig: { + plugins: [ + { + name: "preset-default", + params: { + overrides: { + // @see https://github.com/svg/svgo/issues/1128 + removeViewBox: false + } + } + } + ] + } + }), + // 自动生成 SvgIcon 组件和 SVG 雪碧图 + SvgComponent({ + iconDir: [resolve(__dirname, "src/common/assets/icons")], + preserveColor: resolve(__dirname, "src/common/assets/icons/preserve-color"), + dts: true, + dtsDir: resolve(__dirname, "types/auto") + }), + // 原子化 CSS + UnoCSS(), + // 自动按需导入 API + AutoImport({ + imports: ["vue", "vue-router", "pinia"], + dts: "types/auto/auto-imports.d.ts", + resolvers: [ElementPlusResolver()] + }), + // 自动按需导入组件 + Components({ + dts: "types/auto/components.d.ts", + resolvers: [ElementPlusResolver()] + }) + ], + // Configuring Vitest: https://cn.vitest.dev/config + test: { + include: ["tests/**/*.test.{ts,js}"], + environment: "happy-dom", + server: { + deps: { + inline: ["element-plus"] + } + } + } + } +}) diff --git a/python_sql/add.json b/python_sql/add.json deleted file mode 100644 index 26d22aa..0000000 --- a/python_sql/add.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "student_id": [ - "123456789", - "1234567810" - ], - "tenant_id": "d3de1596fb6911efa0f40242ac120006" - } -] diff --git a/python_sql/add_sql_final.py b/python_sql/add_sql_final.py deleted file mode 100644 index 7abf8f4..0000000 --- a/python_sql/add_sql_final.py +++ /dev/null @@ -1,165 +0,0 @@ -import mysql.connector -import uuid -import base64 -import json -from datetime import datetime -from Cryptodome.PublicKey import RSA -from Cryptodome.Cipher import PKCS1_v1_5 -from werkzeug.security import generate_password_hash - -# 数据库连接配置 -db_config = { - "host": "localhost", - "port": 5455, - "user": "root", - "password": "infini_rag_flow", - "database": "rag_flow", -} - -# 生成随机的 UUID 作为 id -def generate_uuid(): - return str(uuid.uuid4()).replace("-", "") - -# RSA 加密密码 -def rsa_psw(password: str) -> str: - pub_key = """-----BEGIN PUBLIC KEY----- - MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB - -----END PUBLIC KEY-----""" - - rsa_key = RSA.import_key(pub_key) - cipher = PKCS1_v1_5.new(rsa_key) - encrypted_data = cipher.encrypt(base64.b64encode(password.encode())) - return base64.b64encode(encrypted_data).decode() - -# 加密密码 -def encrypt_password(raw_password: str) -> str: - base64_password = base64.b64encode(raw_password.encode()).decode() - encrypted_password = rsa_psw(base64_password) - return generate_password_hash(base64_password) - -# 处理批量注册 -def batch_register_students(): - # 从 JSON 文件加载学生数据 - with open("add.json", "r", encoding="utf-8") as json_file: - student_groups = json.load(json_file) - - try: - # 建立数据库连接 - conn = mysql.connector.connect(**db_config) - cursor = conn.cursor() - - for group in student_groups: - tenant_id = group["tenant_id"] - student_ids = group["student_id"] - - for student_id in student_ids: - # 生成 ID 和时间戳 - user_id = generate_uuid() - create_time = 1741361741738 - create_date = datetime.strptime("2025-03-07 23:35:41", "%Y-%m-%d %H:%M:%S") - update_time = 1741416354403 - update_date = datetime.strptime("2025-03-08 14:45:54", "%Y-%m-%d %H:%M:%S") - - # 用户信息 - student_email = student_id + "@xidian.cn" - raw_password = student_id - hash_encrypted = encrypt_password(raw_password) - - # 插入 user 表数据 - user_insert_query = """ - INSERT INTO user ( - id, create_time, create_date, update_time, update_date, access_token, - nickname, password, email, avatar, language, color_schema, timezone, - last_login_time, is_authenticated, is_active, is_anonymous, login_channel, - status, is_superuser - ) VALUES ( - %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s, - %s, %s - ) - """ - user_data = ( - user_id, create_time, create_date, update_time, update_date, None, - student_id, hash_encrypted, student_email, None, "Chinese", "Bright", "UTC+8 Asia/Shanghai", - create_date, 1, 1, 0, "password", - 1, 0 - ) - cursor.execute(user_insert_query, user_data) - - # 插入 tenant 表数据 - tenant_insert_query = """ - INSERT INTO tenant ( - id, create_time, create_date, update_time, update_date, name, - public_key, llm_id, embd_id, asr_id, img2txt_id, rerank_id, tts_id, - parser_ids, credit, status - ) VALUES ( - %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s, %s, %s, - %s, %s, %s - ) - """ - tenant_data = ( - user_id, create_time, create_date, update_time, update_date, student_id + "'s Kingdom", - None, "deepseek-r1:1.5b@Ollama", "BAAI/bge-large-zh-v1.5@BAAI", "", "", "", None, - "naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One,audio:Audio,email:Email,tag:Tag", - 512, 1 - ) - cursor.execute(tenant_insert_query, tenant_data) - - # 插入 user_tenant 表的第一条记录 - user_tenant_insert_query = """ - INSERT INTO user_tenant ( - id, create_time, create_date, update_time, update_date, user_id, - tenant_id, role, invited_by, status - ) VALUES ( - %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s - ) - """ - user_tenant_data_owner = ( - generate_uuid(), create_time, create_date, update_time, update_date, user_id, - user_id, "owner", user_id, 1 - ) - cursor.execute(user_tenant_insert_query, user_tenant_data_owner) - - # 插入 user_tenant 表的第二条记录 - user_tenant_data_normal = ( - generate_uuid(), create_time, create_date, update_time, update_date, user_id, - tenant_id, "normal", tenant_id, 1 - ) - cursor.execute(user_tenant_insert_query, user_tenant_data_normal) - - # 插入 tenant_llm 表数据 - tenant_llm_insert_query = """ - INSERT INTO tenant_llm ( - create_time, create_date, update_time, update_date, tenant_id, - llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens - ) VALUES ( - %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s, %s, %s - ) - """ - tenant_llm_data = ( - create_time, create_date, update_time, update_date, user_id, - "Ollama", "chat", "deepseek-r1:1.5b", "xxxxxxxxxxxxxxx", "http://10.195.140.47:11434", 88888888, 0 - ) - cursor.execute(tenant_llm_insert_query, tenant_llm_data) - - # 提交事务 - conn.commit() - - print("批量用户数据添加成功!") - - except mysql.connector.Error as err: - print(f"数据库错误: {err}") - - finally: - if conn.is_connected(): - cursor.close() - conn.close() - print("数据库连接已关闭。") - - -if __name__ == '__main__': - batch_register_students() \ No newline at end of file diff --git a/python_sql/private.pem b/python_sql/private.pem deleted file mode 100644 index ff33305..0000000 --- a/python_sql/private.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,EFF8327C41E531AD - -7jdPFDAA6fiTzOIU7XGzKuT324JKZEcK5vBRJqBkA5XO6ENN1wLdhh3zQbl1Ejfv -KMSUIgbtQEJB4bvOzS//okbZa1vCNYuTS/NGcpKUnhqdOmAL3hl/kOtOLLjTZrwo -3KX8iujLH7wQ64GxArtpUuaFq1k0whN1BB5RGJp3IO/L6pMpSWVRKO+JPUrD1Ujr -XA/LUKQJaZtXVUVOYPtIwbyqPsh93QBetJnRwwV3gNOwGpcX2jDpyTxDUkLJCPPg -6Hw0pwlQEd8A11sjxCBbASwLeJO1L0w69QiX9chyOkZ+sfDsVpPt/wf1NexA7Cdj -9uifJ4JGbby39QD6mInZGtnRzQRdafjuXlBR2I0Qa7fBRu8QsfhmLbWZfWno7j08 -4bAAoqB1vRNfSu8LVJXdEEh/HKuwu11pgRr5eH8WQ3hJg+Y2k7zDHpp1VaHL7/Kn -S+aN5bhQ4Xt0Ujdi1+rsmNchnF6LWsDezHWJeWUM6X7dJnqIBl8oCyghbghT8Tyw -aEKWXc2+7FsP5yd0NfG3PFYOLdLgfI43pHTAv5PEQ47w9r1XOwfblKKBUDEzaput -T3t5wQ6wxdyhRxeO4arCHfe/i+j3fzvhlwgbuwrmrkWGWSS86eMTaoGM8+uUrHv0 -6TbU0tj6DKKUslVk1dCHh9TnmNsXZuLJkceZF38PSKNxhzudU8OTtzhS0tFL91HX -vo7N+XdiGMs8oOSpjE6RPlhFhVAKGJpXwBj/vXLLcmzesA7ZB2kYtFKMIdsUQpls -PE/4K5PEX2d8pxA5zxo0HleA1YjW8i5WEcDQThZQzj2sWvg06zSjenVFrbCm9Bro -hFpAB/3zJHxdRN2MpNpvK35WITy1aDUdX1WdyrlcRtIE5ssFTSoxSj9ibbDZ78+z -gtbw/MUi6vU6Yz1EjvoYu/bmZAHt9Aagcxw6k58fjO2cEB9njK7xbbiZUSwpJhEe -U/PxK+SdOU/MmGKeqdgqSfhJkq0vhacvsEjFGRAfivSCHkL0UjhObU+rSJ3g1RMO -oukAev6TOAwbTKVWjg3/EX+pl/zorAgaPNYFX64TSH4lE3VjeWApITb9Z5C/sVxR -xW6hU9qyjzWYWY+91y16nkw1l7VQvWHUZwV7QzTScC2BOzDVpeqY1KiYJxgoo6sX -ZCqR5oh4vToG4W8ZrRyauwUaZJ3r+zhAgm+6n6TJQNwFEl0muji+1nPl32EiFsRs -qR6CtuhUOVQM4VnILDwFJfuGYRFtKzQgvseLNU4ZqAVqQj8l4ARGAP2P1Au/uUKy -oGzI7a+b5MvRHuvkxPAclOgXgX/8yyOLaBg+mgaqv9h2JIJD28PzouFl3BajRaVB -7GWTnROJYhX5SuX/g585SLRKoQUtK0WhdJCjTRfyRJPwfdppgdTbWO99R4G+ir02 -JQdSkZf2vmZRXenPNTEPDOUY6nVN6sUuBjmtOwoUF194ODgpYB6IaHqK08sa1pUh -1mZyxitHdPbygePTe20XWMZFoK2knAqN0JPPbbNjCqiVV+7oqQAnkDIutspu9t2m -ny3jefFmNozbblQMghLUrq+x9wOEgvS76Sqvq3DG/2BkLzJF3MNkvw== ------END RSA PRIVATE KEY----- diff --git a/web/public/logo.svg b/web/public/logo.svg index 54167d2..5d0c31e 100644 --- a/web/public/logo.svg +++ b/web/public/logo.svg @@ -1,29 +1,5 @@ - - - - - - - - - - - \ No newline at end of file + + + +