From 4e245f789bc656fdedd63bf564659d635bd6fb4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Thu, 30 Jul 2026 14:14:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=AB=AF=202.?= =?UTF-8?q?=20=E8=A7=86=E9=A2=91=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 1 - .../.cursor/rules/Code-Standards.mdc | 9 + blog-wot-uniapp/.cursor/rules/wot-ui.mdc | 12 + .../.cursor/skill/wot-ui-v2/SKILL.md | 46 + .../skill/wot-ui-v2/references/overview.md | 85 + blog-wot-uniapp/.env.development | 2 + blog-wot-uniapp/.env.production | 2 + blog-wot-uniapp/.gitignore | 21 + blog-wot-uniapp/.npmrc | 3 + blog-wot-uniapp/.vscode/extensions.json | 15 + blog-wot-uniapp/.vscode/settings.json | 37 + blog-wot-uniapp/components.d.ts | 39 + .../design-system/年糕崽崽/MASTER.md | 203 + .../design-system/年糕崽崽/pages/mine.md | 52 + blog-wot-uniapp/eslint.config.js | 3 + blog-wot-uniapp/index.html | 21 + blog-wot-uniapp/package.json | 94 + blog-wot-uniapp/pnpm-lock.yaml | 10584 ++++++++++++++++ blog-wot-uniapp/pnpm-workspace.yaml | 5 + blog-wot-uniapp/src/App.vue | 70 + blog-wot-uniapp/src/api/index.ts | 411 + .../jetbrains-mono-latin-400-normal.woff | Bin 0 -> 27496 bytes .../playfair-display-latin-400-italic.woff | Bin 0 -> 27268 bytes .../playfair-display-latin-400-normal.woff | Bin 0 -> 26900 bytes .../playfair-display-latin-600-normal.woff | Bin 0 -> 28356 bytes .../playfair-display-latin-700-normal.woff | Bin 0 -> 28296 bytes .../components/c-end/AmbientBackground.vue | 284 + .../src/components/c-end/ArtMenuGroup.vue | 64 + .../src/components/c-end/ArtMenuItem.vue | 136 + .../src/components/c-end/ArtSearchBar.vue | 94 + .../src/components/c-end/PostCard.vue | 97 + .../src/components/c-end/ProfileHero.vue | 111 + .../components/layout/AppFloatingTabbar.vue | 64 + .../src/components/layout/AppNavbar.vue | 100 + .../src/components/layout/AppPageShell.vue | 65 + blog-wot-uniapp/src/composables/useAppMode.ts | 75 + .../src/composables/useAppTabbar.ts | 101 + blog-wot-uniapp/src/composables/useAuth.ts | 117 + .../src/composables/usePublicSettings.ts | 53 + .../src/composables/useSearchHistory.ts | 50 + blog-wot-uniapp/src/composables/useTheme.ts | 145 + blog-wot-uniapp/src/config/menus.ts | 107 + blog-wot-uniapp/src/env.d.ts | 10 + blog-wot-uniapp/src/main.ts | 12 + blog-wot-uniapp/src/manifest.json | 74 + blog-wot-uniapp/src/pages.json | 348 + blog-wot-uniapp/src/pages/explore/index.vue | 86 + blog-wot-uniapp/src/pages/home/index.vue | 244 + blog-wot-uniapp/src/pages/mine/index.vue | 263 + .../src/resolvers/wot-ui-resolver.ts | 17 + blog-wot-uniapp/src/static/default-avatar.svg | 1 + blog-wot-uniapp/src/static/github.svg | 1 + blog-wot-uniapp/src/static/logo.svg | 1 + blog-wot-uniapp/src/styles/art-fonts.scss | 48 + blog-wot-uniapp/src/styles/art-tokens.scss | 322 + .../admin/components/AdminBarChart.vue | 161 + .../admin/components/AdminDetailDrawer.vue | 111 + .../admin/components/AdminFilterBar.vue | 111 + .../admin/components/AdminFormField.vue | 29 + .../admin/components/AdminLineChart.vue | 226 + .../admin/components/AdminMediaPicker.vue | 113 + .../admin/components/AdminStatusBadge.vue | 60 + .../admin/composables/useAdminGuard.ts | 20 + .../admin/config/resourceSchemas.ts | 380 + .../admin/config/settingsSchema.ts | 62 + .../subPackages/admin/pages/about/index.vue | 185 + .../admin/pages/analytics/index.vue | 161 + .../admin/pages/attachments/index.vue | 361 + .../subPackages/admin/pages/columns/form.vue | 195 + .../admin/pages/dashboard/index.vue | 228 + .../subPackages/admin/pages/explore/index.vue | 132 + .../admin/pages/inquiries/list.vue | 150 + .../admin/pages/oss-configs/index.vue | 206 + .../subPackages/admin/pages/posts/form.vue | 354 + .../subPackages/admin/pages/posts/list.vue | 187 + .../subPackages/admin/pages/profile/index.vue | 199 + .../subPackages/admin/pages/resource/form.vue | 251 + .../subPackages/admin/pages/resource/list.vue | 404 + .../admin/pages/settings/index.vue | 162 + .../subPackages/admin/pages/snippets/form.vue | 162 + .../subPackages/admin/pages/users/form.vue | 144 + .../subPackages/admin/pages/users/list.vue | 147 + .../admin/pages/video-albums/form.vue | 187 + .../subPackages/admin/pages/videos/form.vue | 174 + .../subPackages/admin/pages/videos/list.vue | 92 + .../subPackages/admin/pages/works/form.vue | 211 + .../subPackages/admin/pages/works/list.vue | 126 + .../content/components/CodeBlock.vue | 115 + .../content/components/ContentPageHeader.vue | 34 + .../content/components/StaffLoginForm.vue | 88 + .../subPackages/content/lib/codeHighlight.ts | 24 + .../content/lib/markdownRenderer.ts | 120 + .../subPackages/content/pages/about/index.vue | 214 + .../subPackages/content/pages/blog/detail.vue | 368 + .../subPackages/content/pages/blog/index.vue | 239 + .../subPackages/content/pages/blog/ppt.vue | 60 + .../content/pages/columns/detail.vue | 104 + .../content/pages/columns/index.vue | 67 + .../subPackages/content/pages/login/index.vue | 133 + .../content/pages/services/index.vue | 396 + .../content/pages/snippets/index.vue | 94 + .../subPackages/content/pages/theme/index.vue | 70 + .../content/pages/videos/album.vue | 112 + .../content/pages/videos/detail.vue | 176 + .../content/pages/videos/index.vue | 217 + .../content/pages/works/detail.vue | 225 + .../subPackages/content/pages/works/index.vue | 164 + blog-wot-uniapp/src/theme.json | 26 + blog-wot-uniapp/src/uni.scss | 76 + blog-wot-uniapp/src/utils/content.ts | 62 + blog-wot-uniapp/src/utils/markdownRenderer.ts | 103 + blog-wot-uniapp/src/utils/request.ts | 184 + blog-wot-uniapp/src/utils/unsupported.ts | 20 + blog-wot-uniapp/tsconfig.json | 40 + blog-wot-uniapp/vite.config.ts | 27 + 115 files changed, 24053 insertions(+), 1 deletion(-) create mode 100644 blog-wot-uniapp/.cursor/rules/Code-Standards.mdc create mode 100644 blog-wot-uniapp/.cursor/rules/wot-ui.mdc create mode 100644 blog-wot-uniapp/.cursor/skill/wot-ui-v2/SKILL.md create mode 100644 blog-wot-uniapp/.cursor/skill/wot-ui-v2/references/overview.md create mode 100644 blog-wot-uniapp/.env.development create mode 100644 blog-wot-uniapp/.env.production create mode 100644 blog-wot-uniapp/.gitignore create mode 100644 blog-wot-uniapp/.npmrc create mode 100644 blog-wot-uniapp/.vscode/extensions.json create mode 100644 blog-wot-uniapp/.vscode/settings.json create mode 100644 blog-wot-uniapp/components.d.ts create mode 100644 blog-wot-uniapp/design-system/年糕崽崽/MASTER.md create mode 100644 blog-wot-uniapp/design-system/年糕崽崽/pages/mine.md create mode 100644 blog-wot-uniapp/eslint.config.js create mode 100644 blog-wot-uniapp/index.html create mode 100644 blog-wot-uniapp/package.json create mode 100644 blog-wot-uniapp/pnpm-lock.yaml create mode 100644 blog-wot-uniapp/pnpm-workspace.yaml create mode 100644 blog-wot-uniapp/src/App.vue create mode 100644 blog-wot-uniapp/src/api/index.ts create mode 100644 blog-wot-uniapp/src/assets/fonts/jetbrains-mono-latin-400-normal.woff create mode 100644 blog-wot-uniapp/src/assets/fonts/playfair-display-latin-400-italic.woff create mode 100644 blog-wot-uniapp/src/assets/fonts/playfair-display-latin-400-normal.woff create mode 100644 blog-wot-uniapp/src/assets/fonts/playfair-display-latin-600-normal.woff create mode 100644 blog-wot-uniapp/src/assets/fonts/playfair-display-latin-700-normal.woff create mode 100644 blog-wot-uniapp/src/components/c-end/AmbientBackground.vue create mode 100644 blog-wot-uniapp/src/components/c-end/ArtMenuGroup.vue create mode 100644 blog-wot-uniapp/src/components/c-end/ArtMenuItem.vue create mode 100644 blog-wot-uniapp/src/components/c-end/ArtSearchBar.vue create mode 100644 blog-wot-uniapp/src/components/c-end/PostCard.vue create mode 100644 blog-wot-uniapp/src/components/c-end/ProfileHero.vue create mode 100644 blog-wot-uniapp/src/components/layout/AppFloatingTabbar.vue create mode 100644 blog-wot-uniapp/src/components/layout/AppNavbar.vue create mode 100644 blog-wot-uniapp/src/components/layout/AppPageShell.vue create mode 100644 blog-wot-uniapp/src/composables/useAppMode.ts create mode 100644 blog-wot-uniapp/src/composables/useAppTabbar.ts create mode 100644 blog-wot-uniapp/src/composables/useAuth.ts create mode 100644 blog-wot-uniapp/src/composables/usePublicSettings.ts create mode 100644 blog-wot-uniapp/src/composables/useSearchHistory.ts create mode 100644 blog-wot-uniapp/src/composables/useTheme.ts create mode 100644 blog-wot-uniapp/src/config/menus.ts create mode 100644 blog-wot-uniapp/src/env.d.ts create mode 100644 blog-wot-uniapp/src/main.ts create mode 100644 blog-wot-uniapp/src/manifest.json create mode 100644 blog-wot-uniapp/src/pages.json create mode 100644 blog-wot-uniapp/src/pages/explore/index.vue create mode 100644 blog-wot-uniapp/src/pages/home/index.vue create mode 100644 blog-wot-uniapp/src/pages/mine/index.vue create mode 100644 blog-wot-uniapp/src/resolvers/wot-ui-resolver.ts create mode 100644 blog-wot-uniapp/src/static/default-avatar.svg create mode 100644 blog-wot-uniapp/src/static/github.svg create mode 100644 blog-wot-uniapp/src/static/logo.svg create mode 100644 blog-wot-uniapp/src/styles/art-fonts.scss create mode 100644 blog-wot-uniapp/src/styles/art-tokens.scss create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminBarChart.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminDetailDrawer.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminFilterBar.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminFormField.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminLineChart.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminMediaPicker.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/components/AdminStatusBadge.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/composables/useAdminGuard.ts create mode 100644 blog-wot-uniapp/src/subPackages/admin/config/resourceSchemas.ts create mode 100644 blog-wot-uniapp/src/subPackages/admin/config/settingsSchema.ts create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/about/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/analytics/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/attachments/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/columns/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/dashboard/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/explore/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/inquiries/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/oss-configs/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/posts/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/posts/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/profile/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/resource/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/resource/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/settings/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/snippets/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/users/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/users/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/video-albums/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/videos/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/videos/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/works/form.vue create mode 100644 blog-wot-uniapp/src/subPackages/admin/pages/works/list.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/components/CodeBlock.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/components/ContentPageHeader.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/components/StaffLoginForm.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/lib/codeHighlight.ts create mode 100644 blog-wot-uniapp/src/subPackages/content/lib/markdownRenderer.ts create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/about/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/blog/detail.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/blog/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/blog/ppt.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/columns/detail.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/columns/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/login/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/services/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/snippets/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/theme/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/videos/album.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/videos/detail.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/videos/index.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/works/detail.vue create mode 100644 blog-wot-uniapp/src/subPackages/content/pages/works/index.vue create mode 100644 blog-wot-uniapp/src/theme.json create mode 100644 blog-wot-uniapp/src/uni.scss create mode 100644 blog-wot-uniapp/src/utils/content.ts create mode 100644 blog-wot-uniapp/src/utils/markdownRenderer.ts create mode 100644 blog-wot-uniapp/src/utils/request.ts create mode 100644 blog-wot-uniapp/src/utils/unsupported.ts create mode 100644 blog-wot-uniapp/tsconfig.json create mode 100644 blog-wot-uniapp/vite.config.ts diff --git a/.idea/vcs.xml b/.idea/vcs.xml index e70c0de..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ - \ No newline at end of file diff --git a/blog-wot-uniapp/.cursor/rules/Code-Standards.mdc b/blog-wot-uniapp/.cursor/rules/Code-Standards.mdc new file mode 100644 index 0000000..66a5cb3 --- /dev/null +++ b/blog-wot-uniapp/.cursor/rules/Code-Standards.mdc @@ -0,0 +1,9 @@ +--- +description: +alwaysApply: true +--- + +1. 写代码的时候要补充详细的中文注释(每个方法是干嘛的,为什么要这样写),如果是工作区,则所有项目都适用该规则 +2. 注意不要生成太多的空行,上一部分代码和下一部分代码中间的空行不要大于2行 +3. 有封装好的方法、组件需要复用,不要重复造轮子 +4. 小程序端的抽屉全部需要用page-container来防止用户意外退出页面 diff --git a/blog-wot-uniapp/.cursor/rules/wot-ui.mdc b/blog-wot-uniapp/.cursor/rules/wot-ui.mdc new file mode 100644 index 0000000..245bf75 --- /dev/null +++ b/blog-wot-uniapp/.cursor/rules/wot-ui.mdc @@ -0,0 +1,12 @@ +--- +description: 小程序端优先使用 wot-ui 组件 +alwaysApply: true +--- + +# Wot UI 使用规范(blog-wot-uniapp) + +1. UI 优先使用 `@wot-ui/ui` 已有组件(`wd-*`),例如底部菜单用 `wd-action-sheet`,对话框用 `wd-dialog`,表单用 `wd-input` / `wd-button`。 +2. 现有组件能力不足时:先二次封装(在 wot 外包一层交互与 art 样式,如 `ArtMenuItem`),再自研通用组件,放到主包 `components/` 或分包 `components/`。 +3. 禁止为同一交互再造一套原生弹层/列表(例如自写底部菜单替代 `wd-action-sheet`)。 +4. 抽屉类仍遵守工作区规则:小程序端用 `page-container`,防止用户意外退出页面。 +5. C 端视觉用 art token / `themeVars` 覆盖 wot 主题色与深色背景,而不是放弃 wot 组件。 diff --git a/blog-wot-uniapp/.cursor/skill/wot-ui-v2/SKILL.md b/blog-wot-uniapp/.cursor/skill/wot-ui-v2/SKILL.md new file mode 100644 index 0000000..5cf4dcd --- /dev/null +++ b/blog-wot-uniapp/.cursor/skill/wot-ui-v2/SKILL.md @@ -0,0 +1,46 @@ +--- +name: wot-ui-v2 +description: '回答、生成、重构、排查 wot-ui v2 相关代码时使用。关键词:wot-ui、uni-app、Vue3、wd-、ConfigProvider、useToast、useDialog、Form、Popup、theme、llms-full。适用于组件选型、API 查询、示例页面生成、主题定制、常见坑排查。' +argument-hint: '组件名、页面场景、问题描述或主题定制需求' +--- + +# Wot UI V2 Skill + +这个 skill 用于让 Agent 在处理 wot-ui v2 相关任务时,优先采用组件库既有能力、遵守 uni-app 场景限制,并结合本仓库提供的 `wot` CLI 查询离线知识。 + +## 适用场景 + +- 用户询问某个 `wd-*` 组件的基础用法、属性、事件、插槽或样式变量。 +- 需要生成或重构 `uni-app + Vue 3 + TypeScript` 的 wot-ui 页面或组件代码。 +- 需要在 `ConfigProvider`、主题变量、暗黑模式、国际化、反馈类 hooks、表单等场景下给出正确做法。 +- 需要排查文档中常见的 `Toast`、`Dialog`、`Popup`、`Tabs`、`Slider`、样式覆盖问题。 +- 用户只是泛化地提到主题定制,但还没有明确要求按“单文件主题 SCSS + App.vue 只 `@use`”的结构生成时。 + +## 推荐流程 + +1. 先用本仓库 CLI 或 MCP 工具查组件知识。 +2. 再根据项目实际安装方式决定导入路径与集成方式。 +3. 优先复用现成的 `wd-*` 组件、hooks、主题变量与组合模式,不要退化成原生标签堆砌。 +4. 如果问题涉及约束或坑位,再查阅 [参考知识](./references/overview.md)。 +5. 如果用户明确要求生成 `src/themes/styles/{主题名}.scss` 单文件主题,并把挂载逻辑收进主题文件,优先切换到 `create-wot-ui-theme` skill。 + +## 查询顺序 + +1. `wot list` 找组件名。 +2. `wot info ` 看 props、events、slots、CSS 变量。 +3. `wot demo ` 看 demo 名称或具体 demo 代码。 +4. `wot doc ` 看完整 markdown 文档。 +5. `wot token ` 看主题变量。 + +## 工作规则 + +- 默认把 wot-ui 视为 `uni-app + Vue 3 + TypeScript` 组件库。 +- 写页面时优先输出 `script setup` 风格。 +- 反馈类能力如 `useToast`、`useDialog`、`useNotify`、`useImagePreview`、`useVideoPreview`,除了 hook 调用外,通常还需要页面内显式声明对应组件实例。 +- 文档里经常出现 `@/uni_modules/wot-ui` 导入路径;如果用户项目采用 npm 安装,应切换成 `@wot-ui/ui`。 +- 主题定制优先走 `ConfigProvider` 和 CSS 变量,不优先建议深度覆盖内部类名。 +- 生成代码时尽量沿用组件库文档里的命名和交互模式,例如 `v-model:visible`、`before-confirm`、`confirm`、`change`、`custom-class`、`custom-style`。 + +## 参考资料 + +- [Wot UI V2 概览](./references/overview.md) diff --git a/blog-wot-uniapp/.cursor/skill/wot-ui-v2/references/overview.md b/blog-wot-uniapp/.cursor/skill/wot-ui-v2/references/overview.md new file mode 100644 index 0000000..e997320 --- /dev/null +++ b/blog-wot-uniapp/.cursor/skill/wot-ui-v2/references/overview.md @@ -0,0 +1,85 @@ +# Wot UI V2 Overview + +本文件根据 wot-ui v2 的 `llms-full.txt` 与本仓库现有 CLI 工作流提炼,目标是帮助 Agent 快速掌握适合生成代码与回答问题的高价值知识,而不是逐字复制官方文档。 + +## Product Positioning + +- Wot UI v2 是面向 `uni-app` 的 `Vue 3 + TypeScript` 组件库。 +- 覆盖微信小程序、支付宝小程序、钉钉小程序、H5、APP 等平台。 +- 组件命名统一为 `wd-*`。 +- 组件库强调 AI 友好、主题定制、暗黑模式、国际化与跨端一致性。 + +## Installation And Integration + +- npm 安装:`pnpm add @wot-ui/ui` +- 使用前需要安装 `sass`。 +- `uni_modules` 安装模式天然支持 easycom 自动引入。 +- npm 安装模式通常需要配置 vite resolver 或 easycom。 +- CLI 项目在 npm 模式下可在 `tsconfig.json` 中加入 `@wot-ui/ui/global` 以增强全局组件类型提示。 + +## Import Rules + +- npm 安装项目:组合式函数、类型和工具优先从 `@wot-ui/ui` 导入。 +- `uni_modules` 安装项目:文档中的 `@/uni_modules/wot-ui` 路径通常可直接使用。 +- 官方文档示例很多基于 `uni_modules` 路径,回答时要按用户项目实际安装方式转换。 + +## High Value Conventions + +- 反馈类组件不能依赖全局挂载。页面内通常需要显式写出 `wd-toast`、`wd-dialog`、`wd-notify`、`wd-image-preview`、`wd-video-preview` 等实例。 +- `useToast`、`useDialog`、`useNotify`、`useQueue` 等 hooks 基于 `provide/inject`,应在 `setup` 中调用。 +- 页面内如果存在多个 `wd-dialog` 或 `wd-toast`,需要通过 `selector` 区分,否则可能出现实例冲突或重复弹出。 +- 自定义组件中如果要覆盖 wot-ui 内部样式,小程序环境通常需要把组件配置为 `styleIsolation: 'shared'`。 +- 在 `Popup`、`ActionSheet`、`DropDownItem` 等延迟渲染弹层里使用 `Slider`、`Tabs` 等依赖尺寸计算的组件时,打开后应调用实例方法重新初始化,例如 `initSlider()` 或 `updateLineStyle()`。 + +## Theme And Styling + +- 主题定制优先走 CSS 变量。 +- Design Token 分三层:基础变量、语义变量、组件变量。 +- 局部或全局主题可通过 `wd-config-provider` 的 `theme` 和 `theme-vars` 控制。 +- 深色模式通过 `wd-config-provider theme="dark"` 开启。 +- 更推荐覆盖语义变量或组件变量,不推荐优先依赖深层 class 选择器覆盖。 + +## Common UI Patterns + +- 表单场景优先组合 `wd-form`、`wd-form-item`、`wd-input`、`wd-textarea`、`wd-picker`、`wd-calendar`、`wd-select-picker`。 +- 弹层类场景优先使用 `wd-popup`、`wd-dialog`、`wd-action-sheet`、`wd-tooltip`、`wd-popover`。 +- 反馈类场景优先使用 `useToast`、`useDialog`、`useNotify`,不要直接手写临时弹层。 +- 列表和展示类场景优先考虑 `wd-cell`、`wd-card`、`wd-tag`、`wd-badge`、`wd-empty`、`wd-loadmore`、`wd-skeleton`。 +- 导航与布局类场景优先考虑 `wd-navbar`、`wd-tabs`、`wd-tabbar`、`wd-sidebar`、`wd-row`、`wd-col`、`wd-gap`。 + +## Interaction Patterns + +- 大量组件采用 `v-model` 或 `v-model:visible` 控制状态。 +- 表单和选择类组件普遍提供 `confirm`、`change`、`close` 等事件。 +- 反馈组件常通过 hook 返回方法对象,例如 `toast.success()`、`dialog.confirm()`。 +- `Popover`、`Tooltip`、`SwipeAction` 等场景常与 `useQueue().closeOutside()` 配合,实现点击外部关闭。 + +## Component Selection Hints + +- 需要主操作按钮时用 `wd-button`,不要先写原生 `button`。 +- 需要列表入口、设置页、表单容器时优先用 `wd-cell` 和 `wd-cell-group`。 +- 需要轻量提示时优先用 `useToast`;需要确认交互时优先用 `useDialog`。 +- 需要单选或多选弹层时优先用 `wd-select-picker`、`wd-picker`、`wd-cascader`。 +- 需要统一主题或暗黑模式时优先用 `wd-config-provider`。 + +## Common Pitfalls + +- `Toast`、`Dialog` 等函数式调用没有效果,先检查页面里是否声明了对应组件实例。 +- 同一个页面里多个无 `selector` 的反馈组件可能相互干扰。 +- npm 模式使用国际化时,开发态可能需要在 Vite 的 `optimizeDeps.exclude` 中排除 `@wot-ui/ui`。 +- 文档里的导入路径和项目实际安装方式不一致时,回答要主动修正。 +- 在弹层中直接渲染依赖尺寸测量的组件时,初始化时机往往比 API 本身更关键。 + +## AI Response Heuristics + +- 回答基础用法时,优先给最小可运行模板,再补充常用 props。 +- 生成页面时,优先给完整的 `template + script setup + style` 结构。 +- 如果项目已使用 wot-ui,不要建议换用其他 UI 库。 +- 如果 wot-ui 已有现成组件,就不要用原生结构重复造轮子。 +- 如果用户只问某个组件,优先给该组件最常见 3 到 5 个用法,不要把整份文档全部展开。 + +## Repo-Specific Workflow + +- 在本仓库中,优先使用 `wot list`、`wot info`、`wot doc`、`wot demo`、`wot token` 获取组件知识。 +- 当仓库数据与线上文档不一致时,以用户目标为准,并明确指出仓库离线数据可能需要重新提取。 +- 若要补数据或修提取逻辑,关注 `scripts/extract.ts`、`data/v2.json`、`src/data/*` 与相应命令实现。 diff --git a/blog-wot-uniapp/.env.development b/blog-wot-uniapp/.env.development new file mode 100644 index 0000000..cb5e7f2 --- /dev/null +++ b/blog-wot-uniapp/.env.development @@ -0,0 +1,2 @@ +VITE_API_BASE=http://127.0.0.1:8081/api +VITE_UPLOAD_BASE=http://127.0.0.1:8081 diff --git a/blog-wot-uniapp/.env.production b/blog-wot-uniapp/.env.production new file mode 100644 index 0000000..e82e1ef --- /dev/null +++ b/blog-wot-uniapp/.env.production @@ -0,0 +1,2 @@ +VITE_API_BASE=https://blog.nailaoyun.cn/api +VITE_UPLOAD_BASE=https://blog.nailaoyun.cn diff --git a/blog-wot-uniapp/.gitignore b/blog-wot-uniapp/.gitignore new file mode 100644 index 0000000..69c9a5b --- /dev/null +++ b/blog-wot-uniapp/.gitignore @@ -0,0 +1,21 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/blog-wot-uniapp/.npmrc b/blog-wot-uniapp/.npmrc new file mode 100644 index 0000000..d8b8386 --- /dev/null +++ b/blog-wot-uniapp/.npmrc @@ -0,0 +1,3 @@ +strict-peer-dependencies=false +auto-install-peers=true +shamefully-hoist=true diff --git a/blog-wot-uniapp/.vscode/extensions.json b/blog-wot-uniapp/.vscode/extensions.json new file mode 100644 index 0000000..be94366 --- /dev/null +++ b/blog-wot-uniapp/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "vue.volar", + "mrmaoddxxaa.create-uniapp-view", + "uni-helper.uni-helper-vscode", + "uni-helper.uni-app-schemas-vscode", + "uni-helper.uni-highlight-vscode", + "uni-helper.uni-ui-snippets-vscode", + "uni-helper.uni-app-snippets-vscode", + "uni-helper.uni-cloud-snippets-vscode", + "yoavbls.pretty-ts-errors", + "johnsoncodehk.vscode-tsconfig-helper", + "dbaeumer.vscode-eslint" + ] +} diff --git a/blog-wot-uniapp/.vscode/settings.json b/blog-wot-uniapp/.vscode/settings.json new file mode 100644 index 0000000..d4bc414 --- /dev/null +++ b/blog-wot-uniapp/.vscode/settings.json @@ -0,0 +1,37 @@ +{ + "files.associations": { + "pages.json": "jsonc", + "manifest.json": "jsonc" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + "prettier.enable": false, + "editor.formatOnSave": false, + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "nvue", + "uvue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql", + "astro", + "svelte", + "css", + "less", + "scss", + "pcss", + "postcss" + ] +} diff --git a/blog-wot-uniapp/components.d.ts b/blog-wot-uniapp/components.d.ts new file mode 100644 index 0000000..94b55a7 --- /dev/null +++ b/blog-wot-uniapp/components.d.ts @@ -0,0 +1,39 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by vite-plugin-uni-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + AmbientBackground: typeof import('./src/components/c-end/AmbientBackground.vue')['default'] + AppFloatingTabbar: typeof import('./src/components/layout/AppFloatingTabbar.vue')['default'] + AppNavbar: typeof import('./src/components/layout/AppNavbar.vue')['default'] + AppPageShell: typeof import('./src/components/layout/AppPageShell.vue')['default'] + ArtMenuGroup: typeof import('./src/components/c-end/ArtMenuGroup.vue')['default'] + ArtMenuItem: typeof import('./src/components/c-end/ArtMenuItem.vue')['default'] + ArtSearchBar: typeof import('./src/components/c-end/ArtSearchBar.vue')['default'] + PostCard: typeof import('./src/components/c-end/PostCard.vue')['default'] + ProfileHero: typeof import('./src/components/c-end/ProfileHero.vue')['default'] + WdButton: typeof import('@wot-ui/ui/components/wd-button/wd-button.vue')['default'] + WdConfigProvider: typeof import('@wot-ui/ui/components/wd-config-provider/wd-config-provider.vue')['default'] + WdDialog: typeof import('@wot-ui/ui/components/wd-dialog/wd-dialog.vue')['default'] + WdEmpty: typeof import('@wot-ui/ui/components/wd-empty/wd-empty.vue')['default'] + WdForm: typeof import('@wot-ui/ui/components/wd-form/wd-form.vue')['default'] + WdIcon: typeof import('@wot-ui/ui/components/wd-icon/wd-icon.vue')['default'] + WdInput: typeof import('@wot-ui/ui/components/wd-input/wd-input.vue')['default'] + WdLoading: typeof import('@wot-ui/ui/components/wd-loading/wd-loading.vue')['default'] + WdLoadmore: typeof import('@wot-ui/ui/components/wd-loadmore/wd-loadmore.vue')['default'] + WdNavbar: typeof import('@wot-ui/ui/components/wd-navbar/wd-navbar.vue')['default'] + WdPicker: typeof import('@wot-ui/ui/components/wd-picker/wd-picker.vue')['default'] + WdPopup: typeof import('@wot-ui/ui/components/wd-popup/wd-popup.vue')['default'] + WdSwitch: typeof import('@wot-ui/ui/components/wd-switch/wd-switch.vue')['default'] + WdTab: typeof import('@wot-ui/ui/components/wd-tab/wd-tab.vue')['default'] + WdTabbar: typeof import('@wot-ui/ui/components/wd-tabbar/wd-tabbar.vue')['default'] + WdTabbarItem: typeof import('@wot-ui/ui/components/wd-tabbar-item/wd-tabbar-item.vue')['default'] + WdTabs: typeof import('@wot-ui/ui/components/wd-tabs/wd-tabs.vue')['default'] + WdTextarea: typeof import('@wot-ui/ui/components/wd-textarea/wd-textarea.vue')['default'] + WdToast: typeof import('@wot-ui/ui/components/wd-toast/wd-toast.vue')['default'] + } +} diff --git a/blog-wot-uniapp/design-system/年糕崽崽/MASTER.md b/blog-wot-uniapp/design-system/年糕崽崽/MASTER.md new file mode 100644 index 0000000..3dde419 --- /dev/null +++ b/blog-wot-uniapp/design-system/年糕崽崽/MASTER.md @@ -0,0 +1,203 @@ +# Design System Master File + +> **LOGIC:** When building a specific page, first check `design-system/pages/[page-name].md`. +> If that file exists, its rules **override** this Master file. +> If not, strictly follow the rules below. + +--- + +**Project:** 年糕崽崽 +**Generated:** 2026-07-27 14:56:05 +**Category:** Digital Products/Downloads + +--- + +## Global Rules + +### Color Palette + +| Role | Hex | CSS Variable | +|------|-----|--------------| +| Primary | `#6366F1` | `--color-primary` | +| Secondary | `#818CF8` | `--color-secondary` | +| CTA/Accent | `#22C55E` | `--color-cta` | +| Background | `#EEF2FF` | `--color-background` | +| Text | `#312E81` | `--color-text` | + +**Color Notes:** Digital indigo + buy green + +### Typography + +- **Heading Font:** Archivo +- **Body Font:** Space Grotesk +- **Mood:** minimal, portfolio, designer, creative, clean, artistic +- **Google Fonts:** [Archivo + Space Grotesk](https://fonts.google.com/share?selection.family=Archivo:wght@300;400;500;600;700|Space+Grotesk:wght@300;400;500;600;700) + +**CSS Import:** +```css +@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@300;400;500;600;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap'); +``` + +### Spacing Variables + +| Token | Value | Usage | +|-------|-------|-------| +| `--space-xs` | `4px` / `0.25rem` | Tight gaps | +| `--space-sm` | `8px` / `0.5rem` | Icon gaps, inline spacing | +| `--space-md` | `16px` / `1rem` | Standard padding | +| `--space-lg` | `24px` / `1.5rem` | Section padding | +| `--space-xl` | `32px` / `2rem` | Large gaps | +| `--space-2xl` | `48px` / `3rem` | Section margins | +| `--space-3xl` | `64px` / `4rem` | Hero padding | + +### Shadow Depths + +| Level | Value | Usage | +|-------|-------|-------| +| `--shadow-sm` | `0 1px 2px rgba(0,0,0,0.05)` | Subtle lift | +| `--shadow-md` | `0 4px 6px rgba(0,0,0,0.1)` | Cards, buttons | +| `--shadow-lg` | `0 10px 15px rgba(0,0,0,0.1)` | Modals, dropdowns | +| `--shadow-xl` | `0 20px 25px rgba(0,0,0,0.15)` | Hero images, featured cards | + +--- + +## Component Specs + +### Buttons + +```css +/* Primary Button */ +.btn-primary { + background: #22C55E; + color: white; + padding: 12px 24px; + border-radius: 8px; + font-weight: 600; + transition: all 200ms ease; + cursor: pointer; +} + +.btn-primary:hover { + opacity: 0.9; + transform: translateY(-1px); +} + +/* Secondary Button */ +.btn-secondary { + background: transparent; + color: #6366F1; + border: 2px solid #6366F1; + padding: 12px 24px; + border-radius: 8px; + font-weight: 600; + transition: all 200ms ease; + cursor: pointer; +} +``` + +### Cards + +```css +.card { + background: #EEF2FF; + border-radius: 12px; + padding: 24px; + box-shadow: var(--shadow-md); + transition: all 200ms ease; + cursor: pointer; +} + +.card:hover { + box-shadow: var(--shadow-lg); + transform: translateY(-2px); +} +``` + +### Inputs + +```css +.input { + padding: 12px 16px; + border: 1px solid #E2E8F0; + border-radius: 8px; + font-size: 16px; + transition: border-color 200ms ease; +} + +.input:focus { + border-color: #6366F1; + outline: none; + box-shadow: 0 0 0 3px #6366F120; +} +``` + +### Modals + +```css +.modal-overlay { + background: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(4px); +} + +.modal { + background: white; + border-radius: 16px; + padding: 32px; + box-shadow: var(--shadow-xl); + max-width: 500px; + width: 90%; +} +``` + +--- + +## Style Guidelines + +**Style:** Vibrant & Block-based + +**Keywords:** Bold, energetic, playful, block layout, geometric shapes, high color contrast, duotone, modern, energetic + +**Best For:** Startups, creative agencies, gaming, social media, youth-focused, entertainment, consumer + +**Key Effects:** Large sections (48px+ gaps), animated patterns, bold hover (color shift), scroll-snap, large type (32px+), 200-300ms + +### Page Pattern + +**Pattern Name:** Portfolio Grid + +- **Conversion Strategy:** hover overlay info, lightbox view, Visuals first. Filter by category. Fast loading essential. +- **CTA Placement:** Project Card Hover + Footer Contact +- **Section Order:** 1. Hero (Name/Role), 2. Project Grid (Masonry), 3. About/Philosophy, 4. Contact + +--- + +## Anti-Patterns (Do NOT Use) + +- ❌ No preview +- ❌ Slow delivery + +### Additional Forbidden Patterns + +- ❌ **Emojis as icons** — Use SVG icons (Heroicons, Lucide, Simple Icons) +- ❌ **Missing cursor:pointer** — All clickable elements must have cursor:pointer +- ❌ **Layout-shifting hovers** — Avoid scale transforms that shift layout +- ❌ **Low contrast text** — Maintain 4.5:1 minimum contrast ratio +- ❌ **Instant state changes** — Always use transitions (150-300ms) +- ❌ **Invisible focus states** — Focus states must be visible for a11y + +--- + +## Pre-Delivery Checklist + +Before delivering any UI code, verify: + +- [ ] No emojis used as icons (use SVG instead) +- [ ] All icons from consistent icon set (Heroicons/Lucide) +- [ ] `cursor-pointer` on all clickable elements +- [ ] Hover states with smooth transitions (150-300ms) +- [ ] Light mode: text contrast 4.5:1 minimum +- [ ] Focus states visible for keyboard navigation +- [ ] `prefers-reduced-motion` respected +- [ ] Responsive: 375px, 768px, 1024px, 1440px +- [ ] No content hidden behind fixed navbars +- [ ] No horizontal scroll on mobile diff --git a/blog-wot-uniapp/design-system/年糕崽崽/pages/mine.md b/blog-wot-uniapp/design-system/年糕崽崽/pages/mine.md new file mode 100644 index 0000000..2ee5f68 --- /dev/null +++ b/blog-wot-uniapp/design-system/年糕崽崽/pages/mine.md @@ -0,0 +1,52 @@ +# Mine Page Overrides + +> **PROJECT:** 年糕崽崽 +> **Generated:** 2026-07-27 14:56:05 +> **Page Type:** Blog / Article + +> ⚠️ **IMPORTANT:** Rules in this file **override** the Master file (`design-system/MASTER.md`). +> Only deviations from the Master are documented here. For all other rules, refer to the Master. + +--- + +## Page-Specific Rules + +### Layout Overrides + +- **Max Width:** 1200px (standard) +- **Layout:** Full-width sections, centered content +- **Sections:** 1. Hero (Name/Role), 2. Project Grid (Masonry), 3. About/Philosophy, 4. Contact + +### Spacing Overrides + +- No overrides — use Master spacing + +### Typography Overrides + +- No overrides — use Master typography + +### Color Overrides + +- **Strategy:** Neutral background (let work shine). Text: Black/White. Accent: Minimal. + +### Component Overrides + +- Avoid: Default keyboard for all inputs +- Avoid: Desktop-first causing mobile issues +- Avoid: Enable by default everywhere + +--- + +## Page-Specific Components + +- No unique components for this page + +--- + +## Recommendations + +- Effects: Press deformation (scale + squish), bounce-back (cubic-bezier), material response, haptic-like feedback, spring physics +- Forms: Use inputmode attribute +- Responsive: Start with mobile styles then add breakpoints +- Touch: Disable where not needed +- CTA Placement: Project Card Hover + Footer Contact diff --git a/blog-wot-uniapp/eslint.config.js b/blog-wot-uniapp/eslint.config.js new file mode 100644 index 0000000..9bdf2e1 --- /dev/null +++ b/blog-wot-uniapp/eslint.config.js @@ -0,0 +1,3 @@ +import uniHelper from '@uni-helper/eslint-config' + +export default uniHelper() diff --git a/blog-wot-uniapp/index.html b/blog-wot-uniapp/index.html new file mode 100644 index 0000000..f4960b1 --- /dev/null +++ b/blog-wot-uniapp/index.html @@ -0,0 +1,21 @@ + + + + + + + + + + + +
+ + + diff --git a/blog-wot-uniapp/package.json b/blog-wot-uniapp/package.json new file mode 100644 index 0000000..4fb63e3 --- /dev/null +++ b/blog-wot-uniapp/package.json @@ -0,0 +1,94 @@ +{ + "name": "blog-wot-uniapp", + "type": "module", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "uni", + "dev:app": "uni -p app", + "dev:app-android": "uni -p app-android", + "dev:app-ios": "uni -p app-ios", + "dev:custom": "uni -p", + "dev:h5": "uni", + "dev:h5:ssr": "uni --ssr", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build": "uni build", + "build:app": "uni build -p app", + "build:app-android": "uni build -p app-android", + "build:app-ios": "uni build -p app-ios", + "build:custom": "uni build -p", + "build:h5": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-weixin": "uni build -p mp-weixin", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union", + "type-check": "vue-tsc --noEmit", + "lint": "eslint .", + "lint:fix": "eslint . --fix" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-4070620250821001", + "@dcloudio/uni-app-harmony": "3.0.0-4070620250821001", + "@dcloudio/uni-app-plus": "3.0.0-4070620250821001", + "@dcloudio/uni-components": "3.0.0-4070620250821001", + "@dcloudio/uni-h5": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-alipay": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-baidu": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-harmony": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-jd": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-lark": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-qq": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-toutiao": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-weixin": "3.0.0-4070620250821001", + "@dcloudio/uni-mp-xhs": "3.0.0-4070620250821001", + "@dcloudio/uni-quickapp-webview": "3.0.0-4070620250821001", + "@wot-ui/ui": "^2.2.0", + "highlight.js": "^11.11.1", + "marked": "^18.0.7", + "mp-html": "^2.5.2", + "pinia": "2.2.4", + "vue": "3.4.21", + "vue-i18n": "9.6.2" + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@dcloudio/types": "^3.4.21", + "@dcloudio/uni-automator": "3.0.0-4070620250821001", + "@dcloudio/uni-cli-shared": "3.0.0-4070620250821001", + "@dcloudio/uni-stacktracey": "3.0.0-4070620250821001", + "@dcloudio/vite-plugin-uni": "3.0.0-4070620250821001", + "@mini-types/alipay": "^3.0.14", + "@types/node": "^24.5.2", + "@uni-helper/eslint-config": "^0.5.0", + "@uni-helper/plugin-uni": "0.1.0", + "@uni-helper/uni-types": "^1.0.0-alpha.6", + "@uni-helper/vite-plugin-uni-components": "^0.2.1", + "@vue/runtime-core": "3.4.21", + "@vue/tsconfig": "^0.8.1", + "eslint": "^9.36.0", + "miniprogram-api-typings": "^4.1.0", + "sass": "1.102.0", + "typescript": "^5.9.2", + "vite": "5.2.8", + "vue-tsc": "^3.0.7" + } +} \ No newline at end of file diff --git a/blog-wot-uniapp/pnpm-lock.yaml b/blog-wot-uniapp/pnpm-lock.yaml new file mode 100644 index 0000000..6d37274 --- /dev/null +++ b/blog-wot-uniapp/pnpm-lock.yaml @@ -0,0 +1,10584 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(@dcloudio/types@3.4.21)(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-app-harmony': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-components': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-h5': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(@dcloudio/types@3.4.21)(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-harmony': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-xhs': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@wot-ui/ui': + specifier: ^2.2.0 + version: 2.2.0(vue@3.4.21(typescript@5.9.2)) + highlight.js: + specifier: ^11.11.1 + version: 11.11.1 + marked: + specifier: ^18.0.7 + version: 18.0.7 + mp-html: + specifier: ^2.5.2 + version: 2.5.2 + pinia: + specifier: 2.2.4 + version: 2.2.4(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + vue: + specifier: 3.4.21 + version: 3.4.21(typescript@5.9.2) + vue-i18n: + specifier: 9.6.2 + version: 9.6.2(vue@3.4.21(typescript@5.9.2)) + devDependencies: + '@babel/plugin-proposal-private-property-in-object': + specifier: ^7.21.11 + version: 7.21.11(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@dcloudio/types': + specifier: ^3.4.21 + version: 3.4.21 + '@dcloudio/uni-automator': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(jest-environment-node@27.5.1)(jest@27.0.4(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-4070620250821001 + version: 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@mini-types/alipay': + specifier: ^3.0.14 + version: 3.0.14 + '@types/node': + specifier: ^24.5.2 + version: 24.5.2 + '@uni-helper/eslint-config': + specifier: ^0.5.0 + version: 0.5.0(@antfu/eslint-config@5.4.1(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + '@uni-helper/plugin-uni': + specifier: 0.1.0 + version: 0.1.0(@dcloudio/vite-plugin-uni@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))) + '@uni-helper/uni-types': + specifier: ^1.0.0-alpha.6 + version: 1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + '@uni-helper/vite-plugin-uni-components': + specifier: ^0.2.1 + version: 0.2.3(rollup@4.52.2)(supports-color@8.1.1) + '@vue/runtime-core': + specifier: 3.4.21 + version: 3.4.21 + '@vue/tsconfig': + specifier: ^0.8.1 + version: 0.8.1(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + eslint: + specifier: ^9.36.0 + version: 9.36.0(supports-color@8.1.1) + miniprogram-api-typings: + specifier: ^4.1.0 + version: 4.1.0 + sass: + specifier: 1.102.0 + version: 1.102.0 + typescript: + specifier: ^5.9.2 + version: 5.9.2 + vite: + specifier: 5.2.8 + version: 5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0) + vue-tsc: + specifier: ^3.0.7 + version: 3.0.8(typescript@5.9.2) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/eslint-config@5.4.1': + resolution: {integrity: sha512-x7BiNkxJRlXXs8tIvg0CgMuNo5IZVWkGLMJotCtCtzWUHW78Pmm8PvtXhvLBbTc8683GGBK616MMztWLh4RNjA==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.38.4 + '@next/eslint-plugin-next': ^15.4.0-canary.115 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-jsx-a11y: '>=6.10.2' + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@next/eslint-plugin-next': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-jsx-a11y: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + 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.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.5': + resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.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.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + 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-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.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.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.28.3': + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11': + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@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-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + 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-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.28.0': + resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.4': + resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.3': + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.4': + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.0': + resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.0': + resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.4': + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.28.4': + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.0': + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.28.3': + resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + + '@dcloudio/types@3.4.21': + resolution: {integrity: sha512-rsv3XfAaD/dtuVboPeYh+vPcULnWyozGaGKHWyN0dYRm7L1uypFUM30qNYMj9iNmbAENuBjV177S1gNEBIvdDA==} + + '@dcloudio/uni-app-harmony@3.0.0-4070620250821001': + resolution: {integrity: sha512-HrnpvA/rfdY3Vi8/unxHP1BO83KzuCrfsvLQHf7twCSMWFDqCykOkrEhb8beTtQSDoZvJYsQPB6REDkgundp5Q==} + + '@dcloudio/uni-app-plus@3.0.0-4070620250821001': + resolution: {integrity: sha512-7ldq9OAGMuTp+K91uWfkQBuIQOOodlYbiRcvynmkpOse0JrOLJf+XuL5QmBR+ehy6TukJtDQjtRkpdjCl39acg==} + + '@dcloudio/uni-app-uts@3.0.0-4070620250821001': + resolution: {integrity: sha512-eakQjg3OMFIyh57CN+4+XaeR09FSCIbv2o1a1ieH+jW0VbOZDBpVFdD+9XtP2ZCRyq0JEuhZwFD1q1QHJuuQig==} + + '@dcloudio/uni-app-vite@3.0.0-4070620250821001': + resolution: {integrity: sha512-cqeQyhmrMO+nIRsTEKGN0Eh33RRL+INREZ7/9eFBEfr4FLzoo84acxg/W1FR5rYhdgPqfiJ4WyUofSQqUgwS7A==} + + '@dcloudio/uni-app-vue@3.0.0-4070620250821001': + resolution: {integrity: sha512-ORLSlsE0c6Lp3vLm3DCCRrGOvrST70Gacw3NYAtXvDIJ/89cAsAg+MoPHRosekbqXwb9g/TKsUeh6D6dV6S81g==} + + '@dcloudio/uni-app@3.0.0-4070620250821001': + resolution: {integrity: sha512-nsME16nXk0yHc2ag0/zE0kZ+mcJiuF5TJvbUUcNFGMEinAwskZSWHtmiDt0UrvorERuCxzZrbiMFPBYeAJQveg==} + peerDependencies: + '@dcloudio/types': ^3.4.14 + + '@dcloudio/uni-automator@3.0.0-4070620250821001': + resolution: {integrity: sha512-OILDnCodrfaWj/TnSYamFJ0NmCBjVdI+yf3cUoOK6yQv0kTqIyadOqpnOnrwliXqTMNsWoMPRppEqzeK4Q4xkg==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-4070620250821001': + resolution: {integrity: sha512-53U1nFOzknNa5qoIr1G0ihN8BOvb/X83E8gnRrOoQEPHj7p+OUvFJzqPdf+ChxxMa3JwrmCpVki3MAzA6gLUIQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-4070620250821001': + resolution: {integrity: sha512-Pg1lYEUxc+kgB1X/PClEUrpcpmFJ6NNt1Ss0t/10IhiDG1HjhkvT5sP624UKlWbnAAss7Jg58P1UJWkWdbeG3Q==} + + '@dcloudio/uni-components@3.0.0-4070620250821001': + resolution: {integrity: sha512-Jfs8cHCg73vadf1gCSCkaV2MJOwFQO3bZ4dx2/ojaJWh7AaMUFcD9+ox7YZ7TWsf9V1cKYKffXBMOLOad9h2VQ==} + + '@dcloudio/uni-console@3.0.0-4070620250821001': + resolution: {integrity: sha512-yV6o2AMyzmx4CUxWi8ClTfjmjgWpNqezDEFhH6tuWwbYPadv8Lhea4lRMBGgzMNvAr434K68+BXT+/CQkL/l1w==} + + '@dcloudio/uni-h5-vite@3.0.0-4070620250821001': + resolution: {integrity: sha512-wXZvedQRKXXMAk177NqKeEh4vgf29fy29LkgVFQXv8UMCi74FhBAa198zm1QCddvE7HCPj+zesbV9PuNID8IJg==} + + '@dcloudio/uni-h5-vue@3.0.0-4070620250821001': + resolution: {integrity: sha512-duoIL+6O62PWbxB/eeZ4AiJGjLUsUq89ql+zm9rB5ICH23xgCoyXTyuWxOeY722FIRL0XvmWy6kZjDzRDMhvlw==} + + '@dcloudio/uni-h5@3.0.0-4070620250821001': + resolution: {integrity: sha512-6cnkCKaW3CKgDhwIm2Duq8ivC3Ybn1gJFu9Hc0ybeAHomUNepauUO31b6RpA9BopOVhwUt905Eg4Ubvq/9Mbaw==} + + '@dcloudio/uni-i18n@3.0.0-4070620250821001': + resolution: {integrity: sha512-Fev7Yw6nPhuUbLpMoGu5EhJKzNyGzHp6mpJQA6qDrN/4oRZkUi7Yhr51Yj5GIVnWfzFtUc2dC9Qi3cb//XvSPQ==} + + '@dcloudio/uni-mp-alipay@3.0.0-4070620250821001': + resolution: {integrity: sha512-9jAxrFNQzwewYLqmXnlLdGoucd7KBWxIV+7Rqx63GAjZ9OfuczFlJr3t8TwdskNZoHClEPZv/O31eV94GQqZRA==} + + '@dcloudio/uni-mp-baidu@3.0.0-4070620250821001': + resolution: {integrity: sha512-R5fpkBoFskf0l8WXwvJB/mpy+U991a0edIarZ0ZYAT9B3o1YZtvcl0IDYA8p7KelZtqQwvgTQnc2UtagBKq4xw==} + + '@dcloudio/uni-mp-compiler@3.0.0-4070620250821001': + resolution: {integrity: sha512-DTfWLDihC+vWX0FLxnuPkRYzI7Asr3dHAemrzKd/lB6sj5t5bGfvzo77dbi1o9Icv9cnHkqgFX5CwtI99YcUwA==} + + '@dcloudio/uni-mp-harmony@3.0.0-4070620250821001': + resolution: {integrity: sha512-CBlSXXca6IpnFIAvISD4OIAubWgZjA4psGo89+gSTFh50ximI9kwtnKP3/rUqRkuqWLfS9A+wrBalGYkF+xBBA==} + + '@dcloudio/uni-mp-jd@3.0.0-4070620250821001': + resolution: {integrity: sha512-/l0teip1uXgXQIzTO8JjWZe2I+pEtCSUWem8fhl8mtokBKIL1qM5oU4aY6EHNM1PFPNWw9mZGJotLMG3VIVrbA==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-4070620250821001': + resolution: {integrity: sha512-fCxksZ1ABQVgPkWHrC6WxWp9CsP0nLG4pYnj6F+Rw1z95PeR87kTAbiH8RxqYlOzSQtOe6MyDIbF3dh+cvgFkg==} + + '@dcloudio/uni-mp-lark@3.0.0-4070620250821001': + resolution: {integrity: sha512-E5bU1LOpdgxjQXUcyt945aFrvYnZjrxjZ8Ab/5s0yHkR5hLb8WkvM0Cl+1CWlI9hDmUwX6n3XSBRI0wNYk3uNw==} + + '@dcloudio/uni-mp-qq@3.0.0-4070620250821001': + resolution: {integrity: sha512-RkF0qB5+vtGPyJproXt/rXADOKczdLycdv1gpP+b+Kf/QCjsloSwiMhmFUfips8dz5P3K/N/RqYC1OengAT9PA==} + + '@dcloudio/uni-mp-toutiao@3.0.0-4070620250821001': + resolution: {integrity: sha512-PxmrGdSQat2LnyWdpDPI4aG41ifmn3SzLl0g1HHY78stYivb2Iz4bizrhrSEFjV3YVkr+QEvpHOpunUxX0MOHQ==} + + '@dcloudio/uni-mp-vite@3.0.0-4070620250821001': + resolution: {integrity: sha512-RWl4wTsh895SOn9rrXMcGq3zjMjPn9fs7imIxlyu6XacyTI0lNzsX32cvfs1V+h238JTI0D7m6wWAKZpL1CWQA==} + + '@dcloudio/uni-mp-vue@3.0.0-4070620250821001': + resolution: {integrity: sha512-IAjgLFH00QLyNfrhTVw1VAyN9VwF88Tf/+b2JsebnyLr0swpLGCrkl7EO8Nesr6dxaOh6D0UaHmAKgfMuuMIQA==} + + '@dcloudio/uni-mp-weixin@3.0.0-4070620250821001': + resolution: {integrity: sha512-SjHKnNPYgpukuqNrz39OqdjxtlNd06664MG5ZBkJ112wdhq54FFKKKJM1HUx13q05Hg64OjNj8awsWGWCFs37g==} + + '@dcloudio/uni-mp-xhs@3.0.0-4070620250821001': + resolution: {integrity: sha512-ZNZS+tbVgBpARlndxGXQqrmwiptPyTqH/KWqrd0QLZT0PKjjCOR5drRnyZT2UC9Q6ZPPa3M9BdhtBW3U+abA4Q==} + + '@dcloudio/uni-nvue-styler@3.0.0-4070620250821001': + resolution: {integrity: sha512-TMnk4UqaH5WtnfHbXRN0MoLunKjpNN/PC3nMed2E+OuWiEKXEIZGeim7oMCniwWIRnTTyg1heOnDX0SnDEjW8w==} + + '@dcloudio/uni-push@3.0.0-4070620250821001': + resolution: {integrity: sha512-Gu19UQp0jVUZGkjnPqRMCNEk2TySjIrHRt7Re9Tk2/KLcwzGa86rR9bUKnZTU7VSd7jkRBZ7O3RLodWStEaTsg==} + + '@dcloudio/uni-quickapp-webview@3.0.0-4070620250821001': + resolution: {integrity: sha512-WlpPqLb8VJIa8bNtodk/ci/A+zeFHC4blc1Y6GIaldWnc+YdjW/IO8ndpVHPkSEJTB7Sm9/MUbLvoPzdVhc4Jg==} + + '@dcloudio/uni-shared@3.0.0-4070620250821001': + resolution: {integrity: sha512-iMxx6JuZ7dsGLKGrECd8nwXLit5aKD8ILvmt3ioxdxnYsKb2rwdB1mrjUtHRX6zsJLVV3Yai/FuYsfvp13QS0w==} + + '@dcloudio/uni-stacktracey@3.0.0-4070620250821001': + resolution: {integrity: sha512-bldVvfM9RyXqyjXLXPM2ytexiTY+20qR+3L92l43cY9kPMqnQrSr1M9TF2HrJB5xiqlXYC0FTWpJ3CgRPwBgJg==} + + '@dcloudio/uni-stat@3.0.0-4070620250821001': + resolution: {integrity: sha512-a7bsTAfAPLYsB9dvfdJL72NLbtAXpt3ivlPdTgAtq+jas/pio73AvPifGMtQtUCZXmbiMFSeLOrihQP6+A5cCw==} + + '@dcloudio/vite-plugin-uni@3.0.0-4070620250821001': + resolution: {integrity: sha512-7gxjhkUnfb/rbpnuUkFJcSWG7XPUf2y8NIZQCIabHEkkCp+bSf+fLHyxdPVqqHoQLHGecmnV6WKjhEPvmlerAg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^5.2.8 + + '@es-joy/jsdoccomment@0.50.2': + resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} + engines: {node: '>=18'} + + '@es-joy/jsdoccomment@0.58.0': + resolution: {integrity: sha512-smMc5pDht/UVsCD3hhw/a/e/p8m0RdRYiluXToVfd+d4yaQQh7nn9bACjkk6nXJvat7EWPAxuFkMEFfrxeGa3Q==} + engines: {node: '>=20.11.0'} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0': + resolution: {integrity: sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.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.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.4.0': + resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.40 || 9 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + 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.36.0': + resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@7.3.0': + resolution: {integrity: sha512-v9Cpl9IvzGmWMUwDAwSbf1b2GMwjQJiD0TSHegFrIu23mjqGQOvaCwnetzbG3/fjk8x7baKaIbSTBlpCktZRRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@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'} + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/core-base@9.6.2': + resolution: {integrity: sha512-ci0j2nbEL/pamvqgcCqyIVeQ3LS41F1IRqI5rCBNnpSp0FjNnH8bpha8R3OifkhqatzlP4wGOuN/UqfLYVDv7g==} + engines: {node: '>= 16'} + + '@intlify/devtools-if@9.1.9': + resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.1.9': + resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.6.2': + resolution: {integrity: sha512-kgZQL9zeJDeEB5vvD93Y++HvFUELnT48PjnpfCcF3EJaLLVs9he8IzODiNK42Z40lWbFyja0SXJZjsalybQygA==} + engines: {node: '>= 16'} + + '@intlify/message-resolver@9.1.9': + resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==} + engines: {node: '>= 10'} + + '@intlify/runtime@9.1.9': + resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==} + engines: {node: '>= 10'} + + '@intlify/shared@9.1.9': + resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==} + engines: {node: '>= 10'} + + '@intlify/shared@9.6.2': + resolution: {integrity: sha512-9KBcXmJNxElp7QMnU8V0/tScTOitDqyFi4HceEZqJyyDkMi8K5DBPMTIuXIAMmtMlXpe/nj5pke7tRw97VeQRA==} + engines: {node: '>= 16'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@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/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mini-types/alipay@3.0.14': + resolution: {integrity: sha512-FakzSsKvybtWlEIVTIRlr89kuQFn+XY86Ho9VUFFaKLplhW6Wx8FUxTDE7IzV7B9rT8DP/Icy637vUHlXPsw1g==} + + '@mini-types/global@3.0.14': + resolution: {integrity: sha512-St2ucFRfKRskposOqV/9iNJTKn1MbyqDypQiy/0DaVJjEm2MFi82RJjX9sBz1uWhQIqzu741PgTjGSy7L/Qj9g==} + + '@mini-types/my@3.0.14': + resolution: {integrity: sha512-aEgmM+rbEvEzTvqltCFRAg/h6KKs14M1y+FrOkz+hn2EyNpOVPesUzTjbRhSiFFsE3WdfBh54lHNYBahAmHq7w==} + + '@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'} + + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + 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} + + '@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.2': + resolution: {integrity: sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.2': + resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.2': + resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.2': + resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.2': + resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.2': + resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': + resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.52.2': + resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.52.2': + resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.52.2': + resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.52.2': + resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-gnu@4.52.2': + resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.52.2': + resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.52.2': + resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.52.2': + resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.52.2': + resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.52.2': + resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openharmony-arm64@4.52.2': + resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.2': + resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.2': + resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.2': + resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.2': + resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} + cpu: [x64] + os: [win32] + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@stylistic/eslint-plugin@5.4.0': + resolution: {integrity: sha512-UG8hdElzuBDzIbjG1QDwnYH0MQ73YLXDFHgZzB4Zh/YJfnw8XNsloVtytqzx0I2Qky9THSdpTmi8Vjn/pf/Lew==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@typescript-eslint/eslint-plugin@8.44.1': + resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.44.1 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.44.1': + resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + 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.44.1': + resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.44.1': + resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.44.1': + resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.44.1': + resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==} + 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.44.1': + resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.44.1': + resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.44.1': + resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + 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.44.1': + resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uni-helper/eslint-config@0.5.0': + resolution: {integrity: sha512-jU/VT078aZQcwjC4ceuWWR5yh4mJ0PzW5MSrOgLi1MSbBKQe5YTAlvphXAUMYpSHqg7iwCmaWNamy3tv4ZZicw==} + peerDependencies: + '@antfu/eslint-config': ^5.0.0 + eslint: ^9.10.0 + + '@uni-helper/plugin-uni@0.1.0': + resolution: {integrity: sha512-hBPUjoQc/SgqKsyGUl0fJiL+dDwLPhf2es1PJdsXcxHyOujoBP2+D4z5ie+Q72wVwKtTsQSP3tSjww/63JRmbA==} + peerDependencies: + '@dcloudio/vite-plugin-uni': '*' + + '@uni-helper/uni-app-types@1.0.0-alpha.6': + resolution: {integrity: sha512-t9AKDYBmDaz4IW0fgtBt25ubEzf7kyUeMlHaBaG5nyNGd6pVuDpYkABhsnNPDiZcaHAoN6SbX1SQQx5axDOWbA==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-cloud-types@1.0.0-alpha.6': + resolution: {integrity: sha512-xnLiRcqf14NXcmkcekF3BbN0O157WROpzHfyKVAeLhcXRhO0HIRUMy0+h9KnCDZ+LFteeIOZXJWC5ere3yhIiQ==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-types@1.0.0-alpha.6': + resolution: {integrity: sha512-lGSm3RUOQThyYIUuJI46b8ug3nGZMyRfMQ/ktOGNxOXBukGA1TF1TN2m4MjKUklIQ+kiIuIgZJoU3S7oIK5emw==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6 + '@uni-helper/uni-cloud-types': 1.0.0-alpha.6 + '@uni-helper/uni-ui-types': 1.0.0-alpha.6 + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-ui-types@1.0.0-alpha.6': + resolution: {integrity: sha512-2KuAup2M7rPVzpLaXhhnxCD/Cs5VQYiqzC9XNI/VZuA88+ApPmHzkwyS0THSHnz1VbDIGX/Ju69nj+mApfYKDw==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6 + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/vite-plugin-uni-components@0.2.3': + resolution: {integrity: sha512-in7jRYQnPkLg6W13dzz8mzHDuZC+OFc3qb8MrnmDQgniIxHfxJw8vaibL1au6gvq7ij3h6EHvhHaRytIJ2PkYw==} + + '@vitejs/plugin-legacy@5.3.2': + resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.1.0': + resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.3.12': + resolution: {integrity: sha512-cSEyUYGj8j8SLqKrzN7BlfsJ3wG67eRT25819PXuyoSBogLXiyagdKx4MHWHV1zv+EEuyMXsEKkBEKzXpxyBrg==} + peerDependencies: + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@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.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-core@3.5.21': + resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-dom@3.5.21': + resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-sfc@3.5.21': + resolution: {integrity: sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/compiler-ssr@3.5.21': + resolution: {integrity: sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/consolidate@1.0.0': + resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} + engines: {node: '>= 0.12.0'} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/language-core@3.0.8': + resolution: {integrity: sha512-eYs6PF7bxoPYvek9qxceo1BCwFbJZYqJll+WaYC8o8ec60exqj+n+QRGGiJHSeUfYp0hDxARbMdxMq/fbPgU5g==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.4.21': + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + + '@vue/runtime-core@3.4.21': + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + + '@vue/runtime-dom@3.4.21': + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + + '@vue/server-renderer@3.4.21': + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/shared@3.5.21': + resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} + + '@vue/tsconfig@0.8.1': + resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + + '@wot-ui/ui@2.2.0': + resolution: {integrity: sha512-/eC3sejQ7N1OCnLOHtG8K8nMXb16cf/7SwkLnDlpULlhbUCuW1fw3Qm4fvAbz0cNLSGlB0qJ/8axklww2C/BmQ==} + engines: {HBuilderX: ^3.8.7} + peerDependencies: + vue: '>=3.2.47' + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + alien-signals@2.0.7: + resolution: {integrity: sha512-wE7y3jmYeb0+h6mr5BOovuqhFv22O/MV9j5p0ndJsa7z1zJNPGQ4ph5pQk/kTTCWRC3xsA4SmtwmkzQO+7NCNg==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansis@4.1.0: + resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + engines: {node: '>=14'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-polyfill-corejs2@0.4.14: + resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.5: + resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + baseline-browser-mapping@2.8.6: + resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} + hasBin: true + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + 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'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cac@6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} + engines: {node: '>=8'} + + 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@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001743: + resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + 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==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + 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==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.45.1: + resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} + + core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + + css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + + css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + + css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + + css-list-helpers@2.0.0: + resolution: {integrity: sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==} + + css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.223: + resolution: {integrity: sha512-qKm55ic6nbEmagFlTFczML33rF90aU+WtrJ9MdTCThrcvDNdUHN4p6QfVN78U06ZmguqXIyMPyYhw2TrbDUwPQ==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + 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'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + 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.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + 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'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@2.1.4: + resolution: {integrity: sha512-bEnmU5gqzS+4O+id9vrbP43vByjF+8KOs+QuuV4OlqAuXmnRW2zfI/Rza1fQvdihQ5h4DUo0NqFAiViD4mSrzQ==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' + + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@3.3.1: + resolution: {integrity: sha512-fBVTXQ2y48TVLT0+4A6PFINp7GcdIailHAXbvPBixE7x+YpYnNQhFZxTdvnb+aWk+COgNebQKen/7m4dmgyWAw==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import-lite@0.3.0: + resolution: {integrity: sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=4.5' + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-jsdoc@59.1.0: + resolution: {integrity: sha512-sg9mzjjzfnMynyY4W8FDiQv3i8eFcKVEHDt4Xh7MLskP3QkMt2z6p7FuzSw7jJSKFues6RaK2GWvmkB1FLPxXg==} + engines: {node: '>=20.11.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.20.1: + resolution: {integrity: sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.23.1: + resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.15.0: + resolution: {integrity: sha512-pC7PgoXyDnEXe14xvRUhBII8A3zRgggKqJFx2a82fjrItDs1BSI7zdZnQtM2yQvcyod6/ujmzb7ejKPx8lZTnw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-plugin-pnpm@1.1.2: + resolution: {integrity: sha512-WHH09rEiRZ3fjQ8y9LMarCp3uWOTGkbTyC8WCGqyjMVFUwSFjzIeays8ysvqyz7G5vyjr/72Mzq93Kgtp52BOQ==} + peerDependencies: + eslint: ^9.0.0 + + eslint-plugin-regexp@2.10.0: + resolution: {integrity: sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@61.0.2: + resolution: {integrity: sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==} + engines: {node: ^20.10.0 || >=21.0.0} + peerDependencies: + eslint: '>=9.29.0' + + eslint-plugin-unused-imports@4.2.0: + resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@10.5.0: + resolution: {integrity: sha512-7BZHsG3kC2vei8F2W8hnfDi9RK+cv5eKPMvzBdrl8Vuc0hR5odGQRli8VVzUkrmUHkxFEm4Iio1r5HOKslO0Aw==} + 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-plugin-yml@1.18.0: + resolution: {integrity: sha512-9NtbhHRN2NJa/s3uHchO3qVVZw0vyOIvWlXWGaKCr/6l3Go62wsvJK5byiI6ZoYztDsow4GnS69BZD3GnqH3hA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' + + eslint-scope@8.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.36.0: + resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} + 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} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + 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-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + 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@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + 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 + + form-data@3.0.4: + resolution: {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + 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-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + 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@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + 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'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + 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'} + + immutable@5.1.9: + resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + 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-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + isbinaryfile@5.0.6: + resolution: {integrity: sha512-I+NmIfBHUl+r2wcDd6JwE9yWje/PIVY/R5/CmV8dXLZd5K+L9X2klAOwfAHNnondLXkbHyTAleQAWonpTJBTtw==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.0.4: + resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} + engines: {node: '>=12.0.0'} + + jsdoc-type-pratt-parser@5.4.0: + resolution: {integrity: sha512-F9GQ+F1ZU6qvSrZV8fNFpjDNf614YzR2eF6S0+XbDjAcUI28FSoXnYZFjQmb1kFx3rrJb5PnxUH3/Yti6fcM+g==} + engines: {node: '>=12.0.0'} + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-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-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-eslint-parser@2.4.1: + resolution: {integrity: sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + licia@1.48.0: + resolution: {integrity: sha512-bBWiT5CSdEtwuAHiYTJ74yItCjIFdHi4xiFk6BRDfKa+sdCpkUHp69YKb5udNOJlHDzFjNjcMgNZ/+wQIHrB8A==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-bmfont@1.4.2: + resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + localstorage-polyfill@1.0.1: + resolution: {integrity: sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked@18.0.7: + resolution: {integrity: sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA==} + engines: {node: '>= 20'} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + 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'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + + 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==} + + miniprogram-api-typings@4.1.0: + resolution: {integrity: sha512-4RBsz27nBKyRkVGoNkRaPx24/KeJBw3zaaIlXDR8s/WBh2PbcUAc+q7wLLbp7Qsmb3bLzzUu7tqAti+B06kmjg==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + module-alias@2.2.3: + resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} + + mp-html@2.5.2: + resolution: {integrity: sha512-45e8c32Qgux4YU4iC3qCSFsOh3y+RwPwZ+iz/vvLkDgSGWk+1zsL4WUzWWQc9w3AsAfkaD/QR0oIufIDngBmXA==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + + object-deep-merge@1.0.5: + resolution: {integrity: sha512-3DioFgOzetbxbeUq8pB2NunXo8V0n4EvqsWM/cJoI6IA9zghd7cl/2pBOuWRf4dlvA+fcg5ugFMZaN2/RuoaGg==} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.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-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + phin@3.7.1: + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} + engines: {node: '>= 8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + 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'} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@2.2.4: + resolution: {integrity: sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + pnpm-workspace-yaml@1.1.2: + resolution: {integrity: sha512-XgS7j21a+I0dSmUzDUtKp4TAqPfLwJ0kAg0uQ2dveJxFrY14/9ukaD+Mt+4jt67RH4wgRsvNsjNdKbb/7NrMwQ==} + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + 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-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'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode-reader@1.0.4: + resolution: {integrity: sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==} + + qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + 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==} + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.52.2: + resolution: {integrity: sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.102.0: + resolution: {integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==} + engines: {node: '>=20.19.0'} + hasBin: true + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + 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@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@4.1.0: + resolution: {integrity: sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + 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'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.2.0: + resolution: {integrity: sha512-5zknd7Dss75pMSED270A1RQS3KloqRJA9XbXLe0eCxyw7xXFb3rd+9B0UQ/0E+LQT6lnrLviEolYORlRWamn4w==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unimport@4.1.1: + resolution: {integrity: sha512-j9+fijH6aDd05yv1fXlyt7HSxtOWtGtrZeYTVBsSUg57Iuf+Ps2itIZjeyu7bEQ4k0WOgYhHrdW8m/pJgOpl5g==} + engines: {node: '>=18.12.0'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-auto-import@19.1.0: + resolution: {integrity: sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-utils@0.2.5: + resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} + engines: {node: '>=18.12.0'} + + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + engines: {node: '>=18.12.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@5.2.8: + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + 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-i18n@9.6.2: + resolution: {integrity: sha512-J43grTQjPR8LCUxvx3mkoM+11xhTnej1Al4lvJCEeKmQqf8eqbuYPQb54HXnEg/UzZyaxLBAwPAUTbrZ8V7hcg==} + engines: {node: '>= 16'} + deprecated: v9 and v10 no longer supported. please migrate to v11. about maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html + peerDependencies: + vue: ^3.0.0 + + vue-router@4.5.1: + resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@3.0.8: + resolution: {integrity: sha512-H9yg/m6ywykmWS+pIAEs65v2FrVm5uOA0a0dHkX6Sx8dNg1a1m4iudt/6eGa9fAenmNHGlLFN9XpWQb8i5sU1w==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.4.21: + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest@1.8.0: + resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} + engines: {node: '>=0.4.0'} + + xregexp@3.1.0: + resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-eslint-parser@1.3.0: + resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@antfu/eslint-config@5.4.1(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 0.11.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.36.0(supports-color@8.1.1)) + '@eslint/markdown': 7.3.0(supports-color@8.1.1) + '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(supports-color@8.1.1)) + '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@vitest/eslint-plugin': 1.3.12(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + ansis: 4.1.0 + cac: 6.7.14 + eslint: 9.36.0(supports-color@8.1.1) + eslint-config-flat-gitignore: 2.1.0(eslint@9.36.0(supports-color@8.1.1)) + eslint-flat-config-utils: 2.1.4 + eslint-merge-processors: 2.0.0(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-antfu: 3.1.1(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-command: 3.3.1(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-import-lite: 0.3.0(eslint@9.36.0(supports-color@8.1.1))(typescript@5.9.2) + eslint-plugin-jsdoc: 59.1.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-jsonc: 2.20.1(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-n: 17.23.1(eslint@9.36.0(supports-color@8.1.1))(typescript@5.9.2) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.15.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + eslint-plugin-pnpm: 1.1.2(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-regexp: 2.10.0(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-toml: 0.12.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-unicorn: 61.0.2(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1)) + eslint-plugin-vue: 10.5.0(@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(supports-color@8.1.1)))(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(vue-eslint-parser@10.2.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)) + eslint-plugin-yml: 1.18.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1)) + globals: 16.4.0 + jsonc-eslint-parser: 2.4.1 + local-pkg: 1.1.2 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 10.2.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - '@eslint/json' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4(supports-color@8.1.1)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@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.4 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1(supports-color@8.1.1) + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.3(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.27.1(supports-color@8.1.1)': + dependencies: + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1(supports-color@8.1.1)': + dependencies: + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-imports': 7.27.1(supports-color@8.1.1) + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.4 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3(supports-color@8.1.1) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-member-expression-to-functions': 7.27.1(supports-color@8.1.1) + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1(supports-color@8.1.1)': + dependencies: + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.3(supports-color@8.1.1)': + dependencies: + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4(supports-color@8.1.1)) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-imports': 7.27.1(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4(supports-color@8.1.1)) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + core-js-compat: 3.45.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.4 + esutils: 2.0.3 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4(supports-color@8.1.1)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@dcloudio/types@3.4.21': {} + + '@dcloudio/uni-app-harmony@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-app-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + debug: 4.4.3(supports-color@8.1.1) + fs-extra: 10.1.0 + licia: 1.48.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-plus@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-app-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-app-vue': 3.0.0-4070620250821001 + debug: 4.4.3(supports-color@8.1.1) + fs-extra: 10.1.0 + licia: 1.48.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-console': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-nvue-styler': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/consolidate': 1.0.0 + '@vue/shared': 3.4.21 + debug: 4.4.3(supports-color@8.1.1) + es-module-lexer: 1.7.0 + estree-walker: 2.0.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + magic-string: 0.30.19 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unimport: 4.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-nvue-styler': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + debug: 4.4.3(supports-color@8.1.1) + fs-extra: 10.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-4070620250821001': {} + + '@dcloudio/uni-app@3.0.0-4070620250821001(@dcloudio/types@3.4.21)(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/types': 3.4.21 + '@dcloudio/uni-cloud': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-components': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-console': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-push': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@dcloudio/uni-stat': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-4070620250821001(jest-environment-node@27.5.1)(jest@27.0.4(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.4.3(supports-color@8.1.1) + default-gateway: 6.0.3 + fs-extra: 10.1.0 + jest: 27.0.4(supports-color@8.1.1) + jest-environment-node: 27.5.1 + jsonc-parser: 3.3.1 + licia: 1.48.0 + merge: 2.1.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.9.2)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.16 + autoprefixer: 10.4.21(postcss@8.5.6) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.3(supports-color@8.1.1) + entities: 4.5.0 + es-module-lexer: 1.7.0 + esbuild: 0.20.2 + estree-walker: 2.0.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + isbinaryfile: 5.0.6 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.19 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.5.6) + postcss-load-config: 3.1.4(postcss@8.5.6) + postcss-modules: 4.3.1(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + source-map-js: 1.2.1 + tapable: 2.2.3 + unimport: 4.1.1 + unplugin-auto-import: 19.1.0 + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + fast-glob: 3.3.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-h5': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-console@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.9.2)) + '@vue/shared': 3.4.21 + debug: 4.4.3(supports-color@8.1.1) + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.2.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-4070620250821001(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.9.2)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-h5-vue': 3.0.0-4070620250821001(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.9.2)) + '@vue/shared': 3.4.21 + debug: 4.4.3(supports-color@8.1.1) + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.2 + safe-area-insets: 1.4.1 + vue-router: 4.5.1(vue@3.4.21(typescript@5.9.2)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-4070620250821001': {} + + '@dcloudio/uni-mp-alipay@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-baidu@3.0.0-4070620250821001(@dcloudio/types@3.4.21)(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-app': 3.0.0-4070620250821001(@dcloudio/types@3.4.21)(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-mp-weixin': 3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + jimp: 0.10.3(debug@4.4.3(supports-color@8.1.1)) + licia: 1.48.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - '@dcloudio/types' + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-harmony@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-quickapp-webview': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-mp-weixin': 3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-lark@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-qq@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-toutiao@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-i18n': 3.0.0-4070620250821001 + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-4070620250821001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + + '@dcloudio/uni-mp-weixin@3.0.0-4070620250821001(debug@4.4.3(supports-color@8.1.1))(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + jimp: 0.10.3(debug@4.4.3(supports-color@8.1.1)) + licia: 1.48.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-xhs@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-4070620250821001': + dependencies: + parse-css-font: 4.0.0 + postcss: 8.5.6 + + '@dcloudio/uni-push@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4070620250821001 + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-4070620250821001': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-stacktracey@3.0.0-4070620250821001': {} + + '@dcloudio/uni-stat@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@dcloudio/uni-cli-shared': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vue@3.4.21(typescript@5.9.2)) + '@dcloudio/uni-shared': 3.0.0-4070620250821001 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@vitejs/plugin-legacy': 5.3.2(supports-color@8.1.1)(terser@5.44.0)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0)) + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@vitejs/plugin-vue-jsx': 3.1.0(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + cac: 6.7.9 + debug: 4.4.3(supports-color@8.1.1) + estree-walker: 2.0.2 + express: 4.21.2(supports-color@8.1.1) + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.19 + picocolors: 1.1.1 + terser: 5.44.0 + unplugin-auto-import: 19.1.0 + vite: 5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@es-joy/jsdoccomment@0.50.2': + dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.44.1 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.58.0': + dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.44.1 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 5.4.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.36.0(supports-color@8.1.1))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.36.0(supports-color@8.1.1) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(supports-color@8.1.1))': + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.4.0(eslint@9.36.0(supports-color@8.1.1))': + dependencies: + '@eslint/core': 0.16.0 + optionalDependencies: + eslint: 9.36.0(supports-color@8.1.1) + + '@eslint/config-array@0.21.0(supports-color@8.1.1)': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.3.1': {} + + '@eslint/core@0.15.2': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.16.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1(supports-color@8.1.1)': + dependencies: + ajv: 6.12.6 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.36.0': {} + + '@eslint/markdown@7.3.0(supports-color@8.1.1)': + dependencies: + '@eslint/core': 0.15.2 + '@eslint/plugin-kit': 0.3.5 + github-slugger: 2.0.0 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-frontmatter: 2.0.1(supports-color@8.1.1) + mdast-util-gfm: 3.1.0(supports-color@8.1.1) + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.5': + dependencies: + '@eslint/core': 0.15.2 + levn: 0.4.1 + + '@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': {} + + '@intlify/core-base@9.1.9': + dependencies: + '@intlify/devtools-if': 9.1.9 + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + + '@intlify/core-base@9.6.2': + dependencies: + '@intlify/message-compiler': 9.6.2 + '@intlify/shared': 9.6.2 + + '@intlify/devtools-if@9.1.9': + dependencies: + '@intlify/shared': 9.1.9 + + '@intlify/message-compiler@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + source-map: 0.6.1 + + '@intlify/message-compiler@9.6.2': + dependencies: + '@intlify/shared': 9.6.2 + source-map-js: 1.2.1 + + '@intlify/message-resolver@9.1.9': {} + + '@intlify/runtime@9.1.9': + dependencies: + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + + '@intlify/shared@9.1.9': {} + + '@intlify/shared@9.6.2': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/core@27.5.1(supports-color@8.1.1)': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1(supports-color@8.1.1) + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(supports-color@8.1.1) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1(supports-color@8.1.1) + jest-runner: 27.5.1(supports-color@8.1.1) + jest-runtime: 27.5.1(supports-color@8.1.1) + jest-snapshot: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 24.5.2 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1(supports-color@8.1.1)': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1(supports-color@8.1.1) + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1(supports-color@8.1.1) + istanbul-reports: 3.2.0 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@27.5.1(supports-color@8.1.1)': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1(supports-color@8.1.1)': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.5.2 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.45.1 + + '@jimp/core@0.10.3(debug@4.4.3(supports-color@8.1.1))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.45.1 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.2(debug@4.4.3(supports-color@8.1.1)) + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + transitivePeerDependencies: + - debug + + '@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/core': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + core-js: 3.45.1 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(debug@4.4.3(supports-color@8.1.1))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + load-bmfont: 1.4.2(debug@4.4.3(supports-color@8.1.1)) + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(debug@4.4.3(supports-color@8.1.1))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))) + '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))) + '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))) + core-js: 3.45.1 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/utils': 0.10.3 + core-js: 3.45.1 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + core-js: 3.45.1 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))': + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/gif': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/png': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + core-js: 3.45.1 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.28.4 + core-js: 3.45.1 + regenerator-runtime: 0.13.11 + + '@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/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@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 + + '@mini-types/alipay@3.0.14': + dependencies: + '@mini-types/global': 3.0.14 + '@mini-types/my': 3.0.14 + + '@mini-types/global@3.0.14': {} + + '@mini-types/my@3.0.14': {} + + '@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 + + '@parcel/watcher-android-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + + '@parcel/watcher-win32-x64@2.6.0': + optional: true + + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.5 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + optional: true + + '@pkgr/core@0.2.9': {} + + '@rollup/pluginutils@5.3.0(rollup@4.52.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.2 + + '@rollup/rollup-android-arm-eabi@4.52.2': + optional: true + + '@rollup/rollup-android-arm64@4.52.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.2': + optional: true + + '@rollup/rollup-darwin-x64@4.52.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.2': + optional: true + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(supports-color@8.1.1))': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@typescript-eslint/types': 8.44.1 + eslint: 9.36.0(supports-color@8.1.1) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.5 + + '@tootallnate/once@1.1.2': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@1.0.8': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 24.5.2 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@24.5.2': + dependencies: + undici-types: 7.12.0 + + '@types/prettier@2.7.3': {} + + '@types/stack-utils@2.0.3': {} + + '@types/unist@3.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.1 + eslint: 9.36.0(supports-color@8.1.1) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.36.0(supports-color@8.1.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.44.1(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + + '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + + '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.36.0(supports-color@8.1.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.44.1': {} + + '@typescript-eslint/typescript-estree@8.44.1(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/project-service': 8.44.1(supports-color@8.1.1)(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3(supports-color@8.1.1) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(supports-color@8.1.1)(typescript@5.9.2) + eslint: 9.36.0(supports-color@8.1.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + eslint-visitor-keys: 4.2.1 + + '@uni-helper/eslint-config@0.5.0(@antfu/eslint-config@5.4.1(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@antfu/eslint-config': 5.4.1(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + '@eslint/eslintrc': 3.3.1(supports-color@8.1.1) + eslint: 9.36.0(supports-color@8.1.1) + eslint-flat-config-utils: 2.1.4 + local-pkg: 1.1.2 + transitivePeerDependencies: + - supports-color + + '@uni-helper/plugin-uni@0.1.0(@dcloudio/vite-plugin-uni@3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)))': + dependencies: + '@dcloudio/vite-plugin-uni': 3.0.0-4070620250821001(postcss@8.5.6)(rollup@4.52.2)(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2)) + + '@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2))': + dependencies: + typescript: 5.9.2 + vue: 3.4.21(typescript@5.9.2) + + '@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2))': + dependencies: + typescript: 5.9.2 + vue: 3.4.21(typescript@5.9.2) + + '@uni-helper/uni-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + '@uni-helper/uni-cloud-types': 1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + '@uni-helper/uni-ui-types': 1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + typescript: 5.9.2 + vue: 3.4.21(typescript@5.9.2) + + '@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)))(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)) + typescript: 5.9.2 + vue: 3.4.21(typescript@5.9.2) + + '@uni-helper/vite-plugin-uni-components@0.2.3(rollup@4.52.2)(supports-color@8.1.1)': + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + chokidar: 3.6.0 + debug: 4.4.3(supports-color@8.1.1) + fast-glob: 3.3.3 + local-pkg: 0.4.3 + magic-string: 0.30.19 + minimatch: 8.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - rollup + - supports-color + + '@vitejs/plugin-legacy@5.3.2(supports-color@8.1.1)(terser@5.44.0)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + browserslist: 4.26.2 + browserslist-to-esbuild: 2.1.1(browserslist@4.26.2) + core-js: 3.45.1 + magic-string: 0.30.19 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.44.0 + vite: 5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(supports-color@8.1.1)(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + vite: 5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0) + vue: 3.4.21(typescript@5.9.2) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.1.0(vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0))(vue@3.4.21(typescript@5.9.2))': + dependencies: + vite: 5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0) + vue: 3.4.21(typescript@5.9.2) + + '@vitest/eslint-plugin@1.3.12(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + eslint: 9.36.0(supports-color@8.1.1) + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@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.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/helper-module-imports': 7.27.1(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + '@vue/shared': 3.5.21 + optionalDependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-module-imports': 7.27.1(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.28.4 + '@vue/compiler-sfc': 3.5.21 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.21': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-dom@3.5.21': + dependencies: + '@vue/compiler-core': 3.5.21 + '@vue/shared': 3.5.21 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.21': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.21 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.4.21': + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-ssr@3.5.21': + dependencies: + '@vue/compiler-dom': 3.5.21 + '@vue/shared': 3.5.21 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/consolidate@1.0.0': {} + + '@vue/devtools-api@6.6.4': {} + + '@vue/language-core@3.0.8(typescript@5.9.2)': + dependencies: + '@volar/language-core': 2.4.23 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.21 + alien-signals: 2.0.7 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.3 + optionalDependencies: + typescript: 5.9.2 + + '@vue/reactivity@3.4.21': + dependencies: + '@vue/shared': 3.4.21 + + '@vue/runtime-core@3.4.21': + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/runtime-dom@3.4.21': + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.21(vue@3.4.21(typescript@5.9.2))': + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.9.2) + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.5.21': {} + + '@vue/tsconfig@0.8.1(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2))': + optionalDependencies: + typescript: 5.9.2 + vue: 3.4.21(typescript@5.9.2) + + '@wot-ui/ui@2.2.0(vue@3.4.21(typescript@5.9.2))': + dependencies: + vue: 3.4.21(typescript@5.9.2) + + abab@2.0.6: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.15.0: {} + + address@1.2.2: {} + + adm-zip@0.5.16: {} + + agent-base@6.0.2(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + alien-signals@2.0.7: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansis@4.1.0: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + are-docs-informative@0.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.26.2 + caniuse-lite: 1.0.30001743 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + babel-jest@27.5.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) + babel-preset-jest: 27.5.1(@babel/core@7.28.4(supports-color@8.1.1)) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1(supports-color@8.1.1): + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1(supports-color@8.1.1) + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + core-js-compat: 3.45.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4(supports-color@8.1.1)) + + babel-preset-jest@27.5.1(@babel/core@7.28.4(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4(supports-color@8.1.1)) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + baseline-browser-mapping@2.8.6: {} + + binary-extensions@2.3.0: {} + + bmp-js@0.1.0: {} + + body-parser@1.20.3(supports-color@8.1.1): + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9(supports-color@8.1.1) + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + 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 + + browser-process-hrtime@1.0.0: {} + + browserslist-to-esbuild@2.1.1(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + meow: 13.2.0 + + browserslist@4.26.2: + dependencies: + baseline-browser-mapping: 2.8.6 + caniuse-lite: 1.0.30001743 + electron-to-chromium: 1.5.223 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-equal@0.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@5.0.0: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + cac@6.7.9: {} + + 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@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001743: {} + + ccount@2.0.1: {} + + centra@2.7.0(debug@4.4.3(supports-color@8.1.1)): + dependencies: + follow-redirects: 1.15.11(debug@4.4.3(supports-color@8.1.1)) + transitivePeerDependencies: + - debug + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-case@5.4.4: {} + + char-regex@1.0.2: {} + + character-entities@2.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + ci-info@3.9.0: {} + + ci-info@4.3.0: {} + + cjs-module-lexer@1.4.3: {} + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + comment-parser@1.4.1: {} + + compare-versions@3.6.0: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + core-js-compat@3.45.1: + dependencies: + browserslist: 4.26.2 + + core-js@3.45.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-font-size-keywords@1.0.0: {} + + css-font-stretch-keywords@1.0.1: {} + + css-font-style-keywords@1.0.1: {} + + css-font-weight-keywords@1.0.0: {} + + css-list-helpers@2.0.0: {} + + css-system-font-keywords@1.0.0: {} + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.3: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + de-indent@1.0.2: {} + + debug@2.6.9(supports-color@8.1.1): + dependencies: + ms: 2.0.0 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decimal.js@10.6.0: {} + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-libc@2.1.2: + optional: true + + detect-newline@3.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff-sequences@27.5.1: {} + + dom-walk@0.1.2: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.223: {} + + emittery@0.8.1: {} + + emoji-regex@8.0.0: {} + + empathic@2.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + + entities@4.5.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-compat-utils@0.5.1(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + semver: 7.7.2 + + eslint-compat-utils@0.6.5(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + semver: 7.7.2 + + eslint-config-flat-gitignore@2.1.0(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@eslint/compat': 1.4.0(eslint@9.36.0(supports-color@8.1.1)) + eslint: 9.36.0(supports-color@8.1.1) + + eslint-flat-config-utils@2.1.4: + dependencies: + pathe: 2.0.3 + + eslint-json-compat-utils@0.2.1(eslint@9.36.0(supports-color@8.1.1))(jsonc-eslint-parser@2.4.1): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.1 + + eslint-merge-processors@2.0.0(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + + eslint-plugin-antfu@3.1.1(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + + eslint-plugin-command@3.3.1(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@es-joy/jsdoccomment': 0.50.2 + eslint: 9.36.0(supports-color@8.1.1) + + eslint-plugin-es-x@7.8.0(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.36.0(supports-color@8.1.1) + eslint-compat-utils: 0.5.1(eslint@9.36.0(supports-color@8.1.1)) + + eslint-plugin-import-lite@0.3.0(eslint@9.36.0(supports-color@8.1.1))(typescript@5.9.2): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@typescript-eslint/types': 8.44.1 + eslint: 9.36.0(supports-color@8.1.1) + optionalDependencies: + typescript: 5.9.2 + + eslint-plugin-jsdoc@59.1.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + '@es-joy/jsdoccomment': 0.58.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint: 9.36.0(supports-color@8.1.1) + espree: 10.4.0 + esquery: 1.6.0 + object-deep-merge: 1.0.5 + parse-imports-exports: 0.2.4 + semver: 7.7.2 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.20.1(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + eslint: 9.36.0(supports-color@8.1.1) + eslint-compat-utils: 0.6.5(eslint@9.36.0(supports-color@8.1.1)) + eslint-json-compat-utils: 0.2.1(eslint@9.36.0(supports-color@8.1.1))(jsonc-eslint-parser@2.4.1) + espree: 10.4.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.1 + natural-compare: 1.4.0 + synckit: 0.11.11 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.23.1(eslint@9.36.0(supports-color@8.1.1))(typescript@5.9.2): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + enhanced-resolve: 5.18.3 + eslint: 9.36.0(supports-color@8.1.1) + eslint-plugin-es-x: 7.8.0(eslint@9.36.0(supports-color@8.1.1)) + get-tsconfig: 4.10.1 + globals: 15.15.0 + globrex: 0.1.2 + ignore: 5.3.2 + semver: 7.7.2 + ts-declaration-location: 1.0.7(typescript@5.9.2) + transitivePeerDependencies: + - typescript + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.15.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2): + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + eslint: 9.36.0(supports-color@8.1.1) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@1.1.2(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + empathic: 2.0.0 + eslint: 9.36.0(supports-color@8.1.1) + jsonc-eslint-parser: 2.4.1 + pathe: 2.0.3 + pnpm-workspace-yaml: 1.1.2 + tinyglobby: 0.2.15 + yaml-eslint-parser: 1.3.0 + + eslint-plugin-regexp@2.10.0(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.36.0(supports-color@8.1.1) + jsdoc-type-pratt-parser: 4.8.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.36.0(supports-color@8.1.1) + eslint-compat-utils: 0.6.5(eslint@9.36.0(supports-color@8.1.1)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@61.0.2(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@eslint/plugin-kit': 0.3.5 + change-case: 5.4.4 + ci-info: 4.3.0 + clean-regexp: 1.0.0 + core-js-compat: 3.45.1 + eslint: 9.36.0(supports-color@8.1.1) + esquery: 1.6.0 + find-up-simple: 1.0.1 + globals: 16.4.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.2 + strip-indent: 4.1.0 + + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + eslint: 9.36.0(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + + eslint-plugin-vue@10.5.0(@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(supports-color@8.1.1)))(@typescript-eslint/parser@8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint@9.36.0(supports-color@8.1.1))(vue-eslint-parser@10.2.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + eslint: 9.36.0(supports-color@8.1.1) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.2 + vue-eslint-parser: 10.2.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1) + xml-name-validator: 4.0.0 + optionalDependencies: + '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(supports-color@8.1.1)) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) + + eslint-plugin-yml@1.18.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint: 9.36.0(supports-color@8.1.1) + eslint-compat-utils: 0.6.5(eslint@9.36.0(supports-color@8.1.1)) + natural-compare: 1.4.0 + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.21)(eslint@9.36.0(supports-color@8.1.1)): + dependencies: + '@vue/compiler-sfc': 3.5.21 + eslint: 9.36.0(supports-color@8.1.1) + + 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.36.0(supports-color@8.1.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.21.0(supports-color@8.1.1) + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 + '@eslint/eslintrc': 3.3.1(supports-color@8.1.1) + '@eslint/js': 9.36.0 + '@eslint/plugin-kit': 0.3.5 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.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 + 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 + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.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: {} + + etag@1.8.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exif-parser@0.1.12: {} + + exit@0.1.2: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + express@4.21.2(supports-color@8.1.1): + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3(supports-color@8.1.1) + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9(supports-color@8.1.1) + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1(supports-color@8.1.1) + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0(supports-color@8.1.1) + serve-static: 1.16.2(supports-color@8.1.1) + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.7: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1(supports-color@8.1.1): + dependencies: + debug: 2.6.9(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up-simple@1.0.1: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.11(debug@4.4.3(supports-color@8.1.1)): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) + + form-data@3.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 + + format@0.2.2: {} + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + 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-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.4.0: {} + + globrex@0.1.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + 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 + + hash-sum@2.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + highlight.js@11.11.1: {} + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-escaper@2.0.2: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1(supports-color@8.1.1): + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1(supports-color@8.1.1): + dependencies: + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immutable@5.1.9: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@5.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@5.0.0: + dependencies: + builtin-modules: 5.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + is-typedarray@1.0.0: {} + + isbinaryfile@5.0.6: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/parser': 7.28.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1(supports-color@8.1.1) + jest-snapshot: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/core': 27.5.1(supports-color@8.1.1) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@jest/test-sequencer': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.28.4(supports-color@8.1.1))(supports-color@8.1.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1(supports-color@8.1.1) + jest-environment-jsdom: 27.5.1(supports-color@8.1.1) + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1(supports-color@8.1.1) + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0(supports-color@8.1.1) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 24.5.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1(supports-color@8.1.1) + jest-snapshot: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-resolve-dependencies@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.10 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1(supports-color@8.1.1) + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1(supports-color@8.1.1): + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1(supports-color@8.1.1) + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 24.5.2 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1(supports-color@8.1.1): + dependencies: + '@babel/core': 7.28.4(supports-color@8.1.1) + '@babel/generator': 7.28.3 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4(supports-color@8.1.1)) + '@babel/traverse': 7.28.4(supports-color@8.1.1) + '@babel/types': 7.28.4 + '@jest/transform': 27.5.1(supports-color@8.1.1) + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.28.0 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4(supports-color@8.1.1)) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 24.5.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 24.5.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.0.4(supports-color@8.1.1): + dependencies: + '@jest/core': 27.5.1(supports-color@8.1.1) + import-local: 3.2.0 + jest-cli: 27.5.1(supports-color@8.1.1) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jimp@0.10.3(debug@4.4.3(supports-color@8.1.1)): + dependencies: + '@babel/runtime': 7.28.4 + '@jimp/custom': 0.10.3(debug@4.4.3(supports-color@8.1.1)) + '@jimp/plugins': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1)))(debug@4.4.3(supports-color@8.1.1)) + '@jimp/types': 0.10.3(@jimp/custom@0.10.3(debug@4.4.3(supports-color@8.1.1))) + core-js: 3.45.1 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jpeg-js@0.3.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdoc-type-pratt-parser@4.8.0: {} + + jsdoc-type-pratt-parser@5.4.0: {} + + jsdom@16.7.0(supports-color@8.1.1): + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.6.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.4 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.22 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.1: + dependencies: + acorn: 8.15.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.2 + + jsonc-parser@3.3.1: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + licia@1.48.0: {} + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + load-bmfont@1.4.2(debug@4.4.3(supports-color@8.1.1)): + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + phin: 3.7.1(debug@4.4.3(supports-color@8.1.1)) + xhr: 2.6.0 + xtend: 4.0.2 + transitivePeerDependencies: + - debug + + loader-utils@3.3.1: {} + + local-pkg@0.4.3: {} + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + localstorage-polyfill@1.0.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + longest-streak@3.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-table@3.0.4: {} + + marked@18.0.7: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2(supports-color@8.1.1) + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0(supports-color@8.1.1): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0(supports-color@8.1.1): + dependencies: + mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0(supports-color@8.1.1) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-table: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@8.1.1) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + media-typer@0.3.0: {} + + meow@13.2.0: {} + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2(supports-color@8.1.1): + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3(supports-color@8.1.1) + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + miniprogram-api-typings@4.1.0: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + module-alias@2.2.3: {} + + mp-html@2.5.2: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + negotiator@0.6.3: {} + + node-addon-api@7.1.1: + optional: true + + node-int64@0.4.0: {} + + node-releases@2.0.21: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.22: {} + + object-deep-merge@1.0.5: + dependencies: + type-fest: 4.2.0 + + object-inspect@1.13.4: {} + + omggif@1.0.10: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.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 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-manager-detector@1.3.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-gitignore@2.0.0: {} + + parse-headers@2.0.6: {} + + parse-imports-exports@0.2.4: + dependencies: + parse-statements: 1.0.11 + + 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 + + parse-statements@1.0.11: {} + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.12: {} + + pathe@2.0.3: {} + + phin@2.9.3: {} + + phin@3.7.1(debug@4.4.3(supports-color@8.1.1)): + dependencies: + centra: 2.7.0(debug@4.4.3(supports-color@8.1.1)) + transitivePeerDependencies: + - debug + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + picomatch@4.0.5: {} + + pify@2.3.0: {} + + pinia@2.2.4(typescript@5.9.2)(vue@3.4.21(typescript@5.9.2)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.9.2) + vue-demi: 0.14.10(vue@3.4.21(typescript@5.9.2)) + optionalDependencies: + typescript: 5.9.2 + + pirates@4.0.7: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.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 + + pluralize@8.0.0: {} + + pngjs@3.4.0: {} + + pnpm-workspace-yaml@1.1.2: + dependencies: + yaml: 2.8.1 + + postcss-import@14.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-load-config@3.1.4(postcss@8.5.6): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.6 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-modules@4.3.1(postcss@8.5.6): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + string-hash: 1.1.3 + + 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-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: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + quansync@0.2.11: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@5.0.0: {} + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + regjsparser@0.13.0: + dependencies: + jsesc: 3.1.0 + + require-directory@2.1.1: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.52.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.2 + '@rollup/rollup-android-arm64': 4.52.2 + '@rollup/rollup-darwin-arm64': 4.52.2 + '@rollup/rollup-darwin-x64': 4.52.2 + '@rollup/rollup-freebsd-arm64': 4.52.2 + '@rollup/rollup-freebsd-x64': 4.52.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.2 + '@rollup/rollup-linux-arm-musleabihf': 4.52.2 + '@rollup/rollup-linux-arm64-gnu': 4.52.2 + '@rollup/rollup-linux-arm64-musl': 4.52.2 + '@rollup/rollup-linux-loong64-gnu': 4.52.2 + '@rollup/rollup-linux-ppc64-gnu': 4.52.2 + '@rollup/rollup-linux-riscv64-gnu': 4.52.2 + '@rollup/rollup-linux-riscv64-musl': 4.52.2 + '@rollup/rollup-linux-s390x-gnu': 4.52.2 + '@rollup/rollup-linux-x64-gnu': 4.52.2 + '@rollup/rollup-linux-x64-musl': 4.52.2 + '@rollup/rollup-openharmony-arm64': 4.52.2 + '@rollup/rollup-win32-arm64-msvc': 4.52.2 + '@rollup/rollup-win32-ia32-msvc': 4.52.2 + '@rollup/rollup-win32-x64-gnu': 4.52.2 + '@rollup/rollup-win32-x64-msvc': 4.52.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-area-insets@1.4.1: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass@1.102.0: + dependencies: + chokidar: 5.0.0 + immutable: 5.1.9 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.6.0 + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + send@0.19.0(supports-color@8.1.1): + dependencies: + debug: 2.6.9(supports-color@8.1.1) + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2(supports-color@8.1.1): + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + 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@3.0.7: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 + + spdx-license-ids@3.0.22: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@4.1.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + + systemjs@6.15.1: {} + + tapable@2.2.3: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.44.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + throat@6.0.2: {} + + timm@1.7.1: {} + + tinycolor2@1.6.0: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + ts-api-utils@2.1.0(typescript@5.9.2): + dependencies: + typescript: 5.9.2 + + ts-declaration-location@1.0.7(typescript@5.9.2): + dependencies: + picomatch: 4.0.5 + typescript: 5.9.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-fest@4.2.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.9.2: {} + + ufo@1.6.1: {} + + undici-types@7.12.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unimport@4.1.1: + dependencies: + acorn: 8.15.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.1.2 + magic-string: 0.30.19 + mlly: 1.8.0 + pathe: 2.0.3 + picomatch: 4.0.3 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 3.0.0 + unplugin: 2.3.10 + unplugin-utils: 0.2.5 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin-auto-import@19.1.0: + dependencies: + local-pkg: 1.1.2 + magic-string: 0.30.19 + picomatch: 4.0.3 + unimport: 4.1.1 + unplugin: 2.3.10 + unplugin-utils: 0.2.5 + + unplugin-utils@0.2.5: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin@2.3.10: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + update-browserslist-db@1.1.3(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + utif@2.0.1: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.6 + + vary@1.1.2: {} + + vite@5.2.8(@types/node@24.5.2)(sass@1.102.0)(terser@5.44.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.5.6 + rollup: 4.52.2 + optionalDependencies: + '@types/node': 24.5.2 + fsevents: 2.3.3 + sass: 1.102.0 + terser: 5.44.0 + + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.4.21(typescript@5.9.2)): + dependencies: + vue: 3.4.21(typescript@5.9.2) + + vue-eslint-parser@10.2.0(eslint@9.36.0(supports-color@8.1.1))(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.36.0(supports-color@8.1.1) + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.6.2(vue@3.4.21(typescript@5.9.2)): + dependencies: + '@intlify/core-base': 9.6.2 + '@intlify/shared': 9.6.2 + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.9.2) + + vue-router@4.5.1(vue@3.4.21(typescript@5.9.2)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@5.9.2) + + vue-tsc@3.0.8(typescript@5.9.2): + dependencies: + '@volar/typescript': 2.4.23 + '@vue/language-core': 3.0.8(typescript@5.9.2) + typescript: 5.9.2 + + vue@3.4.21(typescript@5.9.2): + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@5.9.2)) + '@vue/shared': 3.4.21 + optionalDependencies: + typescript: 5.9.2 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.10: {} + + ws@8.18.3: {} + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.6 + xtend: 4.0.2 + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-eslint-parser@1.3.0: + dependencies: + eslint-visitor-keys: 3.4.3 + yaml: 2.8.1 + + yaml@1.10.2: {} + + yaml@2.8.1: {} + + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + 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: 20.2.9 + + yocto-queue@0.1.0: {} + + zwitch@2.0.4: {} diff --git a/blog-wot-uniapp/pnpm-workspace.yaml b/blog-wot-uniapp/pnpm-workspace.yaml new file mode 100644 index 0000000..ee14c69 --- /dev/null +++ b/blog-wot-uniapp/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + '@parcel/watcher': set this to true or false + core-js: set this to true or false + esbuild: set this to true or false + vue-demi: set this to true or false diff --git a/blog-wot-uniapp/src/App.vue b/blog-wot-uniapp/src/App.vue new file mode 100644 index 0000000..641f91d --- /dev/null +++ b/blog-wot-uniapp/src/App.vue @@ -0,0 +1,70 @@ + + + diff --git a/blog-wot-uniapp/src/api/index.ts b/blog-wot-uniapp/src/api/index.ts new file mode 100644 index 0000000..7c59d59 --- /dev/null +++ b/blog-wot-uniapp/src/api/index.ts @@ -0,0 +1,411 @@ +import { get, post, put, del, patch, uploadFile } from '@/utils/request' + +export interface User { + id: number + username: string + email: string + avatar?: string + bio?: string + role: string + isActive?: number + phone?: string + wechat?: string + wechatQrcode?: string + [key: string]: unknown +} + +export interface LoginResponse { + token: string + user: User + expire: number +} + +export interface PaginationResponse { + list: T[] + total: number + page: number + pageSize: number +} + +export interface Post { + id: number | string + title: string + content?: string + summary?: string + excerpt?: string + cover?: string + date?: string + categoryId?: number + categoryName?: string + columnId?: number + columnName?: string + userName?: string + userAvatar?: string + userId?: number + readCount?: number + isPublished?: number | boolean + tags?: { id: number, name: string }[] + [key: string]: unknown +} + +export interface WorkLinks { + live?: string + demo?: string + github?: string + [key: string]: unknown +} + +export interface WorkTechGroup { + category?: string + items?: string[] + [key: string]: unknown +} + +export interface Work { + id: string + title: string + category?: string + year?: string + heroImg?: string + heroVideo?: string + /** API 字段名为 desc */ + desc?: string + description?: string + videoUrl?: string + videoId?: number | string + techStack?: WorkTechGroup[] + gallery?: string[] + links?: WorkLinks | string + next?: string + [key: string]: unknown +} + +export interface Column { + id: number | string + title?: string + name?: string + description?: string + cover?: string + postCount?: number + isActive?: number | boolean + sortOrder?: number + [key: string]: unknown +} + +export interface Snippet { + id: number | string + title: string + code?: string + language?: string + description?: string + codeTypeId?: number + postIds?: number[] + [key: string]: unknown +} + +export interface VideoItem { + id: string + title: string + cover?: string + poster?: string + videoUrl?: string + url?: string + description?: string + categoryId?: number + categoryName?: string + albumIds?: number[] + isPublished?: number | boolean + duration?: number + createdAt?: string + [key: string]: unknown +} + +export interface VideoAlbumNavContext { + albumId: number + albumName: string + prevVideos: VideoItem[] + nextVideos: VideoItem[] +} + +export interface VideoDetailItem extends VideoItem { + albumContext?: VideoAlbumNavContext +} + +export interface VideoAlbum { + id: number + name: string + description?: string + cover?: string + categoryId?: number + categoryName?: string + videoCount?: number + videoIds?: number[] + isActive?: number | boolean + sortOrder?: number + latestVideoUpdatedAt?: string + previewVideos?: VideoItem[] + [key: string]: unknown +} + +export interface AboutExperience { + year?: string + role?: string + company?: string +} + +export interface AboutProfile { + id?: number + name?: string + avatar?: string + location?: string + bio?: string + email?: string + wechat?: string + isPrimary?: number | boolean + techStack?: string[] + experiences?: AboutExperience[] + role?: string + [key: string]: unknown +} + +export interface Attachment { + id: number + originalName?: string + fileName?: string + fileUrl?: string + url?: string + fileType?: string + fileSize?: number + categoryId?: number + [key: string]: unknown +} + +export interface Inquiry { + id: number + name?: string + company?: string + contactMethod?: string + contactValue?: string + budget?: string + description?: string + status?: number + createdAt?: string + [key: string]: unknown +} + +// ---- Auth ---- +export const loginApi = (username: string, password: string) => + post('/admin/login', { username, password }) + +export const wxLoginApi = (code: string) => + post('/auth/wx-login', { code }) + +/** 游客合并到管理员:需携带游客 JWT */ +export const mergeAccountApi = (username: string, password: string) => + post('/auth/merge-account', { username, password }, true) + +export const getCurrentUser = () => get('/admin/me', undefined, true) + +/** 更新当前登录用户资料 */ +export const updateMe = (data: Partial) => put('/admin/me', data, true) + +export const updatePassword = (oldPassword: string, newPassword: string) => + put('/admin/me/password', { oldPassword, newPassword }, true) + +// ---- Public ---- +export const getPublicSettings = () => get>('/settings') + +export const getPosts = (params: Record = {}) => + get | Post[]>('/posts', params) + +export const getPost = (id: string | number) => get(`/posts/${id}`) + +export const getRecommendedPosts = (id: string | number, limit = 3) => + get(`/posts/${id}/recommendations`, { limit }) + +export const getHotSearches = (limit = 10) => get<{ keyword: string, count: number }[]>('/search/hot', { limit }) + +export const getColumns = () => get('/columns') +export const getColumn = (id: string | number) => get(`/columns/${id}`) +export const getColumnPosts = (id: string | number) => get(`/columns/${id}/posts`) + +export const getWorks = () => get('/works') +export const getWork = (id: string) => get(`/works/${id}`) + +export const getSnippets = () => get('/snippets') +export const getSnippet = (id: string | number) => get(`/snippets/${id}`) + +export const getVideoCategories = () => get('/video-categories') +export const getVideoAlbums = (params: Record = {}) => + get('/video-albums', params) +export const getVideoAlbum = (id: string | number) => get(`/video-albums/${id}`) +export const getVideos = (params: Record = {}) => get('/videos', params) +export const getVideo = (id: string) => get(`/videos/${id}`) +export const getAlbumVideos = (id: string | number) => get(`/video-albums/${id}/videos`) + +export const getAbout = () => get('/about') +export const getTestimonials = () => get('/testimonials') +export const getPartners = () => get('/partners') +export const getEmailSuffixes = () => get('/email-suffixes') +export const submitInquiry = (data: Record) => post('/inquiries', data) + +export const getCategories = () => get<{ id: number, name: string }[]>('/categories') +export const getTags = () => get<{ id: number, name: string }[]>('/tags') + +/** 仪表盘趋势点(后端 date + value;兼容旧 count 字段) */ +export interface TrendPoint { + date: string + value?: number + count?: number + yoy?: number + mom?: number +} + +/** 读取趋势点数值:优先 value,兼容 SQL/旧接口的 count */ +export function trendPointValue(p?: TrendPoint | null): number { + if (!p) return 0 + return Number(p.value ?? p.count ?? 0) +} + +/** 热门文章排行项:后端访问统计返回 count,兼容文章实体上的 readCount */ +export interface DashboardTopPost { + title?: string + article_id?: number + count?: number + readCount?: number + [key: string]: unknown +} + +/** 概览结构化统计,对应 GetDashboardStats */ +export interface DashboardStats { + posts?: number + works?: number + inquiryCount?: number + postsTrend?: TrendPoint[] + uvTrend?: TrendPoint[] + topPosts?: DashboardTopPost[] + operationTrend?: TrendPoint[] + userRegions?: { region?: string, name?: string, count?: number, value?: number }[] +} + +// ---- Admin dashboard ---- +export const getDashboardStats = (params: Record = {}) => + get('/admin/dashboard/stats', params, true) +export const getRecentActivities = () => get('/admin/dashboard/activities', undefined, true) +export const getOperationLogs = (page = 1, pageSize = 10, filters: Record = {}) => + get>('/admin/operation-logs', { page, pageSize, ...filters }, true) +export const getAccessLogs = (page = 1, pageSize = 10, filters: Record = {}) => + get>('/admin/access-logs', { page, pageSize, ...filters }, true) + +// ---- Admin posts extras ---- +/** 切换文章发布状态 */ +export const patchPostStatus = (id: string | number, isPublished: number) => + patch(`/admin/posts/${id}/status`, { isPublished }, true) + +export const patchPostRelations = (id: string | number, data: Record) => + patch(`/admin/posts/${id}/relations`, data, true) + +export const getPostHistory = (id: string | number) => + get(`/admin/posts/${id}/history`, undefined, true) + +/** 后台文章详情(含未发布),编辑表单专用;勿用公开 getPost */ +export const adminGetPost = (id: string | number) => + get(`/admin/posts/${id}`, undefined, true) + +export const restorePostVersion = (id: string | number, version: string | number) => + post(`/admin/posts/${id}/history/${version}/restore`, {}, true) + +export const getPostAccessLogs = (id: string | number, params: Record = {}) => + get>(`/admin/posts/${id}/access-logs`, params, true) + +// ---- Admin inquiries ---- +export const updateInquiryStatus = (id: string | number, status: number) => + put(`/admin/inquiries/${id}/status`, { status }, true) + +// ---- Admin columns posts ---- +export const addPostToColumn = (columnId: string | number, postId: string | number) => + post(`/admin/columns/${columnId}/posts`, { postId }, true) + +export const removePostFromColumn = (columnId: string | number, postId: string | number) => + del(`/admin/columns/${columnId}/posts/${postId}`, true) + +export const getAdminColumnPosts = (columnId: string | number) => + get(`/admin/columns/${columnId}/posts`, undefined, true).catch(() => getColumnPosts(columnId)) + +// ---- Admin video albums ---- +export const getAlbumVideoIds = (id: string | number) => + get(`/admin/video-albums/${id}/video-ids`, undefined, true) + +// ---- Admin attachments ---- +export const uploadAttachment = (filePath: string, formData: Record = {}) => + uploadFile('/admin/attachments/upload', filePath, formData) + +// ---- Admin settings ---- +export const getAdminSettings = () => get('/admin/settings', undefined, true) +export const batchUpdateSettings = (values: Record) => + put('/admin/settings', values, true) + +// ---- Admin OSS ---- +export const testOssConfig = (id: string | number) => + post<{ storageType: string, name: string }>(`/admin/oss-configs/${id}/test`, {}, true) + +// ---- Admin generic CRUD helpers ---- +const RESOURCE_ALIAS: Record = { + logs: 'operation-logs', + 'access-logs': 'access-logs', + about: 'about', + settings: 'settings', +} + +function adminPath(resource: string, id?: string | number) { + const name = RESOURCE_ALIAS[resource] || resource + return id != null ? `/admin/${name}/${id}` : `/admin/${name}` +} + +export function adminList(resource: string, params: Record = {}) { + return get(adminPath(resource), params, true) +} + +export function adminGet(resource: string, id: string | number) { + return get(adminPath(resource, id), undefined, true) +} + +export function adminCreate(resource: string, data: unknown) { + return post(adminPath(resource), data, true) +} + +export function adminUpdate(resource: string, id: string | number, data: unknown) { + return put(adminPath(resource, id), data, true) +} + +export function adminDelete(resource: string, id: string | number) { + return del(adminPath(resource, id), true) +} + +/** 统一把列表接口结果规范成数组(兼容 list 包装与裸数组) */ +export function normalizeAdminList>(data: unknown): T[] { + if (Array.isArray(data)) return data as T[] + if (data && typeof data === 'object' && Array.isArray((data as { list?: unknown[] }).list)) { + return (data as { list: T[] }).list + } + return [] +} + +/** 统一分页结构 */ +export function normalizePagination>( + data: unknown, + page = 1, + pageSize = 20, +): PaginationResponse { + if (data && typeof data === 'object' && Array.isArray((data as PaginationResponse).list)) { + const p = data as PaginationResponse + return { + list: p.list, + total: Number(p.total ?? p.list.length), + page: Number(p.page ?? page), + pageSize: Number(p.pageSize ?? pageSize), + } + } + const list = normalizeAdminList(data) + return { list, total: list.length, page, pageSize } +} diff --git a/blog-wot-uniapp/src/assets/fonts/jetbrains-mono-latin-400-normal.woff b/blog-wot-uniapp/src/assets/fonts/jetbrains-mono-latin-400-normal.woff new file mode 100644 index 0000000000000000000000000000000000000000..41fa3d6c55d0571084b84a942fe4d43cf78a72ef GIT binary patch literal 27496 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 SPVD^p?;o%K18)r%=>P!EI0OX% literal 0 HcmV?d00001 diff --git a/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-400-italic.woff b/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-400-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..c5f92cb1ee4ec4fb92db40033f2362efae6f8ece GIT binary patch literal 27268 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 E0Gj%0k^lez literal 0 HcmV?d00001 diff --git a/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-600-normal.woff b/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-600-normal.woff new file mode 100644 index 0000000000000000000000000000000000000000..61aebd25b828c730547ebae5a594deaf009154aa GIT binary patch literal 28356 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%0D0R=BpOfwoW>!kJyiB1S@o{xg>!sH1#u8tC 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 ge5;9O^T`E4+ItC7>(04&-8kpKVy literal 0 HcmV?d00001 diff --git a/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-700-normal.woff b/blog-wot-uniapp/src/assets/fonts/playfair-display-latin-700-normal.woff new file mode 100644 index 0000000000000000000000000000000000000000..44f1c6723933f2e6fae8cdad64296b85b626ef30 GIT binary patch literal 28296 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 W2$4S^Cf4(U$?7~)7$` +/** + * C 端氛围层:暗色星空 + 偶发流星;浅色金色光斑漂移。 + * 粒子数约为 PC StarBackground 的 1/3,挂在 AppPageShell 底层。 + * 使用旧版 canvas 上下文以保证各端兼容;不可点击(pointer-events: none)。 + */ +import { getCurrentInstance, nextTick, onBeforeUnmount, onMounted, watch } from 'vue' +import { onHide, onShow } from '@dcloudio/uni-app' +import { useTheme } from '@/composables/useTheme' + +const { isDark } = useTheme() +const canvasId = `ambient-${Math.random().toString(36).slice(2, 9)}` + +interface Star { + x: number + y: number + r: number + a: number + out: boolean + sp: number +} +interface Meteor { + x: number + y: number + len: number + sp: number + a: number +} +interface Orb { + bx: number + by: number + r: number + ampX: number + ampY: number + phX: number + phY: number + sp: number + color: string +} +interface Dust { + x: number + y: number + r: number + a: number + out: boolean + sp: number + base: number +} + +let ctx: UniApp.CanvasContext | null = null +let width = 0 +let height = 0 +let running = false +let timer: ReturnType | null = null +let time = 0 +const stars: Star[] = [] +const meteors: Meteor[] = [] +const orbs: Orb[] = [] +const dust: Dust[] = [] + +const clearPools = () => { + stars.length = 0 + meteors.length = 0 + orbs.length = 0 + dust.length = 0 +} + +const initDark = () => { + clearPools() + for (let i = 0; i < 55; i++) { + stars.push({ + x: Math.random() * width, + y: Math.random() * height, + r: Math.random() * 1.4 + 0.3, + a: Math.random(), + out: Math.random() > 0.5, + sp: Math.random() * 0.02 + 0.005, + }) + } +} + +const initLight = () => { + clearPools() + const palette = [ + 'rgba(212,179,131,0.18)', + 'rgba(196,150,90,0.14)', + 'rgba(232,200,150,0.16)', + ] + const places = [ + { bx: 0.18, by: 0.22 }, + { bx: 0.8, by: 0.38 }, + { bx: 0.42, by: 0.78 }, + ] + places.forEach((p, i) => { + orbs.push({ + bx: p.bx * width, + by: p.by * height, + r: Math.min(width, height) * (0.22 + Math.random() * 0.1), + ampX: 28 + Math.random() * 40, + ampY: 22 + Math.random() * 36, + phX: Math.random() * Math.PI * 2, + phY: Math.random() * Math.PI * 2, + sp: 0.0003 + Math.random() * 0.0002, + color: palette[i % palette.length], + }) + }) + for (let i = 0; i < 28; i++) { + const base = Math.random() * 0.3 + 0.12 + dust.push({ + x: Math.random() * width, + y: Math.random() * height, + r: Math.random() * 1.6 + 0.4, + a: base, + out: Math.random() > 0.5, + sp: Math.random() * 0.008 + 0.003, + base, + }) + } +} + +const initTheme = () => { + if (isDark.value) initDark() + else initLight() +} + +const draw = () => { + if (!ctx || !running) return + time += 1 + ctx.clearRect(0, 0, width, height) + + if (isDark.value) { + stars.forEach((s) => { + if (s.out) { + s.a -= s.sp + if (s.a <= 0.1) s.out = false + } + else { + s.a += s.sp + if (s.a >= 1) s.out = true + } + ctx!.beginPath() + ctx!.arc(s.x, s.y, s.r, 0, Math.PI * 2) + ctx!.setFillStyle(`rgba(255,255,255,${Math.max(0.08, s.a)})`) + ctx!.fill() + }) + if (Math.random() < 0.008) { + meteors.push({ + x: Math.random() * width, + y: 0, + len: Math.random() * 60 + 24, + sp: Math.random() * 8 + 5, + a: 1, + }) + } + for (let i = meteors.length - 1; i >= 0; i--) { + const m = meteors[i] + const ex = m.x - m.len * 0.7 + const ey = m.y - m.len * 0.7 + ctx.beginPath() + ctx.moveTo(m.x, m.y) + ctx.lineTo(ex, ey) + ctx.setStrokeStyle(`rgba(255,255,255,${m.a})`) + ctx.setLineWidth(1.2) + ctx.stroke() + m.x += m.sp * 0.7 + m.y += m.sp * 0.7 + m.a -= 0.012 + if (m.a <= 0 || m.y > height) meteors.splice(i, 1) + } + } + else { + orbs.forEach((o) => { + const x = o.bx + Math.sin(time * o.sp + o.phX) * o.ampX + const y = o.by + Math.cos(time * o.sp + o.phY) * o.ampY + const g = ctx!.createCircularGradient(x, y, o.r) + g.addColorStop(0, o.color) + g.addColorStop(1, 'rgba(212,179,131,0)') + ctx!.beginPath() + ctx!.arc(x, y, o.r, 0, Math.PI * 2) + ctx!.setFillStyle(g) + ctx!.fill() + }) + dust.forEach((d) => { + if (d.out) { + d.a -= d.sp + if (d.a <= 0.05) d.out = false + } + else { + d.a += d.sp + if (d.a >= d.base) d.out = true + } + ctx!.beginPath() + ctx!.arc(d.x, d.y, d.r, 0, Math.PI * 2) + ctx!.setFillStyle(`rgba(196,150,90,${d.a})`) + ctx!.fill() + }) + } + + ctx.draw() + timer = setTimeout(() => { + if (running) draw() + }, 48) +} + +const stop = () => { + running = false + if (timer) { + clearTimeout(timer) + timer = null + } +} + +const start = () => { + stop() + running = true + draw() +} + +const setup = () => { + const inst = getCurrentInstance() + uni.getSystemInfo({ + success: (info) => { + width = info.windowWidth + height = info.windowHeight + nextTick(() => { + ctx = uni.createCanvasContext(canvasId, inst?.proxy as never) + initTheme() + start() + }) + }, + }) +} + +onMounted(setup) +onShow(() => { + if (ctx) start() +}) +onHide(stop) +onBeforeUnmount(stop) + +watch(isDark, () => { + initTheme() +}) + + + + + diff --git a/blog-wot-uniapp/src/components/c-end/ArtMenuGroup.vue b/blog-wot-uniapp/src/components/c-end/ArtMenuGroup.vue new file mode 100644 index 0000000..5367cfd --- /dev/null +++ b/blog-wot-uniapp/src/components/c-end/ArtMenuGroup.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/c-end/ArtMenuItem.vue b/blog-wot-uniapp/src/components/c-end/ArtMenuItem.vue new file mode 100644 index 0000000..13e9922 --- /dev/null +++ b/blog-wot-uniapp/src/components/c-end/ArtMenuItem.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/c-end/ArtSearchBar.vue b/blog-wot-uniapp/src/components/c-end/ArtSearchBar.vue new file mode 100644 index 0000000..2c4378c --- /dev/null +++ b/blog-wot-uniapp/src/components/c-end/ArtSearchBar.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/c-end/PostCard.vue b/blog-wot-uniapp/src/components/c-end/PostCard.vue new file mode 100644 index 0000000..1f11de1 --- /dev/null +++ b/blog-wot-uniapp/src/components/c-end/PostCard.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/c-end/ProfileHero.vue b/blog-wot-uniapp/src/components/c-end/ProfileHero.vue new file mode 100644 index 0000000..9180f64 --- /dev/null +++ b/blog-wot-uniapp/src/components/c-end/ProfileHero.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/layout/AppFloatingTabbar.vue b/blog-wot-uniapp/src/components/layout/AppFloatingTabbar.vue new file mode 100644 index 0000000..7a85df9 --- /dev/null +++ b/blog-wot-uniapp/src/components/layout/AppFloatingTabbar.vue @@ -0,0 +1,64 @@ + + + diff --git a/blog-wot-uniapp/src/components/layout/AppNavbar.vue b/blog-wot-uniapp/src/components/layout/AppNavbar.vue new file mode 100644 index 0000000..a73b332 --- /dev/null +++ b/blog-wot-uniapp/src/components/layout/AppNavbar.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/blog-wot-uniapp/src/components/layout/AppPageShell.vue b/blog-wot-uniapp/src/components/layout/AppPageShell.vue new file mode 100644 index 0000000..200226d --- /dev/null +++ b/blog-wot-uniapp/src/components/layout/AppPageShell.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/blog-wot-uniapp/src/composables/useAppMode.ts b/blog-wot-uniapp/src/composables/useAppMode.ts new file mode 100644 index 0000000..4fd203c --- /dev/null +++ b/blog-wot-uniapp/src/composables/useAppMode.ts @@ -0,0 +1,75 @@ +import { computed, ref } from 'vue' +import type { AppMode, LoginType } from '@/config/menus' +import { isStaffRole } from '@/config/menus' +import { useAuth } from './useAuth' + +const MODE_KEY = 'appMode' +const LOGIN_TYPE_KEY = 'loginType' + +const appMode = ref((uni.getStorageSync(MODE_KEY) as AppMode) || 'user') +const loginType = ref((uni.getStorageSync(LOGIN_TYPE_KEY) as LoginType) || 'guest') + +export function useAppMode() { + const { getUser, isAuthenticated } = useAuth() + + const isAdminMode = computed(() => appMode.value === 'admin') + const isUserMode = computed(() => appMode.value === 'user') + + const canEnterAdmin = computed(() => { + if (!isAuthenticated()) return false + const user = getUser() as { role?: string } + return isStaffRole(user?.role) + }) + + const setLoginType = (type: LoginType) => { + loginType.value = type + uni.setStorageSync(LOGIN_TYPE_KEY, type) + } + + const setAppMode = (mode: AppMode) => { + appMode.value = mode + uni.setStorageSync(MODE_KEY, mode) + } + + const enterAdminMode = () => { + if (!canEnterAdmin.value) { + uni.showToast({ title: '无后台权限', icon: 'none' }) + return false + } + setAppMode('admin') + // 延迟 import,避免与 useTheme 循环依赖;切换模式后立刻同步页底色 + import('./useTheme').then(({ useTheme }) => useTheme().apply()).catch(() => {}) + uni.reLaunch({ url: '/subPackages/admin/pages/dashboard/index' }) + return true + } + + const enterUserMode = () => { + setAppMode('user') + import('./useTheme').then(({ useTheme }) => useTheme().apply()).catch(() => {}) + uni.reLaunch({ url: '/pages/home/index' }) + } + + /** 启动时校验:admin 模式但无权限则回退 */ + const hydrateAppMode = () => { + if (appMode.value === 'admin' && !canEnterAdmin.value) { + setAppMode('user') + if (!isAuthenticated()) setLoginType('guest') + } + if (isAuthenticated() && canEnterAdmin.value) { + setLoginType('staff') + } + } + + return { + appMode, + loginType, + isAdminMode, + isUserMode, + canEnterAdmin, + setLoginType, + setAppMode, + enterAdminMode, + enterUserMode, + hydrateAppMode, + } +} diff --git a/blog-wot-uniapp/src/composables/useAppTabbar.ts b/blog-wot-uniapp/src/composables/useAppTabbar.ts new file mode 100644 index 0000000..c8dd524 --- /dev/null +++ b/blog-wot-uniapp/src/composables/useAppTabbar.ts @@ -0,0 +1,101 @@ +import { computed } from 'vue' +import { useAppMode } from './useAppMode' +import { useTheme } from './useTheme' + +export interface TabItem { + name: string + title: string + icon: string + path: string +} + +const USER_TABS: TabItem[] = [ + { name: 'home', title: '首页', icon: 'home', path: '/pages/home/index' }, + // wot-ui 无 app,正确图标名为 apps + { name: 'explore', title: '功能入口', icon: 'apps', path: '/pages/explore/index' }, + { name: 'mine', title: '我的', icon: 'user', path: '/pages/mine/index' }, +] + +const ADMIN_TABS: TabItem[] = [ + { name: 'dashboard', title: '工作台', icon: 'dashboard', path: '/subPackages/admin/pages/dashboard/index' }, + { name: 'explore', title: '功能入口', icon: 'apps', path: '/subPackages/admin/pages/explore/index' }, + { name: 'mine', title: '我的', icon: 'user', path: '/pages/mine/index' }, +] + +export function useAppTabbar() { + const { appMode } = useAppMode() + const { apply } = useTheme() + + const tabItems = computed(() => (appMode.value === 'admin' ? ADMIN_TABS : USER_TABS)) + + const resolveActive = (routePath?: string): string => { + const path = routePath || getCurrentRoutePath() + const items = tabItems.value + const hit = items.find(t => path.includes(t.path.replace(/^\//, '')) || path.endsWith(t.name)) + if (hit) return hit.name + if (path.includes('/mine')) return 'mine' + if (path.includes('/explore')) return 'explore' + if (path.includes('/dashboard') || path.includes('/home')) return items[0].name + return items[0].name + } + + /** + * Tab 切换:先同步底色再 redirectTo,避免 reLaunch 清栈 + 浅色 page 闪屏。 + * 已在当前页则 no-op。 + */ + const navigateTab = (name: string) => { + const item = tabItems.value.find(t => t.name === name) + if (!item) return + const cur = getCurrentRoutePath() + const target = item.path + if (cur === target || cur.endsWith(target.replace(/^\//, ''))) return + apply() + uni.redirectTo({ url: target }) + } + + const shouldShowTabbar = (routePath?: string): boolean => { + const path = routePath || getCurrentRoutePath() + const hidePatterns = [ + '/blog/detail', + '/blog/ppt', + '/columns/detail', + '/works/detail', + '/videos/detail', + '/videos/album', + '/resource/form', + '/resource/list', + '/analytics', + '/columns/form', + '/posts/', + '/works/list', + '/works/form', + '/videos/list', + '/videos/form', + '/video-albums/', + '/snippets/form', + '/attachments/', + '/inquiries/', + '/about/index', + '/settings/', + '/oss-configs/', + '/users/', + '/logs/', + ] + return !hidePatterns.some(p => path.includes(p)) + } + + return { + tabItems, + resolveActive, + navigateTab, + shouldShowTabbar, + USER_TABS, + ADMIN_TABS, + } +} + +function getCurrentRoutePath(): string { + const pages = getCurrentPages() + const cur = pages[pages.length - 1] as { route?: string } | undefined + return cur?.route ? `/${cur.route}` : '' +} diff --git a/blog-wot-uniapp/src/composables/useAuth.ts b/blog-wot-uniapp/src/composables/useAuth.ts new file mode 100644 index 0000000..fcc5f66 --- /dev/null +++ b/blog-wot-uniapp/src/composables/useAuth.ts @@ -0,0 +1,117 @@ +import { ref } from 'vue' +import { isStaffRole } from '@/config/menus' + +const TOKEN_KEY = 'token' +const USER_KEY = 'user' +const EXPIRE_KEY = 'tokenExpireAt' + +const sessionExpired = ref(false) +let sessionExpiredHandled = false +let expiryTimer: ReturnType | null = null + +export interface AuthUser { + id: number + username: string + email?: string + avatar?: string + role?: string + [key: string]: unknown +} + +export function useAuth() { + const getToken = () => uni.getStorageSync(TOKEN_KEY) as string || '' + + const getTokenExpireAt = (): number => { + const raw = uni.getStorageSync(EXPIRE_KEY) + return raw ? Number(raw) : 0 + } + + const isAuthenticated = (): boolean => { + const token = getToken() + if (!token) return false + const expireAt = getTokenExpireAt() + if (expireAt > 0 && Date.now() >= expireAt) return false + return true + } + + const getUser = (): AuthUser => { + try { + const raw = uni.getStorageSync(USER_KEY) + if (!raw) return {} as AuthUser + return typeof raw === 'string' ? JSON.parse(raw) : raw + } + catch { + return {} as AuthUser + } + } + + const setUser = (user: AuthUser) => { + uni.setStorageSync(USER_KEY, JSON.stringify(user)) + } + + const clearExpiryTimer = () => { + if (expiryTimer) { + clearTimeout(expiryTimer) + expiryTimer = null + } + } + + const handleSessionExpired = () => { + if (sessionExpiredHandled) return + sessionExpiredHandled = true + sessionExpired.value = true + } + + const scheduleExpiryCheck = () => { + clearExpiryTimer() + const expireAt = getTokenExpireAt() + if (!expireAt) return + const delay = expireAt - Date.now() + if (delay <= 0) { + handleSessionExpired() + return + } + expiryTimer = setTimeout(() => handleSessionExpired(), delay) + } + + const login = (token: string, user: AuthUser, expireUnixSeconds: number) => { + uni.setStorageSync(TOKEN_KEY, token) + uni.setStorageSync(USER_KEY, JSON.stringify(user)) + uni.setStorageSync(EXPIRE_KEY, String(expireUnixSeconds * 1000)) + sessionExpiredHandled = false + sessionExpired.value = false + scheduleExpiryCheck() + + // sync loginType + uni.setStorageSync('loginType', isStaffRole(user.role) ? 'staff' : 'guest') + } + + const logout = () => { + clearExpiryTimer() + uni.removeStorageSync(TOKEN_KEY) + uni.removeStorageSync(USER_KEY) + uni.removeStorageSync(EXPIRE_KEY) + uni.setStorageSync('loginType', 'guest') + uni.setStorageSync('appMode', 'user') + sessionExpiredHandled = false + sessionExpired.value = false + } + + const confirmSessionExpired = () => { + logout() + uni.reLaunch({ url: '/pages/mine/index' }) + } + + return { + sessionExpired, + getToken, + getUser, + setUser, + isAuthenticated, + login, + logout, + handleSessionExpired, + confirmSessionExpired, + scheduleExpiryCheck, + } +} diff --git a/blog-wot-uniapp/src/composables/usePublicSettings.ts b/blog-wot-uniapp/src/composables/usePublicSettings.ts new file mode 100644 index 0000000..af2689c --- /dev/null +++ b/blog-wot-uniapp/src/composables/usePublicSettings.ts @@ -0,0 +1,53 @@ +import { ref } from 'vue' +import { get } from '@/utils/request' +import { PUBLIC_MENUS } from '@/config/menus' + +export type PublicSettings = Record + +const cache = ref({}) +const loaded = ref(false) + +export function usePublicSettings() { + const load = async (force = false) => { + if (loaded.value && !force) return cache.value + try { + const data = await get('/settings') + cache.value = data || {} + loaded.value = true + } + catch { + cache.value = {} + } + return cache.value + } + + const getStringSetting = (key: string, fallback = '') => cache.value[key] || fallback + + const getVisibleMenus = (): string[] => { + const raw = getStringSetting('visible_menus') + const defaults = ['home', 'blog', 'columns', 'works', 'videos', 'snippets', 'about', 'services'] + if (!raw) return defaults + try { + const parsed = JSON.parse(raw) + if (Array.isArray(parsed)) return parsed + } + catch { + return raw.split(',').map(s => s.trim()).filter(Boolean) + } + return defaults + } + + const getExploreMenus = () => { + const visible = getVisibleMenus() + return PUBLIC_MENUS.filter(m => visible.includes(m.key)) + } + + return { + cache, + loaded, + load, + getStringSetting, + getVisibleMenus, + getExploreMenus, + } +} diff --git a/blog-wot-uniapp/src/composables/useSearchHistory.ts b/blog-wot-uniapp/src/composables/useSearchHistory.ts new file mode 100644 index 0000000..4198097 --- /dev/null +++ b/blog-wot-uniapp/src/composables/useSearchHistory.ts @@ -0,0 +1,50 @@ +/** + * 思考页搜索历史:对齐 PC blog_search_history,最多 10 条。 + * 小程序用 uni.setStorageSync,与 localStorage key 保持一致便于跨端对齐。 + */ +export const SEARCH_HISTORY_KEY = 'blog_search_history' +const MAX_HISTORY = 10 + +export function useSearchHistory() { + /** 读取历史列表 */ + const readHistory = (): string[] => { + try { + const raw = uni.getStorageSync(SEARCH_HISTORY_KEY) + if (!raw) return [] + const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw + return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [] + } + catch { + return [] + } + } + + const writeHistory = (items: string[]) => { + uni.setStorageSync(SEARCH_HISTORY_KEY, JSON.stringify(items.slice(0, MAX_HISTORY))) + } + + const getHistory = () => readHistory() + + /** 写入关键词(去重置顶) */ + const addHistory = (keyword: string) => { + const trimmed = keyword.trim() + if (!trimmed) return + const next = [trimmed, ...readHistory().filter(item => item !== trimmed)].slice(0, MAX_HISTORY) + writeHistory(next) + } + + const removeHistory = (keyword: string) => { + writeHistory(readHistory().filter(item => item !== keyword)) + } + + const clearHistory = () => { + uni.removeStorageSync(SEARCH_HISTORY_KEY) + } + + return { + getHistory, + addHistory, + removeHistory, + clearHistory, + } +} diff --git a/blog-wot-uniapp/src/composables/useTheme.ts b/blog-wot-uniapp/src/composables/useTheme.ts new file mode 100644 index 0000000..bfc20cc --- /dev/null +++ b/blog-wot-uniapp/src/composables/useTheme.ts @@ -0,0 +1,145 @@ +/** + * 主题与 wot ConfigProvider 变量。 + * 后台模式强制按暗色注入,避免用户浅色偏好导致表单字色/底色错乱。 + */ +import { computed, ref } from 'vue' +import { useAppMode } from './useAppMode' + +export type ThemePref = 'system' | 'light' | 'dark' + +const THEME_KEY = 'theme-pref' +const themePref = ref((uni.getStorageSync(THEME_KEY) as ThemePref) || 'system') +const isDark = ref(false) + +function resolveDark(pref: ThemePref): boolean { + if (pref === 'dark') return true + if (pref === 'light') return false + try { + // 优先新 API,避免 wx.getSystemInfoSync 弃用警告 + const base = typeof uni.getAppBaseInfo === 'function' ? uni.getAppBaseInfo() : null + if (base && 'theme' in base) { + return (base as { theme?: string }).theme === 'dark' + } + const info = uni.getSystemInfoSync() + return (info as UniApp.GetSystemInfoResult & { theme?: string }).theme === 'dark' + } + catch { + return false + } +} + +/** + * 同步窗口底色到 art 主题色。 + * theme.json 的 @bgColor 只跟系统深色;App 内选手动深色时必须靠此 API,避免 page 露白。 + */ +function syncPageBackground(dark: boolean, admin = false) { + const bg = admin ? '#0a0a0a' : dark ? '#050505' : '#faf8f4' + try { + uni.setBackgroundColor({ + backgroundColor: bg, + backgroundColorTop: bg, + backgroundColorBottom: bg, + }) + } + catch { /* H5 may ignore */ } + try { + uni.setNavigationBarColor({ + frontColor: dark || admin ? '#ffffff' : '#000000', + backgroundColor: bg, + }) + } + catch { /* custom nav may ignore */ } + uni.setStorageSync('theme-bg-sync', `${dark || admin ? 1 : 0}-${Date.now()}`) +} + +export function useTheme() { + const { appMode } = useAppMode() + + /** 用户偏好暗色,或当前处于后台模式 */ + const effectiveDark = computed(() => isDark.value || appMode.value === 'admin') + + const apply = () => { + isDark.value = resolveDark(themePref.value) + syncPageBackground(isDark.value, appMode.value === 'admin') + } + + const setThemePref = (pref: ThemePref) => { + themePref.value = pref + uni.setStorageSync(THEME_KEY, pref) + apply() + } + + const themeLabel = computed(() => { + if (themePref.value === 'system') return '跟随系统' + if (themePref.value === 'light') return '浅色' + return '深色' + }) + + const wotTheme = computed(() => (effectiveDark.value ? 'dark' : 'light')) + + /** 注入 wot ConfigProvider:主题色 + 导航/弹层/表单/搜索深色,避免白底割裂 */ + const themeVars = computed(() => { + const dark = effectiveDark.value + const admin = appMode.value === 'admin' + const bg = dark ? '#121214' : '#ffffff' + const pageBg = admin ? '#0a0a0a' : dark ? '#050505' : '#faf8f4' + const title = dark ? '#ececec' : '#171717' + const muted = dark ? '#888888' : '#6b6b6b' + const border = dark ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.08)' + return { + colorTheme: '#d4b383', + navbarColor: title, + navbarBg: admin + ? 'rgba(10,10,10,0.92)' + : dark + ? 'rgba(5,5,5,0.92)' + : 'rgba(250,248,244,0.92)', + navbarDescColor: title, + colorBg: bg, + colorTitle: title, + colorContent: title, + colorSecondary: muted, + darkColor: bg, + darkBackground: pageBg, + tabsNavBg: 'transparent', + tabsNavColor: muted, + tabsNavActiveColor: title, + tabsNavLineColor: '#d4b383', + tabsNavBorder: border, + cellBg: bg, + cellTitleColor: title, + cellValueColor: muted, + cellLabelColor: muted, + cellBorderColor: border, + collapseBg: bg, + collapseBodyBg: bg, + collapseHeaderBg: bg, + collapseTitleColor: title, + /* 后台表单需要可见底色,不能跟卡片同色透明 */ + inputBg: dark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.03)', + inputInnerColor: title, + inputInnerPlaceholderColor: muted, + inputBorderColor: border, + textareaBg: dark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.03)', + textareaInnerColor: title, + textareaInnerPlaceholderColor: muted, + searchInputBg: dark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.04)', + searchInputColor: title, + searchPlaceholderColor: muted, + searchIconColor: muted, + } + }) + + apply() + + return { + themePref, + isDark, + effectiveDark, + themeLabel, + wotTheme, + themeVars, + setThemePref, + apply, + } +} diff --git a/blog-wot-uniapp/src/config/menus.ts b/blog-wot-uniapp/src/config/menus.ts new file mode 100644 index 0000000..995e8b2 --- /dev/null +++ b/blog-wot-uniapp/src/config/menus.ts @@ -0,0 +1,107 @@ +export type AppMode = 'user' | 'admin' +export type LoginType = 'guest' | 'staff' + +export interface MenuItem { + key: string + title: string + path: string + icon?: string + children?: MenuItem[] +} + +/** 前台频道(功能入口)——路径指向 content 分包(单层,勿重复前缀) */ +export const PUBLIC_MENUS: MenuItem[] = [ + { key: 'blog', title: '思考', path: '/subPackages/content/pages/blog/index', icon: 'edit' }, + { key: 'columns', title: '专栏', path: '/subPackages/content/pages/columns/index', icon: 'book' }, + { key: 'works', title: '作品', path: '/subPackages/content/pages/works/index', icon: 'image' }, + { key: 'videos', title: '视频', path: '/subPackages/content/pages/videos/index', icon: 'video-camera' }, + { key: 'snippets', title: '代码', path: '/subPackages/content/pages/snippets/index', icon: 'code' }, + { key: 'about', title: '关于', path: '/subPackages/content/pages/about/index', icon: 'user' }, + { key: 'services', title: '合作', path: '/subPackages/content/pages/services/index', icon: 'headset' }, +] + +/** 后台菜单树(功能入口);icon 须为 @wot-ui v2 有效名 */ +export const ADMIN_MENUS: MenuItem[] = [ + { key: 'dashboard', title: '概览', path: '/subPackages/admin/pages/dashboard/index', icon: 'dashboard' }, + { key: 'analytics', title: '数据分析', path: '/subPackages/admin/pages/analytics/index', icon: 'mind-mapping' }, + { + key: 'content', + title: '内容管理', + path: '', + icon: 'book', + children: [ + { key: 'posts', title: '文章管理', path: '/subPackages/admin/pages/posts/list', icon: 'edit' }, + { key: 'categories', title: '分类管理', path: '/subPackages/admin/pages/resource/list?resource=categories', icon: 'list' }, + { key: 'columns', title: '专栏管理', path: '/subPackages/admin/pages/resource/list?resource=columns', icon: 'book' }, + { key: 'works', title: '作品管理', path: '/subPackages/admin/pages/works/list', icon: 'image' }, + { key: 'video-categories', title: '视频分类', path: '/subPackages/admin/pages/resource/list?resource=video-categories', icon: 'list' }, + { key: 'video-albums', title: '视频专辑', path: '/subPackages/admin/pages/resource/list?resource=video-albums', icon: 'folder' }, + { key: 'videos', title: '视频列表', path: '/subPackages/admin/pages/videos/list', icon: 'video-camera' }, + { key: 'snippets', title: '代码片段', path: '/subPackages/admin/pages/resource/list?resource=snippets', icon: 'code' }, + { key: 'code-types', title: '代码分类', path: '/subPackages/admin/pages/resource/list?resource=code-types', icon: 'code-block' }, + { key: 'tags', title: '标签管理', path: '/subPackages/admin/pages/resource/list?resource=tags', icon: 'apps' }, + ], + }, + { + key: 'pages', + title: '页面配置', + path: '', + icon: 'application', + children: [ + { key: 'about', title: '关于页面', path: '/subPackages/admin/pages/about/index', icon: 'user' }, + { key: 'testimonials', title: '客户评价', path: '/subPackages/admin/pages/resource/list?resource=testimonials', icon: 'message' }, + { key: 'partners', title: '合作伙伴', path: '/subPackages/admin/pages/resource/list?resource=partners', icon: 'user-group' }, + ], + }, + { + key: 'business', + title: '业务中心', + path: '', + icon: 'email', + children: [ + { key: 'inquiries', title: '合作咨询', path: '/subPackages/admin/pages/inquiries/list', icon: 'email' }, + { key: 'email-suffixes', title: '邮箱配置', path: '/subPackages/admin/pages/resource/list?resource=email-suffixes', icon: 'settings' }, + ], + }, + { + key: 'users', + title: '用户权限', + path: '', + icon: 'user-group', + children: [ + { key: 'users', title: '用户管理', path: '/subPackages/admin/pages/users/list', icon: 'user' }, + { key: 'roles', title: '角色管理', path: '/subPackages/admin/pages/resource/list?resource=roles', icon: 'lock' }, + ], + }, + { + key: 'attachments', + title: '附件管理', + path: '', + icon: 'folder', + children: [ + { key: 'attachments', title: '附件库', path: '/subPackages/admin/pages/attachments/index', icon: 'file' }, + { key: 'attachment-categories', title: '附件分类', path: '/subPackages/admin/pages/resource/list?resource=attachment-categories', icon: 'folder-add' }, + { key: 'oss-configs', title: 'OSS配置', path: '/subPackages/admin/pages/oss-configs/index', icon: 'cloud' }, + ], + }, + { + key: 'system', + title: '系统设置', + path: '', + icon: 'settings', + children: [ + { key: 'settings', title: '全局配置', path: '/subPackages/admin/pages/settings/index', icon: 'settings' }, + { key: 'ppt-templates', title: 'PPT 模板', path: '/subPackages/admin/pages/resource/list?resource=ppt-templates', icon: 'file' }, + { key: 'logs', title: '操作日志', path: '/subPackages/admin/pages/logs/operation', icon: 'list' }, + { key: 'access-logs', title: '访问日志', path: '/subPackages/admin/pages/logs/access', icon: 'eye' }, + ], + }, +] + +export const STAFF_ROLES = ['admin', 'editor'] as const + +export function isStaffRole(role?: string): boolean { + if (!role) return false + const r = role.toLowerCase() + return STAFF_ROLES.includes(r as (typeof STAFF_ROLES)[number]) || r.includes('admin') || r.includes('editor') +} diff --git a/blog-wot-uniapp/src/env.d.ts b/blog-wot-uniapp/src/env.d.ts new file mode 100644 index 0000000..c454ab5 --- /dev/null +++ b/blog-wot-uniapp/src/env.d.ts @@ -0,0 +1,10 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_BASE: string + readonly VITE_UPLOAD_BASE: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/blog-wot-uniapp/src/main.ts b/blog-wot-uniapp/src/main.ts new file mode 100644 index 0000000..4294d8e --- /dev/null +++ b/blog-wot-uniapp/src/main.ts @@ -0,0 +1,12 @@ +import { createSSRApp } from 'vue' +import * as Pinia from 'pinia' +import App from './App.vue' + +export function createApp() { + const app = createSSRApp(App) + app.use(Pinia.createPinia()) + return { + app, + Pinia, + } +} diff --git a/blog-wot-uniapp/src/manifest.json b/blog-wot-uniapp/src/manifest.json new file mode 100644 index 0000000..e672f98 --- /dev/null +++ b/blog-wot-uniapp/src/manifest.json @@ -0,0 +1,74 @@ +{ + "name" : "年糕崽崽", + "appid" : "__UNI__184857B", + "description" : "年糕崽崽数字花园 · UniApp", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "uniStatistics" : { + "enable" : false + }, + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : {}, + "distribute" : { + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {}, + "sdkConfigs" : {} + } + }, + "h5" : { + "darkmode" : true, + "themeLocation" : "theme.json" + }, + "quickapp" : {}, + "mp-weixin" : { + "appid" : "wx8f3891eaad380949", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true, + "darkmode" : true, + "themeLocation" : "theme.json", + "optimization" : { + "subPackages" : true + }, + "lazyCodeLoading" : "requiredComponents" + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "vueVersion" : "3" +} diff --git a/blog-wot-uniapp/src/pages.json b/blog-wot-uniapp/src/pages.json new file mode 100644 index 0000000..f452c1d --- /dev/null +++ b/blog-wot-uniapp/src/pages.json @@ -0,0 +1,348 @@ +{ + "easycom": { + "autoscan": true, + "custom": { + "^wd-(.*)": "@wot-ui/ui/components/wd-$1/wd-$1.vue", + "^mp-html": "mp-html/dist/uni-app/components/mp-html/mp-html.vue", + "^Content(.*)": "@/subPackages/content/components/Content$1.vue", + "^Staff(.*)": "@/subPackages/content/components/Staff$1.vue" + } + }, + "pages": [ + { + "path": "pages/home/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "首页", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/explore/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "功能入口", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/mine/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "我的", + "enablePullDownRefresh": true + } + } + ], + "subPackages": [ + { + "root": "subPackages/content", + "pages": [ + { + "path": "pages/login/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "登录" + } + }, + { + "path": "pages/theme/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "主题" + } + }, + { + "path": "pages/blog/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "思考" + } + }, + { + "path": "pages/blog/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "文章", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/blog/ppt", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "PPT", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/columns/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "专栏" + } + }, + { + "path": "pages/columns/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "专栏详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/works/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "作品" + } + }, + { + "path": "pages/works/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "作品详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/videos/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "视频" + } + }, + { + "path": "pages/videos/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "视频详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/videos/album", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "专辑", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/snippets/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "代码" + } + }, + { + "path": "pages/services/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "合作" + } + }, + { + "path": "pages/about/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "关于" + } + } + ] + }, + { + "root": "subPackages/admin", + "pages": [ + { + "path": "pages/dashboard/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "工作台" + } + }, + { + "path": "pages/explore/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "功能入口" + } + }, + { + "path": "pages/analytics/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "数据分析" + } + }, + { + "path": "pages/resource/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "列表" + } + }, + { + "path": "pages/resource/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑" + } + }, + { + "path": "pages/profile/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "个人中心" + } + }, + { + "path": "pages/posts/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "文章管理" + } + }, + { + "path": "pages/posts/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑文章" + } + }, + { + "path": "pages/works/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "作品管理" + } + }, + { + "path": "pages/works/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑作品" + } + }, + { + "path": "pages/videos/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "视频列表" + } + }, + { + "path": "pages/videos/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑视频" + } + }, + { + "path": "pages/video-albums/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑专辑" + } + }, + { + "path": "pages/snippets/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑代码" + } + }, + { + "path": "pages/columns/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑专栏" + } + }, + { + "path": "pages/attachments/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "附件库" + } + }, + { + "path": "pages/inquiries/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "合作咨询" + } + }, + { + "path": "pages/about/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "关于页面" + } + }, + { + "path": "pages/settings/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "全局配置" + } + }, + { + "path": "pages/oss-configs/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "OSS配置" + } + }, + { + "path": "pages/users/list", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "用户管理" + } + }, + { + "path": "pages/users/form", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "编辑用户" + } + }, + { + "path": "pages/logs/operation", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "操作日志" + } + }, + { + "path": "pages/logs/access", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "访问日志" + } + } + ] + } + ], + "preloadRule": { + "pages/home/index": { + "network": "all", + "packages": ["subPackages/content"] + }, + "pages/explore/index": { + "network": "all", + "packages": ["subPackages/content"] + } + }, + "globalStyle": { + "backgroundColor": "@bgColor", + "backgroundColorBottom": "@bgColorBottom", + "backgroundColorTop": "@bgColorTop", + "backgroundTextStyle": "@bgTxtStyle", + "navigationBarBackgroundColor": "@navBgColor", + "navigationBarTextStyle": "@navTxtStyle", + "navigationBarTitleText": "年糕崽崽", + "navigationStyle": "custom" + } +} diff --git a/blog-wot-uniapp/src/pages/explore/index.vue b/blog-wot-uniapp/src/pages/explore/index.vue new file mode 100644 index 0000000..323ee4c --- /dev/null +++ b/blog-wot-uniapp/src/pages/explore/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/blog-wot-uniapp/src/pages/home/index.vue b/blog-wot-uniapp/src/pages/home/index.vue new file mode 100644 index 0000000..47c7d3a --- /dev/null +++ b/blog-wot-uniapp/src/pages/home/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/blog-wot-uniapp/src/pages/mine/index.vue b/blog-wot-uniapp/src/pages/mine/index.vue new file mode 100644 index 0000000..195a280 --- /dev/null +++ b/blog-wot-uniapp/src/pages/mine/index.vue @@ -0,0 +1,263 @@ + + + diff --git a/blog-wot-uniapp/src/resolvers/wot-ui-resolver.ts b/blog-wot-uniapp/src/resolvers/wot-ui-resolver.ts new file mode 100644 index 0000000..085421e --- /dev/null +++ b/blog-wot-uniapp/src/resolvers/wot-ui-resolver.ts @@ -0,0 +1,17 @@ +import type { ComponentResolver } from '@uni-helper/vite-plugin-uni-components' +import { kebabCase } from '@uni-helper/vite-plugin-uni-components' + +export function WotResolver(): ComponentResolver { + return { + type: 'component', + resolve: (name: string) => { + if (name.match(/^Wd[A-Z]/)) { + const compName = kebabCase(name) + return { + name, + from: `@wot-ui/ui/components/${compName}/${compName}.vue`, + } + } + }, + } +} diff --git a/blog-wot-uniapp/src/static/default-avatar.svg b/blog-wot-uniapp/src/static/default-avatar.svg new file mode 100644 index 0000000..21bb93e --- /dev/null +++ b/blog-wot-uniapp/src/static/default-avatar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-wot-uniapp/src/static/github.svg b/blog-wot-uniapp/src/static/github.svg new file mode 100644 index 0000000..94af9fc --- /dev/null +++ b/blog-wot-uniapp/src/static/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-wot-uniapp/src/static/logo.svg b/blog-wot-uniapp/src/static/logo.svg new file mode 100644 index 0000000..21bb93e --- /dev/null +++ b/blog-wot-uniapp/src/static/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-wot-uniapp/src/styles/art-fonts.scss b/blog-wot-uniapp/src/styles/art-fonts.scss new file mode 100644 index 0000000..8576fd7 --- /dev/null +++ b/blog-wot-uniapp/src/styles/art-fonts.scss @@ -0,0 +1,48 @@ +/** + * 从 PC 端 @fontsource 引入的本地字体(woff)。 + * 放在 assets(非 static):小程序 CSS 会把 <40KB 资源打成 base64, + * 避免再拷一份到 static 造成双倍体积。 + * + * 与 PC 差异:Noto Sans SC 单 weight 约 1.5MB,主包装不下,故未引入; + * art-tokens 仍写 Noto 名,实际中文正文回退 PingFang SC / 系统黑体。 + * 标题/eyebrow 用 Playfair + JetBrains,与 PC 英文层对齐。 + */ + +/* Playfair Display — 标题 / serif italic */ +@font-face { + font-family: 'Playfair Display'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('@/assets/fonts/playfair-display-latin-400-normal.woff') format('woff'); +} +@font-face { + font-family: 'Playfair Display'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url('@/assets/fonts/playfair-display-latin-400-italic.woff') format('woff'); +} +@font-face { + font-family: 'Playfair Display'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('@/assets/fonts/playfair-display-latin-600-normal.woff') format('woff'); +} +@font-face { + font-family: 'Playfair Display'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('@/assets/fonts/playfair-display-latin-700-normal.woff') format('woff'); +} + +/* JetBrains Mono — eyebrow / mono label */ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('@/assets/fonts/jetbrains-mono-latin-400-normal.woff') format('woff'); +} diff --git a/blog-wot-uniapp/src/styles/art-tokens.scss b/blog-wot-uniapp/src/styles/art-tokens.scss new file mode 100644 index 0000000..f1a84d7 --- /dev/null +++ b/blog-wot-uniapp/src/styles/art-tokens.scss @@ -0,0 +1,322 @@ +/* Art design tokens — ported from client/src/style.css */ + +/* 小程序里 min-height:100% 常失效,用 100vh 铺满视口;底色走 --art-bg,避免硬编码浅色闪屏 */ +page { + min-height: 100vh; + background-color: rgb(var(--art-bg)); +} + +page, +.page-root { + --art-bg: 250, 248, 244; + --art-surface: 255, 255, 255; + --art-border: rgba(0, 0, 0, 0.08); + --art-text: 23, 23, 23; + --art-muted: 107, 107, 107; + --art-accent: 212, 179, 131; + --art-error: 239, 68, 68; + --art-admin-bg: 10, 10, 10; + --art-admin-card: 18, 18, 20; + --art-admin-hover: 26, 26, 28; + --art-nav-bg: rgba(250, 248, 244, 0.9); + --art-card-bg: rgba(255, 255, 255, 0.55); + --art-card-border: rgba(0, 0, 0, 0.07); + --art-hover-border: rgba(212, 179, 131, 0.55); + --art-shadow: 0 18px 40px -12px rgba(80, 55, 20, 0.14); + --art-overlay: rgba(0, 0, 0, 0.45); + background-color: rgb(var(--art-bg)); + color: rgb(var(--art-text)); + font-family: 'Noto Sans SC', 'PingFang SC', 'Helvetica Neue', sans-serif; + min-height: 100vh; + box-sizing: border-box; +} + +.page-root.theme-dark, +.theme-dark { + --art-bg: 5, 5, 5; + --art-surface: 18, 18, 20; + --art-border: rgba(255, 255, 255, 0.08); + --art-text: 236, 236, 236; + --art-muted: 136, 136, 136; + --art-accent: 212, 179, 131; + --art-nav-bg: rgba(5, 5, 5, 0.85); + --art-card-bg: rgba(255, 255, 255, 0.02); + --art-card-border: rgba(255, 255, 255, 0.06); + --art-hover-border: rgba(212, 179, 131, 0.3); + --art-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.5); + --art-overlay: rgba(0, 0, 0, 0.9); + background-color: rgb(var(--art-bg)); + color: rgb(var(--art-text)); +} + +.page-root.admin-mode, +.admin-mode { + --art-bg: 10, 10, 10; + --art-surface: 18, 18, 20; + --art-text: 236, 236, 236; + --art-muted: 136, 136, 136; + background-color: rgb(var(--art-admin-bg)); +} + +.glass-nav { + background: var(--art-nav-bg); + backdrop-filter: blur(20px); + border-bottom: 1px solid var(--art-card-border); +} + +.art-card { + background: var(--art-card-bg); + border: 1px solid var(--art-card-border); + border-radius: 16rpx; + overflow: hidden; + position: relative; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.35s ease, box-shadow 0.35s ease; +} + +.art-card::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(180deg, transparent 0%, rgba(212, 179, 131, 0.08) 100%); + opacity: 0; + transition: opacity 0.35s ease; + pointer-events: none; + z-index: 0; +} + +.art-card-press:active { + transform: translateY(-8rpx); + border-color: var(--art-hover-border); + box-shadow: var(--art-shadow); +} + +.art-card-press:active::before { + opacity: 1; +} + +.admin-card { + background: rgb(var(--art-admin-card)); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 16rpx; + transition: background 0.25s ease, border-color 0.25s ease; +} + +.admin-card:active { + background: rgb(var(--art-admin-hover)); + border-color: rgba(212, 179, 131, 0.25); +} + +.text-art-accent { color: rgb(var(--art-accent)); } +.text-art-muted { color: rgb(var(--art-muted)); } +.text-art-text { color: rgb(var(--art-text)); } + +.font-serif-italic { + font-family: 'Playfair Display', 'Noto Serif SC', serif; + font-style: italic; +} + +.font-mono-label { + font-family: 'JetBrains Mono', 'Menlo', monospace; + letter-spacing: 0.12em; + text-transform: uppercase; + font-size: 22rpx; +} + +.page-pad { padding: 32rpx 32rpx 200rpx; } +.page-pad-tab { padding-bottom: 200rpx; } + +.section-title { + font-family: 'Playfair Display', 'Noto Serif SC', serif; + font-style: italic; + font-size: 48rpx; + color: rgb(var(--art-text)); +} + +.hero-eyebrow { + color: rgb(var(--art-accent)); + font-family: 'JetBrains Mono', monospace; + font-size: 22rpx; + letter-spacing: 0.2em; + text-transform: uppercase; + margin-bottom: 24rpx; +} + +@keyframes art-reveal { + from { opacity: 0; transform: translateY(24rpx); } + to { opacity: 1; transform: translateY(0); } +} + +.animate-reveal { + animation: art-reveal 0.55s cubic-bezier(0.16, 1, 0.3, 1) both; +} + +.animate-reveal-delay { + animation: art-reveal 0.55s cubic-bezier(0.16, 1, 0.3, 1) 0.12s both; +} + +.fab-float { + transition: transform 0.2s ease, opacity 0.2s ease; +} +.fab-float:active { + transform: scale(0.92); +} + +/* Article markdown (mp-html / rich content) */ +.article-md { + font-size: 30rpx; + line-height: 1.85; + color: rgb(var(--art-text)); + word-break: break-word; +} +.article-md h1, .article-md h2, .article-md h3 { + font-family: 'Playfair Display', 'Noto Serif SC', serif; + margin: 1.2em 0 0.5em; + line-height: 1.35; +} +.article-md h1 { font-size: 44rpx; } +.article-md h2 { font-size: 38rpx; } +.article-md h3 { font-size: 34rpx; } +.article-md p { margin: 0.75em 0; } +.article-md a { color: rgb(var(--art-accent)); text-decoration: underline; } +.article-md blockquote { + margin: 1em 0; + padding: 0.5em 1em; + border-left: 6rpx solid rgb(var(--art-accent)); + color: rgb(var(--art-muted)); + background: rgba(212, 179, 131, 0.08); +} +.article-md ul, .article-md ol { padding-left: 1.4em; margin: 0.75em 0; } +.article-md img { max-width: 100%; border-radius: 12rpx; margin: 0.75em 0; } +.article-md code { + font-family: 'JetBrains Mono', Menlo, monospace; + font-size: 0.88em; + background: rgba(127, 127, 127, 0.12); + padding: 0.1em 0.35em; + border-radius: 6rpx; +} +.article-md pre { + background: #1e1e1e; + color: #e8e8e8; + padding: 24rpx; + border-radius: 16rpx; + overflow-x: auto; + margin: 1em 0; + font-size: 24rpx; + line-height: 1.6; +} +.article-md pre code { background: transparent; padding: 0; color: inherit; } +.article-md table { width: 100%; border-collapse: collapse; margin: 1em 0; font-size: 26rpx; } +.article-md th, .article-md td { border: 1px solid var(--art-border); padding: 12rpx; } + +/* wot-ui 深浅色兜底:避免默认浅色组件压在 art 深色底上 */ +.page-root, +.theme-dark { + --wot-navbar-color: rgb(var(--art-text)); + --wot-navbar-desc-color: rgb(var(--art-text)); + --wot-navbar-bg: rgb(var(--art-bg)); +} + +/* C 端暗色:输入保持轻量透明,贴合卡片氛围 */ +.theme-dark:not(.admin-mode) .wd-input, +.page-root.theme-dark:not(.admin-mode) .wd-input { + --wot-input-bg: transparent; + --wot-color-bg: rgb(var(--art-surface)); + --wot-input-inner-color: rgb(var(--art-text)); + --wot-input-inner-placeholder-color: rgb(var(--art-muted)); + color: rgb(var(--art-text)); +} + +.theme-dark:not(.admin-mode) .wd-input__inner, +.page-root.theme-dark:not(.admin-mode) .wd-input__inner { + color: rgb(var(--art-text)) !important; +} + +.theme-dark:not(.admin-mode) .wd-textarea, +.page-root.theme-dark:not(.admin-mode) .wd-textarea { + --wot-textarea-bg: transparent; + --wot-textarea-inner-color: rgb(var(--art-text)); + --wot-textarea-inner-placeholder-color: rgb(var(--art-muted)); +} + +.theme-dark .wd-cell, +.page-root.theme-dark .wd-cell { + --wot-cell-bg: rgb(var(--art-surface)); + --wot-cell-title-color: rgb(var(--art-text)); + --wot-cell-value-color: rgb(var(--art-muted)); + --wot-cell-label-color: rgb(var(--art-muted)); +} + +/* 后台表单:可见底色 + 边框,避免与 admin-card 融成一片 */ +.admin-mode .admin-card.form-card, +.page-root.admin-mode .admin-card.form-card { + padding: 24rpx; +} + +.admin-mode .wd-input, +.page-root.admin-mode .wd-input, +.admin-mode .form-card .wd-input, +.page-root.admin-mode .form-card .wd-input { + --wot-input-bg: rgba(255, 255, 255, 0.06); + --wot-input-inner-color: rgb(var(--art-text)); + --wot-input-inner-placeholder-color: rgb(var(--art-muted)); + --wot-color-bg: rgba(255, 255, 255, 0.06); + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 12rpx; + margin-bottom: 16rpx; + padding: 4rpx 8rpx; + box-sizing: border-box; + color: rgb(var(--art-text)); +} + +.admin-mode .wd-input__inner, +.page-root.admin-mode .wd-input__inner { + color: rgb(var(--art-text)) !important; +} + +.admin-mode .wd-textarea, +.page-root.admin-mode .wd-textarea, +.admin-mode .form-card .wd-textarea, +.page-root.admin-mode .form-card .wd-textarea { + --wot-textarea-bg: rgba(255, 255, 255, 0.06); + --wot-textarea-inner-color: rgb(var(--art-text)); + --wot-textarea-inner-placeholder-color: rgb(var(--art-muted)); + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 12rpx; + margin-bottom: 16rpx; + padding: 8rpx; + box-sizing: border-box; + color: rgb(var(--art-text)); +} + +.admin-mode .admin-card { + border-color: rgba(255, 255, 255, 0.1); +} + +.admin-form-field { + display: flex; + flex-direction: column; + gap: 10rpx; + margin-bottom: 8rpx; +} + +.admin-form-field__label { + font-size: 24rpx; + color: rgb(var(--art-muted)); + letter-spacing: 0.04em; +} + +/* ActionSheet / Popup:暗色下避免默认白底 */ +.theme-dark, +.page-root.theme-dark { + --wot-action-sheet-bg: rgb(var(--art-surface)); + --wot-action-sheet-color: rgb(var(--art-text)); + --wot-action-sheet-cancel-color: rgb(var(--art-muted)); + --wot-popup-bg: rgb(var(--art-surface)); + --wot-color-bg: rgb(var(--art-surface)); + --wot-color-title: rgb(var(--art-text)); + --wot-color-content: rgb(var(--art-text)); + --wot-color-secondary: rgb(var(--art-muted)); + --wot-color-border: var(--art-border); +} diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminBarChart.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminBarChart.vue new file mode 100644 index 0000000..15d2a6a --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminBarChart.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminDetailDrawer.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminDetailDrawer.vue new file mode 100644 index 0000000..97b5954 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminDetailDrawer.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminFilterBar.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminFilterBar.vue new file mode 100644 index 0000000..67b5cd0 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminFilterBar.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminFormField.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminFormField.vue new file mode 100644 index 0000000..b11e226 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminFormField.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminLineChart.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminLineChart.vue new file mode 100644 index 0000000..d764400 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminLineChart.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminMediaPicker.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminMediaPicker.vue new file mode 100644 index 0000000..db8ee12 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminMediaPicker.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/components/AdminStatusBadge.vue b/blog-wot-uniapp/src/subPackages/admin/components/AdminStatusBadge.vue new file mode 100644 index 0000000..76959ca --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/components/AdminStatusBadge.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/composables/useAdminGuard.ts b/blog-wot-uniapp/src/subPackages/admin/composables/useAdminGuard.ts new file mode 100644 index 0000000..3cf06e8 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/composables/useAdminGuard.ts @@ -0,0 +1,20 @@ +/** + * 后台页鉴权守卫:未登录或无员工角色则回我的页。 + */ +import { useAuth } from '@/composables/useAuth' +import { useAppMode } from '@/composables/useAppMode' + +export function useAdminGuard() { + const { isAuthenticated } = useAuth() + const { canEnterAdmin } = useAppMode() + + function guardAdmin(): boolean { + if (!isAuthenticated() || !canEnterAdmin.value) { + uni.reLaunch({ url: '/pages/mine/index' }) + return false + } + return true + } + + return { guardAdmin, isAuthenticated, canEnterAdmin } +} diff --git a/blog-wot-uniapp/src/subPackages/admin/config/resourceSchemas.ts b/blog-wot-uniapp/src/subPackages/admin/config/resourceSchemas.ts new file mode 100644 index 0000000..50a9b2f --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/config/resourceSchemas.ts @@ -0,0 +1,380 @@ +/** + * 简单资源 Schema 注册表:驱动通用 list/form,消灭默认 4 字段 + JSON 主路径。 + * 复杂模块(posts/works/videos/attachments/settings/about/inquiries)走专用页,不在此注册。 + */ + +export type FieldType = + | 'text' + | 'textarea' + | 'number' + | 'switch' + | 'select' + | 'media' + | 'rating' + +export interface SchemaField { + key: string + label: string + type: FieldType + placeholder?: string + /** select 选项 */ + options?: { label: string, value: string | number }[] + /** 只读(如系统模板 slug) */ + readonly?: boolean + /** 编辑态才显示 */ + editOnly?: boolean +} + +export interface SchemaFilter { + key: string + label: string + type: 'text' | 'select' + options?: { label: string, value: string | number }[] +} + +export interface ResourceSchema { + title: string + /** 真只读:无新建/删除/编辑,点行开详情抽屉 */ + readonly?: boolean + /** 禁止编辑(可新建删除),如邮箱后缀 */ + noEdit?: boolean + /** 页内新建(邮箱后缀) */ + inlineCreate?: boolean + /** 服务端分页 */ + serverPaging?: boolean + /** 默认 pageSize */ + pageSize?: number + /** 列表主标题字段候选 */ + titleKeys?: string[] + /** 列表副标题字段候选 */ + subtitleKeys?: string[] + /** 封面/头像字段 */ + coverKey?: string + /** 状态字段(用于徽章) */ + statusKey?: string + /** 状态文案映射 */ + statusMap?: Record + filters?: SchemaFilter[] + fields: SchemaField[] + /** 本地关键词过滤字段 */ + localSearchKeys?: string[] +} + +const CODE_TYPE_OPTIONS = [ + { label: '前端', value: 0 }, + { label: '后端', value: 1 }, + { label: '其他', value: 2 }, +] + +/** 简单资源 Schema;未列出的走兜底 */ +export const RESOURCE_SCHEMAS: Record = { + categories: { + title: '分类管理', + titleKeys: ['name'], + subtitleKeys: ['slug', 'sortOrder'], + localSearchKeys: ['name', 'slug'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'slug', label: 'Slug', type: 'text' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + columns: { + title: '专栏管理', + titleKeys: ['name', 'title'], + subtitleKeys: ['description', 'sortOrder'], + coverKey: 'cover', + statusKey: 'isActive', + statusMap: { '1': '启用', '0': '停用', true: '启用', false: '停用' }, + filters: [ + { key: 'keyword', label: '关键词', type: 'text' }, + { + key: 'isActive', + label: '状态', + type: 'select', + options: [ + { label: '全部', value: '' }, + { label: '启用', value: 1 }, + { label: '停用', value: 0 }, + ], + }, + ], + localSearchKeys: ['name', 'title', 'description'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'cover', label: '封面', type: 'media' }, + { key: 'isActive', label: '启用', type: 'switch' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'video-categories': { + title: '视频分类', + titleKeys: ['name'], + subtitleKeys: ['slug', 'sortOrder'], + localSearchKeys: ['name', 'slug'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'slug', label: 'Slug', type: 'text' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'video-albums': { + title: '视频专辑', + titleKeys: ['name'], + subtitleKeys: ['categoryName', 'videoCount'], + coverKey: 'cover', + statusKey: 'isActive', + statusMap: { '1': '启用', '0': '停用', true: '启用', false: '停用' }, + localSearchKeys: ['name', 'description'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'categoryId', label: '分类ID', type: 'number' }, + { key: 'cover', label: '封面', type: 'media' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'isActive', label: '启用', type: 'switch' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + snippets: { + title: '代码片段', + titleKeys: ['title'], + subtitleKeys: ['description'], + localSearchKeys: ['title', 'description'], + fields: [ + { key: 'title', label: '标题', type: 'text' }, + { key: 'codeTypeId', label: '分类ID', type: 'number' }, + { key: 'code', label: '代码', type: 'textarea' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'code-types': { + title: '代码分类', + titleKeys: ['name'], + subtitleKeys: ['category'], + localSearchKeys: ['name'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'category', label: '类别', type: 'select', options: CODE_TYPE_OPTIONS }, + ], + }, + tags: { + title: '标签管理', + titleKeys: ['name'], + subtitleKeys: ['slug'], + localSearchKeys: ['name', 'slug'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'slug', label: 'Slug', type: 'text' }, + ], + }, + testimonials: { + title: '客户评价', + titleKeys: ['name'], + subtitleKeys: ['role', 'rating'], + coverKey: 'avatar', + filters: [ + { key: 'keyword', label: '关键词', type: 'text' }, + { + key: 'rating', + label: '评分', + type: 'select', + options: [ + { label: '全部', value: '' }, + { label: '5星', value: 5 }, + { label: '4星', value: 4 }, + { label: '3星', value: 3 }, + ], + }, + ], + localSearchKeys: ['name', 'role', 'content'], + fields: [ + { key: 'name', label: '姓名', type: 'text' }, + { key: 'role', label: '职位', type: 'text' }, + { key: 'avatar', label: '头像', type: 'media' }, + { key: 'rating', label: '评分', type: 'rating' }, + { key: 'content', label: '评价内容', type: 'textarea' }, + ], + }, + partners: { + title: '合作伙伴', + titleKeys: ['name'], + subtitleKeys: ['url', 'description'], + coverKey: 'logo', + localSearchKeys: ['name', 'description', 'url'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'logo', label: 'Logo', type: 'media' }, + { key: 'url', label: '链接', type: 'text' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'email-suffixes': { + title: '邮箱配置', + noEdit: true, + inlineCreate: true, + titleKeys: ['suffix'], + subtitleKeys: ['sortOrder', 'isActive'], + statusKey: 'isActive', + statusMap: { '1': '启用', '0': '停用', true: '启用', false: '停用' }, + localSearchKeys: ['suffix'], + fields: [ + { key: 'suffix', label: '后缀', type: 'text', placeholder: '@example.com' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'isActive', label: '启用', type: 'switch' }, + ], + }, + users: { + title: '用户管理', + serverPaging: true, + pageSize: 10, + titleKeys: ['username'], + subtitleKeys: ['email', 'role'], + coverKey: 'avatar', + statusKey: 'isActive', + statusMap: { '1': '启用', '0': '停用', true: '启用', false: '停用' }, + filters: [ + { key: 'keyword', label: '关键词', type: 'text' }, + { + key: 'role', + label: '角色', + type: 'select', + options: [ + { label: '全部', value: '' }, + { label: 'admin', value: 'admin' }, + { label: 'editor', value: 'editor' }, + { label: 'viewer', value: 'viewer' }, + ], + }, + { + key: 'isActive', + label: '状态', + type: 'select', + options: [ + { label: '全部', value: '' }, + { label: '启用', value: 1 }, + { label: '停用', value: 0 }, + ], + }, + ], + fields: [ + { key: 'username', label: '用户名', type: 'text' }, + { key: 'email', label: '邮箱', type: 'text' }, + { key: 'avatar', label: '头像', type: 'media' }, + { + key: 'role', + label: '角色', + type: 'select', + options: [ + { label: 'admin', value: 'admin' }, + { label: 'editor', value: 'editor' }, + { label: 'viewer', value: 'viewer' }, + ], + }, + { key: 'isActive', label: '启用', type: 'switch' }, + { key: 'bio', label: '简介', type: 'textarea' }, + { key: 'phone', label: '手机', type: 'text' }, + { key: 'wechat', label: '微信', type: 'text' }, + { key: 'wechatQrcode', label: '微信二维码', type: 'media' }, + ], + }, + roles: { + title: '角色管理', + titleKeys: ['name'], + subtitleKeys: ['description'], + localSearchKeys: ['name', 'description'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'attachment-categories': { + title: '附件分类', + titleKeys: ['name'], + subtitleKeys: ['sortOrder', 'description'], + localSearchKeys: ['name', 'description'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + }, + 'ppt-templates': { + title: 'PPT 模板', + titleKeys: ['name'], + subtitleKeys: ['slug', 'sortOrder'], + statusKey: 'isActive', + statusMap: { '1': '启用', '0': '停用', true: '启用', false: '停用' }, + localSearchKeys: ['name', 'slug'], + fields: [ + { key: 'name', label: '名称', type: 'text' }, + { key: 'slug', label: 'Slug', type: 'text' }, + { key: 'description', label: '描述', type: 'textarea' }, + { key: 'isDefault', label: '默认', type: 'switch' }, + { key: 'isActive', label: '启用', type: 'switch' }, + { key: 'sortOrder', label: '排序', type: 'number' }, + { key: 'config', label: '配置 JSON', type: 'textarea' }, + ], + }, + logs: { + title: '操作日志', + readonly: true, + serverPaging: true, + pageSize: 20, + titleKeys: ['action', 'path'], + subtitleKeys: ['username', 'createdAt', 'method', 'status'], + filters: [ + { key: 'action', label: '操作', type: 'text' }, + { key: 'method', label: '方法', type: 'text' }, + { key: 'status', label: '状态码', type: 'text' }, + ], + fields: [], + }, + 'access-logs': { + title: '访问日志', + readonly: true, + serverPaging: true, + pageSize: 20, + titleKeys: ['path'], + subtitleKeys: ['region', 'ip', 'createdAt', 'statusCode'], + filters: [ + { key: 'path', label: '路径', type: 'text' }, + { key: 'region', label: '地区', type: 'text' }, + ], + fields: [], + }, + /** 已拆专用页,保留兜底标题 */ + posts: { title: '文章管理', fields: [], titleKeys: ['title'] }, + works: { title: '作品管理', fields: [], titleKeys: ['title'] }, + videos: { title: '视频列表', fields: [], titleKeys: ['title'] }, + attachments: { title: '附件库', readonly: true, fields: [], titleKeys: ['originalName', 'fileName'] }, + inquiries: { title: '合作咨询', readonly: true, fields: [], titleKeys: ['name'] }, + 'oss-configs': { title: 'OSS配置', fields: [], titleKeys: ['name'] }, + about: { title: '关于页面', fields: [] }, + settings: { title: '全局配置', fields: [] }, +} + +export function getResourceSchema(resource: string): ResourceSchema { + return RESOURCE_SCHEMAS[resource] || { + title: resource || '资源管理', + titleKeys: ['title', 'name', 'username'], + subtitleKeys: ['description', 'createdAt'], + fields: [ + { key: 'title', label: '标题', type: 'text' }, + { key: 'name', label: '名称', type: 'text' }, + { key: 'description', label: '描述', type: 'textarea' }, + ], + } +} + +/** 从记录中按候选 key 取展示文案 */ +export function pickField(item: Record, keys?: string[]): string { + if (!keys?.length) return '' + for (const k of keys) { + const v = item[k] + if (v != null && v !== '') return String(v) + } + return '' +} diff --git a/blog-wot-uniapp/src/subPackages/admin/config/settingsSchema.ts b/blog-wot-uniapp/src/subPackages/admin/config/settingsSchema.ts new file mode 100644 index 0000000..22e8f5b --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/config/settingsSchema.ts @@ -0,0 +1,62 @@ +/** + * 全局配置 Schema(自 Web client settingsSchema 精简移植,供小程序设置页分 Tab 编辑) + */ + +export type SettingFieldType = 'text' | 'textarea' | 'number' | 'menu-checkboxes' | 'email' | 'homepage-json' + +export interface SettingSchemaItem { + key: string + label: string + type: SettingFieldType + group: 'site' | 'seo' | 'navigation' | 'homepage' | 'pagination' | 'contact' + default: string + description: string +} + +export const SETTING_GROUPS: { id: SettingSchemaItem['group'], label: string }[] = [ + { id: 'site', label: '站点信息' }, + { id: 'seo', label: 'SEO' }, + { id: 'navigation', label: '导航菜单' }, + { id: 'homepage', label: '首页内容' }, + { id: 'pagination', label: '分页设置' }, + { id: 'contact', label: '联系方式' }, +] + +export const MENU_OPTIONS = [ + { key: 'home', label: '首页' }, + { key: 'blog', label: '思考' }, + { key: 'columns', label: '专栏' }, + { key: 'works', label: '作品' }, + { key: 'videos', label: '视频' }, + { key: 'snippets', label: '代码' }, + { key: 'about', label: '关于' }, + { key: 'services', label: '合作' }, +] + +export const SETTINGS_SCHEMA: SettingSchemaItem[] = [ + { key: 'site_title', label: '网站标题', type: 'text', group: 'site', default: '年糕崽崽.Dev', description: '站点名称' }, + { key: 'site_author', label: '网站作者', type: 'text', group: 'site', default: '', description: '作者名' }, + { key: 'site_description', label: '网站描述', type: 'textarea', group: 'seo', default: '', description: 'SEO 描述' }, + { key: 'site_keywords', label: '网站关键词', type: 'textarea', group: 'seo', default: '', description: '逗号分隔' }, + { + key: 'visible_menus', + label: '前台菜单', + type: 'menu-checkboxes', + group: 'navigation', + default: '["home","blog","columns","works","videos","snippets","about","services"]', + description: '控制前台导航显示', + }, + { + key: 'homepage_config', + label: '首页配置 JSON', + type: 'homepage-json', + group: 'homepage', + default: '{}', + description: 'Hero / Bento 等首页结构,小程序端用 JSON 编辑', + }, + { key: 'posts_per_page', label: '文章每页', type: 'number', group: 'pagination', default: '10', description: '' }, + { key: 'works_per_page', label: '作品每页', type: 'number', group: 'pagination', default: '12', description: '' }, + { key: 'snippets_per_page', label: '代码每页', type: 'number', group: 'pagination', default: '12', description: '' }, + { key: 'footer_icp', label: 'ICP 备案号', type: 'text', group: 'contact', default: '', description: '' }, + { key: 'contact_email', label: '联系邮箱', type: 'email', group: 'contact', default: '', description: '' }, +] diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/about/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/about/index.vue new file mode 100644 index 0000000..8396328 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/about/index.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/analytics/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/analytics/index.vue new file mode 100644 index 0000000..8b776e9 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/analytics/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/attachments/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/attachments/index.vue new file mode 100644 index 0000000..5a0ad1c --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/attachments/index.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/columns/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/columns/form.vue new file mode 100644 index 0000000..172f68a --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/columns/form.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/dashboard/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/dashboard/index.vue new file mode 100644 index 0000000..b0224ee --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/dashboard/index.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/explore/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/explore/index.vue new file mode 100644 index 0000000..4b46201 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/explore/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/inquiries/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/inquiries/list.vue new file mode 100644 index 0000000..99cf8d4 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/inquiries/list.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/oss-configs/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/oss-configs/index.vue new file mode 100644 index 0000000..3ce355d --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/oss-configs/index.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/posts/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/posts/form.vue new file mode 100644 index 0000000..72ed2e3 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/posts/form.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/posts/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/posts/list.vue new file mode 100644 index 0000000..04bf50a --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/posts/list.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/profile/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/profile/index.vue new file mode 100644 index 0000000..6ac998f --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/profile/index.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/resource/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/resource/form.vue new file mode 100644 index 0000000..637a130 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/resource/form.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/resource/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/resource/list.vue new file mode 100644 index 0000000..077aa7c --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/resource/list.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/settings/index.vue b/blog-wot-uniapp/src/subPackages/admin/pages/settings/index.vue new file mode 100644 index 0000000..9c5c581 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/settings/index.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/snippets/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/snippets/form.vue new file mode 100644 index 0000000..fde1638 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/snippets/form.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/users/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/users/form.vue new file mode 100644 index 0000000..ee4204d --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/users/form.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/users/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/users/list.vue new file mode 100644 index 0000000..73d8730 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/users/list.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/video-albums/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/video-albums/form.vue new file mode 100644 index 0000000..9f88c2a --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/video-albums/form.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/videos/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/videos/form.vue new file mode 100644 index 0000000..f233a0d --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/videos/form.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/videos/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/videos/list.vue new file mode 100644 index 0000000..04ff7fd --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/videos/list.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/works/form.vue b/blog-wot-uniapp/src/subPackages/admin/pages/works/form.vue new file mode 100644 index 0000000..c039bde --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/works/form.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/admin/pages/works/list.vue b/blog-wot-uniapp/src/subPackages/admin/pages/works/list.vue new file mode 100644 index 0000000..cee157e --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/admin/pages/works/list.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/components/CodeBlock.vue b/blog-wot-uniapp/src/subPackages/content/components/CodeBlock.vue new file mode 100644 index 0000000..6af6c8f --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/components/CodeBlock.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/components/ContentPageHeader.vue b/blog-wot-uniapp/src/subPackages/content/components/ContentPageHeader.vue new file mode 100644 index 0000000..6286217 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/components/ContentPageHeader.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/components/StaffLoginForm.vue b/blog-wot-uniapp/src/subPackages/content/components/StaffLoginForm.vue new file mode 100644 index 0000000..b7ea03e --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/components/StaffLoginForm.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/lib/codeHighlight.ts b/blog-wot-uniapp/src/subPackages/content/lib/codeHighlight.ts new file mode 100644 index 0000000..02b4c7d --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/lib/codeHighlight.ts @@ -0,0 +1,24 @@ +/** + * 代码语言别名:对齐 PC client/src/utils/codeHighlight.ts + * 放在 content/lib,避免分包 utils 与主包 utils 路径冲突。 + */ +const LANGUAGE_ALIASES: Record = { + js: 'javascript', + ts: 'typescript', + py: 'python', + rb: 'ruby', + sh: 'bash', + yml: 'yaml', + md: 'markdown', + xml: 'xml', + svg: 'xml', + noise: 'xml', +} + +/** 把业务侧语言名解析成 highlight.js 注册名 */ +export function resolveHighlightLanguage(typeName?: string): string { + if (!typeName) return 'plaintext' + const key = typeName.trim().toLowerCase() + if (!key) return 'plaintext' + return LANGUAGE_ALIASES[key] || key +} diff --git a/blog-wot-uniapp/src/subPackages/content/lib/markdownRenderer.ts b/blog-wot-uniapp/src/subPackages/content/lib/markdownRenderer.ts new file mode 100644 index 0000000..565b2d9 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/lib/markdownRenderer.ts @@ -0,0 +1,120 @@ +/** + * Markdown 渲染:marked + 树摇 highlight.js。 + * 放在 content/lib(勿用分包 utils,会与主包 utils 撞路径导致 ENOENT)。 + * 不做行号(对齐 PC 移动端)。 + */ +import { marked, type Tokens } from 'marked' +import type { HLJSApi, LanguageFn } from 'highlight.js' +import hljsCore from 'highlight.js/lib/core' +import javascript from 'highlight.js/lib/languages/javascript' +import typescript from 'highlight.js/lib/languages/typescript' +import python from 'highlight.js/lib/languages/python' +import go from 'highlight.js/lib/languages/go' +import java from 'highlight.js/lib/languages/java' +import css from 'highlight.js/lib/languages/css' +import xml from 'highlight.js/lib/languages/xml' +import json from 'highlight.js/lib/languages/json' +import bash from 'highlight.js/lib/languages/bash' +import sql from 'highlight.js/lib/languages/sql' +import yaml from 'highlight.js/lib/languages/yaml' +import markdown from 'highlight.js/lib/languages/markdown' +import { resolveHighlightLanguage } from './codeHighlight' +import { rewriteHtmlMediaUrls } from '@/utils/request' + +const LANGUAGE_REGISTRY: Array<[string, LanguageFn]> = [ + ['javascript', javascript], + ['typescript', typescript], + ['python', python], + ['go', go], + ['java', java], + ['css', css], + ['xml', xml], + ['html', xml], + ['json', json], + ['bash', bash], + ['sh', bash], + ['sql', sql], + ['yaml', yaml], + ['yml', yaml], + ['markdown', markdown], + ['md', markdown], +] + +let hljsInstance: HLJSApi | null = null +let markedReady = false + +function getHljs(): HLJSApi { + if (!hljsInstance) { + hljsInstance = hljsCore + for (const [name, register] of LANGUAGE_REGISTRY) { + hljsInstance.registerLanguage(name, register) + } + } + return hljsInstance +} + +/** 转义 HTML,避免未高亮代码注入 */ +function escapeHtml(text: string): string { + return text + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') +} + +/** + * 单段代码 → 带 Mac 风格头栏的 HTML(供 mp-html) + */ +export function highlightCodeBlock(code: string, language?: string): string { + const hljs = getHljs() + const lang = resolveHighlightLanguage(language) + let highlighted: string + if (lang && lang !== 'plaintext' && hljs.getLanguage(lang)) { + try { + highlighted = hljs.highlight(code, { language: lang, ignoreIllegals: true }).value + } + catch { + highlighted = escapeHtml(code) + } + } + else { + highlighted = escapeHtml(code) + } + const label = (lang && lang !== 'plaintext' ? lang : 'TEXT').toUpperCase() + return ` +
+
+
+ +
+ ${label} +
+
${highlighted}
+
` +} + +function ensureMarked() { + if (markedReady) return + const renderer = new marked.Renderer() + renderer.code = ({ text, lang }: Tokens.Code) => highlightCodeBlock(text, lang || '') + marked.setOptions({ + gfm: true, + breaks: false, + }) + marked.use({ renderer }) + markedReady = true +} + +/** 渲染 Markdown 为 HTML(含代码高亮块);相对图片路径拼上传域名 */ +export async function renderMarkdown(content: string): Promise { + if (!content) return '' + getHljs() + ensureMarked() + const html = marked.parse(content) as string + return rewriteHtmlMediaUrls(html) +} + +/** 预加载 highlight(进入详情/弹层前可调用) */ +export function preloadMarkdownRenderer(): void { + getHljs() +} diff --git a/blog-wot-uniapp/src/subPackages/content/pages/about/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/about/index.vue new file mode 100644 index 0000000..450cda8 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/about/index.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/blog/detail.vue b/blog-wot-uniapp/src/subPackages/content/pages/blog/detail.vue new file mode 100644 index 0000000..96fdf94 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/blog/detail.vue @@ -0,0 +1,368 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/blog/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/blog/index.vue new file mode 100644 index 0000000..b3873c5 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/blog/index.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/blog/ppt.vue b/blog-wot-uniapp/src/subPackages/content/pages/blog/ppt.vue new file mode 100644 index 0000000..e5dbad9 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/blog/ppt.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/columns/detail.vue b/blog-wot-uniapp/src/subPackages/content/pages/columns/detail.vue new file mode 100644 index 0000000..c26e177 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/columns/detail.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/columns/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/columns/index.vue new file mode 100644 index 0000000..b24ded7 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/columns/index.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/login/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/login/index.vue new file mode 100644 index 0000000..232ef3f --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/login/index.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/services/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/services/index.vue new file mode 100644 index 0000000..26a37d4 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/services/index.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/snippets/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/snippets/index.vue new file mode 100644 index 0000000..4e56e0a --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/snippets/index.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/theme/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/theme/index.vue new file mode 100644 index 0000000..ea31e49 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/theme/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/videos/album.vue b/blog-wot-uniapp/src/subPackages/content/pages/videos/album.vue new file mode 100644 index 0000000..53ffc46 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/videos/album.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/videos/detail.vue b/blog-wot-uniapp/src/subPackages/content/pages/videos/detail.vue new file mode 100644 index 0000000..1780170 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/videos/detail.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/videos/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/videos/index.vue new file mode 100644 index 0000000..52fc10e --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/videos/index.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/works/detail.vue b/blog-wot-uniapp/src/subPackages/content/pages/works/detail.vue new file mode 100644 index 0000000..13b1208 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/works/detail.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/blog-wot-uniapp/src/subPackages/content/pages/works/index.vue b/blog-wot-uniapp/src/subPackages/content/pages/works/index.vue new file mode 100644 index 0000000..216d931 --- /dev/null +++ b/blog-wot-uniapp/src/subPackages/content/pages/works/index.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/blog-wot-uniapp/src/theme.json b/blog-wot-uniapp/src/theme.json new file mode 100644 index 0000000..6c3cd07 --- /dev/null +++ b/blog-wot-uniapp/src/theme.json @@ -0,0 +1,26 @@ +{ + "light": { + "bgColor": "#faf8f4", + "bgColorBottom": "#faf8f4", + "bgColorTop": "#faf8f4", + "bgTxtStyle": "dark", + "navBgColor": "#faf8f4", + "navTxtStyle": "black", + "tabBgColor": "#ffffff", + "tabBorderStyle": "black", + "tabFontColor": "#6b6b6b", + "tabSelectedColor": "#d4b383" + }, + "dark": { + "bgColor": "#050505", + "bgColorBottom": "#050505", + "bgColorTop": "#050505", + "bgTxtStyle": "light", + "navBgColor": "#050505", + "navTxtStyle": "white", + "tabBgColor": "#121214", + "tabBorderStyle": "white", + "tabFontColor": "#888888", + "tabSelectedColor": "#d4b383" + } +} diff --git a/blog-wot-uniapp/src/uni.scss b/blog-wot-uniapp/src/uni.scss new file mode 100644 index 0000000..c4c8ed7 --- /dev/null +++ b/blog-wot-uniapp/src/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #d4b383; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color: #333; // 基本色 +$uni-text-color-inverse: #fff; // 反色 +$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable: #c0c0c0; + +/* 背景颜色 */ +$uni-bg-color: #fff; +$uni-bg-color-grey: #f8f8f8; +$uni-bg-color-hover: #f1f1f1; // 点击状态颜色 +$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色 + +/* 边框颜色 */ +$uni-border-color: #c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm: 12px; +$uni-font-size-base: 14px; +$uni-font-size-lg: 16px; + +/* 图片尺寸 */ +$uni-img-size-sm: 20px; +$uni-img-size-base: 26px; +$uni-img-size-lg: 40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2c405a; // 文章标题颜色 +$uni-font-size-title: 20px; +$uni-color-subtitle: #555; // 二级标题颜色 +$uni-font-size-subtitle: 18px; +$uni-color-paragraph: #3f536e; // 文章段落颜色 +$uni-font-size-paragraph: 15px; diff --git a/blog-wot-uniapp/src/utils/content.ts b/blog-wot-uniapp/src/utils/content.ts new file mode 100644 index 0000000..f4e13ea --- /dev/null +++ b/blog-wot-uniapp/src/utils/content.ts @@ -0,0 +1,62 @@ +/** + * 去掉 HTML 标签,用于列表摘要展示。 + * 保留实体简单还原,避免简介全是标签噪音。 + */ +export function stripHtml(html?: string | null): string { + if (!html) return '' + return String(html) + .replace(/<[^>]+>/g, ' ') + .replace(/ /gi, ' ') + .replace(/&/gi, '&') + .replace(/</gi, '<') + .replace(/>/gi, '>') + .replace(/\s+/g, ' ') + .trim() +} + +/** + * 外链打开:H5 新开;小程序复制到剪贴板(无 web-view 页时的折中)。 + */ +export function openExternalUrl(url?: string) { + const u = String(url || '').trim() + if (!u) return + // #ifdef H5 + window.open(u, '_blank') + // #endif + // #ifndef H5 + uni.setClipboardData({ + data: u, + success: () => uni.showToast({ title: '链接已复制', icon: 'none' }), + }) + // #endif +} + +/** 解析作品 links(可能是 JSON 字符串) */ +export function parseWorkLinks(links: unknown): { live?: string, demo?: string, github?: string } { + if (!links) return {} + if (typeof links === 'string') { + try { + return JSON.parse(links) as { live?: string, demo?: string, github?: string } + } + catch { + return {} + } + } + if (typeof links === 'object') return links as { live?: string, demo?: string, github?: string } + return {} +} + +/** 展平技术栈分组为标签列表 */ +export function flattenTechStack(stack?: { category?: string, items?: string[], [k: string]: unknown }[]): string[] { + if (!Array.isArray(stack)) return [] + const out: string[] = [] + stack.forEach((g) => { + const items = Array.isArray(g.items) ? g.items : [] + items.forEach((i) => { + if (i) out.push(String(i)) + }) + // 兼容 { category, item } 扁平行 + if (!items.length && g.item) out.push(String(g.item)) + }) + return out +} diff --git a/blog-wot-uniapp/src/utils/markdownRenderer.ts b/blog-wot-uniapp/src/utils/markdownRenderer.ts new file mode 100644 index 0000000..35e32ee --- /dev/null +++ b/blog-wot-uniapp/src/utils/markdownRenderer.ts @@ -0,0 +1,103 @@ +import { marked } from 'marked' +import type { HLJSApi, LanguageFn } from 'highlight.js' +import hljsCore from 'highlight.js/lib/core' +import javascript from 'highlight.js/lib/languages/javascript' +import typescript from 'highlight.js/lib/languages/typescript' +import python from 'highlight.js/lib/languages/python' +import go from 'highlight.js/lib/languages/go' +import java from 'highlight.js/lib/languages/java' +import css from 'highlight.js/lib/languages/css' +import xml from 'highlight.js/lib/languages/xml' +import json from 'highlight.js/lib/languages/json' +import bash from 'highlight.js/lib/languages/bash' +import sql from 'highlight.js/lib/languages/sql' +import yaml from 'highlight.js/lib/languages/yaml' +import markdown from 'highlight.js/lib/languages/markdown' +import rust from 'highlight.js/lib/languages/rust' +import cpp from 'highlight.js/lib/languages/cpp' +import c from 'highlight.js/lib/languages/c' +import php from 'highlight.js/lib/languages/php' +import shell from 'highlight.js/lib/languages/shell' + +const LANGUAGE_REGISTRY: Array<[string, LanguageFn]> = [ + ['javascript', javascript], + ['typescript', typescript], + ['python', python], + ['go', go], + ['java', java], + ['css', css], + ['xml', xml], + ['html', xml], + ['json', json], + ['bash', bash], + ['sh', bash], + ['sql', sql], + ['yaml', yaml], + ['yml', yaml], + ['markdown', markdown], + ['md', markdown], + ['rust', rust], + ['cpp', cpp], + ['c', c], + ['php', php], + ['shell', shell], +] + +let hljsInstance: HLJSApi | null = null +let configured = false + +function getHljs(): HLJSApi { + if (!hljsInstance) { + hljsInstance = hljsCore + for (const [name, register] of LANGUAGE_REGISTRY) { + hljsInstance.registerLanguage(name, register) + } + } + return hljsInstance +} + +function ensureMarked() { + if (configured) return + const hljs = getHljs() + marked.setOptions({ + gfm: true, + breaks: false, + }) + const renderer = new marked.Renderer() + renderer.code = ({ text, lang }: { text: string, lang?: string }) => { + const language = (lang || '').split(/\s+/)[0] + let highlighted = text + if (language && hljs.getLanguage(language)) { + try { + highlighted = hljs.highlight(text, { language, ignoreIllegals: true }).value + } + catch { + highlighted = hljs.highlightAuto(text).value + } + } + else { + highlighted = hljs.highlightAuto(text).value + } + return `
${highlighted}
\n` + } + renderer.heading = ({ text, depth }: { text: string, depth: number }) => { + const slug = `heading-${String(text).toLowerCase().replace(/[^\w\u4e00-\u9fa5]+/g, '-')}` + return `${text}\n` + } + renderer.image = ({ href, text }: { href: string, text: string }) => { + return `${text || ''}` + } + marked.use({ renderer }) + configured = true +} + +export async function renderMarkdown(content: string): Promise { + if (!content) return '' + ensureMarked() + return marked.parse(content) as string +} + +export function preloadMarkdownRenderer(): void { + getHljs() + ensureMarked() +} diff --git a/blog-wot-uniapp/src/utils/request.ts b/blog-wot-uniapp/src/utils/request.ts new file mode 100644 index 0000000..b2188bf --- /dev/null +++ b/blog-wot-uniapp/src/utils/request.ts @@ -0,0 +1,184 @@ +import { useAuth } from '@/composables/useAuth' + +export interface ApiResponse { + code: number + message: string + result: T +} + +const API_BASE = import.meta.env.VITE_API_BASE || 'http://127.0.0.1:8081/api' +export const UPLOAD_BASE = import.meta.env.VITE_UPLOAD_BASE || 'http://127.0.0.1:8081' + +/** + * 媒体地址:已是完整链接 / data: 则原样返回;否则拼上传域名(后端 /uploads 等)。 + */ +export function getImageUrl(url?: string | null): string { + if (!url) return '' + const raw = String(url).trim() + if (!raw) return '' + if (/^https?:\/\//i.test(raw) || raw.startsWith('data:') || raw.startsWith('//')) return raw + if (raw.startsWith('/')) return `${UPLOAD_BASE}${raw}` + return `${UPLOAD_BASE}/${raw}` +} + +/** 兼容旧名,与 getImageUrl 同逻辑 */ +export const resolveMediaUrl = getImageUrl + +/** + * 重写 HTML 中相对路径的 src/href(如 /uploads/...),供 mp-html / rich-text 使用。 + * 已是 http(s) / data: / 协议相对 // 的不改。 + */ +export function rewriteHtmlMediaUrls(html?: string | null): string { + if (!html) return '' + return String(html).replace( + /\b(src|href)\s*=\s*(["'])(\/[^"'>\s]*)\2/gi, + (_m, attr: string, quote: string, path: string) => { + // 协议相对 //cdn... 不要当成本地路径 + if (path.startsWith('//')) return `${attr}=${quote}${path}${quote}` + return `${attr}=${quote}${getImageUrl(path)}${quote}` + }, + ) +} + +function joinUrl(path: string): string { + if (/^https?:\/\//i.test(path)) return path + const base = API_BASE.replace(/\/$/, '') + const p = path.startsWith('/') ? path : `/${path}` + if (p.startsWith('/api/')) return `${UPLOAD_BASE}${p}` + return `${base}${p}` +} + +/** + * GET 查询参数清洗:去掉 undefined/null/'',避免 uni.request 把 undefined 序列化成字面量 "undefined"。 + */ +function omitEmptyQueryParams(data?: Record) { + if (!data) return undefined + const entries = Object.entries(data).filter(([, v]) => v !== undefined && v !== null && v !== '') + if (!entries.length) return undefined + return Object.fromEntries(entries) +} + +type RequestOpts = { + method?: UniApp.RequestOptions['method'] + data?: UniApp.RequestOptions['data'] + header?: Record + auth?: boolean + skipSessionExpired?: boolean +} + +export async function request(path: string, options: RequestOpts = {}): Promise { + const { auth = false, skipSessionExpired = false, header = {}, method = 'GET', data } = options + const headers: Record = { + 'Content-Type': 'application/json', + ...header, + } + + if (auth) { + const { getToken } = useAuth() + const token = getToken() + if (token) headers.Authorization = `Bearer ${token}` + } + + /** GET 走清洗后的 query;其它方法保持原 body */ + const payload = method === 'GET' + ? omitEmptyQueryParams(data as Record | undefined) + : data + + return new Promise((resolve, reject) => { + uni.request({ + url: joinUrl(path), + method, + data: payload, + header: headers, + success: (res) => { + const body = res.data as ApiResponse + if (!body || typeof body !== 'object' || !('code' in body)) { + reject(new Error('响应解析失败')) + return + } + if (body.code === 401 && !skipSessionExpired) { + const { handleSessionExpired } = useAuth() + handleSessionExpired() + reject(new Error(body.message || '登录已过期,请重新登录')) + return + } + if (body.code !== 200) { + reject(new Error(body.message || '请求失败')) + return + } + resolve(body.result) + }, + fail: (err) => reject(new Error(err.errMsg || '网络错误')), + }) + }) +} + +export function get(path: string, data?: Record, auth = false) { + return request(path, { method: 'GET', data, auth }) +} + +export function post(path: string, data?: unknown, auth = false) { + return request(path, { method: 'POST', data: data as UniApp.RequestOptions['data'], auth }) +} + +export function put(path: string, data?: unknown, auth = false) { + return request(path, { method: 'PUT', data: data as UniApp.RequestOptions['data'], auth }) +} + +export function del(path: string, auth = true) { + return request(path, { method: 'DELETE', auth }) +} + +/** PATCH 请求(文章发布状态等) */ +export function patch(path: string, data?: unknown, auth = false) { + return request(path, { + method: 'PATCH' as UniApp.RequestOptions['method'], + data: data as UniApp.RequestOptions['data'], + auth, + }) +} + +/** + * 直传文件到后台附件接口。 + * uni.uploadFile 不走 JSON Content-Type,需单独拼 Authorization。 + */ +export function uploadFile( + path: string, + filePath: string, + formData: Record = {}, + name = 'file', +): Promise { + const { getToken } = useAuth() + const token = getToken() + const header: Record = {} + if (token) header.Authorization = `Bearer ${token}` + return new Promise((resolve, reject) => { + uni.uploadFile({ + url: joinUrl(path), + filePath, + name, + formData, + header, + success: (res) => { + try { + const body = JSON.parse(res.data) as ApiResponse + if (body.code === 401) { + const { handleSessionExpired } = useAuth() + handleSessionExpired() + reject(new Error(body.message || '登录已过期,请重新登录')) + return + } + if (body.code !== 200) { + reject(new Error(body.message || '上传失败')) + return + } + resolve(body.result) + } + catch { + reject(new Error('上传响应解析失败')) + } + }, + fail: (err) => reject(new Error(err.errMsg || '上传失败')), + }) + }) +} diff --git a/blog-wot-uniapp/src/utils/unsupported.ts b/blog-wot-uniapp/src/utils/unsupported.ts new file mode 100644 index 0000000..f0ff65a --- /dev/null +++ b/blog-wot-uniapp/src/utils/unsupported.ts @@ -0,0 +1,20 @@ +import { useDialog } from '@wot-ui/ui' + +/** 小程序/App 暂不支持的能力统一提示 */ +export function showUnsupported(featureName: string) { + try { + const dialog = useDialog() + dialog.alert({ + title: '暂时不支持', + msg: `「${featureName}」在当前端暂不可用,请前往网页端使用。`, + confirmButtonText: '知道了', + }) + } + catch { + uni.showModal({ + title: '暂时不支持', + content: `「${featureName}」在当前端暂不可用,请前往网页端使用。`, + showCancel: false, + }) + } +} diff --git a/blog-wot-uniapp/tsconfig.json b/blog-wot-uniapp/tsconfig.json new file mode 100644 index 0000000..c2ab89b --- /dev/null +++ b/blog-wot-uniapp/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "jsx": "preserve", + "jsxImportSource": "vue", + "noImplicitThis": true, + "strict": true, + "verbatimModuleSyntax": true, + "target": "ESNext", + "useDefineForClassFields": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "types": [ + "vite/client", + "@dcloudio/types", + "@mini-types/alipay", + "miniprogram-api-typings", + "@wot-ui/ui/global", + "@uni-helper/uni-types" + ] + }, + "include": [ + "**/*.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.jsx", + "src/**/*.vue" + ], + "vueCompilerOptions": { + "plugins": ["@uni-helper/uni-types/volar-plugin"] + } +} diff --git a/blog-wot-uniapp/vite.config.ts b/blog-wot-uniapp/vite.config.ts new file mode 100644 index 0000000..6a96736 --- /dev/null +++ b/blog-wot-uniapp/vite.config.ts @@ -0,0 +1,27 @@ +import { fileURLToPath, URL } from 'node:url' +import { defineConfig } from 'vite' +import Components from '@uni-helper/vite-plugin-uni-components' +import Uni from '@uni-helper/plugin-uni' +import { WotResolver } from './src/resolvers/wot-ui-resolver' + +export default defineConfig({ + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + css: { + preprocessorOptions: { + scss: { + silenceDeprecations: ['legacy-js-api', 'import'], + }, + }, + }, + plugins: [ + Components({ + dts: true, + resolvers: [WotResolver()], + }), + Uni(), + ], +})