From 1af4075e9b00744387bdbc3dca4baca3a71d4df5 Mon Sep 17 00:00:00 2001 From: daxiong Date: Sat, 2 May 2026 09:59:06 +0800 Subject: [PATCH] feat --- .kilocode/rules-architect/AGENTS.md | 7 +- .kilocode/rules-ask/AGENTS.md | 6 +- .kilocode/rules-code/AGENTS.md | 6 +- .kilocode/rules-debug/AGENTS.md | 6 +- PAGES_README.md | 15 +- QUICK_START.md | 5 +- components.d.ts | 6 +- pnpm-lock.yaml | 3329 ++++++++--------- src/api/common/fts.ts | 42 +- src/api/kb/category.ts | 108 +- src/api/kb/document.ts | 209 +- src/api/kb/favorite.ts | 70 +- src/api/kb/review.ts | 204 +- src/api/kb/trash.ts | 76 +- src/api/module/factor.ts | 26 +- src/api/module/pmn.ts | 61 +- src/api/module/report.ts | 26 +- src/api/module/user.ts | 47 +- src/api/ops/alertHistory.ts | 67 +- src/api/ops/alertLevel.ts | 70 +- src/api/ops/alertRecord.ts | 84 +- src/api/ops/alertTemplate.ts | 22 +- src/api/ops/database.ts | 14 +- src/api/ops/datacenter.ts | 46 +- src/api/ops/dcControl.ts | 18 +- src/api/ops/discovery.ts | 180 +- src/api/ops/feedbackTicket.ts | 45 +- src/api/ops/floor.ts | 47 +- src/api/ops/goview.ts | 13 +- src/api/ops/ipScan.ts | 139 +- src/api/ops/logs.ts | 386 +- src/api/ops/middleware.ts | 47 +- src/api/ops/netarchTopo.ts | 49 +- src/api/ops/network-device.ts | 186 +- src/api/ops/network-screen.ts | 55 +- src/api/ops/noticeChannel.ts | 79 +- src/api/ops/rbac2.ts | 28 +- src/api/ops/report.ts | 50 +- src/api/ops/server.ts | 19 +- src/api/ops/storage.ts | 7 +- src/api/ops/supplier.ts | 42 +- src/api/ops/suppression.ts | 2 +- src/api/ops/template.ts | 26 +- src/api/ops/traffic-runtime.ts | 36 +- src/api/ops/traffic.ts | 228 +- src/api/ops/unit.ts | 77 +- src/api/request.ts | 145 +- src/components/data-table/index.vue | 4 +- src/components/menu/index.vue | 12 +- src/components/navbar/index.vue | 1 - src/components/password-change/index.vue | 105 +- src/components/profile-change/index.vue | 117 +- src/components/search-form/index.vue | 27 +- src/components/search-table/index.vue | 3 +- src/env.d.ts | 1 - src/layout/default-layout.vue | 8 +- src/router/guard/permission.ts | 2 +- src/router/menu-data.ts | 90 +- src/store/modules/app/index.ts | 14 +- src/store/modules/user/index.ts | 6 +- src/types/env.d.ts | 1 - src/types/shims.d.ts | 1 - src/types/vue-i18n.d.ts | 2 +- src/utils/auth.ts | 2 +- src/utils/safeStorage.ts | 298 +- src/utils/tree.ts | 57 +- src/views/help/index.vue | 384 +- src/views/home/index.vue | 121 +- src/views/list/search-table/demo.vue | 38 +- src/views/login/components/login-form.vue | 16 +- src/views/login/index.vue | 6 +- src/views/ops/pages/alert/detail/index.vue | 91 +- .../components/HistoryDetailDialog.vue | 20 +- .../components/HistoryProcessListDialog.vue | 739 ++-- src/views/ops/pages/alert/history/index.vue | 59 +- .../level/components/LevelFormDialog.vue | 7 +- src/views/ops/pages/alert/level/index.vue | 56 +- .../notice/components/ChannelDetailDialog.vue | 14 +- .../notice/components/ChannelFormDialog.vue | 136 +- src/views/ops/pages/alert/notice/index.vue | 28 +- .../setting/components/PolicyCreateDialog.vue | 32 +- .../setting/components/PolicyFormDialog.vue | 168 +- .../setting/components/RuleFormDialog.vue | 137 +- .../setting/components/RuleManageDialog.vue | 63 +- src/views/ops/pages/alert/setting/index.vue | 73 +- .../suppress/components/SuppressionModal.vue | 99 +- .../pages/alert/suppress/config/columns.ts | 2 +- .../pages/alert/suppress/config/formItems.ts | 7 +- .../ops/pages/alert/suppress/constants.ts | 2 +- .../ops/pages/alert/suppress/hooks/index.ts | 2 +- .../pages/alert/suppress/hooks/usePolicy.ts | 2 +- .../pages/alert/suppress/hooks/useTable.ts | 9 +- src/views/ops/pages/alert/suppress/index.vue | 14 +- src/views/ops/pages/alert/suppress/types.ts | 2 +- .../ops/pages/alert/suppress/utils/index.ts | 2 +- .../alert/tackle/components/AckDialog.vue | 21 +- .../alert/tackle/components/CommentDialog.vue | 21 +- .../alert/tackle/components/DetailDialog.vue | 39 +- .../alert/tackle/components/ResolveDialog.vue | 37 +- .../alert/tackle/components/SilenceDialog.vue | 33 +- src/views/ops/pages/alert/tackle/index.vue | 80 +- .../alert/template/components/RuleEditor.vue | 39 +- .../components/TemplateDetailDialog.vue | 24 +- .../components/TemplateFormDialog.vue | 195 +- .../ops/pages/alert/template/edit/index.vue | 218 +- src/views/ops/pages/alert/template/index.vue | 34 +- .../components/CategoryDetailDialog.vue | 21 +- .../components/CategoryFormDialog.vue | 36 +- .../pages/assets/classify/config/columns.ts | 2 +- .../assets/classify/config/search-form.ts | 2 +- src/views/ops/pages/assets/classify/index.vue | 43 +- .../device/components/DeviceDetailDialog.vue | 27 +- .../ops/pages/assets/device/form/index.vue | 182 +- .../ops/pages/assets/device/list/index.vue | 32 +- .../components/SupplierDetailDialog.vue | 11 +- .../ops/pages/assets/supplier/form/index.vue | 140 +- .../ops/pages/assets/supplier/list/index.vue | 29 +- .../floor/components/FloorDetailDialog.vue | 9 +- .../floor/components/FloorFormDialog.vue | 110 +- .../ops/pages/datacenter/floor/index.vue | 53 +- .../house/components/DatacenterFormDialog.vue | 137 +- .../ops/pages/datacenter/house/index.vue | 60 +- .../rack/components/RackDetailDialog.vue | 173 +- .../rack/components/RackFormDialog.vue | 249 +- src/views/ops/pages/datacenter/rack/index.vue | 67 +- .../room/components/RoomDetailDialog.vue | 241 +- .../room/components/RoomFormDialog.vue | 517 ++- .../pages/datacenter/room/config/columns.ts | 104 +- .../datacenter/room/config/search-form.ts | 74 +- src/views/ops/pages/datacenter/room/index.vue | 639 ++-- .../components/AllocateUnitDialog.vue | 64 +- .../components/ReserveUnitDialog.vue | 37 +- .../pages/datacenter/u-position/detail.vue | 116 +- .../dc/database/components/CollectDialog.vue | 37 +- .../dc/database/components/ConnChart.vue | 12 +- .../pages/dc/database/components/Detail.vue | 88 +- .../dc/database/components/DetailDialog.vue | 36 +- .../pages/dc/database/components/QpsChart.vue | 8 +- .../database/components/QuickConfigDialog.vue | 19 +- .../dc/database/components/RemoteControl.vue | 16 +- src/views/ops/pages/dc/database/index.vue | 42 +- src/views/ops/pages/dc/detail/index.vue | 97 +- .../dc/device-collect/components/Detail.vue | 8 +- .../components/QuickConfigDialog.vue | 1 - .../ops/pages/dc/device-collect/index.vue | 2 - .../pages/dc/middleware/components/Detail.vue | 1022 +---- .../components/QuickConfigDialog.vue | 24 +- .../middleware/components/RemoteControl.vue | 16 +- src/views/ops/pages/dc/middleware/index.vue | 65 +- .../dc/network/components/FormDialog.vue | 290 +- .../network/components/QuickConfigDialog.vue | 19 +- .../dc/network/components/RemoteControl.vue | 16 +- src/views/ops/pages/dc/network/index.vue | 59 +- .../ops/pages/dc/pc/components/Detail.vue | 88 +- .../ops/pages/dc/pc/components/FormDialog.vue | 11 +- .../dc/pc/components/QuickConfigDialog.vue | 29 +- .../pages/dc/pc/components/RemoteControl.vue | 16 +- src/views/ops/pages/dc/pc/index.vue | 81 +- src/views/ops/pages/dc/remote/index.vue | 74 +- .../pages/dc/security/components/Detail.vue | 4 +- .../dc/security/components/FormDialog.vue | 9 +- src/views/ops/pages/dc/security/index.vue | 4 +- .../server/components/DatacenterSelector.vue | 43 +- .../server/components/QuickConfigDialog.vue | 34 +- .../dc/server/components/RemoteControl.vue | 16 +- .../dc/server/components/ServerDetail.vue | 83 +- .../dc/server/components/ServerFormDialog.vue | 8 +- src/views/ops/pages/dc/server/index.vue | 82 +- src/views/ops/pages/dc/storage/index.vue | 7 +- src/views/ops/pages/dc/url-harvest/index.vue | 2 - src/views/ops/pages/feedback/all/index.vue | 196 +- .../feedback/components/CommentDialog.vue | 27 +- .../feedback/components/ResolveDialog.vue | 27 +- .../feedback/components/SuspendDialog.vue | 27 +- .../components/TicketDetailDialog.vue | 25 +- .../feedback/components/TicketFormDialog.vue | 59 +- .../feedback/components/TransferDialog.vue | 37 +- .../components/TemplateFormDialog.vue | 67 +- .../feedback/template/config/search-form.ts | 4 +- .../ops/pages/feedback/template/index.vue | 53 +- .../ops/pages/feedback/undo/config/columns.ts | 50 +- src/views/ops/pages/feedback/undo/index.vue | 282 +- src/views/ops/pages/help/index.vue | 6 +- src/views/ops/pages/kb/favorite/index.vue | 260 +- .../ops/pages/kb/items/components/index.ts | 2 +- .../ops/pages/kb/items/config/columns.ts | 2 +- .../ops/pages/kb/items/config/filters.ts | 2 +- .../ops/pages/kb/items/config/options.ts | 24 +- src/views/ops/pages/kb/items/index.vue | 232 +- src/views/ops/pages/kb/recycle/index.vue | 60 +- src/views/ops/pages/kb/review/index.vue | 23 +- .../kb/tags/components/CategoryFormDialog.vue | 91 +- src/views/ops/pages/kb/tags/index.vue | 34 +- .../ops/pages/log-mgmt/entries/index.vue | 1103 +++--- .../ops/pages/log-mgmt/syslog-rules/index.vue | 951 +++-- .../pages/log-mgmt/trap-dictionary/index.vue | 752 ++-- .../ops/pages/log-mgmt/trap-rules/index.vue | 933 +++-- .../log-mgmt/trap-suppressions/index.vue | 571 ++- src/views/ops/pages/monitor/log/index_bak.vue | 41 +- src/views/ops/pages/monitor/network/index.vue | 16 +- src/views/ops/pages/monitor/os/index.vue | 90 +- src/views/ops/pages/monitor/safety/index.vue | 20 +- .../ops/pages/monitor/security/index.vue | 19 +- .../pages/monitor/virtualization/index.vue | 19 +- .../ops/pages/netarch/auto-topology/index.vue | 8 +- .../ops/pages/netarch/ip-scan-tasks/index.vue | 1050 +++--- .../netarch/ip/components/AnomaliesTab.vue | 8 +- .../netarch/ip/components/ChangesTab.vue | 8 +- .../netarch/ip/components/ConflictsTab.vue | 12 +- .../components/SubGroupFormDialog.vue | 55 +- .../components/TopologyFormDialog.vue | 43 +- .../components/TopologyListDialog.vue | 56 +- .../netarch/topo-group/config/filters.ts | 5 +- .../ops/pages/netarch/topo-group/index.vue | 97 +- .../netarch/topo/components/AddNodeMenu.vue | 34 +- .../topo/components/DeleteConfirmDialog.vue | 22 +- .../topo/components/EdgeActionDialog.vue | 28 +- .../topo/components/EdgeEditDialog.vue | 53 +- .../netarch/topo/components/LayoutMenu.vue | 22 +- .../topo/components/NodeActionDialog.vue | 91 +- .../topo/components/NodeDetailDialog.vue | 62 +- .../topo/components/NodeEditDialog.vue | 83 +- .../pages/netarch/topo/components/index.ts | 24 +- .../ops/pages/netarch/topo/hooks/index.ts | 6 +- .../pages/netarch/topo/hooks/useTopoLayout.ts | 59 +- .../netarch/topo/hooks/useTopoStorage.ts | 44 +- .../netarch/topo/services/topoService.ts | 84 +- .../netarch/topo/utils/buildGroupTree.ts | 138 +- src/views/ops/pages/netarch/traffic/index.vue | 49 +- src/views/ops/pages/overview/index.vue | 646 ++-- src/views/ops/pages/report/device/index.vue | 99 +- src/views/ops/pages/report/fault/index.vue | 69 +- src/views/ops/pages/report/history/index.vue | 85 +- src/views/ops/pages/report/host/index.vue | 72 +- .../ops/pages/report/statistics/index.vue | 79 +- src/views/ops/pages/report/topn/index.vue | 75 +- src/views/ops/pages/report/traffic/index.vue | 99 +- .../components/PasswordChangeDialog.vue | 31 +- .../components/PermissionSettingDialog.vue | 39 +- .../components/PermissionTree.vue | 20 +- .../account-management/index.vue | 85 +- .../system-settings/license-center/index.vue | 3 +- .../menu-management/components/MenuForm.vue | 102 +- .../components/MenuTreeItem.vue | 49 +- .../system-settings/menu-management/index.vue | 101 +- .../menu-management/menuIcons.ts | 254 +- .../system-settings/system-logs/index.vue | 1 - .../system-settings/system-logs/index_bak.vue | 16 +- tsconfig.tsbuildinfo | 2 +- 249 files changed, 11209 insertions(+), 14884 deletions(-) diff --git a/.kilocode/rules-architect/AGENTS.md b/.kilocode/rules-architect/AGENTS.md index d6d0559..ad1b0e5 100644 --- a/.kilocode/rules-architect/AGENTS.md +++ b/.kilocode/rules-architect/AGENTS.md @@ -1,25 +1,30 @@ # Architect Mode Rules (Non-Obvious Only) ## Architecture Overview + - Vue 3 SPA with dynamic route loading from server - Pinia stores: `app`, `user`, `tab-bar` (see [`src/store/`](src/store/)) - Two-layer route guard: user login check + permission check ## Dynamic Route System + - Server menu fetched in [`app store`](src/store/modules/app/index.ts) via `fetchServerMenuConfig()` - Routes registered dynamically in [`permission.ts`](src/router/guard/permission.ts) - Uses `isMenuLoading`/`isMenuLoaded` flags to prevent duplicate loads ## API Architecture + - Two axios instances for different auth patterns: - [`request.ts`](src/api/request.ts): Workspace header + custom token format - [`interceptor.ts`](src/api/interceptor.ts): Bearer token + code 20000 validation - Choose based on backend API requirements ## State Management + - [`SafeStorage`](src/utils/safeStorage.ts) required for all localStorage access - Supports TTL expiry and type-safe keys via enum ## Component Patterns + - Global components registered in [`components/index.ts`](src/components/index.ts) -- ECharts modules manually imported for bundle size optimization \ No newline at end of file +- ECharts modules manually imported for bundle size optimization diff --git a/.kilocode/rules-ask/AGENTS.md b/.kilocode/rules-ask/AGENTS.md index 8e096f8..1606b1e 100644 --- a/.kilocode/rules-ask/AGENTS.md +++ b/.kilocode/rules-ask/AGENTS.md @@ -1,19 +1,23 @@ # Ask Mode Rules (Non-Obvious Only) ## Project Structure + - Vue 3 + Arco Design admin template with Pinia state management - Vite config files located in `config/` directory (not root) ## Key Directories + - `src/api/` - API layer with two axios instances - `src/views/ops/` - Main business modules (kb, netarch, asset, etc.) - `src/router/guard/` - Route guards including dynamic menu loading - `src/store/modules/app/` - App store with server menu fetching ## Documentation References + - Arco Design Vue: https://arco.design/vue - Vue Flow (for topology): https://vueflow.dev/ ## API Patterns + - Use [`request.ts`](src/api/request.ts) for workspace-aware requests -- Use [`interceptor.ts`](src/api/interceptor.ts) for standard Bearer token auth \ No newline at end of file +- Use [`interceptor.ts`](src/api/interceptor.ts) for standard Bearer token auth diff --git a/.kilocode/rules-code/AGENTS.md b/.kilocode/rules-code/AGENTS.md index b2f74ab..6cb63b5 100644 --- a/.kilocode/rules-code/AGENTS.md +++ b/.kilocode/rules-code/AGENTS.md @@ -1,13 +1,17 @@ # Code Mode Rules (Non-Obvious Only) ## API Layer + - Two axios instances exist: [`request.ts`](src/api/request.ts) (custom with workspace header) and [`interceptor.ts`](src/api/interceptor.ts) (global with Bearer token). Choose based on whether you need workspace support. ## Storage + - Always use [`SafeStorage`](src/utils/safeStorage.ts) with `AppStorageKey` enum - never use localStorage directly. Supports TTL via third parameter. ## useRequest Hook + - [`useRequest()`](src/hooks/request.ts) invokes API immediately - does NOT work in async functions. Pass params via `.bind(null, params)` pattern. ## Dynamic Routes -- Routes loaded from server in [`permission.ts`](src/router/guard/permission.ts) using `isMenuLoading`/`isMenuLoaded` flags. Don't modify these flags manually. \ No newline at end of file + +- Routes loaded from server in [`permission.ts`](src/router/guard/permission.ts) using `isMenuLoading`/`isMenuLoaded` flags. Don't modify these flags manually. diff --git a/.kilocode/rules-debug/AGENTS.md b/.kilocode/rules-debug/AGENTS.md index 4d8b510..2b1687c 100644 --- a/.kilocode/rules-debug/AGENTS.md +++ b/.kilocode/rules-debug/AGENTS.md @@ -1,17 +1,21 @@ # Debug Mode Rules (Non-Obvious Only) ## API Response Codes + - [`interceptor.ts`](src/api/interceptor.ts) expects `code: 20000` for success. Other codes trigger error messages. - Token expiry codes: 50008, 50012, 50014 trigger logout modal. ## Token Storage + - Tokens stored via [`SafeStorage`](src/utils/safeStorage.ts) with key `AppStorageKey.TOKEN`. - Token expiry redirects to `/auth/login` (not `/login`). ## Route Loading Issues + - If routes not loading, check `isMenuLoading`/`isMenuLoaded` flags in [`permission.ts`](src/router/guard/permission.ts). - Server menu fetched via [`fetchServerMenuConfig()`](src/store/modules/app/index.ts). ## Environment + - Dev config: `.env.development`, Prod config: `.env.production` -- API base URL: `VITE_API_BASE_URL`, Workspace: `VITE_APP_WORKSPACE` \ No newline at end of file +- API base URL: `VITE_API_BASE_URL`, Workspace: `VITE_APP_WORKSPACE` diff --git a/PAGES_README.md b/PAGES_README.md index b03ef4b..2978b88 100644 --- a/PAGES_README.md +++ b/PAGES_README.md @@ -7,6 +7,7 @@ ### 1. 官网首页 (`/home`) **功能特点:** + - 🎨 现代化的渐变背景设计 - 📱 响应式布局,适配各种设备 - 🎯 清晰的功能特性展示区域 @@ -15,6 +16,7 @@ - 💬 完整的页脚信息 **主要板块:** + 1. **顶部导航栏** - 包含 Logo、导航链接和登录按钮 2. **Banner 区域** - 醒目的标题和行动号召按钮 3. **功能特性** - 6 个核心功能卡片展示 @@ -23,12 +25,14 @@ 6. **页脚** - 版权信息和快速链接 **访问方式:** + - 直接访问:`http://your-domain/#/home` - 根路径自动重定向到首页 ### 2. 帮助中心页面 (`/help`) **功能特点:** + - 🔍 文档搜索功能 - 📑 左侧分类导航菜单 - ❓ 常见问题 FAQ(折叠面板) @@ -37,6 +41,7 @@ - 📞 联系方式展示 **主要内容:** + 1. **常见问题** - 8 个典型问题的问答 2. **使用指南** - 6 个分类的详细教程 - 快速入门 @@ -49,6 +54,7 @@ 4. **联系我们** - 电话、邮件、在线客服 **访问方式:** + - 直接访问:`http://your-domain/#/help` - 从首页导航点击"帮助中心" @@ -107,6 +113,7 @@ src/ ### 修改公司信息 在两个页面的页脚部分,可以修改: + - 版权信息 - 联系方式(电话、邮箱) - 公司地址 @@ -121,8 +128,8 @@ const faqs = ref([ { question: '您的问题', answer: '您的答案', - category: '分类' - } + category: '分类', + }, ]) // 添加使用指南 @@ -134,8 +141,8 @@ const guides = ref([ icon: '图标', category: '分类', categoryName: '分类名称', - updatedAt: '更新日期' - } + updatedAt: '更新日期', + }, ]) ``` diff --git a/QUICK_START.md b/QUICK_START.md index 65ba422..1b45200 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -11,7 +11,6 @@ - 功能特性展示(6 个核心功能) - 数据中心关键指标 - 响应式布局 - 2. **帮助中心** (`/#/help`) - 常见问题 FAQ - 使用指南分类 @@ -31,6 +30,7 @@ ### 方式一:直接访问 URL 在浏览器中访问: + ``` http://localhost:5173/#/home http://localhost:5173/#/help @@ -49,12 +49,14 @@ http://localhost:5173/#/help ### 2. 更新联系信息 编辑以下文件中的联系方式: + - `src/views/home/index.vue` - 页脚联系方式 - `src/views/help/index.vue` - 联系我们板块 ### 3. 添加真实的帮助文档 编辑 `src/views/help/index.vue` 中的: + ```typescript const faqs = ref([...]) // 常见问题 const guides = ref([...]) // 使用指南 @@ -64,6 +66,7 @@ const manuals = ref([...]) // 操作手册 ### 4. 调整配色方案 页面使用了 Arco Design 主题色,可以通过 CSS 变量调整: + ```less rgb(var(--primary-6)) // 主色调 ``` diff --git a/components.d.ts b/components.d.ts index f1bc198..f83012e 100644 --- a/components.d.ts +++ b/components.d.ts @@ -19,6 +19,6 @@ declare module 'vue' { // For TSX support declare global { - const RouterLink: typeof import('vue-router')['RouterLink'] - const RouterView: typeof import('vue-router')['RouterView'] -} \ No newline at end of file + const RouterLink: (typeof import('vue-router'))['RouterLink'] + const RouterView: (typeof import('vue-router'))['RouterView'] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 141b4d8..0e3dda1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,6 @@ settings: excludeLinksFromLockfile: false importers: - .: dependencies: '@arco-design/web-vue': @@ -206,959 +205,958 @@ importers: version: 3.2.5(typescript@5.9.3) packages: - '@arco-design/color@0.4.0': - resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==} + resolution: { integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g== } '@arco-design/web-vue@2.57.0': - resolution: {integrity: sha512-R5YReC3C2sG3Jv0+YuR3B7kzkq2KdhhQNCGXD8T11xAoa0zMt6SWTP1xJQOdZcM9du+q3z6tk5mRvh4qkieRJw==} + resolution: { integrity: sha512-R5YReC3C2sG3Jv0+YuR3B7kzkq2KdhhQNCGXD8T11xAoa0zMt6SWTP1xJQOdZcM9du+q3z6tk5mRvh4qkieRJw== } peerDependencies: vue: ^3.1.0 '@arco-plugins/vite-vue@1.4.6': - resolution: {integrity: sha512-i7asMOIWMKbTBo/ftJ5Kge+3X56b4dUyp1BNtYGc5IXVtCZ5mwnCVTNmfgzkKGXHRWEu01O5JXy/OMbUvzGYQQ==} + resolution: { integrity: sha512-i7asMOIWMKbTBo/ftJ5Kge+3X56b4dUyp1BNtYGc5IXVtCZ5mwnCVTNmfgzkKGXHRWEu01O5JXy/OMbUvzGYQQ== } '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== } + engines: { node: '>=6.9.0' } '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== } + engines: { node: '>=6.9.0' } '@babel/core@7.29.0': - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== } + engines: { node: '>=6.9.0' } '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== } + 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'} + resolution: { integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== } + engines: { node: '>=6.9.0' } '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== } + engines: { node: '>=6.9.0' } '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== } + engines: { node: '>=6.9.0' } '@babel/helper-member-expression-to-functions@7.28.5': - resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== } + engines: { node: '>=6.9.0' } '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== } + engines: { node: '>=6.9.0' } '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== } + 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'} + resolution: { integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== } + engines: { node: '>=6.9.0' } '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== } + engines: { node: '>=6.9.0' } '@babel/helper-replace-supers@7.28.6': - resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== } + 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'} + 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'} + resolution: { integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== } + engines: { node: '>=6.9.0' } '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== } + engines: { node: '>=6.9.0' } '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== } + engines: { node: '>=6.9.0' } '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== } + engines: { node: '>=6.9.0' } '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== } + engines: { node: '>=6.0.0' } hasBin: true '@babel/plugin-syntax-jsx@7.28.6': - resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.28.6': - resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typescript@7.28.6': - resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw== } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== } + engines: { node: '>=6.9.0' } '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== } + engines: { node: '>=6.9.0' } '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} + resolution: { integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== } + engines: { node: '>=6.9.0' } '@cacheable/memory@2.0.8': - resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} + resolution: { integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw== } '@cacheable/utils@2.4.0': - resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} + resolution: { integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ== } '@commitlint/cli@20.4.3': - resolution: {integrity: sha512-Z37EMoDT7+Upg500vlr/vZrgRsb6Xc5JAA3Tv7BYbobnN/ZpqUeZnSLggBg2+1O+NptRDtyujr2DD1CPV2qwhA==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-Z37EMoDT7+Upg500vlr/vZrgRsb6Xc5JAA3Tv7BYbobnN/ZpqUeZnSLggBg2+1O+NptRDtyujr2DD1CPV2qwhA== } + engines: { node: '>=v18' } hasBin: true '@commitlint/config-conventional@20.4.3': - resolution: {integrity: sha512-9RtLySbYQAs8yEqWEqhSZo9nYhbm57jx7qHXtgRmv/nmeQIjjMcwf6Dl+y5UZcGWgWx435TAYBURONaJIuCjWg==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-9RtLySbYQAs8yEqWEqhSZo9nYhbm57jx7qHXtgRmv/nmeQIjjMcwf6Dl+y5UZcGWgWx435TAYBURONaJIuCjWg== } + engines: { node: '>=v18' } '@commitlint/config-validator@20.4.3': - resolution: {integrity: sha512-jCZpZFkcSL3ZEdL5zgUzFRdytv3xPo8iukTe9VA+QGus/BGhpp1xXSVu2B006GLLb2gYUAEGEqv64kTlpZNgmA==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-jCZpZFkcSL3ZEdL5zgUzFRdytv3xPo8iukTe9VA+QGus/BGhpp1xXSVu2B006GLLb2gYUAEGEqv64kTlpZNgmA== } + engines: { node: '>=v18' } '@commitlint/ensure@20.4.3': - resolution: {integrity: sha512-WcXGKBNn0wBKpX8VlXgxqedyrLxedIlLBCMvdamLnJFEbUGJ9JZmBVx4vhLV3ZyA8uONGOb+CzW0Y9HDbQ+ONQ==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-WcXGKBNn0wBKpX8VlXgxqedyrLxedIlLBCMvdamLnJFEbUGJ9JZmBVx4vhLV3ZyA8uONGOb+CzW0Y9HDbQ+ONQ== } + engines: { node: '>=v18' } '@commitlint/execute-rule@20.0.0': - resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw== } + engines: { node: '>=v18' } '@commitlint/format@20.4.3': - resolution: {integrity: sha512-UDJVErjLbNghop6j111rsHJYGw6MjCKAi95K0GT2yf4eeiDHy3JDRLWYWEjIaFgO+r+dQSkuqgJ1CdMTtrvHsA==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-UDJVErjLbNghop6j111rsHJYGw6MjCKAi95K0GT2yf4eeiDHy3JDRLWYWEjIaFgO+r+dQSkuqgJ1CdMTtrvHsA== } + engines: { node: '>=v18' } '@commitlint/is-ignored@20.4.3': - resolution: {integrity: sha512-W5VQKZ7fdJ1X3Tko+h87YZaqRMGN1KvQKXyCM8xFdxzMIf1KCZgN4uLz3osLB1zsFcVS4ZswHY64LI26/9ACag==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-W5VQKZ7fdJ1X3Tko+h87YZaqRMGN1KvQKXyCM8xFdxzMIf1KCZgN4uLz3osLB1zsFcVS4ZswHY64LI26/9ACag== } + engines: { node: '>=v18' } '@commitlint/lint@20.4.3': - resolution: {integrity: sha512-CYOXL23e+nRKij81+d0+dymtIi7Owl9QzvblJYbEfInON/4MaETNSLFDI74LDu+YJ0ML5HZyw9Vhp9QpckwQ0A==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-CYOXL23e+nRKij81+d0+dymtIi7Owl9QzvblJYbEfInON/4MaETNSLFDI74LDu+YJ0ML5HZyw9Vhp9QpckwQ0A== } + engines: { node: '>=v18' } '@commitlint/load@20.4.3': - resolution: {integrity: sha512-3cdJOUVP+VcgHa7bhJoWS+Z8mBNXB5aLWMBu7Q7uX8PSeWDzdbrBlR33J1MGGf7r1PZDp+mPPiFktk031PgdRw==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-3cdJOUVP+VcgHa7bhJoWS+Z8mBNXB5aLWMBu7Q7uX8PSeWDzdbrBlR33J1MGGf7r1PZDp+mPPiFktk031PgdRw== } + engines: { node: '>=v18' } '@commitlint/message@20.4.3': - resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ== } + engines: { node: '>=v18' } '@commitlint/parse@20.4.3': - resolution: {integrity: sha512-hzC3JCo3zs3VkQ833KnGVuWjWIzR72BWZWjQM7tY/7dfKreKAm7fEsy71tIFCRtxf2RtMP2d3RLF1U9yhFSccA==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-hzC3JCo3zs3VkQ833KnGVuWjWIzR72BWZWjQM7tY/7dfKreKAm7fEsy71tIFCRtxf2RtMP2d3RLF1U9yhFSccA== } + engines: { node: '>=v18' } '@commitlint/read@20.4.3': - resolution: {integrity: sha512-j42OWv3L31WfnP8WquVjHZRt03w50Y/gEE8FAyih7GQTrIv2+pZ6VZ6pWLD/ml/3PO+RV2SPtRtTp/MvlTb8rQ==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-j42OWv3L31WfnP8WquVjHZRt03w50Y/gEE8FAyih7GQTrIv2+pZ6VZ6pWLD/ml/3PO+RV2SPtRtTp/MvlTb8rQ== } + engines: { node: '>=v18' } '@commitlint/resolve-extends@20.4.3': - resolution: {integrity: sha512-QucxcOy+00FhS9s4Uy0OyS5HeUV+hbC6OLqkTSIm6fwMdKva+OEavaCDuLtgd9akZZlsUo//XzSmPP3sLKBPog==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-QucxcOy+00FhS9s4Uy0OyS5HeUV+hbC6OLqkTSIm6fwMdKva+OEavaCDuLtgd9akZZlsUo//XzSmPP3sLKBPog== } + engines: { node: '>=v18' } '@commitlint/rules@20.4.3': - resolution: {integrity: sha512-Yuosd7Grn5qiT7FovngXLyRXTMUbj9PYiSkvUgWK1B5a7+ZvrbWDS7epeUapYNYatCy/KTpPFPbgLUdE+MUrBg==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-Yuosd7Grn5qiT7FovngXLyRXTMUbj9PYiSkvUgWK1B5a7+ZvrbWDS7epeUapYNYatCy/KTpPFPbgLUdE+MUrBg== } + engines: { node: '>=v18' } '@commitlint/to-lines@20.0.0': - resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw== } + engines: { node: '>=v18' } '@commitlint/top-level@20.4.3': - resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ== } + engines: { node: '>=v18' } '@commitlint/types@20.4.3': - resolution: {integrity: sha512-51OWa1Gi6ODOasPmfJPq6js4pZoomima4XLZZCrkldaH2V5Nb3bVhNXPeT6XV0gubbainSpTw4zi68NqAeCNCg==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-51OWa1Gi6ODOasPmfJPq6js4pZoomima4XLZZCrkldaH2V5Nb3bVhNXPeT6XV0gubbainSpTw4zi68NqAeCNCg== } + engines: { node: '>=v18' } '@csstools/css-calc@3.1.1': - resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ== } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w== } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-syntax-patches-for-csstree@1.0.29': - resolution: {integrity: sha512-jx9GjkkP5YHuTmko2eWAvpPnb0mB4mGRr2U7XwVNwevm8nlpobZEVk+GNmiYMk2VuA75v+plfXWyroWKmICZXg==} + resolution: { integrity: sha512-jx9GjkkP5YHuTmko2eWAvpPnb0mB4mGRr2U7XwVNwevm8nlpobZEVk+GNmiYMk2VuA75v+plfXWyroWKmICZXg== } '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA== } + engines: { node: '>=20.19.0' } '@csstools/media-query-list-parser@5.0.0': - resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg== } + engines: { node: '>=20.19.0' } peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/selector-resolve-nested@4.0.0': - resolution: {integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA== } + engines: { node: '>=20.19.0' } peerDependencies: postcss-selector-parser: ^7.1.1 '@csstools/selector-specificity@6.0.0': - resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA== } + engines: { node: '>=20.19.0' } peerDependencies: postcss-selector-parser: ^7.1.1 '@emnapi/core@1.8.1': - resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + resolution: { integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== } '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + resolution: { integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== } '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + resolution: { integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== } '@epic-web/invariant@1.0.0': - resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + resolution: { integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA== } '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg== } + engines: { node: '>=18' } cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg== } + engines: { node: '>=18' } cpu: [arm64] os: [android] '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA== } + engines: { node: '>=18' } cpu: [arm] os: [android] '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ== } + engines: { node: '>=18' } cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg== } + engines: { node: '>=18' } cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg== } + engines: { node: '>=18' } cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} - engines: {node: '>=18'} + resolution: { integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w== } + engines: { node: '>=18' } cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA== } + engines: { node: '>=18' } cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg== } + engines: { node: '>=18' } cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw== } + engines: { node: '>=18' } cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg== } + engines: { node: '>=18' } cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA== } + engines: { node: '>=18' } cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw== } + engines: { node: '>=18' } cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA== } + engines: { node: '>=18' } cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ== } + engines: { node: '>=18' } cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw== } + engines: { node: '>=18' } cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA== } + engines: { node: '>=18' } cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA== } + engines: { node: '>=18' } cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA== } + engines: { node: '>=18' } cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw== } + engines: { node: '>=18' } cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ== } + engines: { node: '>=18' } cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} - engines: {node: '>=18'} + resolution: { integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g== } + engines: { node: '>=18' } cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA== } + engines: { node: '>=18' } cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA== } + engines: { node: '>=18' } cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q== } + engines: { node: '>=18' } cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA== } + engines: { node: '>=18' } cpu: [x64] os: [win32] '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: { integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + resolution: { integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: { integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: { integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + resolution: { integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== } + engines: { node: '>=10.10.0' } deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} + resolution: { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } + engines: { node: '>=12.22' } '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + resolution: { integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== } deprecated: Use @eslint/object-schema instead '@intlify/core-base@11.2.8': - resolution: {integrity: sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==} - engines: {node: '>= 16'} + resolution: { integrity: sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA== } + engines: { node: '>= 16' } '@intlify/message-compiler@11.2.8': - resolution: {integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==} - engines: {node: '>= 16'} + resolution: { integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ== } + engines: { node: '>= 16' } '@intlify/shared@11.2.8': - resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} - engines: {node: '>= 16'} + resolution: { integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw== } + engines: { node: '>= 16' } '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + resolution: { integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== } '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + resolution: { integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== } '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } + engines: { node: '>=6.0.0' } '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + resolution: { integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== } '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + resolution: { integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== } '@keyv/bigmap@1.3.1': - resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} - engines: {node: '>= 18'} + resolution: { integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ== } + engines: { node: '>= 18' } peerDependencies: keyv: ^5.6.0 '@keyv/serialize@1.1.1': - resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + resolution: { integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA== } '@mrmlnc/readdir-enhanced@2.2.1': - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} + resolution: { integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== } + engines: { node: '>=4' } '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + resolution: { integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== } '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } + engines: { node: '>= 8' } '@nodelib/fs.stat@1.1.3': - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} + resolution: { integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== } + engines: { node: '>= 6' } '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + 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'} + resolution: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } + engines: { node: '>= 8' } '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + resolution: { integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + resolution: { integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw== } '@rolldown/pluginutils@1.0.0-rc.6': - resolution: {integrity: sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA==} + resolution: { integrity: sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA== } '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + resolution: { integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== } + engines: { node: '>= 8.0.0' } '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + resolution: { integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg== } cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + resolution: { integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q== } cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + resolution: { integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg== } cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + resolution: { integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w== } cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + resolution: { integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA== } cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + resolution: { integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg== } cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + resolution: { integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw== } cpu: [arm] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + resolution: { integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA== } cpu: [arm] os: [linux] libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + resolution: { integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA== } cpu: [arm64] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + resolution: { integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA== } cpu: [arm64] os: [linux] libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + resolution: { integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg== } cpu: [loong64] os: [linux] libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + resolution: { integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q== } cpu: [loong64] os: [linux] libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + resolution: { integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA== } cpu: [ppc64] os: [linux] libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + resolution: { integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA== } cpu: [ppc64] os: [linux] libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + resolution: { integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg== } cpu: [riscv64] os: [linux] libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + resolution: { integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg== } cpu: [riscv64] os: [linux] libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + resolution: { integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w== } cpu: [s390x] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + resolution: { integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg== } cpu: [x64] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + resolution: { integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg== } cpu: [x64] os: [linux] libc: [musl] '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + resolution: { integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ== } cpu: [x64] os: [openbsd] '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + resolution: { integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA== } cpu: [arm64] os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + resolution: { integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A== } cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + resolution: { integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA== } cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + resolution: { integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA== } cpu: [x64] os: [win32] '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + resolution: { integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA== } cpu: [x64] os: [win32] '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + resolution: { integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== } '@simple-libs/stream-utils@1.2.0': - resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA== } + engines: { node: '>=18' } '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ== } + engines: { node: '>=18' } '@tabler/icons-vue@3.40.0': - resolution: {integrity: sha512-DyAOsnL6p3THhI8/74WvCFu86vlNI8U6DKtNHnYYjQpljtENLIy6i/bLiug3Lr04S71yKTWNxYyfd/8K8YFzQw==} + resolution: { integrity: sha512-DyAOsnL6p3THhI8/74WvCFu86vlNI8U6DKtNHnYYjQpljtENLIy6i/bLiug3Lr04S71yKTWNxYyfd/8K8YFzQw== } peerDependencies: vue: '>=3.0.1' '@tabler/icons@3.40.0': - resolution: {integrity: sha512-V/Q4VgNPKubRTiLdmWjV/zscYcj5IIk+euicUtaVVqF6luSC9rDngYWgST5/yh3Mrg/mYUwRv1YVTk71Jp0twQ==} + resolution: { integrity: sha512-V/Q4VgNPKubRTiLdmWjV/zscYcj5IIk+euicUtaVVqF6luSC9rDngYWgST5/yh3Mrg/mYUwRv1YVTk71Jp0twQ== } '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} + resolution: { integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== } + engines: { node: '>=10.13.0' } '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + resolution: { integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== } '@types/eslint@8.56.12': - resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + resolution: { integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g== } '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + resolution: { integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw== } '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + resolution: { integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== } '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + resolution: { integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== } '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + resolution: { integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== } '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + resolution: { integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== } '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + resolution: { integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ== } '@types/minimatch@6.0.0': - resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + resolution: { integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== } deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. '@types/mockjs@1.0.10': - resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} + resolution: { integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g== } '@types/node@16.18.126': - resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} + resolution: { integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== } '@types/node@25.3.3': - resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} + resolution: { integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ== } '@types/nprogress@0.2.3': - resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + resolution: { integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA== } '@types/sortablejs@1.15.9': - resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==} + resolution: { integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ== } '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + resolution: { integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== } '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + resolution: { integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== } '@types/vfile-message@2.0.0': - resolution: {integrity: sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==} + resolution: { integrity: sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== } deprecated: This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed. '@types/vfile@3.0.2': - resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} + resolution: { integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== } '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + resolution: { integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== } '@types/web-bluetooth@0.0.21': - resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + resolution: { integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA== } '@typescript-eslint/eslint-plugin@8.56.1': - resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: '@typescript-eslint/parser': ^8.56.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/parser@8.56.1': - resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/project-service@8.56.1': - resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/scope-manager@8.56.1': - resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@typescript-eslint/tsconfig-utils@8.56.1': - resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/type-utils@8.56.1': - resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@8.56.1': - resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@typescript-eslint/typescript-estree@8.56.1': - resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/utils@8.56.1': - resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/visitor-keys@8.56.1': - resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + resolution: { integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== } '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + resolution: { integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== } cpu: [arm] os: [android] '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + resolution: { integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== } cpu: [arm64] os: [android] '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + resolution: { integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== } cpu: [arm64] os: [darwin] '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + resolution: { integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== } cpu: [x64] os: [darwin] '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + resolution: { integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== } cpu: [x64] os: [freebsd] '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + resolution: { integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== } cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + resolution: { integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== } cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + resolution: { integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== } cpu: [arm64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + resolution: { integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== } cpu: [arm64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + resolution: { integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== } cpu: [ppc64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + resolution: { integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== } cpu: [riscv64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + resolution: { integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== } cpu: [riscv64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + resolution: { integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== } cpu: [s390x] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + resolution: { integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== } cpu: [x64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + resolution: { integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== } cpu: [x64] os: [linux] libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} - engines: {node: '>=14.0.0'} + resolution: { integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== } + engines: { node: '>=14.0.0' } cpu: [wasm32] '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + resolution: { integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== } cpu: [arm64] os: [win32] '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + resolution: { integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== } cpu: [ia32] os: [win32] '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + resolution: { integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== } cpu: [x64] os: [win32] '@vitejs/plugin-vue-jsx@5.1.4': - resolution: {integrity: sha512-70LmoVk9riR7qc4W2CpjsbNMWTPnuZb9dpFKX1emru0yP57nsc9k8nhLA6U93ngQapv5VDIUq2JatNfLbBIkrA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: { integrity: sha512-70LmoVk9riR7qc4W2CpjsbNMWTPnuZb9dpFKX1emru0yP57nsc9k8nhLA6U93ngQapv5VDIUq2JatNfLbBIkrA== } + engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.0.0 '@vitejs/plugin-vue@6.0.4': - resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: { integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ== } + engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 '@volar/language-core@2.4.28': - resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + resolution: { integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ== } '@volar/source-map@2.4.28': - resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + resolution: { integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ== } '@volar/typescript@2.4.28': - resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + resolution: { integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw== } '@vue-flow/background@1.3.2': - resolution: {integrity: sha512-eJPhDcLj1wEo45bBoqTXw1uhl0yK2RaQGnEINqvvBsAFKh/camHJd5NPmOdS1w+M9lggc9igUewxaEd3iCQX2w==} + resolution: { integrity: sha512-eJPhDcLj1wEo45bBoqTXw1uhl0yK2RaQGnEINqvvBsAFKh/camHJd5NPmOdS1w+M9lggc9igUewxaEd3iCQX2w== } peerDependencies: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 '@vue-flow/controls@1.1.3': - resolution: {integrity: sha512-XCf+G+jCvaWURdFlZmOjifZGw3XMhN5hHlfMGkWh9xot+9nH9gdTZtn+ldIJKtarg3B21iyHU8JjKDhYcB6JMw==} + resolution: { integrity: sha512-XCf+G+jCvaWURdFlZmOjifZGw3XMhN5hHlfMGkWh9xot+9nH9gdTZtn+ldIJKtarg3B21iyHU8JjKDhYcB6JMw== } peerDependencies: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 '@vue-flow/core@1.48.2': - resolution: {integrity: sha512-raxhgKWE+G/mcEvXJjGFUDYW9rAI3GOtiHR3ZkNpwBWuIaCC1EYiBmKGwJOoNzVFgwO7COgErnK7i08i287AFA==} + resolution: { integrity: sha512-raxhgKWE+G/mcEvXJjGFUDYW9rAI3GOtiHR3ZkNpwBWuIaCC1EYiBmKGwJOoNzVFgwO7COgErnK7i08i287AFA== } peerDependencies: vue: ^3.3.0 '@vue-flow/minimap@1.5.4': - resolution: {integrity: sha512-l4C+XTAXnRxsRpUdN7cAVFBennC1sVRzq4bDSpVK+ag7tdMczAnhFYGgbLkUw3v3sY6gokyWwMl8CDonp8eB2g==} + resolution: { integrity: sha512-l4C+XTAXnRxsRpUdN7cAVFBennC1sVRzq4bDSpVK+ag7tdMczAnhFYGgbLkUw3v3sY6gokyWwMl8CDonp8eB2g== } peerDependencies: '@vue-flow/core': ^1.23.0 vue: ^3.3.0 '@vue-macros/common@3.1.2': - resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng== } + engines: { node: '>=20.19.0' } peerDependencies: vue: ^2.7.0 || ^3.2.25 peerDependenciesMeta: @@ -1166,10 +1164,10 @@ packages: optional: true '@vue/babel-helper-vue-transform-on@2.0.1': - resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + resolution: { integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA== } '@vue/babel-plugin-jsx@2.0.1': - resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==} + resolution: { integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA== } peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: @@ -1177,509 +1175,509 @@ packages: optional: true '@vue/babel-plugin-resolve-type@2.0.1': - resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + resolution: { integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ== } peerDependencies: '@babel/core': ^7.0.0-0 '@vue/compiler-core@3.5.29': - resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + resolution: { integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw== } '@vue/compiler-dom@3.5.29': - resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + resolution: { integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg== } '@vue/compiler-sfc@3.5.29': - resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + resolution: { integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA== } '@vue/compiler-ssr@3.5.29': - resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + resolution: { integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw== } '@vue/devtools-api@6.6.4': - resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + resolution: { integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== } '@vue/devtools-api@7.7.9': - resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + resolution: { integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g== } '@vue/devtools-api@8.0.7': - resolution: {integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==} + resolution: { integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA== } '@vue/devtools-kit@7.7.9': - resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + resolution: { integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA== } '@vue/devtools-kit@8.0.7': - resolution: {integrity: sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==} + resolution: { integrity: sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw== } '@vue/devtools-shared@7.7.9': - resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + resolution: { integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA== } '@vue/devtools-shared@8.0.7': - resolution: {integrity: sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==} + resolution: { integrity: sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA== } '@vue/language-core@3.2.5': - resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} + resolution: { integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g== } '@vue/reactivity@3.5.29': - resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + resolution: { integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA== } '@vue/runtime-core@3.5.29': - resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} + resolution: { integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg== } '@vue/runtime-dom@3.5.29': - resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} + resolution: { integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg== } '@vue/server-renderer@3.5.29': - resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} + resolution: { integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g== } peerDependencies: vue: 3.5.29 '@vue/shared@3.5.29': - resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + resolution: { integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg== } '@vueuse/core@10.11.1': - resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} + resolution: { integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww== } '@vueuse/core@14.2.1': - resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + resolution: { integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ== } peerDependencies: vue: ^3.5.0 '@vueuse/metadata@10.11.1': - resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} + resolution: { integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw== } '@vueuse/metadata@14.2.1': - resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + resolution: { integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw== } '@vueuse/shared@10.11.1': - resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + resolution: { integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA== } '@vueuse/shared@14.2.1': - resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + resolution: { integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw== } peerDependencies: vue: ^3.5.0 acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} + resolution: { integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== } + engines: { node: '>=0.4.0' } hasBin: true ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + resolution: { integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== } ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + resolution: { integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== } alien-signals@3.1.2: - resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} + resolution: { integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw== } ansi-escapes@7.3.0: - resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg== } + engines: { node: '>=18' } ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} + resolution: { integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== } + engines: { node: '>=6' } ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } + engines: { node: '>=8' } ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== } + engines: { node: '>=12' } ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } + engines: { node: '>=4' } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: '>=8' } ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== } + engines: { node: '>=12' } argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== } + engines: { node: '>=0.10.0' } arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== } + engines: { node: '>=0.10.0' } arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== } + engines: { node: '>=0.10.0' } array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== } + engines: { node: '>= 0.4' } array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== } + engines: { node: '>=0.10.0' } array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + resolution: { integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== } array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== } + engines: { node: '>= 0.4' } array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== } + engines: { node: '>=0.10.0' } array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== } + engines: { node: '>=0.10.0' } array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== } + engines: { node: '>=0.10.0' } array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== } + engines: { node: '>= 0.4' } array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== } + engines: { node: '>= 0.4' } array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== } + engines: { node: '>= 0.4' } arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== } + engines: { node: '>= 0.4' } arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== } + engines: { node: '>=0.10.0' } assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== } + engines: { node: '>=0.10.0' } ast-kit@2.2.0: - resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw== } + engines: { node: '>=20.19.0' } ast-walker-scope@0.8.3: - resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg== } + engines: { node: '>=20.19.0' } astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== } + engines: { node: '>=4' } astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + resolution: { integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== } + engines: { node: '>=8' } async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== } + engines: { node: '>= 0.4' } asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== } atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} + resolution: { integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== } + engines: { node: '>= 4.5.0' } hasBin: true autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + resolution: { integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== } hasBin: true available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== } + engines: { node: '>= 0.4' } axios@1.13.6: - resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + resolution: { integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ== } b-tween@0.3.3: - resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} + resolution: { integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA== } b-validate@1.5.3: - resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==} + resolution: { integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA== } bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + resolution: { integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== } balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} + resolution: { integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== } + engines: { node: 18 || 20 || >=22 } base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== } + engines: { node: '>=0.10.0' } baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== } + engines: { node: '>=6.0.0' } hasBin: true birpc@2.9.0: - resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + resolution: { integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw== } boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== } brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + resolution: { integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== } brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} - engines: {node: 18 || 20 || >=22} + resolution: { integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== } + engines: { node: 18 || 20 || >=22 } braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } + engines: { node: '>=0.10.0' } braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + resolution: { integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== } + engines: { node: '>=8' } browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: { integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== } + engines: { node: '>=18' } cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== } + engines: { node: '>=0.10.0' } cacheable@2.3.3: - resolution: {integrity: sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ==} + resolution: { integrity: sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ== } call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== } + engines: { node: '>= 0.4' } call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== } + engines: { node: '>= 0.4' } call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== } + engines: { node: '>= 0.4' } call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + resolution: { integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== } caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== } + engines: { node: '>=4' } caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} + resolution: { integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== } + engines: { node: '>=4' } callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== } + engines: { node: '>=4' } callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: '>=6' } camelcase-keys@4.2.0: - resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==} - engines: {node: '>=4'} + resolution: { integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q== } + engines: { node: '>=4' } camelcase@4.1.0: - resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== } + engines: { node: '>=4' } caniuse-lite@1.0.30001776: - resolution: {integrity: sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==} + resolution: { integrity: sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw== } ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + resolution: { integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== } chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } + engines: { node: '>=4' } chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + resolution: { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } + engines: { node: '>=10' } character-entities-html4@1.1.4: - resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} + resolution: { integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== } character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + resolution: { integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== } character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + resolution: { integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== } character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + resolution: { integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== } chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} - engines: {node: '>= 20.19.0'} + resolution: { integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw== } + engines: { node: '>= 20.19.0' } class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== } + engines: { node: '>=0.10.0' } cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== } + engines: { node: '>=18' } cli-truncate@5.2.0: - resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw== } + engines: { node: '>=20' } clipboard@2.0.11: - resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} + resolution: { integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== } cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + resolution: { integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== } + engines: { node: '>=12' } cliui@9.0.1: - resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} - engines: {node: '>=20'} + resolution: { integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w== } + engines: { node: '>=20' } clone-regexp@1.0.1: - resolution: {integrity: sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== } + engines: { node: '>=0.10.0' } collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + resolution: { integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== } collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== } + engines: { node: '>=0.10.0' } color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: '>=7.0.0' } color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + resolution: { integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== } color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + resolution: { integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== } colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + resolution: { integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== } colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + resolution: { integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== } combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== } + engines: { node: '>= 0.8' } commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== } + engines: { node: '>=20' } commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + resolution: { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } + engines: { node: '>= 10' } compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + resolution: { integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== } component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + resolution: { integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== } compute-scroll-into-view@1.0.20: - resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + resolution: { integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== } concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + resolution: { integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== } confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + resolution: { integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ== } confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + resolution: { integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== } consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} + resolution: { integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== } + engines: { node: ^14.18.0 || >=16.10.0 } conventional-changelog-angular@8.2.0: - resolution: {integrity: sha512-4YB1zEXqB17oBI8yRsAs1T+ZhbdsOgJqkl6Trz+GXt/eKf1e4jnA0oW+sOd9BEENzEViuNW0DNoFFjSf3CeC5Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-4YB1zEXqB17oBI8yRsAs1T+ZhbdsOgJqkl6Trz+GXt/eKf1e4jnA0oW+sOd9BEENzEViuNW0DNoFFjSf3CeC5Q== } + engines: { node: '>=18' } conventional-changelog-conventionalcommits@9.2.0: - resolution: {integrity: sha512-fCf+ODjseueTV09wVBoC0HXLi3OyuBJ+HfE3L63Khxqnr99f9nUcnQh3a15lCWHlGLihyZShW/mVVkBagr9JvQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-fCf+ODjseueTV09wVBoC0HXLi3OyuBJ+HfE3L63Khxqnr99f9nUcnQh3a15lCWHlGLihyZShW/mVVkBagr9JvQ== } + engines: { node: '>=18' } conventional-commits-parser@6.3.0: - resolution: {integrity: sha512-RfOq/Cqy9xV9bOA8N+ZH6DlrDR+5S3Mi0B5kACEjESpE+AviIpAptx9a9cFpWCCvgRtWT+0BbUw+e1BZfts9jg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-RfOq/Cqy9xV9bOA8N+ZH6DlrDR+5S3Mi0B5kACEjESpE+AviIpAptx9a9cFpWCCvgRtWT+0BbUw+e1BZfts9jg== } + engines: { node: '>=18' } hasBin: true convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + resolution: { integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== } copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA== } + engines: { node: '>=18' } copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== } + engines: { node: '>=0.10.0' } cosmiconfig-typescript-loader@6.2.0: - resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} - engines: {node: '>=v18'} + resolution: { integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ== } + engines: { node: '>=v18' } peerDependencies: '@types/node': '*' cosmiconfig: '>=9' typescript: '>=5' cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== } + engines: { node: '>=4' } cosmiconfig@9.0.1: - resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} - engines: {node: '>=14'} + resolution: { integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ== } + engines: { node: '>=14' } peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: @@ -1687,112 +1685,112 @@ packages: optional: true cross-env@10.1.0: - resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw== } + engines: { node: '>=20' } hasBin: true cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + resolution: { integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== } + engines: { node: '>= 8' } css-functions-list@3.3.3: - resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg== } + engines: { node: '>=12' } css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + resolution: { integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== } css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + resolution: { integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + resolution: { integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + resolution: { integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} + resolution: { integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== } + engines: { node: '>= 6' } cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== } + engines: { node: '>=4' } hasBin: true csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + resolution: { integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + resolution: { integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== } currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== } + engines: { node: '>=0.10.0' } d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} + resolution: { integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== } + engines: { node: '>=12' } d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== } + engines: { node: '>=12' } d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== } + engines: { node: '>=12' } d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} + resolution: { integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== } + engines: { node: '>=12' } d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} + resolution: { integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== } + engines: { node: '>=12' } d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} + resolution: { integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== } + engines: { node: '>=12' } d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} + resolution: { integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== } + engines: { node: '>=12' } d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} + resolution: { integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== } + engines: { node: '>=12' } peerDependencies: d3-selection: 2 - 3 d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} + resolution: { integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== } + engines: { node: '>=12' } dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} + resolution: { integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== } + engines: { node: '>=12' } data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== } + engines: { node: '>= 0.4' } data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== } + engines: { node: '>= 0.4' } data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== } + engines: { node: '>= 0.4' } dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + resolution: { integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== } debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -1800,7 +1798,7 @@ packages: optional: true debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -1808,8 +1806,8 @@ packages: optional: true debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + resolution: { integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== } + engines: { node: '>=6.0' } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -1817,213 +1815,213 @@ packages: optional: true decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== } + engines: { node: '>=0.10.0' } decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } + engines: { node: '>=0.10.0' } decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} + resolution: { integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== } + engines: { node: '>=0.10' } decode-uri-component@0.4.1: - resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} - engines: {node: '>=14.16'} + resolution: { integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ== } + engines: { node: '>=14.16' } deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + resolution: { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== } + engines: { node: '>=18' } default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw== } + engines: { node: '>=18' } define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== } + engines: { node: '>= 0.4' } define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== } + engines: { node: '>=12' } define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== } + engines: { node: '>= 0.4' } define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== } + engines: { node: '>=0.10.0' } define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== } + engines: { node: '>=0.10.0' } define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== } + engines: { node: '>=0.10.0' } delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== } + engines: { node: '>=0.4.0' } delegate@3.2.0: - resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + resolution: { integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== } dir-glob@2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== } + engines: { node: '>=4' } doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== } + engines: { node: '>=0.10.0' } doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } + engines: { node: '>=6.0.0' } dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + resolution: { integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== } dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + resolution: { integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== } domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + resolution: { integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== } domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + resolution: { integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== } domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + resolution: { integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== } domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + resolution: { integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== } + engines: { node: '>= 4' } domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + resolution: { integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== } domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + resolution: { integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== } dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + resolution: { integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== } + engines: { node: '>=8' } dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== } + engines: { node: '>= 0.4' } echarts@6.0.0: - resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==} + resolution: { integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ== } electron-to-chromium@1.5.307: - resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + resolution: { integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg== } emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + resolution: { integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A== } emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + resolution: { integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== } emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + resolution: { integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== } entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + resolution: { integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== } entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + resolution: { integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== } + engines: { node: '>=0.12' } entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} + resolution: { integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== } + engines: { node: '>=0.12' } env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + resolution: { integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== } + engines: { node: '>=6' } environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== } + engines: { node: '>=18' } errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: { integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== } hasBin: true error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + resolution: { integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== } es-abstract@1.24.1: - resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== } + engines: { node: '>= 0.4' } es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== } + engines: { node: '>= 0.4' } es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== } + engines: { node: '>= 0.4' } es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + 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'} + resolution: { integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== } + engines: { node: '>= 0.4' } es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== } + engines: { node: '>= 0.4' } es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== } + engines: { node: '>= 0.4' } esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg== } + engines: { node: '>=18' } hasBin: true escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + resolution: { integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== } + engines: { node: '>=6' } escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: '>=0.8.0' } escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + resolution: { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } + engines: { node: '>=10' } eslint-config-airbnb-base@15.0.0: - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} + resolution: { integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== } + engines: { node: ^10.12.0 || >=12.0.0 } peerDependencies: eslint: ^7.32.0 || ^8.2.0 eslint-plugin-import: ^2.25.2 eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + resolution: { integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w== } hasBin: true peerDependencies: eslint: '>=7.0.0' eslint-import-context@0.1.9: - resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + resolution: { integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg== } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } peerDependencies: unrs-resolver: ^1.0.0 peerDependenciesMeta: @@ -2031,11 +2029,11 @@ packages: optional: true eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + resolution: { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } eslint-import-resolver-typescript@4.4.4: - resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} - engines: {node: ^16.17.0 || >=18.6.0} + resolution: { integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw== } + engines: { node: ^16.17.0 || >=18.6.0 } peerDependencies: eslint: '*' eslint-plugin-import: '*' @@ -2047,8 +2045,8 @@ packages: optional: true eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== } + engines: { node: '>=4' } peerDependencies: '@typescript-eslint/parser': '*' eslint: '*' @@ -2068,8 +2066,8 @@ packages: optional: true eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== } + engines: { node: '>=4' } peerDependencies: '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 @@ -2078,8 +2076,8 @@ packages: optional: true eslint-plugin-prettier@5.5.5: - resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: { integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw== } + engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' @@ -2092,8 +2090,8 @@ packages: optional: true eslint-plugin-vue@10.8.0: - resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA== } + 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 @@ -2106,121 +2104,121 @@ packages: optional: true eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: { integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } eslint-scope@9.1.1: - resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: { integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } 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} + resolution: { integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: { integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: { integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@11.1.1: - resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: { integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + 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'} + resolution: { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } + engines: { node: '>=4' } hasBin: true esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} + resolution: { integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== } + engines: { node: '>=0.10' } esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.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'} + 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==} + resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: '>=0.10.0' } eventemitter3@5.0.4: - resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + resolution: { integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== } execall@1.0.0: - resolution: {integrity: sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ== } + engines: { node: '>=0.10.0' } expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } + engines: { node: '>=0.10.0' } exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + resolution: { integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA== } extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== } + engines: { node: '>=0.10.0' } extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== } + engines: { node: '>=0.10.0' } extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + resolution: { integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== } extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } + engines: { node: '>=0.10.0' } fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + resolution: { integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== } fast-glob@2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} + resolution: { integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== } + engines: { node: '>=4.0.0' } fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} + resolution: { integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== } + engines: { node: '>=8.6.0' } fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + resolution: { integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== } fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} + resolution: { integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== } + engines: { node: '>= 4.9.1' } fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + resolution: { integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + resolution: { integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== } + engines: { node: '>=12.0.0' } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2228,56 +2226,56 @@ packages: optional: true file-entry-cache@11.1.2: - resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} + resolution: { integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log== } file-entry-cache@4.0.0: - resolution: {integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA== } + engines: { node: '>=4' } file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + resolution: { integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== } + engines: { node: ^10.12.0 || >=12.0.0 } fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== } + engines: { node: '>=0.10.0' } fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + resolution: { integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== } + engines: { node: '>=8' } filter-obj@5.1.0: - resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} - engines: {node: '>=14.16'} + resolution: { integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng== } + engines: { node: '>=14.16' } find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== } + engines: { node: '>=4' } find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + resolution: { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: '>=10' } flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== } + engines: { node: '>=4' } flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + resolution: { integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== } + engines: { node: ^10.12.0 || >=12.0.0 } flat-cache@6.1.20: - resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} + resolution: { integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ== } flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + resolution: { integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== } flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + resolution: { integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA== } follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} + resolution: { integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== } + engines: { node: '>=4.0' } peerDependencies: debug: '*' peerDependenciesMeta: @@ -2285,1089 +2283,1089 @@ packages: optional: true for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== } + engines: { node: '>= 0.4' } for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== } + engines: { node: '>=0.10.0' } form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} + resolution: { integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== } + engines: { node: '>= 6' } fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== } + engines: { node: '>=0.10.0' } fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + resolution: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== } + engines: { node: '>=12' } fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + 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} + 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==} + resolution: { integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== } function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== } + engines: { node: '>= 0.4' } functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + resolution: { integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== } generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== } + engines: { node: '>= 0.4' } gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + 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.*} + resolution: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } + engines: { node: 6.* || 8.* || >= 10.* } get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA== } + engines: { node: '>=18' } get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== } + engines: { node: '>= 0.4' } get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== } + engines: { node: '>= 0.4' } get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} + resolution: { integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== } + engines: { node: '>=4' } get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== } + engines: { node: '>= 0.4' } get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + resolution: { integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw== } get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== } + engines: { node: '>=0.10.0' } git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + resolution: { integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== } + engines: { node: '>=16' } hasBin: true glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + resolution: { integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== } glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + 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'} + resolution: { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } + engines: { node: '>=10.13.0' } glob-to-regexp@0.3.0: - resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + resolution: { integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== } glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== } deprecated: Glob versions prior to v9 are no longer supported global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== } + engines: { node: '>=18' } global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} + resolution: { integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== } + engines: { node: '>=6' } global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} + resolution: { integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== } + engines: { node: '>=6' } globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + resolution: { integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== } + engines: { node: '>=8' } globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== } + engines: { node: '>= 0.4' } globby@16.1.1: - resolution: {integrity: sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==} - engines: {node: '>=20'} + resolution: { integrity: sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg== } + engines: { node: '>=20' } globby@9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} + resolution: { integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== } + engines: { node: '>=6' } globjoin@0.1.4: - resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + resolution: { integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== } gonzales-pe@4.3.0: - resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} - engines: {node: '>=0.6.0'} + resolution: { integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== } + engines: { node: '>=0.6.0' } hasBin: true good-listener@1.2.2: - resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + resolution: { integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== } gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + 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==} + resolution: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== } graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== } + engines: { node: '>= 0.4' } has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: '>=4' } has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: '>=8' } has-flag@5.0.1: - resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} - engines: {node: '>=12'} + resolution: { integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA== } + engines: { node: '>=12' } has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + resolution: { integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== } has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== } + engines: { node: '>= 0.4' } has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== } + engines: { node: '>= 0.4' } has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== } + engines: { node: '>= 0.4' } has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== } + engines: { node: '>=0.10.0' } has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== } + engines: { node: '>=0.10.0' } has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== } + engines: { node: '>=0.10.0' } has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== } + engines: { node: '>=0.10.0' } hashery@1.5.0: - resolution: {integrity: sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==} - engines: {node: '>=20'} + resolution: { integrity: sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q== } + engines: { node: '>=20' } hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== } + engines: { node: '>= 0.4' } hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + resolution: { integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== } hookified@1.15.1: - resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + resolution: { integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg== } hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + resolution: { integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== } html-tags@2.0.0: - resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} - engines: {node: '>=4'} + resolution: { integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== } + engines: { node: '>=4' } html-tags@5.1.0: - resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} - engines: {node: '>=20.10'} + resolution: { integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ== } + engines: { node: '>=20.10' } htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + resolution: { integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== } htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + resolution: { integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== } husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== } + engines: { node: '>=18' } hasBin: true iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== } + engines: { node: '>=0.10.0' } ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} + resolution: { integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== } + engines: { node: '>= 4' } ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + resolution: { integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== } + engines: { node: '>= 4' } ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} + resolution: { integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== } + engines: { node: '>= 4' } image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== } + engines: { node: '>=0.10.0' } hasBin: true import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== } + engines: { node: '>=4' } import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} + resolution: { integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== } + engines: { node: '>=6' } import-lazy@3.1.0: - resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} - engines: {node: '>=6'} + resolution: { integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== } + engines: { node: '>=6' } import-meta-resolve@4.2.0: - resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + resolution: { integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg== } imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: '>=0.8.19' } indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== } + engines: { node: '>=4' } indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + resolution: { integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== } inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + 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==} + resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + resolution: { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== } ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: { integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== } + engines: { node: '>= 0.4' } is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} + resolution: { integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== } + engines: { node: '>= 0.10' } is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + resolution: { integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== } is-alphanumeric@1.0.0: - resolution: {integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA== } + engines: { node: '>=0.10.0' } is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + resolution: { integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== } is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== } + engines: { node: '>= 0.4' } is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== } is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + resolution: { integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA== } is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== } + engines: { node: '>= 0.4' } is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== } + engines: { node: '>= 0.4' } is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== } + engines: { node: '>= 0.4' } is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + resolution: { integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== } is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== } + engines: { node: '>=4' } is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + resolution: { integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ== } is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== } + engines: { node: '>= 0.4' } is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== } + engines: { node: '>= 0.4' } is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== } + engines: { node: '>= 0.4' } is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== } + engines: { node: '>= 0.4' } is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== } + engines: { node: '>= 0.4' } is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + resolution: { integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== } is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== } + engines: { node: '>= 0.4' } is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== } + engines: { node: '>= 0.4' } is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== } + engines: { node: '>=0.10.0' } is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: { integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } hasBin: true is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== } + engines: { node: '>=0.10.0' } is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== } + engines: { node: '>=0.10.0' } is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: '>=0.10.0' } is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== } + engines: { node: '>= 0.4' } is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} + resolution: { integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== } + engines: { node: '>=4' } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } + engines: { node: '>=8' } is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ== } + engines: { node: '>=18' } is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== } + engines: { node: '>= 0.4' } is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== } + engines: { node: '>=0.10.0' } is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } + engines: { node: '>=0.10.0' } is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + resolution: { integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== } is-in-ssh@1.0.0: - resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw== } + engines: { node: '>=20' } is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} + resolution: { integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== } + engines: { node: '>=14.16' } hasBin: true is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== } + engines: { node: '>= 0.4' } is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== } + engines: { node: '>= 0.4' } is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== } + engines: { node: '>= 0.4' } is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== } + engines: { node: '>=0.10.0' } is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + resolution: { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: '>=0.12.0' } is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} + resolution: { integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== } + engines: { node: '>=8' } is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} + resolution: { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } + engines: { node: '>=8' } is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} + resolution: { integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== } + engines: { node: '>=12' } is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== } + engines: { node: '>=0.10.0' } is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== } + engines: { node: '>=12' } is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } + engines: { node: '>=0.10.0' } is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== } + engines: { node: '>=0.10.0' } is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== } + engines: { node: '>= 0.4' } is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== } + engines: { node: '>=0.10.0' } is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== } + engines: { node: '>= 0.4' } is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== } + engines: { node: '>= 0.4' } is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== } + engines: { node: '>= 0.4' } is-supported-regexp-flag@1.0.1: - resolution: {integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== } + engines: { node: '>=0.10.0' } is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== } + engines: { node: '>= 0.4' } is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== } + engines: { node: '>= 0.4' } is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== } + engines: { node: '>= 0.4' } is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== } + engines: { node: '>= 0.4' } is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== } + engines: { node: '>= 0.4' } is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + resolution: { integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== } is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw== } + engines: { node: '>=18' } is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + resolution: { integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== } is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== } + engines: { node: '>=0.10.0' } is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + resolution: { integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== } is-wsl@3.1.1: - resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} - engines: {node: '>=16'} + resolution: { integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw== } + engines: { node: '>=16' } isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + resolution: { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + resolution: { integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== } + engines: { node: '>=0.10.0' } isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } + engines: { node: '>=0.10.0' } jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + resolution: { integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== } hasBin: true js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + resolution: { integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== } js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + resolution: { integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== } hasBin: true js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + resolution: { integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== } hasBin: true jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} + resolution: { integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== } + engines: { node: '>=6' } hasBin: true json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + resolution: { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + resolution: { integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== } json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + resolution: { integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== } json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + resolution: { integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== } hasBin: true json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } + engines: { node: '>=6' } hasBin: true jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + resolution: { integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== } keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + resolution: { integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== } keyv@5.6.0: - resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + resolution: { integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw== } kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== } + engines: { node: '>=0.10.0' } kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== } + engines: { node: '>=0.10.0' } kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } + engines: { node: '>=0.10.0' } known-css-properties@0.11.0: - resolution: {integrity: sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==} + resolution: { integrity: sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== } less@4.5.1: - resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} - engines: {node: '>=14'} + resolution: { integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw== } + engines: { node: '>=14' } hasBin: true leven@2.1.0: - resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== } + engines: { node: '>=0.10.0' } levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + resolution: { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } + engines: { node: '>= 0.8.0' } lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + resolution: { integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== } lint-staged@16.3.2: - resolution: {integrity: sha512-xKqhC2AeXLwiAHXguxBjuChoTTWFC6Pees0SHPwOpwlvI3BH7ZADFPddAdN3pgo3aiKgPUx/bxE78JfUnxQnlg==} - engines: {node: '>=20.17'} + resolution: { integrity: sha512-xKqhC2AeXLwiAHXguxBjuChoTTWFC6Pees0SHPwOpwlvI3BH7ZADFPddAdN3pgo3aiKgPUx/bxE78JfUnxQnlg== } + engines: { node: '>=20.17' } hasBin: true listr2@9.0.5: - resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} - engines: {node: '>=20.0.0'} + resolution: { integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g== } + engines: { node: '>=20.0.0' } load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== } + engines: { node: '>=4' } local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} - engines: {node: '>=14'} + resolution: { integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A== } + engines: { node: '>=14' } locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== } + engines: { node: '>=4' } locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: '>=10' } lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + resolution: { integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== } lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + resolution: { integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== } lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + resolution: { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + resolution: { integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== } lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + resolution: { integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== } lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + resolution: { integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== } lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + resolution: { integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== } lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + resolution: { integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== } lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + resolution: { integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== } log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== } + engines: { node: '>=4' } log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} + resolution: { integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== } + engines: { node: '>=18' } longest-streak@2.0.4: - resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + resolution: { integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== } loud-rejection@1.6.0: - resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== } + engines: { node: '>=0.10.0' } lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } magic-string-ast@1.0.3: - resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA== } + engines: { node: '>=20.19.0' } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + resolution: { integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== } make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + resolution: { integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== } + engines: { node: '>=6' } map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== } + engines: { node: '>=0.10.0' } map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== } + engines: { node: '>=0.10.0' } map-obj@2.0.0: - resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ== } + engines: { node: '>=4' } map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== } + engines: { node: '>=0.10.0' } markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + resolution: { integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== } markdown-table@1.1.3: - resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + resolution: { integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== } math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== } + engines: { node: '>= 0.4' } mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + resolution: { integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== } mathml-tag-names@4.0.0: - resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + resolution: { integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ== } mdast-util-compact@1.0.4: - resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} + resolution: { integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== } mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + resolution: { integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== } mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + resolution: { integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== } mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + resolution: { integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== } meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + resolution: { integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== } + engines: { node: '>=16.10' } meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== } + engines: { node: '>=18' } meow@14.1.0: - resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw== } + engines: { node: '>=20' } meow@5.0.0: - resolution: {integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==} - engines: {node: '>=6'} + resolution: { integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== } + engines: { node: '>=6' } merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + resolution: { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: '>= 8' } micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } + engines: { node: '>=0.10.0' } micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + resolution: { integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== } + engines: { node: '>=8.6' } mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + 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'} + 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'} + resolution: { integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== } + engines: { node: '>=4' } hasBin: true mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== } + engines: { node: '>=18' } minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} + resolution: { integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== } + engines: { node: 18 || 20 || >=22 } minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + resolution: { integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== } minimist-options@3.0.2: - resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==} - engines: {node: '>= 4'} + resolution: { integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== } + engines: { node: '>= 4' } minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + resolution: { integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== } mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + resolution: { integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== } mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== } + engines: { node: '>=0.10.0' } mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + resolution: { integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== } hasBin: true mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + resolution: { integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== } mockjs@1.1.0: - resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + resolution: { integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ== } hasBin: true ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + resolution: { integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== } ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + 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} + resolution: { integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } + engines: { node: '>=0.10.0' } napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + resolution: { integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } hasBin: true natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} + resolution: { integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== } + engines: { node: '>= 4.4.x' } hasBin: true node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + resolution: { integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== } normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + resolution: { integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== } normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.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'} + resolution: { integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== } + engines: { node: '>=0.10.0' } normalize-selector@0.2.0: - resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + resolution: { integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw== } nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + resolution: { integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== } nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + resolution: { integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== } num2fraction@1.2.2: - resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + resolution: { integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== } number-precision@1.6.0: - resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} + resolution: { integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ== } object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== } + engines: { node: '>=0.10.0' } object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== } + engines: { node: '>= 0.4' } object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== } + engines: { node: '>= 0.4' } object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== } + engines: { node: '>=0.10.0' } object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== } + engines: { node: '>= 0.4' } object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== } + engines: { node: '>= 0.4' } object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== } + engines: { node: '>= 0.4' } object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== } + engines: { node: '>= 0.4' } object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== } + engines: { node: '>=0.10.0' } object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== } + engines: { node: '>= 0.4' } obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + resolution: { integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== } once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== } + engines: { node: '>=18' } open@11.0.0: - resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw== } + engines: { node: '>=20' } optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + resolution: { integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== } + engines: { node: '>= 0.8.0' } own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== } + engines: { node: '>= 0.4' } p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} + resolution: { integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== } + engines: { node: '>=4' } p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: '>=10' } p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== } + engines: { node: '>=4' } p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: '>=10' } p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} + resolution: { integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== } + engines: { node: '>=4' } parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: '>=6' } parse-entities@1.2.2: - resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} + resolution: { integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== } parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== } + engines: { node: '>=4' } parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== } + engines: { node: '>=8' } parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} + resolution: { integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== } + engines: { node: '>= 0.10' } pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== } + engines: { node: '>=0.10.0' } path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + resolution: { integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== } path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + resolution: { integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== } path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} + resolution: { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } + engines: { node: '>=4' } path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + 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'} + resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } + engines: { node: '>=0.10.0' } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: '>=8' } path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== } + engines: { node: '>=4' } pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + resolution: { integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== } perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + resolution: { integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== } perfect-debounce@2.1.0: - resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + resolution: { integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g== } picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + resolution: { integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== } picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} + resolution: { integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== } + engines: { node: '>=12' } pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== } + engines: { node: '>=4' } pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + resolution: { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } + engines: { node: '>=6' } pinia@3.0.4: - resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + resolution: { integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw== } peerDependencies: typescript: '>=4.5.0' vue: ^3.5.11 @@ -3376,97 +3374,97 @@ packages: optional: true pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + resolution: { integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== } pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + resolution: { integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig== } posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== } + engines: { node: '>=0.10.0' } possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== } + engines: { node: '>= 0.4' } postcss-html@0.36.0: - resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + resolution: { integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== } peerDependencies: postcss: '>=5.0.0' postcss-syntax: '>=0.36.0' postcss-html@1.8.1: - resolution: {integrity: sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ==} - engines: {node: ^12 || >=14} + resolution: { integrity: sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ== } + engines: { node: ^12 || >=14 } postcss-jsx@0.36.4: - resolution: {integrity: sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==} + resolution: { integrity: sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== } peerDependencies: postcss: '>=5.0.0' postcss-syntax: '>=0.36.0' postcss-less@3.1.4: - resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} - engines: {node: '>=6.14.4'} + resolution: { integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== } + engines: { node: '>=6.14.4' } postcss-markdown@0.36.0: - resolution: {integrity: sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==} + resolution: { integrity: sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== } peerDependencies: postcss: '>=5.0.0' postcss-syntax: '>=0.36.0' postcss-media-query-parser@0.2.3: - resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + resolution: { integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== } postcss-reporter@6.0.1: - resolution: {integrity: sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==} - engines: {node: '>=6'} + resolution: { integrity: sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== } + engines: { node: '>=6' } postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + resolution: { integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw== } postcss-safe-parser@4.0.2: - resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== } + engines: { node: '>=6.0.0' } postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} + resolution: { integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== } + engines: { node: '>=12.0' } peerDependencies: postcss: ^8.3.3 postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} - engines: {node: '>=18.0'} + resolution: { integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A== } + engines: { node: '>=18.0' } peerDependencies: postcss: ^8.4.31 postcss-sass@0.3.5: - resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==} + resolution: { integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A== } postcss-scss@2.1.1: - resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA== } + engines: { node: '>=6.0.0' } postcss-selector-parser@3.1.2: - resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} - engines: {node: '>=8'} + resolution: { integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== } + engines: { node: '>=8' } postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} + resolution: { integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== } + engines: { node: '>=4' } postcss-sorting@4.1.0: - resolution: {integrity: sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw==} - engines: {node: '>=6.14.3'} + resolution: { integrity: sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw== } + engines: { node: '>=6.14.3' } postcss-sorting@9.1.0: - resolution: {integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==} + resolution: { integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g== } peerDependencies: postcss: ^8.4.20 postcss-syntax@0.36.2: - resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + resolution: { integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== } peerDependencies: postcss: '>=5.0.0' postcss-html: '*' @@ -3487,180 +3485,180 @@ packages: optional: true postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + resolution: { integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== } postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + resolution: { integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== } postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== } + engines: { node: '>=6.0.0' } postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} + resolution: { integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg== } + engines: { node: ^10 || ^12 || >=14 } powershell-utils@0.1.0: - resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} - engines: {node: '>=20'} + resolution: { integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A== } + engines: { node: '>=20' } prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + resolution: { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } + engines: { node: '>= 0.8.0' } prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== } + engines: { node: '>=6.0.0' } prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} - engines: {node: '>=14'} + resolution: { integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== } + engines: { node: '>=14' } hasBin: true proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + resolution: { integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== } prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + resolution: { integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== } punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + resolution: { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== } + engines: { node: '>=6' } qified@0.6.0: - resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} - engines: {node: '>=20'} + resolution: { integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA== } + engines: { node: '>=20' } quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + resolution: { integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA== } query-string@9.3.1: - resolution: {integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw==} - engines: {node: '>=18'} + resolution: { integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw== } + engines: { node: '>=18' } queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + resolution: { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } quick-lru@1.1.0: - resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA== } + engines: { node: '>=4' } read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== } + engines: { node: '>=4' } read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== } + engines: { node: '>=4' } readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + resolution: { integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== } + engines: { node: '>= 6' } readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} - engines: {node: '>= 20.19.0'} + resolution: { integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ== } + engines: { node: '>= 20.19.0' } redent@2.0.0: - resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw== } + engines: { node: '>=4' } reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== } + engines: { node: '>= 0.4' } regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== } + engines: { node: '>=0.10.0' } regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== } + engines: { node: '>= 0.4' } remark-parse@6.0.3: - resolution: {integrity: sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==} + resolution: { integrity: sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== } remark-stringify@6.0.4: - resolution: {integrity: sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==} + resolution: { integrity: sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== } remark@10.0.1: - resolution: {integrity: sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==} + resolution: { integrity: sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== } repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== } + engines: { node: '>=0.10.0' } repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} + resolution: { integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== } + engines: { node: '>=0.10' } replace-ext@1.0.0: - resolution: {integrity: sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==} - engines: {node: '>= 0.10'} + resolution: { integrity: sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA== } + engines: { node: '>= 0.10' } require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } + engines: { node: '>=0.10.0' } require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== } + engines: { node: '>=0.10.0' } resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolution: { integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== } resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} + resolution: { integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== } + engines: { node: '>=4' } resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: '>=4' } resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + resolution: { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } + engines: { node: '>=8' } resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolution: { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + resolution: { integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== } deprecated: https://github.com/lydell/resolve-url#deprecated resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== } + engines: { node: '>= 0.4' } hasBin: true restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} + resolution: { integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== } + engines: { node: '>=18' } ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} + resolution: { integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== } + engines: { node: '>=0.12' } reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: { integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + resolution: { integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== } rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + resolution: { integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== } deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + resolution: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rollup-plugin-visualizer@7.0.1: - resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} - engines: {node: '>=22'} + resolution: { integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg== } + engines: { node: '>=22' } hasBin: true peerDependencies: rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc @@ -3672,549 +3670,549 @@ packages: optional: true rollup@2.80.0: - resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} - engines: {node: '>=10.0.0'} + resolution: { integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ== } + engines: { node: '>=10.0.0' } hasBin: true rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + resolution: { integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg== } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} + resolution: { integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== } + engines: { node: '>=18' } run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + resolution: { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} + resolution: { integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== } + engines: { node: '>=0.4' } safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== } + engines: { node: '>= 0.4' } safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== } + engines: { node: '>= 0.4' } safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + resolution: { integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== } safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} - engines: {node: '>=11.0.0'} + resolution: { integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA== } + engines: { node: '>=11.0.0' } scroll-into-view-if-needed@2.2.31: - resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + resolution: { integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== } scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + resolution: { integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g== } select@1.1.2: - resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + resolution: { integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== } semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + resolution: { integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== } hasBin: true semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } hasBin: true semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} + resolution: { integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== } + engines: { node: '>=10' } hasBin: true set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== } + engines: { node: '>= 0.4' } set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== } + engines: { node: '>= 0.4' } set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== } + engines: { node: '>= 0.4' } set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== } + engines: { node: '>=0.10.0' } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: '>=8' } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + 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'} + 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'} + 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'} + 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'} + resolution: { integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== } + engines: { node: '>= 0.4' } signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: { integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== } signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + resolution: { integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== } + engines: { node: '>=14' } simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + resolution: { integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw== } slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} + resolution: { integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== } + engines: { node: '>=6' } slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} + resolution: { integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== } + engines: { node: '>=14.16' } slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + resolution: { integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== } + engines: { node: '>=6' } slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + resolution: { integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== } + engines: { node: '>=10' } slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} + resolution: { integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w== } + engines: { node: '>=18' } slice-ansi@8.0.0: - resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} - engines: {node: '>=20'} + resolution: { integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg== } + engines: { node: '>=20' } snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== } + engines: { node: '>=0.10.0' } snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== } + engines: { node: '>=0.10.0' } snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } + engines: { node: '>=0.10.0' } sortablejs@1.15.7: - resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==} + resolution: { integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A== } source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== } + engines: { node: '>=0.10.0' } source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + resolution: { integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== } deprecated: See https://github.com/lydell/source-map-resolve#deprecated source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + resolution: { integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== } deprecated: See https://github.com/lydell/source-map-url#deprecated source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== } + engines: { node: '>=0.10.0' } source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } + engines: { node: '>=0.10.0' } source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} + resolution: { integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== } + engines: { node: '>= 12' } spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + resolution: { integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== } spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + resolution: { integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== } spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + resolution: { integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== } spdx-license-ids@3.0.23: - resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + resolution: { integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw== } speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== } + engines: { node: '>=0.10.0' } specificity@0.4.1: - resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + resolution: { integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== } hasBin: true split-on-first@3.0.0: - resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} - engines: {node: '>=12'} + resolution: { integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA== } + engines: { node: '>=12' } split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== } + engines: { node: '>=0.10.0' } split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} + resolution: { integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== } + engines: { node: '>= 10.x' } sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } stable-hash-x@0.2.0: - resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} - engines: {node: '>=12.0.0'} + resolution: { integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ== } + engines: { node: '>=12.0.0' } state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + resolution: { integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== } static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== } + engines: { node: '>=0.10.0' } stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== } + engines: { node: '>= 0.4' } string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} + resolution: { integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== } + engines: { node: '>=0.6.19' } string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} + resolution: { integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== } + engines: { node: '>=6' } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + resolution: { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } + engines: { node: '>=8' } string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + resolution: { integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== } + engines: { node: '>=18' } string-width@8.2.0: - resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw== } + engines: { node: '>=20' } string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== } + engines: { node: '>= 0.4' } string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== } + engines: { node: '>= 0.4' } string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== } + engines: { node: '>= 0.4' } string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + resolution: { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== } stringify-entities@1.3.2: - resolution: {integrity: sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==} + resolution: { integrity: sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== } strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + resolution: { integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== } + engines: { node: '>=6' } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } + engines: { node: '>=8' } strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} + resolution: { integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== } + engines: { node: '>=12' } strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } + engines: { node: '>=4' } strip-indent@2.0.0: - resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== } + engines: { node: '>=4' } strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: '>=8' } style-search@0.1.0: - resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + resolution: { integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg== } stylelint-config-html@1.1.0: - resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} - engines: {node: ^12 || >=14} + resolution: { integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ== } + engines: { node: ^12 || >=14 } peerDependencies: postcss-html: ^1.0.0 stylelint: '>=14.0.0' stylelint-config-prettier@9.0.5: - resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} - engines: {node: '>= 12'} + resolution: { integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA== } + engines: { node: '>= 12' } hasBin: true peerDependencies: stylelint: '>= 11.x < 15' stylelint-config-rational-order@0.1.2: - resolution: {integrity: sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew==} + resolution: { integrity: sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew== } stylelint-config-recommended-vue@1.6.1: - resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} - engines: {node: ^12 || >=14} + resolution: { integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ== } + engines: { node: ^12 || >=14 } peerDependencies: postcss-html: ^1.0.0 stylelint: '>=14.0.0' stylelint-config-recommended@18.0.0: - resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg== } + engines: { node: '>=20.19.0' } peerDependencies: stylelint: ^17.0.0 stylelint-config-standard@40.0.0: - resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw== } + engines: { node: '>=20.19.0' } peerDependencies: stylelint: ^17.0.0 stylelint-order@2.2.1: - resolution: {integrity: sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg==} - engines: {node: '>=6'} + resolution: { integrity: sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg== } + engines: { node: '>=6' } peerDependencies: stylelint: ^9.10.1 || ^10.0.0 stylelint-order@7.0.1: - resolution: {integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw== } + engines: { node: '>=20.19.0' } peerDependencies: stylelint: ^16.18.0 || ^17.0.0 stylelint@17.4.0: - resolution: {integrity: sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw== } + engines: { node: '>=20.19.0' } hasBin: true stylelint@9.10.1: - resolution: {integrity: sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==} - engines: {node: '>=6'} + resolution: { integrity: sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ== } + engines: { node: '>=6' } hasBin: true sugarss@2.0.0: - resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + resolution: { integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== } superjson@2.2.6: - resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} - engines: {node: '>=16'} + resolution: { integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA== } + engines: { node: '>=16' } supports-color@10.2.2: - resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} - engines: {node: '>=18'} + resolution: { integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g== } + engines: { node: '>=18' } supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: '>=4' } supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: '>=8' } supports-hyperlinks@4.4.0: - resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} - engines: {node: '>=20'} + resolution: { integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg== } + engines: { node: '>=20' } supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } + engines: { node: '>= 0.4' } svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + resolution: { integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== } svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} + resolution: { integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== } + engines: { node: '>=14.0.0' } hasBin: true synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: { integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ== } + engines: { node: ^14.18.0 || >=16.0.0 } table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} + resolution: { integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== } + engines: { node: '>=6.0.0' } table@6.9.0: - resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} - engines: {node: '>=10.0.0'} + resolution: { integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== } + engines: { node: '>=10.0.0' } text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } tiny-emitter@2.1.0: - resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + resolution: { integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== } tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} + resolution: { integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== } + engines: { node: '>=18' } tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} + resolution: { integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== } + engines: { node: '>=12.0.0' } to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== } + engines: { node: '>=0.10.0' } to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== } + engines: { node: '>=0.10.0' } to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: '>=8.0' } to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== } + engines: { node: '>=0.10.0' } trim-newlines@2.0.0: - resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==} - engines: {node: '>=4'} + resolution: { integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA== } + engines: { node: '>=4' } trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + resolution: { integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== } trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + resolution: { integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== } deprecated: Use String.prototype.trim() instead trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + resolution: { integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== } ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} - engines: {node: '>=18.12'} + resolution: { integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== } + engines: { node: '>=18.12' } peerDependencies: typescript: '>=4.8.4' tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + resolution: { integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== } tslib@2.3.0: - resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + resolution: { integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== } tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + resolution: { integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== } type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + resolution: { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } + engines: { node: '>= 0.8.0' } type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} + resolution: { integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== } + engines: { node: '>=10' } typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== } + engines: { node: '>= 0.4' } typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== } + engines: { node: '>= 0.4' } typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== } + engines: { node: '>= 0.4' } typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== } + engines: { node: '>= 0.4' } typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} + resolution: { integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== } + engines: { node: '>=14.17' } hasBin: true ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + resolution: { integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q== } unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== } + engines: { node: '>= 0.4' } undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + resolution: { integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== } unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + resolution: { integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== } unicorn-magic@0.4.0: - resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} - engines: {node: '>=20'} + resolution: { integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw== } + engines: { node: '>=20' } unified@7.1.0: - resolution: {integrity: sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==} + resolution: { integrity: sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== } union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== } + engines: { node: '>=0.10.0' } uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + resolution: { integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== } unist-util-find-all-after@1.0.5: - resolution: {integrity: sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==} + resolution: { integrity: sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw== } unist-util-is@3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + resolution: { integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== } unist-util-remove-position@1.1.4: - resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} + resolution: { integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== } unist-util-stringify-position@1.1.2: - resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} + resolution: { integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== } unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + resolution: { integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== } unist-util-visit-parents@2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + resolution: { integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== } unist-util-visit@1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + resolution: { integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== } universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + resolution: { integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== } + engines: { node: '>= 10.0.0' } unplugin-utils@0.3.1: - resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog== } + engines: { node: '>=20.19.0' } unplugin-vue-components@31.0.0: - resolution: {integrity: sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q==} - engines: {node: '>=20.19.0'} + resolution: { integrity: sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q== } + engines: { node: '>=20.19.0' } peerDependencies: '@nuxt/kit': ^3.2.2 || ^4.0.0 vue: ^3.0.0 @@ -4223,76 +4221,76 @@ packages: optional: true unplugin@2.3.11: - resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} - engines: {node: '>=18.12.0'} + resolution: { integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww== } + engines: { node: '>=18.12.0' } unplugin@3.0.0: - resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: { integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg== } + engines: { node: ^20.19.0 || >=22.12.0 } unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + resolution: { integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== } unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== } + engines: { node: '>=0.10.0' } update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + resolution: { integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== } hasBin: true peerDependencies: browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + resolution: { integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== } deprecated: Please see https://github.com/lydell/urix#deprecated use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} + resolution: { integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== } + engines: { node: '>=0.10.0' } util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } uuid@13.0.0: - resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + resolution: { integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== } hasBin: true validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + resolution: { integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== } vfile-location@2.0.6: - resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} + resolution: { integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== } vfile-message@1.1.1: - resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} + resolution: { integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== } vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + resolution: { integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== } vfile@3.0.1: - resolution: {integrity: sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==} + resolution: { integrity: sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== } vite-plugin-compression@0.5.1: - resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + resolution: { integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg== } peerDependencies: vite: '>=2.0.0' vite-plugin-eslint@1.8.1: - resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} + resolution: { integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang== } peerDependencies: eslint: '>=7' vite: '>=2' vite-svg-loader@4.0.0: - resolution: {integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==} + resolution: { integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA== } vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: { integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 @@ -4331,11 +4329,11 @@ packages: optional: true vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + resolution: { integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ== } vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} + resolution: { integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== } + engines: { node: '>=12' } hasBin: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 @@ -4345,30 +4343,30 @@ packages: optional: true vue-echarts@8.0.1: - resolution: {integrity: sha512-23rJTFLu1OUEGRWjJGmdGt8fP+8+ja1gVgzMYPIPaHWpXegcO1viIAaeu2H4QHESlVeHzUAHIxKXGrwjsyXAaA==} + resolution: { integrity: sha512-23rJTFLu1OUEGRWjJGmdGt8fP+8+ja1gVgzMYPIPaHWpXegcO1viIAaeu2H4QHESlVeHzUAHIxKXGrwjsyXAaA== } peerDependencies: echarts: ^6.0.0 vue: ^3.3.0 vue-eslint-parser@10.4.0: - resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: { integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 vue-i18n@11.2.8: - resolution: {integrity: sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==} - engines: {node: '>= 16'} + resolution: { integrity: sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg== } + engines: { node: '>= 16' } peerDependencies: vue: ^3.0.0 vue-json-viewer@3.0.4: - resolution: {integrity: sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ==} + resolution: { integrity: sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ== } peerDependencies: vue: ^3.2.2 vue-router@5.0.3: - resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} + resolution: { integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw== } peerDependencies: '@pinia/colada': '>=0.21.2' '@vue/compiler-sfc': ^3.5.17 @@ -4383,16 +4381,16 @@ packages: optional: true vue-tsc@3.2.5: - resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} + resolution: { integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA== } hasBin: true peerDependencies: typescript: '>=5.0.0' vue-web-terminal@3.4.1: - resolution: {integrity: sha512-+gU28qClqvIZQlzokcvDS2tbFpGfIJKIPc6dvLm2VYX110c6NOh7mV1YrcUESnaE5VQ9DgxqtIbr1YraEA/GRQ==} + resolution: { integrity: sha512-+gU28qClqvIZQlzokcvDS2tbFpGfIJKIPc6dvLm2VYX110c6NOh7mV1YrcUESnaE5VQ9DgxqtIbr1YraEA/GRQ== } vue@3.5.29: - resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} + resolution: { integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA== } peerDependencies: typescript: '*' peerDependenciesMeta: @@ -4400,111 +4398,110 @@ packages: optional: true webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + resolution: { integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== } which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== } + engines: { node: '>= 0.4' } which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== } + engines: { node: '>= 0.4' } which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== } + engines: { node: '>= 0.4' } which-typed-array@1.1.20: - resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} - engines: {node: '>= 0.4'} + resolution: { integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== } + engines: { node: '>= 0.4' } which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + resolution: { integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== } hasBin: true which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + 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'} + resolution: { integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== } + engines: { node: '>=0.10.0' } wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + resolution: { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } + engines: { node: '>=10' } wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} - engines: {node: '>=18'} + resolution: { integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww== } + engines: { node: '>=18' } wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } write-file-atomic@7.0.1: - resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: { integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg== } + engines: { node: ^20.17.0 || >=22.9.0 } write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} + resolution: { integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== } + engines: { node: '>=4' } wsl-utils@0.3.1: - resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} - engines: {node: '>=20'} + resolution: { integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg== } + engines: { node: '>=20' } x-is-string@0.1.0: - resolution: {integrity: sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==} + resolution: { integrity: sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w== } xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + resolution: { integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== } + engines: { node: '>=12' } xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + 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'} + resolution: { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== } + engines: { node: '>=10' } yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} + resolution: { integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== } + engines: { node: '>= 14.6' } hasBin: true yargs-parser@10.1.0: - resolution: {integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==} + resolution: { integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== } yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + resolution: { integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== } + engines: { node: '>=12' } yargs-parser@22.0.0: - resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: { integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw== } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + resolution: { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== } + engines: { node: '>=12' } yargs@18.0.0: - resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: { integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg== } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: '>=10' } zrender@6.0.0: - resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + resolution: { integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg== } snapshots: - '@arco-design/color@0.4.0': dependencies: color: 3.2.1 diff --git a/src/api/common/fts.ts b/src/api/common/fts.ts index 2dd74f3..ec6e6ae 100644 --- a/src/api/common/fts.ts +++ b/src/api/common/fts.ts @@ -1,26 +1,24 @@ -import { AxiosProgressEvent } from "axios"; -import { request } from "@/api/request"; +import { AxiosProgressEvent } from 'axios' +import { request } from '@/api/request' /** 上传文件 */ const FtsUpload = (data: FormData, onUploadProgress?: (progress: number) => void) => { - data.append('provider', 'local'); - data.append('bucket', 'visual'); - - return request.post( - `/fts/v1/uploader`, - data, - { - headers: { - 'Content-Type': 'multipart/form-data' - }, - onUploadProgress: onUploadProgress ? (progressEvent: AxiosProgressEvent) => { - if (progressEvent.total) { - const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); - onUploadProgress(percentCompleted); - } - } : undefined - } - ); -}; + data.append('provider', 'local') + data.append('bucket', 'visual') -export default FtsUpload; + return request.post(`/fts/v1/uploader`, data, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + onUploadProgress: onUploadProgress + ? (progressEvent: AxiosProgressEvent) => { + if (progressEvent.total) { + const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total) + onUploadProgress(percentCompleted) + } + } + : undefined, + }) +} + +export default FtsUpload diff --git a/src/api/kb/category.ts b/src/api/kb/category.ts index bb9a59d..6dd013d 100644 --- a/src/api/kb/category.ts +++ b/src/api/kb/category.ts @@ -1,93 +1,93 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 分类类型 */ export interface Category { - id: number; - created_at: string; - updated_at: string; - name: string; - description: string; - type: string; - icon: string; - color: string; - parent_id: number; - level: number; - path: string; - sort_order: number; - status: string; - creator_id: number; - creator_name: string; - doc_count: number; - faq_count: number; - metadata: string | null; - remarks: string; + id: number + created_at: string + updated_at: string + name: string + description: string + type: string + icon: string + color: string + parent_id: number + level: number + path: string + sort_order: number + status: string + creator_id: number + creator_name: string + doc_count: number + faq_count: number + metadata: string | null + remarks: string } /** API响应包装类型 */ export interface ApiResponse { - code: number; - message: string; - data: T; + code: number + message: string + data: T } /** 创建分类请求参数 */ export interface CreateCategoryParams { - name: string; - description?: string; - type?: string; - icon?: string; - color?: string; - parent_id?: number; - sort_order?: number; - remarks?: string; + name: string + description?: string + type?: string + icon?: string + color?: string + parent_id?: number + sort_order?: number + remarks?: string } /** 更新分类请求参数 */ export interface UpdateCategoryParams { - id: number; - name?: string; - description?: string; - icon?: string; - color?: string; - sort_order?: number; - status?: string; - remarks?: string; + id: number + name?: string + description?: string + icon?: string + color?: string + sort_order?: number + status?: string + remarks?: string } /** 获取分类列表参数 */ export interface FetchCategoryListParams { - type?: string; - parent_id?: number; + type?: string + parent_id?: number } /** 创建分类 */ export const createCategory = (data: CreateCategoryParams) => { - return request.post>("/Kb/v1/category/create", data); -}; + return request.post>('/Kb/v1/category/create', data) +} /** 更新分类 */ export const updateCategory = (data: UpdateCategoryParams) => { - return request.post>("/Kb/v1/category/update", data); -}; + return request.post>('/Kb/v1/category/update', data) +} /** 删除分类 */ export const deleteCategory = (id: number) => { - return request.delete>(`/Kb/v1/category/${id}`); -}; + return request.delete>(`/Kb/v1/category/${id}`) +} /** 获取分类详情 */ export const fetchCategoryDetail = (id: number) => { - return request.get>(`/Kb/v1/category/${id}`); -}; + return request.get>(`/Kb/v1/category/${id}`) +} /** 获取分类列表 */ export const fetchCategoryList = (params?: FetchCategoryListParams) => { - return request.get>("/Kb/v1/category/list", { params }); -}; + return request.get>('/Kb/v1/category/list', { params }) +} /** 获取分类树 */ export const fetchCategoryTree = (type?: string) => { - return request.get>("/Kb/v1/category/tree", { + return request.get>('/Kb/v1/category/tree', { params: type ? { type } : undefined, - }); -}; \ No newline at end of file + }) +} diff --git a/src/api/kb/document.ts b/src/api/kb/document.ts index 2ff41fc..0c4dedc 100644 --- a/src/api/kb/document.ts +++ b/src/api/kb/document.ts @@ -1,96 +1,96 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 文档状态 */ -export type DocumentStatus = 'draft' | 'published' | 'reviewed' | 'rejected'; +export type DocumentStatus = 'draft' | 'published' | 'reviewed' | 'rejected' /** 文档类型 */ -export type DocumentType = 'common' | 'guide' | 'solution' | 'troubleshoot' | 'process' | 'technical'; +export type DocumentType = 'common' | 'guide' | 'solution' | 'troubleshoot' | 'process' | 'technical' /** 文档接口类型 */ export interface Document { - id: number; - created_at: string; - updated_at: string; - doc_no: string; - title: string; - description: string; - content: string; - type: DocumentType; - status: DocumentStatus; - category_id: number; - sub_category: string; - author_id: number; - author_name: string; - reviewer_id: number; - reviewer_name: string; - reviewed_at: string | null; - published_at: string | null; - publisher_id: number; - view_count: number; - like_count: number; - comment_count: number; - download_count: number; - version: string; - version_notes: string; - tags: string; - attachments: string | null; - related_docs: string | null; - metadata: string | null; - keywords: string; - remarks: string; - is_favorited?: boolean; + id: number + created_at: string + updated_at: string + doc_no: string + title: string + description: string + content: string + type: DocumentType + status: DocumentStatus + category_id: number + sub_category: string + author_id: number + author_name: string + reviewer_id: number + reviewer_name: string + reviewed_at: string | null + published_at: string | null + publisher_id: number + view_count: number + like_count: number + comment_count: number + download_count: number + version: string + version_notes: string + tags: string + attachments: string | null + related_docs: string | null + metadata: string | null + keywords: string + remarks: string + is_favorited?: boolean } /** API响应包装类型 */ export interface ApiResponse { - code: number; - message: string; - data: T; + code: number + message: string + data: T } /** 分页响应类型 */ export interface PaginatedResponse { - total: number; - page: number; - page_size: number; - data: T[]; + total: number + page: number + page_size: number + data: T[] } /** 创建文档请求参数 */ export interface CreateDocumentParams { - title: string; - description?: string; - content: string; - type?: DocumentType; - category_id?: number; - sub_category?: string; - keywords?: string; - tags?: string; - remarks?: string; + title: string + description?: string + content: string + type?: DocumentType + category_id?: number + sub_category?: string + keywords?: string + tags?: string + remarks?: string } /** 更新文档请求参数 */ export interface UpdateDocumentParams { - id: number; - title?: string; - description?: string; - content?: string; - type?: DocumentType; - category_id?: number; - sub_category?: string; - keywords?: string; - tags?: string; - remarks?: string; + id: number + title?: string + description?: string + content?: string + type?: DocumentType + category_id?: number + sub_category?: string + keywords?: string + tags?: string + remarks?: string } /** 获取文档列表参数 */ export interface FetchDocumentListParams { - page?: number; - page_size?: number; - keyword?: string; - type?: DocumentType; - status?: DocumentStatus; - category_id?: number; + page?: number + page_size?: number + keyword?: string + type?: DocumentType + status?: DocumentStatus + category_id?: number } /** 文档类型选项 */ @@ -101,7 +101,7 @@ export const documentTypeOptions = [ { label: '故障排查', value: 'troubleshoot' }, { label: '流程规范', value: 'process' }, { label: '技术文档', value: 'technical' }, -]; +] /** 文档状态选项 */ export const documentStatusOptions = [ @@ -109,7 +109,7 @@ export const documentStatusOptions = [ { label: '已发布', value: 'published' }, { label: '已审核', value: 'reviewed' }, { label: '未通过审核', value: 'rejected' }, -]; +] /** 获取文档状态文本 */ export const getDocumentStatusText = (status: DocumentStatus): string => { @@ -118,9 +118,9 @@ export const getDocumentStatusText = (status: DocumentStatus): string => { published: '已发布', reviewed: '已审核', rejected: '未通过审核', - }; - return statusMap[status] || status; -}; + } + return statusMap[status] || status +} /** 获取文档状态颜色 */ export const getDocumentStatusColor = (status: DocumentStatus): string => { @@ -129,9 +129,9 @@ export const getDocumentStatusColor = (status: DocumentStatus): string => { published: 'blue', reviewed: 'green', rejected: 'red', - }; - return colorMap[status] || 'gray'; -}; + } + return colorMap[status] || 'gray' +} /** 获取文档类型文本 */ export const getDocumentTypeText = (type: DocumentType): string => { @@ -142,77 +142,76 @@ export const getDocumentTypeText = (type: DocumentType): string => { troubleshoot: '故障排查', process: '流程规范', technical: '技术文档', - }; - return typeMap[type] || type; -}; + } + return typeMap[type] || type +} /** 创建文档 */ export const createDocument = (data: CreateDocumentParams) => { - return request.post>("/Kb/v1/document/create", data); -}; + return request.post>('/Kb/v1/document/create', data) +} /** 更新文档 */ export const updateDocument = (data: UpdateDocumentParams) => { - return request.post>("/Kb/v1/document/update", data); -}; + return request.post>('/Kb/v1/document/update', data) +} /** 删除文档(移入回收站) */ export const deleteDocument = (id: number) => { - return request.delete>(`/Kb/v1/document/${id}`); -}; + return request.delete>(`/Kb/v1/document/${id}`) +} /** 获取文档详情 */ export const fetchDocumentDetail = (id: number) => { - return request.get>(`/Kb/v1/document/${id}`); -}; + return request.get>(`/Kb/v1/document/${id}`) +} /** 获取文档列表 */ export const fetchDocumentList = (params?: FetchDocumentListParams) => { - return request.get>>("/Kb/v1/document/list", { params }); -}; + return request.get>>('/Kb/v1/document/list', { params }) +} /** 发布文档 */ export const publishDocument = (id: number) => { - return request.post>("/Kb/v1/document/publish", { id }); -}; + return request.post>('/Kb/v1/document/publish', { id }) +} /** 移入回收站 */ export const moveToTrash = (resourceId: number, resourceType: string) => { - return request.post>("/Kb/v1/trash/move", { + return request.post>('/Kb/v1/trash/move', { resource_id: resourceId, resource_type: resourceType, - }); -}; + }) +} /** 获取我的文档列表(由我创建的所有文档) */ export const fetchMyDocumentList = (params?: FetchDocumentListParams) => { - return request.get>>("/Kb/v1/review/publish/list", { params }); -}; + return request.get>>('/Kb/v1/review/publish/list', { params }) +} /** 获取已审核通过的文档列表 */ export const fetchApprovedDocumentList = (params?: FetchDocumentListParams) => { - return request.get>>("/Kb/v1/review/approved/list", { params }); -}; + return request.get>>('/Kb/v1/review/approved/list', { params }) +} /** 收藏文档 */ export const favoriteDocument = (id: number, remarks?: string) => { - return request.post>("/Kb/v1/favorite/collect", { + return request.post>('/Kb/v1/favorite/collect', { resource_type: 'document', resource_id: id, remarks, - }); -}; + }) +} /** 取消收藏文档 */ export const unfavoriteDocument = (id: number) => { - return request.post>("/Kb/v1/favorite/uncollect", { + return request.post>('/Kb/v1/favorite/uncollect', { resource_type: 'document', resource_id: id, - }); -}; - + }) +} /** 下载文档 */ export const downloadDocument = (id: number) => { - return request.get(`/Kb/v1/document/${id}/download`, { responseType: 'blob' }); -}; \ No newline at end of file + return request.get(`/Kb/v1/document/${id}/download`, { responseType: 'blob' }) +} diff --git a/src/api/kb/favorite.ts b/src/api/kb/favorite.ts index 3f6dfd5..df31e71 100644 --- a/src/api/kb/favorite.ts +++ b/src/api/kb/favorite.ts @@ -1,86 +1,80 @@ -import { request } from '@/api/request'; +import { request } from '@/api/request' /** 资源类型 */ -export type ResourceType = 'document' | 'faq'; +export type ResourceType = 'document' | 'faq' /** 收藏记录接口 */ export interface Favorite { - id: number; - created_at: string; - resource_type: ResourceType; - resource_id: number; - resource_name: string; - remarks: string; - is_deleted: boolean; - resource_data?: any; + id: number + created_at: string + resource_type: ResourceType + resource_id: number + resource_name: string + remarks: string + is_deleted: boolean + resource_data?: any } /** 收藏列表响应 */ export interface FavoriteListResponse { - total: number; - page: number; - page_size: number; - data: Favorite[]; + total: number + page: number + page_size: number + data: Favorite[] } /** 获取收藏列表参数 */ export interface FetchFavoriteListParams { - page?: number; - page_size?: number; - resource_type?: ResourceType; + page?: number + page_size?: number + resource_type?: ResourceType } /** 收藏请求参数 */ export interface CollectParams { - resource_type: ResourceType; - resource_id: number; - remarks?: string; + resource_type: ResourceType + resource_id: number + remarks?: string } /** 取消收藏参数 */ export interface UncollectParams { - resource_type: ResourceType; - resource_id: number; + resource_type: ResourceType + resource_id: number } /** API响应包装类型 */ export interface ApiResponse { - code: number; - message: string; - data: T; + code: number + message: string + data: T } /** * 获取收藏列表 */ -export async function fetchFavoriteList( - params: FetchFavoriteListParams = {} -): Promise> { +export async function fetchFavoriteList(params: FetchFavoriteListParams = {}): Promise> { return request.get>('/Kb/v1/favorite/list', { params, - }); + }) } /** * 收藏资源 */ -export async function collectResource( - data: CollectParams -): Promise> { - return request.post>('/Kb/v1/favorite/collect', data); +export async function collectResource(data: CollectParams): Promise> { + return request.post>('/Kb/v1/favorite/collect', data) } /** * 取消收藏 */ -export async function uncollectResource( - data: UncollectParams -): Promise> { - return request.post>('/Kb/v1/favorite/uncollect', data); +export async function uncollectResource(data: UncollectParams): Promise> { + return request.post>('/Kb/v1/favorite/uncollect', data) } /** 资源类型选项 */ export const resourceTypeOptions = [ { label: '文档', value: 'document' }, { label: 'FAQ', value: 'faq' }, -]; \ No newline at end of file +] diff --git a/src/api/kb/review.ts b/src/api/kb/review.ts index fd4ef9c..c0073f0 100644 --- a/src/api/kb/review.ts +++ b/src/api/kb/review.ts @@ -1,173 +1,169 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' -export type ReviewStatsResourceType = "all" | "document" | "faq"; +export type ReviewStatsResourceType = 'all' | 'document' | 'faq' /** 审核统计接口返回的 data 字段 */ export interface ReviewStatsPayload { - need_my_review_document?: number; - need_my_review_faq?: number; - need_my_review_total?: number; - need_my_review_unreviewed_document?: number; - need_my_review_unreviewed_faq?: number; - need_my_review_unreviewed_total?: number; + need_my_review_document?: number + need_my_review_faq?: number + need_my_review_total?: number + need_my_review_unreviewed_document?: number + need_my_review_unreviewed_faq?: number + need_my_review_unreviewed_total?: number } /** 文档资源类型 */ export interface DocumentResource { - id: number; - created_at: string; - updated_at: string; - doc_no: string; - title: string; - description: string; - content: string; - type: string; - status: string; - category_id: number; - sub_category: string; - author_id: number; - author_name: string; - reviewer_id: number; - reviewer_name: string; - reviewed_at: string | null; - published_at: string | null; - publisher_id: number; - view_count: number; - like_count: number; - comment_count: number; - download_count: number; - version: string; - version_notes: string; - tags: string; - attachments: string | null; - related_docs: string | null; - metadata: string | null; - keywords: string; - remarks: string; + id: number + created_at: string + updated_at: string + doc_no: string + title: string + description: string + content: string + type: string + status: string + category_id: number + sub_category: string + author_id: number + author_name: string + reviewer_id: number + reviewer_name: string + reviewed_at: string | null + published_at: string | null + publisher_id: number + view_count: number + like_count: number + comment_count: number + download_count: number + version: string + version_notes: string + tags: string + attachments: string | null + related_docs: string | null + metadata: string | null + keywords: string + remarks: string } /** FAQ资源类型 */ export interface FaqResource { - id: number; - created_at: string; - updated_at: string; - faq_no: string; - question: string; - answer: string; - status: string; - priority: string; - category_id: number; - sub_category: string; - problem_type: string; - solution: string; - process_steps: string; - prerequisites: string; - author_id: number; - author_name: string; - reviewer_id: number; - reviewer_name: string; - reviewed_at: string | null; - published_at: string | null; - view_count: number; - use_count: number; - helpful_count: number; - useless_count: number; - tags: string; - related_faqs: string | null; - related_docs: string | null; - related_links: string | null; - attachments: string | null; - keywords: string; - applicable_scope: string; - remarks: string; + id: number + created_at: string + updated_at: string + faq_no: string + question: string + answer: string + status: string + priority: string + category_id: number + sub_category: string + problem_type: string + solution: string + process_steps: string + prerequisites: string + author_id: number + author_name: string + reviewer_id: number + reviewer_name: string + reviewed_at: string | null + published_at: string | null + view_count: number + use_count: number + helpful_count: number + useless_count: number + tags: string + related_faqs: string | null + related_docs: string | null + related_links: string | null + attachments: string | null + keywords: string + applicable_scope: string + remarks: string } /** 审核列表项(resource_type 为 all 时) */ export interface ReviewListItem { - type: "document" | "faq"; - resource: DocumentResource | FaqResource; + type: 'document' | 'faq' + resource: DocumentResource | FaqResource } /** 分页响应类型 */ export interface PaginatedResponse { - total: number; - page: number; - page_size: number; - data: T[]; + total: number + page: number + page_size: number + data: T[] } /** API响应包装类型 */ export interface ApiResponse { - code: number; - message: string; - data: T; + code: number + message: string + data: T } /** 获取审核列表参数 */ export interface FetchReviewListParams { - page?: number; - page_size?: number; - resource_type?: ReviewStatsResourceType; + page?: number + page_size?: number + resource_type?: ReviewStatsResourceType } /** 审核通过参数 */ export interface ApproveParams { - resource_type: "document" | "faq"; - id: number; + resource_type: 'document' | 'faq' + id: number } /** 审核拒绝参数 */ export interface RejectParams { - resource_type: "document" | "faq"; - id: number; - reason?: string; + resource_type: 'document' | 'faq' + id: number + reason?: string } /** 按当前登录用户统计需要本人审核的数量(不含本人为作者的稿件) */ export const fetchReviewStats = (params?: { resource_type?: ReviewStatsResourceType }) => - request.get("/Kb/v1/review/stats", params ? { params } : undefined); + request.get('/Kb/v1/review/stats', params ? { params } : undefined) /** 获取待审核列表 */ export const fetchReviewList = (params?: FetchReviewListParams) => - request.get>>("/Kb/v1/review/list", { params }); + request.get>>('/Kb/v1/review/list', { params }) /** 审核通过 */ -export const approveReview = (data: ApproveParams) => - request.post>("/Kb/v1/review/approve", data); +export const approveReview = (data: ApproveParams) => request.post>('/Kb/v1/review/approve', data) /** 审核拒绝 */ -export const rejectReview = (data: RejectParams) => - request.post>("/Kb/v1/review/reject", data); +export const rejectReview = (data: RejectParams) => request.post>('/Kb/v1/review/reject', data) /** 获取文档详情 */ -export const fetchDocumentDetail = (id: number) => - request.get>(`/Kb/v1/document/${id}`); +export const fetchDocumentDetail = (id: number) => request.get>(`/Kb/v1/document/${id}`) /** 获取FAQ详情 */ -export const fetchFaqDetail = (id: number) => - request.get>(`/Kb/v1/faq/${id}`); +export const fetchFaqDetail = (id: number) => request.get>(`/Kb/v1/faq/${id}`) /** 资源类型选项 */ export const resourceTypeOptions = [ { label: '全部', value: 'all' }, { label: '文档', value: 'document' }, { label: 'FAQ', value: 'faq' }, -]; +] /** 获取资源类型文本 */ export const getResourceTypeText = (type: string): string => { const typeMap: Record = { document: '文档', faq: 'FAQ', - }; - return typeMap[type] || type; -}; + } + return typeMap[type] || type +} /** 获取资源类型颜色 */ export const getResourceTypeColor = (type: string): string => { const colorMap: Record = { document: 'arcoblue', faq: 'green', - }; - return colorMap[type] || 'gray'; -}; + } + return colorMap[type] || 'gray' +} diff --git a/src/api/kb/trash.ts b/src/api/kb/trash.ts index 268a308..fae2522 100644 --- a/src/api/kb/trash.ts +++ b/src/api/kb/trash.ts @@ -1,88 +1,88 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** API响应包装类型 */ export interface ApiResponse { - code: number; - message: string; - data: T; + code: number + message: string + data: T } /** 分页响应类型 */ export interface PaginatedResponse { - total: number; - page: number; - page_size: number; - data: T[]; + total: number + page: number + page_size: number + data: T[] } /** 回收站记录 */ export interface TrashRecord { - id: number; - created_at: string; - updated_at: string; - resource_type: 'document' | 'faq'; - resource_id: number; - resource_name: string; - deleted_by: number; - deleted_name: string; - deleted_time: string; - delete_reason: string; - original_data: string; - remarks: string; + id: number + created_at: string + updated_at: string + resource_type: 'document' | 'faq' + resource_id: number + resource_name: string + deleted_by: number + deleted_name: string + deleted_time: string + delete_reason: string + original_data: string + remarks: string } /** 获取回收站列表参数 */ export interface FetchTrashListParams { - page?: number; - page_size?: number; - resource_type?: 'document' | 'faq'; + page?: number + page_size?: number + resource_type?: 'document' | 'faq' } /** 恢复资源请求参数 */ export interface RestoreTrashParams { - id: number; + id: number } /** 彻底删除请求参数 */ export interface DeleteTrashParams { - id: number; + id: number } /** 资源类型选项 */ export const resourceTypeOptions = [ { label: '文档', value: 'document' }, { label: '常见问题', value: 'faq' }, -]; +] /** 获取资源类型文本 */ export const getResourceTypeText = (type: string): string => { const typeMap: Record = { document: '文档', faq: '常见问题', - }; - return typeMap[type] || type; -}; + } + return typeMap[type] || type +} /** 获取资源类型颜色 */ export const getResourceTypeColor = (type: string): string => { const colorMap: Record = { document: 'blue', faq: 'green', - }; - return colorMap[type] || 'gray'; -}; + } + return colorMap[type] || 'gray' +} /** 获取回收站列表 */ export const fetchTrashList = (params?: FetchTrashListParams) => { - return request.get>>("/Kb/v1/trash/list", { params }); -}; + return request.get>>('/Kb/v1/trash/list', { params }) +} /** 恢复资源 */ export const restoreTrash = (data: RestoreTrashParams) => { - return request.post>("/Kb/v1/trash/restore", data); -}; + return request.post>('/Kb/v1/trash/restore', data) +} /** 彻底删除 */ export const deleteTrash = (data: DeleteTrashParams) => { - return request.post>("/Kb/v1/trash/delete", data); -}; + return request.post>('/Kb/v1/trash/delete', data) +} diff --git a/src/api/module/factor.ts b/src/api/module/factor.ts index 22cee22..eabf668 100644 --- a/src/api/module/factor.ts +++ b/src/api/module/factor.ts @@ -1,35 +1,35 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 批次列表 */ -export const fetchLoanBatch = (data: { page: number, size: number }) => request.post("/factor/v1/fetch/loan_batch", data); +export const fetchLoanBatch = (data: { page: number; size: number }) => request.post('/factor/v1/fetch/loan_batch', data) /** 上报列表 */ -export const fetchTransferWatch = (data: { page: number, size: number }) => request.post("/factor/v1/fetch/transfer_watch", data); +export const fetchTransferWatch = (data: { page: number; size: number }) => request.post('/factor/v1/fetch/transfer_watch', data) /** 回盘列表 */ -export const fetchTransferDown = (data: { page: number, size: number }) => request.post("/factor/v1/fetch/transfer_down", data); +export const fetchTransferDown = (data: { page: number; size: number }) => request.post('/factor/v1/fetch/transfer_down', data) /** 放款数据列表 */ -export const fetchDataFile = (data: { page: number, size: number }) => request.post("/factor/v1/fetch/data_file", data); +export const fetchDataFile = (data: { page: number; size: number }) => request.post('/factor/v1/fetch/data_file', data) /** 回盘数据列表 */ -export const fetchDataReply = (data: { page: number, size: number }) => request.post("/factor/v1/fetch/data_reply", data); +export const fetchDataReply = (data: { page: number; size: number }) => request.post('/factor/v1/fetch/data_reply', data) /** 贷款支付数据列表 */ -export const fetchLoanPayment = (data: { page: number, size: number, status?: number }) => request.post("/factor/v1/fetch/loan_payment", data); +export const fetchLoanPayment = (data: { page: number; size: number; status?: number }) => + request.post('/factor/v1/fetch/loan_payment', data) /** 获取日报数据 */ -export const fetchOverviewReports = (data: { page: number, size: number }) => request.post("/factor/v1/reports/overview", data); +export const fetchOverviewReports = (data: { page: number; size: number }) => request.post('/factor/v1/reports/overview', data) /** 获取日报数据 */ -export const fetchDailyReports = (data: { page: number, size: number }) => request.post("/factor/v1/reports/days", data); +export const fetchDailyReports = (data: { page: number; size: number }) => request.post('/factor/v1/reports/days', data) /** 获取周报数据 */ -export const fetchWeeklyReports = (data: { page: number, size: number }) => request.post("/factor/v1/reports/weeks", data); +export const fetchWeeklyReports = (data: { page: number; size: number }) => request.post('/factor/v1/reports/weeks', data) /** 获取月报数据 */ -export const fetchMonthlyReports = (data: { page: number, size: number }) => request.post("/factor/v1/reports/months", data); - +export const fetchMonthlyReports = (data: { page: number; size: number }) => request.post('/factor/v1/reports/months', data) /** 获取批次详情 */ -export const getLoanBatchDetail = (data: { batch_id: number }) => request.post(`/factor/v1/get/batch`,data); \ No newline at end of file +export const getLoanBatchDetail = (data: { batch_id: number }) => request.post(`/factor/v1/get/batch`, data) diff --git a/src/api/module/pmn.ts b/src/api/module/pmn.ts index acfc5c2..28f4ecf 100644 --- a/src/api/module/pmn.ts +++ b/src/api/module/pmn.ts @@ -1,43 +1,44 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' export interface MenuItem { - id?: number; - identity?: string; - code?: string; - description?: string; - menu_icon?: string; - menu_path?: string; - parent_id?: number | null; - title?: string; - title_en?: string; - type?: number; - sort_key?: number; - order?: number; // 排序字段(用于本地排序) - app_id?: number; - created_at?: string; - children?: MenuItem[]; - is_web_page?: boolean; // 是否为网页 - web_url?: string; // 嵌入的网页URL - component?: string; // 路由文件地址 - is_new_tab?: boolean; // 是否在新窗口打开 - is_full?: boolean; // 单独的页面,不包含菜单 - hide_menu?: boolean; // 隐藏菜单栏的菜单 + id?: number + identity?: string + code?: string + description?: string + menu_icon?: string + menu_path?: string + parent_id?: number | null + title?: string + title_en?: string + type?: number + sort_key?: number + order?: number // 排序字段(用于本地排序) + app_id?: number + created_at?: string + children?: MenuItem[] + is_web_page?: boolean // 是否为网页 + web_url?: string // 嵌入的网页URL + component?: string // 路由文件地址 + is_new_tab?: boolean // 是否在新窗口打开 + is_full?: boolean // 单独的页面,不包含菜单 + hide_menu?: boolean // 隐藏菜单栏的菜单 } /** 获取菜单 */ -export const fetchMenu = (data: { page: number, size: number }) => request.post("/rbac2/v1/pmn/fetch", data, { needWorkspace: true }); +export const fetchMenu = (data: { page: number; size: number }) => request.post('/rbac2/v1/pmn/fetch', data, { needWorkspace: true }) /** 创建菜单 */ -export const createMenu = (data: MenuItem) => request.post("/rbac2/v1/pmn/create", data, { needWorkspace: true }); +export const createMenu = (data: MenuItem) => request.post('/rbac2/v1/pmn/create', data, { needWorkspace: true }) /** 修改菜单 */ -export const modifyMenu = (data: MenuItem) => request.post("/rbac2/v1/pmn/modify", data, { needWorkspace: true }); +export const modifyMenu = (data: MenuItem) => request.post('/rbac2/v1/pmn/modify', data, { needWorkspace: true }) /** 删除菜单 */ -export const deleteMenu = (data: { id: MenuItem['id'] }) => request.post("/rbac2/v1/pmn/del", data, { needWorkspace: true }); +export const deleteMenu = (data: { id: MenuItem['id'] }) => request.post('/rbac2/v1/pmn/del', data, { needWorkspace: true }) /** 更新菜单排序 */ -export const updateMenuOrder = (data: { pmn_id: number, sort_key: number }[]) => - request.post("/rbac2/v1/pmn/sort", data); +export const updateMenuOrder = (data: { pmn_id: number; sort_key: number }[]) => request.post('/rbac2/v1/pmn/sort', data) /** 用户-给指定用户设置权限 */ -export const userPmn = (data: { code: string; list: { id: number, pmn_id: number }[] }) => request.post("/rbac2/v1/pmn/user_pmn", data, { needWorkspace: true }); +export const userPmn = (data: { code: string; list: { id: number; pmn_id: number }[] }) => + request.post('/rbac2/v1/pmn/user_pmn', data, { needWorkspace: true }) /** 用户-给指定用户设置权限 */ -export const userSetPmn = (data: { list: { id: number, pmn_id: number }[] }) => request.post("/rbac2/v1/pmn/user/set_pmn", data, { needWorkspace: true }); +export const userSetPmn = (data: { list: { id: number; pmn_id: number }[] }) => + request.post('/rbac2/v1/pmn/user/set_pmn', data, { needWorkspace: true }) diff --git a/src/api/module/report.ts b/src/api/module/report.ts index d75ee83..7d3d1ff 100644 --- a/src/api/module/report.ts +++ b/src/api/module/report.ts @@ -1,35 +1,37 @@ -import { request } from "@/api/request"; - +import { request } from '@/api/request' /** 获取报表 */ -export const fetchReports = (data: { page: number, size: number, keyword?: string }) => request.get("/api/v1/report/basics", { params: data }); +export const fetchReports = (data: { page: number; size: number; keyword?: string }) => + request.get('/api/v1/report/basics', { params: data }) /** 创建报表任务 */ -export const fetchReportNewTask = (keyName:string,data: any) => request.post("/api/v1/report/task/new/"+keyName, data); +export const fetchReportNewTask = (keyName: string, data: any) => request.post('/api/v1/report/task/new/' + keyName, data) /** 获取报表基础信息详情 */ -export const fetchReportBasicInfo = (id: string) => request.get(`/api/v1/report/basics/${id}`); +export const fetchReportBasicInfo = (id: string) => request.get(`/api/v1/report/basics/${id}`) /** 获取指定报表的调度列表 */ -export const fetchReportSchedules = (report_basic_id: string) => request.get(`/api/v1/report/schedules/${report_basic_id}`); +export const fetchReportSchedules = (report_basic_id: string) => request.get(`/api/v1/report/schedules/${report_basic_id}`) /** 批量创建报表调度 */ -export const fetchReportSchedulesBatch = (data: any) => request.post("/api/v1/report/schedules/batch", data); +export const fetchReportSchedulesBatch = (data: any) => request.post('/api/v1/report/schedules/batch', data) /** 获取指定报表的历史记录列表 */ -export const fetchReportHistories = (report_basic_id: string) => request.get(`/api/v1/report/histories/${report_basic_id}?status=2`); +export const fetchReportHistories = (report_basic_id: string) => request.get(`/api/v1/report/histories/${report_basic_id}?status=2`) /** 获取报表历史记录列表 */ -export const fetchReportHistoriesList = (data: { page: number, size: number, keyword?: string }) => request.get("/api/v1/report/histories", { params: data }); +export const fetchReportHistoriesList = (data: { page: number; size: number; keyword?: string }) => + request.get('/api/v1/report/histories', { params: data }) /** 获取邮件推送记录列表 */ export enum PushStatus { /** 发送成功 */ Success = 1, /** 发送失败 */ - Failed = 2 + Failed = 2, } -export const fetchReportPushesList = (data: { page: number, size: number, keyword?: string, status?: PushStatus }) => request.get("/api/v1/report/pushes", { params: data }); +export const fetchReportPushesList = (data: { page: number; size: number; keyword?: string; status?: PushStatus }) => + request.get('/api/v1/report/pushes', { params: data }) /** 重新发送邮件 */ -export const fetchReportPushesResend = (id: number) => request.post(`/api/v1/report/pushes/${id}`); +export const fetchReportPushesResend = (id: number) => request.post(`/api/v1/report/pushes/${id}`) diff --git a/src/api/module/user.ts b/src/api/module/user.ts index 300b3a4..6e078b4 100644 --- a/src/api/module/user.ts +++ b/src/api/module/user.ts @@ -1,49 +1,52 @@ -import { request } from "@/api/request"; -import { LoginRequest, UserItem } from "../types"; +import { request } from '@/api/request' +import { LoginRequest, UserItem } from '../types' /** 登录 */ -export const login = (data: LoginRequest) => request.post("/rbac2/v1/login", data); +export const login = (data: LoginRequest) => request.post('/rbac2/v1/login', data) /** 登出 */ -export const logout = () => request.post("/rbac2/v1/logout"); +export const logout = () => request.post('/rbac2/v1/logout') /** 获取菜单列表 */ -export const getMenuList = () => request.post("/rbac2/v1/user/menu"); +export const getMenuList = () => request.post('/rbac2/v1/user/menu') /** 创建用户 */ -export const createUser = (data: UserItem) => request.post("/rbac2/v1/user/create", data, { needWorkspace: true }); +export const createUser = (data: UserItem) => request.post('/rbac2/v1/user/create', data, { needWorkspace: true }) /** 获取用户详情 */ -export const getUserDetail = (data: UserItem) => request.post("/rbac2/v1/user/detail", data); +export const getUserDetail = (data: UserItem) => request.post('/rbac2/v1/user/detail', data) /** 获取用户列表 */ -export const fetchUserList = (data: { page: number, size: number, keyword?: string }) => request.post("/rbac2/v1/user/fetch", data); +export const fetchUserList = (data: { page: number; size: number; keyword?: string }) => request.post('/rbac2/v1/user/fetch', data) /** 修改用户 */ -export const modifyUser = (data: UserItem) => request.post("/rbac2/v1/user/modify", data); +export const modifyUser = (data: UserItem) => request.post('/rbac2/v1/user/modify', data) /** 删除用户 */ -export const deleteUser = (data: { id: UserItem['id'] }) => request.post("/rbac2/v1/user/del", data); +export const deleteUser = (data: { id: UserItem['id'] }) => request.post('/rbac2/v1/user/del', data) /** 获取所有权限【树形】 */ -export const getUserPmnTree = (data: { id: UserItem['id'], workspace: string }) => request.post("/rbac2/v1/user/pmn_tree", data); +export const getUserPmnTree = (data: { id: UserItem['id']; workspace: string }) => request.post('/rbac2/v1/user/pmn_tree', data) /** 用户-获取所有权限【平面】 */ -export const userPmn = (data: { id: UserItem['id'], workspace: string }) => request.post("/rbac2/v1/user/pmn", data, { needWorkspace: true }); +export const userPmn = (data: { id: UserItem['id']; workspace: string }) => + request.post('/rbac2/v1/user/pmn', data, { needWorkspace: true }) /** 用户-给指定用户设置权限 */ -export const userSetPmn = (data: { list: { id: number, pmn_id: number }[] }) => request.post("/rbac2/v1/user/set_pmn", data, { needWorkspace: true }); +export const userSetPmn = (data: { list: { id: number; pmn_id: number }[] }) => + request.post('/rbac2/v1/user/set_pmn', data, { needWorkspace: true }) /** 用户-给指定用户编辑权限 */ -export const userModifyPmn = (data: { id: UserItem['id'], list: number[] }) => request.post("/rbac2/v1/user/modify_pmn", data, { needWorkspace: true }); +export const userModifyPmn = (data: { id: UserItem['id']; list: number[] }) => + request.post('/rbac2/v1/user/modify_pmn', data, { needWorkspace: true }) /** 重置密码(短信) */ export const resetUserPassword = (data: { /** 账号 */ - account: string; + account: string /** 验证码 */ - code: string; + code: string /** 密码 */ - password: string; + password: string /** 手机号 */ - phone: string; -}) => request.post("/rbac2/v1/reset", data); + phone: string +}) => request.post('/rbac2/v1/reset', data) /** 管理员重置用户密码 */ export const adminResetUserPassword = (data: { /** 用户ID */ - id: number; + id: number /** 新密码 */ - password: string; -}) => request.post("/rbac2/v1/user/reset_password", data); + password: string +}) => request.post('/rbac2/v1/user/reset_password', data) diff --git a/src/api/ops/alertHistory.ts b/src/api/ops/alertHistory.ts index 20f28be..c7a2452 100644 --- a/src/api/ops/alertHistory.ts +++ b/src/api/ops/alertHistory.ts @@ -1,56 +1,53 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取 告警记录列表 */ -export const fetchHistories = (data: { - page?: number, - page_size?: number, - size?: number, - policy_id?: number, - rule_id?: number, - status?: string, - severity_id?: number, - starts_at?: string, - ends_at?: string, +export const fetchHistories = (data: { + page?: number + page_size?: number + size?: number + policy_id?: number + rule_id?: number + status?: string + severity_id?: number + starts_at?: string + ends_at?: string keyword?: string }) => { // 兼容 size 参数,转换为 page_size - const params: any = { ...data }; + const params: any = { ...data } if (params.size !== undefined && params.page_size === undefined) { - params.page_size = params.size; - delete params.size; + params.page_size = params.size + delete params.size } - return request.get("/Alert/v1/record/list", { params }); -}; + return request.get('/Alert/v1/record/list', { params }) +} /** 获取 告警记录详情 */ -export const fetchHistoryDetail = (id: number) => request.get(`/Alert/v1/record/get/${id}`); +export const fetchHistoryDetail = (id: number) => request.get(`/Alert/v1/record/get/${id}`) /** 获取 告警统计 */ -export const fetchAlertStatistics = (data: { - policy_id?: number, - starts_at?: string, - ends_at?: string -}) => request.get("/Alert/v1/record/statistics", { params: data }); +export const fetchAlertStatistics = (data: { policy_id?: number; starts_at?: string; ends_at?: string }) => + request.get('/Alert/v1/record/statistics', { params: data }) /** 获取 告警计数 */ -export const fetchAlertCount = () => request.get("/Alert/v1/record/count"); +export const fetchAlertCount = () => request.get('/Alert/v1/record/count') /** 获取 告警处理记录列表 */ export const fetchAlertProcessList = (data: { - alert_record_id?: number, - action?: string, - page?: number, - page_size?: number, - keyword?: string, - sort?: string, + alert_record_id?: number + action?: string + page?: number + page_size?: number + keyword?: string + sort?: string order?: string -}) => request.get("/Alert/v1/process/list", { params: data }); +}) => request.get('/Alert/v1/process/list', { params: data }) /** 获取 告警趋势 */ export const fetchAlertTrend = (data: { - granularity?: string, // day / month - start_time?: string, - end_time?: string, - policy_id?: number, + granularity?: string // day / month + start_time?: string + end_time?: string + policy_id?: number severity_id?: number -}) => request.get("/Alert/v1/record/trend", { params: data }); +}) => request.get('/Alert/v1/record/trend', { params: data }) diff --git a/src/api/ops/alertLevel.ts b/src/api/ops/alertLevel.ts index 7381c4b..ec96318 100644 --- a/src/api/ops/alertLevel.ts +++ b/src/api/ops/alertLevel.ts @@ -1,21 +1,13 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取告警级别列表(分页) */ -export const fetchAlertLevelList = (data?: { - page?: number; - page_size?: number; - keyword?: string; - enabled?: string; -}) => { - return request.get("/Alert/v1/severity/list", { params: data || {} }); -}; +export const fetchAlertLevelList = (data?: { page?: number; page_size?: number; keyword?: string; enabled?: string }) => { + return request.get('/Alert/v1/severity/list', { params: data || {} }) +} /** 获取告警级别下拉选项(不分页),默认仅返回 enabled=true */ -export const fetchAlertLevelOptions = (data?: { - keyword?: string; - enabled?: 'true' | 'false'; -}) => { - return request.get("/Alert/v1/severity/options", { +export const fetchAlertLevelOptions = (data?: { keyword?: string; enabled?: 'true' | 'false' }) => { + return request.get('/Alert/v1/severity/options', { params: { keyword: data?.keyword || undefined, enabled: data?.enabled ?? 'true', @@ -25,39 +17,39 @@ export const fetchAlertLevelOptions = (data?: { /** 获取告警级别详情 */ export const fetchAlertLevelDetail = (id: number) => { - return request.get(`/Alert/v1/severity/get/${id}`); -}; + return request.get(`/Alert/v1/severity/get/${id}`) +} /** 创建告警级别 */ export const createAlertLevel = (data: { - name: string; - code: string; - description?: string; - color: string; - icon?: string; - priority?: number; - enabled?: boolean; - config?: string; + name: string + code: string + description?: string + color: string + icon?: string + priority?: number + enabled?: boolean + config?: string }) => { - return request.post("/Alert/v1/severity/create", data); -}; + return request.post('/Alert/v1/severity/create', data) +} /** 更新告警级别 */ export const updateAlertLevel = (data: { - id: number; - name?: string; - code?: string; - description?: string; - color?: string; - icon?: string; - priority?: number; - enabled?: boolean; - config?: string; + id: number + name?: string + code?: string + description?: string + color?: string + icon?: string + priority?: number + enabled?: boolean + config?: string }) => { - return request.post("/Alert/v1/severity/update", data); -}; + return request.post('/Alert/v1/severity/update', data) +} /** 删除告警级别 */ export const deleteAlertLevel = (id: number) => { - return request.delete(`/Alert/v1/severity/delete/${id}`); -}; + return request.delete(`/Alert/v1/severity/delete/${id}`) +} diff --git a/src/api/ops/alertRecord.ts b/src/api/ops/alertRecord.ts index 7769d40..6f81872 100644 --- a/src/api/ops/alertRecord.ts +++ b/src/api/ops/alertRecord.ts @@ -1,55 +1,55 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取 当前告警记录列表 */ -export const fetchAlertRecords = (data: { - page?: number, - page_size?: number, - policy_id?: number, - rule_id?: number, - status?: string, - severity_id?: number, - start_time?: string, - end_time?: string, - keyword?: string, - sort?: string, - order?: string, - binding_id?: number, - resource_category?: string, - server_identity?: string, - ip?: string, +export const fetchAlertRecords = (data: { + page?: number + page_size?: number + policy_id?: number + rule_id?: number + status?: string + severity_id?: number + start_time?: string + end_time?: string + keyword?: string + sort?: string + order?: string + binding_id?: number + resource_category?: string + server_identity?: string + ip?: string }) => { - return request.get("/Alert/v1/record/list", { params: data }); -}; + return request.get('/Alert/v1/record/list', { params: data }) +} /** 获取 告警记录详情 */ -export const fetchAlertRecordDetail = (id: number) => request.get(`/Alert/v1/record/get/${id}`); +export const fetchAlertRecordDetail = (id: number) => request.get(`/Alert/v1/record/get/${id}`) /** 创建处理记录(执行确认/解决/屏蔽等操作) */ export const createAlertProcess = (data: { - alert_record_id: number; - action: string; // ack / resolve / silence / comment / assign / escalate / close - operator: string; - operator_id?: string; - comment?: string; - assign_to?: string; - assign_to_id?: string; - silence_until?: string; - silence_reason?: string; - escalate_level?: string; - escalate_to?: string; - root_cause?: string; - solution?: string; + alert_record_id: number + action: string // ack / resolve / silence / comment / assign / escalate / close + operator: string + operator_id?: string + comment?: string + assign_to?: string + assign_to_id?: string + silence_until?: string + silence_reason?: string + escalate_level?: string + escalate_to?: string + root_cause?: string + solution?: string // 按后端约定:metadata 为 JSON 字符串,例如 "{}" - metadata?: string; -}) => request.post("/Alert/v1/process/create", data); + metadata?: string +}) => request.post('/Alert/v1/process/create', data) /** 获取 告警处理记录列表 */ export const fetchAlertProcessList = (data: { - alert_record_id?: number, - action?: string, - page?: number, - page_size?: number, - keyword?: string, - sort?: string, + alert_record_id?: number + action?: string + page?: number + page_size?: number + keyword?: string + sort?: string order?: string -}) => request.get("/Alert/v1/process/list", { params: data }); +}) => request.get('/Alert/v1/process/list', { params: data }) diff --git a/src/api/ops/alertTemplate.ts b/src/api/ops/alertTemplate.ts index 28a5260..be50a4d 100644 --- a/src/api/ops/alertTemplate.ts +++ b/src/api/ops/alertTemplate.ts @@ -133,13 +133,7 @@ export const RULE_TYPES = [ // ==================== 告警模板接口 ==================== /** 获取告警模板列表 */ -export const fetchTemplateList = (params?: { - page?: number - page_size?: number - name?: string - category?: string - enabled?: boolean -}) => { +export const fetchTemplateList = (params?: { page?: number; page_size?: number; name?: string; category?: string; enabled?: boolean }) => { return request.get('/Alert/v1/template/list', { params }) } @@ -195,10 +189,7 @@ export const fetchSeverityList = () => { } /** 获取告警级别下拉选项(不分页),支持 keyword 模糊搜索与 enabled=true 过滤 */ -export const fetchSeverityOptions = (params?: { - keyword?: string - enabled?: 'true' | 'false' -}) => { +export const fetchSeverityOptions = (params?: { keyword?: string; enabled?: 'true' | 'false' }) => { return request.get('/Alert/v1/severity/options', { params: { keyword: params?.keyword || undefined, @@ -215,11 +206,6 @@ export const fetchSeverityByCode = (code: string) => { // ==================== 指标元数据接口 ==================== /** 获取指标元数据 */ -export const fetchMetricsMeta = (params: { - data_source: string - server_identity?: string - keyword?: string - limit?: number -}) => { +export const fetchMetricsMeta = (params: { data_source: string; server_identity?: string; keyword?: string; limit?: number }) => { return request.get('/DC-Control/v1/services/metrics/meta', { params }) -} \ No newline at end of file +} diff --git a/src/api/ops/database.ts b/src/api/ops/database.ts index c4ee080..3920a94 100644 --- a/src/api/ops/database.ts +++ b/src/api/ops/database.ts @@ -152,22 +152,19 @@ export interface MetricMetaQueryParams { * 获取数据库服务列表 * @param params 查询参数 */ -export const fetchDatabaseList = (params: DatabaseQueryParams) => - request.get('/DC-Control/v1/database', { params }) +export const fetchDatabaseList = (params: DatabaseQueryParams) => request.get('/DC-Control/v1/database', { params }) /** * 获取数据库服务详情 * @param id 服务ID */ -export const fetchDatabaseDetail = (id: number) => - request.get(`/DC-Control/v1/database/${id}`) +export const fetchDatabaseDetail = (id: number) => request.get(`/DC-Control/v1/database/${id}`) /** * 创建数据库服务 * @param data 创建参数 */ -export const createDatabase = (data: CreateDatabaseParams) => - request.post<{ message: string; id: number }>('/DC-Control/v1/database', data) +export const createDatabase = (data: CreateDatabaseParams) => request.post<{ message: string; id: number }>('/DC-Control/v1/database', data) /** * 更新数据库服务 @@ -181,8 +178,7 @@ export const updateDatabase = (id: number, data: UpdateDatabaseParams) => * 删除数据库服务(软删除) * @param id 服务ID */ -export const deleteDatabase = (id: number) => - request.delete<{ message: string }>(`/DC-Control/v1/database/${id}`) +export const deleteDatabase = (id: number) => request.delete<{ message: string }>(`/DC-Control/v1/database/${id}`) /** * 按服务主键采集指标 @@ -196,4 +192,4 @@ export const collectDatabaseMetrics = (data: CollectMetricsParams) => * @param params 查询参数 */ export const fetchMetricMeta = (params: MetricMetaQueryParams) => - request.get('/DC-Control/v1/services/metrics/meta', { params }) \ No newline at end of file + request.get('/DC-Control/v1/services/metrics/meta', { params }) diff --git a/src/api/ops/datacenter.ts b/src/api/ops/datacenter.ts index bbc4a63..b3d74b7 100644 --- a/src/api/ops/datacenter.ts +++ b/src/api/ops/datacenter.ts @@ -1,41 +1,41 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取所有已启用数据中心(下拉,不分页) */ export const fetchDatacenterAll = (params?: { keyword?: string }) => { - return request.get("/Assets/v1/datacenter/all", { params }); -}; + return request.get('/Assets/v1/datacenter/all', { params }) +} /** 获取数据中心列表(分页) */ export const fetchDatacenterList = (data?: { - page?: number; - page_size?: number; - keyword?: string; - province_id?: number; - city_id?: number; - status?: string; + page?: number + page_size?: number + keyword?: string + province_id?: number + city_id?: number + status?: string }) => { - return request.post("/Assets/v1/datacenter/list", data || {}); -}; + return request.post('/Assets/v1/datacenter/list', data || {}) +} /** 获取数据中心详情 */ export const fetchDatacenterDetail = (id: number) => { - return request.get(`/Assets/v1/datacenter/detail/${id}`); -}; + return request.get(`/Assets/v1/datacenter/detail/${id}`) +} /** 创建数据中心 */ export const createDatacenter = (data: any) => { - return request.post("/Assets/v1/datacenter/create", data); -}; + return request.post('/Assets/v1/datacenter/create', data) +} /** 更新数据中心 */ export const updateDatacenter = (data: any) => { - return request.put("/Assets/v1/datacenter/update", data); -}; + return request.put('/Assets/v1/datacenter/update', data) +} /** 删除数据中心 */ export const deleteDatacenter = (id: number) => { - return request.delete(`/Assets/v1/datacenter/delete/${id}`); -}; + return request.delete(`/Assets/v1/datacenter/delete/${id}`) +} /** 获取省份列表(用于下拉选择) */ export const fetchProvinceList = (params?: { keyword?: string }) => { @@ -49,10 +49,10 @@ export const fetchCityList = (provinceId: number, params?: { keyword?: string }) /** 根据城市获取数据中心列表 */ export const fetchDatacenterByCity = (cityId: number) => { - return request.get(`/Assets/v1/datacenter/city/${cityId}`); -}; + return request.get(`/Assets/v1/datacenter/city/${cityId}`) +} /** 获取数据中心树形结构 */ export const fetchDatacenterTree = () => { - return request.get("/Assets/v1/datacenter/tree"); -}; + return request.get('/Assets/v1/datacenter/tree') +} diff --git a/src/api/ops/dcControl.ts b/src/api/ops/dcControl.ts index 7935f02..6022699 100644 --- a/src/api/ops/dcControl.ts +++ b/src/api/ops/dcControl.ts @@ -1,4 +1,4 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 许可证配置(与 DC-Control `LicenceConfig` / 接口 `data` 一致;字段按实际响应可能部分缺失) */ export interface LicenceConfig { @@ -20,23 +20,23 @@ export interface LicenceConfig { } /** 获取 采集器 */ -export const fetchCollectors = (data: { page: number, size: number, keyword?: string }) => request.get("/DC-Control/v1/collectors", { params: data }); +export const fetchCollectors = (data: { page: number; size: number; keyword?: string }) => + request.get('/DC-Control/v1/collectors', { params: data }) /** 新增 采集器 */ -export const createCollector = (data: any) => request.post("/DC-Control/v1/collectors", data); +export const createCollector = (data: any) => request.post('/DC-Control/v1/collectors', data) /** 删除 采集器 */ -export const deleteCollector = (id: number) => request.delete(`/DC-Control/v1/collectors/${id}`); +export const deleteCollector = (id: number) => request.delete(`/DC-Control/v1/collectors/${id}`) /** 获取 采集器详情 */ -export const fetchCollectorDetail = (id: number) => request.get(`/DC-Control/v1/collectors/${id}`); +export const fetchCollectorDetail = (id: number) => request.get(`/DC-Control/v1/collectors/${id}`) /** 更新 采集器 */ -export const updateCollector = (data: any) => request.put(`/DC-Control/v1/collectors/${data.id}`, data); +export const updateCollector = (data: any) => request.put(`/DC-Control/v1/collectors/${data.id}`, data) /** 获取 采集器统计数据 */ -export const fetchCollectorStatistics = () => request.get("/DC-Control/v1/statistics"); +export const fetchCollectorStatistics = () => request.get('/DC-Control/v1/statistics') /** 获取 许可证信息 */ -export const fetchLicenseInfo = () => - request.get<{ code?: number; data?: LicenceConfig; message?: string }>("/DC-Control/v1/license"); +export const fetchLicenseInfo = () => request.get<{ code?: number; data?: LicenceConfig; message?: string }>('/DC-Control/v1/license') diff --git a/src/api/ops/discovery.ts b/src/api/ops/discovery.ts index 0bbf529..e4dc09a 100644 --- a/src/api/ops/discovery.ts +++ b/src/api/ops/discovery.ts @@ -1,91 +1,89 @@ -import { request } from '@/api/request' - -/** 与后端 discovery/summary 对齐 */ -export interface DiscoverySummary { - device_total_current: number - online_current: number - offline_current: number - other_status_current: number - primary_scan_ids: number[] - last_run?: DiscoveryScanRun | null -} - -export interface DiscoveryScanRun { - id: number - scan_id: number - run_type: string - status: string - started_at: string - finished_at?: string | null - device_total: number - online_count: number - offline_count: number - new_count: number - error_message?: string - trigger_by: string -} - -export interface DiscoveryDeviceRow { - id: number - ip_address: string - scan_id?: number - run_id?: number - status: string - mac_address?: string - hostname?: string - device_type?: string - manufacturer?: string - discovery_methods?: string - last_seen_time?: string - last_scan_time?: string - first_seen_time?: string -} - -export interface DiscoveryDevicesResponse { - scope: string - scan_id?: number - primary_scan_ids?: number[] - total: number - page: number - page_size: number - data: DiscoveryDeviceRow[] -} - -export interface DiscoveryScanRunsResponse { - total: number - page: number - page_size: number - data: DiscoveryScanRun[] -} - -export interface DiscoveryConfig { - id: number - primary_scan_ids: number[] - primary_scan_ids_raw?: string -} - -export const fetchDiscoverySummary = () => - request.get<{ code: number; details?: DiscoverySummary }>('/DC-Control/v1/discovery/summary') - -export const fetchDiscoveryDevices = (params?: { - scope?: 'current' | 'raw' - scan_id?: number - page?: number - size?: number - status?: string - keyword?: string -}) => - request.get<{ code: number; details?: DiscoveryDevicesResponse }>('/DC-Control/v1/discovery/devices', { - params, - }) - -export const fetchDiscoveryScanRuns = (params?: { scan_id?: number; page?: number; size?: number }) => - request.get<{ code: number; details?: DiscoveryScanRunsResponse }>('/DC-Control/v1/discovery/scan-runs', { - params, - }) - -export const fetchDiscoveryConfig = () => - request.get<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config') - -export const updateDiscoveryConfig = (data: { primary_scan_ids: number[] }) => - request.put<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config', data) +import { request } from '@/api/request' + +/** 与后端 discovery/summary 对齐 */ +export interface DiscoverySummary { + device_total_current: number + online_current: number + offline_current: number + other_status_current: number + primary_scan_ids: number[] + last_run?: DiscoveryScanRun | null +} + +export interface DiscoveryScanRun { + id: number + scan_id: number + run_type: string + status: string + started_at: string + finished_at?: string | null + device_total: number + online_count: number + offline_count: number + new_count: number + error_message?: string + trigger_by: string +} + +export interface DiscoveryDeviceRow { + id: number + ip_address: string + scan_id?: number + run_id?: number + status: string + mac_address?: string + hostname?: string + device_type?: string + manufacturer?: string + discovery_methods?: string + last_seen_time?: string + last_scan_time?: string + first_seen_time?: string +} + +export interface DiscoveryDevicesResponse { + scope: string + scan_id?: number + primary_scan_ids?: number[] + total: number + page: number + page_size: number + data: DiscoveryDeviceRow[] +} + +export interface DiscoveryScanRunsResponse { + total: number + page: number + page_size: number + data: DiscoveryScanRun[] +} + +export interface DiscoveryConfig { + id: number + primary_scan_ids: number[] + primary_scan_ids_raw?: string +} + +export const fetchDiscoverySummary = () => request.get<{ code: number; details?: DiscoverySummary }>('/DC-Control/v1/discovery/summary') + +export const fetchDiscoveryDevices = (params?: { + scope?: 'current' | 'raw' + scan_id?: number + page?: number + size?: number + status?: string + keyword?: string +}) => + request.get<{ code: number; details?: DiscoveryDevicesResponse }>('/DC-Control/v1/discovery/devices', { + params, + }) + +export const fetchDiscoveryScanRuns = (params?: { scan_id?: number; page?: number; size?: number }) => + request.get<{ code: number; details?: DiscoveryScanRunsResponse }>('/DC-Control/v1/discovery/scan-runs', { + params, + }) + +export const fetchDiscoveryConfig = () => request.get<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config') + +export const updateDiscoveryConfig = (data: { primary_scan_ids: number[] }) => + request.put<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config', data) diff --git a/src/api/ops/feedbackTicket.ts b/src/api/ops/feedbackTicket.ts index 02b9e98..3f6beeb 100644 --- a/src/api/ops/feedbackTicket.ts +++ b/src/api/ops/feedbackTicket.ts @@ -15,7 +15,12 @@ function normalizeTicketListStatusParam(params: Record) { delete params.status return } - arr = s.includes(',') ? s.split(',').map((x) => x.trim()).filter(Boolean) : [s] + arr = s.includes(',') + ? s + .split(',') + .map((x) => x.trim()) + .filter(Boolean) + : [s] } if (arr.length === 0) delete params.status else params.status = arr @@ -88,55 +93,57 @@ export const fetchFeedbackTickets = (data?: { } /** 创建 工单 */ -export const createFeedbackTicket = (data: any) => request.post("/Feedback/v1/tickets", data); +export const createFeedbackTicket = (data: any) => request.post('/Feedback/v1/tickets', data) /** 更新 工单 */ -export const updateFeedbackTicket = (id: number, data: any) => request.put(`/Feedback/v1/tickets/${id}`, data); +export const updateFeedbackTicket = (id: number, data: any) => request.put(`/Feedback/v1/tickets/${id}`, data) /** 删除 工单 */ -export const deleteFeedbackTicket = (id: number) => request.delete(`/Feedback/v1/tickets/${id}`); +export const deleteFeedbackTicket = (id: number) => request.delete(`/Feedback/v1/tickets/${id}`) /** 获取 工单详情 */ -export const fetchFeedbackTicketDetail = (id: number) => request.get(`/Feedback/v1/tickets/${id}`); +export const fetchFeedbackTicketDetail = (id: number) => request.get(`/Feedback/v1/tickets/${id}`) /** 根据工单编号获取详情 */ -export const fetchFeedbackTicketByNo = (no: string) => request.get(`/Feedback/v1/tickets/no/${no}`); +export const fetchFeedbackTicketByNo = (no: string) => request.get(`/Feedback/v1/tickets/no/${no}`) /** 接单 */ -export const acceptFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/accept`); +export const acceptFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/accept`) /** 转交 */ -export const transferFeedbackTicket = (id: number, data: { assignee_id: number, assignee_name: string, reason?: string }) => request.post(`/Feedback/v1/tickets/${id}/transfer`, data); +export const transferFeedbackTicket = (id: number, data: { assignee_id: number; assignee_name: string; reason?: string }) => + request.post(`/Feedback/v1/tickets/${id}/transfer`, data) /** 撤回 */ -export const cancelFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/cancel`); +export const cancelFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/cancel`) /** 挂起 */ -export const suspendFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/suspend`, data); +export const suspendFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/suspend`, data) /** 重启 */ -export const resumeFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/resume`); +export const resumeFeedbackTicket = (id: number) => request.post(`/Feedback/v1/tickets/${id}/resume`) /** 解决 */ -export const resolveFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/resolve`, data); +export const resolveFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/resolve`, data) /** 关闭 */ -export const closeFeedbackTicket = (id: number, data: { remarks?: string }) => request.post(`/Feedback/v1/tickets/${id}/close`, data); +export const closeFeedbackTicket = (id: number, data: { remarks?: string }) => request.post(`/Feedback/v1/tickets/${id}/close`, data) /** 添加评论 */ -export const commentFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/comment`, data); +export const commentFeedbackTicket = (id: number, data: { content: string }) => request.post(`/Feedback/v1/tickets/${id}/comment`, data) /** 获取操作日志 */ -export const fetchFeedbackTicketLogs = (id: number) => request.get(`/Feedback/v1/tickets/${id}/logs`); +export const fetchFeedbackTicketLogs = (id: number) => request.get(`/Feedback/v1/tickets/${id}/logs`) /** 获取关联关系 */ -export const fetchFeedbackTicketRelations = (id: number) => request.get(`/Feedback/v1/tickets/${id}/relations`); +export const fetchFeedbackTicketRelations = (id: number) => request.get(`/Feedback/v1/tickets/${id}/relations`) /** 创建关联 */ -export const createFeedbackTicketRelation = (id: number, data: { target_ticket_id: number, relation_type: string, description?: string }) => request.post(`/Feedback/v1/tickets/${id}/relations`, data); +export const createFeedbackTicketRelation = (id: number, data: { target_ticket_id: number; relation_type: string; description?: string }) => + request.post(`/Feedback/v1/tickets/${id}/relations`, data) /** 删除关联 */ -export const deleteFeedbackTicketRelation = (relationId: number) => request.delete(`/Feedback/v1/tickets/relations/${relationId}`); +export const deleteFeedbackTicketRelation = (relationId: number) => request.delete(`/Feedback/v1/tickets/relations/${relationId}`) /** 获取 工单统计数据 */ -export const fetchFeedbackTicketStatistics = () => request.get("/Feedback/v1/tickets/statistics"); +export const fetchFeedbackTicketStatistics = () => request.get('/Feedback/v1/tickets/statistics') diff --git a/src/api/ops/floor.ts b/src/api/ops/floor.ts index dec3140..3d5f8d3 100644 --- a/src/api/ops/floor.ts +++ b/src/api/ops/floor.ts @@ -1,48 +1,37 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取楼层列表(分页) */ -export const fetchFloorList = (data?: { - page?: number; - page_size?: number; - keyword?: string; - datacenter_id?: number; - status?: string; -}) => { - return request.post("/Assets/v1/floor/list", data || {}); -}; +export const fetchFloorList = (data?: { page?: number; page_size?: number; keyword?: string; datacenter_id?: number; status?: string }) => { + return request.post('/Assets/v1/floor/list', data || {}) +} /** 获取楼层详情 */ export const fetchFloorDetail = (id: number) => { - return request.get(`/Assets/v1/floor/detail/${id}`); -}; + return request.get(`/Assets/v1/floor/detail/${id}`) +} /** 根据数据中心获取楼层列表(下拉,不分页) */ -export const fetchFloorListByDatacenter = ( - datacenterId: number, - params?: { name?: string } -) => { - return request.get(`/Assets/v1/floor/datacenter/${datacenterId}`, { params }); -}; +export const fetchFloorListByDatacenter = (datacenterId: number, params?: { name?: string }) => { + return request.get(`/Assets/v1/floor/datacenter/${datacenterId}`, { params }) +} /** 创建楼层 */ export const createFloor = (data: any) => { - return request.post("/Assets/v1/floor/create", data); -}; + return request.post('/Assets/v1/floor/create', data) +} /** 更新楼层 */ export const updateFloor = (data: any) => { - return request.put("/Assets/v1/floor/update", data); -}; + return request.put('/Assets/v1/floor/update', data) +} /** 删除楼层 */ export const deleteFloor = (id: number) => { - return request.delete(`/Assets/v1/floor/delete/${id}`); -}; + return request.delete(`/Assets/v1/floor/delete/${id}`) +} /** 获取数据中心列表(用于下拉选择) */ export const fetchDatacenterList = (params?: { keyword?: string; name?: string }) => { - const normalizedParams = params?.keyword - ? { ...params, name: params.name ?? params.keyword } - : params - return request.get("/Assets/v1/datacenter/all", { params: normalizedParams }); -}; + const normalizedParams = params?.keyword ? { ...params, name: params.name ?? params.keyword } : params + return request.get('/Assets/v1/datacenter/all', { params: normalizedParams }) +} diff --git a/src/api/ops/goview.ts b/src/api/ops/goview.ts index ed3d47c..a4f7ccc 100644 --- a/src/api/ops/goview.ts +++ b/src/api/ops/goview.ts @@ -58,11 +58,7 @@ export const fetchOssInfo = () => { } /** 获取项目列表 */ -export const fetchProjectList = (params?: { - page?: number - size?: number - state?: -1 | 1 -}) => { +export const fetchProjectList = (params?: { page?: number; size?: number; state?: -1 | 1 }) => { return request.get>('/Visual/v1/project/list', { params }) } @@ -107,10 +103,7 @@ export const deleteProject = (ids: string) => { /** 发布/取消发布项目 */ export const publishProject = (data: { identity: string; state: -1 | 1 }) => { - return request.put>( - '/Visual/v1/project/publish', - data - ) + return request.put>('/Visual/v1/project/publish', data) } /** 上传文件 */ @@ -130,4 +123,4 @@ export const saveProjectData = (projectId: string, content: string) => { return request.post>('/Visual/v1/project/save/data', formData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, }) -} \ No newline at end of file +} diff --git a/src/api/ops/ipScan.ts b/src/api/ops/ipScan.ts index b737a08..7329a2c 100644 --- a/src/api/ops/ipScan.ts +++ b/src/api/ops/ipScan.ts @@ -1,73 +1,66 @@ -import { request } from '@/api/request' - -/** IP 扫描任务(与 dc-control ControlIpScan 对齐) */ -export interface IpScanTask { - id: number - name: string - type: string - description?: string - target_range: string - port_range?: string - config?: string - timeout?: number - concurrency?: number - cron_expr?: string - status?: string - server_id: number - last_scan_time?: string - next_scan_time?: string - last_scan_status?: string - total_count?: number - online_count?: number - scan_count?: number - enable?: boolean - priority?: number - created_at?: string - updated_at?: string -} - -export interface IpScanListResponse { - total: number - page: number - page_size: number - data: IpScanTask[] -} - -/** 扫描任务分页列表 */ -export const fetchIpScanList = (params?: { page?: number; size?: number; keyword?: string }) => - request.get<{ code: number; details?: IpScanListResponse; message?: string }>('/DC-Control/v1/ipscans', { - params, - }) - -export const fetchIpScanDetail = (id: number) => - request.get<{ code: number; details?: IpScanTask; message?: string }>(`/DC-Control/v1/ipscans/${id}`) - -/** 触发一次扫描(会创建 scan_run 并调用 Agent);成功体见文档 { message: "scan triggered" } */ -export const triggerIpScan = (id: number) => - request.post<{ code: number; details?: { message?: string }; message?: string }>( - `/DC-Control/v1/ipscans/${id}/trigger`, - ) - -/** 启动扫描任务(文档:将 status 置为 running,与 Cron 调度语义相关) */ -export const startIpScan = (id: number) => - request.post<{ code: number; details?: { message?: string }; message?: string }>( - `/DC-Control/v1/ipscans/${id}/start`, - ) - -/** 停止扫描任务(文档:将 status 置为 stopped) */ -export const stopIpScan = (id: number) => - request.post<{ code: number; details?: { message?: string }; message?: string }>( - `/DC-Control/v1/ipscans/${id}/stop`, - ) - -/** 创建扫描任务 */ -export const createIpScan = (data: Partial) => - request.post<{ code: number; details?: IpScanTask; message?: string }>('/DC-Control/v1/ipscans', data) - -/** 更新扫描任务 */ -export const updateIpScan = (id: number, data: Partial) => - request.put<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`, data) - -/** 删除扫描任务 */ -export const deleteIpScan = (id: number) => - request.delete<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`) +import { request } from '@/api/request' + +/** IP 扫描任务(与 dc-control ControlIpScan 对齐) */ +export interface IpScanTask { + id: number + name: string + type: string + description?: string + target_range: string + port_range?: string + config?: string + timeout?: number + concurrency?: number + cron_expr?: string + status?: string + server_id: number + last_scan_time?: string + next_scan_time?: string + last_scan_status?: string + total_count?: number + online_count?: number + scan_count?: number + enable?: boolean + priority?: number + created_at?: string + updated_at?: string +} + +export interface IpScanListResponse { + total: number + page: number + page_size: number + data: IpScanTask[] +} + +/** 扫描任务分页列表 */ +export const fetchIpScanList = (params?: { page?: number; size?: number; keyword?: string }) => + request.get<{ code: number; details?: IpScanListResponse; message?: string }>('/DC-Control/v1/ipscans', { + params, + }) + +export const fetchIpScanDetail = (id: number) => + request.get<{ code: number; details?: IpScanTask; message?: string }>(`/DC-Control/v1/ipscans/${id}`) + +/** 触发一次扫描(会创建 scan_run 并调用 Agent);成功体见文档 { message: "scan triggered" } */ +export const triggerIpScan = (id: number) => + request.post<{ code: number; details?: { message?: string }; message?: string }>(`/DC-Control/v1/ipscans/${id}/trigger`) + +/** 启动扫描任务(文档:将 status 置为 running,与 Cron 调度语义相关) */ +export const startIpScan = (id: number) => + request.post<{ code: number; details?: { message?: string }; message?: string }>(`/DC-Control/v1/ipscans/${id}/start`) + +/** 停止扫描任务(文档:将 status 置为 stopped) */ +export const stopIpScan = (id: number) => + request.post<{ code: number; details?: { message?: string }; message?: string }>(`/DC-Control/v1/ipscans/${id}/stop`) + +/** 创建扫描任务 */ +export const createIpScan = (data: Partial) => + request.post<{ code: number; details?: IpScanTask; message?: string }>('/DC-Control/v1/ipscans', data) + +/** 更新扫描任务 */ +export const updateIpScan = (id: number, data: Partial) => + request.put<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`, data) + +/** 删除扫描任务 */ +export const deleteIpScan = (id: number) => request.delete<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`) diff --git a/src/api/ops/logs.ts b/src/api/ops/logs.ts index fd14357..032bf04 100644 --- a/src/api/ops/logs.ts +++ b/src/api/ops/logs.ts @@ -1,193 +1,193 @@ -import { request } from '@/api/request' - -const logsHost = (import.meta.env.VITE_API_BASE_URL || '').replace(/\/+$/, '') -const BASE = logsHost ? `${logsHost}/Logs/v1` : '/Logs/v1' - -/** 解析 bsm-sdk 风格响应,取出业务 data */ -export function unwrapLogsPayload(res: any): any { - if (res == null) return null - if (typeof res.code === 'number' && res.code !== 0) return null - return res.details ?? res.data ?? null -} - -export interface LogEvent { - id: number - created_at: string - source_kind: string - remote_addr: string - source_ip: string - raw_payload: string - normalized_summary: string - normalized_detail: string - device_name: string - resource_type: string - resource_id: string - resource_name: string - match_method: string - severity_code: string - trap_oid: string - alert_sent: boolean -} - -export interface LogEntriesParams { - page?: number - page_size?: number - source_kind?: string - resource_type?: string - resource_id?: string - dispatch_status?: string - log_event_id?: number -} - -export interface LogEntriesResult { - total: number - page: number - page_size: number - items: LogEvent[] -} - -export interface AlertOutbox { - id: number - created_at: string - updated_at: string - log_event_id: number - payload_json: string - status: string - retry_count: number - next_retry_at: string - last_error: string -} - -export interface AlertOutboxParams { - page?: number - page_size?: number - status?: string -} - -export interface SyslogRule { - id?: number - created_at?: string - updated_at?: string - name: string - enabled: boolean - priority: number - device_name_contains: string - keyword_regex: string - alert_name: string - severity_code: string - policy_id: number -} - -export interface TrapRule { - id?: number - created_at?: string - updated_at?: string - name: string - enabled: boolean - priority: number - oid_prefix: string - varbind_match_regex: string - alert_name: string - severity_code: string - policy_id: number -} - -export interface TrapDictionaryEntry { - id?: number - created_at?: string - updated_at?: string - oid_prefix: string - title: string - description: string - severity_code: string - recovery_message: string - enabled: boolean -} - -export interface TrapShield { - id?: number - created_at?: string - updated_at?: string - name: string - enabled: boolean - source_ip_cidr: string - oid_prefix: string - interface_hint: string - time_windows_json: string -} - -export function fetchLogEntries(params?: LogEntriesParams) { - return request.get(`${BASE}/entries`, { params }) -} - -export function fetchAlertOutbox(params?: AlertOutboxParams) { - return request.get(`${BASE}/alert-outbox`, { params }) -} - -export function retryAlertOutbox(id: number) { - return request.post(`${BASE}/alert-outbox/${id}/retry`) -} - -export function fetchSyslogRules() { - return request.get(`${BASE}/syslog-rules`) -} - -export function createSyslogRule(data: Partial) { - return request.post(`${BASE}/syslog-rules`, data) -} - -export function updateSyslogRule(id: number, data: Partial) { - return request.put(`${BASE}/syslog-rules/${id}`, data) -} - -export function deleteSyslogRule(id: number) { - return request.delete(`${BASE}/syslog-rules/${id}`) -} - -export function fetchTrapRules() { - return request.get(`${BASE}/trap-rules`) -} - -export function createTrapRule(data: Partial) { - return request.post(`${BASE}/trap-rules`, data) -} - -export function updateTrapRule(id: number, data: Partial) { - return request.put(`${BASE}/trap-rules/${id}`, data) -} - -export function deleteTrapRule(id: number) { - return request.delete(`${BASE}/trap-rules/${id}`) -} - -export function fetchTrapDictionary() { - return request.get(`${BASE}/trap-dictionary`) -} - -export function createTrapDictionary(data: Partial) { - return request.post(`${BASE}/trap-dictionary`, data) -} - -export function updateTrapDictionary(id: number, data: Partial) { - return request.put(`${BASE}/trap-dictionary/${id}`, data) -} - -export function deleteTrapDictionary(id: number) { - return request.delete(`${BASE}/trap-dictionary/${id}`) -} - -export function fetchTrapSuppressions() { - return request.get(`${BASE}/trap-suppressions`) -} - -export function createTrapSuppression(data: Partial) { - return request.post(`${BASE}/trap-suppressions`, data) -} - -export function updateTrapSuppression(id: number, data: Partial) { - return request.put(`${BASE}/trap-suppressions/${id}`, data) -} - -export function deleteTrapSuppression(id: number) { - return request.delete(`${BASE}/trap-suppressions/${id}`) -} +import { request } from '@/api/request' + +const logsHost = (import.meta.env.VITE_API_BASE_URL || '').replace(/\/+$/, '') +const BASE = logsHost ? `${logsHost}/Logs/v1` : '/Logs/v1' + +/** 解析 bsm-sdk 风格响应,取出业务 data */ +export function unwrapLogsPayload(res: any): any { + if (res == null) return null + if (typeof res.code === 'number' && res.code !== 0) return null + return res.details ?? res.data ?? null +} + +export interface LogEvent { + id: number + created_at: string + source_kind: string + remote_addr: string + source_ip: string + raw_payload: string + normalized_summary: string + normalized_detail: string + device_name: string + resource_type: string + resource_id: string + resource_name: string + match_method: string + severity_code: string + trap_oid: string + alert_sent: boolean +} + +export interface LogEntriesParams { + page?: number + page_size?: number + source_kind?: string + resource_type?: string + resource_id?: string + dispatch_status?: string + log_event_id?: number +} + +export interface LogEntriesResult { + total: number + page: number + page_size: number + items: LogEvent[] +} + +export interface AlertOutbox { + id: number + created_at: string + updated_at: string + log_event_id: number + payload_json: string + status: string + retry_count: number + next_retry_at: string + last_error: string +} + +export interface AlertOutboxParams { + page?: number + page_size?: number + status?: string +} + +export interface SyslogRule { + id?: number + created_at?: string + updated_at?: string + name: string + enabled: boolean + priority: number + device_name_contains: string + keyword_regex: string + alert_name: string + severity_code: string + policy_id: number +} + +export interface TrapRule { + id?: number + created_at?: string + updated_at?: string + name: string + enabled: boolean + priority: number + oid_prefix: string + varbind_match_regex: string + alert_name: string + severity_code: string + policy_id: number +} + +export interface TrapDictionaryEntry { + id?: number + created_at?: string + updated_at?: string + oid_prefix: string + title: string + description: string + severity_code: string + recovery_message: string + enabled: boolean +} + +export interface TrapShield { + id?: number + created_at?: string + updated_at?: string + name: string + enabled: boolean + source_ip_cidr: string + oid_prefix: string + interface_hint: string + time_windows_json: string +} + +export function fetchLogEntries(params?: LogEntriesParams) { + return request.get(`${BASE}/entries`, { params }) +} + +export function fetchAlertOutbox(params?: AlertOutboxParams) { + return request.get(`${BASE}/alert-outbox`, { params }) +} + +export function retryAlertOutbox(id: number) { + return request.post(`${BASE}/alert-outbox/${id}/retry`) +} + +export function fetchSyslogRules() { + return request.get(`${BASE}/syslog-rules`) +} + +export function createSyslogRule(data: Partial) { + return request.post(`${BASE}/syslog-rules`, data) +} + +export function updateSyslogRule(id: number, data: Partial) { + return request.put(`${BASE}/syslog-rules/${id}`, data) +} + +export function deleteSyslogRule(id: number) { + return request.delete(`${BASE}/syslog-rules/${id}`) +} + +export function fetchTrapRules() { + return request.get(`${BASE}/trap-rules`) +} + +export function createTrapRule(data: Partial) { + return request.post(`${BASE}/trap-rules`, data) +} + +export function updateTrapRule(id: number, data: Partial) { + return request.put(`${BASE}/trap-rules/${id}`, data) +} + +export function deleteTrapRule(id: number) { + return request.delete(`${BASE}/trap-rules/${id}`) +} + +export function fetchTrapDictionary() { + return request.get(`${BASE}/trap-dictionary`) +} + +export function createTrapDictionary(data: Partial) { + return request.post(`${BASE}/trap-dictionary`, data) +} + +export function updateTrapDictionary(id: number, data: Partial) { + return request.put(`${BASE}/trap-dictionary/${id}`, data) +} + +export function deleteTrapDictionary(id: number) { + return request.delete(`${BASE}/trap-dictionary/${id}`) +} + +export function fetchTrapSuppressions() { + return request.get(`${BASE}/trap-suppressions`) +} + +export function createTrapSuppression(data: Partial) { + return request.post(`${BASE}/trap-suppressions`, data) +} + +export function updateTrapSuppression(id: number, data: Partial) { + return request.put(`${BASE}/trap-suppressions/${id}`, data) +} + +export function deleteTrapSuppression(id: number) { + return request.delete(`${BASE}/trap-suppressions/${id}`) +} diff --git a/src/api/ops/middleware.ts b/src/api/ops/middleware.ts index 6e54642..fa40460 100644 --- a/src/api/ops/middleware.ts +++ b/src/api/ops/middleware.ts @@ -125,6 +125,21 @@ export interface MetricsUploadResponse { count: number } +/** 指标项 */ +export interface MiddlewareMetric { + metric_name: string + metric_value: number + metric_unit: string +} + +/** 最新指标数据 */ +export interface MiddlewareMetricsLatestData { + service_identity: string + latest_timestamp: string | null + count: number + metrics: MiddlewareMetric[] +} + /** 指标元数据项 */ export interface MetricMetaItem { metric_name: string @@ -188,4 +203,34 @@ export const uploadMiddlewareMetrics = (data: MetricsUploadData) => { /** 查询中间件服务指标元数据 */ export const fetchMiddlewareMetricsMeta = (params: MetricsMetaParams) => { return request.get('/DC-Control/v1/services/metrics/meta', { params }) -} \ No newline at end of file +} + +/** 获取最新时序指标 */ +export const fetchMiddlewareMetricsLatest = (serviceIdentity: string) => { + return request.get<{ code: number; message: string; details: MiddlewareMetricsLatestData }>('/DC-Control/v1/middleware/metrics/latest', { + params: { service_identity: serviceIdentity }, + }) +} + +/** 中间件类型映射 */ +export const MIDDLEWARE_TYPE_MAP: Record = { + nginx: 'Nginx', + apache: 'Apache', + tomcat: 'Tomcat', + redis: 'Redis', + kafka: 'Kafka', + rabbitmq: 'RabbitMQ', + elasticsearch: 'Elasticsearch', + mysql: 'MySQL', + postgresql: 'PostgreSQL', + mongodb: 'MongoDB', + other: '其他', +} + +/** 运行状态映射 */ +export const STATUS_MAP: Record = { + online: '在线', + offline: '离线', + error: '异常', + unknown: '未知', +} diff --git a/src/api/ops/netarchTopo.ts b/src/api/ops/netarchTopo.ts index e3ff2d4..d2deff1 100644 --- a/src/api/ops/netarchTopo.ts +++ b/src/api/ops/netarchTopo.ts @@ -86,26 +86,18 @@ export interface TopologyNode { // ==================== 分组管理接口 ==================== /** 获取分组列表 */ -export const fetchTopologyGroups = (data?: { - parent_id?: number; - page?: number; - size?: number; - keyword?: string; - enable?: boolean -}) => +export const fetchTopologyGroups = (data?: { parent_id?: number; page?: number; size?: number; keyword?: string; enable?: boolean }) => request.get('/DC-Control/v1/topology-groups', { params: data }) /** 创建分组 */ -export const createTopologyGroup = (data: Partial) => - request.post('/DC-Control/v1/topology-groups', data) +export const createTopologyGroup = (data: Partial) => request.post('/DC-Control/v1/topology-groups', data) /** 更新分组 */ export const updateTopologyGroup = (data: Partial & { id: number }) => request.put(`/DC-Control/v1/topology-groups/${data.id}`, data) /** 删除分组 */ -export const deleteTopologyGroup = (id: number) => - request.delete(`/DC-Control/v1/topology-groups/${id}`) +export const deleteTopologyGroup = (id: number) => request.delete(`/DC-Control/v1/topology-groups/${id}`) // ==================== 拓扑管理接口 ==================== @@ -114,32 +106,25 @@ export const fetchTopologies = (data: { page: number; size: number; keyword?: st request.get('/DC-Control/v1/topologies', { params: data }) /** 获取拓扑详情 */ -export const fetchTopologyDetail = (id: number) => - request.get(`/DC-Control/v1/topologies/${id}`) +export const fetchTopologyDetail = (id: number) => request.get(`/DC-Control/v1/topologies/${id}`) /** 创建拓扑 */ -export const createTopology = (data: Partial) => - request.post('/DC-Control/v1/topologies', data) +export const createTopology = (data: Partial) => request.post('/DC-Control/v1/topologies', data) /** 更新拓扑 */ -export const updateTopology = (data: Partial & { id: number }) => - request.put(`/DC-Control/v1/topologies/${data.id}`, data) +export const updateTopology = (data: Partial & { id: number }) => request.put(`/DC-Control/v1/topologies/${data.id}`, data) /** 删除拓扑 */ -export const deleteTopology = (id: number) => - request.delete(`/DC-Control/v1/topologies/${id}`) +export const deleteTopology = (id: number) => request.delete(`/DC-Control/v1/topologies/${id}`) /** 触发拓扑发现 */ -export const discoverTopology = (id: number) => - request.post(`/DC-Control/v1/topologies/${id}/discover`) +export const discoverTopology = (id: number) => request.post(`/DC-Control/v1/topologies/${id}/discover`) /** 获取拓扑视图(包含拓扑和链路) */ -export const fetchTopologyView = (id: number) => - request.get(`/DC-Control/v1/topologies/${id}/view`) +export const fetchTopologyView = (id: number) => request.get(`/DC-Control/v1/topologies/${id}/view`) /** 获取拓扑图数据(用于前端可视化) */ -export const fetchTopologyGraph = (id: number) => - request.get(`/DC-Control/v1/topologies/${id}/graph`) +export const fetchTopologyGraph = (id: number) => request.get(`/DC-Control/v1/topologies/${id}/graph`) // ==================== 节点管理接口 ==================== @@ -152,8 +137,7 @@ export const updateNode = (topologyId: number, nodeId: string, data: Partial - request.delete(`/DC-Control/v1/topologies/${topologyId}/nodes/${nodeId}`) +export const deleteNode = (topologyId: number, nodeId: string) => request.delete(`/DC-Control/v1/topologies/${topologyId}/nodes/${nodeId}`) /** 批量更新节点位置 */ export const updateNodesPositions = (topologyId: number, positions: Array<{ id: string; position: { x: number; y: number } }>) => @@ -163,23 +147,20 @@ export const updateNodesPositions = (topologyId: number, positions: Array<{ id: export const batchImportAssetNodes = (topologyId: number, asset_ids: number[]) => request.post<{ code: number; details?: { message: string; imported: number } }>( `/DC-Control/v1/topologies/${topologyId}/nodes/batch-import`, - { asset_ids }, + { asset_ids } ) // ==================== 链路管理接口 ==================== /** 获取链路列表 */ -export const fetchLinks = (topologyId: number) => - request.get(`/DC-Control/v1/topologies/${topologyId}/links`) +export const fetchLinks = (topologyId: number) => request.get(`/DC-Control/v1/topologies/${topologyId}/links`) /** 创建链路 */ -export const createLink = (topologyId: number, data: Partial) => - request.post(`/DC-Control/v1/topologies/${topologyId}/links`, data) +export const createLink = (topologyId: number, data: Partial) => request.post(`/DC-Control/v1/topologies/${topologyId}/links`, data) /** 更新链路 */ export const updateLink = (topologyId: number, linkId: number, data: Partial) => request.put(`/DC-Control/v1/topologies/${topologyId}/links/${linkId}`, data) /** 删除链路 */ -export const deleteLink = (topologyId: number, linkId: string) => - request.delete(`/DC-Control/v1/topologies/${topologyId}/links/${linkId}`) +export const deleteLink = (topologyId: number, linkId: string) => request.delete(`/DC-Control/v1/topologies/${topologyId}/links/${linkId}`) diff --git a/src/api/ops/network-device.ts b/src/api/ops/network-device.ts index 0f96090..2cff098 100644 --- a/src/api/ops/network-device.ts +++ b/src/api/ops/network-device.ts @@ -1,94 +1,92 @@ -import { request } from '@/api/request' - -export type NetworkDeviceProtocol = 'snmp' | 'ssh' | 'telnet' -export type NetworkDeviceSnmpVersion = 'v1' | 'v2c' | 'v3' -export type NetworkDeviceStatus = 'online' | 'offline' | 'error' | 'unknown' - -export interface NetworkDeviceService { - id: number - created_at: string - updated_at: string - deleted_at: string | null - service_identity: string - server_identity: string - name: string - category: string - type: string - host: string - port: number - protocol: NetworkDeviceProtocol - community: string - snmp_version: NetworkDeviceSnmpVersion - username: string - vendor: string - model: string - location: string - description: string - enabled: boolean - interval: number - extra: string - tags: string - status: NetworkDeviceStatus - status_code: number - status_message: string - response_time: number - last_check_time: string - last_online_time: string | null - last_offline_time: string | null - continuous_errors: number - uptime: number -} - -export interface NetworkDeviceListResponse { - total: number - page: number - page_size: number - data: NetworkDeviceService[] -} - -export interface NetworkDeviceQueryParams { - page?: number - size?: number - keyword?: string - enabled?: boolean -} - -export interface CreateNetworkDeviceParams { - service_identity?: string - server_identity?: string - name: string - category: string - type?: string - host: string - port?: number - protocol?: NetworkDeviceProtocol - community?: string - snmp_version?: NetworkDeviceSnmpVersion - username?: string - password?: string - vendor?: string - model?: string - location?: string - description?: string - enabled?: boolean - interval?: number - extra?: string - tags?: string -} - -export type UpdateNetworkDeviceParams = Partial - -export const fetchNetworkDeviceList = (params: NetworkDeviceQueryParams) => - request.get('/DC-Control/v1/network-device-services', { params }) - -export const fetchNetworkDeviceDetail = (id: number) => - request.get(`/DC-Control/v1/network-device-services/${id}`) - -export const createNetworkDevice = (data: CreateNetworkDeviceParams) => - request.post<{ message: string; id: number }>('/DC-Control/v1/network-device-services', data) - -export const updateNetworkDevice = (id: number, data: UpdateNetworkDeviceParams) => - request.put<{ message: string }>(`/DC-Control/v1/network-device-services/${id}`, data) - -export const deleteNetworkDevice = (id: number) => - request.delete<{ message: string }>(`/DC-Control/v1/network-device-services/${id}`) +import { request } from '@/api/request' + +export type NetworkDeviceProtocol = 'snmp' | 'ssh' | 'telnet' +export type NetworkDeviceSnmpVersion = 'v1' | 'v2c' | 'v3' +export type NetworkDeviceStatus = 'online' | 'offline' | 'error' | 'unknown' + +export interface NetworkDeviceService { + id: number + created_at: string + updated_at: string + deleted_at: string | null + service_identity: string + server_identity: string + name: string + category: string + type: string + host: string + port: number + protocol: NetworkDeviceProtocol + community: string + snmp_version: NetworkDeviceSnmpVersion + username: string + vendor: string + model: string + location: string + description: string + enabled: boolean + interval: number + extra: string + tags: string + status: NetworkDeviceStatus + status_code: number + status_message: string + response_time: number + last_check_time: string + last_online_time: string | null + last_offline_time: string | null + continuous_errors: number + uptime: number +} + +export interface NetworkDeviceListResponse { + total: number + page: number + page_size: number + data: NetworkDeviceService[] +} + +export interface NetworkDeviceQueryParams { + page?: number + size?: number + keyword?: string + enabled?: boolean +} + +export interface CreateNetworkDeviceParams { + service_identity?: string + server_identity?: string + name: string + category: string + type?: string + host: string + port?: number + protocol?: NetworkDeviceProtocol + community?: string + snmp_version?: NetworkDeviceSnmpVersion + username?: string + password?: string + vendor?: string + model?: string + location?: string + description?: string + enabled?: boolean + interval?: number + extra?: string + tags?: string +} + +export type UpdateNetworkDeviceParams = Partial + +export const fetchNetworkDeviceList = (params: NetworkDeviceQueryParams) => + request.get('/DC-Control/v1/network-device-services', { params }) + +export const fetchNetworkDeviceDetail = (id: number) => request.get(`/DC-Control/v1/network-device-services/${id}`) + +export const createNetworkDevice = (data: CreateNetworkDeviceParams) => + request.post<{ message: string; id: number }>('/DC-Control/v1/network-device-services', data) + +export const updateNetworkDevice = (id: number, data: UpdateNetworkDeviceParams) => + request.put<{ message: string }>(`/DC-Control/v1/network-device-services/${id}`, data) + +export const deleteNetworkDevice = (id: number) => request.delete<{ message: string }>(`/DC-Control/v1/network-device-services/${id}`) diff --git a/src/api/ops/network-screen.ts b/src/api/ops/network-screen.ts index 847acd6..7d72e84 100644 --- a/src/api/ops/network-screen.ts +++ b/src/api/ops/network-screen.ts @@ -1,29 +1,26 @@ -import { request } from '@/api/request' - -export const fetchNetworkScreenOverview = () => - request.get('/DC-Control/v1/network-screen/overview') - -export const fetchNetworkScreenHealthMatrix = (params?: { window?: string }) => - request.get('/DC-Control/v1/network-screen/health-matrix', { params }) - -export const fetchNetworkScreenFreshnessDistribution = () => - request.get('/DC-Control/v1/network-screen/freshness-distribution') - -export const fetchNetworkScreenProtocolDistribution = () => - request.get('/DC-Control/v1/network-screen/protocol-distribution') - -export const fetchNetworkScreenResourceOverview = (params?: { window?: string }) => - request.get('/DC-Control/v1/network-screen/resource-overview', { params }) - -export const fetchNetworkScreenAlertsStream = (params?: { limit?: number; window?: string }) => - request.get('/DC-Control/v1/network-screen/alerts-stream', { params }) - -export const fetchNetworkScreenDevices = (params?: { - page?: number - size?: number - keyword?: string - status?: string - enabled?: boolean - protocol?: string - vendor?: string -}) => request.get('/DC-Control/v1/network-screen/devices', { params }) +import { request } from '@/api/request' + +export const fetchNetworkScreenOverview = () => request.get('/DC-Control/v1/network-screen/overview') + +export const fetchNetworkScreenHealthMatrix = (params?: { window?: string }) => + request.get('/DC-Control/v1/network-screen/health-matrix', { params }) + +export const fetchNetworkScreenFreshnessDistribution = () => request.get('/DC-Control/v1/network-screen/freshness-distribution') + +export const fetchNetworkScreenProtocolDistribution = () => request.get('/DC-Control/v1/network-screen/protocol-distribution') + +export const fetchNetworkScreenResourceOverview = (params?: { window?: string }) => + request.get('/DC-Control/v1/network-screen/resource-overview', { params }) + +export const fetchNetworkScreenAlertsStream = (params?: { limit?: number; window?: string }) => + request.get('/DC-Control/v1/network-screen/alerts-stream', { params }) + +export const fetchNetworkScreenDevices = (params?: { + page?: number + size?: number + keyword?: string + status?: string + enabled?: boolean + protocol?: string + vendor?: string +}) => request.get('/DC-Control/v1/network-screen/devices', { params }) diff --git a/src/api/ops/noticeChannel.ts b/src/api/ops/noticeChannel.ts index 54860dc..1b26084 100644 --- a/src/api/ops/noticeChannel.ts +++ b/src/api/ops/noticeChannel.ts @@ -1,58 +1,53 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取通知渠道列表(分页) */ -export const fetchNoticeChannelList = (data?: { - page?: number; - page_size?: number; - keyword?: string; - type?: string; -}) => { - return request.get("/Alert/v1/channel/list", { params: data || {} }); -}; +export const fetchNoticeChannelList = (data?: { page?: number; page_size?: number; keyword?: string; type?: string }) => { + return request.get('/Alert/v1/channel/list', { params: data || {} }) +} /** 获取通知渠道详情 */ export const fetchNoticeChannelDetail = (id: number) => { - return request.get(`/Alert/v1/channel/get/${id}`); -}; + return request.get(`/Alert/v1/channel/get/${id}`) +} /** 创建通知渠道 */ export const createNoticeChannel = (data: { - name: string; - type: string; - config: string; - message_template?: string; - rate_limit?: number; - rate_limit_window?: number; - severity_filter?: string; - quiet_hours?: string; - retry_times?: number; - retry_interval?: number; - enabled?: boolean; - description?: string; + name: string + type: string + config: string + message_template?: string + rate_limit?: number + rate_limit_window?: number + severity_filter?: string + quiet_hours?: string + retry_times?: number + retry_interval?: number + enabled?: boolean + description?: string }) => { - return request.post("/Alert/v1/channel/create", data); -}; + return request.post('/Alert/v1/channel/create', data) +} /** 更新通知渠道 */ export const updateNoticeChannel = (data: { - id: number; - name?: string; - type?: string; - config?: string; - message_template?: string; - rate_limit?: number; - rate_limit_window?: number; - severity_filter?: string; - quiet_hours?: string; - retry_times?: number; - retry_interval?: number; - enabled?: boolean; - description?: string; + id: number + name?: string + type?: string + config?: string + message_template?: string + rate_limit?: number + rate_limit_window?: number + severity_filter?: string + quiet_hours?: string + retry_times?: number + retry_interval?: number + enabled?: boolean + description?: string }) => { - return request.post("/Alert/v1/channel/update", data); -}; + return request.post('/Alert/v1/channel/update', data) +} /** 删除通知渠道 */ export const deleteNoticeChannel = (id: number) => { - return request.delete(`/Alert/v1/channel/delete/${id}`); -}; + return request.delete(`/Alert/v1/channel/delete/${id}`) +} diff --git a/src/api/ops/rbac2.ts b/src/api/ops/rbac2.ts index d83bf7c..6247b1b 100644 --- a/src/api/ops/rbac2.ts +++ b/src/api/ops/rbac2.ts @@ -4,29 +4,29 @@ import { request } from '@/api/request' * 用户列表项接口 */ export interface UserItem { - id: number; - name: string; - username?: string; - email?: string; - phone?: string; - status?: string; - created_at?: string; - updated_at?: string; + id: number + name: string + username?: string + email?: string + phone?: string + status?: string + created_at?: string + updated_at?: string } /** * 用户列表响应接口 */ export interface UserListResponse { - code: number; - message: string; - data?: UserItem[] | { data?: UserItem[] }; - details?: UserItem[] | { data?: UserItem[] }; + code: number + message: string + data?: UserItem[] | { data?: UserItem[] } + details?: UserItem[] | { data?: UserItem[] } } /** * 获取用户列表 */ export const fetchUserList = async (data: any) => { - return request.post('/rbac2/v1/user/list', data, { needWorkspace: true }); -}; + return request.post('/rbac2/v1/user/list', data, { needWorkspace: true }) +} diff --git a/src/api/ops/report.ts b/src/api/ops/report.ts index 704a72d..e7b4c01 100644 --- a/src/api/ops/report.ts +++ b/src/api/ops/report.ts @@ -1,4 +1,4 @@ -import { request } from "@/api/request" +import { request } from '@/api/request' // ============ 通用响应类型 ============ @@ -74,7 +74,14 @@ export interface TrafficReportParams { report_shape: 'summary' | 'detail' | 'trend' | 'top' detail_limit?: number trend_granularity?: 'minute' | 'hour' | 'day' | 'month' - top_order_by?: 'total_bytes' | 'total_in_bytes' | 'total_out_bytes' | 'total_packets' | 'avg_latency' | 'avg_packet_loss' | 'total_connections' + top_order_by?: + | 'total_bytes' + | 'total_in_bytes' + | 'total_out_bytes' + | 'total_packets' + | 'avg_latency' + | 'avg_packet_loss' + | 'total_connections' top_limit?: number } @@ -142,7 +149,14 @@ export interface GenerateReportParams { report_type: ReportType title?: string description?: string - params: TrafficReportParams | FaultReportParams | ServerReportParams | StatisticsReportParams | HistoryReportParams | TopNReportParams | Record + params: + | TrafficReportParams + | FaultReportParams + | ServerReportParams + | StatisticsReportParams + | HistoryReportParams + | TopNReportParams + | Record } // ============ 报表生成接口(新版) ============ @@ -152,16 +166,14 @@ export const fetchReportList = (params: ReportListParams) => request.get>>('/DC-Control/v1/reports', { params }) /** 获取报表详情 */ -export const fetchReportDetail = (id: number) => - request.get>(`/DC-Control/v1/reports/${id}`) +export const fetchReportDetail = (id: number) => request.get>(`/DC-Control/v1/reports/${id}`) /** 生成报表 */ export const generateReport = (data: GenerateReportParams) => request.post>('/DC-Control/v1/reports/generate', data) /** 查看报表内容 */ -export const fetchReportContent = (id: number) => - request.get>>(`/DC-Control/v1/reports/${id}/content`) +export const fetchReportContent = (id: number) => request.get>>(`/DC-Control/v1/reports/${id}/content`) /** 导出报表 */ export const exportReport = (id: number, format: 'csv' | 'xlsx' = 'csv') => @@ -173,37 +185,29 @@ export const exportReport = (id: number, format: 'csv' | 'xlsx' = 'csv') => // ============ 监测指标类接口(旧版兼容) ============ /** 监测指标TOPN */ -export const fetchMetricsTopN = (params: any) => - request.get('/DC-Control/v1/reports/metrics/topn', { params }) +export const fetchMetricsTopN = (params: any) => request.get('/DC-Control/v1/reports/metrics/topn', { params }) /** 监测指标汇总 */ -export const fetchMetricsSummary = (params: any) => - request.get('/DC-Control/v1/reports/metrics/summary', { params }) +export const fetchMetricsSummary = (params: any) => request.get('/DC-Control/v1/reports/metrics/summary', { params }) /** 监测指标汇总导出 */ -export const exportMetricsSummary = (params: any) => - request.get('/DC-Control/v1/reports/metrics/export', { params, responseType: 'blob' }) +export const exportMetricsSummary = (params: any) => request.get('/DC-Control/v1/reports/metrics/export', { params, responseType: 'blob' }) // ============ 流量报表接口(旧版兼容) ============ /** 流量报表汇总 */ -export const fetchTrafficSummary = (params: any) => - request.get('/DC-Control/v1/reports/traffic/summary', { params }) +export const fetchTrafficSummary = (params: any) => request.get('/DC-Control/v1/reports/traffic/summary', { params }) /** 流量报表趋势 */ -export const fetchTrafficTrend = (params: any) => - request.get('/DC-Control/v1/reports/traffic/trend', { params }) +export const fetchTrafficTrend = (params: any) => request.get('/DC-Control/v1/reports/traffic/trend', { params }) /** 流量报表导出 */ -export const exportTrafficReport = (params: any) => - request.get('/DC-Control/v1/reports/traffic/export', { params, responseType: 'blob' }) +export const exportTrafficReport = (params: any) => request.get('/DC-Control/v1/reports/traffic/export', { params, responseType: 'blob' }) // ============ 状态报表接口(旧版兼容) ============ /** 服务器状态报表 */ -export const fetchServerStatus = (params: any) => - request.get('/DC-Control/v1/reports/servers/status', { params }) +export const fetchServerStatus = (params: any) => request.get('/DC-Control/v1/reports/servers/status', { params }) /** 网络设备状态报表 */ -export const fetchNetworkDeviceStatus = (params: any) => - request.get('/DC-Control/v1/reports/network-devices/status', { params }) +export const fetchNetworkDeviceStatus = (params: any) => request.get('/DC-Control/v1/reports/network-devices/status', { params }) diff --git a/src/api/ops/server.ts b/src/api/ops/server.ts index 15dc747..ed479f3 100644 --- a/src/api/ops/server.ts +++ b/src/api/ops/server.ts @@ -157,17 +157,16 @@ export interface HostNetworkTrafficPayload { /** 最新一批主机指标(用于监控大屏卡片) */ export const fetchServerMetricsSummary = (serverIdentity: string) => { - return request.get<{ code: number; details?: HostMetricsSummary; message?: string }>( - '/DC-Control/v1/servers/metrics/summary', - { params: { server_identity: serverIdentity } }, - ) + return request.get<{ code: number; details?: HostMetricsSummary; message?: string }>('/DC-Control/v1/servers/metrics/summary', { + params: { server_identity: serverIdentity }, + }) } /** 近 N 小时网络收/发速率(Mbps,相邻采样字节差分) */ export const fetchServerNetworkTraffic = (serverIdentity: string, hours = 6) => { return request.get<{ code: number; details?: HostNetworkTrafficPayload; message?: string }>( '/DC-Control/v1/servers/metrics/network-traffic', - { params: { server_identity: serverIdentity, hours } }, + { params: { server_identity: serverIdentity, hours } } ) } @@ -225,27 +224,25 @@ export interface AssetMixedSummaryPayload { export const fetchVirtualOverview = (category?: string) => { return request.get<{ code: number; details?: VirtualOverviewPayload; message?: string }>( '/DC-Control/v1/servers/assets/virtual/overview', - { params: { category } }, + { params: { category } } ) } /** 接口2:physical 近24小时 CPU/内存趋势 */ export const fetchPhysicalUsageTrend24h = () => { return request.get<{ code: number; details?: PhysicalUsageTrendPayload; message?: string }>( - '/DC-Control/v1/servers/physical/usage/trend-24h', + '/DC-Control/v1/servers/physical/usage/trend-24h' ) } /** 接口3:physical/virtual 最新资源总量 */ export const fetchLatestResourceSummary = () => { return request.get<{ code: number; details?: LatestResourceSummaryPayload; message?: string }>( - '/DC-Control/v1/servers/resources/latest/summary', + '/DC-Control/v1/servers/resources/latest/summary' ) } /** 接口4:按资产汇总 virtual 数量与 physical 最新指标 */ export const fetchAssetMixedSummary = () => { - return request.get<{ code: number; details?: AssetMixedSummaryPayload; message?: string }>( - '/DC-Control/v1/servers/assets/mixed/summary', - ) + return request.get<{ code: number; details?: AssetMixedSummaryPayload; message?: string }>('/DC-Control/v1/servers/assets/mixed/summary') } diff --git a/src/api/ops/storage.ts b/src/api/ops/storage.ts index cf68088..2754816 100644 --- a/src/api/ops/storage.ts +++ b/src/api/ops/storage.ts @@ -309,15 +309,12 @@ export interface StorageMetricsRawRow { export const fetchStorageMetricsAggregate = (params: StorageMetricsAggregateParams) => { return request.get<{ code: number; details?: StorageMetricsAggregateDetails; message?: string }>( '/DC-Control/v1/services/metrics/storage/aggregate', - { params: { ...params, category: 'storage' } }, + { params: { ...params, category: 'storage' } } ) } /** 存储指标时序原始点(JWT);路径为 service_identity,需 URL 编码 */ -export const fetchStorageMetricsTimeseries = ( - serviceIdentity: string, - params?: StorageMetricsTimeseriesQuery, -) => { +export const fetchStorageMetricsTimeseries = (serviceIdentity: string, params?: StorageMetricsTimeseriesQuery) => { const path = encodeURIComponent(serviceIdentity) return request.get<{ code: number diff --git a/src/api/ops/supplier.ts b/src/api/ops/supplier.ts index 2b8b92b..e3e953c 100644 --- a/src/api/ops/supplier.ts +++ b/src/api/ops/supplier.ts @@ -1,41 +1,35 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取供应商列表(分页) */ -export const fetchSupplierList = (data?: { - page?: number; - page_size?: number; - keyword?: string; - status?: string; - enabled?: boolean; -}) => { - return request.post("/Assets/v1/supplier/list", data || {}); -}; +export const fetchSupplierList = (data?: { page?: number; page_size?: number; keyword?: string; status?: string; enabled?: boolean }) => { + return request.post('/Assets/v1/supplier/list', data || {}) +} /** 获取供应商详情 */ export const fetchSupplierDetail = (id: number) => { - return request.get(`/Assets/v1/supplier/detail/${id}`); -}; + return request.get(`/Assets/v1/supplier/detail/${id}`) +} /** 创建供应商 */ export const createSupplier = (data: any) => { - return request.post("/Assets/v1/supplier/create", data); -}; + return request.post('/Assets/v1/supplier/create', data) +} /** 更新供应商 */ export const updateSupplier = (data: any) => { - return request.put("/Assets/v1/supplier/update", data); -}; + return request.put('/Assets/v1/supplier/update', data) +} /** 删除供应商 */ export const deleteSupplier = (id: number) => { - return request.delete(`/Assets/v1/supplier/delete/${id}`); -}; + return request.delete(`/Assets/v1/supplier/delete/${id}`) +} /** 获取所有供应商(用于下拉选择) */ export const fetchAllSuppliers = (keyword?: string, status?: string, pageSize?: number) => { - const params: any = {}; - if (keyword) params.keyword = keyword; - if (status) params.status = status; - if (pageSize) params.page_size = pageSize; - return request.get("/Assets/v1/supplier/all", { params }); -}; \ No newline at end of file + const params: any = {} + if (keyword) params.keyword = keyword + if (status) params.status = status + if (pageSize) params.page_size = pageSize + return request.get('/Assets/v1/supplier/all', { params }) +} diff --git a/src/api/ops/suppression.ts b/src/api/ops/suppression.ts index a7c489e..afc348e 100644 --- a/src/api/ops/suppression.ts +++ b/src/api/ops/suppression.ts @@ -133,4 +133,4 @@ export const updateSuppression = (data: SuppressionUpdateParams) => { /** 删除抑制规则 */ export const deleteSuppression = (id: number) => { return request.delete(`/Alert/v1/suppression/delete/${id}`) -} \ No newline at end of file +} diff --git a/src/api/ops/template.ts b/src/api/ops/template.ts index 4ea2a99..109fede 100644 --- a/src/api/ops/template.ts +++ b/src/api/ops/template.ts @@ -1,31 +1,27 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取工单模板列表 */ -export const fetchTemplates = (data?: { - page?: number, - page_size?: number, - status?: string -}) => { - return request.get("/Feedback/v1/templates", data ? { params: data } : undefined); -}; +export const fetchTemplates = (data?: { page?: number; page_size?: number; status?: string }) => { + return request.get('/Feedback/v1/templates', data ? { params: data } : undefined) +} /** 创建工单模板 */ -export const createTemplate = (data: any) => request.post("/Feedback/v1/templates", data); +export const createTemplate = (data: any) => request.post('/Feedback/v1/templates', data) /** 更新工单模板 */ -export const updateTemplate = (id: number, data: any) => request.put(`/Feedback/v1/templates/${id}`, data); +export const updateTemplate = (id: number, data: any) => request.put(`/Feedback/v1/templates/${id}`, data) /** 获取工单模板详情 */ -export const fetchTemplateDetail = (id: number) => request.get(`/Feedback/v1/templates/${id}`); +export const fetchTemplateDetail = (id: number) => request.get(`/Feedback/v1/templates/${id}`) /** 删除工单模板 */ -export const deleteTemplate = (id: number) => request.delete(`/Feedback/v1/templates/${id}`); +export const deleteTemplate = (id: number) => request.delete(`/Feedback/v1/templates/${id}`) /** 启用工单模板 */ -export const activateTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/activate`); +export const activateTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/activate`) /** 禁用工单模板 */ -export const deactivateTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/deactivate`); +export const deactivateTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/deactivate`) /** 按模板创建工单 */ -export const createTicketByTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/create-ticket`); +export const createTicketByTemplate = (id: number) => request.post(`/Feedback/v1/templates/${id}/create-ticket`) diff --git a/src/api/ops/traffic-runtime.ts b/src/api/ops/traffic-runtime.ts index 284fb5e..fb93683 100644 --- a/src/api/ops/traffic-runtime.ts +++ b/src/api/ops/traffic-runtime.ts @@ -1,21 +1,15 @@ -import { request } from '@/api/request' - -export interface TrafficRuntimeStatus { - status?: 'running' | 'stopped' | string - message?: string -} - -export const fetchTrafficRuntimeStatus = () => - request.get<{ code: number; details?: TrafficRuntimeStatus; message?: string }>( - '/dc-network/v1/api/traffic/status', - ) - -export const startTrafficRuntime = () => - request.post<{ code: number; details?: TrafficRuntimeStatus; message?: string }>( - '/dc-network/v1/api/traffic/start', - ) - -export const stopTrafficRuntime = () => - request.post<{ code: number; details?: TrafficRuntimeStatus; message?: string }>( - '/dc-network/v1/api/traffic/stop', - ) +import { request } from '@/api/request' + +export interface TrafficRuntimeStatus { + status?: 'running' | 'stopped' | string + message?: string +} + +export const fetchTrafficRuntimeStatus = () => + request.get<{ code: number; details?: TrafficRuntimeStatus; message?: string }>('/dc-network/v1/api/traffic/status') + +export const startTrafficRuntime = () => + request.post<{ code: number; details?: TrafficRuntimeStatus; message?: string }>('/dc-network/v1/api/traffic/start') + +export const stopTrafficRuntime = () => + request.post<{ code: number; details?: TrafficRuntimeStatus; message?: string }>('/dc-network/v1/api/traffic/stop') diff --git a/src/api/ops/traffic.ts b/src/api/ops/traffic.ts index 6a241ad..e38f806 100644 --- a/src/api/ops/traffic.ts +++ b/src/api/ops/traffic.ts @@ -1,120 +1,108 @@ -import { request } from '@/api/request' - -export interface TrafficListItem { - id: number - topology_id: number - link_id: number - node_id: string - time_granularity: string - time_point: string - in_bytes: number - out_bytes: number - total_bytes: number - in_packets: number - out_packets: number - total_packets: number - connections: number - avg_latency: number - packet_loss: number - bandwidth: number - bandwidth_peak: number - protocol_stats?: string - top_sources?: string -} - -export interface TrafficListResponse { - total: number - page: number - page_size: number - data: TrafficListItem[] -} - -export interface TrafficSummary { - total_in_bytes: number - total_out_bytes: number - total_bytes: number - avg_bandwidth: number - peak_bandwidth: number - total_connections: number - avg_packet_loss: number -} - -export interface TrafficTrendPoint { - time: string - in_bytes: number - out_bytes: number - total_bytes: number -} - -export interface TrafficTopItem { - node_id: string - total_in_bytes: number - total_out_bytes: number - total_bytes: number - total_packets: number -} - -export interface TrafficDashboardResponse { - direction: { - inbound_percent: number - outbound_percent: number - } - protocols: Array<{ - name: string - percent: number - }> - top_applications: Array<{ - name: string - in_bytes: number - out_bytes: number - total_bytes: number - share_percent: number - sessions: number - port: string - }> - top_sources: Array<{ - ip: string - name: string - total_bytes: number - total_packets: number - }> - bandwidth: Array<{ - name: string - percent: number - }> -} - -export const fetchTrafficList = (params?: Record) => - request.get<{ code: number; details?: TrafficListResponse; message?: string }>('/DC-Control/v1/traffic', { - params, - }) - -export const fetchTrafficSummary = (params?: Record) => - request.get<{ code: number; details?: TrafficSummary; message?: string }>( - '/DC-Control/v1/traffic/summary', - { params }, - ) - -export const fetchTrafficTrend = (params?: Record) => - request.get<{ code: number; details?: { data?: TrafficTrendPoint[] }; message?: string }>( - '/DC-Control/v1/traffic/trend', - { params }, - ) - -export const fetchTopTraffic = (params?: Record) => - request.get<{ code: number; details?: { data?: TrafficTopItem[] }; message?: string }>( - '/DC-Control/v1/traffic/top', - { params }, - ) - -export const fetchRealtimeTraffic = (params?: Record) => - request.get<{ code: number; details?: { bandwidth?: number; connections?: number }; message?: string }>( - '/DC-Control/v1/traffic/realtime', - { params }, - ) - -export const fetchTrafficDashboard = (params?: Record) => - request.get<{ code: number; details?: TrafficDashboardResponse; message?: string }>( - '/DC-Control/v1/traffic/dashboard', - { params }, - ) +import { request } from '@/api/request' + +export interface TrafficListItem { + id: number + topology_id: number + link_id: number + node_id: string + time_granularity: string + time_point: string + in_bytes: number + out_bytes: number + total_bytes: number + in_packets: number + out_packets: number + total_packets: number + connections: number + avg_latency: number + packet_loss: number + bandwidth: number + bandwidth_peak: number + protocol_stats?: string + top_sources?: string +} + +export interface TrafficListResponse { + total: number + page: number + page_size: number + data: TrafficListItem[] +} + +export interface TrafficSummary { + total_in_bytes: number + total_out_bytes: number + total_bytes: number + avg_bandwidth: number + peak_bandwidth: number + total_connections: number + avg_packet_loss: number +} + +export interface TrafficTrendPoint { + time: string + in_bytes: number + out_bytes: number + total_bytes: number +} + +export interface TrafficTopItem { + node_id: string + total_in_bytes: number + total_out_bytes: number + total_bytes: number + total_packets: number +} + +export interface TrafficDashboardResponse { + direction: { + inbound_percent: number + outbound_percent: number + } + protocols: Array<{ + name: string + percent: number + }> + top_applications: Array<{ + name: string + in_bytes: number + out_bytes: number + total_bytes: number + share_percent: number + sessions: number + port: string + }> + top_sources: Array<{ + ip: string + name: string + total_bytes: number + total_packets: number + }> + bandwidth: Array<{ + name: string + percent: number + }> +} + +export const fetchTrafficList = (params?: Record) => + request.get<{ code: number; details?: TrafficListResponse; message?: string }>('/DC-Control/v1/traffic', { + params, + }) + +export const fetchTrafficSummary = (params?: Record) => + request.get<{ code: number; details?: TrafficSummary; message?: string }>('/DC-Control/v1/traffic/summary', { params }) + +export const fetchTrafficTrend = (params?: Record) => + request.get<{ code: number; details?: { data?: TrafficTrendPoint[] }; message?: string }>('/DC-Control/v1/traffic/trend', { params }) + +export const fetchTopTraffic = (params?: Record) => + request.get<{ code: number; details?: { data?: TrafficTopItem[] }; message?: string }>('/DC-Control/v1/traffic/top', { params }) + +export const fetchRealtimeTraffic = (params?: Record) => + request.get<{ code: number; details?: { bandwidth?: number; connections?: number }; message?: string }>( + '/DC-Control/v1/traffic/realtime', + { params } + ) + +export const fetchTrafficDashboard = (params?: Record) => + request.get<{ code: number; details?: TrafficDashboardResponse; message?: string }>('/DC-Control/v1/traffic/dashboard', { params }) diff --git a/src/api/ops/unit.ts b/src/api/ops/unit.ts index 137bf26..ddc8494 100644 --- a/src/api/ops/unit.ts +++ b/src/api/ops/unit.ts @@ -1,64 +1,51 @@ -import { request } from "@/api/request"; +import { request } from '@/api/request' /** 获取机柜U位状态 */ export const fetchRackUnits = (rackId: number) => { - return request.get(`/Assets/v1/unit/rack/${rackId}`); -}; + return request.get(`/Assets/v1/unit/rack/${rackId}`) +} /** 获取U位列表(别名) */ -export const fetchUnitList = fetchRackUnits; +export const fetchUnitList = fetchRackUnits /** 分配U位 */ export const allocateUnit = (data: { - rack_id: number; - start_unit: number; - occupied_units: number; - asset_id?: number; - asset_code?: string; - asset_name: string; - asset_type: string; - power_consumption?: number; - description?: string; + rack_id: number + start_unit: number + occupied_units: number + asset_id?: number + asset_code?: string + asset_name: string + asset_type: string + power_consumption?: number + description?: string }) => { - return request.post("/Assets/v1/unit/allocate", data); -}; + return request.post('/Assets/v1/unit/allocate', data) +} /** 释放U位 */ -export const releaseUnit = (data: { - rack_id: number; - start_unit: number; - end_unit: number; -}) => { - return request.post("/Assets/v1/unit/release", data); -}; +export const releaseUnit = (data: { rack_id: number; start_unit: number; end_unit: number }) => { + return request.post('/Assets/v1/unit/release', data) +} /** 预留U位 */ export const reserveUnit = (data: { - rack_id: number; - start_unit: number; - occupied_units: number; - reserved_for: string; - reserved_until: string; - description?: string; + rack_id: number + start_unit: number + occupied_units: number + reserved_for: string + reserved_until: string + description?: string }) => { - return request.post("/Assets/v1/unit/reserve", data); -}; + return request.post('/Assets/v1/unit/reserve', data) +} /** 取消预留 */ -export const cancelReservation = (data: { - rack_id: number; - start_unit: number; - end_unit: number; -}) => { - return request.post("/Assets/v1/unit/cancel_reservation", data); -}; +export const cancelReservation = (data: { rack_id: number; start_unit: number; end_unit: number }) => { + return request.post('/Assets/v1/unit/cancel_reservation', data) +} /** 更新U位状态 */ -export const updateUnitStatus = (data: { - rack_id: number; - start_unit: number; - end_unit: number; - status: "available" | "disabled"; -}) => { - return request.put("/Assets/v1/unit/status", data); -}; +export const updateUnitStatus = (data: { rack_id: number; start_unit: number; end_unit: number; status: 'available' | 'disabled' }) => { + return request.put('/Assets/v1/unit/status', data) +} diff --git a/src/api/request.ts b/src/api/request.ts index 9acefc5..179537b 100644 --- a/src/api/request.ts +++ b/src/api/request.ts @@ -1,100 +1,95 @@ -import axios, { - AxiosInstance, - AxiosRequestConfig, - AxiosResponse, - InternalAxiosRequestConfig - } from "axios"; - import { v4 as uuidv4 } from 'uuid'; - import SafeStorage, { AppStorageKey } from "@/utils/safeStorage"; +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios' +import { v4 as uuidv4 } from 'uuid' +import SafeStorage, { AppStorageKey } from '@/utils/safeStorage' - console.log('import.meta.env.VITE_API_BASE_UR:', import.meta.env.VITE_API_BASE_URL) - // 1. 创建axios实例 - const instance: AxiosInstance = axios.create({ - baseURL: import.meta.env.VITE_API_BASE_URL, - timeout: 10000, - headers: { - "Content-Type": "application/json", - "Workspace": import.meta.env.VITE_APP_WORKSPACE, - "Request-Id": uuidv4(), - }, - }); - - // 2. 请求拦截器 - instance.interceptors.request.use( - (config: InternalAxiosRequestConfig) => { - // 添加认证token(示例) - const token = SafeStorage.get(AppStorageKey.TOKEN); - if (token) { - config.headers.Authorization = token as string; - } - return config; - }, - (error) => Promise.reject(error) - ); - - // 3. 响应拦截器 - instance.interceptors.response.use( - (response: AxiosResponse) => { - // 统一处理响应数据格式[2](@ref) - if (response.data.status === 401) { - // token过期处理 - SafeStorage.clearAppStorage(); - window.location.href = "/auth/login"; - } - return response.data; // 直接返回核心数据[1](@ref) - }, - (error) => { - if (error?.response?.data?.error === 'Token has expired') { - // token过期处理 - SafeStorage.clearAppStorage(); - window.location.href = "/auth/login"; - } - // 统一错误处理 - console.error("API Error:", error.message); - return Promise.reject(error); +console.log('import.meta.env.VITE_API_BASE_UR:', import.meta.env.VITE_API_BASE_URL) +// 1. 创建axios实例 +const instance: AxiosInstance = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL, + timeout: 10000, + headers: { + 'Content-Type': 'application/json', + Workspace: import.meta.env.VITE_APP_WORKSPACE, + 'Request-Id': uuidv4(), + }, +}) + +// 2. 请求拦截器 +instance.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + // 添加认证token(示例) + const token = SafeStorage.get(AppStorageKey.TOKEN) + if (token) { + config.headers.Authorization = token as string } - ); - - // 4. 封装核心请求方法 - interface RequestConfig extends AxiosRequestConfig { - data?: unknown; - needWorkspace?: boolean; + return config + }, + (error) => Promise.reject(error) +) + +// 3. 响应拦截器 +instance.interceptors.response.use( + (response: AxiosResponse) => { + // 统一处理响应数据格式[2](@ref) + if (response.data.status === 401) { + // token过期处理 + SafeStorage.clearAppStorage() + window.location.href = '/auth/login' + } + return response.data // 直接返回核心数据[1](@ref) + }, + (error) => { + if (error?.response?.data?.error === 'Token has expired') { + // token过期处理 + SafeStorage.clearAppStorage() + window.location.href = '/auth/login' + } + // 统一错误处理 + console.error('API Error:', error.message) + return Promise.reject(error) } - +) + +// 4. 封装核心请求方法 +interface RequestConfig extends AxiosRequestConfig { + data?: unknown + needWorkspace?: boolean +} + export const request = { get(url: string, config?: RequestConfig): Promise { - return instance.get(url, config); + return instance.get(url, config) }, post(url: string, data = {}, config?: RequestConfig): Promise { let params: any if (config?.needWorkspace) { - params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data }; + params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data } } else { - params = data; + params = data } - return instance.post(url, params, config); + return instance.post(url, params, config) }, put(url: string, data = {}, config?: RequestConfig): Promise { let params: any if (config?.needWorkspace) { - params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data }; + params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data } } else { - params = data; + params = data } - return instance.put(url, params, config); + return instance.put(url, params, config) }, delete(url: string, config?: RequestConfig): Promise { - return instance.delete(url, config); + return instance.delete(url, config) }, patch(url: string, data = {}, config?: RequestConfig): Promise { let params: any if (config?.needWorkspace) { - params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data }; + params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data } } else { - params = data; + params = data } - return instance.patch(url, params, config); - } -}; - -export default instance; \ No newline at end of file + return instance.patch(url, params, config) + }, +} + +export default instance diff --git a/src/components/data-table/index.vue b/src/components/data-table/index.vue index 1b312ae..d5e5e6b 100644 --- a/src/components/data-table/index.vue +++ b/src/components/data-table/index.vue @@ -187,7 +187,7 @@ const densityList = [ // 计算需要插槽的列(只在 columns 变化时重新计算) const slotColumns = computed(() => { - return props.columns.filter(col => col.slotName) + return props.columns.filter((col) => col.slotName) }) const onPageChange = (current: number) => { @@ -259,7 +259,7 @@ const popupVisibleChange = (val: boolean) => { // 初始化列配置 const initColumns = () => { - const cols = props.columns.map(item => ({ + const cols = props.columns.map((item) => ({ ...item, checked: true, })) diff --git a/src/components/menu/index.vue b/src/components/menu/index.vue index 64bc4fe..b22080d 100644 --- a/src/components/menu/index.vue +++ b/src/components/menu/index.vue @@ -6,13 +6,7 @@ import { listenerRouteChange } from '@/utils/route-listener' import { compile, computed, defineComponent, h, ref } from 'vue' import { useI18n } from 'vue-i18n' import type { RouteMeta } from 'vue-router' -import { - isNavigationFailure, - NavigationFailureType, - RouteRecordRaw, - useRoute, - useRouter, -} from 'vue-router' +import { isNavigationFailure, NavigationFailureType, RouteRecordRaw, useRoute, useRouter } from 'vue-router' import useMenuTree from './use-menu-tree' import { COMMON_ICONS } from '@/views/ops/pages/system-settings/menu-management/menuIcons' @@ -107,7 +101,7 @@ export default defineComponent({ // 获取图标组件 - 支持 Arco Design 图标和 @tabler/icons-vue const getIconComponent = (iconName: string) => { if (!iconName) return null - + // 检查是否是 Tabler 图标(不以 'icon-' 开头) if (!iconName.startsWith('icon-')) { const IconComponent = COMMON_ICONS[iconName] @@ -115,7 +109,7 @@ export default defineComponent({ return () => h(IconComponent, { size: 18 }) } } - + // 回退到 Arco Design 图标 return () => h(compile(`<${iconName}/>`)) } diff --git a/src/components/navbar/index.vue b/src/components/navbar/index.vue index 05cc577..4885b7b 100644 --- a/src/components/navbar/index.vue +++ b/src/components/navbar/index.vue @@ -201,7 +201,6 @@ const setDropDownVisible = () => { triggerBtn.value.dispatchEvent(event) } const toggleDrawerMenu = inject('toggleDrawerMenu') as () => void - + diff --git a/src/components/search-table/index.vue b/src/components/search-table/index.vue index 0161ad5..fd5204b 100644 --- a/src/components/search-table/index.vue +++ b/src/components/search-table/index.vue @@ -186,10 +186,9 @@ const emit = defineEmits<{ (e: 'column-change', columns: TableColumnData[]): void }>() - // 计算需要插槽的列(动态插槽透传) const slotColumns = computed(() => { - return props.columns.filter(col => col.slotName) + return props.columns.filter((col) => col.slotName) }) const handleFormModelUpdate = (value: Record) => { diff --git a/src/env.d.ts b/src/env.d.ts index 6d86568..b07a059 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1,4 +1,3 @@ - declare module '*.vue' { import type { DefineComponent } from 'vue' diff --git a/src/layout/default-layout.vue b/src/layout/default-layout.vue index 3ab2ef7..66f54c6 100644 --- a/src/layout/default-layout.vue +++ b/src/layout/default-layout.vue @@ -44,11 +44,7 @@
- +
@@ -96,7 +92,7 @@ const iframeUrl = ref('') const updateShowIframe = () => { const isWebPage = route?.meta?.is_web_page === true const webUrl = route?.meta?.web_url - + if (isWebPage && webUrl && typeof webUrl === 'string') { showIframe.value = true // Add token as query parameter to the URL diff --git a/src/router/guard/permission.ts b/src/router/guard/permission.ts index 2cfd4df..d9d4fb6 100644 --- a/src/router/guard/permission.ts +++ b/src/router/guard/permission.ts @@ -17,7 +17,7 @@ export default function setupPermissionGuard(router: Router) { const userStore = useUserStore() const Permission = usePermission() const permissionsAllow = Permission.accessRouter(to) - + if (appStore.menuFromServer) { // 针对来自服务端的菜单配置进行处理 // Handle routing configuration from the server diff --git a/src/router/menu-data.ts b/src/router/menu-data.ts index a69c164..05007d2 100644 --- a/src/router/menu-data.ts +++ b/src/router/menu-data.ts @@ -46,22 +46,22 @@ export function loadViewComponent(componentPath: string) { } // 构建完整的文件路径 const filePath = `/src/views/${normalizedPath}.vue` - + // 从预加载的模块中查找 const modulePath = Object.keys(viewModules).find((path) => path.endsWith(filePath) || path === filePath) if (modulePath && viewModules[modulePath]) { return viewModules[modulePath] } - + // 如果找不到,尝试不带 /index 的路径 const directFilePath = `/src/views/${componentPath}.vue` const directModulePath = Object.keys(viewModules).find((path) => path.endsWith(directFilePath) || path === directFilePath) - + if (directModulePath && viewModules[directModulePath]) { return viewModules[directModulePath] } - + // 如果都找不到,返回一个默认组件或抛出错误 console.warn(`View component not found: ${filePath} or ${directFilePath}`) return () => import('@/views/redirect/index.vue') @@ -78,7 +78,7 @@ export function transformMenuToRoutes(menuItems: ServerMenuItem[]): AppRouteReco for (const item of menuItems) { // 根据 is_full 决定如何设置 component let routeComponent: AppRouteRecordRaw['component'] - + if (item.is_full) { // 独立页面:直接加载视图组件,不使用布局 if (item.component) { @@ -158,7 +158,7 @@ function toRelativePath(path: string): string { */ function extractRelativePath(childPath: string, parentPath: string): string { if (!childPath) return '' - + // 如果子路径以父路径开头,提取相对部分 if (parentPath && childPath.startsWith(parentPath)) { let relativePath = childPath.slice(parentPath.length) @@ -168,7 +168,7 @@ function extractRelativePath(childPath: string, parentPath: string): string { } return relativePath } - + // 否则转换为相对路径 return toRelativePath(childPath) } @@ -193,7 +193,7 @@ function isLicenseCenterMenuPath(fullPath: string): boolean { } function transformChildRoutes( - children: ServerMenuItem[], + children: ServerMenuItem[], parentComponent?: string, parentPath?: string, parentIsFull?: boolean @@ -203,15 +203,12 @@ function transformChildRoutes( // 已配置 component 的菜单绝不覆盖;仅对许可页做路径/code 兜底,避免 includes 误匹配 let componentPath = child.component || parentComponent - if ( - !child.component && - (isLicenseCenterMenuPath(childFullPath) || child.code === 'LicenseCenter') - ) { + if (!child.component && (isLicenseCenterMenuPath(childFullPath) || child.code === 'LicenseCenter')) { componentPath = LICENSE_CENTER_VIEW } const relativePath = extractRelativePath(childFullPath, parentPath || '') - + const route: AppRouteRecordRaw = { path: relativePath, name: child.title || child.name || `menu_${child.id}`, @@ -222,15 +219,13 @@ function transformChildRoutes( roles: child.roles, hideInMenu: child.hideInMenu || child.hide_menu, }, - component: componentPath - ? loadViewComponent(componentPath) - : () => import('@/views/redirect/index.vue'), + component: componentPath ? loadViewComponent(componentPath) : () => import('@/views/redirect/index.vue'), } // 递归处理子菜单的子菜单 if (child.children && child.children.length > 0) { route.children = transformChildRoutes( - child.children, + child.children, child.component || parentComponent, childFullPath, // 传递当前子菜单的完整路径作为下一层的父路径 child.is_full || parentIsFull // 传递 is_full 标志 @@ -242,37 +237,38 @@ function transformChildRoutes( } // 本地菜单数据 - 接口未准备好时使用 -export const localMenuData: AppRouteRecordRaw[] = [{ - path: '/dashboard', - name: 'dashboard', - component: DEFAULT_LAYOUT, - meta: { - locale: '仪表盘', - requiresAuth: true, - icon: 'icon-dashboard', - order: 0, +export const localMenuData: AppRouteRecordRaw[] = [ + { + path: '/dashboard', + name: 'dashboard', + component: DEFAULT_LAYOUT, + meta: { + locale: '仪表盘', + requiresAuth: true, + icon: 'icon-dashboard', + order: 0, + }, + children: [ + { + path: 'workplace', + name: 'Workplace', + component: () => import('@/views/dashboard/workplace/index.vue'), + meta: { + locale: 'menu.dashboard.workplace', + requiresAuth: true, + }, + }, + { + path: 'monitor', + name: 'Monitor', + component: () => import('@/views/dashboard/monitor/index.vue'), + meta: { + locale: 'menu.dashboard.monitor', + requiresAuth: true, + }, + }, + ], }, - children: [ - { - path: 'workplace', - name: 'Workplace', - component: () => import('@/views/dashboard/workplace/index.vue'), - meta: { - locale: 'menu.dashboard.workplace', - requiresAuth: true, - }, - }, - { - path: 'monitor', - name: 'Monitor', - component: () => import('@/views/dashboard/monitor/index.vue'), - meta: { - locale: 'menu.dashboard.monitor', - requiresAuth: true, - }, - }, - ], -}, { path: '/overview', name: 'Overview', diff --git a/src/store/modules/app/index.ts b/src/store/modules/app/index.ts index 3ec1bf4..769ad75 100644 --- a/src/store/modules/app/index.ts +++ b/src/store/modules/app/index.ts @@ -6,11 +6,10 @@ import defaultSettings from '@/config/settings.json' import { userPmn } from '@/api/module/user' import { localMenuData, transformMenuToRoutes, type ServerMenuItem } from '@/router/menu-data' import { buildTree } from '@/utils/tree' -import SafeStorage, { AppStorageKey } from "@/utils/safeStorage"; +import SafeStorage, { AppStorageKey } from '@/utils/safeStorage' import router from '@/router' import { AppState } from './types' - const useAppStore = defineStore('app', { state: (): AppState => ({ ...defaultSettings }), @@ -59,15 +58,15 @@ const useAppStore = defineStore('app', { console.log('res', res) if (res.code === 0 && res?.details?.length) { // 使用 buildTree 将扁平数据构建为树结构 - const treeResult = buildTree(res.details[0].permissions as ServerMenuItem[], { - orderKey: 'order' + const treeResult = buildTree(res.details[0].permissions as ServerMenuItem[], { + orderKey: 'order', }) console.log('buildTree', treeResult) - + // 使用 transformMenuToRoutes 将树结构转换为路由配置 const routes = transformMenuToRoutes(treeResult.rootItems as ServerMenuItem[]) console.log('transformMenuToRoutes', routes) - + // 动态注册路由 routes.forEach((route) => { // 打印路由结构以便调试 @@ -77,7 +76,7 @@ const useAppStore = defineStore('app', { // }, 2)) router.addRoute(route as any) }) - + this.serverMenu = routes as unknown as RouteRecordNormalized[] } else { // 如果接口返回数据为空,使用本地数据 @@ -86,7 +85,6 @@ const useAppStore = defineStore('app', { // }) // this.serverMenu = localMenuData as unknown as RouteRecordNormalized[] } - } catch (error) { // 接口失败时使用本地数据 console.error('fetchServerMenuConfig error:', error) diff --git a/src/store/modules/user/index.ts b/src/store/modules/user/index.ts index 4b5c4d7..6ae87b4 100644 --- a/src/store/modules/user/index.ts +++ b/src/store/modules/user/index.ts @@ -4,7 +4,7 @@ import { request } from '@/api/request' import { clearToken, setToken } from '@/utils/auth' import { removeRouteListener } from '@/utils/route-listener' import { defineStore } from 'pinia' -import SafeStorage, { AppStorageKey } from "@/utils/safeStorage"; +import SafeStorage, { AppStorageKey } from '@/utils/safeStorage' import useAppStore from '../app' import { UserState } from './types' @@ -26,7 +26,7 @@ const useUserStore = defineStore('user', { accountId: undefined, certification: undefined, role: '', - userInfo: SafeStorage.get(AppStorageKey.USER_INFO) + userInfo: SafeStorage.get(AppStorageKey.USER_INFO), }), getters: { @@ -62,7 +62,7 @@ const useUserStore = defineStore('user', { // Login async login(loginForm: LoginData) { try { - const { code, details } = await login(loginForm as any) as any + const { code, details } = (await login(loginForm as any)) as any if (code === 0 && details?.token) { setToken(details.token) SafeStorage.set(AppStorageKey.USER_INFO, details) diff --git a/src/types/env.d.ts b/src/types/env.d.ts index 8bee776..096b117 100644 --- a/src/types/env.d.ts +++ b/src/types/env.d.ts @@ -9,4 +9,3 @@ interface ImportMetaEnv { interface ImportMeta { readonly env: ImportMetaEnv } - diff --git a/src/types/shims.d.ts b/src/types/shims.d.ts index 226106d..100f4fc 100644 --- a/src/types/shims.d.ts +++ b/src/types/shims.d.ts @@ -6,4 +6,3 @@ declare module '*.png' { const src: string export default src } - diff --git a/src/types/vue-i18n.d.ts b/src/types/vue-i18n.d.ts index 4dd8bce..1124118 100644 --- a/src/types/vue-i18n.d.ts +++ b/src/types/vue-i18n.d.ts @@ -6,4 +6,4 @@ declare module '@vue/runtime-core' { } } -export {} \ No newline at end of file +export {} diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 94eb52f..76a521c 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -1,4 +1,4 @@ -import SafeStorage, { AppStorageKey } from "@/utils/safeStorage"; +import SafeStorage, { AppStorageKey } from '@/utils/safeStorage' const isLogin = () => !!SafeStorage.get(AppStorageKey.TOKEN) diff --git a/src/utils/safeStorage.ts b/src/utils/safeStorage.ts index 54843f1..79c8726 100644 --- a/src/utils/safeStorage.ts +++ b/src/utils/safeStorage.ts @@ -1,158 +1,158 @@ /** * 类型安全的 localStorage 封装,具备严格的 key 管理 */ - + // 1. 定义应用程序使用的存储键名(防止使用任意字符串作为 key) export enum AppStorageKey { - PASSPORT_DATA = 'passportData', - PASSPORT_TOKEN = 'passportToken', - MENU_DATA = 'menuData', // 全部的菜单数据 - SLIDER_MENU = 'sliderMenu', // 侧边栏菜单数据 - USER_INFO = 'userInfo', - TOKEN = 'token', - MODE = 'mode', // 日间夜间模式 - } - - // 2. 存储值类型定义(用于内部处理) - type StorageValue = { - __data: T; // 实际存储的数据 - __expiry?: number; // 可选的过期时间戳 - }; - - // 3. 主存储类 - class SafeStorage { - /** - * 存储数据(自动处理 JSON 序列化) - * @param key 预定义的存储键 - * @param value 要存储的值(支持所有 JSON 安全类型) - * @param ttl 可选的时间有效期(毫秒) - */ - static set(key: AppStorageKey, value: T, ttl?: number): void { - if (typeof window === "undefined") return; - - try { - // 创建存储对象(包含数据值和过期时间) - const storageValue: StorageValue = { - __data: value, - }; - - // 设置过期时间(如果提供) - if (ttl !== undefined && ttl > 0) { - storageValue.__expiry = Date.now() + ttl; - } - - // 自动序列化并存储 - localStorage.setItem(key, JSON.stringify(storageValue)); - } catch (error) { - console.error(`[存储] 保存失败 (key: ${key})`, error); - this.handleStorageError(key, error); + PASSPORT_DATA = 'passportData', + PASSPORT_TOKEN = 'passportToken', + MENU_DATA = 'menuData', // 全部的菜单数据 + SLIDER_MENU = 'sliderMenu', // 侧边栏菜单数据 + USER_INFO = 'userInfo', + TOKEN = 'token', + MODE = 'mode', // 日间夜间模式 +} + +// 2. 存储值类型定义(用于内部处理) +type StorageValue = { + __data: T // 实际存储的数据 + __expiry?: number // 可选的过期时间戳 +} + +// 3. 主存储类 +class SafeStorage { + /** + * 存储数据(自动处理 JSON 序列化) + * @param key 预定义的存储键 + * @param value 要存储的值(支持所有 JSON 安全类型) + * @param ttl 可选的时间有效期(毫秒) + */ + static set(key: AppStorageKey, value: T, ttl?: number): void { + if (typeof window === 'undefined') return + + try { + // 创建存储对象(包含数据值和过期时间) + const storageValue: StorageValue = { + __data: value, } - } - - /** - * 获取数据(自动反序列化并检查过期) - * @param key 预定义的存储键 - * @returns 存储的值或 null(如果不存在或过期) - */ - static get(key: AppStorageKey): T | null { - if (typeof window === "undefined") return null; - - try { - // 获取原始数据 - const rawData = localStorage.getItem(key); - if (!rawData) return null; - - // 解析为内部存储结构 - const storageValue = JSON.parse(rawData) as StorageValue; - - // 检查是否过期 - if (this.isExpired(storageValue)) { - this.remove(key); - return null; - } - - // 返回实际数据 - return storageValue.__data; - } catch (error) { - console.error(`[存储] 解析失败 (key: ${key})`, error); - this.remove(key); // 移除无效数据 - return null; + + // 设置过期时间(如果提供) + if (ttl !== undefined && ttl > 0) { + storageValue.__expiry = Date.now() + ttl } - } - - /** - * 删除指定存储项 - * @param key 要删除的存储键 - */ - static remove(key: AppStorageKey): void { - if (typeof window === "undefined") return; - localStorage.removeItem(key); - } - - /** - * 清除应用相关的所有存储 - */ - static clearAppStorage(): void { - if (typeof window === "undefined") return; - - // 遍历所有预定义的 key 进行删除 - Object.values(AppStorageKey).forEach(key => { - localStorage.removeItem(key); - }); - } - - // ----------------------------- 私有辅助方法 ----------------------------- - - /** - * 检查存储值是否过期 - */ - private static isExpired(value: StorageValue): boolean { - return value.__expiry !== undefined && Date.now() > value.__expiry; - } - - /** - * 处理存储错误(配额不足等) - */ - private static handleStorageError(key: AppStorageKey, error: unknown): void { - // 处理存储空间不足错误 - if (error instanceof DOMException && error.name === 'QuotaExceededError') { - console.warn('存储空间不足,尝试清理过期数据'); - this.clearExpiredItems(); - - // 尝试重新存储(最多尝试一次) - try { - const raw = localStorage.getItem(key); - if (raw) { - const value = JSON.parse(raw) as StorageValue; - if (!this.isExpired(value)) { - localStorage.setItem(key, raw); - return; - } - } - } catch (retryError) { - console.error('重试存储失败', retryError); - } - } - } - - /** - * 清理所有过期的存储项 - */ - private static clearExpiredItems(): void { - Object.values(AppStorageKey).forEach(key => { - try { - const raw = localStorage.getItem(key); - if (raw) { - const value = JSON.parse(raw) as StorageValue; - if (this.isExpired(value)) { - localStorage.removeItem(key); - } - } - } catch (e) { - // 忽略无效数据 - } - }); + + // 自动序列化并存储 + localStorage.setItem(key, JSON.stringify(storageValue)) + } catch (error) { + console.error(`[存储] 保存失败 (key: ${key})`, error) + this.handleStorageError(key, error) } } - - export default SafeStorage; \ No newline at end of file + + /** + * 获取数据(自动反序列化并检查过期) + * @param key 预定义的存储键 + * @returns 存储的值或 null(如果不存在或过期) + */ + static get(key: AppStorageKey): T | null { + if (typeof window === 'undefined') return null + + try { + // 获取原始数据 + const rawData = localStorage.getItem(key) + if (!rawData) return null + + // 解析为内部存储结构 + const storageValue = JSON.parse(rawData) as StorageValue + + // 检查是否过期 + if (this.isExpired(storageValue)) { + this.remove(key) + return null + } + + // 返回实际数据 + return storageValue.__data + } catch (error) { + console.error(`[存储] 解析失败 (key: ${key})`, error) + this.remove(key) // 移除无效数据 + return null + } + } + + /** + * 删除指定存储项 + * @param key 要删除的存储键 + */ + static remove(key: AppStorageKey): void { + if (typeof window === 'undefined') return + localStorage.removeItem(key) + } + + /** + * 清除应用相关的所有存储 + */ + static clearAppStorage(): void { + if (typeof window === 'undefined') return + + // 遍历所有预定义的 key 进行删除 + Object.values(AppStorageKey).forEach((key) => { + localStorage.removeItem(key) + }) + } + + // ----------------------------- 私有辅助方法 ----------------------------- + + /** + * 检查存储值是否过期 + */ + private static isExpired(value: StorageValue): boolean { + return value.__expiry !== undefined && Date.now() > value.__expiry + } + + /** + * 处理存储错误(配额不足等) + */ + private static handleStorageError(key: AppStorageKey, error: unknown): void { + // 处理存储空间不足错误 + if (error instanceof DOMException && error.name === 'QuotaExceededError') { + console.warn('存储空间不足,尝试清理过期数据') + this.clearExpiredItems() + + // 尝试重新存储(最多尝试一次) + try { + const raw = localStorage.getItem(key) + if (raw) { + const value = JSON.parse(raw) as StorageValue + if (!this.isExpired(value)) { + localStorage.setItem(key, raw) + return + } + } + } catch (retryError) { + console.error('重试存储失败', retryError) + } + } + } + + /** + * 清理所有过期的存储项 + */ + private static clearExpiredItems(): void { + Object.values(AppStorageKey).forEach((key) => { + try { + const raw = localStorage.getItem(key) + if (raw) { + const value = JSON.parse(raw) as StorageValue + if (this.isExpired(value)) { + localStorage.removeItem(key) + } + } + } catch (e) { + // 忽略无效数据 + } + }) + } +} + +export default SafeStorage diff --git a/src/utils/tree.ts b/src/utils/tree.ts index 5733be8..de3e18b 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -42,16 +42,8 @@ export interface BuildTreeResult { * @param options 构建选项 * @returns 包含根节点列表和节点映射的对象 */ -export function buildTree( - items: T[], - options: BuildTreeOptions = {} -): BuildTreeResult { - const { - idKey = 'id' as keyof T, - parentKey = 'parent_id' as keyof T, - childrenKey = 'children', - orderKey, - } = options +export function buildTree(items: T[], options: BuildTreeOptions = {}): BuildTreeResult { + const { idKey = 'id' as keyof T, parentKey = 'parent_id' as keyof T, childrenKey = 'children', orderKey } = options const itemMap = new Map() const rootItems: T[] = [] @@ -61,10 +53,13 @@ export function buildTree( const id = item[idKey] if (id !== undefined && id !== null) { // 创建带有空 children 数组的节点副本 - itemMap.set(id as number | string, { - ...item, - [childrenKey]: [] - } as T) + itemMap.set( + id as number | string, + { + ...item, + [childrenKey]: [], + } as T + ) } }) @@ -164,7 +159,7 @@ export function getAncestors( ): T[] { const ancestors: T[] = [] let current = itemMap.get(nodeId) - + while (current) { const parentId = current[parentKey] if (parentId && itemMap.has(parentId as number | string)) { @@ -175,7 +170,7 @@ export function getAncestors( break } } - + return ancestors } @@ -185,20 +180,17 @@ export function getAncestors( * @param childrenKey 子节点字段名 * @returns 所有子孙节点(扁平数组) */ -export function getDescendants( - node: T, - childrenKey: string = 'children' -): T[] { +export function getDescendants(node: T, childrenKey: string = 'children'): T[] { const descendants: T[] = [] const children = node[childrenKey] as T[] - + if (children && children.length > 0) { for (const child of children) { descendants.push(child) descendants.push(...getDescendants(child, childrenKey)) } } - + return descendants } @@ -208,16 +200,17 @@ export function getDescendants( * @param childrenKey 子节点字段名 * @returns 扁平化后的数组(移除 children 属性) */ -export function flattenTree( - nodes: T[], - childrenKey: string = 'children' -): Omit[] { +export function flattenTree(nodes: T[], childrenKey: string = 'children'): Omit[] { const result: Omit[] = [] - - traverseTree(nodes, (node) => { - const { [childrenKey]: _, ...rest } = node - result.push(rest as Omit) - }, childrenKey) - + + traverseTree( + nodes, + (node) => { + const { [childrenKey]: _, ...rest } = node + result.push(rest as Omit) + }, + childrenKey + ) + return result } diff --git a/src/views/help/index.vue b/src/views/help/index.vue index b639579..6027be2 100644 --- a/src/views/help/index.vue +++ b/src/views/help/index.vue @@ -87,15 +87,12 @@ 常见问题 - +
- +
{{ item.answer }} @@ -111,14 +108,9 @@ 使用指南 - +
-
+
@@ -165,7 +157,6 @@

david.yan@qq.com

-
@@ -180,13 +171,7 @@ - +
@@ -246,84 +231,100 @@ const currentGuide = ref(null) const faqs = ref([ { question: '如何登录智能运维管理系统?', - answer: '在登录页面输入您的用户名和密码,点击登录按钮即可。如果忘记密码,可以点击"忘记密码"链接进行重置,或联系系统管理员协助重置密码。', - category: 'quickstart' + answer: + '在登录页面输入您的用户名和密码,点击登录按钮即可。如果忘记密码,可以点击"忘记密码"链接进行重置,或联系系统管理员协助重置密码。', + category: 'quickstart', }, { question: '如何查看服务器和PC设备的运行状态?', - answer: '登录系统后,进入"服务器及PC管理"菜单,可以查看服务器管理和办公PC管理两个子模块。在列表中可以查看设备的在线状态、资源使用情况等详细信息。', - category: 'quickstart' + answer: + '登录系统后,进入"服务器及PC管理"菜单,可以查看服务器管理和办公PC管理两个子模块。在列表中可以查看设备的在线状态、资源使用情况等详细信息。', + category: 'quickstart', }, { question: '如何配置监控告警策略?', - answer: '进入"告警管理" -> "告警策略管理"页面,点击"新建策略"按钮,选择监控对象类型、设置告警条件、通知方式和接收人员,保存后即可生效。系统支持多种告警通知渠道,包括邮件、短信、企业微信等。', - category: 'alert' + answer: + '进入"告警管理" -> "告警策略管理"页面,点击"新建策略"按钮,选择监控对象类型、设置告警条件、通知方式和接收人员,保存后即可生效。系统支持多种告警通知渠道,包括邮件、短信、企业微信等。', + category: 'alert', }, { question: '告警触发后如何处理?', - answer: '当告警触发时,进入"告警管理" -> "告警受理处理"页面,可以查看待处理的告警列表。点击具体告警记录,可以查看详细信息并进行受理、转派或关闭操作。处理完成后,告警记录会保存在告警历史中供后续查询。', - category: 'alert' + answer: + '当告警触发时,进入"告警管理" -> "告警受理处理"页面,可以查看待处理的告警列表。点击具体告警记录,可以查看详细信息并进行受理、转派或关闭操作。处理完成后,告警记录会保存在告警历史中供后续查询。', + category: 'alert', }, { question: '如何查看网络设备的监控数据?', - answer: '进入"综合监控" -> "网络设备监控"页面,可以查看所有网络设备的实时监控数据,包括设备状态、端口流量、CPU/内存使用率等。支持按设备类型、IP地址等条件筛选,也可以设置监控阈值。', - category: 'monitor' + answer: + '进入"综合监控" -> "网络设备监控"页面,可以查看所有网络设备的实时监控数据,包括设备状态、端口流量、CPU/内存使用率等。支持按设备类型、IP地址等条件筛选,也可以设置监控阈值。', + category: 'monitor', }, { question: '如何查看存储设备的运行状态?', - answer: '进入"综合监控" -> "存储设备监控"页面,可以查看存储设备的容量使用情况、IOPS、吞吐量等关键指标。系统支持多种存储品牌和型号的自动发现和监控。', - category: 'monitor' + answer: + '进入"综合监控" -> "存储设备监控"页面,可以查看存储设备的容量使用情况、IOPS、吞吐量等关键指标。系统支持多种存储品牌和型号的自动发现和监控。', + category: 'monitor', }, { question: '如何管理数据中心的机柜信息?', - answer: '进入"数据中心管理" -> "机柜管理"页面,可以添加、编辑、删除机柜信息。支持查看机柜内的设备分布、U位使用情况,以及机柜的电力和制冷状态。还可以通过可视化界面查看机柜布局。', - category: 'datacenter' + answer: + '进入"数据中心管理" -> "机柜管理"页面,可以添加、编辑、删除机柜信息。支持查看机柜内的设备分布、U位使用情况,以及机柜的电力和制冷状态。还可以通过可视化界面查看机柜布局。', + category: 'datacenter', }, { question: '如何添加新的数据中心和楼层?', - answer: '在"数据中心管理"模块中,先在"数据中心"页面添加数据中心基本信息,然后在"楼层管理"页面添加该数据中心的楼层信息。添加完成后,可以在机柜管理中关联具体位置。', - category: 'datacenter' + answer: + '在"数据中心管理"模块中,先在"数据中心"页面添加数据中心基本信息,然后在"楼层管理"页面添加该数据中心的楼层信息。添加完成后,可以在机柜管理中关联具体位置。', + category: 'datacenter', }, { question: '如何查看网络拓扑图?', - answer: '进入"网络架构管理" -> "拓扑管理"页面,可以查看和管理网络拓扑图。系统支持自动发现网络设备并生成拓扑图,也可以手动编辑拓扑结构。"自动感知拓扑图"功能可以实时更新网络拓扑变化。', - category: 'netarch' + answer: + '进入"网络架构管理" -> "拓扑管理"页面,可以查看和管理网络拓扑图。系统支持自动发现网络设备并生成拓扑图,也可以手动编辑拓扑结构。"自动感知拓扑图"功能可以实时更新网络拓扑变化。', + category: 'netarch', }, { question: '如何进行IP地址管理?', - answer: '进入"网络架构管理" -> "IP地址管理"页面,可以查看和管理IP地址池。支持IP地址分配、回收、冲突检测等功能,可以按子网、VLAN等维度进行管理。', - category: 'netarch' + answer: + '进入"网络架构管理" -> "IP地址管理"页面,可以查看和管理IP地址池。支持IP地址分配、回收、冲突检测等功能,可以按子网、VLAN等维度进行管理。', + category: 'netarch', }, { question: '如何添加新的资产设备?', - answer: '进入"资产管理" -> "设备管理"页面,点击"新增设备"按钮,填写设备基本信息(名称、型号、IP地址等)、选择设备分类、关联供应商信息,保存后即可完成添加。也可以通过批量导入功能一次性添加多台设备。', - category: 'asset' + answer: + '进入"资产管理" -> "设备管理"页面,点击"新增设备"按钮,填写设备基本信息(名称、型号、IP地址等)、选择设备分类、关联供应商信息,保存后即可完成添加。也可以通过批量导入功能一次性添加多台设备。', + category: 'asset', }, { question: '如何管理设备供应商信息?', - answer: '在"资产管理" -> "供应商管理"页面,可以添加和维护供应商信息,包括供应商名称、联系方式、服务范围等。设备管理时可以关联供应商,便于后续的维保管理。', - category: 'asset' + answer: + '在"资产管理" -> "供应商管理"页面,可以添加和维护供应商信息,包括供应商名称、联系方式、服务范围等。设备管理时可以关联供应商,便于后续的维保管理。', + category: 'asset', }, { question: '如何创建和处理工单?', - answer: '进入"工单管理"模块,可以创建新工单或处理待办工单。在"我的工单"中查看分配给自己的工单,在"所有工单"中查看全部工单。支持工单的创建、分配、处理、转派、关闭等完整流程。', - category: 'ticket' + answer: + '进入"工单管理"模块,可以创建新工单或处理待办工单。在"我的工单"中查看分配给自己的工单,在"所有工单"中查看全部工单。支持工单的创建、分配、处理、转派、关闭等完整流程。', + category: 'ticket', }, { question: '如何配置数据库和中间件的采集?', - answer: '进入"集群采集控制中心"模块,在"数据库采集管理"或"中间件采集管理"页面,可以配置需要监控的数据库和中间件实例。填写连接信息后,系统会自动采集性能指标和运行状态。', - category: 'monitor' + answer: + '进入"集群采集控制中心"模块,在"数据库采集管理"或"中间件采集管理"页面,可以配置需要监控的数据库和中间件实例。填写连接信息后,系统会自动采集性能指标和运行状态。', + category: 'monitor', }, { question: '如何查看可视化大屏?', - answer: '进入"可视化大屏管理"模块,可以查看和管理运维大屏。在"大屏管理"中创建和编辑大屏,在"已发布大屏列表"中查看已发布的大屏。大屏可以展示监控概览、告警统计、资源使用等关键指标。', - category: 'quickstart' + answer: + '进入"可视化大屏管理"模块,可以查看和管理运维大屏。在"大屏管理"中创建和编辑大屏,在"已发布大屏列表"中查看已发布的大屏。大屏可以展示监控概览、告警统计、资源使用等关键指标。', + category: 'quickstart', }, { question: '系统支持哪些浏览器?', - answer: '智能运维管理系统支持主流的现代浏览器,包括 Chrome(推荐)、Firefox、Edge、Safari 等。建议使用最新版本的浏览器以获得最佳体验,屏幕分辨率建议 1920x1080 及以上。', - category: 'quickstart' - } + answer: + '智能运维管理系统支持主流的现代浏览器,包括 Chrome(推荐)、Firefox、Edge、Safari 等。建议使用最新版本的浏览器以获得最佳体验,屏幕分辨率建议 1920x1080 及以上。', + category: 'quickstart', + }, ]) // 使用指南数据 - 包含详细内容 @@ -339,12 +340,12 @@ const guides = ref([ content: [ { title: '系统概述', - text: '智能运维管理系统是一套集监控、告警、资产管理、工单处理于一体的综合运维平台,旨在帮助运维人员高效管理IT基础设施。' + text: '智能运维管理系统是一套集监控、告警、资产管理、工单处理于一体的综合运维平台,旨在帮助运维人员高效管理IT基础设施。', }, { title: '登录系统', text: '打开浏览器访问系统地址,输入用户名和密码登录。首次登录建议修改默认密码,确保账户安全。', - items: ['支持多种认证方式', '支持单点登录(SSO)', '支持密码找回功能'] + items: ['支持多种认证方式', '支持单点登录(SSO)', '支持密码找回功能'], }, { title: '主要功能模块', @@ -359,14 +360,14 @@ const guides = ref([ '告警管理:告警策略、告警处理、告警历史', '工单管理:创建和处理运维工单', '数据中心管理:机房、楼层、机柜管理', - '资产管理:设备分类、设备信息、供应商管理' - ] + '资产管理:设备分类、设备信息、供应商管理', + ], }, { title: '界面导航', - text: '左侧为功能菜单,点击展开子菜单;顶部显示当前页面标题和用户信息;右侧为内容区域,展示具体功能页面。' - } - ] + text: '左侧为功能菜单,点击展开子菜单;顶部显示当前页面标题和用户信息;右侧为内容区域,展示具体功能页面。', + }, + ], }, { id: 2, @@ -379,29 +380,29 @@ const guides = ref([ content: [ { title: '监控概述', - text: '综合监控模块提供对IT基础设施的全方位监控,包括网络设备、存储设备、安全设备、虚拟化平台、环境动力等。' + text: '综合监控模块提供对IT基础设施的全方位监控,包括网络设备、存储设备、安全设备、虚拟化平台、环境动力等。', }, { title: '网络设备监控', text: '进入"综合监控" -> "网络设备监控",可以查看路由器、交换机、防火墙等网络设备的运行状态。', - items: ['实时查看设备在线状态', '监控端口流量和带宽使用', '查看CPU、内存使用率', '配置监控阈值和告警'] + items: ['实时查看设备在线状态', '监控端口流量和带宽使用', '查看CPU、内存使用率', '配置监控阈值和告警'], }, { title: '存储设备监控', text: '进入"综合监控" -> "存储设备监控",监控存储阵列、NAS等存储设备。', - items: ['查看存储容量和使用率', '监控IOPS和吞吐量', '查看磁盘健康状态', '支持主流存储品牌'] + items: ['查看存储容量和使用率', '监控IOPS和吞吐量', '查看磁盘健康状态', '支持主流存储品牌'], }, { title: '虚拟化监控', text: '进入"综合监控" -> "虚拟化监控",监控VMware、Hyper-V等虚拟化平台。', - items: ['查看虚拟机运行状态', '监控资源分配和使用', '查看宿主机性能指标'] + items: ['查看虚拟机运行状态', '监控资源分配和使用', '查看宿主机性能指标'], }, { title: '环境动力监控', text: '进入"综合监控" -> "电力/UPS/空调/温湿度",监控机房环境。', - items: ['UPS状态和电池容量', '空调运行状态', '温湿度实时数据', '电力负载情况'] - } - ] + items: ['UPS状态和电池容量', '空调运行状态', '温湿度实时数据', '电力负载情况'], + }, + ], }, { id: 3, @@ -414,32 +415,32 @@ const guides = ref([ content: [ { title: '告警体系概述', - text: '告警管理模块提供完整的告警生命周期管理,从告警策略配置、告警触发、告警通知到告警处理和归档。' + text: '告警管理模块提供完整的告警生命周期管理,从告警策略配置、告警触发、告警通知到告警处理和归档。', }, { title: '告警级别管理', - text: '系统预设多个告警级别(紧急、重要、一般、提示),可在"告警级别管理"中自定义级别名称和颜色标识。' + text: '系统预设多个告警级别(紧急、重要、一般、提示),可在"告警级别管理"中自定义级别名称和颜色标识。', }, { title: '告警模版配置', text: '在"告警模版"中创建告警规则模版,定义监控指标、阈值条件、告警级别等。', - items: ['选择监控对象类型', '设置指标和阈值条件', '配置告警级别', '设置静默时间'] + items: ['选择监控对象类型', '设置指标和阈值条件', '配置告警级别', '设置静默时间'], }, { title: '告警策略管理', text: '在"告警策略管理"中将模版应用到具体设备或设备组,并配置通知方式。', - items: ['选择告警模版', '指定监控对象', '配置通知渠道', '设置通知接收人'] + items: ['选择告警模版', '指定监控对象', '配置通知渠道', '设置通知接收人'], }, { title: '告警受理处理', text: '在"告警受理处理"中查看和处理触发的告警。', - items: ['查看告警详情', '受理告警并标记处理状态', '转派给其他人员', '添加处理备注', '关闭告警'] + items: ['查看告警详情', '受理告警并标记处理状态', '转派给其他人员', '添加处理备注', '关闭告警'], }, { title: '告警历史查询', - text: '在"告警历史"中查询历史告警记录,支持按时间、设备、级别等条件筛选。' - } - ] + text: '在"告警历史"中查询历史告警记录,支持按时间、设备、级别等条件筛选。', + }, + ], }, { id: 4, @@ -452,28 +453,28 @@ const guides = ref([ content: [ { title: '数据中心管理概述', - text: '数据中心管理模块用于管理机房基础设施信息,包括数据中心、楼层、机柜的层级管理。' + text: '数据中心管理模块用于管理机房基础设施信息,包括数据中心、楼层、机柜的层级管理。', }, { title: '数据中心信息管理', text: '在"数据中心"页面管理数据中心基本信息。', - items: ['数据中心名称和编码', '地理位置和地址', '总面积和可用面积', '负责人和联系方式'] + items: ['数据中心名称和编码', '地理位置和地址', '总面积和可用面积', '负责人和联系方式'], }, { title: '楼层管理', text: '在"楼层管理"页面添加数据中心下的楼层信息。', - items: ['楼层编号和名称', '楼层面积', '功能区域划分'] + items: ['楼层编号和名称', '楼层面积', '功能区域划分'], }, { title: '机柜管理', text: '在"机柜管理"页面管理机柜信息,支持可视化机柜布局。', - items: ['机柜编号和位置', '机柜规格(高度、宽度)', 'U位使用情况', '机柜内设备列表', '电力和制冷状态'] + items: ['机柜编号和位置', '机柜规格(高度、宽度)', 'U位使用情况', '机柜内设备列表', '电力和制冷状态'], }, { title: '机柜可视化', - text: '点击机柜可查看机柜内部设备分布图,直观展示U位占用情况,支持设备上架、下架操作。' - } - ] + text: '点击机柜可查看机柜内部设备分布图,直观展示U位占用情况,支持设备上架、下架操作。', + }, + ], }, { id: 5, @@ -486,28 +487,28 @@ const guides = ref([ content: [ { title: '网络架构管理概述', - text: '网络架构管理模块提供网络拓扑可视化、流量分析、IP地址管理等功能,帮助运维人员全面掌握网络架构。' + text: '网络架构管理模块提供网络拓扑可视化、流量分析、IP地址管理等功能,帮助运维人员全面掌握网络架构。', }, { title: '拓扑管理', text: '在"拓扑管理"中创建和管理网络拓扑图。', - items: ['手动创建拓扑图', '自动发现网络拓扑', '编辑设备连接关系', '设置拓扑图展示样式'] + items: ['手动创建拓扑图', '自动发现网络拓扑', '编辑设备连接关系', '设置拓扑图展示样式'], }, { title: '自动感知拓扑图', - text: '系统可自动发现网络设备及其连接关系,生成动态拓扑图,实时反映网络架构变化。' + text: '系统可自动发现网络设备及其连接关系,生成动态拓扑图,实时反映网络架构变化。', }, { title: '流量分析管理', text: '在"流量分析管理"中查看网络流量数据。', - items: ['查看端口流量统计', '分析流量趋势', '识别流量异常', '生成流量报表'] + items: ['查看端口流量统计', '分析流量趋势', '识别流量异常', '生成流量报表'], }, { title: 'IP地址管理', text: '在"IP地址管理"中管理IP地址资源。', - items: ['IP地址池管理', 'IP分配和回收', 'IP冲突检测', '子网划分管理'] - } - ] + items: ['IP地址池管理', 'IP分配和回收', 'IP冲突检测', '子网划分管理'], + }, + ], }, { id: 6, @@ -520,12 +521,12 @@ const guides = ref([ content: [ { title: '资产管理概述', - text: '资产管理模块用于管理IT资产的全生命周期,包括设备分类、设备信息、供应商管理等。' + text: '资产管理模块用于管理IT资产的全生命周期,包括设备分类、设备信息、供应商管理等。', }, { title: '设备分类管理', text: '在"设备分类管理"中建立设备分类体系。', - items: ['创建分类树形结构', '设置分类属性模板', '关联监控类型'] + items: ['创建分类树形结构', '设置分类属性模板', '关联监控类型'], }, { title: '设备管理', @@ -535,19 +536,19 @@ const guides = ref([ '设备位置:数据中心、楼层、机柜、U位', '设备配置:IP地址、操作系统、配置参数', '维保信息:购买日期、保修期限、供应商', - '设备状态:运行状态、健康状态' - ] + '设备状态:运行状态、健康状态', + ], }, { title: '供应商管理', text: '在"供应商管理"中维护供应商信息。', - items: ['供应商名称和编码', '联系方式和地址', '服务范围和产品线', '合同和保修信息'] + items: ['供应商名称和编码', '联系方式和地址', '服务范围和产品线', '合同和保修信息'], }, { title: '批量导入', - text: '支持通过Excel批量导入设备信息,提高数据录入效率。' - } - ] + text: '支持通过Excel批量导入设备信息,提高数据录入效率。', + }, + ], }, { id: 7, @@ -560,27 +561,27 @@ const guides = ref([ content: [ { title: '工单管理概述', - text: '工单管理模块提供运维工单的全流程管理,支持故障处理、服务请求、变更管理等场景。' + text: '工单管理模块提供运维工单的全流程管理,支持故障处理、服务请求、变更管理等场景。', }, { title: '创建工单', text: '点击"新建工单"按钮,填写工单信息。', - items: ['选择工单类型', '填写工单标题和描述', '设置优先级', '指定处理人', '关联设备或告警'] + items: ['选择工单类型', '填写工单标题和描述', '设置优先级', '指定处理人', '关联设备或告警'], }, { title: '我的工单', - text: '在"我的工单"中查看分配给当前用户的待处理工单,支持按状态、优先级筛选。' + text: '在"我的工单"中查看分配给当前用户的待处理工单,支持按状态、优先级筛选。', }, { title: '所有工单', - text: '在"所有工单"中查看系统中的全部工单,管理员可进行工单分配和监督。' + text: '在"所有工单"中查看系统中的全部工单,管理员可进行工单分配和监督。', }, { title: '处理工单', text: '工单处理流程包括:', - items: ['查看工单详情', '更新处理进度', '添加处理记录', '转派给其他人员', '关闭工单并填写处理结果'] - } - ] + items: ['查看工单详情', '更新处理进度', '添加处理记录', '转派给其他人员', '关闭工单并填写处理结果'], + }, + ], }, { id: 8, @@ -593,38 +594,25 @@ const guides = ref([ content: [ { title: '采集控制中心概述', - text: '集群采集控制中心用于配置各类IT组件的数据采集,包括数据库、中间件、网络设备等。' + text: '集群采集控制中心用于配置各类IT组件的数据采集,包括数据库、中间件、网络设备等。', }, { title: '数据库采集管理', text: '在"数据库采集管理"中配置数据库监控采集。', - items: [ - '支持MySQL、Oracle、SQL Server、PostgreSQL等', - '配置数据库连接信息', - '设置采集频率', - '选择采集指标' - ] + items: ['支持MySQL、Oracle、SQL Server、PostgreSQL等', '配置数据库连接信息', '设置采集频率', '选择采集指标'], }, { title: '中间件采集管理', text: '在"中间件采集管理"中配置中间件监控采集。', - items: [ - '支持Tomcat、Nginx、Redis、Kafka等', - '配置访问地址和认证信息', - '设置采集参数' - ] + items: ['支持Tomcat、Nginx、Redis、Kafka等', '配置访问地址和认证信息', '设置采集参数'], }, { title: '网络设备采集管理', text: '在"网络设备采集管理"中配置网络设备采集。', - items: [ - '支持SNMP、SSH等采集方式', - '配置设备IP和认证信息', - '设置采集协议和频率' - ] - } - ] - } + items: ['支持SNMP、SSH等采集方式', '配置设备IP和认证信息', '设置采集协议和频率'], + }, + ], + }, ]) // 计算属性 @@ -632,14 +620,14 @@ const filteredFaqs = computed(() => { if (activeCategory.value === 'all') { return faqs.value } - return faqs.value.filter(faq => faq.category === activeCategory.value) + return faqs.value.filter((faq) => faq.category === activeCategory.value) }) const filteredGuides = computed(() => { if (activeCategory.value === 'all') { return guides.value } - return guides.value.filter(guide => guide.category === activeCategory.value) + return guides.value.filter((guide) => guide.category === activeCategory.value) }) // 方法 @@ -668,7 +656,7 @@ const openGuideDetail = (guide: any) => { defineExpose({ guideModalVisible, - currentGuide + currentGuide, }) @@ -676,7 +664,7 @@ defineExpose({ .help-page { min-height: 100vh; background: #f5f7fa; - + // 顶部导航 .navbar { position: fixed; @@ -688,7 +676,7 @@ defineExpose({ backdrop-filter: blur(10px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); z-index: 1000; - + .navbar-content { max-width: 1400px; margin: 0 auto; @@ -697,36 +685,36 @@ defineExpose({ display: flex; justify-content: space-between; align-items: center; - + .logo { display: flex; align-items: center; gap: 12px; cursor: pointer; - + img { height: 32px; width: auto; } - + .logo-text { font-size: 20px; font-weight: 600; color: var(--color-text-1); } } - + .nav-links { display: flex; align-items: center; gap: 24px; - + a { color: var(--color-text-2); text-decoration: none; font-size: 14px; transition: color 0.3s; - + &:hover { color: rgb(var(--primary-6)); } @@ -734,14 +722,14 @@ defineExpose({ } } } - + // Banner 区域 .help-banner { position: relative; padding: 140px 24px 80px; text-align: center; color: #fff; - + .banner-image { position: absolute; top: 0; @@ -750,7 +738,7 @@ defineExpose({ height: 100%; object-fit: cover; } - + .banner-overlay { position: absolute; top: 0; @@ -758,37 +746,37 @@ defineExpose({ width: 100%; height: 100%; } - + .banner-content { position: relative; z-index: 1; - + h1 { font-size: 42px; font-weight: 600; margin-bottom: 16px; } - + p { font-size: 18px; opacity: 0.9; margin-bottom: 32px; } - + .search-box { max-width: 600px; margin: 0 auto; - + :deep(.arco-input-wrapper) { background: rgba(255, 255, 255, 0.95); border: none; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - + .arco-input { font-size: 16px; padding: 12px 16px; - + &::placeholder { color: #86909c; } @@ -797,41 +785,41 @@ defineExpose({ } } } - + // 主要内容区 .help-content { padding: 40px 24px; - + .content-container { max-width: 1400px; margin: 0 auto; display: flex; gap: 32px; - + @media (max-width: 992px) { flex-direction: column; } } - + // 左侧目录 .help-sidebar { width: 240px; flex-shrink: 0; - + @media (max-width: 992px) { width: 100%; } - + :deep(.arco-menu) { background: #fff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); padding: 12px 0; - + .arco-menu-item { margin: 4px 8px; border-radius: 6px; - + &.arco-menu-selected { background: rgb(var(--primary-1)); color: rgb(var(--primary-6)); @@ -839,14 +827,14 @@ defineExpose({ } } } - + // 右侧内容 .help-main { flex: 1; min-width: 0; } } - + // 帮助区块 .help-section { background: #fff; @@ -854,7 +842,7 @@ defineExpose({ padding: 32px; margin-bottom: 24px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); - + .section-title { display: flex; align-items: center; @@ -865,61 +853,61 @@ defineExpose({ margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--color-border-2); - + svg { width: 24px; height: 24px; color: rgb(var(--primary-6)); } } - + .section-desc { color: var(--color-text-3); margin-bottom: 24px; } } - + // FAQ 列表 .faq-list { :deep(.arco-collapse) { border: none; background: transparent; - + .arco-collapse-item { margin-bottom: 12px; border: 1px solid var(--color-border-2); border-radius: 8px; overflow: hidden; - + .arco-collapse-item-header { background: #fafbfc; padding: 16px 20px; font-weight: 500; - + &:hover { background: #f2f3f5; } } - + .arco-collapse-item-content { padding: 20px; background: #fff; } } } - + .faq-answer { color: var(--color-text-2); line-height: 1.8; } } - + // 使用指南网格 .guide-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; - + .guide-card { background: #fafbfc; border: 1px solid var(--color-border-2); @@ -927,17 +915,17 @@ defineExpose({ padding: 24px; cursor: pointer; transition: all 0.3s; - + &:hover { border-color: rgb(var(--primary-6)); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); transform: translateY(-2px); - + .view-link { color: rgb(var(--primary-6)); } } - + .guide-icon { width: 48px; height: 48px; @@ -947,35 +935,35 @@ defineExpose({ align-items: center; justify-content: center; margin-bottom: 16px; - + svg { width: 24px; height: 24px; color: rgb(var(--primary-6)); } } - + h3 { font-size: 16px; font-weight: 600; color: var(--color-text-1); margin-bottom: 8px; } - + p { font-size: 14px; color: var(--color-text-3); line-height: 1.6; margin-bottom: 16px; } - + .guide-meta { display: flex; justify-content: space-between; font-size: 12px; color: var(--color-text-4); margin-bottom: 12px; - + .guide-category { background: rgb(var(--primary-1)); color: rgb(var(--primary-6)); @@ -983,7 +971,7 @@ defineExpose({ border-radius: 4px; } } - + .guide-action { .view-link { font-size: 13px; @@ -993,17 +981,17 @@ defineExpose({ } } } - + // 联系我们 .contact-section { background: linear-gradient(135deg, #f8f9ff 0%, #f0f4ff 100%); } - + .contact-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; - + .contact-card { background: #fff; border-radius: 12px; @@ -1013,12 +1001,12 @@ defineExpose({ gap: 16px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); transition: all 0.3s; - + &:hover { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); transform: translateY(-2px); } - + .contact-icon { width: 48px; height: 48px; @@ -1028,30 +1016,30 @@ defineExpose({ align-items: center; justify-content: center; flex-shrink: 0; - + svg { width: 24px; height: 24px; color: rgb(var(--primary-6)); } } - + .contact-content { flex: 1; - + h3 { font-size: 16px; font-weight: 600; color: var(--color-text-1); margin-bottom: 4px; } - + .contact-time { font-size: 13px; color: var(--color-text-3); margin-bottom: 8px; } - + .contact-value { font-size: 15px; font-weight: 500; @@ -1060,45 +1048,45 @@ defineExpose({ } } } - + // 页脚 .footer { background: #1d2129; padding: 24px; text-align: center; - + .footer-content { max-width: 1400px; margin: 0 auto; - + p { color: #86909c; font-size: 14px; } } } - + // 使用指南详情弹窗 .guide-detail-content { .guide-detail-header { margin-bottom: 24px; - + .guide-detail-meta { display: flex; align-items: center; gap: 12px; - + .guide-detail-date { font-size: 13px; color: var(--color-text-3); } } } - + .guide-detail-body { .content-section { margin-bottom: 24px; - + h3 { font-size: 16px; font-weight: 600; @@ -1107,18 +1095,18 @@ defineExpose({ padding-left: 12px; border-left: 3px solid rgb(var(--primary-6)); } - + p { font-size: 14px; color: var(--color-text-2); line-height: 1.8; margin-bottom: 12px; } - + ul { margin: 0; padding-left: 24px; - + li { font-size: 14px; color: var(--color-text-2); @@ -1127,7 +1115,7 @@ defineExpose({ } } } - + .guide-placeholder { padding: 40px 0; text-align: center; diff --git a/src/views/home/index.vue b/src/views/home/index.vue index 63ba96d..8a9e473 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -21,9 +21,7 @@ @@ -32,7 +30,7 @@

核心功能

全面的运维管理工具,满足您的各种需求

- +
@@ -85,8 +83,6 @@
- -
@@ -96,10 +77,7 @@ import type { FormItem } from '@/components/search-form/types' import SearchTable from '@/components/search-table/index.vue' import { searchFormConfig } from './config/search-form' import { columns as columnsConfig } from './config/columns' -import { - fetchAlertLevelList, - deleteAlertLevel, -} from '@/api/ops/alertLevel' +import { fetchAlertLevelList, deleteAlertLevel } from '@/api/ops/alertLevel' import LevelDetailDialog from './components/LevelDetailDialog.vue' import LevelFormDialog from './components/LevelFormDialog.vue' @@ -134,7 +112,7 @@ const detailVisible = ref(false) // 获取告警级别列表 const fetchLevels = async () => { loading.value = true - + try { const params: any = { page: pagination.current, @@ -217,13 +195,13 @@ const handleDetail = (record: any) => { // 删除级别 const handleDelete = async (record: any) => { console.log('删除告警级别:', record) - + // 系统默认级别不允许删除 if (record.is_default) { Message.warning('系统默认级别不允许删除') return } - + try { Modal.confirm({ title: '确认删除', diff --git a/src/views/ops/pages/alert/notice/components/ChannelDetailDialog.vue b/src/views/ops/pages/alert/notice/components/ChannelDetailDialog.vue index 12554c7..bf55156 100644 --- a/src/views/ops/pages/alert/notice/components/ChannelDetailDialog.vue +++ b/src/views/ops/pages/alert/notice/components/ChannelDetailDialog.vue @@ -7,12 +7,7 @@ @update:visible="handleVisibleChange" :footer="false" > - + {{ channelDetail.name || '-' }} @@ -45,10 +40,7 @@ - + {{ level }} - @@ -88,7 +80,7 @@ - + diff --git a/src/views/ops/pages/alert/notice/components/ChannelFormDialog.vue b/src/views/ops/pages/alert/notice/components/ChannelFormDialog.vue index 718f0a4..c6a67a1 100644 --- a/src/views/ops/pages/alert/notice/components/ChannelFormDialog.vue +++ b/src/views/ops/pages/alert/notice/components/ChannelFormDialog.vue @@ -9,27 +9,12 @@ :confirm-loading="submitting" > - - + + - - + + 邮件 短信 Webhook @@ -40,10 +25,7 @@ - + - - + + - - + + - + - + {{ level.name }} - + - + @@ -143,55 +94,26 @@ - - + + - - + + - + - - + + @@ -272,9 +194,7 @@ const fetchSeverityLevels = async (keyword?: string) => { enabled: 'true', }) - const list = Array.isArray(res?.details) - ? res.details - : res?.details?.data || res?.details?.list || res?.data || res + const list = Array.isArray(res?.details) ? res.details : res?.details?.data || res?.details?.list || res?.data || res const fetchedOptions = Array.isArray(list) ? list : [] // keyword 为空时缓存“全量可用选项” @@ -342,9 +262,7 @@ watch( message_template: props.channel.message_template || '', rate_limit: props.channel.rate_limit ?? 0, rate_limit_window: props.channel.rate_limit_window ?? 60, - severity_filter: props.channel.severity_filter - ? props.channel.severity_filter.split(',').filter((v: string) => v) - : [], + severity_filter: props.channel.severity_filter ? props.channel.severity_filter.split(',').filter((v: string) => v) : [], quiet_hours: props.channel.quiet_hours || '', retry_times: props.channel.retry_times ?? 3, retry_interval: props.channel.retry_interval ?? 60, @@ -396,8 +314,7 @@ const handleOk = async () => { submitting.value = true try { - const quietHoursPayload = - form.value.quiet_hours && form.value.quiet_hours.trim() ? form.value.quiet_hours : '{}' + const quietHoursPayload = form.value.quiet_hours && form.value.quiet_hours.trim() ? form.value.quiet_hours : '{}' const data: any = { name: form.value.name, @@ -406,9 +323,7 @@ const handleOk = async () => { message_template: form.value.message_template, rate_limit: form.value.rate_limit, rate_limit_window: form.value.rate_limit_window, - severity_filter: Array.isArray(form.value.severity_filter) - ? form.value.severity_filter.join(',') - : form.value.severity_filter, + severity_filter: Array.isArray(form.value.severity_filter) ? form.value.severity_filter.join(',') : form.value.severity_filter, quiet_hours: quietHoursPayload, retry_times: form.value.retry_times, retry_interval: form.value.retry_interval, @@ -463,5 +378,4 @@ export default { } - + diff --git a/src/views/ops/pages/alert/notice/index.vue b/src/views/ops/pages/alert/notice/index.vue index f7c4cca..ce1a147 100644 --- a/src/views/ops/pages/alert/notice/index.vue +++ b/src/views/ops/pages/alert/notice/index.vue @@ -44,36 +44,20 @@ - + - +
diff --git a/src/views/ops/pages/alert/setting/components/PolicyCreateDialog.vue b/src/views/ops/pages/alert/setting/components/PolicyCreateDialog.vue index da125ee..cce4c4a 100644 --- a/src/views/ops/pages/alert/setting/components/PolicyCreateDialog.vue +++ b/src/views/ops/pages/alert/setting/components/PolicyCreateDialog.vue @@ -9,13 +9,7 @@ @before-ok="handleSubmit" @update:visible="handleVisibleChange" > - + 基础信息 @@ -43,21 +37,15 @@ - - + + 模板与拓展配置 - + {{ template.name }} @@ -71,15 +59,15 @@ :auto-size="{ minRows: 2, maxRows: 4 }" allow-clear /> - + 自动建单与派单 - - + + @@ -155,7 +143,7 @@ @@ -242,9 +230,7 @@ const loadTemplateOptions = async () => { const loadSeverityList = async () => { try { const res: any = await fetchSeverityOptions({ enabled: 'true' }) - const list = Array.isArray(res?.details) - ? res.details - : res?.details?.data || res?.details?.list || res?.data || res + const list = Array.isArray(res?.details) ? res.details : res?.details?.data || res?.details?.list || res?.data || res severityList.value = Array.isArray(list) ? list : [] initDispatchRuleData() } catch (error) { diff --git a/src/views/ops/pages/alert/setting/components/PolicyFormDialog.vue b/src/views/ops/pages/alert/setting/components/PolicyFormDialog.vue index 91dd81f..6189407 100644 --- a/src/views/ops/pages/alert/setting/components/PolicyFormDialog.vue +++ b/src/views/ops/pages/alert/setting/components/PolicyFormDialog.vue @@ -9,33 +9,19 @@ @before-ok="handleSubmit" @update:visible="handleVisibleChange" > - + 基础信息 - + - + - + 1 (最高) 2 3 @@ -45,52 +31,29 @@ - + - + - + - - - + + + - + 模板与拓展配置 - + - - + + {{ template.name }} - + - + - + 自动建单与派单 - + - - - + + + - + 不使用特定模板 - + {{ item.template_name }} ({{ item.template_code }}) @@ -143,15 +92,9 @@ {{ formData.auto_create_ticket ? '建议默认选择可用模板,未选择时将按 0 处理' : '请先开启自动建单后再选择工单模板' }} - + - + @@ -154,12 +105,7 @@ import { ref, reactive, computed, watch } from 'vue' import { Message } from '@arco-design/web-vue' import type { FormInstance } from '@arco-design/web-vue' -import { - fetchRuleDetail, - createRule, - updateRule, - fetchSeverityOptions, -} from '@/api/ops/alertPolicy' +import { fetchRuleDetail, createRule, updateRule, fetchSeverityOptions } from '@/api/ops/alertPolicy' // Props interface Props { @@ -259,9 +205,7 @@ const loadSeverityOptions = async (keyword?: string) => { enabled: 'true', }) - const list = Array.isArray(res?.details) - ? res.details - : res?.details?.data || res?.details?.list || res?.data || res + const list = Array.isArray(res?.details) ? res.details : res?.details?.data || res?.details?.list || res?.data || res const fetchedOptions = Array.isArray(list) ? list : [] // 首次/keyword 为空时缓存“全量可用选项” @@ -318,12 +262,12 @@ const handleRuleTypeChange = (value: string) => { // 加载规则详情 const loadRuleDetail = async () => { if (!props.ruleId) return - + try { const res = await fetchRuleDetail(props.ruleId) if (res.code === 0 && res.details) { const rule = res.details - + formData.name = rule.name // 当前产品只保留静态规则:强制按 static 渲染 formData.rule_type = 'static' @@ -379,27 +323,27 @@ const handleSubmit = async () => { Message.warning('缺少策略 ID') return } - + submitLoading.value = true - + try { const data = { ...formData, policy_id: props.policyId, severity_id: formData.severity_id, // 确保 severity_id 是 number 类型 } - + // 按契约:rule/create 不做 jsonb 默认值归一化。 // 当 jsonb 字段无内容时,必须显式传 "{}"(否则可能反序列化为空串导致 SQLSTATE 22P02)。 const createPayload = !isEdit.value ? { - ...data, - baseline_config: '{}', - labels: '{}', - annotations: '{}', - } + ...data, + baseline_config: '{}', + labels: '{}', + annotations: '{}', + } : data - + // 编辑模式 if (isEdit.value && props.ruleId) { await updateRule({ id: props.ruleId, ...data }) @@ -409,7 +353,7 @@ const handleSubmit = async () => { await createRule(createPayload) Message.success('规则创建成功') } - + emit('success') handleCancel() } catch (error: any) { @@ -421,17 +365,20 @@ const handleSubmit = async () => { } // 监听 visible 变化 -watch(() => props.visible, (visible) => { - if (visible) { - if (isEdit.value) { - loadRuleDetail() +watch( + () => props.visible, + (visible) => { + if (visible) { + if (isEdit.value) { + loadRuleDetail() + } else { + resetForm() + } } else { resetForm() } - } else { - resetForm() } -}) +) // 初始化 loadSeverityOptions() diff --git a/src/views/ops/pages/alert/setting/components/RuleManageDialog.vue b/src/views/ops/pages/alert/setting/components/RuleManageDialog.vue index d25a37b..26c4bd9 100644 --- a/src/views/ops/pages/alert/setting/components/RuleManageDialog.vue +++ b/src/views/ops/pages/alert/setting/components/RuleManageDialog.vue @@ -10,13 +10,7 @@
- +
- + - + @@ -191,9 +171,9 @@ const formatDuration = (seconds: number) => { // 加载规则列表 const loadRuleList = async () => { if (!props.policyId) return - + ruleLoading.value = true - + try { const res = await fetchRuleList({ policy_id: props.policyId, @@ -201,7 +181,7 @@ const loadRuleList = async () => { page_size: rulePagination.pageSize, keyword: searchKeyword.value || undefined, }) - + ruleData.value = res.details?.data || [] rulePagination.total = res.details?.total || 0 } catch (error) { @@ -247,12 +227,12 @@ const handleDeleteRule = async (record: any) => { try { await deleteRule(record.id) Message.success('规则删除成功') - + // 如果当前页只有一条数据,且不是第一页,则跳到上一页 if (ruleData.value.length === 1 && rulePagination.current > 1) { rulePagination.current-- } - + loadRuleList() } catch (error) { console.error('删除规则失败:', error) @@ -277,13 +257,16 @@ const handleCancel = () => { } // 监听 visible 变化 -watch(() => props.visible, (visible) => { - if (visible) { - searchKeyword.value = '' - rulePagination.current = 1 - loadRuleList() +watch( + () => props.visible, + (visible) => { + if (visible) { + searchKeyword.value = '' + rulePagination.current = 1 + loadRuleList() + } } -}) +) \ No newline at end of file + diff --git a/src/views/ops/pages/alert/suppress/config/columns.ts b/src/views/ops/pages/alert/suppress/config/columns.ts index 62bb2f3..90d66ca 100644 --- a/src/views/ops/pages/alert/suppress/config/columns.ts +++ b/src/views/ops/pages/alert/suppress/config/columns.ts @@ -89,4 +89,4 @@ export const getTableColumns = (): TableColumnData[] => [ slotName: 'operations', fixed: 'right', }, -] \ No newline at end of file +] diff --git a/src/views/ops/pages/alert/suppress/config/formItems.ts b/src/views/ops/pages/alert/suppress/config/formItems.ts index 741af63..32fc00b 100644 --- a/src/views/ops/pages/alert/suppress/config/formItems.ts +++ b/src/views/ops/pages/alert/suppress/config/formItems.ts @@ -21,10 +21,7 @@ export const useFormItems = (policyOptions: PolicyOption[]) => { type: 'select', span: 6, placeholder: '请选择', - options: [ - { value: '', label: '全部' }, - ...SUPPRESSION_TYPE_OPTIONS, - ], + options: [{ value: '', label: '全部' }, ...SUPPRESSION_TYPE_OPTIONS], }, { field: 'policy_id', @@ -51,4 +48,4 @@ export const useFormItems = (policyOptions: PolicyOption[]) => { ], }, ]) -} \ No newline at end of file +} diff --git a/src/views/ops/pages/alert/suppress/constants.ts b/src/views/ops/pages/alert/suppress/constants.ts index 22ff21c..0333226 100644 --- a/src/views/ops/pages/alert/suppress/constants.ts +++ b/src/views/ops/pages/alert/suppress/constants.ts @@ -56,4 +56,4 @@ export const DEFAULT_SEARCH_FORM = { type: '', policy_id: '', enabled: '', -} \ No newline at end of file +} diff --git a/src/views/ops/pages/alert/suppress/hooks/index.ts b/src/views/ops/pages/alert/suppress/hooks/index.ts index 9715857..95ee648 100644 --- a/src/views/ops/pages/alert/suppress/hooks/index.ts +++ b/src/views/ops/pages/alert/suppress/hooks/index.ts @@ -1,2 +1,2 @@ export { usePolicy } from './usePolicy' -export { useTable } from './useTable' \ No newline at end of file +export { useTable } from './useTable' diff --git a/src/views/ops/pages/alert/suppress/hooks/usePolicy.ts b/src/views/ops/pages/alert/suppress/hooks/usePolicy.ts index 9693f9d..68c00e6 100644 --- a/src/views/ops/pages/alert/suppress/hooks/usePolicy.ts +++ b/src/views/ops/pages/alert/suppress/hooks/usePolicy.ts @@ -39,4 +39,4 @@ export const usePolicy = () => { fetchPolicyOptions, getPolicyName, } -} \ No newline at end of file +} diff --git a/src/views/ops/pages/alert/suppress/hooks/useTable.ts b/src/views/ops/pages/alert/suppress/hooks/useTable.ts index 31aa37c..d5b1fdb 100644 --- a/src/views/ops/pages/alert/suppress/hooks/useTable.ts +++ b/src/views/ops/pages/alert/suppress/hooks/useTable.ts @@ -1,11 +1,6 @@ import { ref, reactive } from 'vue' import { Message, Modal } from '@arco-design/web-vue' -import { - fetchSuppressionList, - updateSuppression, - deleteSuppression, - type SuppressionRule, -} from '@/api/ops/suppression' +import { fetchSuppressionList, updateSuppression, deleteSuppression, type SuppressionRule } from '@/api/ops/suppression' import type { SearchFormModel, PaginationConfig, SwitchLoadingMap } from '../types' import { DEFAULT_PAGINATION, DEFAULT_SEARCH_FORM } from '../constants' @@ -190,4 +185,4 @@ export const useTable = () => { handleDelete, handleGoToPolicy, } -} \ No newline at end of file +} diff --git a/src/views/ops/pages/alert/suppress/index.vue b/src/views/ops/pages/alert/suppress/index.vue index e38c8da..13b3dca 100644 --- a/src/views/ops/pages/alert/suppress/index.vue +++ b/src/views/ops/pages/alert/suppress/index.vue @@ -34,11 +34,7 @@ @@ -83,12 +79,8 @@ diff --git a/src/views/ops/pages/alert/suppress/types.ts b/src/views/ops/pages/alert/suppress/types.ts index ad9eb22..a847b7b 100644 --- a/src/views/ops/pages/alert/suppress/types.ts +++ b/src/views/ops/pages/alert/suppress/types.ts @@ -41,4 +41,4 @@ export type SuppressionFormData = SuppressionRule export type SwitchLoadingMap = Record // 重新导出 API 类型 -export type { SuppressionRule, SuppressionType } \ No newline at end of file +export type { SuppressionRule, SuppressionType } diff --git a/src/views/ops/pages/alert/suppress/utils/index.ts b/src/views/ops/pages/alert/suppress/utils/index.ts index c77f0cd..3200cec 100644 --- a/src/views/ops/pages/alert/suppress/utils/index.ts +++ b/src/views/ops/pages/alert/suppress/utils/index.ts @@ -133,4 +133,4 @@ export const buildCreateData = (formData: SuppressionRule): SuppressionCreatePar if (formData.matchers) createData.matchers = formData.matchers return createData -} \ No newline at end of file +} diff --git a/src/views/ops/pages/alert/tackle/components/AckDialog.vue b/src/views/ops/pages/alert/tackle/components/AckDialog.vue index eb236ba..ef0c395 100644 --- a/src/views/ops/pages/alert/tackle/components/AckDialog.vue +++ b/src/views/ops/pages/alert/tackle/components/AckDialog.vue @@ -13,11 +13,7 @@ - + @@ -37,7 +33,7 @@ const props = defineProps() const emit = defineEmits<{ 'update:visible': [value: boolean] - 'success': [] + success: [] }>() const loading = ref(false) @@ -47,12 +43,15 @@ const form = ref({ const alertId = ref('') -watch(() => props.visible, (val) => { - if (val) { - alertId.value = String(props.alertRecordId) - form.value.comment = '' +watch( + () => props.visible, + (val) => { + if (val) { + alertId.value = String(props.alertRecordId) + form.value.comment = '' + } } -}) +) const handleOk = async () => { loading.value = true diff --git a/src/views/ops/pages/alert/tackle/components/CommentDialog.vue b/src/views/ops/pages/alert/tackle/components/CommentDialog.vue index 4ca32d3..4c72bb3 100644 --- a/src/views/ops/pages/alert/tackle/components/CommentDialog.vue +++ b/src/views/ops/pages/alert/tackle/components/CommentDialog.vue @@ -13,11 +13,7 @@ - + @@ -37,7 +33,7 @@ const props = defineProps() const emit = defineEmits<{ 'update:visible': [value: boolean] - 'success': [] + success: [] }>() const loading = ref(false) @@ -47,12 +43,15 @@ const form = ref({ const alertId = ref('') -watch(() => props.visible, (val) => { - if (val) { - alertId.value = String(props.alertRecordId) - form.value.comment = '' +watch( + () => props.visible, + (val) => { + if (val) { + alertId.value = String(props.alertRecordId) + form.value.comment = '' + } } -}) +) const handleOk = async () => { if (!form.value.comment) { diff --git a/src/views/ops/pages/alert/tackle/components/DetailDialog.vue b/src/views/ops/pages/alert/tackle/components/DetailDialog.vue index 3e11b7f..e1cc804 100644 --- a/src/views/ops/pages/alert/tackle/components/DetailDialog.vue +++ b/src/views/ops/pages/alert/tackle/components/DetailDialog.vue @@ -1,12 +1,5 @@