From 5d7aa560e5661c3008ea20cca04ff36cc790762e Mon Sep 17 00:00:00 2001
From: nikelaluo <2135665716@qq.com>
Date: Thu, 16 Jul 2026 08:36:12 +0000
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?=E7=AB=AF=E5=B7=A5=E7=A8=8B=E5=8C=96=E3=80=81=E5=8F=91=E5=B8=83?=
=?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E8=87=AA=E5=8A=A8=E5=8C=96=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Dockerfile | 6 +
Docs/00-先读我-服务端文档入口.txt | 10 +
Docs/01-服务端Docker打包部署指南.md | 2 +
Docs/03-后端工程化结构说明.md | 28 +
admin-ui/Dockerfile | 12 +-
admin-ui/README.en-US.md | 39 -
admin-ui/README.md | 53 +-
admin-ui/pnpm-lock.yaml | 7387 -----------------
admin-ui/src/api/simcae.ts | 14 +-
admin-ui/src/router/index.ts | 4 +-
admin-ui/src/utils/sso.ts | 59 -
.../src/views/permission/button/index.vue | 99 -
.../src/views/permission/button/perms.vue | 109 -
admin-ui/src/views/permission/page/index.vue | 66 -
admin-ui/src/views/simcae/index.vue | 235 +-
admin-ui/src/views/simcae/publishManifest.ts | 187 +
app/api/routes/admin_publish.py | 75 +
app/api/routes/client_update.py | 8 +
app/api/routes/crash_api.py | 3 +
app/services/license_service.py | 2 +
app/services/publish_service.py | 62 +-
app/services/signing_service.py | 4 +
docker-compose.image.yml | 2 +
docker-compose.yml | 6 +-
requirements-dev.txt | 3 +
scripts/package-offline-server.sh | 2 +
tests/conftest.py | 86 +
tests/test_admin_update_flow.py | 133 +
tests/test_crash_api.py | 113 +
29 files changed, 822 insertions(+), 7987 deletions(-)
delete mode 100644 admin-ui/README.en-US.md
delete mode 100644 admin-ui/pnpm-lock.yaml
delete mode 100644 admin-ui/src/utils/sso.ts
delete mode 100644 admin-ui/src/views/permission/button/index.vue
delete mode 100644 admin-ui/src/views/permission/button/perms.vue
delete mode 100644 admin-ui/src/views/permission/page/index.vue
create mode 100644 admin-ui/src/views/simcae/publishManifest.ts
create mode 100644 requirements-dev.txt
create mode 100644 tests/conftest.py
create mode 100644 tests/test_admin_update_flow.py
create mode 100644 tests/test_crash_api.py
diff --git a/Dockerfile b/Dockerfile
index 2854d3d..037d0e4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,3 +1,5 @@
+# 第一阶段:构建 Vue 管理后台。
+# 最终镜像只需要 admin-ui/dist,不需要 Node、源码依赖和 node_modules。
FROM node:22-alpine AS admin_ui_builder
WORKDIR /ui
@@ -9,6 +11,8 @@ COPY admin-ui ./
RUN npm run build
+# 第二阶段:运行 FastAPI 服务端。
+# 镜像里只放后端代码、Python 依赖和已经构建好的管理后台静态文件。
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
@@ -28,6 +32,8 @@ COPY main.py db.py minio_tool.py tables.sql ./
COPY app ./app
COPY --from=admin_ui_builder --chown=updateapp:updateapp /ui/dist ./admin-ui/dist
+# 运行数据不进镜像,启动时通过 docker-compose 挂载到 /data、/minio_data、/run/secrets/update-keys。
+# 这样升级文件、SQLite 数据库和私钥可以独立备份,也不会跟镜像版本绑死。
RUN mkdir -p /data/uploads /data/upload_spool /run/secrets/update-keys \
&& chown -R updateapp:updateapp /app /data \
&& find /app/admin-ui/dist -type f -exec chmod 644 {} \; \
diff --git a/Docs/00-先读我-服务端文档入口.txt b/Docs/00-先读我-服务端文档入口.txt
index 920afd1..57f9ecf 100644
--- a/Docs/00-先读我-服务端文档入口.txt
+++ b/Docs/00-先读我-服务端文档入口.txt
@@ -40,6 +40,16 @@ bash ./scripts/package-offline-server.sh --version 0.1.0 --output-dir ./dist/Sim
- admin-ui/:新版管理后台前端源码。
- scripts/package-offline-server.sh:生成服务端 Docker 离线部署包。
+本地自动化测试:
+
+```bash
+cd update-server
+./venv/bin/pip install -r requirements-dev.txt
+./venv/bin/python3 -m pytest -q
+```
+
+当前测试会自动创建临时数据库、临时签名密钥和临时存储目录,不会改动本地 `mini.db`、`.env` 或真实上传文件。覆盖范围包括管理员登录/JWT、应用创建、License 创建设备登记、更新检查、发布入库/文件存储回退、崩溃报告上传幂等和管理员查询。
+
本地源码启动:
```bash
diff --git a/Docs/01-服务端Docker打包部署指南.md b/Docs/01-服务端Docker打包部署指南.md
index 66c8f67..ffbed6c 100644
--- a/Docs/01-服务端Docker打包部署指南.md
+++ b/Docs/01-服务端Docker打包部署指南.md
@@ -301,6 +301,8 @@ CLIENT_API_TOKEN=SimCAEClientToken2026
2. 上传压缩发布包,支持 zip、tar.gz、tgz、tar.bz2、tbz2、rar
```
+点击“发布版本”后,浏览器会先把文件上传到服务端。上传完成后,服务端会创建后台发布任务,继续执行解压、Manifest 校验、数据库写入和 MinIO 上传;管理页面会轮询并显示任务状态。这样可以减少大版本发布时长时间占用同一个 HTTP 请求的问题。
+
压缩发布包上传到服务器后,服务端会先解压,再校验是否包含 `.env` 中 `RELEASE_MAIN_EXECUTABLE` 指定的主程序路径。Windows 默认是:
```text
diff --git a/Docs/03-后端工程化结构说明.md b/Docs/03-后端工程化结构说明.md
index de2a31e..e0a6325 100644
--- a/Docs/03-后端工程化结构说明.md
+++ b/Docs/03-后端工程化结构说明.md
@@ -12,7 +12,9 @@
- 运行服务:Uvicorn。
- 请求模型和参数校验:FastAPI 自带的 Pydantic 体系。
- 管理后台前端:GitHub 上的 pure-admin-thin / vue-pure-admin 生态,技术栈是 Vue3、Element Plus、TypeScript、Vite。
+- 前端包管理:统一使用 npm 和 package-lock.json,不再维护 pnpm-lock.yaml。
- 对象存储:MinIO。
+- 自动化测试:pytest。测试用例会在临时目录里创建隔离数据库、临时 Manifest 私钥、临时上传目录和崩溃报告目录。
后端工程化参考方向:
@@ -113,9 +115,35 @@ app/
- `app/repositories/`:管理后台已迁移接口的数据库读写层,route 不再直接拼 SQL 或打开数据库连接。
- `app/api/router.py`:统一注册基础路由。
- `main.py`:已经压缩为服务入口,只保留生命周期、MinIO 初始化、静态挂载和全局客户端鉴权。
+- `tests/`:自动化测试入口,覆盖管理员登录/JWT、License/设备登记、更新检查、版本发布、崩溃报告上传幂等和管理员查询。
当前业务接口路径保持不变,避免影响 Launcher、Updater 和已部署管理页面。
+## 自动化测试
+
+第一次运行测试前安装开发依赖:
+
+```bash
+cd update-server
+./venv/bin/pip install -r requirements-dev.txt
+```
+
+运行测试:
+
+```bash
+./venv/bin/python3 -m pytest -q
+```
+
+当前测试不连接真实 MinIO,也不使用真实 `mini.db`。测试夹具会自动创建临时数据库和临时目录,并生成临时 RSA 私钥,因此适合在提交前快速回归。
+
+当前覆盖范围:
+
+- 管理员默认账号初始化、用户名密码登录、JWT 签发。
+- 应用创建、License 创建、设备登记和设备数占用。
+- 客户端更新检查和版本策略响应。
+- 版本发布事务、文件 hash 入库、MinIO 不可用时本地存储回退。
+- 崩溃报告上传、同一 `clientReportId` 幂等重复上传、管理员查询。
+
## 后续迁移路线
后续不建议一次性重写全部后端,而是按下面顺序迁移:
diff --git a/admin-ui/Dockerfile b/admin-ui/Dockerfile
index cd6d51a..3bdf61f 100644
--- a/admin-ui/Dockerfile
+++ b/admin-ui/Dockerfile
@@ -1,20 +1,18 @@
-FROM node:20-alpine as build-stage
+FROM node:22-alpine as build-stage
WORKDIR /app
-RUN corepack enable
-RUN corepack prepare pnpm@latest --activate
RUN npm config set registry https://registry.npmmirror.com
-COPY .npmrc package.json pnpm-lock.yaml ./
-RUN pnpm install --frozen-lockfile
+COPY .npmrc package.json package-lock.json ./
+RUN npm ci
COPY . .
-RUN pnpm build
+RUN npm run build
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
-CMD ["nginx", "-g", "daemon off;"]
\ No newline at end of file
+CMD ["nginx", "-g", "daemon off;"]
diff --git a/admin-ui/README.en-US.md b/admin-ui/README.en-US.md
deleted file mode 100644
index 104b8d5..0000000
--- a/admin-ui/README.en-US.md
+++ /dev/null
@@ -1,39 +0,0 @@
-
vue-pure-admin Lite Edition(no i18n version)
-
-[](LICENSE)
-
-**English** | [中文](./README.md)
-
-## Introduce
-
-The simplified version is based on the shelf extracted from [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin), which contains main functions and is more suitable for actual project development. The packaged size is introduced globally [element-plus](https://element-plus.org) is still below `2.3MB`, and the full version of the code will be permanently synchronized. After enabling `brotli` compression and `cdn` to replace the local library mode, the package size is less than `350kb`
-
-## Supporting video
-
-[Click me to view UI design](https://www.bilibili.com/video/BV17g411T7rq)
-[Click me to view the rapid development tutorial](https://www.bilibili.com/video/BV1kg411v7QT)
-
-## Nanny-level documents
-
-[Click me to view vue-pure-admin documentation](https://pure-admin.cn/)
-[Click me to view @pureadmin/utils documentation](https://pure-admin-utils.netlify.app)
-
-## Premium service
-
-[Click me to view details](https://pure-admin.cn/pages/service/)
-
-## Preview
-
-[Click me to view the preview station](https://pure-admin-thin.netlify.app/#/login)
-
-## Maintainer
-
-[xiaoxian521](https://github.com/xiaoxian521)
-
-## ⚠️ Attention
-
-The Lite version does not accept any issues and prs. If you have any questions, please go to the full version [issues](https://github.com/pure-admin/vue-pure-admin/issues/new/choose) to mention, thank you!
-
-## License
-
-[MIT © 2020-present, pure-admin](./LICENSE)
diff --git a/admin-ui/README.md b/admin-ui/README.md
index 75d6ed2..8ae27d8 100644
--- a/admin-ui/README.md
+++ b/admin-ui/README.md
@@ -1,43 +1,34 @@
-vue-pure-admin精简版(非国际化版本)
+# SimCAE 管理后台
-[](LICENSE)
+这个目录是服务端管理后台前端,基于 `pure-admin-thin`、Vue 3、Vite、Element Plus 和 TypeScript 改造。
-**中文** | [English](./README.en-US.md)
+## 主要功能
-## 介绍
+- 应用、渠道、版本发布和更新策略管理。
+- License 授权、设备、升级日志、下载日志和审计日志管理。
+- 崩溃报告接口联调信息展示。
+- 管理员登录、JWT 会话和角色权限基础能力。
-精简版是基于 [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb`
+## 本地开发
-## 版本选择
+```bash
+npm ci
+npm run dev
+```
-当前是非国际化版本,如果您需要国际化版本 [请点击](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
+## 构建
-## 配套视频
+```bash
+npm ci
+npm run build
+```
-[点我查看 UI 设计](https://www.bilibili.com/video/BV17g411T7rq)
-[点我查看快速开发教程](https://www.bilibili.com/video/BV1kg411v7QT)
+构建产物输出到 `dist/`。服务端 Dockerfile 会自动构建并复制 `dist/`,通常不需要手动复制。
-## 配套保姆级文档
+## 包管理约定
-[点我查看 vue-pure-admin 文档](https://pure-admin.cn/)
-[点我查看 @pureadmin/utils 文档](https://pure-admin-utils.netlify.app)
+本项目统一使用 `npm` 和 `package-lock.json`。不要再提交 `pnpm-lock.yaml` 或 `yarn.lock`,避免不同包管理器解析出不同依赖版本。
-## 高级服务
+## 模板来源
-[点我查看详情](https://pure-admin.cn/pages/service/)
-
-## 预览
-
-[查看预览](https://pure-admin-thin.netlify.app/#/login)
-
-## 维护者
-
-[xiaoxian521](https://github.com/xiaoxian521)
-
-## ⚠️ 注意
-
-精简版不接受任何 `issues` 和 `pr`,如果有问题请到完整版 [issues](https://github.com/pure-admin/vue-pure-admin/issues/new/choose) 去提,谢谢!
-
-## 许可证
-
-[MIT © 2020-present, pure-admin](./LICENSE)
+初始工程来自开源后台模板 `pure-admin-thin`。当前仓库只保留 SimCAE 后台需要的页面和运行能力,示例页面不作为业务交付内容。
diff --git a/admin-ui/pnpm-lock.yaml b/admin-ui/pnpm-lock.yaml
deleted file mode 100644
index 2b5b1a0..0000000
--- a/admin-ui/pnpm-lock.yaml
+++ /dev/null
@@ -1,7387 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@pureadmin/descriptions':
- specifier: ^1.2.1
- version: 1.2.1(echarts@6.0.0)(element-plus@2.11.5(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
- '@pureadmin/table':
- specifier: ^3.3.0
- version: 3.3.0(element-plus@2.11.5(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
- '@pureadmin/utils':
- specifier: ^2.6.2
- version: 2.6.2(echarts@6.0.0)(vue@3.5.22(typescript@5.9.3))
- '@vueuse/core':
- specifier: ^14.0.0
- version: 14.0.0(vue@3.5.22(typescript@5.9.3))
- '@vueuse/motion':
- specifier: ^3.0.3
- version: 3.0.3(vue@3.5.22(typescript@5.9.3))
- animate.css:
- specifier: ^4.1.1
- version: 4.1.1
- axios:
- specifier: ^1.12.2
- version: 1.12.2
- dayjs:
- specifier: ^1.11.18
- version: 1.11.18
- echarts:
- specifier: ^6.0.0
- version: 6.0.0
- element-plus:
- specifier: ^2.11.5
- version: 2.11.5(vue@3.5.22(typescript@5.9.3))
- js-cookie:
- specifier: ^3.0.5
- version: 3.0.5
- localforage:
- specifier: ^1.10.0
- version: 1.10.0
- mitt:
- specifier: ^3.0.1
- version: 3.0.1
- nprogress:
- specifier: ^0.2.0
- version: 0.2.0
- path-browserify:
- specifier: ^1.0.1
- version: 1.0.1
- pinia:
- specifier: ^3.0.3
- version: 3.0.3(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3))
- pinyin-pro:
- specifier: ^3.27.0
- version: 3.27.0
- qs:
- specifier: ^6.14.0
- version: 6.14.0
- responsive-storage:
- specifier: ^2.2.0
- version: 2.2.0
- sortablejs:
- specifier: ^1.15.6
- version: 1.15.6
- vue:
- specifier: ^3.5.22
- version: 3.5.22(typescript@5.9.3)
- vue-router:
- specifier: ^4.6.3
- version: 4.6.3(vue@3.5.22(typescript@5.9.3))
- vue-tippy:
- specifier: ^6.7.1
- version: 6.7.1(vue@3.5.22(typescript@5.9.3))
- vue-types:
- specifier: ^6.0.0
- version: 6.0.0(vue@3.5.22(typescript@5.9.3))
- devDependencies:
- '@commitlint/cli':
- specifier: ^20.1.0
- version: 20.1.0(@types/node@20.19.23)(typescript@5.9.3)
- '@commitlint/config-conventional':
- specifier: ^20.0.0
- version: 20.0.0
- '@commitlint/types':
- specifier: ^20.0.0
- version: 20.0.0
- '@eslint/js':
- specifier: ^9.38.0
- version: 9.38.0
- '@faker-js/faker':
- specifier: ^10.1.0
- version: 10.1.0
- '@iconify/json':
- specifier: ^2.2.400
- version: 2.2.400
- '@iconify/vue':
- specifier: 4.2.0
- version: 4.2.0(vue@3.5.22(typescript@5.9.3))
- '@tailwindcss/vite':
- specifier: ^4.1.16
- version: 4.1.16(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))
- '@types/js-cookie':
- specifier: ^3.0.6
- version: 3.0.6
- '@types/node':
- specifier: ^20.19.23
- version: 20.19.23
- '@types/nprogress':
- specifier: ^0.2.3
- version: 0.2.3
- '@types/path-browserify':
- specifier: ^1.0.3
- version: 1.0.3
- '@types/qs':
- specifier: ^6.14.0
- version: 6.14.0
- '@types/sortablejs':
- specifier: ^1.15.9
- version: 1.15.9
- '@vitejs/plugin-vue':
- specifier: ^6.0.1
- version: 6.0.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
- '@vitejs/plugin-vue-jsx':
- specifier: ^5.1.1
- version: 5.1.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
- boxen:
- specifier: ^8.0.1
- version: 8.0.1
- code-inspector-plugin:
- specifier: ^1.2.10
- version: 1.2.10
- cssnano:
- specifier: ^7.1.1
- version: 7.1.1(postcss@8.5.6)
- eslint:
- specifier: ^9.38.0
- version: 9.38.0(jiti@2.6.1)
- eslint-config-prettier:
- specifier: ^10.1.8
- version: 10.1.8(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-prettier:
- specifier: ^5.5.4
- version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(prettier@3.6.2)
- eslint-plugin-vue:
- specifier: ^10.5.1
- version: 10.5.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@2.6.1)))
- gradient-string:
- specifier: ^3.0.0
- version: 3.0.0
- husky:
- specifier: ^9.1.7
- version: 9.1.7
- lint-staged:
- specifier: ^16.2.6
- version: 16.2.6
- postcss:
- specifier: ^8.5.6
- version: 8.5.6
- postcss-html:
- specifier: ^1.8.0
- version: 1.8.0
- postcss-load-config:
- specifier: ^6.0.1
- version: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(yaml@2.8.1)
- postcss-scss:
- specifier: ^4.0.9
- version: 4.0.9(postcss@8.5.6)
- prettier:
- specifier: ^3.6.2
- version: 3.6.2
- rimraf:
- specifier: ^6.0.1
- version: 6.0.1
- rollup-plugin-visualizer:
- specifier: ^6.0.5
- version: 6.0.5(rollup@4.52.5)
- sass:
- specifier: ^1.93.2
- version: 1.93.2
- stylelint:
- specifier: ^16.25.0
- version: 16.25.0(typescript@5.9.3)
- stylelint-config-recess-order:
- specifier: ^7.4.0
- version: 7.4.0(stylelint-order@7.0.0(stylelint@16.25.0(typescript@5.9.3)))(stylelint@16.25.0(typescript@5.9.3))
- stylelint-config-recommended-vue:
- specifier: ^1.6.1
- version: 1.6.1(postcss-html@1.8.0)(stylelint@16.25.0(typescript@5.9.3))
- stylelint-config-standard-scss:
- specifier: ^14.0.0
- version: 14.0.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3))
- stylelint-prettier:
- specifier: ^5.0.3
- version: 5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))
- svgo:
- specifier: ^4.0.0
- version: 4.0.0
- tailwindcss:
- specifier: ^4.1.16
- version: 4.1.16
- typescript:
- specifier: ^5.9.3
- version: 5.9.3
- typescript-eslint:
- specifier: ^8.46.2
- version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- unplugin-icons:
- specifier: ^22.5.0
- version: 22.5.0(@vue/compiler-sfc@3.5.22)
- vite:
- specifier: ^7.1.12
- version: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
- vite-plugin-cdn-import:
- specifier: ^1.0.1
- version: 1.0.1(rollup@4.52.5)(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))
- vite-plugin-compression:
- specifier: ^0.5.1
- version: 0.5.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))
- vite-plugin-fake-server:
- specifier: ^2.2.0
- version: 2.2.0
- vite-plugin-remove-console:
- specifier: ^2.2.0
- version: 2.2.0
- vite-plugin-router-warn:
- specifier: ^1.0.0
- version: 1.0.0
- vite-svg-loader:
- specifier: ^5.1.0
- version: 5.1.0(vue@3.5.22(typescript@5.9.3))
- vue-eslint-parser:
- specifier: ^10.2.0
- version: 10.2.0(eslint@9.38.0(jiti@2.6.1))
- vue-tsc:
- specifier: ^3.1.2
- version: 3.1.2(typescript@5.9.3)
-
-packages:
-
- '@antfu/install-pkg@1.1.0':
- resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
-
- '@antfu/utils@9.3.0':
- resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==}
-
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.28.5':
- resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.28.5':
- resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.28.5':
- resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-annotate-as-pure@7.27.3':
- resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.27.2':
- resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-create-class-features-plugin@7.28.5':
- resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-globals@7.28.0':
- resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-member-expression-to-functions@7.28.5':
- resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.27.1':
- resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.28.3':
- resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-optimise-call-expression@7.27.1':
- resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-plugin-utils@7.27.1':
- resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-replace-supers@7.27.1':
- resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
- resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.27.1':
- resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.27.1':
- resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.28.4':
- resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.28.5':
- resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/plugin-syntax-jsx@7.27.1':
- resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-typescript@7.27.1':
- resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-transform-typescript@7.28.5':
- resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/template@7.27.2':
- resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.28.5':
- resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.28.5':
- resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
- engines: {node: '>=6.9.0'}
-
- '@cacheable/memoize@2.0.3':
- resolution: {integrity: sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==}
-
- '@cacheable/memory@2.0.3':
- resolution: {integrity: sha512-R3UKy/CKOyb1LZG/VRCTMcpiMDyLH7SH3JrraRdK6kf3GweWCOU3sgvE13W3TiDRbxnDKylzKJvhUAvWl9LQOA==}
-
- '@cacheable/utils@2.1.0':
- resolution: {integrity: sha512-ZdxfOiaarMqMj+H7qwlt5EBKWaeGihSYVHdQv5lUsbn8MJJOTW82OIwirQ39U5tMZkNvy3bQE+ryzC+xTAb9/g==}
-
- '@code-inspector/core@1.2.10':
- resolution: {integrity: sha512-xTkR4oBrTlRA/S2cXTuZLttCX6+wQgUpBpEK4Ad/e9KBIUIDRne5yoxuvrdy3xkTMkURS2V4SnCTzjFcu4OELQ==}
-
- '@code-inspector/esbuild@1.2.10':
- resolution: {integrity: sha512-+Y7tJTGrqpOgj4ENiq2pE9lE88pFGIumAFJr3K4jZxCT/JD/8bsQvOnNBEBS8BzwWZP6jK/XlaR/YFmw9p3r1A==}
-
- '@code-inspector/mako@1.2.10':
- resolution: {integrity: sha512-IqQt6bdAF1emG47NJntxE+v4m+GUVOmyXjveP/bCUJ0L7yab48H9qsAPyEUtwBSbXGDopvCX0PgQeaubWpS1LQ==}
-
- '@code-inspector/turbopack@1.2.10':
- resolution: {integrity: sha512-6oMeQjaDorIcAiy1IEPzrtozqfgzE2xq6AMc1/gVU44XqYnFZgUTyz5chkpPE1SQ+ZQ+EtgYGJyL6oYAQ0oyZQ==}
-
- '@code-inspector/vite@1.2.10':
- resolution: {integrity: sha512-HsmEa0kIfJUhJf4zjipDFgySKAD/O/f+K2L49xUnAelO6bkhNGmg1QLur9Mzn+5vrKcCGLwa0LGwKVnuBE4Vng==}
-
- '@code-inspector/webpack@1.2.10':
- resolution: {integrity: sha512-7TaYwAiz+ZlckVyKsU24HXghTuYV04mtwtJCIenkLfUSyrEIjUC/rhoYnQ/nUVwWuk0LvWJHUaLlYc65oQsggQ==}
-
- '@commitlint/cli@20.1.0':
- resolution: {integrity: sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==}
- engines: {node: '>=v18'}
- hasBin: true
-
- '@commitlint/config-conventional@20.0.0':
- resolution: {integrity: sha512-q7JroPIkDBtyOkVe9Bca0p7kAUYxZMxkrBArCfuD3yN4KjRAenP9PmYwnn7rsw8Q+hHq1QB2BRmBh0/Z19ZoJw==}
- engines: {node: '>=v18'}
-
- '@commitlint/config-validator@20.0.0':
- resolution: {integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==}
- engines: {node: '>=v18'}
-
- '@commitlint/ensure@20.0.0':
- resolution: {integrity: sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==}
- engines: {node: '>=v18'}
-
- '@commitlint/execute-rule@20.0.0':
- resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==}
- engines: {node: '>=v18'}
-
- '@commitlint/format@20.0.0':
- resolution: {integrity: sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==}
- engines: {node: '>=v18'}
-
- '@commitlint/is-ignored@20.0.0':
- resolution: {integrity: sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==}
- engines: {node: '>=v18'}
-
- '@commitlint/lint@20.0.0':
- resolution: {integrity: sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==}
- engines: {node: '>=v18'}
-
- '@commitlint/load@20.1.0':
- resolution: {integrity: sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==}
- engines: {node: '>=v18'}
-
- '@commitlint/message@20.0.0':
- resolution: {integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==}
- engines: {node: '>=v18'}
-
- '@commitlint/parse@20.0.0':
- resolution: {integrity: sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==}
- engines: {node: '>=v18'}
-
- '@commitlint/read@20.0.0':
- resolution: {integrity: sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==}
- engines: {node: '>=v18'}
-
- '@commitlint/resolve-extends@20.1.0':
- resolution: {integrity: sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==}
- engines: {node: '>=v18'}
-
- '@commitlint/rules@20.0.0':
- resolution: {integrity: sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==}
- engines: {node: '>=v18'}
-
- '@commitlint/to-lines@20.0.0':
- resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==}
- engines: {node: '>=v18'}
-
- '@commitlint/top-level@20.0.0':
- resolution: {integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==}
- engines: {node: '>=v18'}
-
- '@commitlint/types@20.0.0':
- resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==}
- engines: {node: '>=v18'}
-
- '@csstools/css-parser-algorithms@3.0.5':
- resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-tokenizer': ^3.0.4
-
- '@csstools/css-tokenizer@3.0.4':
- resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
- engines: {node: '>=18'}
-
- '@csstools/media-query-list-parser@4.0.3':
- resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.5
- '@csstools/css-tokenizer': ^3.0.4
-
- '@csstools/selector-specificity@5.0.0':
- resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss-selector-parser: ^7.0.0
-
- '@ctrl/tinycolor@3.6.1':
- resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
- engines: {node: '>=10'}
-
- '@dual-bundle/import-meta-resolve@4.2.1':
- resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==}
-
- '@element-plus/icons-vue@2.3.2':
- resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==}
- peerDependencies:
- vue: ^3.2.0
-
- '@esbuild/aix-ppc64@0.24.2':
- resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/aix-ppc64@0.25.11':
- resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.24.2':
- resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.25.11':
- resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.24.2':
- resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.25.11':
- resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.24.2':
- resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.25.11':
- resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.24.2':
- resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.25.11':
- resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.24.2':
- resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.25.11':
- resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.24.2':
- resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.25.11':
- resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.24.2':
- resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.25.11':
- resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.24.2':
- resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.25.11':
- resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.24.2':
- resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.25.11':
- resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.24.2':
- resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.25.11':
- resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.24.2':
- resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.25.11':
- resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.24.2':
- resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.25.11':
- resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.24.2':
- resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.25.11':
- resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.24.2':
- resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.25.11':
- resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.24.2':
- resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.25.11':
- resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.24.2':
- resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.25.11':
- resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-arm64@0.24.2':
- resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-arm64@0.25.11':
- resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.24.2':
- resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.25.11':
- resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.24.2':
- resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-arm64@0.25.11':
- resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.24.2':
- resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.25.11':
- resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openharmony-arm64@0.25.11':
- resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openharmony]
-
- '@esbuild/sunos-x64@0.24.2':
- resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.25.11':
- resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.24.2':
- resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.25.11':
- resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.24.2':
- resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.25.11':
- resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.24.2':
- resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.25.11':
- resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@eslint-community/eslint-utils@4.9.0':
- resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
- 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.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/config-array@0.21.1':
- resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/config-helpers@0.4.1':
- resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/core@0.16.0':
- resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
- 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.38.0':
- resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/object-schema@2.1.7':
- resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/plugin-kit@0.4.0':
- resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@faker-js/faker@10.1.0':
- resolution: {integrity: sha512-C3mrr3b5dRVlKPJdfrAXS8+dq+rq8Qm5SNRazca0JKgw1HQERFmrVb0towvMmw5uu8hHKNiQasMaR/tydf3Zsg==}
- engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'}
-
- '@floating-ui/core@1.7.3':
- resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
-
- '@floating-ui/dom@1.7.4':
- resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
-
- '@floating-ui/utils@0.2.10':
- resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
-
- '@humanfs/core@0.19.1':
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
- engines: {node: '>=18.18.0'}
-
- '@humanfs/node@0.16.7':
- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
- engines: {node: '>=18.18.0'}
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/retry@0.4.3':
- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
- engines: {node: '>=18.18'}
-
- '@iconify/json@2.2.400':
- resolution: {integrity: sha512-L8cy1YE/H0LFO4Pu7hfyylkrQmawL8sTOCH2PcBDydWA1FpoKijeIzweRJ6e9grvn2li9Yu+Pe32Jq9x4MKpaw==}
-
- '@iconify/types@2.0.0':
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
-
- '@iconify/utils@3.0.2':
- resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==}
-
- '@iconify/vue@4.2.0':
- resolution: {integrity: sha512-CMynoz9BDWugDO2B7LU/s8L99dHCiqDGCjCki6bhVx5etZhw9x0BTV7wWRdj82jtl1yQTc+QQRcHQmSvUY6R+g==}
- peerDependencies:
- vue: '>=3'
-
- '@isaacs/balanced-match@4.0.1':
- resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
- engines: {node: 20 || >=22}
-
- '@isaacs/brace-expansion@5.0.0':
- resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==}
- engines: {node: 20 || >=22}
-
- '@isaacs/cliui@8.0.2':
- resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
- engines: {node: '>=12'}
-
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
-
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
-
- '@jridgewell/trace-mapping@0.3.31':
- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
-
- '@keyv/bigmap@1.1.0':
- resolution: {integrity: sha512-MX7XIUNwVRK+hjZcAbNJ0Z8DREo+Weu9vinBOjGU1thEi9F6vPhICzBbk4CCf3eEefKRz7n6TfZXwUFZTSgj8Q==}
- engines: {node: '>= 18'}
- peerDependencies:
- keyv: ^5.5.3
-
- '@keyv/serialize@1.1.1':
- resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
-
- '@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'}
-
- '@nuxt/kit@3.19.3':
- resolution: {integrity: sha512-ze46EW5xW+UxDvinvPkYt2MzR355Az1lA3bpX8KDialgnCwr+IbkBij/udbUEC6ZFbidPkfK1eKl4ESN7gMY+w==}
- engines: {node: '>=18.12.0'}
-
- '@parcel/watcher-android-arm64@2.5.1':
- resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [android]
-
- '@parcel/watcher-darwin-arm64@2.5.1':
- resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- '@parcel/watcher-darwin-x64@2.5.1':
- resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [darwin]
-
- '@parcel/watcher-freebsd-x64@2.5.1':
- resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
-
- '@parcel/watcher-linux-arm-musl@2.5.1':
- resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@parcel/watcher-linux-x64-musl@2.5.1':
- resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@parcel/watcher-win32-arm64@2.5.1':
- resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [win32]
-
- '@parcel/watcher-win32-ia32@2.5.1':
- resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [ia32]
- os: [win32]
-
- '@parcel/watcher-win32-x64@2.5.1':
- resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [win32]
-
- '@parcel/watcher@2.5.1':
- resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
- engines: {node: '>= 10.0.0'}
-
- '@pkgr/core@0.2.9':
- resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
-
- '@popperjs/core@2.11.8':
- resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
-
- '@pureadmin/descriptions@1.2.1':
- resolution: {integrity: sha512-7jDJuqz8xnhcmwXdWQnBzOYeX2WK27TRFaVgs9AdiRr+DnKb9W+krHByJwQtxo5lg4qyRh4/IWQGEMfhC2ljeQ==}
- peerDependencies:
- element-plus: ^2.0.0
-
- '@pureadmin/table@3.3.0':
- resolution: {integrity: sha512-06vp/IWUOsvt1zpPXMbVvGfrBWKBv5O1q3nZIlbSFJejJNWHG1HU+EWGuCzJD6KCsQdwNettv1wUuAleH4+YQQ==}
- peerDependencies:
- element-plus: ^2.0.0
-
- '@pureadmin/utils@2.6.2':
- resolution: {integrity: sha512-Dqk7R9Dm9YAzAvMlOO3uudu/eCb5B2eZSPexKlaedTngO/A+OtcFH0870T69nXsUqrwd3LJI6ETL19C9ihofIw==}
- peerDependencies:
- echarts: '*'
- vue: '*'
- peerDependenciesMeta:
- echarts:
- optional: true
- vue:
- optional: true
-
- '@rolldown/pluginutils@1.0.0-beta.29':
- resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==}
-
- '@rolldown/pluginutils@1.0.0-beta.45':
- resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==}
-
- '@rollup/pluginutils@5.3.0':
- resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.52.5':
- resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.52.5':
- resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.52.5':
- resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-freebsd-arm64@4.52.5':
- resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
- cpu: [loong64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
- cpu: [riscv64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
- cpu: [riscv64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
- cpu: [arm64]
- os: [openharmony]
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
- cpu: [x64]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
- cpu: [x64]
- os: [win32]
-
- '@sxzz/popperjs-es@2.11.7':
- resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
-
- '@tailwindcss/node@4.1.16':
- resolution: {integrity: sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==}
-
- '@tailwindcss/oxide-android-arm64@4.1.16':
- resolution: {integrity: sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.1.16':
- resolution: {integrity: sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.1.16':
- resolution: {integrity: sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.1.16':
- resolution: {integrity: sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16':
- resolution: {integrity: sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==}
- engines: {node: '>= 10'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.16':
- resolution: {integrity: sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.16':
- resolution: {integrity: sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.16':
- resolution: {integrity: sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.16':
- resolution: {integrity: sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.16':
- resolution: {integrity: sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- bundledDependencies:
- - '@napi-rs/wasm-runtime'
- - '@emnapi/core'
- - '@emnapi/runtime'
- - '@tybys/wasm-util'
- - '@emnapi/wasi-threads'
- - tslib
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.16':
- resolution: {integrity: sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.16':
- resolution: {integrity: sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/oxide@4.1.16':
- resolution: {integrity: sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==}
- engines: {node: '>= 10'}
-
- '@tailwindcss/vite@4.1.16':
- resolution: {integrity: sha512-bbguNBcDxsRmi9nnlWJxhfDWamY3lmcyACHcdO1crxfzuLpOhHLLtEIN/nCbbAtj5rchUgQD17QVAKi1f7IsKg==}
- peerDependencies:
- vite: ^5.2.0 || ^6 || ^7
-
- '@trysound/sax@0.2.0':
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
-
- '@types/conventional-commits-parser@5.0.2':
- resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==}
-
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
- '@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.20':
- resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
-
- '@types/node@20.19.23':
- resolution: {integrity: sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==}
-
- '@types/nprogress@0.2.3':
- resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
-
- '@types/path-browserify@1.0.3':
- resolution: {integrity: sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==}
-
- '@types/qs@6.14.0':
- resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
-
- '@types/sortablejs@1.15.9':
- resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==}
-
- '@types/tinycolor2@1.4.6':
- resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
-
- '@types/web-bluetooth@0.0.16':
- resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
-
- '@types/web-bluetooth@0.0.21':
- resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
-
- '@typescript-eslint/eslint-plugin@8.46.2':
- resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.46.2
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/parser@8.46.2':
- resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/project-service@8.46.2':
- resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/scope-manager@8.46.2':
- resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.46.2':
- resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/type-utils@8.46.2':
- resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/types@8.46.2':
- resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.46.2':
- resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/utils@8.46.2':
- resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/visitor-keys@8.46.2':
- resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@vitejs/plugin-vue-jsx@5.1.1':
- resolution: {integrity: sha512-uQkfxzlF8SGHJJVH966lFTdjM/lGcwJGzwAHpVqAPDD/QcsqoUGa+q31ox1BrUfi+FLP2ChVp7uLXE3DkHyDdQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- peerDependencies:
- vite: ^5.0.0 || ^6.0.0 || ^7.0.0
- vue: ^3.0.0
-
- '@vitejs/plugin-vue@6.0.1':
- resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- peerDependencies:
- vite: ^5.0.0 || ^6.0.0 || ^7.0.0
- vue: ^3.2.25
-
- '@volar/language-core@2.4.23':
- resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==}
-
- '@volar/source-map@2.4.23':
- resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==}
-
- '@volar/typescript@2.4.23':
- resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==}
-
- '@vue/babel-helper-vue-transform-on@1.5.0':
- resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==}
-
- '@vue/babel-plugin-jsx@1.5.0':
- resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- peerDependenciesMeta:
- '@babel/core':
- optional: true
-
- '@vue/babel-plugin-resolve-type@1.5.0':
- resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@vue/compiler-core@3.5.22':
- resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==}
-
- '@vue/compiler-dom@3.5.22':
- resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==}
-
- '@vue/compiler-sfc@3.5.22':
- resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==}
-
- '@vue/compiler-ssr@3.5.22':
- resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==}
-
- '@vue/devtools-api@6.6.4':
- resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
-
- '@vue/devtools-api@7.7.7':
- resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==}
-
- '@vue/devtools-kit@7.7.7':
- resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==}
-
- '@vue/devtools-shared@7.7.7':
- resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==}
-
- '@vue/language-core@3.1.2':
- resolution: {integrity: sha512-PyFDCqpdfYUT+oMLqcc61oHfJlC6yjhybaefwQjRdkchIihToOEpJ2Wu/Ebq2yrnJdd1EsaAvZaXVAqcxtnDxQ==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@vue/reactivity@3.5.22':
- resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==}
-
- '@vue/runtime-core@3.5.22':
- resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==}
-
- '@vue/runtime-dom@3.5.22':
- resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==}
-
- '@vue/server-renderer@3.5.22':
- resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==}
- peerDependencies:
- vue: 3.5.22
-
- '@vue/shared@3.5.22':
- resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==}
-
- '@vueuse/core@13.9.0':
- resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==}
- peerDependencies:
- vue: ^3.5.0
-
- '@vueuse/core@14.0.0':
- resolution: {integrity: sha512-d6tKRWkZE8IQElX2aHBxXOMD478fHIYV+Dzm2y9Ag122ICBpNKtGICiXKOhWU3L1kKdttDD9dCMS4bGP3jhCTQ==}
- peerDependencies:
- vue: ^3.5.0
-
- '@vueuse/core@9.13.0':
- resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
-
- '@vueuse/metadata@13.9.0':
- resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==}
-
- '@vueuse/metadata@14.0.0':
- resolution: {integrity: sha512-6yoGqbJcMldVCevkFiHDBTB1V5Hq+G/haPlGIuaFZHpXC0HADB0EN1ryQAAceiW+ryS3niUwvdFbGiqHqBrfVA==}
-
- '@vueuse/metadata@9.13.0':
- resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
-
- '@vueuse/motion@3.0.3':
- resolution: {integrity: sha512-4B+ITsxCI9cojikvrpaJcLXyq0spj3sdlzXjzesWdMRd99hhtFI6OJ/1JsqwtF73YooLe0hUn/xDR6qCtmn5GQ==}
- peerDependencies:
- vue: '>=3.0.0'
-
- '@vueuse/shared@13.9.0':
- resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==}
- peerDependencies:
- vue: ^3.5.0
-
- '@vueuse/shared@14.0.0':
- resolution: {integrity: sha512-mTCA0uczBgurRlwVaQHfG0Ja7UdGe4g9mwffiJmvLiTtp1G4AQyIjej6si/k8c8pUwTfVpNufck+23gXptPAkw==}
- peerDependencies:
- vue: ^3.5.0
-
- '@vueuse/shared@9.13.0':
- resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
-
- JSONStream@1.3.5:
- resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
- hasBin: true
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ajv@8.17.1:
- resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
-
- alien-signals@3.0.3:
- resolution: {integrity: sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==}
-
- animate.css@4.1.1:
- resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==}
-
- ansi-align@3.0.1:
- resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
-
- ansi-escapes@7.1.1:
- resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==}
- engines: {node: '>=18'}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.2.2:
- resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
- engines: {node: '>=12'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- ansi-styles@6.2.3:
- resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
- engines: {node: '>=12'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- array-ify@1.0.0:
- resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
-
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
- astral-regex@2.0.0:
- resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
- engines: {node: '>=8'}
-
- 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.12.2:
- resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- balanced-match@2.0.0:
- resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
-
- baseline-browser-mapping@2.8.20:
- resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==}
- hasBin: true
-
- birpc@2.6.1:
- resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==}
-
- boolbase@1.0.0:
- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
-
- boxen@8.0.1:
- resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
- engines: {node: '>=18'}
-
- brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
-
- brace-expansion@2.0.2:
- resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- browserslist@4.27.0:
- resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- bundle-import@0.0.2:
- resolution: {integrity: sha512-XB3T6xlgqJHThyr2luo3pNAVhfN/Y2qFEsblrzUO5QZLpJtesget8jmGDImSairScy80ZKBDVcRdFzTzWv3v8A==}
-
- c12@3.3.1:
- resolution: {integrity: sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==}
- peerDependencies:
- magicast: ^0.3.5
- peerDependenciesMeta:
- magicast:
- optional: true
-
- cacheable@2.1.1:
- resolution: {integrity: sha512-LmF4AXiSNdiRbI2UjH8pAp9NIXxeQsTotpEaegPiDcnN0YPygDJDV3l/Urc0mL72JWdATEorKqIHEx55nDlONg==}
-
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
-
- call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- camelcase@8.0.0:
- resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
- engines: {node: '>=16'}
-
- caniuse-api@3.0.0:
- resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
-
- caniuse-lite@1.0.30001751:
- resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==}
-
- chalk@4.1.1:
- resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==}
- engines: {node: '>=10'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- chalk@5.6.2:
- resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
- chokidar@4.0.3:
- resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
- engines: {node: '>= 14.16.0'}
-
- citty@0.1.6:
- resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
-
- cli-boxes@3.0.0:
- resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
- engines: {node: '>=10'}
-
- cli-cursor@5.0.0:
- resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
- engines: {node: '>=18'}
-
- cli-truncate@5.1.1:
- resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==}
- engines: {node: '>=20'}
-
- cliui@8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
-
- code-inspector-plugin@1.2.10:
- resolution: {integrity: sha512-XF8U0egv6g19lU4QZcrPu40HmooyHjcIqaKb6fvIPSv8WUeg+qSlyrl7Bm05OBzMmJt/Y/mOdFx8MMuBqbC8Sg==}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- colord@2.9.3:
- resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
-
- colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
- commander@11.1.0:
- resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
- engines: {node: '>=16'}
-
- commander@14.0.2:
- resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==}
- engines: {node: '>=20'}
-
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
-
- compare-func@2.0.0:
- resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- confbox@0.1.8:
- resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
-
- confbox@0.2.2:
- resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
-
- consola@3.4.2:
- resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
- engines: {node: ^14.18.0 || >=16.10.0}
-
- conventional-changelog-angular@7.0.0:
- resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
- engines: {node: '>=16'}
-
- conventional-changelog-conventionalcommits@7.0.2:
- resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
- engines: {node: '>=16'}
-
- conventional-commits-parser@5.0.0:
- resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
- engines: {node: '>=16'}
- hasBin: true
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- copy-anything@4.0.5:
- resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==}
- engines: {node: '>=18'}
-
- cosmiconfig-typescript-loader@6.2.0:
- resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==}
- engines: {node: '>=v18'}
- peerDependencies:
- '@types/node': '*'
- cosmiconfig: '>=9'
- typescript: '>=5'
-
- cosmiconfig@9.0.0:
- resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
- engines: {node: '>=14'}
- peerDependencies:
- typescript: '>=4.9.5'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- css-declaration-sorter@7.3.0:
- resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss: ^8.0.9
-
- css-functions-list@3.2.3:
- resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==}
- engines: {node: '>=12 || >=16'}
-
- css-select@5.2.2:
- resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
-
- 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.2.2:
- resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
- engines: {node: '>= 6'}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- cssnano-preset-default@7.0.9:
- resolution: {integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- cssnano-utils@5.0.1:
- resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- cssnano@7.1.1:
- resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- 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'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- dargs@8.1.0:
- resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
- engines: {node: '>=12'}
-
- dayjs@1.11.18:
- resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==}
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- define-lazy-prop@2.0.0:
- resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
- engines: {node: '>=8'}
-
- defu@6.1.4:
- resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
-
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
- destr@2.0.5:
- resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
-
- detect-libc@1.0.3:
- resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
-
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- dom-serializer@2.0.0:
- resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
-
- domelementtype@2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
-
- domhandler@5.0.3:
- resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
- engines: {node: '>= 4'}
-
- domutils@3.2.2:
- resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
-
- dot-prop@5.3.0:
- resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
- engines: {node: '>=8'}
-
- dotenv@16.6.1:
- resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
- engines: {node: '>=12'}
-
- dotenv@17.2.3:
- resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
- engines: {node: '>=12'}
-
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
- echarts@6.0.0:
- resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==}
-
- electron-to-chromium@1.5.240:
- resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==}
-
- element-plus@2.11.5:
- resolution: {integrity: sha512-O+bIVHQCjUDm4GiIznDXRoS8ar2TpWLwfOGnN/Aam0VXf5kbuc4SxdKKJdovWNxmxeqbcwjsSZPKgtXNcqys4A==}
- peerDependencies:
- vue: ^3.2.0
-
- emoji-regex@10.6.0:
- resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
- engines: {node: '>=10.13.0'}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- env-paths@2.2.1:
- resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
- engines: {node: '>=6'}
-
- environment@1.1.0:
- resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
- engines: {node: '>=18'}
-
- error-ex@1.3.4:
- resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
-
- errx@0.1.0:
- resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==}
-
- 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@0.4.1:
- resolution: {integrity: sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==}
-
- 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.24.2:
- resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
- engines: {node: '>=18'}
- hasBin: true
-
- esbuild@0.25.11:
- resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
- engines: {node: '>=18'}
- hasBin: true
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- escape-string-regexp@5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
-
- eslint-config-prettier@10.1.8:
- resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
-
- eslint-plugin-prettier@5.5.4:
- resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- '@types/eslint': '>=8.0.0'
- eslint: '>=8.0.0'
- eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0'
- prettier: '>=3.0.0'
- peerDependenciesMeta:
- '@types/eslint':
- optional: true
- eslint-config-prettier:
- optional: true
-
- eslint-plugin-vue@10.5.1:
- resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
- '@typescript-eslint/parser': ^7.0.0 || ^8.0.0
- eslint: ^8.57.0 || ^9.0.0
- vue-eslint-parser: ^10.0.0
- peerDependenciesMeta:
- '@stylistic/eslint-plugin':
- optional: true
- '@typescript-eslint/parser':
- optional: true
-
- eslint-scope@8.4.0:
- resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
- 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.1:
- resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint@9.38.0:
- resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- espree@10.4.0:
- resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.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'}
-
- eventemitter3@5.0.1:
- resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
-
- exsolve@1.0.7:
- resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
-
- 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==}
-
- fast-uri@3.1.0:
- resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
-
- fastest-levenshtein@1.0.16:
- resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
- engines: {node: '>= 4.9.1'}
-
- fastq@1.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
-
- fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- file-entry-cache@10.1.4:
- resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==}
-
- 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@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- find-up@7.0.0:
- resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
- engines: {node: '>=18'}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flat-cache@6.1.18:
- resolution: {integrity: sha512-JUPnFgHMuAVmLmoH9/zoZ6RHOt5n9NlUw/sDXsTbROJ2SFoS2DS4s+swAV6UTeTbGH/CAsZIE6M8TaG/3jVxgQ==}
-
- flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
-
- follow-redirects@1.15.11:
- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
- 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.4:
- resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
- engines: {node: '>= 6'}
-
- framesync@6.1.2:
- resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==}
-
- fs-extra@10.1.0:
- resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
- engines: {node: '>=12'}
-
- 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.4.0:
- resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
- 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-tsconfig@4.13.0:
- resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
-
- giget@2.0.0:
- resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
- hasBin: true
-
- git-raw-commits@4.0.0:
- resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==}
- engines: {node: '>=16'}
- hasBin: true
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob@11.0.3:
- resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==}
- engines: {node: 20 || >=22}
- hasBin: true
-
- global-directory@4.0.1:
- resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
- engines: {node: '>=18'}
-
- global-modules@2.0.0:
- resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
- engines: {node: '>=6'}
-
- global-prefix@3.0.0:
- resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
- engines: {node: '>=6'}
-
- 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'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
- globjoin@0.1.4:
- resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
-
- 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==}
-
- gradient-string@3.0.0:
- resolution: {integrity: sha512-frdKI4Qi8Ihp4C6wZNB565de/THpIaw3DjP5ku87M+N9rNSGmPTjfkq61SdRXB7eCaL8O1hkKDvf6CDMtOzIAg==}
- engines: {node: '>=14'}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- 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'}
-
- hey-listen@1.0.8:
- resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
-
- hookable@5.5.3:
- resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
-
- hookified@1.12.2:
- resolution: {integrity: sha512-aokUX1VdTpI0DUsndvW+OiwmBpKCu/NgRsSSkuSY0zq8PY6Q6a+lmOfAFDXAAOtBqJELvcWY9L1EVtzjbQcMdg==}
-
- html-tags@3.3.1:
- resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
- engines: {node: '>=8'}
-
- htmlparser2@8.0.2:
- resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
-
- 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'}
-
- ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
- engines: {node: '>= 4'}
-
- immediate@3.0.6:
- resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
-
- immutable@5.1.4:
- resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==}
-
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
-
- import-from-string@0.0.5:
- resolution: {integrity: sha512-z59WIHImWhnGVswc0JoyI10Qn4A8xQw7OKrCFRQHvzGZhhEixX13OtXP9ud3Xjpn16CUoYfh5mTu3tnNODiSAw==}
-
- import-meta-resolve@4.2.0:
- resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- ini@1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
-
- ini@4.1.1:
- resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-docker@2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-fullwidth-code-point@5.1.0:
- resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
- 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-obj@2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
-
- is-plain-object@5.0.0:
- resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
- engines: {node: '>=0.10.0'}
-
- is-reference@3.0.3:
- resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
-
- is-text-path@2.0.0:
- resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
- engines: {node: '>=8'}
-
- is-what@5.5.0:
- resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==}
- engines: {node: '>=18'}
-
- is-wsl@2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- jackspeak@4.1.1:
- resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==}
- engines: {node: 20 || >=22}
-
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
- 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
-
- 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-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-schema-traverse@1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
-
- json-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
-
- jsonfile@6.2.0:
- resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
-
- jsonparse@1.3.1:
- resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
- engines: {'0': node >= 0.2.0}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- keyv@5.5.3:
- resolution: {integrity: sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==}
-
- kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
-
- klona@2.0.6:
- resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
- engines: {node: '>= 8'}
-
- knitwork@1.2.0:
- resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==}
-
- known-css-properties@0.36.0:
- resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==}
-
- known-css-properties@0.37.0:
- resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==}
-
- kolorist@1.8.0:
- resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
-
- launch-ide@1.2.0:
- resolution: {integrity: sha512-7nXSPQOt3b2JT52Ge8jp4miFcY+nrUEZxNLWBzrEfjmByDTb9b5ytqMSwGhsNwY6Cntwop+6n7rWIFN0+S8PTw==}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lie@3.1.1:
- resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
-
- lightningcss-android-arm64@1.30.2:
- resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
-
- lightningcss-darwin-arm64@1.30.2:
- resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.30.2:
- resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.30.2:
- resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.30.2:
- resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-arm64-musl@1.30.2:
- resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- lightningcss-linux-x64-gnu@1.30.2:
- resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-x64-musl@1.30.2:
- resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- lightningcss-win32-arm64-msvc@1.30.2:
- resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.30.2:
- resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.30.2:
- resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
- engines: {node: '>= 12.0.0'}
-
- lilconfig@3.1.3:
- resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- lint-staged@16.2.6:
- resolution: {integrity: sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==}
- engines: {node: '>=20.17'}
- hasBin: true
-
- listr2@9.0.5:
- resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==}
- engines: {node: '>=20.0.0'}
-
- local-pkg@1.1.2:
- resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
- engines: {node: '>=14'}
-
- localforage@1.10.0:
- resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- 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.camelcase@4.3.0:
- resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
-
- lodash.isplainobject@4.0.6:
- resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
-
- lodash.kebabcase@4.1.1:
- resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
-
- lodash.memoize@4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- lodash.mergewith@4.6.2:
- resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
-
- lodash.snakecase@4.1.1:
- resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
-
- lodash.startcase@4.4.0:
- resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
-
- lodash.truncate@4.4.2:
- resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
-
- lodash.uniq@4.5.0:
- resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
-
- lodash.upperfirst@4.3.1:
- resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- log-update@6.1.0:
- resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
- engines: {node: '>=18'}
-
- lru-cache@11.2.2:
- resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==}
- engines: {node: 20 || >=22}
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- magic-string@0.25.9:
- resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
-
- magic-string@0.30.21:
- resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
-
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- mathml-tag-names@2.1.3:
- resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
-
- 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==}
-
- mdn-data@2.24.0:
- resolution: {integrity: sha512-i97fklrJl03tL1tdRVw0ZfLLvuDsdb6wxL+TrJ+PKkCbLrp2PCu2+OYdCKychIUm19nSM/35S6qz7pJpnXttoA==}
-
- memoize-one@6.0.0:
- resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
-
- meow@12.1.1:
- resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
- engines: {node: '>=16.10'}
-
- meow@13.2.0:
- resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
- engines: {node: '>=18'}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- 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-function@5.0.1:
- resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
- engines: {node: '>=18'}
-
- minimatch@10.0.3:
- resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==}
- engines: {node: 20 || >=22}
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- 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.8.0:
- resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- muggle-string@0.4.1:
- resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
-
- nano-spawn@2.0.0:
- resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==}
- engines: {node: '>=20.17'}
-
- 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==}
-
- node-addon-api@7.1.1:
- resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
-
- node-fetch-native@1.6.7:
- resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
-
- node-releases@2.0.26:
- resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
-
- 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==}
-
- nprogress@0.2.0:
- resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
-
- nth-check@2.1.1:
- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
-
- nypm@0.6.2:
- resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==}
- engines: {node: ^14.16.0 || >=16.10.0}
- hasBin: true
-
- object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
-
- ohash@2.0.11:
- resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
-
- onetime@7.0.0:
- resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
- engines: {node: '>=18'}
-
- open@8.4.2:
- resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
- engines: {node: '>=12'}
-
- 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-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- package-json-from-dist@1.0.1:
- resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
-
- package-manager-detector@1.5.0:
- resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
- 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-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-scurry@2.0.0:
- resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
- engines: {node: 20 || >=22}
-
- path-to-regexp@8.3.0:
- resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- pathe@2.0.3:
- resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
-
- perfect-debounce@1.0.0:
- resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
-
- perfect-debounce@2.0.0:
- resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==}
-
- 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.3:
- resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
- engines: {node: '>=12'}
-
- pidtree@0.6.0:
- resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- pinia@3.0.3:
- resolution: {integrity: sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==}
- peerDependencies:
- typescript: '>=4.4.4'
- vue: ^2.7.0 || ^3.5.11
- peerDependenciesMeta:
- typescript:
- optional: true
-
- pinyin-pro@3.27.0:
- resolution: {integrity: sha512-Osdgjwe7Rm17N2paDMM47yW+jUIUH3+0RGo8QP39ZTLpTaJVDK0T58hOLaMQJbcMmAebVuK2ePunTEVEx1clNQ==}
-
- pkg-types@1.3.1:
- resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
-
- pkg-types@2.3.0:
- resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
-
- popmotion@11.0.5:
- resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==}
-
- portfinder@1.0.38:
- resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==}
- engines: {node: '>= 10.12'}
-
- postcss-calc@10.1.1:
- resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==}
- engines: {node: ^18.12 || ^20.9 || >=22.0}
- peerDependencies:
- postcss: ^8.4.38
-
- postcss-colormin@7.0.4:
- resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-convert-values@7.0.7:
- resolution: {integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-discard-comments@7.0.4:
- resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-discard-duplicates@7.0.2:
- resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-discard-empty@7.0.1:
- resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-discard-overridden@7.0.1:
- resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-html@1.8.0:
- resolution: {integrity: sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==}
- engines: {node: ^12 || >=14}
-
- postcss-load-config@6.0.1:
- resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
- engines: {node: '>= 18'}
- peerDependencies:
- jiti: '>=1.21.0'
- postcss: '>=8.0.9'
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- jiti:
- optional: true
- postcss:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
- postcss-media-query-parser@0.2.3:
- resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
-
- postcss-merge-longhand@7.0.5:
- resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-merge-rules@7.0.6:
- resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-minify-font-values@7.0.1:
- resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-minify-gradients@7.0.1:
- resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-minify-params@7.0.4:
- resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-minify-selectors@7.0.5:
- resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-charset@7.0.1:
- resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-display-values@7.0.1:
- resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-positions@7.0.1:
- resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-repeat-style@7.0.1:
- resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-string@7.0.1:
- resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-timing-functions@7.0.1:
- resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-unicode@7.0.4:
- resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-url@7.0.1:
- resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-normalize-whitespace@7.0.1:
- resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-ordered-values@7.0.2:
- resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-reduce-initial@7.0.4:
- resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-reduce-transforms@7.0.1:
- resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-resolve-nested-selector@0.1.6:
- resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==}
-
- postcss-safe-parser@6.0.0:
- resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.3.3
-
- postcss-safe-parser@7.0.1:
- resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==}
- engines: {node: '>=18.0'}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-scss@4.0.9:
- resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.4.29
-
- postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
-
- postcss-selector-parser@7.1.0:
- resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
- engines: {node: '>=4'}
-
- postcss-sorting@9.1.0:
- resolution: {integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==}
- peerDependencies:
- postcss: ^8.4.20
-
- postcss-svgo@7.1.0:
- resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==}
- engines: {node: ^18.12.0 || ^20.9.0 || >= 18}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-unique-selectors@7.0.4:
- resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- 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.6.2:
- resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
- engines: {node: '>=14'}
- hasBin: true
-
- 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'}
-
- qified@0.5.1:
- resolution: {integrity: sha512-+BtFN3dCP+IaFA6IYNOu/f/uK1B8xD2QWyOeCse0rjtAebBmkzgd2d1OAXi3ikAzJMIBSdzZDNZ3wZKEUDQs5w==}
- engines: {node: '>=20'}
-
- qs@6.14.0:
- resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
- engines: {node: '>=0.6'}
-
- quansync@0.2.11:
- resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- rc9@2.1.2:
- resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
-
- readdirp@4.1.2:
- resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
- engines: {node: '>= 14.18.0'}
-
- require-directory@2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
-
- require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- responsive-storage@2.2.0:
- resolution: {integrity: sha512-94W5Chr2F5kDBT6J+OCOeJguEkSTDc3jPOUQXYmzNG64DCNl5p7hoBDF7bx7u6EXAEcpUKF64OZR4b7Nn8h/Gg==}
-
- 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==}
-
- rimraf@6.0.1:
- resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==}
- engines: {node: 20 || >=22}
- hasBin: true
-
- rollup-plugin-external-globals@0.10.0:
- resolution: {integrity: sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==}
- peerDependencies:
- rollup: ^2.25.0 || ^3.3.0 || ^4.1.4
-
- rollup-plugin-visualizer@6.0.5:
- resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==}
- engines: {node: '>=18'}
- hasBin: true
- peerDependencies:
- rolldown: 1.x || ^1.0.0-beta
- rollup: 2.x || 3.x || 4.x
- peerDependenciesMeta:
- rolldown:
- optional: true
- rollup:
- optional: true
-
- rollup@4.52.5:
- resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- sass@1.93.2:
- resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
- sax@1.4.1:
- resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
-
- 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.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
- 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'}
-
- side-channel-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
-
- side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
-
- side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- slice-ansi@4.0.0:
- resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
- engines: {node: '>=10'}
-
- slice-ansi@7.1.2:
- resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
- engines: {node: '>=18'}
-
- sortablejs@1.15.6:
- resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.7.6:
- resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
- engines: {node: '>= 12'}
-
- sourcemap-codec@1.4.8:
- resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
- deprecated: Please use @jridgewell/sourcemap-codec instead
-
- speakingurl@14.0.1:
- resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
- engines: {node: '>=0.10.0'}
-
- split2@4.2.0:
- resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
- engines: {node: '>= 10.x'}
-
- std-env@3.10.0:
- resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
-
- 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-width@8.1.0:
- resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==}
- engines: {node: '>=20'}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.2:
- resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
- engines: {node: '>=12'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- strip-literal@3.1.0:
- resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
-
- style-value-types@5.1.2:
- resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==}
-
- stylehacks@7.0.6:
- resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.32
-
- stylelint-config-html@1.1.0:
- resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==}
- engines: {node: ^12 || >=14}
- peerDependencies:
- postcss-html: ^1.0.0
- stylelint: '>=14.0.0'
-
- stylelint-config-recess-order@7.4.0:
- resolution: {integrity: sha512-W3G517cBaMDYRX5Fzhro4fhRkkLafLgVSPfQnhxbiLyMnbLq47RMF/NRaOJ4OQsKWYhsIHOIc2Q3VL0X3Q7oPg==}
- peerDependencies:
- stylelint: '>=16.18'
- stylelint-order: '>=7'
-
- stylelint-config-recommended-scss@14.1.0:
- resolution: {integrity: sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- postcss: ^8.3.3
- stylelint: ^16.6.1
- peerDependenciesMeta:
- postcss:
- optional: true
-
- stylelint-config-recommended-vue@1.6.1:
- resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==}
- engines: {node: ^12 || >=14}
- peerDependencies:
- postcss-html: ^1.0.0
- stylelint: '>=14.0.0'
-
- stylelint-config-recommended@14.0.1:
- resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- stylelint: ^16.1.0
-
- stylelint-config-recommended@17.0.0:
- resolution: {integrity: sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- stylelint: ^16.23.0
-
- stylelint-config-standard-scss@14.0.0:
- resolution: {integrity: sha512-6Pa26D9mHyi4LauJ83ls3ELqCglU6VfCXchovbEqQUiEkezvKdv6VgsIoMy58i00c854wVmOw0k8W5FTpuaVqg==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- postcss: ^8.3.3
- stylelint: ^16.11.0
- peerDependenciesMeta:
- postcss:
- optional: true
-
- stylelint-config-standard@36.0.1:
- resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- stylelint: ^16.1.0
-
- stylelint-order@7.0.0:
- resolution: {integrity: sha512-rSWxx0KscYfxU02wEskKXES9lkRzuuONMMNkZ7SUc6uiF3tDKm7e+sE0Ax/SBlG4TUf1sp1R6f3/SlsPGmzthg==}
- engines: {node: '>=20.19.0'}
- peerDependencies:
- stylelint: ^16.18.0
-
- stylelint-prettier@5.0.3:
- resolution: {integrity: sha512-B6V0oa35ekRrKZlf+6+jA+i50C4GXJ7X1PPmoCqSUoXN6BrNF6NhqqhanvkLjqw2qgvrS0wjdpeC+Tn06KN3jw==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- prettier: '>=3.0.0'
- stylelint: '>=16.0.0'
-
- stylelint-scss@6.12.1:
- resolution: {integrity: sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- stylelint: ^16.0.2
-
- stylelint@16.25.0:
- resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==}
- engines: {node: '>=18.12.0'}
- hasBin: true
-
- superjson@2.2.3:
- resolution: {integrity: sha512-ay3d+LW/S6yppKoTz3Bq4mG0xrS5bFwfWEBmQfbC7lt5wmtk+Obq0TxVuA9eYRirBTQb1K3eEpBRHMQEo0WyVw==}
- engines: {node: '>=16'}
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-hyperlinks@3.2.0:
- resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==}
- engines: {node: '>=14.18'}
-
- svg-tags@1.0.0:
- resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
-
- svgo@3.3.2:
- resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
- svgo@4.0.0:
- resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==}
- engines: {node: '>=16'}
- hasBin: true
-
- synckit@0.11.11:
- resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
- engines: {node: ^14.18.0 || >=16.0.0}
-
- table@6.9.0:
- resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
- engines: {node: '>=10.0.0'}
-
- tailwindcss@4.1.16:
- resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==}
-
- tapable@2.3.0:
- resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
- engines: {node: '>=6'}
-
- text-extensions@2.4.0:
- resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
- engines: {node: '>=8'}
-
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
- tinycolor2@1.6.0:
- resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
-
- tinyexec@1.0.1:
- resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
-
- tinyglobby@0.2.15:
- resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
- engines: {node: '>=12.0.0'}
-
- tinygradient@1.1.5:
- resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==}
-
- tippy.js@6.3.7:
- resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.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.3.0:
- resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
-
- tslib@2.4.0:
- resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-fest@4.41.0:
- resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
- engines: {node: '>=16'}
-
- typescript-eslint@8.46.2:
- resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- ufo@1.6.1:
- resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
-
- unctx@2.4.1:
- resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==}
-
- undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
-
- unicorn-magic@0.1.0:
- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
- engines: {node: '>=18'}
-
- unimport@5.5.0:
- resolution: {integrity: sha512-/JpWMG9s1nBSlXJAQ8EREFTFy3oy6USFd8T6AoBaw1q2GGcF4R9yp3ofg32UODZlYEO5VD0EWE1RpI9XDWyPYg==}
- engines: {node: '>=18.12.0'}
-
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
- unplugin-icons@22.5.0:
- resolution: {integrity: sha512-MBlMtT5RuMYZy4TZgqUL2OTtOdTUVsS1Mhj6G1pEzMlFJlEnq6mhUfoIt45gBWxHcsOdXJDWLg3pRZ+YmvAVWQ==}
- peerDependencies:
- '@svgr/core': '>=7.0.0'
- '@svgx/core': ^1.0.1
- '@vue/compiler-sfc': ^3.0.2 || ^2.7.0
- svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
- vue-template-compiler: ^2.6.12
- vue-template-es2015-compiler: ^1.9.0
- peerDependenciesMeta:
- '@svgr/core':
- optional: true
- '@svgx/core':
- optional: true
- '@vue/compiler-sfc':
- optional: true
- svelte:
- optional: true
- vue-template-compiler:
- optional: true
- vue-template-es2015-compiler:
- optional: true
-
- unplugin-utils@0.3.1:
- resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
- engines: {node: '>=20.19.0'}
-
- unplugin@2.3.10:
- resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==}
- engines: {node: '>=18.12.0'}
-
- untyped@2.0.0:
- resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==}
- hasBin: true
-
- update-browserslist-db@1.1.4:
- resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
- 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==}
-
- vite-plugin-cdn-import@1.0.1:
- resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==}
-
- vite-plugin-compression@0.5.1:
- resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
- peerDependencies:
- vite: '>=2.0.0'
-
- vite-plugin-externals@0.6.2:
- resolution: {integrity: sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- vite: '>=2.0.0'
-
- vite-plugin-fake-server@2.2.0:
- resolution: {integrity: sha512-RP691997Q207nenNMhg7cvYyBXZyjqXwApTBa+a9kHmILgcAU2w4TMRDiAhIU0HPLAAR5MHlWTEpxA9Tbf+v8g==}
-
- vite-plugin-remove-console@2.2.0:
- resolution: {integrity: sha512-qgjh5pz75MdE9Kzs8J0kBwaCfifHV0ezRbB9rpGsIOxam+ilcGV7WOk91vFJXquzRmiKrFh3Hxlh0JJWAmXTbQ==}
-
- vite-plugin-router-warn@1.0.0:
- resolution: {integrity: sha512-jnr7faHJPkKxukBXVpg7Ui1UDqhmxD7xU6JGidq8ivSHTsNAPqzSpPpwW8O1PBP/0+Owq4bLfNNk11drOkz4xA==}
-
- vite-svg-loader@5.1.0:
- resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==}
- peerDependencies:
- vue: '>=3.2.13'
-
- vite@7.1.12:
- resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- lightningcss: ^1.21.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- 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
-
- vscode-uri@3.1.0:
- resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
-
- 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.2.0:
- resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
-
- vue-router@4.6.3:
- resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==}
- peerDependencies:
- vue: ^3.5.0
-
- vue-tippy@6.7.1:
- resolution: {integrity: sha512-gdHbBV5/Vc8gH87hQHLA7TN1K4BlLco3MAPrTb70ZYGXxx+55rAU4a4mt0fIoP+gB3etu1khUZ6c29Br1n0CiA==}
- peerDependencies:
- vue: ^3.2.0
-
- vue-tsc@3.1.2:
- resolution: {integrity: sha512-3fd4DY0rFczs5f+VB3OhcLU83V6+3Puj2yLBe0Ak65k7ERk+STVNKaOAi0EBo6Lc15UiJB6LzU6Mxy4+h/pKew==}
- hasBin: true
- peerDependencies:
- typescript: '>=5.0.0'
-
- vue-types@6.0.0:
- resolution: {integrity: sha512-fBgCA4nrBrB8SCU/AN40tFq8HUxLGBvU2ds7a5+SEDse6dYc+TJyvy8mWiwwL8oWIC/aGS/8nTqmhwxApgU5eA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- vue: ^3.0.0
- peerDependenciesMeta:
- vue:
- optional: true
-
- vue@3.5.22:
- resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- webpack-virtual-modules@0.6.2:
- resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
-
- which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- widest-line@5.0.0:
- resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
- engines: {node: '>=18'}
-
- 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.2:
- resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
- engines: {node: '>=18'}
-
- write-file-atomic@5.0.1:
- resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- xml-name-validator@4.0.0:
- resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
- engines: {node: '>=12'}
-
- y18n@5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yaml@2.8.1:
- resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
- engines: {node: '>= 14.6'}
- 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'}
-
- yocto-queue@1.2.1:
- resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
- engines: {node: '>=12.20'}
-
- zrender@6.0.0:
- resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==}
-
-snapshots:
-
- '@antfu/install-pkg@1.1.0':
- dependencies:
- package-manager-detector: 1.5.0
- tinyexec: 1.0.1
-
- '@antfu/utils@9.3.0': {}
-
- '@babel/code-frame@7.27.1':
- dependencies:
- '@babel/helper-validator-identifier': 7.28.5
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.28.5': {}
-
- '@babel/core@7.28.5':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.28.5':
- dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
- jsesc: 3.1.0
-
- '@babel/helper-annotate-as-pure@7.27.3':
- dependencies:
- '@babel/types': 7.28.5
-
- '@babel/helper-compilation-targets@7.27.2':
- dependencies:
- '@babel/compat-data': 7.28.5
- '@babel/helper-validator-option': 7.27.1
- browserslist: 4.27.0
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-member-expression-to-functions': 7.28.5
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.28.5
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-globals@7.28.0': {}
-
- '@babel/helper-member-expression-to-functions@7.28.5':
- dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-imports@7.27.1':
- dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-optimise-call-expression@7.27.1':
- dependencies:
- '@babel/types': 7.28.5
-
- '@babel/helper-plugin-utils@7.27.1': {}
-
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-member-expression-to-functions': 7.28.5
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
- dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.28.5': {}
-
- '@babel/helper-validator-option@7.27.1': {}
-
- '@babel/helpers@7.28.4':
- dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
-
- '@babel/parser@7.28.5':
- dependencies:
- '@babel/types': 7.28.5
-
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
-
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
-
- '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/template@7.27.2':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
-
- '@babel/traverse@7.28.5':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.28.5':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
-
- '@cacheable/memoize@2.0.3':
- dependencies:
- '@cacheable/utils': 2.1.0
-
- '@cacheable/memory@2.0.3':
- dependencies:
- '@cacheable/memoize': 2.0.3
- '@cacheable/utils': 2.1.0
- '@keyv/bigmap': 1.1.0(keyv@5.5.3)
- hookified: 1.12.2
- keyv: 5.5.3
-
- '@cacheable/utils@2.1.0':
- dependencies:
- keyv: 5.5.3
-
- '@code-inspector/core@1.2.10':
- dependencies:
- '@vue/compiler-dom': 3.5.22
- chalk: 4.1.1
- dotenv: 16.6.1
- launch-ide: 1.2.0
- portfinder: 1.0.38
- transitivePeerDependencies:
- - supports-color
-
- '@code-inspector/esbuild@1.2.10':
- dependencies:
- '@code-inspector/core': 1.2.10
- transitivePeerDependencies:
- - supports-color
-
- '@code-inspector/mako@1.2.10':
- dependencies:
- '@code-inspector/core': 1.2.10
- transitivePeerDependencies:
- - supports-color
-
- '@code-inspector/turbopack@1.2.10':
- dependencies:
- '@code-inspector/core': 1.2.10
- '@code-inspector/webpack': 1.2.10
- transitivePeerDependencies:
- - supports-color
-
- '@code-inspector/vite@1.2.10':
- dependencies:
- '@code-inspector/core': 1.2.10
- chalk: 4.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@code-inspector/webpack@1.2.10':
- dependencies:
- '@code-inspector/core': 1.2.10
- transitivePeerDependencies:
- - supports-color
-
- '@commitlint/cli@20.1.0(@types/node@20.19.23)(typescript@5.9.3)':
- dependencies:
- '@commitlint/format': 20.0.0
- '@commitlint/lint': 20.0.0
- '@commitlint/load': 20.1.0(@types/node@20.19.23)(typescript@5.9.3)
- '@commitlint/read': 20.0.0
- '@commitlint/types': 20.0.0
- tinyexec: 1.0.1
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- '@commitlint/config-conventional@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- conventional-changelog-conventionalcommits: 7.0.2
-
- '@commitlint/config-validator@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- ajv: 8.17.1
-
- '@commitlint/ensure@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- lodash.camelcase: 4.3.0
- lodash.kebabcase: 4.1.1
- lodash.snakecase: 4.1.1
- lodash.startcase: 4.4.0
- lodash.upperfirst: 4.3.1
-
- '@commitlint/execute-rule@20.0.0': {}
-
- '@commitlint/format@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- chalk: 5.6.2
-
- '@commitlint/is-ignored@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- semver: 7.7.3
-
- '@commitlint/lint@20.0.0':
- dependencies:
- '@commitlint/is-ignored': 20.0.0
- '@commitlint/parse': 20.0.0
- '@commitlint/rules': 20.0.0
- '@commitlint/types': 20.0.0
-
- '@commitlint/load@20.1.0(@types/node@20.19.23)(typescript@5.9.3)':
- dependencies:
- '@commitlint/config-validator': 20.0.0
- '@commitlint/execute-rule': 20.0.0
- '@commitlint/resolve-extends': 20.1.0
- '@commitlint/types': 20.0.0
- chalk: 5.6.2
- cosmiconfig: 9.0.0(typescript@5.9.3)
- cosmiconfig-typescript-loader: 6.2.0(@types/node@20.19.23)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3)
- lodash.isplainobject: 4.0.6
- lodash.merge: 4.6.2
- lodash.uniq: 4.5.0
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- '@commitlint/message@20.0.0': {}
-
- '@commitlint/parse@20.0.0':
- dependencies:
- '@commitlint/types': 20.0.0
- conventional-changelog-angular: 7.0.0
- conventional-commits-parser: 5.0.0
-
- '@commitlint/read@20.0.0':
- dependencies:
- '@commitlint/top-level': 20.0.0
- '@commitlint/types': 20.0.0
- git-raw-commits: 4.0.0
- minimist: 1.2.8
- tinyexec: 1.0.1
-
- '@commitlint/resolve-extends@20.1.0':
- dependencies:
- '@commitlint/config-validator': 20.0.0
- '@commitlint/types': 20.0.0
- global-directory: 4.0.1
- import-meta-resolve: 4.2.0
- lodash.mergewith: 4.6.2
- resolve-from: 5.0.0
-
- '@commitlint/rules@20.0.0':
- dependencies:
- '@commitlint/ensure': 20.0.0
- '@commitlint/message': 20.0.0
- '@commitlint/to-lines': 20.0.0
- '@commitlint/types': 20.0.0
-
- '@commitlint/to-lines@20.0.0': {}
-
- '@commitlint/top-level@20.0.0':
- dependencies:
- find-up: 7.0.0
-
- '@commitlint/types@20.0.0':
- dependencies:
- '@types/conventional-commits-parser': 5.0.2
- chalk: 5.6.2
-
- '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/css-tokenizer@3.0.4': {}
-
- '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)':
- dependencies:
- postcss-selector-parser: 7.1.0
-
- '@ctrl/tinycolor@3.6.1': {}
-
- '@dual-bundle/import-meta-resolve@4.2.1': {}
-
- '@element-plus/icons-vue@2.3.2(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- vue: 3.5.22(typescript@5.9.3)
-
- '@esbuild/aix-ppc64@0.24.2':
- optional: true
-
- '@esbuild/aix-ppc64@0.25.11':
- optional: true
-
- '@esbuild/android-arm64@0.24.2':
- optional: true
-
- '@esbuild/android-arm64@0.25.11':
- optional: true
-
- '@esbuild/android-arm@0.24.2':
- optional: true
-
- '@esbuild/android-arm@0.25.11':
- optional: true
-
- '@esbuild/android-x64@0.24.2':
- optional: true
-
- '@esbuild/android-x64@0.25.11':
- optional: true
-
- '@esbuild/darwin-arm64@0.24.2':
- optional: true
-
- '@esbuild/darwin-arm64@0.25.11':
- optional: true
-
- '@esbuild/darwin-x64@0.24.2':
- optional: true
-
- '@esbuild/darwin-x64@0.25.11':
- optional: true
-
- '@esbuild/freebsd-arm64@0.24.2':
- optional: true
-
- '@esbuild/freebsd-arm64@0.25.11':
- optional: true
-
- '@esbuild/freebsd-x64@0.24.2':
- optional: true
-
- '@esbuild/freebsd-x64@0.25.11':
- optional: true
-
- '@esbuild/linux-arm64@0.24.2':
- optional: true
-
- '@esbuild/linux-arm64@0.25.11':
- optional: true
-
- '@esbuild/linux-arm@0.24.2':
- optional: true
-
- '@esbuild/linux-arm@0.25.11':
- optional: true
-
- '@esbuild/linux-ia32@0.24.2':
- optional: true
-
- '@esbuild/linux-ia32@0.25.11':
- optional: true
-
- '@esbuild/linux-loong64@0.24.2':
- optional: true
-
- '@esbuild/linux-loong64@0.25.11':
- optional: true
-
- '@esbuild/linux-mips64el@0.24.2':
- optional: true
-
- '@esbuild/linux-mips64el@0.25.11':
- optional: true
-
- '@esbuild/linux-ppc64@0.24.2':
- optional: true
-
- '@esbuild/linux-ppc64@0.25.11':
- optional: true
-
- '@esbuild/linux-riscv64@0.24.2':
- optional: true
-
- '@esbuild/linux-riscv64@0.25.11':
- optional: true
-
- '@esbuild/linux-s390x@0.24.2':
- optional: true
-
- '@esbuild/linux-s390x@0.25.11':
- optional: true
-
- '@esbuild/linux-x64@0.24.2':
- optional: true
-
- '@esbuild/linux-x64@0.25.11':
- optional: true
-
- '@esbuild/netbsd-arm64@0.24.2':
- optional: true
-
- '@esbuild/netbsd-arm64@0.25.11':
- optional: true
-
- '@esbuild/netbsd-x64@0.24.2':
- optional: true
-
- '@esbuild/netbsd-x64@0.25.11':
- optional: true
-
- '@esbuild/openbsd-arm64@0.24.2':
- optional: true
-
- '@esbuild/openbsd-arm64@0.25.11':
- optional: true
-
- '@esbuild/openbsd-x64@0.24.2':
- optional: true
-
- '@esbuild/openbsd-x64@0.25.11':
- optional: true
-
- '@esbuild/openharmony-arm64@0.25.11':
- optional: true
-
- '@esbuild/sunos-x64@0.24.2':
- optional: true
-
- '@esbuild/sunos-x64@0.25.11':
- optional: true
-
- '@esbuild/win32-arm64@0.24.2':
- optional: true
-
- '@esbuild/win32-arm64@0.25.11':
- optional: true
-
- '@esbuild/win32-ia32@0.24.2':
- optional: true
-
- '@esbuild/win32-ia32@0.25.11':
- optional: true
-
- '@esbuild/win32-x64@0.24.2':
- optional: true
-
- '@esbuild/win32-x64@0.25.11':
- optional: true
-
- '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))':
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.2': {}
-
- '@eslint/config-array@0.21.1':
- dependencies:
- '@eslint/object-schema': 2.1.7
- debug: 4.4.3
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/config-helpers@0.4.1':
- dependencies:
- '@eslint/core': 0.16.0
-
- '@eslint/core@0.16.0':
- dependencies:
- '@types/json-schema': 7.0.15
-
- '@eslint/eslintrc@3.3.1':
- dependencies:
- ajv: 6.12.6
- debug: 4.4.3
- espree: 10.4.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.38.0': {}
-
- '@eslint/object-schema@2.1.7': {}
-
- '@eslint/plugin-kit@0.4.0':
- dependencies:
- '@eslint/core': 0.16.0
- levn: 0.4.1
-
- '@faker-js/faker@10.1.0': {}
-
- '@floating-ui/core@1.7.3':
- dependencies:
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/dom@1.7.4':
- dependencies:
- '@floating-ui/core': 1.7.3
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/utils@0.2.10': {}
-
- '@humanfs/core@0.19.1': {}
-
- '@humanfs/node@0.16.7':
- dependencies:
- '@humanfs/core': 0.19.1
- '@humanwhocodes/retry': 0.4.3
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/retry@0.4.3': {}
-
- '@iconify/json@2.2.400':
- dependencies:
- '@iconify/types': 2.0.0
- pathe: 2.0.3
-
- '@iconify/types@2.0.0': {}
-
- '@iconify/utils@3.0.2':
- dependencies:
- '@antfu/install-pkg': 1.1.0
- '@antfu/utils': 9.3.0
- '@iconify/types': 2.0.0
- debug: 4.4.3
- globals: 15.15.0
- kolorist: 1.8.0
- local-pkg: 1.1.2
- mlly: 1.8.0
- transitivePeerDependencies:
- - supports-color
-
- '@iconify/vue@4.2.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@iconify/types': 2.0.0
- vue: 3.5.22(typescript@5.9.3)
-
- '@isaacs/balanced-match@4.0.1': {}
-
- '@isaacs/brace-expansion@5.0.0':
- dependencies:
- '@isaacs/balanced-match': 4.0.1
-
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.2
- 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.13':
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.5.5': {}
-
- '@jridgewell/trace-mapping@0.3.31':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
-
- '@keyv/bigmap@1.1.0(keyv@5.5.3)':
- dependencies:
- hookified: 1.12.2
- keyv: 5.5.3
-
- '@keyv/serialize@1.1.1': {}
-
- '@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
-
- '@nuxt/kit@3.19.3':
- dependencies:
- c12: 3.3.1
- consola: 3.4.2
- defu: 6.1.4
- destr: 2.0.5
- errx: 0.1.0
- exsolve: 1.0.7
- ignore: 7.0.5
- jiti: 2.6.1
- klona: 2.0.6
- knitwork: 1.2.0
- mlly: 1.8.0
- ohash: 2.0.11
- pathe: 2.0.3
- pkg-types: 2.3.0
- rc9: 2.1.2
- scule: 1.3.0
- semver: 7.7.3
- std-env: 3.10.0
- tinyglobby: 0.2.15
- ufo: 1.6.1
- unctx: 2.4.1
- unimport: 5.5.0
- untyped: 2.0.0
- transitivePeerDependencies:
- - magicast
- optional: true
-
- '@parcel/watcher-android-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-x64@2.5.1':
- optional: true
-
- '@parcel/watcher-freebsd-x64@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-x64-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-ia32@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-x64@2.5.1':
- optional: true
-
- '@parcel/watcher@2.5.1':
- dependencies:
- detect-libc: 1.0.3
- is-glob: 4.0.3
- micromatch: 4.0.8
- node-addon-api: 7.1.1
- optionalDependencies:
- '@parcel/watcher-android-arm64': 2.5.1
- '@parcel/watcher-darwin-arm64': 2.5.1
- '@parcel/watcher-darwin-x64': 2.5.1
- '@parcel/watcher-freebsd-x64': 2.5.1
- '@parcel/watcher-linux-arm-glibc': 2.5.1
- '@parcel/watcher-linux-arm-musl': 2.5.1
- '@parcel/watcher-linux-arm64-glibc': 2.5.1
- '@parcel/watcher-linux-arm64-musl': 2.5.1
- '@parcel/watcher-linux-x64-glibc': 2.5.1
- '@parcel/watcher-linux-x64-musl': 2.5.1
- '@parcel/watcher-win32-arm64': 2.5.1
- '@parcel/watcher-win32-ia32': 2.5.1
- '@parcel/watcher-win32-x64': 2.5.1
- optional: true
-
- '@pkgr/core@0.2.9': {}
-
- '@popperjs/core@2.11.8': {}
-
- '@pureadmin/descriptions@1.2.1(echarts@6.0.0)(element-plus@2.11.5(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
- dependencies:
- '@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.9.3))
- '@pureadmin/utils': 2.6.2(echarts@6.0.0)(vue@3.5.22(typescript@5.9.3))
- element-plus: 2.11.5(vue@3.5.22(typescript@5.9.3))
- vue: 3.5.22(typescript@5.9.3)
- transitivePeerDependencies:
- - echarts
- - typescript
-
- '@pureadmin/table@3.3.0(element-plus@2.11.5(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
- dependencies:
- element-plus: 2.11.5(vue@3.5.22(typescript@5.9.3))
- vue: 3.5.22(typescript@5.9.3)
- transitivePeerDependencies:
- - typescript
-
- '@pureadmin/utils@2.6.2(echarts@6.0.0)(vue@3.5.22(typescript@5.9.3))':
- optionalDependencies:
- echarts: 6.0.0
- vue: 3.5.22(typescript@5.9.3)
-
- '@rolldown/pluginutils@1.0.0-beta.29': {}
-
- '@rolldown/pluginutils@1.0.0-beta.45': {}
-
- '@rollup/pluginutils@5.3.0(rollup@4.52.5)':
- dependencies:
- '@types/estree': 1.0.8
- estree-walker: 2.0.2
- picomatch: 4.0.3
- optionalDependencies:
- rollup: 4.52.5
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- optional: true
-
- '@rollup/rollup-android-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- optional: true
-
- '@sxzz/popperjs-es@2.11.7': {}
-
- '@tailwindcss/node@4.1.16':
- dependencies:
- '@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.18.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- magic-string: 0.30.21
- source-map-js: 1.2.1
- tailwindcss: 4.1.16
-
- '@tailwindcss/oxide-android-arm64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.16':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.16':
- optional: true
-
- '@tailwindcss/oxide@4.1.16':
- optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.1.16
- '@tailwindcss/oxide-darwin-arm64': 4.1.16
- '@tailwindcss/oxide-darwin-x64': 4.1.16
- '@tailwindcss/oxide-freebsd-x64': 4.1.16
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.16
- '@tailwindcss/oxide-linux-arm64-gnu': 4.1.16
- '@tailwindcss/oxide-linux-arm64-musl': 4.1.16
- '@tailwindcss/oxide-linux-x64-gnu': 4.1.16
- '@tailwindcss/oxide-linux-x64-musl': 4.1.16
- '@tailwindcss/oxide-wasm32-wasi': 4.1.16
- '@tailwindcss/oxide-win32-arm64-msvc': 4.1.16
- '@tailwindcss/oxide-win32-x64-msvc': 4.1.16
-
- '@tailwindcss/vite@4.1.16(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))':
- dependencies:
- '@tailwindcss/node': 4.1.16
- '@tailwindcss/oxide': 4.1.16
- tailwindcss: 4.1.16
- vite: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
-
- '@trysound/sax@0.2.0': {}
-
- '@types/conventional-commits-parser@5.0.2':
- dependencies:
- '@types/node': 20.19.23
-
- '@types/estree@1.0.8': {}
-
- '@types/js-cookie@3.0.6': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/lodash-es@4.17.12':
- dependencies:
- '@types/lodash': 4.17.20
-
- '@types/lodash@4.17.20': {}
-
- '@types/node@20.19.23':
- dependencies:
- undici-types: 6.21.0
-
- '@types/nprogress@0.2.3': {}
-
- '@types/path-browserify@1.0.3': {}
-
- '@types/qs@6.14.0': {}
-
- '@types/sortablejs@1.15.9': {}
-
- '@types/tinycolor2@1.4.6': {}
-
- '@types/web-bluetooth@0.0.16': {}
-
- '@types/web-bluetooth@0.0.21': {}
-
- '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.46.2
- '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.46.2
- eslint: 9.38.0(jiti@2.6.1)
- graphemer: 1.4.0
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.46.2
- '@typescript-eslint/types': 8.46.2
- '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.46.2
- debug: 4.4.3
- eslint: 9.38.0(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.2
- debug: 4.4.3
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@8.46.2':
- dependencies:
- '@typescript-eslint/types': 8.46.2
- '@typescript-eslint/visitor-keys': 8.46.2
-
- '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)':
- dependencies:
- typescript: 5.9.3
-
- '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/types': 8.46.2
- '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- debug: 4.4.3
- eslint: 9.38.0(jiti@2.6.1)
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@8.46.2': {}
-
- '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/types': 8.46.2
- '@typescript-eslint/visitor-keys': 8.46.2
- debug: 4.4.3
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.3
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.46.2
- '@typescript-eslint/types': 8.46.2
- '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/visitor-keys@8.46.2':
- dependencies:
- '@typescript-eslint/types': 8.46.2
- eslint-visitor-keys: 4.2.1
-
- '@vitejs/plugin-vue-jsx@5.1.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
- '@rolldown/pluginutils': 1.0.0-beta.45
- '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5)
- vite: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.3)
- transitivePeerDependencies:
- - supports-color
-
- '@vitejs/plugin-vue@6.0.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@rolldown/pluginutils': 1.0.0-beta.29
- vite: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.3)
-
- '@volar/language-core@2.4.23':
- dependencies:
- '@volar/source-map': 2.4.23
-
- '@volar/source-map@2.4.23': {}
-
- '@volar/typescript@2.4.23':
- dependencies:
- '@volar/language-core': 2.4.23
- path-browserify: 1.0.1
- vscode-uri: 3.1.0
-
- '@vue/babel-helper-vue-transform-on@1.5.0': {}
-
- '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.5)':
- dependencies:
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- '@vue/babel-helper-vue-transform-on': 1.5.0
- '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5)
- '@vue/shared': 3.5.22
- optionalDependencies:
- '@babel/core': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
- '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.5)':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/parser': 7.28.5
- '@vue/compiler-sfc': 3.5.22
- transitivePeerDependencies:
- - supports-color
-
- '@vue/compiler-core@3.5.22':
- dependencies:
- '@babel/parser': 7.28.5
- '@vue/shared': 3.5.22
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
- '@vue/compiler-dom@3.5.22':
- dependencies:
- '@vue/compiler-core': 3.5.22
- '@vue/shared': 3.5.22
-
- '@vue/compiler-sfc@3.5.22':
- dependencies:
- '@babel/parser': 7.28.5
- '@vue/compiler-core': 3.5.22
- '@vue/compiler-dom': 3.5.22
- '@vue/compiler-ssr': 3.5.22
- '@vue/shared': 3.5.22
- estree-walker: 2.0.2
- magic-string: 0.30.21
- postcss: 8.5.6
- source-map-js: 1.2.1
-
- '@vue/compiler-ssr@3.5.22':
- dependencies:
- '@vue/compiler-dom': 3.5.22
- '@vue/shared': 3.5.22
-
- '@vue/devtools-api@6.6.4': {}
-
- '@vue/devtools-api@7.7.7':
- dependencies:
- '@vue/devtools-kit': 7.7.7
-
- '@vue/devtools-kit@7.7.7':
- dependencies:
- '@vue/devtools-shared': 7.7.7
- birpc: 2.6.1
- hookable: 5.5.3
- mitt: 3.0.1
- perfect-debounce: 1.0.0
- speakingurl: 14.0.1
- superjson: 2.2.3
-
- '@vue/devtools-shared@7.7.7':
- dependencies:
- rfdc: 1.4.1
-
- '@vue/language-core@3.1.2(typescript@5.9.3)':
- dependencies:
- '@volar/language-core': 2.4.23
- '@vue/compiler-dom': 3.5.22
- '@vue/shared': 3.5.22
- alien-signals: 3.0.3
- muggle-string: 0.4.1
- path-browserify: 1.0.1
- picomatch: 4.0.3
- optionalDependencies:
- typescript: 5.9.3
-
- '@vue/reactivity@3.5.22':
- dependencies:
- '@vue/shared': 3.5.22
-
- '@vue/runtime-core@3.5.22':
- dependencies:
- '@vue/reactivity': 3.5.22
- '@vue/shared': 3.5.22
-
- '@vue/runtime-dom@3.5.22':
- dependencies:
- '@vue/reactivity': 3.5.22
- '@vue/runtime-core': 3.5.22
- '@vue/shared': 3.5.22
- csstype: 3.1.3
-
- '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@vue/compiler-ssr': 3.5.22
- '@vue/shared': 3.5.22
- vue: 3.5.22(typescript@5.9.3)
-
- '@vue/shared@3.5.22': {}
-
- '@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@types/web-bluetooth': 0.0.21
- '@vueuse/metadata': 13.9.0
- '@vueuse/shared': 13.9.0(vue@3.5.22(typescript@5.9.3))
- vue: 3.5.22(typescript@5.9.3)
-
- '@vueuse/core@14.0.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@types/web-bluetooth': 0.0.21
- '@vueuse/metadata': 14.0.0
- '@vueuse/shared': 14.0.0(vue@3.5.22(typescript@5.9.3))
- vue: 3.5.22(typescript@5.9.3)
-
- '@vueuse/core@9.13.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@types/web-bluetooth': 0.0.16
- '@vueuse/metadata': 9.13.0
- '@vueuse/shared': 9.13.0(vue@3.5.22(typescript@5.9.3))
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
- transitivePeerDependencies:
- - '@vue/composition-api'
- - vue
-
- '@vueuse/metadata@13.9.0': {}
-
- '@vueuse/metadata@14.0.0': {}
-
- '@vueuse/metadata@9.13.0': {}
-
- '@vueuse/motion@3.0.3(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3))
- '@vueuse/shared': 13.9.0(vue@3.5.22(typescript@5.9.3))
- defu: 6.1.4
- framesync: 6.1.2
- popmotion: 11.0.5
- style-value-types: 5.1.2
- vue: 3.5.22(typescript@5.9.3)
- optionalDependencies:
- '@nuxt/kit': 3.19.3
- transitivePeerDependencies:
- - magicast
-
- '@vueuse/shared@13.9.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- vue: 3.5.22(typescript@5.9.3)
-
- '@vueuse/shared@14.0.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- vue: 3.5.22(typescript@5.9.3)
-
- '@vueuse/shared@9.13.0(vue@3.5.22(typescript@5.9.3))':
- dependencies:
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
- transitivePeerDependencies:
- - '@vue/composition-api'
- - vue
-
- JSONStream@1.3.5:
- dependencies:
- jsonparse: 1.3.1
- through: 2.3.8
-
- acorn-jsx@5.3.2(acorn@8.15.0):
- dependencies:
- acorn: 8.15.0
-
- acorn@8.15.0: {}
-
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ajv@8.17.1:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-uri: 3.1.0
- json-schema-traverse: 1.0.0
- require-from-string: 2.0.2
-
- alien-signals@3.0.3: {}
-
- animate.css@4.1.1: {}
-
- ansi-align@3.0.1:
- dependencies:
- string-width: 4.2.3
-
- ansi-escapes@7.1.1:
- dependencies:
- environment: 1.1.0
-
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.2.2: {}
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- ansi-styles@6.2.3: {}
-
- argparse@2.0.1: {}
-
- array-ify@1.0.0: {}
-
- array-union@2.1.0: {}
-
- astral-regex@2.0.0: {}
-
- async-validator@4.2.5: {}
-
- async@3.2.6: {}
-
- asynckit@0.4.0: {}
-
- axios@1.12.2:
- dependencies:
- follow-redirects: 1.15.11
- form-data: 4.0.4
- proxy-from-env: 1.1.0
- transitivePeerDependencies:
- - debug
-
- balanced-match@1.0.2: {}
-
- balanced-match@2.0.0: {}
-
- baseline-browser-mapping@2.8.20: {}
-
- birpc@2.6.1: {}
-
- boolbase@1.0.0: {}
-
- boxen@8.0.1:
- dependencies:
- ansi-align: 3.0.1
- camelcase: 8.0.0
- chalk: 5.6.2
- cli-boxes: 3.0.0
- string-width: 7.2.0
- type-fest: 4.41.0
- widest-line: 5.0.0
- wrap-ansi: 9.0.2
-
- brace-expansion@1.1.12:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- brace-expansion@2.0.2:
- dependencies:
- balanced-match: 1.0.2
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- browserslist@4.27.0:
- dependencies:
- baseline-browser-mapping: 2.8.20
- caniuse-lite: 1.0.30001751
- electron-to-chromium: 1.5.240
- node-releases: 2.0.26
- update-browserslist-db: 1.1.4(browserslist@4.27.0)
-
- bundle-import@0.0.2:
- dependencies:
- get-tsconfig: 4.13.0
- import-from-string: 0.0.5
-
- c12@3.3.1:
- dependencies:
- chokidar: 4.0.3
- confbox: 0.2.2
- defu: 6.1.4
- dotenv: 17.2.3
- exsolve: 1.0.7
- giget: 2.0.0
- jiti: 2.6.1
- ohash: 2.0.11
- pathe: 2.0.3
- perfect-debounce: 2.0.0
- pkg-types: 2.3.0
- rc9: 2.1.2
- optional: true
-
- cacheable@2.1.1:
- dependencies:
- '@cacheable/memoize': 2.0.3
- '@cacheable/memory': 2.0.3
- '@cacheable/utils': 2.1.0
- hookified: 1.12.2
- keyv: 5.5.3
- qified: 0.5.1
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
-
- call-bound@1.0.4:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- get-intrinsic: 1.3.0
-
- callsites@3.1.0: {}
-
- camelcase@8.0.0: {}
-
- caniuse-api@3.0.0:
- dependencies:
- browserslist: 4.27.0
- caniuse-lite: 1.0.30001751
- lodash.memoize: 4.1.2
- lodash.uniq: 4.5.0
-
- caniuse-lite@1.0.30001751: {}
-
- chalk@4.1.1:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@5.6.2: {}
-
- chokidar@4.0.3:
- dependencies:
- readdirp: 4.1.2
-
- citty@0.1.6:
- dependencies:
- consola: 3.4.2
- optional: true
-
- cli-boxes@3.0.0: {}
-
- cli-cursor@5.0.0:
- dependencies:
- restore-cursor: 5.1.0
-
- cli-truncate@5.1.1:
- dependencies:
- slice-ansi: 7.1.2
- string-width: 8.1.0
-
- cliui@8.0.1:
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
-
- code-inspector-plugin@1.2.10:
- dependencies:
- '@code-inspector/core': 1.2.10
- '@code-inspector/esbuild': 1.2.10
- '@code-inspector/mako': 1.2.10
- '@code-inspector/turbopack': 1.2.10
- '@code-inspector/vite': 1.2.10
- '@code-inspector/webpack': 1.2.10
- chalk: 4.1.1
- transitivePeerDependencies:
- - supports-color
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.4: {}
-
- colord@2.9.3: {}
-
- colorette@2.0.20: {}
-
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
- commander@11.1.0: {}
-
- commander@14.0.2: {}
-
- commander@7.2.0: {}
-
- compare-func@2.0.0:
- dependencies:
- array-ify: 1.0.0
- dot-prop: 5.3.0
-
- concat-map@0.0.1: {}
-
- confbox@0.1.8: {}
-
- confbox@0.2.2: {}
-
- consola@3.4.2:
- optional: true
-
- conventional-changelog-angular@7.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-conventionalcommits@7.0.2:
- dependencies:
- compare-func: 2.0.0
-
- conventional-commits-parser@5.0.0:
- dependencies:
- JSONStream: 1.3.5
- is-text-path: 2.0.0
- meow: 12.1.1
- split2: 4.2.0
-
- convert-source-map@2.0.0: {}
-
- copy-anything@4.0.5:
- dependencies:
- is-what: 5.5.0
-
- cosmiconfig-typescript-loader@6.2.0(@types/node@20.19.23)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3):
- dependencies:
- '@types/node': 20.19.23
- cosmiconfig: 9.0.0(typescript@5.9.3)
- jiti: 2.6.1
- typescript: 5.9.3
-
- cosmiconfig@9.0.0(typescript@5.9.3):
- dependencies:
- env-paths: 2.2.1
- import-fresh: 3.3.1
- js-yaml: 4.1.0
- parse-json: 5.2.0
- optionalDependencies:
- typescript: 5.9.3
-
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- css-declaration-sorter@7.3.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- css-functions-list@3.2.3: {}
-
- css-select@5.2.2:
- dependencies:
- boolbase: 1.0.0
- css-what: 6.2.2
- domhandler: 5.0.3
- domutils: 3.2.2
- nth-check: 2.1.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.2.2: {}
-
- cssesc@3.0.0: {}
-
- cssnano-preset-default@7.0.9(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- css-declaration-sorter: 7.3.0(postcss@8.5.6)
- cssnano-utils: 5.0.1(postcss@8.5.6)
- postcss: 8.5.6
- postcss-calc: 10.1.1(postcss@8.5.6)
- postcss-colormin: 7.0.4(postcss@8.5.6)
- postcss-convert-values: 7.0.7(postcss@8.5.6)
- postcss-discard-comments: 7.0.4(postcss@8.5.6)
- postcss-discard-duplicates: 7.0.2(postcss@8.5.6)
- postcss-discard-empty: 7.0.1(postcss@8.5.6)
- postcss-discard-overridden: 7.0.1(postcss@8.5.6)
- postcss-merge-longhand: 7.0.5(postcss@8.5.6)
- postcss-merge-rules: 7.0.6(postcss@8.5.6)
- postcss-minify-font-values: 7.0.1(postcss@8.5.6)
- postcss-minify-gradients: 7.0.1(postcss@8.5.6)
- postcss-minify-params: 7.0.4(postcss@8.5.6)
- postcss-minify-selectors: 7.0.5(postcss@8.5.6)
- postcss-normalize-charset: 7.0.1(postcss@8.5.6)
- postcss-normalize-display-values: 7.0.1(postcss@8.5.6)
- postcss-normalize-positions: 7.0.1(postcss@8.5.6)
- postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6)
- postcss-normalize-string: 7.0.1(postcss@8.5.6)
- postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6)
- postcss-normalize-unicode: 7.0.4(postcss@8.5.6)
- postcss-normalize-url: 7.0.1(postcss@8.5.6)
- postcss-normalize-whitespace: 7.0.1(postcss@8.5.6)
- postcss-ordered-values: 7.0.2(postcss@8.5.6)
- postcss-reduce-initial: 7.0.4(postcss@8.5.6)
- postcss-reduce-transforms: 7.0.1(postcss@8.5.6)
- postcss-svgo: 7.1.0(postcss@8.5.6)
- postcss-unique-selectors: 7.0.4(postcss@8.5.6)
-
- cssnano-utils@5.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- cssnano@7.1.1(postcss@8.5.6):
- dependencies:
- cssnano-preset-default: 7.0.9(postcss@8.5.6)
- lilconfig: 3.1.3
- postcss: 8.5.6
-
- csso@5.0.5:
- dependencies:
- css-tree: 2.2.1
-
- csstype@3.1.3: {}
-
- dargs@8.1.0: {}
-
- dayjs@1.11.18: {}
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
-
- deep-is@0.1.4: {}
-
- define-lazy-prop@2.0.0: {}
-
- defu@6.1.4: {}
-
- delayed-stream@1.0.0: {}
-
- destr@2.0.5:
- optional: true
-
- detect-libc@1.0.3:
- optional: true
-
- detect-libc@2.1.2: {}
-
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
- dom-serializer@2.0.0:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- entities: 4.5.0
-
- domelementtype@2.3.0: {}
-
- domhandler@5.0.3:
- dependencies:
- domelementtype: 2.3.0
-
- domutils@3.2.2:
- dependencies:
- dom-serializer: 2.0.0
- domelementtype: 2.3.0
- domhandler: 5.0.3
-
- dot-prop@5.3.0:
- dependencies:
- is-obj: 2.0.0
-
- dotenv@16.6.1: {}
-
- dotenv@17.2.3:
- optional: true
-
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
- eastasianwidth@0.2.0: {}
-
- echarts@6.0.0:
- dependencies:
- tslib: 2.3.0
- zrender: 6.0.0
-
- electron-to-chromium@1.5.240: {}
-
- element-plus@2.11.5(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- '@ctrl/tinycolor': 3.6.1
- '@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.9.3))
- '@floating-ui/dom': 1.7.4
- '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
- '@types/lodash': 4.17.20
- '@types/lodash-es': 4.17.12
- '@vueuse/core': 9.13.0(vue@3.5.22(typescript@5.9.3))
- async-validator: 4.2.5
- dayjs: 1.11.18
- 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.22(typescript@5.9.3)
- transitivePeerDependencies:
- - '@vue/composition-api'
-
- emoji-regex@10.6.0: {}
-
- emoji-regex@8.0.0: {}
-
- emoji-regex@9.2.2: {}
-
- enhanced-resolve@5.18.3:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.3.0
-
- entities@4.5.0: {}
-
- env-paths@2.2.1: {}
-
- environment@1.1.0: {}
-
- error-ex@1.3.4:
- dependencies:
- is-arrayish: 0.2.1
-
- errx@0.1.0:
- optional: true
-
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-module-lexer@0.4.1: {}
-
- 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.24.2:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.24.2
- '@esbuild/android-arm': 0.24.2
- '@esbuild/android-arm64': 0.24.2
- '@esbuild/android-x64': 0.24.2
- '@esbuild/darwin-arm64': 0.24.2
- '@esbuild/darwin-x64': 0.24.2
- '@esbuild/freebsd-arm64': 0.24.2
- '@esbuild/freebsd-x64': 0.24.2
- '@esbuild/linux-arm': 0.24.2
- '@esbuild/linux-arm64': 0.24.2
- '@esbuild/linux-ia32': 0.24.2
- '@esbuild/linux-loong64': 0.24.2
- '@esbuild/linux-mips64el': 0.24.2
- '@esbuild/linux-ppc64': 0.24.2
- '@esbuild/linux-riscv64': 0.24.2
- '@esbuild/linux-s390x': 0.24.2
- '@esbuild/linux-x64': 0.24.2
- '@esbuild/netbsd-arm64': 0.24.2
- '@esbuild/netbsd-x64': 0.24.2
- '@esbuild/openbsd-arm64': 0.24.2
- '@esbuild/openbsd-x64': 0.24.2
- '@esbuild/sunos-x64': 0.24.2
- '@esbuild/win32-arm64': 0.24.2
- '@esbuild/win32-ia32': 0.24.2
- '@esbuild/win32-x64': 0.24.2
-
- esbuild@0.25.11:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.11
- '@esbuild/android-arm': 0.25.11
- '@esbuild/android-arm64': 0.25.11
- '@esbuild/android-x64': 0.25.11
- '@esbuild/darwin-arm64': 0.25.11
- '@esbuild/darwin-x64': 0.25.11
- '@esbuild/freebsd-arm64': 0.25.11
- '@esbuild/freebsd-x64': 0.25.11
- '@esbuild/linux-arm': 0.25.11
- '@esbuild/linux-arm64': 0.25.11
- '@esbuild/linux-ia32': 0.25.11
- '@esbuild/linux-loong64': 0.25.11
- '@esbuild/linux-mips64el': 0.25.11
- '@esbuild/linux-ppc64': 0.25.11
- '@esbuild/linux-riscv64': 0.25.11
- '@esbuild/linux-s390x': 0.25.11
- '@esbuild/linux-x64': 0.25.11
- '@esbuild/netbsd-arm64': 0.25.11
- '@esbuild/netbsd-x64': 0.25.11
- '@esbuild/openbsd-arm64': 0.25.11
- '@esbuild/openbsd-x64': 0.25.11
- '@esbuild/openharmony-arm64': 0.25.11
- '@esbuild/sunos-x64': 0.25.11
- '@esbuild/win32-arm64': 0.25.11
- '@esbuild/win32-ia32': 0.25.11
- '@esbuild/win32-x64': 0.25.11
-
- escalade@3.2.0: {}
-
- escape-string-regexp@4.0.0: {}
-
- escape-string-regexp@5.0.0:
- optional: true
-
- eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
-
- eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(prettier@3.6.2):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- prettier: 3.6.2
- prettier-linter-helpers: 1.0.0
- synckit: 0.11.11
- optionalDependencies:
- eslint-config-prettier: 10.1.8(eslint@9.38.0(jiti@2.6.1))
-
- eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@2.6.1))):
- dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1))
- eslint: 9.38.0(jiti@2.6.1)
- natural-compare: 1.4.0
- nth-check: 2.1.1
- postcss-selector-parser: 6.1.2
- semver: 7.7.3
- vue-eslint-parser: 10.2.0(eslint@9.38.0(jiti@2.6.1))
- xml-name-validator: 4.0.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
-
- eslint-scope@8.4.0:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@4.2.1: {}
-
- eslint@9.38.0(jiti@2.6.1):
- dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1))
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.21.1
- '@eslint/config-helpers': 0.4.1
- '@eslint/core': 0.16.0
- '@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.38.0
- '@eslint/plugin-kit': 0.4.0
- '@humanfs/node': 0.16.7
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.8
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.3
- escape-string-regexp: 4.0.0
- eslint-scope: 8.4.0
- eslint-visitor-keys: 4.2.1
- espree: 10.4.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.6.1
- transitivePeerDependencies:
- - supports-color
-
- espree@10.4.0:
- dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
- eslint-visitor-keys: 4.2.1
-
- 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.8
-
- esutils@2.0.3: {}
-
- eventemitter3@5.0.1: {}
-
- exsolve@1.0.7: {}
-
- 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: {}
-
- fast-uri@3.1.0: {}
-
- fastest-levenshtein@1.0.16: {}
-
- fastq@1.19.1:
- dependencies:
- reusify: 1.1.0
-
- fdir@6.5.0(picomatch@4.0.3):
- optionalDependencies:
- picomatch: 4.0.3
-
- file-entry-cache@10.1.4:
- dependencies:
- flat-cache: 6.1.18
-
- 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@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- find-up@7.0.0:
- dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
- unicorn-magic: 0.1.0
-
- flat-cache@4.0.1:
- dependencies:
- flatted: 3.3.3
- keyv: 4.5.4
-
- flat-cache@6.1.18:
- dependencies:
- cacheable: 2.1.1
- flatted: 3.3.3
- hookified: 1.12.2
-
- flatted@3.3.3: {}
-
- follow-redirects@1.15.11: {}
-
- foreground-child@3.3.1:
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 4.1.0
-
- form-data@4.0.4:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- es-set-tostringtag: 2.1.0
- hasown: 2.0.2
- mime-types: 2.1.35
-
- framesync@6.1.2:
- dependencies:
- tslib: 2.4.0
-
- fs-extra@10.1.0:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.2.0
- universalify: 2.0.1
-
- 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.4.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-tsconfig@4.13.0:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- giget@2.0.0:
- dependencies:
- citty: 0.1.6
- consola: 3.4.2
- defu: 6.1.4
- node-fetch-native: 1.6.7
- nypm: 0.6.2
- pathe: 2.0.3
- optional: true
-
- git-raw-commits@4.0.0:
- dependencies:
- dargs: 8.1.0
- meow: 12.1.1
- split2: 4.2.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- glob@11.0.3:
- dependencies:
- foreground-child: 3.3.1
- jackspeak: 4.1.1
- minimatch: 10.0.3
- minipass: 7.1.2
- package-json-from-dist: 1.0.1
- path-scurry: 2.0.0
-
- global-directory@4.0.1:
- dependencies:
- ini: 4.1.1
-
- global-modules@2.0.0:
- dependencies:
- global-prefix: 3.0.0
-
- global-prefix@3.0.0:
- dependencies:
- ini: 1.3.8
- kind-of: 6.0.3
- which: 1.3.1
-
- globals@14.0.0: {}
-
- globals@15.15.0: {}
-
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.3
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
- globjoin@0.1.4: {}
-
- gopd@1.2.0: {}
-
- graceful-fs@4.2.11: {}
-
- gradient-string@3.0.0:
- dependencies:
- chalk: 5.6.2
- tinygradient: 1.1.5
-
- graphemer@1.4.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
-
- hey-listen@1.0.8: {}
-
- hookable@5.5.3: {}
-
- hookified@1.12.2: {}
-
- html-tags@3.3.1: {}
-
- htmlparser2@8.0.2:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- domutils: 3.2.2
- entities: 4.5.0
-
- husky@9.1.7: {}
-
- ignore@5.3.2: {}
-
- ignore@7.0.5: {}
-
- immediate@3.0.6: {}
-
- immutable@5.1.4: {}
-
- import-fresh@3.3.1:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- import-from-string@0.0.5:
- dependencies:
- esbuild: 0.24.2
- import-meta-resolve: 4.2.0
-
- import-meta-resolve@4.2.0: {}
-
- imurmurhash@0.1.4: {}
-
- ini@1.3.8: {}
-
- ini@4.1.1: {}
-
- is-arrayish@0.2.1: {}
-
- is-docker@2.2.1: {}
-
- is-extglob@2.1.1: {}
-
- is-fullwidth-code-point@3.0.0: {}
-
- is-fullwidth-code-point@5.1.0:
- dependencies:
- get-east-asian-width: 1.4.0
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- is-obj@2.0.0: {}
-
- is-plain-object@5.0.0: {}
-
- is-reference@3.0.3:
- dependencies:
- '@types/estree': 1.0.8
-
- is-text-path@2.0.0:
- dependencies:
- text-extensions: 2.4.0
-
- is-what@5.5.0: {}
-
- is-wsl@2.2.0:
- dependencies:
- is-docker: 2.2.1
-
- isexe@2.0.0: {}
-
- jackspeak@4.1.1:
- dependencies:
- '@isaacs/cliui': 8.0.2
-
- jiti@2.6.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
-
- jsesc@3.1.0: {}
-
- json-buffer@3.0.1: {}
-
- json-parse-even-better-errors@2.3.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-schema-traverse@1.0.0: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- json5@2.2.3: {}
-
- jsonfile@6.2.0:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
- jsonparse@1.3.1: {}
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- keyv@5.5.3:
- dependencies:
- '@keyv/serialize': 1.1.1
-
- kind-of@6.0.3: {}
-
- klona@2.0.6:
- optional: true
-
- knitwork@1.2.0:
- optional: true
-
- known-css-properties@0.36.0: {}
-
- known-css-properties@0.37.0: {}
-
- kolorist@1.8.0: {}
-
- launch-ide@1.2.0:
- dependencies:
- chalk: 4.1.1
- dotenv: 16.6.1
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- lie@3.1.1:
- dependencies:
- immediate: 3.0.6
-
- lightningcss-android-arm64@1.30.2:
- optional: true
-
- lightningcss-darwin-arm64@1.30.2:
- optional: true
-
- lightningcss-darwin-x64@1.30.2:
- optional: true
-
- lightningcss-freebsd-x64@1.30.2:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.30.2:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.30.2:
- optional: true
-
- lightningcss-linux-arm64-musl@1.30.2:
- optional: true
-
- lightningcss-linux-x64-gnu@1.30.2:
- optional: true
-
- lightningcss-linux-x64-musl@1.30.2:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.30.2:
- optional: true
-
- lightningcss-win32-x64-msvc@1.30.2:
- optional: true
-
- lightningcss@1.30.2:
- dependencies:
- detect-libc: 2.1.2
- optionalDependencies:
- lightningcss-android-arm64: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-freebsd-x64: 1.30.2
- lightningcss-linux-arm-gnueabihf: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-arm64-msvc: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
-
- lilconfig@3.1.3: {}
-
- lines-and-columns@1.2.4: {}
-
- lint-staged@16.2.6:
- dependencies:
- commander: 14.0.2
- listr2: 9.0.5
- micromatch: 4.0.8
- nano-spawn: 2.0.0
- pidtree: 0.6.0
- string-argv: 0.3.2
- yaml: 2.8.1
-
- listr2@9.0.5:
- dependencies:
- cli-truncate: 5.1.1
- colorette: 2.0.20
- eventemitter3: 5.0.1
- log-update: 6.1.0
- rfdc: 1.4.1
- wrap-ansi: 9.0.2
-
- local-pkg@1.1.2:
- dependencies:
- mlly: 1.8.0
- pkg-types: 2.3.0
- quansync: 0.2.11
-
- localforage@1.10.0:
- dependencies:
- lie: 3.1.1
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.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.camelcase@4.3.0: {}
-
- lodash.isplainobject@4.0.6: {}
-
- lodash.kebabcase@4.1.1: {}
-
- lodash.memoize@4.1.2: {}
-
- lodash.merge@4.6.2: {}
-
- lodash.mergewith@4.6.2: {}
-
- lodash.snakecase@4.1.1: {}
-
- lodash.startcase@4.4.0: {}
-
- lodash.truncate@4.4.2: {}
-
- lodash.uniq@4.5.0: {}
-
- lodash.upperfirst@4.3.1: {}
-
- lodash@4.17.21: {}
-
- log-update@6.1.0:
- dependencies:
- ansi-escapes: 7.1.1
- cli-cursor: 5.0.0
- slice-ansi: 7.1.2
- strip-ansi: 7.1.2
- wrap-ansi: 9.0.2
-
- lru-cache@11.2.2: {}
-
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
- magic-string@0.25.9:
- dependencies:
- sourcemap-codec: 1.4.8
-
- magic-string@0.30.21:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
- math-intrinsics@1.1.0: {}
-
- mathml-tag-names@2.1.3: {}
-
- mdn-data@2.0.28: {}
-
- mdn-data@2.0.30: {}
-
- mdn-data@2.12.2: {}
-
- mdn-data@2.24.0: {}
-
- memoize-one@6.0.0: {}
-
- meow@12.1.1: {}
-
- meow@13.2.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- mimic-function@5.0.1: {}
-
- minimatch@10.0.3:
- dependencies:
- '@isaacs/brace-expansion': 5.0.0
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.12
-
- minimatch@9.0.5:
- dependencies:
- brace-expansion: 2.0.2
-
- minimist@1.2.8: {}
-
- minipass@7.1.2: {}
-
- mitt@3.0.1: {}
-
- mlly@1.8.0:
- dependencies:
- acorn: 8.15.0
- pathe: 2.0.3
- pkg-types: 1.3.1
- ufo: 1.6.1
-
- ms@2.1.3: {}
-
- muggle-string@0.4.1: {}
-
- nano-spawn@2.0.0: {}
-
- nanoid@3.3.11: {}
-
- natural-compare@1.4.0: {}
-
- node-addon-api@7.1.1:
- optional: true
-
- node-fetch-native@1.6.7:
- optional: true
-
- node-releases@2.0.26: {}
-
- normalize-path@3.0.0: {}
-
- normalize-wheel-es@1.2.0: {}
-
- nprogress@0.2.0: {}
-
- nth-check@2.1.1:
- dependencies:
- boolbase: 1.0.0
-
- nypm@0.6.2:
- dependencies:
- citty: 0.1.6
- consola: 3.4.2
- pathe: 2.0.3
- pkg-types: 2.3.0
- tinyexec: 1.0.1
- optional: true
-
- object-inspect@1.13.4: {}
-
- ohash@2.0.11:
- optional: true
-
- onetime@7.0.0:
- dependencies:
- mimic-function: 5.0.1
-
- open@8.4.2:
- dependencies:
- define-lazy-prop: 2.0.0
- is-docker: 2.2.1
- is-wsl: 2.2.0
-
- 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-limit@4.0.0:
- dependencies:
- yocto-queue: 1.2.1
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- p-locate@6.0.0:
- dependencies:
- p-limit: 4.0.0
-
- package-json-from-dist@1.0.1: {}
-
- package-manager-detector@1.5.0: {}
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.27.1
- error-ex: 1.3.4
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
-
- path-browserify@1.0.1: {}
-
- path-exists@4.0.0: {}
-
- path-exists@5.0.0: {}
-
- path-key@3.1.1: {}
-
- path-scurry@2.0.0:
- dependencies:
- lru-cache: 11.2.2
- minipass: 7.1.2
-
- path-to-regexp@8.3.0: {}
-
- path-type@4.0.0: {}
-
- pathe@2.0.3: {}
-
- perfect-debounce@1.0.0: {}
-
- perfect-debounce@2.0.0:
- optional: true
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- picomatch@4.0.3: {}
-
- pidtree@0.6.0: {}
-
- pinia@3.0.3(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- '@vue/devtools-api': 7.7.7
- vue: 3.5.22(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
-
- pinyin-pro@3.27.0: {}
-
- pkg-types@1.3.1:
- dependencies:
- confbox: 0.1.8
- mlly: 1.8.0
- pathe: 2.0.3
-
- pkg-types@2.3.0:
- dependencies:
- confbox: 0.2.2
- exsolve: 1.0.7
- pathe: 2.0.3
-
- popmotion@11.0.5:
- dependencies:
- framesync: 6.1.2
- hey-listen: 1.0.8
- style-value-types: 5.1.2
- tslib: 2.4.0
-
- portfinder@1.0.38:
- dependencies:
- async: 3.2.6
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- postcss-calc@10.1.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
- postcss-value-parser: 4.2.0
-
- postcss-colormin@7.0.4(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- caniuse-api: 3.0.0
- colord: 2.9.3
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-convert-values@7.0.7(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-discard-comments@7.0.4(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
-
- postcss-discard-duplicates@7.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-discard-empty@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-discard-overridden@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-html@1.8.0:
- dependencies:
- htmlparser2: 8.0.2
- js-tokens: 9.0.1
- postcss: 8.5.6
- postcss-safe-parser: 6.0.0(postcss@8.5.6)
-
- postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(yaml@2.8.1):
- dependencies:
- lilconfig: 3.1.3
- optionalDependencies:
- jiti: 2.6.1
- postcss: 8.5.6
- yaml: 2.8.1
-
- postcss-media-query-parser@0.2.3: {}
-
- postcss-merge-longhand@7.0.5(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
- stylehacks: 7.0.6(postcss@8.5.6)
-
- postcss-merge-rules@7.0.6(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- caniuse-api: 3.0.0
- cssnano-utils: 5.0.1(postcss@8.5.6)
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
-
- postcss-minify-font-values@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-minify-gradients@7.0.1(postcss@8.5.6):
- dependencies:
- colord: 2.9.3
- cssnano-utils: 5.0.1(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-minify-params@7.0.4(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- cssnano-utils: 5.0.1(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-minify-selectors@7.0.5(postcss@8.5.6):
- dependencies:
- cssesc: 3.0.0
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
-
- postcss-normalize-charset@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-normalize-display-values@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-positions@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-repeat-style@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-string@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-timing-functions@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-unicode@7.0.4(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-url@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-normalize-whitespace@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-ordered-values@7.0.2(postcss@8.5.6):
- dependencies:
- cssnano-utils: 5.0.1(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-reduce-initial@7.0.4(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- caniuse-api: 3.0.0
- postcss: 8.5.6
-
- postcss-reduce-transforms@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-resolve-nested-selector@0.1.6: {}
-
- postcss-safe-parser@6.0.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-safe-parser@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-scss@4.0.9(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-selector-parser@6.1.2:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-selector-parser@7.1.0:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-sorting@9.1.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-svgo@7.1.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
- svgo: 4.0.0
-
- postcss-unique-selectors@7.0.4(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
-
- postcss-value-parser@4.2.0: {}
-
- postcss@8.5.6:
- 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.6.2: {}
-
- proxy-from-env@1.1.0: {}
-
- punycode@2.3.1: {}
-
- qified@0.5.1:
- dependencies:
- hookified: 1.12.2
-
- qs@6.14.0:
- dependencies:
- side-channel: 1.1.0
-
- quansync@0.2.11: {}
-
- queue-microtask@1.2.3: {}
-
- rc9@2.1.2:
- dependencies:
- defu: 6.1.4
- destr: 2.0.5
- optional: true
-
- readdirp@4.1.2: {}
-
- require-directory@2.1.1: {}
-
- require-from-string@2.0.2: {}
-
- resolve-from@4.0.0: {}
-
- resolve-from@5.0.0: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- responsive-storage@2.2.0: {}
-
- restore-cursor@5.1.0:
- dependencies:
- onetime: 7.0.0
- signal-exit: 4.1.0
-
- reusify@1.1.0: {}
-
- rfdc@1.4.1: {}
-
- rimraf@6.0.1:
- dependencies:
- glob: 11.0.3
- package-json-from-dist: 1.0.1
-
- rollup-plugin-external-globals@0.10.0(rollup@4.52.5):
- dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.52.5)
- estree-walker: 3.0.3
- is-reference: 3.0.3
- magic-string: 0.30.21
- rollup: 4.52.5
-
- rollup-plugin-visualizer@6.0.5(rollup@4.52.5):
- dependencies:
- open: 8.4.2
- picomatch: 4.0.3
- source-map: 0.7.6
- yargs: 17.7.2
- optionalDependencies:
- rollup: 4.52.5
-
- rollup@4.52.5:
- dependencies:
- '@types/estree': 1.0.8
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.52.5
- '@rollup/rollup-android-arm64': 4.52.5
- '@rollup/rollup-darwin-arm64': 4.52.5
- '@rollup/rollup-darwin-x64': 4.52.5
- '@rollup/rollup-freebsd-arm64': 4.52.5
- '@rollup/rollup-freebsd-x64': 4.52.5
- '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
- '@rollup/rollup-linux-arm-musleabihf': 4.52.5
- '@rollup/rollup-linux-arm64-gnu': 4.52.5
- '@rollup/rollup-linux-arm64-musl': 4.52.5
- '@rollup/rollup-linux-loong64-gnu': 4.52.5
- '@rollup/rollup-linux-ppc64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-musl': 4.52.5
- '@rollup/rollup-linux-s390x-gnu': 4.52.5
- '@rollup/rollup-linux-x64-gnu': 4.52.5
- '@rollup/rollup-linux-x64-musl': 4.52.5
- '@rollup/rollup-openharmony-arm64': 4.52.5
- '@rollup/rollup-win32-arm64-msvc': 4.52.5
- '@rollup/rollup-win32-ia32-msvc': 4.52.5
- '@rollup/rollup-win32-x64-gnu': 4.52.5
- '@rollup/rollup-win32-x64-msvc': 4.52.5
- fsevents: 2.3.3
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- sass@1.93.2:
- dependencies:
- chokidar: 4.0.3
- immutable: 5.1.4
- source-map-js: 1.2.1
- optionalDependencies:
- '@parcel/watcher': 2.5.1
-
- sax@1.4.1: {}
-
- scule@1.3.0:
- optional: true
-
- semver@6.3.1: {}
-
- semver@7.7.3: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- side-channel-list@1.0.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-map@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-weakmap@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
- side-channel-map: 1.0.1
-
- side-channel@1.1.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
- side-channel-list: 1.0.0
- side-channel-map: 1.0.1
- side-channel-weakmap: 1.0.2
-
- signal-exit@4.1.0: {}
-
- slash@3.0.0: {}
-
- slice-ansi@4.0.0:
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
-
- slice-ansi@7.1.2:
- dependencies:
- ansi-styles: 6.2.3
- is-fullwidth-code-point: 5.1.0
-
- sortablejs@1.15.6: {}
-
- source-map-js@1.2.1: {}
-
- source-map@0.7.6: {}
-
- sourcemap-codec@1.4.8: {}
-
- speakingurl@14.0.1: {}
-
- split2@4.2.0: {}
-
- std-env@3.10.0:
- optional: true
-
- 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.2
-
- string-width@7.2.0:
- dependencies:
- emoji-regex: 10.6.0
- get-east-asian-width: 1.4.0
- strip-ansi: 7.1.2
-
- string-width@8.1.0:
- dependencies:
- get-east-asian-width: 1.4.0
- strip-ansi: 7.1.2
-
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-ansi@7.1.2:
- dependencies:
- ansi-regex: 6.2.2
-
- strip-json-comments@3.1.1: {}
-
- strip-literal@3.1.0:
- dependencies:
- js-tokens: 9.0.1
- optional: true
-
- style-value-types@5.1.2:
- dependencies:
- hey-listen: 1.0.8
- tslib: 2.4.0
-
- stylehacks@7.0.6(postcss@8.5.6):
- dependencies:
- browserslist: 4.27.0
- postcss: 8.5.6
- postcss-selector-parser: 7.1.0
-
- stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- postcss-html: 1.8.0
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint-config-recess-order@7.4.0(stylelint-order@7.0.0(stylelint@16.25.0(typescript@5.9.3)))(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- stylelint: 16.25.0(typescript@5.9.3)
- stylelint-order: 7.0.0(stylelint@16.25.0(typescript@5.9.3))
-
- stylelint-config-recommended-scss@14.1.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- postcss-scss: 4.0.9(postcss@8.5.6)
- stylelint: 16.25.0(typescript@5.9.3)
- stylelint-config-recommended: 14.0.1(stylelint@16.25.0(typescript@5.9.3))
- stylelint-scss: 6.12.1(stylelint@16.25.0(typescript@5.9.3))
- optionalDependencies:
- postcss: 8.5.6
-
- stylelint-config-recommended-vue@1.6.1(postcss-html@1.8.0)(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- postcss-html: 1.8.0
- semver: 7.7.3
- stylelint: 16.25.0(typescript@5.9.3)
- stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@16.25.0(typescript@5.9.3))
- stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.9.3))
-
- stylelint-config-recommended@14.0.1(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint-config-recommended@17.0.0(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint-config-standard-scss@14.0.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- stylelint: 16.25.0(typescript@5.9.3)
- stylelint-config-recommended-scss: 14.1.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3))
- stylelint-config-standard: 36.0.1(stylelint@16.25.0(typescript@5.9.3))
- optionalDependencies:
- postcss: 8.5.6
-
- stylelint-config-standard@36.0.1(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- stylelint: 16.25.0(typescript@5.9.3)
- stylelint-config-recommended: 14.0.1(stylelint@16.25.0(typescript@5.9.3))
-
- stylelint-order@7.0.0(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- postcss: 8.5.6
- postcss-sorting: 9.1.0(postcss@8.5.6)
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint-prettier@5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- prettier: 3.6.2
- prettier-linter-helpers: 1.0.0
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint-scss@6.12.1(stylelint@16.25.0(typescript@5.9.3)):
- dependencies:
- css-tree: 3.1.0
- is-plain-object: 5.0.0
- known-css-properties: 0.36.0
- mdn-data: 2.24.0
- postcss-media-query-parser: 0.2.3
- postcss-resolve-nested-selector: 0.1.6
- postcss-selector-parser: 7.1.0
- postcss-value-parser: 4.2.0
- stylelint: 16.25.0(typescript@5.9.3)
-
- stylelint@16.25.0(typescript@5.9.3):
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
- '@dual-bundle/import-meta-resolve': 4.2.1
- balanced-match: 2.0.0
- colord: 2.9.3
- cosmiconfig: 9.0.0(typescript@5.9.3)
- css-functions-list: 3.2.3
- css-tree: 3.1.0
- debug: 4.4.3
- fast-glob: 3.3.3
- fastest-levenshtein: 1.0.16
- file-entry-cache: 10.1.4
- global-modules: 2.0.0
- globby: 11.1.0
- globjoin: 0.1.4
- html-tags: 3.3.1
- ignore: 7.0.5
- imurmurhash: 0.1.4
- is-plain-object: 5.0.0
- known-css-properties: 0.37.0
- mathml-tag-names: 2.1.3
- meow: 13.2.0
- micromatch: 4.0.8
- normalize-path: 3.0.0
- picocolors: 1.1.1
- postcss: 8.5.6
- postcss-resolve-nested-selector: 0.1.6
- postcss-safe-parser: 7.0.1(postcss@8.5.6)
- postcss-selector-parser: 7.1.0
- postcss-value-parser: 4.2.0
- resolve-from: 5.0.0
- string-width: 4.2.3
- supports-hyperlinks: 3.2.0
- svg-tags: 1.0.0
- table: 6.9.0
- write-file-atomic: 5.0.1
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- superjson@2.2.3:
- dependencies:
- copy-anything: 4.0.5
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-hyperlinks@3.2.0:
- dependencies:
- has-flag: 4.0.0
- supports-color: 7.2.0
-
- svg-tags@1.0.0: {}
-
- svgo@3.3.2:
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 5.2.2
- css-tree: 2.3.1
- css-what: 6.2.2
- csso: 5.0.5
- picocolors: 1.1.1
-
- svgo@4.0.0:
- dependencies:
- commander: 11.1.0
- css-select: 5.2.2
- css-tree: 3.1.0
- css-what: 6.2.2
- csso: 5.0.5
- picocolors: 1.1.1
- sax: 1.4.1
-
- synckit@0.11.11:
- dependencies:
- '@pkgr/core': 0.2.9
-
- table@6.9.0:
- dependencies:
- ajv: 8.17.1
- lodash.truncate: 4.4.2
- slice-ansi: 4.0.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- tailwindcss@4.1.16: {}
-
- tapable@2.3.0: {}
-
- text-extensions@2.4.0: {}
-
- through@2.3.8: {}
-
- tinycolor2@1.6.0: {}
-
- tinyexec@1.0.1: {}
-
- tinyglobby@0.2.15:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
-
- tinygradient@1.1.5:
- dependencies:
- '@types/tinycolor2': 1.4.6
- tinycolor2: 1.6.0
-
- tippy.js@6.3.7:
- dependencies:
- '@popperjs/core': 2.11.8
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- ts-api-utils@2.1.0(typescript@5.9.3):
- dependencies:
- typescript: 5.9.3
-
- tslib@2.3.0: {}
-
- tslib@2.4.0: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- type-fest@4.41.0: {}
-
- typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
- '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- typescript@5.9.3: {}
-
- ufo@1.6.1: {}
-
- unctx@2.4.1:
- dependencies:
- acorn: 8.15.0
- estree-walker: 3.0.3
- magic-string: 0.30.21
- unplugin: 2.3.10
- optional: true
-
- undici-types@6.21.0: {}
-
- unicorn-magic@0.1.0: {}
-
- unimport@5.5.0:
- dependencies:
- acorn: 8.15.0
- escape-string-regexp: 5.0.0
- estree-walker: 3.0.3
- local-pkg: 1.1.2
- magic-string: 0.30.21
- mlly: 1.8.0
- pathe: 2.0.3
- picomatch: 4.0.3
- pkg-types: 2.3.0
- scule: 1.3.0
- strip-literal: 3.1.0
- tinyglobby: 0.2.15
- unplugin: 2.3.10
- unplugin-utils: 0.3.1
- optional: true
-
- universalify@2.0.1: {}
-
- unplugin-icons@22.5.0(@vue/compiler-sfc@3.5.22):
- dependencies:
- '@antfu/install-pkg': 1.1.0
- '@iconify/utils': 3.0.2
- debug: 4.4.3
- local-pkg: 1.1.2
- unplugin: 2.3.10
- optionalDependencies:
- '@vue/compiler-sfc': 3.5.22
- transitivePeerDependencies:
- - supports-color
-
- unplugin-utils@0.3.1:
- dependencies:
- pathe: 2.0.3
- picomatch: 4.0.3
- optional: true
-
- unplugin@2.3.10:
- dependencies:
- '@jridgewell/remapping': 2.3.5
- acorn: 8.15.0
- picomatch: 4.0.3
- webpack-virtual-modules: 0.6.2
-
- untyped@2.0.0:
- dependencies:
- citty: 0.1.6
- defu: 6.1.4
- jiti: 2.6.1
- knitwork: 1.2.0
- scule: 1.3.0
- optional: true
-
- update-browserslist-db@1.1.4(browserslist@4.27.0):
- dependencies:
- browserslist: 4.27.0
- escalade: 3.2.0
- picocolors: 1.1.1
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- util-deprecate@1.0.2: {}
-
- vite-plugin-cdn-import@1.0.1(rollup@4.52.5)(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)):
- dependencies:
- rollup-plugin-external-globals: 0.10.0(rollup@4.52.5)
- vite-plugin-externals: 0.6.2(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1))
- transitivePeerDependencies:
- - rollup
- - vite
-
- vite-plugin-compression@0.5.1(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)):
- dependencies:
- chalk: 4.1.2
- debug: 4.4.3
- fs-extra: 10.1.0
- vite: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
- transitivePeerDependencies:
- - supports-color
-
- vite-plugin-externals@0.6.2(vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)):
- dependencies:
- acorn: 8.15.0
- es-module-lexer: 0.4.1
- fs-extra: 10.1.0
- magic-string: 0.25.9
- vite: 7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1)
-
- vite-plugin-fake-server@2.2.0:
- dependencies:
- bundle-import: 0.0.2
- chokidar: 4.0.3
- path-to-regexp: 8.3.0
- picocolors: 1.1.1
- tinyglobby: 0.2.15
-
- vite-plugin-remove-console@2.2.0: {}
-
- vite-plugin-router-warn@1.0.0: {}
-
- vite-svg-loader@5.1.0(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- svgo: 3.3.2
- vue: 3.5.22(typescript@5.9.3)
-
- vite@7.1.12(@types/node@20.19.23)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.93.2)(yaml@2.8.1):
- dependencies:
- esbuild: 0.25.11
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.52.5
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 20.19.23
- fsevents: 2.3.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- sass: 1.93.2
- yaml: 2.8.1
-
- vscode-uri@3.1.0: {}
-
- vue-demi@0.14.10(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- vue: 3.5.22(typescript@5.9.3)
-
- vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- debug: 4.4.3
- eslint: 9.38.0(jiti@2.6.1)
- eslint-scope: 8.4.0
- eslint-visitor-keys: 4.2.1
- espree: 10.4.0
- esquery: 1.6.0
- semver: 7.7.3
- transitivePeerDependencies:
- - supports-color
-
- vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- '@vue/devtools-api': 6.6.4
- vue: 3.5.22(typescript@5.9.3)
-
- vue-tippy@6.7.1(vue@3.5.22(typescript@5.9.3)):
- dependencies:
- tippy.js: 6.3.7
- vue: 3.5.22(typescript@5.9.3)
-
- vue-tsc@3.1.2(typescript@5.9.3):
- dependencies:
- '@volar/typescript': 2.4.23
- '@vue/language-core': 3.1.2(typescript@5.9.3)
- typescript: 5.9.3
-
- vue-types@6.0.0(vue@3.5.22(typescript@5.9.3)):
- optionalDependencies:
- vue: 3.5.22(typescript@5.9.3)
-
- vue@3.5.22(typescript@5.9.3):
- dependencies:
- '@vue/compiler-dom': 3.5.22
- '@vue/compiler-sfc': 3.5.22
- '@vue/runtime-dom': 3.5.22
- '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.3))
- '@vue/shared': 3.5.22
- optionalDependencies:
- typescript: 5.9.3
-
- webpack-virtual-modules@0.6.2: {}
-
- which@1.3.1:
- dependencies:
- isexe: 2.0.0
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- widest-line@5.0.0:
- dependencies:
- string-width: 7.2.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.3
- string-width: 5.1.2
- strip-ansi: 7.1.2
-
- wrap-ansi@9.0.2:
- dependencies:
- ansi-styles: 6.2.3
- string-width: 7.2.0
- strip-ansi: 7.1.2
-
- write-file-atomic@5.0.1:
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 4.1.0
-
- xml-name-validator@4.0.0: {}
-
- y18n@5.0.8: {}
-
- yallist@3.1.1: {}
-
- yaml@2.8.1: {}
-
- 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: {}
-
- yocto-queue@1.2.1: {}
-
- zrender@6.0.0:
- dependencies:
- tslib: 2.3.0
diff --git a/admin-ui/src/api/simcae.ts b/admin-ui/src/api/simcae.ts
index cfa593d..6e681fa 100644
--- a/admin-ui/src/api/simcae.ts
+++ b/admin-ui/src/api/simcae.ts
@@ -1,4 +1,4 @@
-import { formatToken, getToken } from "@/utils/auth";
+import { formatToken, getToken, removeToken } from "@/utils/auth";
export class AdminApiError extends Error {
status: number;
@@ -70,6 +70,12 @@ export async function adminRequest(
}
if (!response.ok) {
+ if (response.status === 401) {
+ removeToken();
+ if (window.location.pathname !== "/login") {
+ window.location.href = "/login";
+ }
+ }
throw new AdminApiError(
`HTTP ${response.status}: ${text || response.statusText}`,
response.status,
@@ -122,6 +128,12 @@ export async function downloadAdminFile(
});
if (!response.ok) {
const text = await response.text();
+ if (response.status === 401) {
+ removeToken();
+ if (window.location.pathname !== "/login") {
+ window.location.href = "/login";
+ }
+ }
throw new AdminApiError(
`HTTP ${response.status}: ${text || response.statusText}`,
response.status,
diff --git a/admin-ui/src/router/index.ts b/admin-ui/src/router/index.ts
index 7b9ad5e..64c4f81 100644
--- a/admin-ui/src/router/index.ts
+++ b/admin-ui/src/router/index.ts
@@ -33,6 +33,7 @@ import {
import {
type DataInfo,
userKey,
+ getToken,
removeToken,
multipleTabsKey
} from "@/utils/auth";
@@ -147,7 +148,8 @@ router.beforeEach((to: ToRouteType, _from, next) => {
function toCorrectRoute() {
whiteList.includes(to.fullPath) ? next(_from.fullPath) : next();
}
- if (Cookies.get(multipleTabsKey) && userInfo) {
+ const accessToken = getToken()?.accessToken;
+ if (Cookies.get(multipleTabsKey) && userInfo && accessToken) {
// 无权限跳转403页面
if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) {
next({ path: "/error/403" });
diff --git a/admin-ui/src/utils/sso.ts b/admin-ui/src/utils/sso.ts
deleted file mode 100644
index 18021d0..0000000
--- a/admin-ui/src/utils/sso.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { removeToken, setToken, type DataInfo } from "./auth";
-import { subBefore, getQueryMap } from "@pureadmin/utils";
-
-/**
- * 简版前端单点登录,根据实际业务自行编写,平台启动后本地可以跳后面这个链接进行测试 http://localhost:8848/#/permission/page/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
- * 划重点:
- * 判断是否为单点登录,不为则直接返回不再进行任何逻辑处理,下面是单点登录后的逻辑处理
- * 1.清空本地旧信息;
- * 2.获取url中的重要参数信息,然后通过 setToken 保存在本地;
- * 3.删除不需要显示在 url 的参数
- * 4.使用 window.location.replace 跳转正确页面
- */
-(function () {
- // 获取 url 中的参数
- const params = getQueryMap(location.href) as DataInfo;
- const must = ["username", "roles", "accessToken"];
- const mustLength = must.length;
- if (Object.keys(params).length !== mustLength) return;
-
- // url 参数满足 must 里的全部值,才判定为单点登录,避免非单点登录时刷新页面无限循环
- let sso = [];
- let start = 0;
-
- while (start < mustLength) {
- if (Object.keys(params).includes(must[start]) && sso.length <= mustLength) {
- sso.push(must[start]);
- } else {
- sso = [];
- }
- start++;
- }
-
- if (sso.length === mustLength) {
- // 判定为单点登录
-
- // 清空本地旧信息
- removeToken();
-
- // 保存新信息到本地
- setToken(params);
-
- // 删除不需要显示在 url 的参数
- delete params.roles;
- delete params.accessToken;
-
- const newUrl = `${location.origin}${location.pathname}${subBefore(
- location.hash,
- "?"
- )}?${JSON.stringify(params)
- .replace(/["{}]/g, "")
- .replace(/:/g, "=")
- .replace(/,/g, "&")}`;
-
- // 替换历史记录项
- window.location.replace(newUrl);
- } else {
- return;
- }
-})();
diff --git a/admin-ui/src/views/permission/button/index.vue b/admin-ui/src/views/permission/button/index.vue
deleted file mode 100644
index 5053e0a..0000000
--- a/admin-ui/src/views/permission/button/index.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
当前拥有的code列表:{{ getAuths() }}
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
diff --git a/admin-ui/src/views/permission/button/perms.vue b/admin-ui/src/views/permission/button/perms.vue
deleted file mode 100644
index 8fce6da..0000000
--- a/admin-ui/src/views/permission/button/perms.vue
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
-
当前拥有的code列表:{{ permissions }}
-
- *:*:* 代表拥有全部按钮级别权限
-
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
-
-
-
-
-
- 拥有code:'permission:btn:add' 权限可见
-
-
- 拥有code:['permission:btn:edit'] 权限可见
-
-
- 拥有code:['permission:btn:add', 'permission:btn:edit',
- 'permission:btn:delete'] 权限可见
-
-
-
-
-
diff --git a/admin-ui/src/views/permission/page/index.vue b/admin-ui/src/views/permission/page/index.vue
deleted file mode 100644
index 13703df..0000000
--- a/admin-ui/src/views/permission/page/index.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
- 模拟后台根据不同角色返回对应路由,观察左侧菜单变化(管理员角色可查看系统管理菜单、普通角色不可查看系统管理菜单)
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin-ui/src/views/simcae/index.vue b/admin-ui/src/views/simcae/index.vue
index fb7d10f..f9f5a6f 100644
--- a/admin-ui/src/views/simcae/index.vue
+++ b/admin-ui/src/views/simcae/index.vue
@@ -8,24 +8,30 @@ import {
friendlyError
} from "@/api/simcae";
import { removeToken } from "@/utils/auth";
+import {
+ RELEASE_MANIFEST_NAMES,
+ type UploadEntry,
+ dirname,
+ detectSelectedRoot,
+ executableLeafName,
+ executableNameCandidates,
+ findExecutablePath,
+ isReleaseManifestFile,
+ isSafePublishPath,
+ manifestRuleMatches,
+ parseReleaseManifest,
+ relativePathForFile,
+ releaseMainExecutableForInstall
+} from "./publishManifest";
defineOptions({
name: "SimCAEConsole"
});
-type UploadEntry = { file: File; path: string };
-type PublishManifestRule = {
- line: number;
- raw: string;
- pattern: string;
- exclude: boolean;
-};
-
-const RELEASE_MANIFEST_NAMES = ["发布清单.txt", "release_manifest.txt"];
-
const activeTab = ref("overview");
const loading = ref(false);
const publishing = ref(false);
+const publishJobMessage = ref("");
const apps = ref([]);
const channels = ref([]);
const versions = ref([]);
@@ -204,168 +210,6 @@ const expectedReleaseMainExecutable = computed(() =>
releaseMainExecutableForInstall(configForm.install_root, configForm.main_executable)
);
-function rawPathForFile(file: File) {
- const raw = ((file as any).webkitRelativePath || file.name) as string;
- return raw.replaceAll("\\", "/");
-}
-
-function relativePathForFile(file: File) {
- const raw = rawPathForFile(file);
- const parts = raw.replaceAll("\\", "/").split("/").filter(Boolean);
- if ((file as any).webkitRelativePath && parts.length > 1) parts.shift();
- return parts.join("/");
-}
-
-function detectSelectedRoot(files: File[]) {
- const first = files[0];
- if (!first || !(first as any).webkitRelativePath) return "";
- const parts = rawPathForFile(first).split("/").filter(Boolean);
- return parts.length > 1 ? parts[0] : "";
-}
-
-function normalizePublishPath(value: string) {
- let normalized = value.replaceAll("\\", "/").trim();
- while (normalized.startsWith("./")) normalized = normalized.slice(2);
- normalized = normalized.replace(/^\/+/, "").replace(/\/+$/, "");
- return normalized;
-}
-
-function normalizeManifestPattern(value: string, rootName: string) {
- let pattern = normalizePublishPath(value);
- const root = normalizePublishPath(rootName);
- if (root) {
- if (pattern === root) return "*";
- if (pattern.startsWith(`${root}/`)) {
- pattern = pattern.slice(root.length + 1);
- }
- }
- return pattern || "*";
-}
-
-function parseReleaseManifest(text: string, rootName: string): PublishManifestRule[] {
- return text
- .split(/\r?\n/)
- .map((raw, index) => ({ raw, line: index + 1, trimmed: raw.trim() }))
- .filter(item => item.trimmed && !item.trimmed.startsWith("#"))
- .map(item => {
- const exclude = item.trimmed.startsWith("!");
- const body = exclude ? item.trimmed.slice(1).trim() : item.trimmed;
- return {
- line: item.line,
- raw: item.raw,
- pattern: normalizeManifestPattern(body, rootName),
- exclude
- };
- })
- .filter(rule => rule.pattern);
-}
-
-function escapeRegExp(value: string) {
- return value.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
-}
-
-function manifestRuleMatches(pattern: string, filePath: string) {
- const normalizedPattern = normalizePublishPath(pattern);
- const normalizedPath = normalizePublishPath(filePath);
- if (normalizedPattern === "*") return true;
- if (normalizedPattern.endsWith("/*")) {
- const prefix = normalizedPattern.slice(0, -2);
- return normalizedPath.startsWith(`${prefix}/`);
- }
- if (!normalizedPattern.includes("*")) {
- return normalizedPath === normalizedPattern;
- }
- const regex = new RegExp(
- `^${normalizedPattern.split("*").map(escapeRegExp).join(".*")}$`
- );
- return regex.test(normalizedPath);
-}
-
-function isReleaseManifestFile(path: string) {
- const normalized = normalizePublishPath(path).toLowerCase();
- return RELEASE_MANIFEST_NAMES.some(name => normalized === name.toLowerCase());
-}
-
-function isSafePublishPath(itemPath: string) {
- const protectedFiles = new Set([
- "client.ini",
- "bootstrap.exe",
- "config/app_config.json",
- "config/local_state.json",
- "config/client_identity.dat",
- "config/version_policy.dat"
- ]);
- const path = normalizePublishPath(itemPath).toLowerCase();
- const parts = path.split("/");
- const blockedDirectory = parts
- .slice(0, -1)
- .some(
- part =>
- part === ".git" ||
- part === ".vs" ||
- part === "debug" ||
- part === "update" ||
- part === "update_temp" ||
- part === "cmakefiles" ||
- part.startsWith("build") ||
- part.endsWith("_autogen")
- );
- const runtimeFile =
- protectedFiles.has(path) ||
- (path.startsWith("bin/") && protectedFiles.has(path.slice(4)));
- return (
- !blockedDirectory &&
- !runtimeFile &&
- !path.endsWith(".pdb") &&
- !path.endsWith(".ilk") &&
- !path.endsWith(".obj")
- );
-}
-
-function normalizeExecutableName(value: string) {
- const normalized = normalizePublishPath(value || "SimCAE.exe");
- if (!normalized) return "SimCAE.exe";
- const parts = normalized.split("/");
- const leaf = parts[parts.length - 1];
- if (!leaf.includes(".")) {
- parts[parts.length - 1] = `${leaf}.exe`;
- }
- return parts.join("/");
-}
-
-function releaseMainExecutableForInstall(installRoot: string, mainExecutable: string) {
- const root = (installRoot || "..").trim();
- const main = normalizeExecutableName(mainExecutable);
- if (root === ".") return main;
- if (main.toLowerCase().startsWith("bin/")) return main;
- return `bin/${main}`;
-}
-
-function executableNameCandidates(value: string, fallback: string) {
- const leaf =
- normalizePublishPath(value || fallback)
- .split("/")
- .filter(Boolean)
- .pop() || fallback;
- const lower = leaf.toLowerCase();
- const candidates = new Set([lower]);
- if (lower.endsWith(".exe")) {
- candidates.add(lower.slice(0, -4));
- } else {
- candidates.add(`${lower}.exe`);
- }
- return candidates;
-}
-
-function executableLeafName(value: string, fallback: string) {
- return (
- normalizePublishPath(value || fallback)
- .split("/")
- .filter(Boolean)
- .pop() || fallback
- );
-}
-
function launcherDisplayName() {
return executableLeafName(
runtime?.default_client_config?.launcher_executable,
@@ -373,18 +217,6 @@ function launcherDisplayName() {
);
}
-function dirname(path: string) {
- const parts = normalizePublishPath(path).split("/").filter(Boolean);
- parts.pop();
- return parts.join("/");
-}
-
-function findExecutablePath(entries: UploadEntry[], candidates: Set) {
- return entries
- .map(item => normalizePublishPath(item.path))
- .find(path => candidates.has(path.split("/").pop()?.toLowerCase() || ""));
-}
-
function installRootDescription() {
const launcher = launcherDisplayName();
return configForm.install_root === "."
@@ -465,6 +297,10 @@ function handleError(prefix: string, error: unknown) {
ElMessage.error(`${prefix}:${friendlyError(error)}`);
}
+function sleep(ms: number) {
+ return new Promise(resolve => window.setTimeout(resolve, ms));
+}
+
function roleLabel(role: string) {
return adminRoleOptions.value.find(item => item.value === role)?.label || role;
}
@@ -637,17 +473,34 @@ async function publishVersion() {
});
}
publishing.value = true;
+ publishJobMessage.value = "正在上传发布文件...";
try {
- const result = await adminRequest("/admin/publish", {
+ const job = await adminRequest("/admin/publish/job", {
method: "POST",
body: formData
});
+ publishJobMessage.value = job?.message || "发布文件已接收,正在后台处理...";
+ const result = await waitPublishJob(job?.job_id);
ElMessage.success(result?.msg || `发布成功:${publishForm.version}`);
await loadVersions();
} catch (error) {
handleError("发布失败", error);
} finally {
publishing.value = false;
+ publishJobMessage.value = "";
+ }
+}
+
+async function waitPublishJob(jobId: string) {
+ if (!jobId) throw new Error("服务端没有返回发布任务 ID");
+ while (true) {
+ await sleep(1500);
+ const job = await adminRequest(`/admin/publish/job/${encodeURIComponent(jobId)}`);
+ publishJobMessage.value = job?.message || "正在后台发布版本...";
+ if (job?.status === "success") return job.result || { msg: job.message };
+ if (job?.status === "error") {
+ throw new Error(job?.message || "发布任务失败");
+ }
}
}
@@ -1303,6 +1156,14 @@ test_file/*
{{ publishSummary }}
+
发布版本
@@ -1799,6 +1660,10 @@ test_file/*
border-radius: 8px;
}
+.publish-job-alert {
+ margin: 12px 0;
+}
+
.install-root-options {
margin-bottom: 10px;
}
diff --git a/admin-ui/src/views/simcae/publishManifest.ts b/admin-ui/src/views/simcae/publishManifest.ts
new file mode 100644
index 0000000..1de72cc
--- /dev/null
+++ b/admin-ui/src/views/simcae/publishManifest.ts
@@ -0,0 +1,187 @@
+export type UploadEntry = { file: File; path: string };
+
+export type PublishManifestRule = {
+ line: number;
+ raw: string;
+ pattern: string;
+ exclude: boolean;
+};
+
+export const RELEASE_MANIFEST_NAMES = ["发布清单.txt", "release_manifest.txt"];
+
+export function rawPathForFile(file: File) {
+ const raw = ((file as any).webkitRelativePath || file.name) as string;
+ return raw.replaceAll("\\", "/");
+}
+
+export function relativePathForFile(file: File) {
+ const raw = rawPathForFile(file);
+ const parts = raw.replaceAll("\\", "/").split("/").filter(Boolean);
+ if ((file as any).webkitRelativePath && parts.length > 1) parts.shift();
+ return parts.join("/");
+}
+
+export function detectSelectedRoot(files: File[]) {
+ const first = files[0];
+ if (!first || !(first as any).webkitRelativePath) return "";
+ const parts = rawPathForFile(first).split("/").filter(Boolean);
+ return parts.length > 1 ? parts[0] : "";
+}
+
+function normalizePublishPath(value: string) {
+ let normalized = value.replaceAll("\\", "/").trim();
+ while (normalized.startsWith("./")) normalized = normalized.slice(2);
+ normalized = normalized.replace(/^\/+/, "").replace(/\/+$/, "");
+ return normalized;
+}
+
+function normalizeManifestPattern(value: string, rootName: string) {
+ let pattern = normalizePublishPath(value);
+ const root = normalizePublishPath(rootName);
+ if (root) {
+ if (pattern === root) return "*";
+ if (pattern.startsWith(`${root}/`)) {
+ pattern = pattern.slice(root.length + 1);
+ }
+ }
+ return pattern || "*";
+}
+
+export function parseReleaseManifest(text: string, rootName: string): PublishManifestRule[] {
+ return text
+ .split(/\r?\n/)
+ .map((raw, index) => ({ raw, line: index + 1, trimmed: raw.trim() }))
+ .filter(item => item.trimmed && !item.trimmed.startsWith("#"))
+ .map(item => {
+ const exclude = item.trimmed.startsWith("!");
+ const body = exclude ? item.trimmed.slice(1).trim() : item.trimmed;
+ return {
+ line: item.line,
+ raw: item.raw,
+ pattern: normalizeManifestPattern(body, rootName),
+ exclude
+ };
+ })
+ .filter(rule => rule.pattern);
+}
+
+function escapeRegExp(value: string) {
+ return value.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
+}
+
+export function manifestRuleMatches(pattern: string, filePath: string) {
+ const normalizedPattern = normalizePublishPath(pattern);
+ const normalizedPath = normalizePublishPath(filePath);
+ if (normalizedPattern === "*") return true;
+ if (normalizedPattern.endsWith("/*")) {
+ const prefix = normalizedPattern.slice(0, -2);
+ return normalizedPath.startsWith(`${prefix}/`);
+ }
+ if (!normalizedPattern.includes("*")) {
+ return normalizedPath === normalizedPattern;
+ }
+ const regex = new RegExp(
+ `^${normalizedPattern.split("*").map(escapeRegExp).join(".*")}$`
+ );
+ return regex.test(normalizedPath);
+}
+
+export function isReleaseManifestFile(path: string) {
+ const normalized = normalizePublishPath(path).toLowerCase();
+ return RELEASE_MANIFEST_NAMES.some(name => normalized === name.toLowerCase());
+}
+
+export function isSafePublishPath(itemPath: string) {
+ const protectedFiles = new Set([
+ "client.ini",
+ "bootstrap.exe",
+ "config/app_config.json",
+ "config/local_state.json",
+ "config/client_identity.dat",
+ "config/version_policy.dat"
+ ]);
+ const path = normalizePublishPath(itemPath).toLowerCase();
+ const parts = path.split("/");
+ const blockedDirectory = parts
+ .slice(0, -1)
+ .some(
+ part =>
+ part === ".git" ||
+ part === ".vs" ||
+ part === "debug" ||
+ part === "update" ||
+ part === "update_temp" ||
+ part === "cmakefiles" ||
+ part.startsWith("build") ||
+ part.endsWith("_autogen")
+ );
+ const runtimeFile =
+ protectedFiles.has(path) ||
+ (path.startsWith("bin/") && protectedFiles.has(path.slice(4)));
+ return (
+ !blockedDirectory &&
+ !runtimeFile &&
+ !path.endsWith(".pdb") &&
+ !path.endsWith(".ilk") &&
+ !path.endsWith(".obj")
+ );
+}
+
+export function normalizeExecutableName(value: string) {
+ const normalized = normalizePublishPath(value || "SimCAE.exe");
+ if (!normalized) return "SimCAE.exe";
+ const parts = normalized.split("/");
+ const leaf = parts[parts.length - 1];
+ if (!leaf.includes(".")) {
+ parts[parts.length - 1] = `${leaf}.exe`;
+ }
+ return parts.join("/");
+}
+
+export function releaseMainExecutableForInstall(
+ installRoot: string,
+ mainExecutable: string
+) {
+ const root = (installRoot || "..").trim();
+ const main = normalizeExecutableName(mainExecutable);
+ if (root === ".") return main;
+ if (main.toLowerCase().startsWith("bin/")) return main;
+ return `bin/${main}`;
+}
+
+export function executableNameCandidates(value: string, fallback: string) {
+ const leaf =
+ normalizePublishPath(value || fallback)
+ .split("/")
+ .filter(Boolean)
+ .pop() || fallback;
+ const lower = leaf.toLowerCase();
+ const candidates = new Set([lower]);
+ if (lower.endsWith(".exe")) {
+ candidates.add(lower.slice(0, -4));
+ } else {
+ candidates.add(`${lower}.exe`);
+ }
+ return candidates;
+}
+
+export function executableLeafName(value: string, fallback: string) {
+ return (
+ normalizePublishPath(value || fallback)
+ .split("/")
+ .filter(Boolean)
+ .pop() || fallback
+ );
+}
+
+export function dirname(path: string) {
+ const parts = normalizePublishPath(path).split("/").filter(Boolean);
+ parts.pop();
+ return parts.join("/");
+}
+
+export function findExecutablePath(entries: UploadEntry[], candidates: Set) {
+ return entries
+ .map(item => normalizePublishPath(item.path))
+ .find(path => candidates.has(path.split("/").pop()?.toLowerCase() || ""));
+}
diff --git a/app/api/routes/admin_publish.py b/app/api/routes/admin_publish.py
index 3550d48..1cc06c1 100644
--- a/app/api/routes/admin_publish.py
+++ b/app/api/routes/admin_publish.py
@@ -1,4 +1,6 @@
import asyncio
+import secrets
+from datetime import datetime, timezone
from fastapi import APIRouter, Depends, HTTPException, Request
@@ -8,11 +10,84 @@ from app.services import publish_service
router = APIRouter()
PUBLISH_LOCK = asyncio.Lock()
+PUBLISH_JOBS: dict[str, dict] = {}
+
+
+def utc_now_iso() -> str:
+ return datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
+
+
+def public_job(job: dict):
+ return {
+ "job_id": job["job_id"],
+ "status": job["status"],
+ "message": job["message"],
+ "result": job.get("result"),
+ "error": job.get("error"),
+ "created_at": job["created_at"],
+ "updated_at": job["updated_at"],
+ }
+
+
+async def run_publish_job(job_id: str, payload: dict):
+ job = PUBLISH_JOBS[job_id]
+ job.update(status="running", message="正在校验并发布版本", updated_at=utc_now_iso())
+ try:
+ result = await publish_service.publish_payload(payload)
+ job.update(
+ status="success",
+ message=result.get("msg") or "发布完成",
+ result=result,
+ updated_at=utc_now_iso(),
+ )
+ except HTTPException as err:
+ detail = err.detail if isinstance(err.detail, str) else str(err.detail)
+ job.update(status="error", message=detail, error=err.detail, updated_at=utc_now_iso())
+ except Exception as err:
+ job.update(status="error", message=f"发布失败:{err}", error=str(err), updated_at=utc_now_iso())
+ finally:
+ if PUBLISH_LOCK.locked():
+ PUBLISH_LOCK.release()
@router.post("/admin/publish")
async def admin_publish_version(request: Request, auth=Depends(require_permission("publish:manage"))):
+ # 发布版本会写数据库、上传大量文件到 MinIO,并可能持续较长时间。
+ # 同一时间只允许一个发布任务,避免两个版本并发写入导致目录、版本号或文件清单互相污染。
if PUBLISH_LOCK.locked():
raise HTTPException(status_code=409, detail="已有版本发布任务正在进行,请等待完成后再发布")
async with PUBLISH_LOCK:
return await publish_service.publish_version(request)
+
+
+@router.post("/admin/publish/job")
+async def admin_publish_version_job(request: Request, auth=Depends(require_permission("publish:manage"))):
+ if PUBLISH_LOCK.locked():
+ raise HTTPException(status_code=409, detail="已有版本发布任务正在进行,请等待完成后再发布")
+ await PUBLISH_LOCK.acquire()
+ try:
+ payload = await publish_service.make_background_publish_payload(request)
+ job_id = secrets.token_urlsafe(16)
+ PUBLISH_JOBS[job_id] = {
+ "job_id": job_id,
+ "status": "queued",
+ "message": "发布文件已接收,等待后台处理",
+ "result": None,
+ "error": None,
+ "created_at": utc_now_iso(),
+ "updated_at": utc_now_iso(),
+ }
+ asyncio.create_task(run_publish_job(job_id, payload))
+ return public_job(PUBLISH_JOBS[job_id])
+ except Exception:
+ if PUBLISH_LOCK.locked():
+ PUBLISH_LOCK.release()
+ raise
+
+
+@router.get("/admin/publish/job/{job_id}")
+async def admin_publish_job_status(job_id: str, auth=Depends(require_permission("publish:manage"))):
+ job = PUBLISH_JOBS.get(job_id)
+ if not job:
+ raise HTTPException(status_code=404, detail="发布任务不存在或服务端已重启")
+ return public_job(job)
diff --git a/app/api/routes/client_update.py b/app/api/routes/client_update.py
index 4ad47d9..0213487 100644
--- a/app/api/routes/client_update.py
+++ b/app/api/routes/client_update.py
@@ -45,6 +45,8 @@ def normalize_relative_path(raw_path: str) -> str:
@router.post("/api/v1/device/issue")
async def issue_device(request: Request, body: DeviceIssueRequest = Body(...)):
+ # 设备登记:客户端首次启动时用 License 换取服务端签名的设备凭证。
+ # 后续更新接口依赖这个凭证里的 app_id/channel/device_id/license_id,而不是只相信客户端自报字段。
app_id, channel, installation_id = body.app_id.strip(), body.channel.strip(), body.installation_id.strip()
if not app_id or not validate_channel_code(channel) or not (16 <= len(installation_id) <= 128):
raise HTTPException(status_code=400, detail="设备登记参数无效")
@@ -90,6 +92,8 @@ async def issue_device(request: Request, body: DeviceIssueRequest = Body(...)):
@router.post("/api/v1/update/check")
async def check_update(request: Request, body: CheckUpdateRequest = Body(...)):
+ # 更新检查同时返回“能不能运行”和“要不要更新”。
+ # 客户端即使没有新版本,也会拿到签名策略,用于离线启动、禁用版本和防回滚判断。
if request.state.device_identity["app_id"] != body.app_id or request.state.device_identity["channel"] != body.channel:
raise HTTPException(status_code=403, detail="设备凭证与应用/渠道不匹配")
app_id, cur_ver, channel = body.app_id, body.current_version, body.channel
@@ -176,6 +180,8 @@ async def check_update(request: Request, body: CheckUpdateRequest = Body(...)):
@router.post("/api/v1/update/download-url")
async def get_download_url(request: Request, body: DownloadUrlRequest = Body(...)):
+ # 下载链接不直接暴露 MinIO 永久地址,而是按版本和设备凭证生成短期可用的预签名 URL。
+ # 这样既能让客户端直接下载大文件,又能保留服务端授权控制。
identity = request.state.device_identity
if identity["app_id"] != body.app_id or identity["channel"] != body.channel:
raise HTTPException(status_code=403, detail="设备凭证与应用/渠道不匹配")
@@ -213,6 +219,8 @@ async def report_download(request: Request, body: DownloadReportRequest = Body(.
@router.post("/api/v1/update/manifest")
async def get_manifest(request: Request, body: ManifestRequest = Body(...)):
+ # Manifest 是某个版本的文件清单:路径、大小、SHA256、是否可执行。
+ # 客户端必须先验证服务端签名,再按清单下载和校验文件,防止升级包被篡改。
if request.state.device_identity["app_id"] != body.app_id or request.state.device_identity["channel"] != body.channel:
raise HTTPException(status_code=403, detail="设备凭证与应用/渠道不匹配")
ver, rows = client_update_repository.get_manifest_version_files(body.version_id)
diff --git a/app/api/routes/crash_api.py b/app/api/routes/crash_api.py
index 3e42ad7..5e665ea 100644
--- a/app/api/routes/crash_api.py
+++ b/app/api/routes/crash_api.py
@@ -17,6 +17,8 @@ def crash_health():
@router.post("/api/v1/crash-reports")
async def create_crash_report(request: Request):
+ # 崩溃报告接口给 SimCAE/CrashReporter 调用,接收 metadata、minidump 和可选附件。
+ # 具体 token 校验、大小限制、落盘和幂等处理都集中在 crash_api_service。
return await crash_api_service.create_crash_report(request)
@@ -32,4 +34,5 @@ def download_crash_report_file(report_id: str, file_name: str, request: Request)
@router.post("/api/v1/symbols")
async def upload_symbols(request: Request):
+ # 符号包用于后续解析 minidump 堆栈;它和普通升级文件分开存储、分开授权。
return await crash_api_service.upload_symbols(request)
diff --git a/app/services/license_service.py b/app/services/license_service.py
index 4679209..b54eb26 100644
--- a/app/services/license_service.py
+++ b/app/services/license_service.py
@@ -10,6 +10,8 @@ from app.services.signing_service import MANIFEST_PRIVATE_KEY_PATH
def license_key_encryption_material() -> bytes:
+ # 数据库只存 License Key 的密文和 hash。
+ # hash 用于客户端提交 License 时快速匹配;密文用于后台列表需要再次展示原始 Key 的场景。
configured_secret = os.getenv("LICENSE_KEY_ENCRYPTION_SECRET", "").strip()
if configured_secret:
return configured_secret.encode("utf-8")
diff --git a/app/services/publish_service.py b/app/services/publish_service.py
index 6fdce90..06c6727 100644
--- a/app/services/publish_service.py
+++ b/app/services/publish_service.py
@@ -108,6 +108,8 @@ def should_skip_release_directory(part: str) -> bool:
def should_skip_release_file(relative_path: str) -> bool:
folded = relative_path.casefold()
+ # 发布包里不能带客户端本机运行态文件。
+ # 这些文件包含 License、设备身份、策略缓存等机器相关数据,应由客户端运行时生成或服务端重新签发。
runtime_protected_files = {
"client.ini",
"bootstrap.exe",
@@ -163,6 +165,8 @@ def supported_archive_kind(filename: str) -> str:
def ensure_inside_directory(root: Path, relative_path: str) -> Path:
+ # 解压压缩包时必须防止 Zip Slip / 路径穿越。
+ # 任何 ../ 或绝对路径都不能写出临时解压目录。
target = (root / relative_path).resolve()
root_resolved = root.resolve()
if target != root_resolved and root_resolved not in target.parents:
@@ -304,6 +308,8 @@ def release_items_from_extracted_dir(extract_dir: Path, required_main_executable
def normalize_release_item_roots(items: list[dict], required_main_executable: str):
+ # 有些压缩包会多包一层顶级目录,例如 SimCAE-1.0.0/bin/SimCAE.exe。
+ # 如果所有文件都在同一个顶级目录下,并且能找到主程序,就自动剥掉这一层,降低发布者操作成本。
if not items:
return items
required_main_key = required_main_executable.casefold()
@@ -417,6 +423,7 @@ async def close_upload_safely(upload):
def ensure_publish_storage_space(next_file_size: int):
required_bytes = max(next_file_size, 0) + UPLOAD_SPACE_RESERVE
+ MINIO_DATA_DIR.mkdir(parents=True, exist_ok=True)
available_bytes = shutil.disk_usage(MINIO_DATA_DIR).free
if available_bytes < required_bytes:
raise HTTPException(
@@ -431,6 +438,8 @@ def ensure_publish_storage_space(next_file_size: int):
async def collect_publish_items(request: Request):
+ # 发布入口支持两种方式:浏览器选择 Release 目录,或上传一个压缩发布包。
+ # 这里先做请求大小、临时目录空间和 MinIO 存储空间检查,避免大包把服务器拖死。
content_length_header = request.headers.get("content-length")
try:
content_length = int(content_length_header or 0)
@@ -595,6 +604,7 @@ async def collect_publish_items(request: Request):
"upload_items": upload_items,
"archive_upload": archive_upload,
"archive_temp_dir": archive_temp_dir,
+ "job_temp_dir": None,
}
@@ -610,11 +620,55 @@ def cleanup_path(path: Path | None):
print(f"清理临时文件失败: {path}: {err}")
-async def publish_version(request: Request):
+async def make_background_publish_payload(request: Request):
+ # 后台发布任务不能继续持有浏览器上传流,所以目录模式要先复制到服务端临时目录。
+ # 压缩包模式在 collect_publish_items 中已经解压为本地文件,只需要保留解压目录到任务结束。
payload = await collect_publish_items(request)
+ job_temp_dir = Path(tempfile.mkdtemp(prefix="publish_job_", dir=UPLOAD_SPOOL_DIR))
+ converted_items = []
+
+ try:
+ for item in payload["upload_items"]:
+ if "upload" not in item:
+ converted_items.append(item)
+ continue
+ upload = item["upload"]
+ target = ensure_inside_directory(job_temp_dir, item["path"])
+ target.parent.mkdir(parents=True, exist_ok=True)
+ try:
+ upload.file.seek(0)
+ with target.open("wb") as output:
+ shutil.copyfileobj(upload.file, output, length=1024 * 1024)
+ except OSError as err:
+ raise HTTPException(status_code=500, detail={"error": "publish_job_spool_failed", "msg": str(err)})
+ finally:
+ await close_upload_safely(upload)
+ converted_items.append({"path": item["path"], "local_path": target})
+ payload["upload_items"] = converted_items
+ payload["job_temp_dir"] = job_temp_dir
+ payload["archive_upload"] = None
+ return payload
+ except Exception:
+ for item in payload.get("upload_items", []):
+ upload = item.get("upload") if isinstance(item, dict) else None
+ if upload is not None:
+ await close_upload_safely(upload)
+ archive_upload = payload.get("archive_upload")
+ if archive_upload is not None:
+ await close_upload_safely(archive_upload)
+ cleanup_path(payload.get("archive_temp_dir"))
+ cleanup_path(job_temp_dir)
+ raise
+
+
+async def publish_payload(payload: dict):
+ # 完整发布事务:
+ # 1. 使用已收集的发布文件;2. 创建版本记录;3. 上传文件到 MinIO;4. 写入文件 hash/size。
+ # 任何一步失败都会回滚数据库,并删除已经上传的对象前缀,避免出现“半个版本”。
upload_items = payload["upload_items"]
archive_upload = payload["archive_upload"]
archive_temp_dir = payload["archive_temp_dir"]
+ job_temp_dir = payload.get("job_temp_dir")
app_id = payload["app_id"]
channel = payload["channel"]
version = payload["version"]
@@ -689,3 +743,9 @@ async def publish_version(request: Request):
if archive_upload is not None:
await close_upload_safely(archive_upload)
cleanup_path(archive_temp_dir)
+ cleanup_path(job_temp_dir)
+
+
+async def publish_version(request: Request):
+ payload = await collect_publish_items(request)
+ return await publish_payload(payload)
diff --git a/app/services/signing_service.py b/app/services/signing_service.py
index 4851518..81bb6db 100644
--- a/app/services/signing_service.py
+++ b/app/services/signing_service.py
@@ -21,11 +21,15 @@ def load_manifest_private_key():
def canonical_manifest_bytes(manifest_obj: dict) -> bytes:
+ # 签名之前必须先规范化 JSON:固定字段顺序、去掉空格、排除 signature 字段。
+ # 否则同一份 Manifest 在不同环境下序列化结果不同,会导致客户端验签失败。
copy = {k: manifest_obj[k] for k in manifest_obj if k != "signature"}
return json.dumps(copy, sort_keys=True, separators=(",", ":"), ensure_ascii=False).encode("utf-8")
def sign_manifest(manifest_obj: dict) -> str:
+ # 服务端只保存私钥,客户端只分发公钥。
+ # 客户端能验证 Manifest 确实由服务端签发,但无法伪造新的签名。
json_text = canonical_manifest_bytes(manifest_obj)
private_key = load_manifest_private_key()
signature = private_key.sign(json_text, padding.PKCS1v15(), hashes.SHA256())
diff --git a/docker-compose.image.yml b/docker-compose.image.yml
index 3af83b1..d93f3c3 100644
--- a/docker-compose.image.yml
+++ b/docker-compose.image.yml
@@ -34,6 +34,7 @@ services:
MINIO_BUCKET: ${MINIO_BUCKET:?MINIO_BUCKET is required}
api:
+ # 离线部署包使用已经 docker load 导入的镜像,不在目标服务器重新 build。
image: ${SIMCAE_UPDATE_SERVER_IMAGE:-simcae-update-server:0.1.0}
restart: unless-stopped
user: "${APP_UID:-1000}:${APP_GID:-1000}"
@@ -57,6 +58,7 @@ services:
ports:
- "${SERVER_PORT:-8000}:8000"
volumes:
+ # runtime 保存 SQLite、上传缓存和崩溃报告等运行数据;keys 只读挂载,避免私钥被容器误改。
- ./.env:/app/.env
- ./runtime:/data
- ./minio_data:/minio_data:ro
diff --git a/docker-compose.yml b/docker-compose.yml
index b729d45..4715bed 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -34,9 +34,10 @@ services:
MINIO_BUCKET: ${MINIO_BUCKET:?MINIO_BUCKET is required}
api:
+ # 开发/源码部署使用 build,从当前源码构建镜像;正式离线交付通常使用 docker-compose.image.yml 生成的包。
build:
- context: ..
- dockerfile: server/Dockerfile
+ context: .
+ dockerfile: Dockerfile
restart: unless-stopped
user: "${APP_UID:-1000}:${APP_GID:-1000}"
env_file:
@@ -59,6 +60,7 @@ services:
ports:
- "${SERVER_PORT:-8000}:8000"
volumes:
+ # 数据卷和密钥挂载在容器外,重建镜像或升级容器时不会丢失历史版本和授权数据。
- ./.env:/app/.env
- ./runtime:/data
- ./minio_data:/minio_data:ro
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..f530901
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,3 @@
+-r requirements.txt
+
+pytest>=8,<9
diff --git a/scripts/package-offline-server.sh b/scripts/package-offline-server.sh
index 8c21a33..12942e1 100755
--- a/scripts/package-offline-server.sh
+++ b/scripts/package-offline-server.sh
@@ -411,6 +411,8 @@ CLIENT_API_TOKEN=SimCAEClientToken2026
2. 上传压缩发布包,支持 zip、tar.gz、tgz、tar.bz2、tbz2、rar
```
+点击“发布版本”后,浏览器会先把文件上传到服务端。上传完成后,服务端会创建后台发布任务,继续执行解压、Manifest 校验、数据库写入和 MinIO 上传;管理页面会轮询并显示任务状态。这样可以减少大版本发布时长时间占用同一个 HTTP 请求的问题。
+
压缩发布包上传到服务器后,服务端会先解压,再校验是否包含 `.env` 中 `RELEASE_MAIN_EXECUTABLE` 指定的主程序路径。Windows 默认是:
```text
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..3659f9d
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,86 @@
+import importlib
+import os
+import sys
+from pathlib import Path
+
+import pytest
+
+
+PROJECT_ROOT = Path(__file__).resolve().parents[1]
+
+
+def purge_server_modules():
+ for name in list(sys.modules):
+ if name == "main" or name == "db" or name == "minio_tool" or name.startswith("app."):
+ sys.modules.pop(name, None)
+
+
+def write_test_private_key(path: Path):
+ from cryptography.hazmat.primitives import serialization
+ from cryptography.hazmat.primitives.asymmetric import rsa
+
+ private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_bytes(
+ private_key.private_bytes(
+ encoding=serialization.Encoding.PEM,
+ format=serialization.PrivateFormat.PKCS8,
+ encryption_algorithm=serialization.NoEncryption(),
+ )
+ )
+
+
+class TestPasswordHasher:
+ def hash(self, password: str) -> str:
+ return "test-hash:" + password
+
+ def verify(self, password_hash: str, password: str) -> bool:
+ return password_hash == self.hash(password)
+
+
+@pytest.fixture()
+def server_module(tmp_path, monkeypatch):
+ key_path = tmp_path / "keys" / "manifest_private_key.pem"
+ write_test_private_key(key_path)
+
+ env = {
+ "ENV_FILE_PATH": str(tmp_path / ".env"),
+ "DB_FILE": str(tmp_path / "mini.db"),
+ "SQL_FILE": str(PROJECT_ROOT / "tables.sql"),
+ "ADMIN_TOKEN": "AdminTokenForTests2026",
+ "ADMIN_USERNAME": "admin",
+ "ADMIN_PASSWORD": "AdminPass2026",
+ "ADMIN_JWT_SECRET": "AdminJwtSecretForTests2026",
+ "CLIENT_API_TOKEN": "ClientTokenForTests2026",
+ "CRASH_REPORT_TOKEN": "CrashReportTokenForTests2026",
+ "CRASH_SYMBOL_TOKEN": "CrashSymbolTokenForTests2026",
+ "CRASH_ADMIN_TOKEN": "CrashAdminTokenForTests2026",
+ "LICENSE_KEY_ENCRYPTION_SECRET": "LicenseEncryptionSecretForTests2026",
+ "MANIFEST_PRIVATE_KEY_PATH": str(key_path),
+ "MINIO_AUTO_START": "false",
+ "MINIO_ENDPOINT": "127.0.0.1:1",
+ "MINIO_ACCESS_KEY": "minio_test",
+ "MINIO_SECRET_KEY": "minio_test_secret",
+ "MINIO_BUCKET": "updates",
+ "MINIO_PUBLIC_ENDPOINT": "",
+ "MINIO_CONNECT_TIMEOUT_SEC": "0.1",
+ "MINIO_READ_TIMEOUT_SEC": "0.1",
+ "MINIO_RETRY_TOTAL": "0",
+ "LOCAL_UPLOAD_ROOT": str(tmp_path / "local_uploads"),
+ "MINIO_DATA_DIR": str(tmp_path / "minio_data"),
+ "UPLOAD_SPOOL_DIR": str(tmp_path / "upload_spool"),
+ "CRASH_STORAGE_ROOT": str(tmp_path / "crash_storage"),
+ "TARGET_PLATFORM": "windows",
+ "TARGET_ARCH": "x64",
+ "RELEASE_MAIN_EXECUTABLE": "bin/SimCAE.exe",
+ }
+ for key, value in env.items():
+ monkeypatch.setenv(key, value)
+ monkeypatch.chdir(PROJECT_ROOT)
+
+ purge_server_modules()
+ main = importlib.import_module("main")
+ security = importlib.import_module("app.core.security")
+ security.PASSWORD_HASHER = TestPasswordHasher()
+ yield main
+ purge_server_modules()
diff --git a/tests/test_admin_update_flow.py b/tests/test_admin_update_flow.py
new file mode 100644
index 0000000..03574ef
--- /dev/null
+++ b/tests/test_admin_update_flow.py
@@ -0,0 +1,133 @@
+import base64
+import asyncio
+import json
+from types import SimpleNamespace
+
+
+def fake_request(**kwargs):
+ return SimpleNamespace(
+ headers=kwargs.get("headers", {}),
+ client=SimpleNamespace(host=kwargs.get("host", "127.0.0.1")),
+ state=SimpleNamespace(**kwargs.get("state", {})),
+ )
+
+
+def add_app(app_id="testapp", app_name="Test App"):
+ from app.api.routes import admin_app_channel
+ from app.schemas.app_channel import AppCreateRequest
+
+ response = admin_app_channel.admin_add_app(AppCreateRequest(app_id=app_id, app_name=app_name))
+ assert response["msg"] == "应用创建成功"
+
+
+def create_license(app_id="testapp", channel="stable"):
+ from app.api.routes import admin_license
+ from app.schemas.license import LicenseCreateRequest
+
+ response = admin_license.admin_license_create(
+ LicenseCreateRequest(
+ app_id=app_id,
+ channel=channel,
+ customer_name="自动化测试客户",
+ max_devices=1,
+ valid_until="2099-12-31T23:59:59Z",
+ )
+ )
+ return response["license_key"]
+
+
+def encode_device_credential(issue_response: dict) -> str:
+ wrapper = {
+ "identity_text": issue_response["identity_text"],
+ "signature": issue_response["signature"],
+ }
+ return base64.b64encode(json.dumps(wrapper, separators=(",", ":")).encode()).decode()
+
+
+async def run_admin_login_license_and_device_issue(server_module):
+ async with server_module.lifespan(server_module.app):
+ from app.api.routes import admin_auth, admin_license, client_update
+ from app.schemas.admin_auth import AdminLoginRequest
+ from app.schemas.client_update import CheckUpdateRequest, DeviceIssueRequest
+
+ login = admin_auth.login(
+ AdminLoginRequest(username="admin", password="AdminPass2026"),
+ fake_request(headers={"user-agent": "pytest"}),
+ )
+ assert login["success"] is True
+ assert login["data"]["accessToken"]
+
+ add_app()
+ license_key = create_license()
+
+ issue_data = await client_update.issue_device(
+ fake_request(),
+ DeviceIssueRequest(
+ app_id="testapp",
+ channel="stable",
+ license_key=license_key,
+ installation_id="install-test-000001",
+ machine_hash="ab" * 32,
+ ),
+ )
+ assert issue_data["identity"]["app_id"] == "testapp"
+ assert issue_data["identity"]["channel"] == "stable"
+
+ credential = encode_device_credential(issue_data)
+ assert credential
+ check_data = await client_update.check_update(
+ fake_request(state={"device_identity": issue_data["identity"]}),
+ CheckUpdateRequest(
+ app_id="testapp",
+ channel="stable",
+ current_version="1.0.0",
+ client_protocol=3,
+ ),
+ )
+ assert check_data["allow_run"] is True
+ assert check_data["release_available"] is False
+
+ licenses = admin_license.admin_license_list(app_id="testapp")
+ assert licenses["list"][0]["used_devices"] == 1
+
+
+def test_admin_login_license_and_device_issue(server_module):
+ asyncio.run(run_admin_login_license_and_device_issue(server_module))
+
+
+async def run_publish_payload_creates_version(server_module, tmp_path):
+ async with server_module.lifespan(server_module.app):
+ from app.api.routes import admin_version
+ from app.services import publish_service
+
+ add_app("publishapp", "Publish App")
+ release_dir = tmp_path / "release"
+ bin_dir = release_dir / "bin"
+ bin_dir.mkdir(parents=True)
+ exe_path = bin_dir / "SimCAE.exe"
+ readme_path = release_dir / "README.txt"
+ exe_path.write_bytes(b"fake exe")
+ readme_path.write_text("hello", encoding="utf-8")
+
+ result = await publish_service.publish_payload(
+ {
+ "upload_items": [
+ {"path": "bin/SimCAE.exe", "local_path": exe_path},
+ {"path": "README.txt", "local_path": readme_path},
+ ],
+ "archive_upload": None,
+ "archive_temp_dir": None,
+ "app_id": "publishapp",
+ "channel": "stable",
+ "version": "1.0.1",
+ "client_protocol": 3,
+ }
+ )
+ assert result["file_count"] == 2
+
+ versions = admin_version.admin_get_version_list("publishapp")
+ assert any(item["version"] == "1.0.1" for item in versions["list"])
+
+
+def test_publish_payload_creates_version(server_module, tmp_path):
+ asyncio.run(run_publish_payload_creates_version(server_module, tmp_path))
diff --git a/tests/test_crash_api.py b/tests/test_crash_api.py
new file mode 100644
index 0000000..9848da1
--- /dev/null
+++ b/tests/test_crash_api.py
@@ -0,0 +1,113 @@
+import hashlib
+import io
+import json
+from types import SimpleNamespace
+import uuid
+
+
+def crash_metadata(client_report_id: str, minidump: bytes):
+ return {
+ "schemaVersion": 1,
+ "clientReportId": client_report_id,
+ "crashTimeUtc": "2026-07-16T00:00:00Z",
+ "product": "SIMCAE",
+ "appVersion": "1.0.0",
+ "gitCommit": "test-commit",
+ "buildType": "Release",
+ "channel": "stable",
+ "platform": {"os": "Windows", "arch": "x64"},
+ "crash": {"exceptionCode": "0xC0000005"},
+ "userConsent": {"upload": True},
+ "files": [
+ {
+ "kind": "minidump",
+ "name": "crash.dmp",
+ "sha256": hashlib.sha256(minidump).hexdigest(),
+ }
+ ],
+ }
+
+
+class FakeHeaders(dict):
+ def __init__(self, values: dict[str, str]):
+ super().__init__((key.lower(), value) for key, value in values.items())
+
+ def get(self, key: str, default=None):
+ return super().get(key.lower(), default)
+
+
+class FakeUpload:
+ def __init__(self, filename: str, data: bytes):
+ self.filename = filename
+ self._stream = io.BytesIO(data)
+
+ async def read(self, size: int = -1) -> bytes:
+ return self._stream.read(size)
+
+
+class FakeMultipartRequest:
+ def __init__(self, headers: dict[str, str], form: dict, host: str = "127.0.0.1"):
+ self.headers = FakeHeaders(headers)
+ self._form = form
+ self.client = SimpleNamespace(host=host)
+
+ async def form(self):
+ return self._form
+
+
+async def run_crash_report_upload_detail_and_duplicate(server_module):
+ async with server_module.lifespan(server_module.app):
+ from app.services import crash_api_service
+
+ minidump = b"fake minidump bytes"
+ client_report_id = str(uuid.uuid4())
+ metadata = crash_metadata(client_report_id, minidump)
+ metadata_bytes = json.dumps(metadata).encode()
+ headers = {
+ "Authorization": "Bearer CrashReportTokenForTests2026",
+ "Idempotency-Key": client_report_id,
+ "Content-Type": "multipart/form-data; boundary=test",
+ "Content-Length": str(len(metadata_bytes) + len(minidump)),
+ "X-SimCAE-Client": "SIMCAE",
+ "X-SimCAE-Version": "1.0.0",
+ }
+
+ upload = await crash_api_service.create_crash_report(
+ FakeMultipartRequest(
+ headers,
+ {
+ "metadata": FakeUpload("metadata.json", metadata_bytes),
+ "minidump": FakeUpload("crash.dmp", minidump),
+ },
+ )
+ )
+ assert upload.status_code == 201
+ upload_body = json.loads(upload.body)
+ report_id = upload_body["reportId"]
+
+ duplicate = await crash_api_service.create_crash_report(
+ FakeMultipartRequest(
+ headers,
+ {
+ "metadata": FakeUpload("metadata.json", metadata_bytes),
+ "minidump": FakeUpload("crash.dmp", minidump),
+ },
+ )
+ )
+ assert duplicate.status_code == 200
+ assert json.loads(duplicate.body)["duplicate"] is True
+
+ detail = crash_api_service.get_crash_report_detail(
+ report_id,
+ FakeMultipartRequest(
+ {"Authorization": "Bearer CrashAdminTokenForTests2026"},
+ {},
+ ),
+ )
+ assert detail["clientReportId"] == client_report_id
+
+
+def test_crash_report_upload_detail_and_duplicate(server_module):
+ import asyncio
+
+ asyncio.run(run_crash_report_upload_detail_and_duplicate(server_module))