From 7e84c5c91f3c351922e976255dc97281c1fe371b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=A6=82=E6=91=B8=E9=B1=BC=E5=8E=BB?= <1780903673@qq.com> Date: Tue, 6 May 2025 13:38:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20=E5=BC=95=E5=85=A5vitest?= =?UTF-8?q?=E5=81=9A=E7=BB=84=E4=BB=B6=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 🚀 引入vitest做组件测试 * chore: 🚀 引入vitest做组件测试 * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update workflow * chore: 🚀 update nodejs version * chore: 🚀 update nodejs version --- .github/TESTING.md | 347 +++ .github/workflows/alipay.yml | 2 +- .github/workflows/component-testing.yml | 277 ++ .github/workflows/deploy-android.yml | 2 +- .github/workflows/deploy-site-gitee.yml | 2 +- .github/workflows/npm-publish.yml | 2 +- .github/workflows/weixin.yml | 2 +- .nvmrc | 1 + components.d.ts | 1 + package.json | 34 +- pnpm-lock.yaml | 2326 +++++++++-------- scripts/test-component.ts | 121 + scripts/test-workflow.ts | 320 +++ src/pages/configProvider/Index.vue | 3 +- .../wot-design-uni/components/common/util.ts | 39 +- .../wd-cell-group/wd-cell-group.vue | 4 +- .../components/wd-circle/wd-circle.vue | 4 +- .../components/wd-col/wd-col.vue | 44 +- .../wd-config-provider/wd-config-provider.vue | 6 +- .../wd-datetime-picker-view.vue | 4 +- .../components/wd-divider/wd-divider.vue | 6 +- .../wd-drop-menu-item/wd-drop-menu-item.vue | 1 - .../components/wd-fab/wd-fab.vue | 2 +- .../wd-floating-panel/wd-floating-panel.vue | 2 +- .../components/wd-gap/wd-gap.vue | 2 +- .../components/wd-icon/types.ts | 4 +- .../components/wd-icon/wd-icon.vue | 6 +- .../wd-img-cropper/wd-img-cropper.vue | 4 +- .../components/wd-img/wd-img.vue | 2 +- .../components/wd-keyboard/wd-keyboard.vue | 2 +- .../components/wd-loading/wd-loading.vue | 2 +- .../components/wd-navbar/wd-navbar.vue | 2 +- .../wd-notice-bar/wd-notice-bar.vue | 2 +- .../components/wd-resize/wd-resize.vue | 2 +- .../components/wd-signature/wd-signature.vue | 2 +- .../components/wd-skeleton/types.ts | 4 +- .../components/wd-step/wd-step.vue | 2 +- .../components/wd-steps/wd-steps.vue | 4 +- .../components/wd-sticky/wd-sticky.vue | 6 +- .../components/wd-switch/wd-switch.vue | 2 +- .../components/wd-tabbar/wd-tabbar.vue | 2 +- .../components/wd-table-col/wd-table-col.vue | 6 +- .../components/wd-table/wd-table.vue | 4 +- .../components/wd-tag/wd-tag.vue | 2 +- .../components/wd-text/wd-text.vue | 2 +- .../components/wd-watermark/wd-watermark.vue | 4 +- tests/components/wd-action-sheet.test.ts | 715 +++++ tests/components/wd-backtop.test.ts | 297 +++ tests/components/wd-badge.test.ts | 241 ++ tests/components/wd-button.test.ts | 549 ++++ tests/components/wd-calendar-view.test.ts | 364 +++ tests/components/wd-calendar.test.ts | 552 ++++ tests/components/wd-card.test.ts | 244 ++ tests/components/wd-cell-group.test.ts | 250 ++ tests/components/wd-cell.test.ts | 398 +++ tests/components/wd-checkbox-group.test.ts | 423 +++ tests/components/wd-checkbox.test.ts | 468 ++++ tests/components/wd-circle.test.ts | 315 +++ tests/components/wd-col-picker.test.ts | 311 +++ tests/components/wd-collapse.test.ts | 684 +++++ tests/components/wd-config-provider.test.ts | 152 ++ tests/components/wd-count-down.test.ts | 358 +++ tests/components/wd-count-to.test.ts | 500 ++++ tests/components/wd-curtain.test.ts | 55 + .../wd-datetime-picker-view.test.ts | 317 +++ tests/components/wd-datetime-picker.test.ts | 671 +++++ tests/components/wd-divider.test.ts | 208 ++ tests/components/wd-drop-menu.test.ts | 416 +++ tests/components/wd-fab.test.ts | 84 + tests/components/wd-floating-panel.test.ts | 98 + tests/components/wd-form.test.ts | 1031 ++++++++ tests/components/wd-gap.test.ts | 71 + tests/components/wd-grid-item.test.ts | 126 + tests/components/wd-grid.test.ts | 168 ++ tests/components/wd-icon.test.ts | 214 ++ tests/components/wd-img-cropper.test.ts | 315 +++ tests/components/wd-img.test.ts | 222 ++ tests/components/wd-index-anchor.test.ts | 78 + tests/components/wd-index-bar.test.ts | 156 ++ tests/components/wd-input-number.test.ts | 245 ++ tests/components/wd-input.test.ts | 528 ++++ tests/components/wd-keyboard.test.ts | 354 +++ tests/components/wd-layout.test.ts | 223 ++ tests/components/wd-loading.test.ts | 243 ++ tests/components/wd-loadmore.test.ts | 84 + tests/components/wd-message-box.test.ts | 1012 +++++++ tests/components/wd-navbar-capsule.test.ts | 45 + tests/components/wd-navbar.test.ts | 235 ++ tests/components/wd-notice-bar.test.ts | 138 + tests/components/wd-notify.test.ts | 385 +++ tests/components/wd-number-keyboard.test.ts | 222 ++ tests/components/wd-overlay.test.ts | 138 + tests/components/wd-pagination.test.ts | 207 ++ tests/components/wd-password-input.test.ts | 83 + tests/components/wd-picker-view.test.ts | 246 ++ tests/components/wd-picker.test.ts | 263 ++ tests/components/wd-popover.test.ts | 211 ++ tests/components/wd-popup.test.ts | 193 ++ tests/components/wd-progress.test.ts | 130 + tests/components/wd-radio-group.test.ts | 205 ++ tests/components/wd-radio.test.ts | 149 ++ tests/components/wd-rate.test.ts | 416 +++ tests/components/wd-resize.test.ts | 75 + tests/components/wd-search.test.ts | 152 ++ tests/components/wd-segmented.test.ts | 268 ++ tests/components/wd-select-picker.test.ts | 185 ++ tests/components/wd-sidebar.test.ts | 119 + tests/components/wd-signature.test.ts | 293 +++ tests/components/wd-skeleton.test.ts | 122 + tests/components/wd-slider.test.ts | 181 ++ tests/components/wd-sort-button.test.ts | 109 + tests/components/wd-status-tip.test.ts | 320 +++ tests/components/wd-step.test.ts | 224 ++ tests/components/wd-steps.test.ts | 82 + tests/components/wd-sticky-box.test.ts | 100 + tests/components/wd-sticky.test.ts | 252 ++ tests/components/wd-swipe-action.test.ts | 120 + tests/components/wd-swiper-nav.test.ts | 200 ++ tests/components/wd-swiper.test.ts | 135 + tests/components/wd-switch.test.ts | 303 +++ tests/components/wd-tabbar.test.ts | 173 ++ tests/components/wd-table.test.ts | 709 +++++ tests/components/wd-tabs.test.ts | 430 +++ tests/components/wd-tag.test.ts | 401 +++ tests/components/wd-text.test.ts | 341 +++ tests/components/wd-textarea.test.ts | 150 ++ tests/components/wd-toast.test.ts | 216 ++ tests/components/wd-tooltip.test.ts | 142 + tests/components/wd-transition.test.ts | 234 ++ tests/components/wd-upload.test.ts | 511 ++++ tests/components/wd-video-preview.test.ts | 153 ++ tests/components/wd-watermark.test.ts | 250 ++ .../{useTouch.spec.ts => useTouch.test.ts} | 1 + tests/composables/useTranslate.spec.ts | 105 - tests/composables/useTranslate.test.ts | 237 ++ .../{useUpload.spec.ts => useUpload.test.ts} | 46 +- tests/mocks/wd-transition.mock.ts | 77 + tests/setup.js | 57 - tests/setup.ts | 580 ++++ tests/suppress-warnings.ts | 20 + tests/vite-plugins/conditional-test.test.ts | 96 + tsconfig.json | 3 +- vite-plugins/conditional-test.vue | 113 + .../vite-plugin-uni-conditional-compile.ts | 192 ++ vitest.config.ts | 71 + 145 files changed, 27802 insertions(+), 1372 deletions(-) create mode 100644 .github/TESTING.md create mode 100644 .github/workflows/component-testing.yml create mode 100644 .nvmrc create mode 100644 scripts/test-component.ts create mode 100644 scripts/test-workflow.ts create mode 100644 tests/components/wd-action-sheet.test.ts create mode 100644 tests/components/wd-backtop.test.ts create mode 100644 tests/components/wd-badge.test.ts create mode 100644 tests/components/wd-button.test.ts create mode 100644 tests/components/wd-calendar-view.test.ts create mode 100644 tests/components/wd-calendar.test.ts create mode 100644 tests/components/wd-card.test.ts create mode 100644 tests/components/wd-cell-group.test.ts create mode 100644 tests/components/wd-cell.test.ts create mode 100644 tests/components/wd-checkbox-group.test.ts create mode 100644 tests/components/wd-checkbox.test.ts create mode 100644 tests/components/wd-circle.test.ts create mode 100644 tests/components/wd-col-picker.test.ts create mode 100644 tests/components/wd-collapse.test.ts create mode 100644 tests/components/wd-config-provider.test.ts create mode 100644 tests/components/wd-count-down.test.ts create mode 100644 tests/components/wd-count-to.test.ts create mode 100644 tests/components/wd-curtain.test.ts create mode 100644 tests/components/wd-datetime-picker-view.test.ts create mode 100644 tests/components/wd-datetime-picker.test.ts create mode 100644 tests/components/wd-divider.test.ts create mode 100644 tests/components/wd-drop-menu.test.ts create mode 100644 tests/components/wd-fab.test.ts create mode 100644 tests/components/wd-floating-panel.test.ts create mode 100644 tests/components/wd-form.test.ts create mode 100644 tests/components/wd-gap.test.ts create mode 100644 tests/components/wd-grid-item.test.ts create mode 100644 tests/components/wd-grid.test.ts create mode 100644 tests/components/wd-icon.test.ts create mode 100644 tests/components/wd-img-cropper.test.ts create mode 100644 tests/components/wd-img.test.ts create mode 100644 tests/components/wd-index-anchor.test.ts create mode 100644 tests/components/wd-index-bar.test.ts create mode 100644 tests/components/wd-input-number.test.ts create mode 100644 tests/components/wd-input.test.ts create mode 100644 tests/components/wd-keyboard.test.ts create mode 100644 tests/components/wd-layout.test.ts create mode 100644 tests/components/wd-loading.test.ts create mode 100644 tests/components/wd-loadmore.test.ts create mode 100644 tests/components/wd-message-box.test.ts create mode 100644 tests/components/wd-navbar-capsule.test.ts create mode 100644 tests/components/wd-navbar.test.ts create mode 100644 tests/components/wd-notice-bar.test.ts create mode 100644 tests/components/wd-notify.test.ts create mode 100644 tests/components/wd-number-keyboard.test.ts create mode 100644 tests/components/wd-overlay.test.ts create mode 100644 tests/components/wd-pagination.test.ts create mode 100644 tests/components/wd-password-input.test.ts create mode 100644 tests/components/wd-picker-view.test.ts create mode 100644 tests/components/wd-picker.test.ts create mode 100644 tests/components/wd-popover.test.ts create mode 100644 tests/components/wd-popup.test.ts create mode 100644 tests/components/wd-progress.test.ts create mode 100644 tests/components/wd-radio-group.test.ts create mode 100644 tests/components/wd-radio.test.ts create mode 100644 tests/components/wd-rate.test.ts create mode 100644 tests/components/wd-resize.test.ts create mode 100644 tests/components/wd-search.test.ts create mode 100644 tests/components/wd-segmented.test.ts create mode 100644 tests/components/wd-select-picker.test.ts create mode 100644 tests/components/wd-sidebar.test.ts create mode 100644 tests/components/wd-signature.test.ts create mode 100644 tests/components/wd-skeleton.test.ts create mode 100644 tests/components/wd-slider.test.ts create mode 100644 tests/components/wd-sort-button.test.ts create mode 100644 tests/components/wd-status-tip.test.ts create mode 100644 tests/components/wd-step.test.ts create mode 100644 tests/components/wd-steps.test.ts create mode 100644 tests/components/wd-sticky-box.test.ts create mode 100644 tests/components/wd-sticky.test.ts create mode 100644 tests/components/wd-swipe-action.test.ts create mode 100644 tests/components/wd-swiper-nav.test.ts create mode 100644 tests/components/wd-swiper.test.ts create mode 100644 tests/components/wd-switch.test.ts create mode 100644 tests/components/wd-tabbar.test.ts create mode 100644 tests/components/wd-table.test.ts create mode 100644 tests/components/wd-tabs.test.ts create mode 100644 tests/components/wd-tag.test.ts create mode 100644 tests/components/wd-text.test.ts create mode 100644 tests/components/wd-textarea.test.ts create mode 100644 tests/components/wd-toast.test.ts create mode 100644 tests/components/wd-tooltip.test.ts create mode 100644 tests/components/wd-transition.test.ts create mode 100644 tests/components/wd-upload.test.ts create mode 100644 tests/components/wd-video-preview.test.ts create mode 100644 tests/components/wd-watermark.test.ts rename tests/composables/{useTouch.spec.ts => useTouch.test.ts} (96%) delete mode 100644 tests/composables/useTranslate.spec.ts create mode 100644 tests/composables/useTranslate.test.ts rename tests/composables/{useUpload.spec.ts => useUpload.test.ts} (92%) create mode 100644 tests/mocks/wd-transition.mock.ts delete mode 100644 tests/setup.js create mode 100644 tests/setup.ts create mode 100644 tests/suppress-warnings.ts create mode 100644 tests/vite-plugins/conditional-test.test.ts create mode 100644 vite-plugins/conditional-test.vue create mode 100644 vite-plugins/vite-plugin-uni-conditional-compile.ts create mode 100644 vitest.config.ts diff --git a/.github/TESTING.md b/.github/TESTING.md new file mode 100644 index 00000000..8ab76188 --- /dev/null +++ b/.github/TESTING.md @@ -0,0 +1,347 @@ +# wot-design-uni 测试指南 + +本文档提供了 wot-design-uni 组件库的测试策略、工作流程和最佳实践指南。 + +## 目录 + +- [测试策略](#测试策略) +- [测试工作流](#测试工作流) +- [如何运行测试](#如何运行测试) +- [编写测试](#编写测试) +- [最佳实践](#最佳实践) +- [常见问题](#常见问题) +- [参考资料](#参考资料) + +## 测试策略 + +wot-design-uni 采用以下测试策略: + +### 分层测试 + +- **单元测试**:测试组件的独立功能和属性 +- **集成测试**:测试组件之间的交互和组合使用 +- **快照测试**:确保 UI 不会意外变化 + +### 测试覆盖率目标 + +- **整体代码覆盖率**:85%+ +- **关键组件**(如 ConfigProvider、Button、Input 等):90%+ +- **工具函数**:95%+ + +### 测试粒度 + +- 每个组件至少有一个测试文件 +- 每个组件的主要功能都应有对应的测试用例 +- 边缘情况和错误处理也应有测试用例 + +### 测试平台 + +- **H5 平台**:所有组件都在 H5 平台上测试 +- **条件编译**:虽然我们只在 H5 平台上测试,但测试环境会正确处理条件编译代码 + +## 测试工作流 + +wot-design-uni 使用 GitHub Actions 自动化测试流程,主要工作流文件是 `.github/workflows/component-testing.yml`。 + +### 触发条件 + +测试工作流在以下情况下会自动触发: + +1. **推送到主分支**:当代码推送到 main、master 或 dev 分支,且修改了组件相关文件时 +2. **创建 Pull Request**:当创建针对 main、master 或 dev 分支的 PR,且修改了组件相关文件时 +3. **定时运行**:每周一凌晨 3 点自动运行所有测试 +4. **手动触发**:可以在 GitHub Actions 页面手动触发,并指定要测试的组件 + +### 工作流步骤 + +1. **确定测试矩阵**: + - 根据变更的文件确定需要测试的组件 + +2. **ESLint 检查**: + - 运行 ESLint 检查,确保代码质量 + +3. **组件测试**: + - 针对确定的组件运行 H5 平台测试 + - 生成测试覆盖率报告 + - 上传测试结果到 Codecov + +4. **测试摘要**: + - 生成测试摘要报告 + - 在 PR 中添加测试结果评论 + +## 如何运行测试 + +### 本地运行测试 + +#### 运行所有测试 + +```bash +# 运行所有测试 +pnpm test + +# 运行所有测试并生成覆盖率报告 +pnpm coverage + +# 在 H5 平台上运行所有测试 +pnpm test:h5 +``` + +### GitHub Actions 中运行测试 + +1. 导航到仓库的 Actions 标签页 +2. 从左侧列表中选择 "Component Testing" 工作流 +3. 点击 "Run workflow" 按钮 +4. 可以选择性地指定要测试的组件名称(例如:wd-button) +5. 点击 "Run workflow" 开始测试 + +### 查看测试结果 + +测试完成后,你可以: + +1. 在工作流运行详情页面查看测试结果 +2. 下载测试报告和覆盖率报告 +3. 在 Codecov 上查看详细的覆盖率信息 +4. 如果是 PR,可以在 PR 评论中看到测试摘要 + +## 编写测试 + +### 测试文件结构 + +测试文件应放在 `tests/components` 目录下,命名为 `{组件名}.test.ts`。 + +每个测试文件的基本结构如下: + +```typescript +import { mount } from '@vue/test-utils' +import { describe, test, expect, vi } from 'vitest' +import WdComponent from '../../src/uni_modules/wot-design-uni/components/wd-component/wd-component.vue' + +describe('WdComponent', () => { + // 测试基本渲染 + test('基本渲染', () => { + const wrapper = mount(WdComponent) + expect(wrapper.classes()).toContain('wd-component') + }) + + // 更多测试... +}) +``` + +### 测试用例编写指南 + +#### 1. 测试组件渲染 + +```typescript +test('基本渲染', () => { + const wrapper = mount(WdButton) + expect(wrapper.classes()).toContain('wd-button') +}) +``` + +#### 2. 测试组件属性 + +```typescript +test('按钮类型', () => { + const wrapper = mount(WdButton, { + props: { type: 'primary' } + }) + expect(wrapper.classes()).toContain('wd-button--primary') +}) +``` + +#### 3. 测试组件事件 + +```typescript +test('点击事件', async () => { + const wrapper = mount(WdButton) + await wrapper.trigger('click') + expect(wrapper.emitted('click')).toBeTruthy() +}) +``` + +#### 4. 测试组件插槽 + +```typescript +test('默认插槽', () => { + const wrapper = mount(WdButton, { + slots: { default: '按钮文本' } + }) + expect(wrapper.text()).toContain('按钮文本') +}) +``` + +#### 5. 测试异步行为 + +```typescript +test('异步加载', async () => { + const wrapper = mount(WdComponent, { + props: { loading: true } + }) + + expect(wrapper.classes()).toContain('is-loading') + + await wrapper.setProps({ loading: false }) + expect(wrapper.classes()).not.toContain('is-loading') +}) +``` + +### 条件编译测试 + +虽然我们只在 H5 平台上测试,但可以使用条件编译来测试平台特定代码: + +```typescript +test('平台特定功能', () => { + // 我们在 H5 平台上测试 + // process.env.UNI_PLATFORM 会被设置为 'h5' + if (process.env.UNI_PLATFORM === 'h5') { + // H5 特定测试 + // ... + } +}) +``` + +## 最佳实践 + +### 1. 使用真实组件 + +- 测试真实组件,而不是模拟组件 +- 只在必要时模拟依赖 + +```typescript +// 推荐 +const wrapper = mount(WdButton) + +// 不推荐(除非必要) +const MockButton = { + template: '' +} +const wrapper = mount(MockButton) +``` + +### 2. 测试边缘情况 + +- 测试组件在各种边缘情况下的行为 +- 包括错误处理、极限值等 + +```typescript +test('处理无效输入', () => { + const wrapper = mount(WdInput, { + props: { maxlength: 5 } + }) + + wrapper.setValue('123456') + expect(wrapper.vm.value).toBe('12345') +}) +``` + +### 3. 保持测试简单 + +- 每个测试只测试一个功能点 +- 避免复杂的测试逻辑 + +```typescript +// 推荐 +test('按钮禁用状态', () => { + const wrapper = mount(WdButton, { + props: { disabled: true } + }) + expect(wrapper.classes()).toContain('is-disabled') +}) + +test('按钮禁用时不触发点击事件', async () => { + const wrapper = mount(WdButton, { + props: { disabled: true } + }) + await wrapper.trigger('click') + expect(wrapper.emitted('click')).toBeFalsy() +}) + +// 不推荐 +test('按钮禁用状态和事件', async () => { + const wrapper = mount(WdButton, { + props: { disabled: true } + }) + expect(wrapper.classes()).toContain('is-disabled') + await wrapper.trigger('click') + expect(wrapper.emitted('click')).toBeFalsy() +}) +``` + +### 4. 使用中文测试描述 + +- 使用中文编写测试用例的标题,保持一致性 + +```typescript +// 推荐 +test('基本渲染', () => { + // ... +}) + +// 不推荐 +test('renders with default props', () => { + // ... +}) +``` + +### 5. 定期更新测试 + +- 随着组件的更新,及时更新测试用例 +- 保持测试覆盖率不下降 + +## 常见问题 + +### 1. 测试中的异步问题 + +如果测试中的异步行为不按预期工作,可以尝试: + +```typescript +// 使用 await nextTick() +import { nextTick } from 'vue' + +test('异步行为', async () => { + const wrapper = mount(WdComponent) + wrapper.vm.doSomethingAsync() + await nextTick() + // 断言... +}) + +// 或使用 setTimeout +test('延迟行为', async () => { + const wrapper = mount(WdComponent) + wrapper.vm.doSomethingWithDelay() + await new Promise(resolve => setTimeout(resolve, 100)) + // 断言... +}) +``` + +### 2. 模拟 uni-app API + +在测试中模拟 uni-app API: + +```typescript +// 在 setup.ts 中 +vi.mock('uni-app', () => ({ + uni: { + showToast: vi.fn(), + navigateTo: vi.fn(), + // 其他需要模拟的 API... + } +})) + +// 在测试中 +import { uni } from 'uni-app' + +test('调用 uni API', async () => { + const wrapper = mount(WdComponent) + await wrapper.find('.trigger').trigger('click') + expect(uni.showToast).toHaveBeenCalled() +}) +``` + +## 参考资料 + +- [Vue Test Utils 文档](https://test-utils.vuejs.org/) +- [Vitest 文档](https://vitest.dev/) +- [uni-app 条件编译](https://uniapp.dcloud.net.cn/tutorial/platform.html) +- [Jest 文档](https://jestjs.io/docs/getting-started) +- [Codecov 文档](https://docs.codecov.io/docs) diff --git a/.github/workflows/alipay.yml b/.github/workflows/alipay.yml index d0ea342f..6d997f31 100644 --- a/.github/workflows/alipay.yml +++ b/.github/workflows/alipay.yml @@ -40,7 +40,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/.github/workflows/component-testing.yml b/.github/workflows/component-testing.yml new file mode 100644 index 00000000..34c1a2d8 --- /dev/null +++ b/.github/workflows/component-testing.yml @@ -0,0 +1,277 @@ +name: Component Testing (H5) + +on: + # 在推送到主分支时运行测试 + push: + branches: + - master + paths: + - 'src/uni_modules/wot-design-uni/components/**' + - 'tests/**' + - 'package.json' + - 'pnpm-lock.yaml' + - '.github/workflows/component-testing.yml' + + # 在创建 Pull Request 时运行测试 + pull_request: + branches: + - master + paths: + - 'src/uni_modules/wot-design-uni/components/**' + - 'tests/**' + - 'package.json' + - 'pnpm-lock.yaml' + - '.github/workflows/component-testing.yml' + + # 允许手动触发工作流 + workflow_dispatch: + inputs: + component: + description: '要测试的组件名称(例如:wd-button)' + required: false + type: string + + # 定时运行测试,每周一凌晨3点 + schedule: + - cron: '0 3 * * 1' + +# 设置环境变量 +env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + +jobs: + # 确定要测试的组件 + determine-test-matrix: + name: Determine Test Matrix + runs-on: ubuntu-latest + outputs: + components: ${{ steps.set-components.outputs.components }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: https://registry.npmjs.org + + - uses: pnpm/action-setup@v4 + name: Install pnpm + + - name: Determine changed files + id: changed-files + uses: tj-actions/changed-files@v42 + with: + files: | + src/uni_modules/wot-design-uni/components/** + tests/** + + - name: Set components to test + id: set-components + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.component }}" != "" ]]; then + # 如果是手动触发并指定了组件,则只测试该组件 + echo "components=[\"${{ github.event.inputs.component }}\"]" >> $GITHUB_OUTPUT + elif [[ "${{ steps.changed-files.outputs.all_changed_files }}" == "" || "${{ github.event_name }}" == "schedule" ]]; then + # 如果是定时任务或没有变更文件,则测试所有组件 + COMPONENTS=$(find tests/components -name "*.test.ts" | sed -e 's/tests\/components\///' -e 's/\.test\.ts//' | jq -R -s -c 'split("\n") | map(select(length > 0))') + echo "components=$COMPONENTS" >> $GITHUB_OUTPUT + else + # 根据变更文件确定要测试的组件 + COMPONENTS=() + for file in ${{ steps.changed-files.outputs.all_changed_files }}; do + if [[ $file == src/uni_modules/wot-design-uni/components/* ]]; then + COMPONENT_NAME=$(echo $file | sed -n 's/.*components\/\([^\/]*\)\/.*/\1/p') + if [[ ! -z "$COMPONENT_NAME" && ! " ${COMPONENTS[@]} " =~ " ${COMPONENT_NAME} " ]]; then + COMPONENTS+=("$COMPONENT_NAME") + fi + elif [[ $file == tests/components/*.test.ts ]]; then + COMPONENT_NAME=$(echo $file | sed -n 's/tests\/components\/\(.*\)\.test\.ts/\1/p') + if [[ ! -z "$COMPONENT_NAME" && ! " ${COMPONENTS[@]} " =~ " ${COMPONENT_NAME} " ]]; then + COMPONENTS+=("$COMPONENT_NAME") + fi + elif [[ $file == tests/* ]]; then + # 如果是 tests 目录下的其他文件变化,则测试所有组件 + echo "检测到 tests 目录下的文件变化,将测试所有组件" + COMPONENTS=$(find tests/components -name "*.test.ts" | sed -e 's/tests\/components\///' -e 's/\.test\.ts//' | jq -R -s -c 'split("\n") | map(select(length > 0))') + echo "components=$COMPONENTS" >> $GITHUB_OUTPUT + exit 0 + fi + done + + if [[ ${#COMPONENTS[@]} -eq 0 ]]; then + # 如果没有找到组件,则测试所有组件 + COMPONENTS=$(find tests/components -name "*.test.ts" | sed -e 's/tests\/components\///' -e 's/\.test\.ts//' | jq -R -s -c 'split("\n") | map(select(length > 0))') + else + # 将数组转换为 JSON + COMPONENTS_JSON=$(printf '%s\n' "${COMPONENTS[@]}" | jq -R -s -c 'split("\n") | map(select(length > 0))') + COMPONENTS="$COMPONENTS_JSON" + fi + echo "components=$COMPONENTS" >> $GITHUB_OUTPUT + fi + + # 运行 ESLint 检查 + lint: + name: ESLint Check + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: https://registry.npmjs.org + + - uses: pnpm/action-setup@v4 + name: Install pnpm + + - name: Install dependencies + run: pnpm install + + - name: Run ESLint + run: pnpm lint + + # 运行组件测试 + test-components: + name: Test Components + needs: [determine-test-matrix, lint] + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + component: ${{ fromJson(needs.determine-test-matrix.outputs.components) }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: https://registry.npmjs.org + + - uses: pnpm/action-setup@v4 + name: Install pnpm + + - name: Get pnpm store directory + id: pnpm-cache + run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Setup pnpm cache + uses: actions/cache@v4 + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Run component test + env: + UNI_PLATFORM: h5 + COMPONENT_TEST: true + run: | + if [[ "${{ matrix.component }}" == "all" ]]; then + pnpm test:h5 --coverage + else + pnpm vitest run tests/components/${{ matrix.component }}.test.ts --coverage + fi + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ env.CODECOV_TOKEN }} + directory: ./coverage + flags: ${{ matrix.component }},h5 + name: ${{ matrix.component }}-h5 + fail_ci_if_error: false + + - name: Generate test report + run: | + echo "# 组件测试报告" > test-report-${{ matrix.component }}.md + echo "## 测试时间: $(date)" >> test-report-${{ matrix.component }}.md + echo "## 测试组件: ${{ matrix.component }}" >> test-report-${{ matrix.component }}.md + echo "## 测试平台: H5" >> test-report-${{ matrix.component }}.md + + if [ -f "./coverage/coverage-summary.json" ]; then + echo "## 覆盖率数据:" >> test-report-${{ matrix.component }}.md + echo "\`\`\`json" >> test-report-${{ matrix.component }}.md + cat ./coverage/coverage-summary.json >> test-report-${{ matrix.component }}.md + echo "\`\`\`" >> test-report-${{ matrix.component }}.md + fi + + - name: Upload test report + uses: actions/upload-artifact@v4 + with: + name: test-report-${{ matrix.component }} + path: | + ./test-report-${{ matrix.component }}.md + ./coverage + + # 生成测试摘要 + test-summary: + name: Generate Test Summary + needs: [test-components] + if: always() + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all test reports + uses: actions/download-artifact@v4 + + - name: Generate summary report + run: | + echo "# 组件测试摘要 (H5 平台)" > test-summary.md + echo "## 测试时间: $(date)" >> test-summary.md + echo "## 测试结果" >> test-summary.md + echo "| 组件 | 状态 | 覆盖率 |" >> test-summary.md + echo "| ---- | ---- | ------ |" >> test-summary.md + + for report_dir in test-report-*; do + if [[ -d "$report_dir" ]]; then + component=$(echo $report_dir | sed -n 's/test-report-\(.*\)/\1/p') + + if [[ -f "$report_dir/coverage/coverage-summary.json" ]]; then + coverage=$(cat "$report_dir/coverage/coverage-summary.json" | jq -r '.total.lines.pct') + echo "| $component | ✅ 通过 | $coverage% |" >> test-summary.md + else + echo "| $component | ❌ 失败 | - |" >> test-summary.md + fi + fi + done + + - name: Upload summary report + uses: actions/upload-artifact@v4 + with: + name: test-summary + path: ./test-summary.md + + - name: Add PR comment with test results + if: github.event_name == 'pull_request' + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const fs = require('fs'); + const summary = fs.readFileSync('./test-summary.md', 'utf8'); + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: summary + }); diff --git a/.github/workflows/deploy-android.yml b/.github/workflows/deploy-android.yml index 261e7895..0817cd0f 100644 --- a/.github/workflows/deploy-android.yml +++ b/.github/workflows/deploy-android.yml @@ -19,7 +19,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/.github/workflows/deploy-site-gitee.yml b/.github/workflows/deploy-site-gitee.yml index 4fef7188..2c7e996c 100644 --- a/.github/workflows/deploy-site-gitee.yml +++ b/.github/workflows/deploy-site-gitee.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 3be10c56..c7bb7c7f 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -14,7 +14,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' registry-url: https://registry.npmjs.org - name: Install Dependencies diff --git a/.github/workflows/weixin.yml b/.github/workflows/weixin.yml index 154f47b5..463c2ff7 100644 --- a/.github/workflows/weixin.yml +++ b/.github/workflows/weixin.yml @@ -44,7 +44,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..2edeafb0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/components.d.ts b/components.d.ts index 15d6048c..683630cb 100644 --- a/components.d.ts +++ b/components.d.ts @@ -7,6 +7,7 @@ export {} declare module 'vue' { export interface GlobalComponents { + ConditionalTest: typeof import('./src/components/conditional-test.vue')['default'] DemoBlock: typeof import('./src/components/demo-block/demo-block.vue')['default'] PageWraper: typeof import('./src/components/page-wraper/page-wraper.vue')['default'] WdPrivacyPopup: typeof import('./src/components/wd-privacy-popup/wd-privacy-popup.vue')['default'] diff --git a/package.json b/package.json index e8d70255..c544fcc8 100644 --- a/package.json +++ b/package.json @@ -59,13 +59,14 @@ "build:qrcode": "esno ./scripts/qrcode.ts", "build:changelog": "esno ./scripts/syncChangelog.ts", "build:theme-vars": "esno ./scripts/buildThemeVars.ts", - "test": "jest", - "test:watch": "jest --watch", - "test:h5": "cross-env UNI_PLATFORM=h5 jest -i", - "test:android": "cross-env UNI_PLATFORM=app UNI_OS_NAME=android jest -i", - "test:ios": "cross-env UNI_PLATFORM=app UNI_OS_NAME=ios jest -i", - "test:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin jest -i", - "test:mp-baidu": "cross-env UNI_PLATFORM=mp-baidu jest -i" + "test": "vitest", + "test:h5": "cross-env UNI_PLATFORM=h5 vitest", + "test:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin vitest", + "test:all": "npm run test:h5 && npm run test:mp-weixin", + "coverage": "vitest run --coverage", + "coverage:h5": "cross-env UNI_PLATFORM=h5 vitest run --coverage", + "test:component": "esno ./scripts/test-component.ts", + "test:workflow": "esno ./scripts/test-workflow.ts" }, "dependencies": { "@dcloudio/uni-app": "3.0.0-4050720250324001", @@ -100,25 +101,26 @@ "@dcloudio/uni-stacktracey": "3.0.0-4050720250324001", "@dcloudio/vite-plugin-uni": "3.0.0-4050720250324001", "@element-plus/icons-vue": "^2.3.1", - "@types/jest": "^27.5.2", + "@rollup/pluginutils": "^5.1.4", + "@types/jsdom": "^21.1.7", "@types/node": "^18.15.3", - "@typescript-eslint/eslint-plugin": "^5.55.0", - "@typescript-eslint/parser": "^5.55.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "@uni-helper/uni-types": "1.0.0-alpha.4", "@uni-helper/vite-plugin-uni-components": "^0.1.0", "@vant/area-data": "^1.4.1", "@vant/touch-emulator": "^1.4.0", "@vitalets/google-translate-api": "^9.2.1", + "@vitejs/plugin-vue": "^5.2.3", + "@vitest/coverage-v8": "^3.1.1", "@vue/runtime-core": "^3.4.38", "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.1.3", - "@vue/vue3-jest": "27.0.0-alpha.1", "@vueuse/core": "^12.0.0", "axios": "^1.7.9", - "babel-jest": "^27.5.1", "components-helper": "^2.2.0", "cross-env": "^7.0.3", - "eslint": "^8.36.0", + "eslint": "^8.57.1", "eslint-config-prettier": "^8.7.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-vue": "^9.9.0", @@ -127,8 +129,7 @@ "git-cz": "^4.9.0", "husky": "^8.0.3", "inquirer": "^12.3.2", - "jest": "27.0.4", - "jest-environment-node": "27.5.1", + "jsdom": "^26.0.0", "json5": "^2.2.3", "lint-staged": "^13.2.0", "mini-types": "^0.1.7", @@ -141,14 +142,13 @@ "rollup-plugin-visualizer": "^5.9.0", "sass": "^1.59.3", "standard-version": "^9.5.0", - "ts-jest": "27.0.4", "typescript": "^5.5.4", "uni-read-pages-vite": "^0.0.6", "unplugin-auto-import": "^0.17.5", "unplugin-vue-components": "^0.26.0", "vite": "5.2.8", "vitepress": "^1.5.0", - "vitest": "^0.30.1", + "vitest": "^3.1.1", "vue-eslint-parser": "^9.1.0", "vue-tsc": "^2.0.29" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5bed060..d8bd8da4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,18 +99,21 @@ importers: '@element-plus/icons-vue': specifier: ^2.3.1 version: 2.3.1(vue@3.4.38(typescript@5.5.4)) - '@types/jest': - specifier: ^27.5.2 - version: 27.5.2 + '@rollup/pluginutils': + specifier: ^5.1.4 + version: 5.1.4(rollup@3.29.5) + '@types/jsdom': + specifier: ^21.1.7 + version: 21.1.7 '@types/node': specifier: ^18.15.3 version: 18.15.3 '@typescript-eslint/eslint-plugin': - specifier: ^5.55.0 - version: 5.55.0(@typescript-eslint/parser@5.55.0(eslint@8.36.0)(typescript@5.5.4))(eslint@8.36.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^5.55.0 - version: 5.55.0(eslint@8.36.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.5.4) '@uni-helper/uni-types': specifier: 1.0.0-alpha.4 version: 1.0.0-alpha.4(@uni-helper/uni-app-types@1.0.0-alpha.4(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)))(@uni-helper/uni-cloud-types@1.0.0-alpha.4(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)))(@uni-helper/uni-ui-types@1.0.0-alpha.4(@uni-helper/uni-app-types@1.0.0-alpha.4(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)))(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) @@ -126,6 +129,12 @@ importers: '@vitalets/google-translate-api': specifier: ^9.2.1 version: 9.2.1 + '@vitejs/plugin-vue': + specifier: ^5.2.3 + version: 5.2.3(vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.4.38(typescript@5.5.4)) + '@vitest/coverage-v8': + specifier: ^3.1.1 + version: 3.1.1(vitest@3.1.1(@types/node@18.15.3)(jsdom@26.0.0)(sass@1.59.3)(terser@5.16.6)) '@vue/runtime-core': specifier: ^3.4.38 version: 3.4.38 @@ -135,18 +144,12 @@ importers: '@vue/tsconfig': specifier: ^0.1.3 version: 0.1.3(@types/node@18.15.3) - '@vue/vue3-jest': - specifier: 27.0.0-alpha.1 - version: 27.0.0-alpha.1(@babel/core@7.25.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(ts-jest@27.0.4(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) '@vueuse/core': specifier: ^12.0.0 version: 12.0.0(typescript@5.5.4) axios: specifier: ^1.7.9 version: 1.7.9 - babel-jest: - specifier: ^27.5.1 - version: 27.5.1(@babel/core@7.25.2) components-helper: specifier: ^2.2.0 version: 2.2.0 @@ -154,17 +157,17 @@ importers: specifier: ^7.0.3 version: 7.0.3 eslint: - specifier: ^8.36.0 - version: 8.36.0 + specifier: ^8.57.1 + version: 8.57.1 eslint-config-prettier: specifier: ^8.7.0 - version: 8.7.0(eslint@8.36.0) + version: 8.7.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.7.0(eslint@8.36.0))(eslint@8.36.0)(prettier@2.8.4) + version: 4.2.1(eslint-config-prettier@8.7.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.4) eslint-plugin-vue: specifier: ^9.9.0 - version: 9.9.0(eslint@8.36.0) + version: 9.9.0(eslint@8.57.1) esno: specifier: ^4.8.0 version: 4.8.0 @@ -180,12 +183,9 @@ importers: inquirer: specifier: ^12.3.2 version: 12.3.2(@types/node@18.15.3) - jest: - specifier: 27.0.4 - version: 27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)) - jest-environment-node: - specifier: 27.5.1 - version: 27.5.1 + jsdom: + specifier: ^26.0.0 + version: 26.0.0 json5: specifier: ^2.2.3 version: 2.2.3 @@ -222,9 +222,6 @@ importers: standard-version: specifier: ^9.5.0 version: 9.5.0 - ts-jest: - specifier: 27.0.4 - version: 27.0.4(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(typescript@5.5.4) typescript: specifier: ^5.5.4 version: 5.5.4 @@ -236,7 +233,7 @@ importers: version: 0.17.5(@vueuse/core@12.0.0(typescript@5.5.4))(rollup@3.29.5) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(@babel/parser@7.26.10)(rollup@3.29.5)(vue@3.4.38(typescript@5.5.4)) + version: 0.26.0(@babel/parser@7.27.1)(rollup@3.29.5)(vue@3.4.38(typescript@5.5.4)) vite: specifier: 5.2.8 version: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) @@ -244,11 +241,11 @@ importers: specifier: ^1.5.0 version: 1.5.0(@algolia/client-search@5.15.0)(@types/node@18.15.3)(async-validator@4.2.5)(axios@1.7.9)(postcss@8.4.49)(sass@1.59.3)(search-insights@2.13.0)(terser@5.16.6)(typescript@5.5.4) vitest: - specifier: ^0.30.1 - version: 0.30.1(jsdom@16.7.0)(sass@1.59.3)(terser@5.16.6) + specifier: ^3.1.1 + version: 3.1.1(@types/node@18.15.3)(jsdom@26.0.0)(sass@1.59.3)(terser@5.16.6) vue-eslint-parser: specifier: ^9.1.0 - version: 9.1.0(eslint@8.36.0) + version: 9.1.0(eslint@8.57.1) vue-tsc: specifier: ^2.0.29 version: 2.0.29(typescript@5.5.4) @@ -337,18 +334,33 @@ packages: '@antfu/utils@0.7.7': resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + '@asamuzakjp/css-color@3.1.1': + resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.4': resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.27.1': + resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.26.10': resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} engines: {node: '>=6.9.0'} @@ -357,6 +369,10 @@ packages: resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -373,6 +389,10 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.1': + resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.4': resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} @@ -412,6 +432,10 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} @@ -424,6 +448,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -440,6 +470,10 @@ packages: resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.25.0': resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} engines: {node: '>=6.9.0'} @@ -474,10 +508,18 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -486,6 +528,10 @@ packages: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.0': resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} engines: {node: '>=6.9.0'} @@ -494,6 +540,10 @@ packages: resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.25.6': resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} @@ -509,6 +559,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.1': + resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} engines: {node: '>=6.9.0'} @@ -588,6 +643,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -652,6 +713,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -996,6 +1063,10 @@ packages: resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.1': + resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.10': resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} engines: {node: '>=6.9.0'} @@ -1004,6 +1075,10 @@ packages: resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.26.10': resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} @@ -1012,9 +1087,17 @@ packages: resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + '@commitlint/cli@19.5.0': resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} @@ -1088,6 +1171,34 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@ctrl/tinycolor@3.6.1': resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -1253,12 +1364,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -1277,12 +1382,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -1301,12 +1400,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -1325,12 +1418,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -1349,12 +1436,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -1373,12 +1454,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -1397,12 +1472,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -1421,12 +1490,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -1445,12 +1508,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -1469,12 +1526,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -1493,12 +1544,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -1517,12 +1562,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -1541,12 +1580,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -1565,12 +1598,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -1589,12 +1616,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -1613,12 +1634,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -1637,12 +1652,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -1667,12 +1676,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -1691,12 +1694,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -1715,12 +1712,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -1739,12 +1730,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -1763,12 +1748,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -1793,16 +1772,22 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.4.0': - resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.0.1': - resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.36.0': - resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@floating-ui/core@1.4.1': @@ -1814,16 +1799,18 @@ packages: '@floating-ui/utils@0.1.1': resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} - '@humanwhocodes/config-array@0.11.8': - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 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'} - '@humanwhocodes/object-schema@1.2.1': - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@hutson/parse-repository-url@3.0.2': resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} @@ -2182,10 +2169,6 @@ packages: resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -2228,15 +2211,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -2397,27 +2371,18 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/chai-subset@1.3.3': - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - - '@types/chai@4.3.4': - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/conventional-commits-parser@5.0.0': resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -2439,11 +2404,8 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@27.5.2': - resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} - - '@types/json-schema@7.0.11': - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + '@types/jsdom@21.1.7': + resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -2472,23 +2434,20 @@ packages: '@types/node@18.19.74': resolution: {integrity: sha512-HMwEkkifei3L605gFdV+/UwtpxP6JSzM+xFk2Ia6DNFSwSVBRh9qp5Tgf4lNFOMfPVuU0WnkcWpXZpgn5ufO4A==} + '@types/node@18.19.87': + resolution: {integrity: sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==} + '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} '@types/prettier@2.7.3': resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - '@types/semver@7.3.13': - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/strip-bom@3.0.0': - resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} - - '@types/strip-json-comments@0.0.30': - resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -2508,63 +2467,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@5.55.0': - resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@5.55.0': - resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@5.55.0': - resolution: {integrity: sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@5.55.0': - resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: '*' + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@5.55.0': - resolution: {integrity: sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@5.55.0': - resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@5.55.0': - resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@5.55.0': - resolution: {integrity: sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2635,27 +2594,50 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitejs/plugin-vue@5.2.1': - resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} + '@vitejs/plugin-vue@5.2.3': + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/expect@0.30.1': - resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} + '@vitest/coverage-v8@3.1.1': + resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==} + peerDependencies: + '@vitest/browser': 3.1.1 + vitest: 3.1.1 + peerDependenciesMeta: + '@vitest/browser': + optional: true - '@vitest/runner@0.30.1': - resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} - '@vitest/snapshot@0.30.1': - resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vitest/spy@0.30.1': - resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} - '@vitest/utils@0.30.1': - resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} + + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} + + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} + + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} '@volar/language-core@2.4.5': resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} @@ -2807,21 +2789,6 @@ packages: '@types/node': optional: true - '@vue/vue3-jest@27.0.0-alpha.1': - resolution: {integrity: sha512-V4erTP0LvI0B4kM/cgSiusF0yahByrqJCAUQKDvpW3104J4njoNUY1HwSMqvv5SASOrzxer4ui3EDWyl8Pw2Lg==} - peerDependencies: - '@babel/core': 7.x - babel-jest: 27.x - jest: 27.x - ts-jest: 27.x - typescript: '>= 3.x' - vue: ^3.0.0-0 - peerDependenciesMeta: - ts-jest: - optional: true - typescript: - optional: true - '@vueuse/core@11.3.0': resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==} @@ -2918,10 +2885,6 @@ packages: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} @@ -2936,16 +2899,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} @@ -2971,6 +2924,10 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -3046,8 +3003,9 @@ packages: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -3059,11 +3017,6 @@ packages: asynckit@0.4.0: 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'} - hasBin: true - autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -3138,9 +3091,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - bmp-js@0.1.0: resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} @@ -3180,9 +3130,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3212,6 +3163,10 @@ packages: resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} @@ -3234,12 +3189,15 @@ packages: caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + caniuse-lite@1.0.30001717: + resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -3270,8 +3228,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -3284,8 +3243,8 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} @@ -3371,10 +3330,6 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} - concordance@5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -3559,9 +3514,6 @@ packages: css-system-font-keywords@1.0.0: resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} - css@2.2.4: - resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -3577,6 +3529,10 @@ packages: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} + cssstyle@4.3.0: + resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -3592,9 +3548,9 @@ packages: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} - date-time@3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} @@ -3651,10 +3607,6 @@ packages: decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} - decode-uri-component@0.2.2: - 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'} @@ -3662,8 +3614,8 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-is@0.1.4: @@ -3747,6 +3699,10 @@ packages: resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} engines: {node: '>=6'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -3761,6 +3717,9 @@ packages: electron-to-chromium@1.5.13: resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + electron-to-chromium@1.5.149: + resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==} + element-plus@2.3.9: resolution: {integrity: sha512-TIOLnPl4cnoCPXqK3QYh+jpkthUBQnAM21O7o3Lhbse8v9pfrRXRTaBJtoEKnYNa8GZ4lZptUfH0PeZgDCNLUg==} peerDependencies: @@ -3801,22 +3760,36 @@ packages: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -3887,14 +3860,14 @@ packages: peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-utils@3.0.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -3909,9 +3882,14 @@ packages: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.36.0: - resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + 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 esno@4.8.0: @@ -3922,6 +3900,10 @@ packages: resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3935,10 +3917,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3972,6 +3950,10 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + expect@27.5.1: resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3987,10 +3969,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - extract-from-css@0.4.4: - resolution: {integrity: sha512-41qWGBdtKp9U7sgBxAQ7vonYqSXzgW/SiAYzq4tdWSVhAShvpVCH1nyvPQgjse6EdgbW7Y7ERdT3674/lKr65A==} - engines: {node: '>=0.10.0', npm: '>=2.0.0'} - extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -4094,8 +4072,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@3.0.2: - resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} + form-data@3.0.3: + resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} engines: {node: '>= 6'} form-data@4.0.1: @@ -4149,12 +4127,13 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -4164,6 +4143,10 @@ packages: engines: {node: '>=6.9.0'} hasBin: true + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -4250,14 +4233,18 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} @@ -4290,10 +4277,18 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -4329,6 +4324,10 @@ packages: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -4347,10 +4346,18 @@ packages: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -4368,6 +4375,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + icss-replace-symbols@1.1.0: resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} @@ -4384,6 +4395,10 @@ packages: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + immutable@4.3.0: resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} @@ -4600,6 +4615,10 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} @@ -4764,13 +4783,6 @@ packages: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} - js-sdsl@4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - - js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4794,6 +4806,15 @@ packages: canvas: optional: true + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -4985,9 +5006,8 @@ packages: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} - loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -5006,20 +5026,16 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} - engines: {node: '>=12'} - magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -5041,9 +5057,9 @@ packages: mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - md5-hex@3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} @@ -5201,14 +5217,6 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} - mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -5248,9 +5256,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5279,6 +5284,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + nopt@7.2.1: resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5321,6 +5329,9 @@ packages: nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} @@ -5357,8 +5368,8 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} os-locale-s-fix@1.0.8-fix-1: @@ -5453,6 +5464,9 @@ packages: parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -5510,17 +5524,15 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.0: - resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -5532,9 +5544,6 @@ packages: resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5564,8 +5573,8 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} pixelmatch@4.0.2: @@ -5705,10 +5714,6 @@ packages: pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5858,10 +5863,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - resolve.exports@1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} @@ -5918,6 +5919,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -5958,6 +5962,10 @@ packages: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -5986,6 +5994,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -6059,21 +6072,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6134,8 +6135,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.3.2: - resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} @@ -6211,17 +6212,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} - strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -6288,6 +6282,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -6311,15 +6309,11 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - time-zone@1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} - timm@1.7.1: resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} - tinybench@2.4.0: - resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} @@ -6327,14 +6321,28 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinypool@0.4.0: - resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@2.1.0: - resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tldts-core@6.1.85: + resolution: {integrity: sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==} + + tldts@6.1.85: + resolution: {integrity: sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==} + hasBin: true + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -6354,6 +6362,10 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -6361,6 +6373,10 @@ packages: resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} engines: {node: '>=8'} + tr46@5.1.0: + resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + engines: {node: '>=18'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -6368,23 +6384,11 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - ts-jest@27.0.4: - resolution: {integrity: sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^26.0.0 - babel-jest: '>=27.0.0 <28' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true + typescript: '>=4.2.0' ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -6400,21 +6404,9 @@ packages: '@swc/wasm': optional: true - tsconfig@7.0.0: - resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.19.2: resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} engines: {node: '>=18.0.0'} @@ -6595,13 +6587,15 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -6635,9 +6629,9 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@0.30.1: - resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} - engines: {node: '>=v14.18.0'} + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite-plugin-compression@0.5.1: @@ -6645,34 +6639,6 @@ packages: peerDependencies: vite: '>=2.0.0' - vite@4.5.5: - resolution: {integrity: sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.2.8: resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6744,22 +6710,25 @@ packages: postcss: optional: true - vitest@0.30.1: - resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} - engines: {node: '>=v14.18.0'} + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true + '@types/node': + optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -6768,12 +6737,6 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} @@ -6850,6 +6813,10 @@ packages: resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} engines: {node: '>=10'} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -6864,6 +6831,10 @@ packages: resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} engines: {node: '>=10.4'} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -6874,16 +6845,24 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - well-known-symbols@2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - whatwg-encoding@1.0.5: resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + whatwg-mimetype@2.3.0: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -6907,13 +6886,13 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true - word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} wordwrap@1.0.0: @@ -6961,6 +6940,18 @@ packages: utf-8-validate: optional: true + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.6.0: resolution: {integrity: sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==} engines: {node: '>=10.0.0'} @@ -6983,6 +6974,10 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xml-parse-from-string@1.0.1: resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} @@ -7184,14 +7179,30 @@ snapshots: '@antfu/utils@0.7.7': {} + '@asamuzakjp/css-color@3.1.1': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.4': {} + '@babel/compat-data@7.27.1': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -7212,6 +7223,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.26.10': dependencies: '@babel/parser': 7.26.10 @@ -7228,18 +7259,26 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: '@babel/traverse': 7.26.10 - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color @@ -7251,6 +7290,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.27.1': + dependencies: + '@babel/compat-data': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7312,7 +7359,7 @@ snapshots: '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.26.10 - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color @@ -7323,6 +7370,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7342,6 +7396,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.26.10 @@ -7354,6 +7417,8 @@ snapshots: '@babel/helper-plugin-utils@7.26.5': {} + '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7384,32 +7449,38 @@ snapshots: '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.26.10 - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: '@babel/traverse': 7.26.10 - '@babel/types': 7.26.5 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.9 @@ -7423,6 +7494,11 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.5 + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 + '@babel/parser@7.25.6': dependencies: '@babel/types': 7.26.10 @@ -7435,6 +7511,10 @@ snapshots: dependencies: '@babel/types': 7.26.5 + '@babel/parser@7.27.1': + dependencies: + '@babel/types': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7479,21 +7559,36 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7514,16 +7609,31 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7534,46 +7644,91 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8053,6 +8208,12 @@ snapshots: '@babel/parser': 7.26.10 '@babel/types': 7.26.10 + '@babel/template@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@babel/traverse@7.26.10': dependencies: '@babel/code-frame': 7.26.2 @@ -8077,6 +8238,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.26.10': dependencies: '@babel/helper-string-parser': 7.25.9 @@ -8087,8 +8260,15 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@1.0.2': {} + '@commitlint/cli@19.5.0(@types/node@18.15.3)(typescript@5.5.4)': dependencies: '@commitlint/format': 19.5.0 @@ -8204,6 +8384,26 @@ snapshots: '@jridgewell/trace-mapping': 0.3.9 optional: true + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + '@ctrl/tinycolor@3.6.1': {} '@dcloudio/types@3.4.12': {} @@ -8256,7 +8456,7 @@ snapshots: '@dcloudio/uni-shared': 3.0.0-4050720250324001 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 @@ -8266,7 +8466,7 @@ snapshots: es-module-lexer: 1.3.0 estree-walker: 2.0.2 fs-extra: 10.1.0 - magic-string: 0.30.14 + magic-string: 0.30.17 picocolors: 1.1.1 source-map-js: 1.2.1 unimport: 3.14.6(rollup@3.29.5) @@ -8285,7 +8485,7 @@ snapshots: '@dcloudio/uni-i18n': 3.0.0-4050720250324001 '@dcloudio/uni-nvue-styler': 3.0.0-4050720250324001 '@dcloudio/uni-shared': 3.0.0-4050720250324001 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.4.38(typescript@5.5.4)) '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 @@ -8456,7 +8656,7 @@ snapshots: dependencies: '@dcloudio/uni-cli-shared': 3.0.0-4050720250324001(@vueuse/core@12.0.0(typescript@5.5.4))(postcss@8.4.49)(rollup@3.29.5)(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4))(vue@3.4.38(typescript@5.5.4)) '@dcloudio/uni-shared': 3.0.0-4050720250324001 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) '@vue/compiler-dom': 3.4.21 '@vue/compiler-sfc': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.38(typescript@5.5.4)) @@ -8855,9 +9055,6 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true - '@esbuild/android-arm64@0.18.20': - optional: true - '@esbuild/android-arm64@0.20.2': optional: true @@ -8867,9 +9064,6 @@ snapshots: '@esbuild/android-arm64@0.23.1': optional: true - '@esbuild/android-arm@0.18.20': - optional: true - '@esbuild/android-arm@0.20.2': optional: true @@ -8879,9 +9073,6 @@ snapshots: '@esbuild/android-arm@0.23.1': optional: true - '@esbuild/android-x64@0.18.20': - optional: true - '@esbuild/android-x64@0.20.2': optional: true @@ -8891,9 +9082,6 @@ snapshots: '@esbuild/android-x64@0.23.1': optional: true - '@esbuild/darwin-arm64@0.18.20': - optional: true - '@esbuild/darwin-arm64@0.20.2': optional: true @@ -8903,9 +9091,6 @@ snapshots: '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/darwin-x64@0.18.20': - optional: true - '@esbuild/darwin-x64@0.20.2': optional: true @@ -8915,9 +9100,6 @@ snapshots: '@esbuild/darwin-x64@0.23.1': optional: true - '@esbuild/freebsd-arm64@0.18.20': - optional: true - '@esbuild/freebsd-arm64@0.20.2': optional: true @@ -8927,9 +9109,6 @@ snapshots: '@esbuild/freebsd-arm64@0.23.1': optional: true - '@esbuild/freebsd-x64@0.18.20': - optional: true - '@esbuild/freebsd-x64@0.20.2': optional: true @@ -8939,9 +9118,6 @@ snapshots: '@esbuild/freebsd-x64@0.23.1': optional: true - '@esbuild/linux-arm64@0.18.20': - optional: true - '@esbuild/linux-arm64@0.20.2': optional: true @@ -8951,9 +9127,6 @@ snapshots: '@esbuild/linux-arm64@0.23.1': optional: true - '@esbuild/linux-arm@0.18.20': - optional: true - '@esbuild/linux-arm@0.20.2': optional: true @@ -8963,9 +9136,6 @@ snapshots: '@esbuild/linux-arm@0.23.1': optional: true - '@esbuild/linux-ia32@0.18.20': - optional: true - '@esbuild/linux-ia32@0.20.2': optional: true @@ -8975,9 +9145,6 @@ snapshots: '@esbuild/linux-ia32@0.23.1': optional: true - '@esbuild/linux-loong64@0.18.20': - optional: true - '@esbuild/linux-loong64@0.20.2': optional: true @@ -8987,9 +9154,6 @@ snapshots: '@esbuild/linux-loong64@0.23.1': optional: true - '@esbuild/linux-mips64el@0.18.20': - optional: true - '@esbuild/linux-mips64el@0.20.2': optional: true @@ -8999,9 +9163,6 @@ snapshots: '@esbuild/linux-mips64el@0.23.1': optional: true - '@esbuild/linux-ppc64@0.18.20': - optional: true - '@esbuild/linux-ppc64@0.20.2': optional: true @@ -9011,9 +9172,6 @@ snapshots: '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-riscv64@0.18.20': - optional: true - '@esbuild/linux-riscv64@0.20.2': optional: true @@ -9023,9 +9181,6 @@ snapshots: '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/linux-s390x@0.18.20': - optional: true - '@esbuild/linux-s390x@0.20.2': optional: true @@ -9035,9 +9190,6 @@ snapshots: '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/linux-x64@0.18.20': - optional: true - '@esbuild/linux-x64@0.20.2': optional: true @@ -9047,9 +9199,6 @@ snapshots: '@esbuild/linux-x64@0.23.1': optional: true - '@esbuild/netbsd-x64@0.18.20': - optional: true - '@esbuild/netbsd-x64@0.20.2': optional: true @@ -9062,9 +9211,6 @@ snapshots: '@esbuild/openbsd-arm64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.18.20': - optional: true - '@esbuild/openbsd-x64@0.20.2': optional: true @@ -9074,9 +9220,6 @@ snapshots: '@esbuild/openbsd-x64@0.23.1': optional: true - '@esbuild/sunos-x64@0.18.20': - optional: true - '@esbuild/sunos-x64@0.20.2': optional: true @@ -9086,9 +9229,6 @@ snapshots: '@esbuild/sunos-x64@0.23.1': optional: true - '@esbuild/win32-arm64@0.18.20': - optional: true - '@esbuild/win32-arm64@0.20.2': optional: true @@ -9098,9 +9238,6 @@ snapshots: '@esbuild/win32-arm64@0.23.1': optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true - '@esbuild/win32-ia32@0.20.2': optional: true @@ -9110,9 +9247,6 @@ snapshots: '@esbuild/win32-ia32@0.23.1': optional: true - '@esbuild/win32-x64@0.18.20': - optional: true - '@esbuild/win32-x64@0.20.2': optional: true @@ -9122,18 +9256,23 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.2.0(eslint@8.36.0)': + '@eslint-community/eslint-utils@4.2.0(eslint@8.57.1)': dependencies: - eslint: 8.36.0 - eslint-visitor-keys: 3.3.0 + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.4.0': {} + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 - '@eslint/eslintrc@2.0.1': + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.0 + debug: 4.4.0 + espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -9143,7 +9282,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.36.0': {} + '@eslint/js@8.57.1': {} '@floating-ui/core@1.4.1': dependencies: @@ -9156,17 +9295,17 @@ snapshots: '@floating-ui/utils@0.1.1': {} - '@humanwhocodes/config-array@0.11.8': + '@humanwhocodes/config-array@0.13.0': dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@1.2.1': {} + '@humanwhocodes/object-schema@2.0.3': {} '@hutson/parse-repository-url@3.0.2': {} @@ -9339,7 +9478,7 @@ snapshots: '@jest/console@27.5.1': dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -9352,7 +9491,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -9386,14 +9525,14 @@ snapshots: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 jest-mock: 27.5.1 '@jest/fake-timers@27.5.1': dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.19.74 + '@types/node': 18.19.87 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -9411,7 +9550,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -9458,7 +9597,7 @@ snapshots: '@jest/transform@27.5.1': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.27.1 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -9469,7 +9608,7 @@ snapshots: jest-regex-util: 27.5.1 jest-util: 27.5.1 micromatch: 4.0.8 - pirates: 4.0.6 + pirates: 4.0.7 slash: 3.0.0 source-map: 0.6.1 write-file-atomic: 3.0.3 @@ -9480,7 +9619,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.74 + '@types/node': 18.19.87 '@types/yargs': 16.0.9 chalk: 4.1.2 @@ -9758,7 +9897,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/gen-mapping@0.3.8': @@ -9767,10 +9906,7 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.0': {} - - '@jridgewell/resolve-uri@3.1.2': - optional: true + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -9785,8 +9921,8 @@ snapshots: '@jridgewell/trace-mapping@0.3.25': dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: @@ -9811,14 +9947,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/pluginutils@5.1.0(rollup@3.29.5)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.29.5 - '@rollup/pluginutils@5.1.4(rollup@3.29.5)': dependencies: '@types/estree': 1.0.6 @@ -9941,42 +10069,34 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.27.1 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.26.5 - - '@types/chai-subset@1.3.3': - dependencies: - '@types/chai': 4.3.4 - - '@types/chai@4.3.4': {} + '@babel/types': 7.27.1 '@types/conventional-commits-parser@5.0.0': dependencies: '@types/node': 18.15.3 - '@types/estree@1.0.5': {} - '@types/estree@1.0.6': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 18.19.74 + '@types/node': 18.19.87 '@types/hast@3.0.4': dependencies: @@ -9994,12 +10114,11 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@27.5.2': + '@types/jsdom@21.1.7': dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 - - '@types/json-schema@7.0.11': {} + '@types/node': 18.19.74 + '@types/tough-cookie': 4.0.5 + parse5: 7.2.1 '@types/linkify-it@5.0.0': {} @@ -10028,17 +10147,17 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@18.19.87': + dependencies: + undici-types: 5.26.5 + '@types/normalize-package-data@2.4.1': {} '@types/prettier@2.7.3': {} - '@types/semver@7.3.13': {} - '@types/stack-utils@2.0.3': {} - '@types/strip-bom@3.0.0': {} - - '@types/strip-json-comments@0.0.30': {} + '@types/tough-cookie@4.0.5': {} '@types/unist@3.0.3': {} @@ -10057,89 +10176,86 @@ snapshots: '@types/node': 18.19.74 optional: true - '@typescript-eslint/eslint-plugin@5.55.0(@typescript-eslint/parser@5.55.0(eslint@8.36.0)(typescript@5.5.4))(eslint@8.36.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.55.0(eslint@8.36.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/type-utils': 5.55.0(eslint@8.36.0)(typescript@5.5.4) - '@typescript-eslint/utils': 5.55.0(eslint@8.36.0)(typescript@5.5.4) - debug: 4.3.4 - eslint: 8.36.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.4.0 - tsutils: 3.21.0(typescript@5.5.4) + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.55.0(eslint@8.36.0)(typescript@5.5.4)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0(typescript@5.5.4) - debug: 4.3.4 - eslint: 8.36.0 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.0 + eslint: 8.57.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.55.0': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/visitor-keys': 5.55.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@5.55.0(eslint@8.36.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 5.55.0(typescript@5.5.4) - '@typescript-eslint/utils': 5.55.0(eslint@8.36.0)(typescript@5.5.4) - debug: 4.3.7 - eslint: 8.36.0 - tsutils: 3.21.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.5.4) + debug: 4.4.0 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.55.0': {} + '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@5.55.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/visitor-keys': 5.55.0 - debug: 4.3.7 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.4.0 - tsutils: 3.21.0(typescript@5.5.4) + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.55.0(eslint@8.36.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.2.0(eslint@8.36.0) - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0(typescript@5.5.4) - eslint: 8.36.0 - eslint-scope: 5.1.1 - semver: 7.4.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 8.57.1 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.55.0': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 5.55.0 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -10170,7 +10286,7 @@ snapshots: '@uni-helper/vite-plugin-uni-components@0.1.0(rollup@3.29.5)': dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) chokidar: 3.5.3 debug: 4.3.7 fast-glob: 3.3.3 @@ -10224,39 +10340,73 @@ snapshots: vite: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) vue: 3.4.38(typescript@5.5.4) - '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.5.13(typescript@5.5.4))': + '@vitejs/plugin-vue@5.2.3(vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.4.38(typescript@5.5.4))': + dependencies: + vite: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) + vue: 3.4.38(typescript@5.5.4) + + '@vitejs/plugin-vue@5.2.3(vite@5.4.11(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.5.13(typescript@5.5.4))': dependencies: vite: 5.4.11(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) vue: 3.5.13(typescript@5.5.4) - '@vitest/expect@0.30.1': - dependencies: - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 - chai: 4.3.7 - - '@vitest/runner@0.30.1': - dependencies: - '@vitest/utils': 0.30.1 - concordance: 5.0.4 - p-limit: 4.0.0 - pathe: 1.1.0 - - '@vitest/snapshot@0.30.1': + '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/node@18.15.3)(jsdom@26.0.0)(sass@1.59.3)(terser@5.16.6))': dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 magic-string: 0.30.17 - pathe: 1.1.0 - pretty-format: 27.5.1 + magicast: 0.3.5 + std-env: 3.9.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.1.1(@types/node@18.15.3)(jsdom@26.0.0)(sass@1.59.3)(terser@5.16.6) + transitivePeerDependencies: + - supports-color - '@vitest/spy@0.30.1': + '@vitest/expect@3.1.1': dependencies: - tinyspy: 2.1.0 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + tinyrainbow: 2.0.0 - '@vitest/utils@0.30.1': + '@vitest/mocker@3.1.1(vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))': dependencies: - concordance: 5.0.4 - loupe: 2.3.6 - pretty-format: 27.5.1 + '@vitest/spy': 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) + + '@vitest/pretty-format@3.1.1': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.1': + dependencies: + '@vitest/utils': 3.1.1 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.1': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + loupe: 3.1.3 + tinyrainbow: 2.0.0 '@volar/language-core@2.4.5': dependencies: @@ -10372,19 +10522,19 @@ snapshots: '@vue/compiler-ssr': 3.4.38 '@vue/shared': 3.4.38 estree-walker: 2.0.2 - magic-string: 0.30.11 + magic-string: 0.30.17 postcss: 8.4.47 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.10 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.14 + magic-string: 0.30.17 postcss: 8.4.49 source-map-js: 1.2.1 @@ -10510,24 +10660,6 @@ snapshots: optionalDependencies: '@types/node': 18.15.3 - '@vue/vue3-jest@27.0.0-alpha.1(@babel/core@7.25.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(ts-jest@27.0.4(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.25.2) - babel-jest: 27.5.1(@babel/core@7.25.2) - chalk: 2.4.2 - convert-source-map: 1.9.0 - extract-from-css: 0.4.4 - jest: 27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)) - source-map: 0.5.6 - tsconfig: 7.0.0 - vue: 3.4.38(typescript@5.5.4) - optionalDependencies: - ts-jest: 27.0.4(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(typescript@5.5.4) - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 @@ -10615,14 +10747,16 @@ snapshots: acorn: 7.4.1 acorn-walk: 7.2.0 + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn-jsx@5.3.2(acorn@8.8.2): dependencies: acorn: 8.8.2 acorn-walk@7.2.0: {} - acorn-walk@8.2.0: {} - acorn-walk@8.3.4: dependencies: acorn: 8.14.1 @@ -10632,10 +10766,6 @@ snapshots: acorn@8.11.3: {} - acorn@8.12.1: {} - - acorn@8.14.0: {} - acorn@8.14.1: {} acorn@8.8.2: {} @@ -10652,6 +10782,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.3: {} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -10736,7 +10868,7 @@ snapshots: arrify@1.0.1: {} - assertion-error@1.1.0: {} + assertion-error@2.0.1: {} astral-regex@2.0.0: {} @@ -10744,8 +10876,6 @@ snapshots: asynckit@0.4.0: {} - atob@2.1.2: {} - autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.23.3 @@ -10766,14 +10896,14 @@ snapshots: transitivePeerDependencies: - debug - babel-jest@27.5.1(@babel/core@7.25.2): + babel-jest@27.5.1(@babel/core@7.27.1): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.27.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.25.2) + babel-preset-jest: 27.5.1(@babel/core@7.27.1) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -10782,7 +10912,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -10792,10 +10922,10 @@ snapshots: babel-plugin-jest-hoist@27.5.1: dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): dependencies: @@ -10821,30 +10951,30 @@ snapshots: transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) - babel-preset-jest@27.5.1(@babel/core@7.25.2): + babel-preset-jest@27.5.1(@babel/core@7.27.1): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.27.1 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) balanced-match@1.0.2: {} @@ -10862,8 +10992,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blueimp-md5@2.19.0: {} - bmp-js@0.1.0: {} body-parser@1.20.1: @@ -10916,9 +11044,12 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - bs-logger@0.2.6: + browserslist@4.24.5: dependencies: - fast-json-stable-stringify: 2.1.0 + caniuse-lite: 1.0.30001717 + electron-to-chromium: 1.5.149 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) bser@2.1.1: dependencies: @@ -10941,6 +11072,11 @@ snapshots: cac@6.7.9: {} + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.2: dependencies: function-bind: 1.1.2 @@ -10960,17 +11096,17 @@ snapshots: caniuse-lite@1.0.30001707: {} + caniuse-lite@1.0.30001717: {} + ccount@2.0.1: {} - chai@4.3.7: + chai@5.2.0: dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 chalk@2.4.2: dependencies: @@ -10995,7 +11131,7 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.2: {} + check-error@2.1.1: {} chokidar@3.5.3: dependencies: @@ -11013,7 +11149,7 @@ snapshots: ci-info@3.9.0: {} - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.4.3: {} clean-stack@2.2.0: {} @@ -11095,17 +11231,6 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 - concordance@5.0.4: - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.2.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.4.0 - well-known-symbols: 2.0.0 - confbox@0.1.8: {} confbox@0.2.1: {} @@ -11329,13 +11454,6 @@ snapshots: css-system-font-keywords@1.0.0: {} - css@2.2.4: - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.5.3 - urix: 0.1.0 - cssesc@3.0.0: {} cssom@0.3.8: {} @@ -11346,6 +11464,11 @@ snapshots: dependencies: cssom: 0.3.8 + cssstyle@4.3.0: + dependencies: + '@asamuzakjp/css-color': 3.1.1 + rrweb-cssom: 0.8.0 + csstype@3.1.3: {} dargs@7.0.0: {} @@ -11358,9 +11481,10 @@ snapshots: whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - date-time@3.1.0: + data-urls@5.0.0: dependencies: - time-zone: 1.0.0 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 dateformat@3.0.3: {} @@ -11393,15 +11517,11 @@ snapshots: decimal.js@10.5.0: {} - decode-uri-component@0.2.2: {} - decode-uri-component@0.4.1: {} dedent@0.7.0: {} - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -11464,6 +11584,12 @@ snapshots: find-up: 3.0.0 minimatch: 3.1.2 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + eastasianwidth@0.2.0: {} editorconfig@1.0.4: @@ -11477,6 +11603,8 @@ snapshots: electron-to-chromium@1.5.13: {} + electron-to-chromium@1.5.149: {} + element-plus@2.3.9(vue@3.4.38(typescript@5.5.4)): dependencies: '@ctrl/tinycolor': 3.6.1 @@ -11557,45 +11685,37 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.9 + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + es-module-lexer@1.3.0: {} + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.0 has: 1.0.3 has-tostringtag: 1.0.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 @@ -11697,68 +11817,71 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@8.7.0(eslint@8.36.0): + eslint-config-prettier@8.7.0(eslint@8.57.1): dependencies: - eslint: 8.36.0 + eslint: 8.57.1 - eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.7.0(eslint@8.36.0))(eslint@8.36.0)(prettier@2.8.4): + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.7.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.4): dependencies: - eslint: 8.36.0 + eslint: 8.57.1 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 optionalDependencies: - eslint-config-prettier: 8.7.0(eslint@8.36.0) + eslint-config-prettier: 8.7.0(eslint@8.57.1) - eslint-plugin-vue@9.9.0(eslint@8.36.0): + eslint-plugin-vue@9.9.0(eslint@8.57.1): dependencies: - eslint: 8.36.0 - eslint-utils: 3.0.0(eslint@8.36.0) + eslint: 8.57.1 + eslint-utils: 3.0.0(eslint@8.57.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.11 semver: 7.4.0 - vue-eslint-parser: 9.1.0(eslint@8.36.0) + vue-eslint-parser: 9.1.0(eslint@8.57.1) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@7.1.1: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@8.36.0): + eslint-scope@7.2.2: dependencies: - eslint: 8.36.0 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-utils@3.0.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} eslint-visitor-keys@3.3.0: {} - eslint@8.36.0: + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.2.0(eslint@8.36.0) - '@eslint-community/regexpp': 4.4.0 - '@eslint/eslintrc': 2.0.1 - '@eslint/js': 8.36.0 - '@humanwhocodes/config-array': 0.11.8 + '@eslint-community/eslint-utils': 4.2.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 + cross-spawn: 7.0.6 + debug: 4.4.0 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-visitor-keys: 3.3.0 - espree: 9.5.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -11766,22 +11889,19 @@ snapshots: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.20.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.3.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.4 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -11796,6 +11916,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.3.0 + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} esquery@1.5.0: @@ -11806,15 +11932,13 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 esutils@2.0.3: {} @@ -11848,6 +11972,8 @@ snapshots: exit@0.1.2: {} + expect-type@1.2.1: {} + expect@27.5.1: dependencies: '@jest/types': 27.5.1 @@ -11899,10 +12025,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extract-from-css@0.4.4: - dependencies: - css: 2.2.4 - extract-zip@2.0.1: dependencies: debug: 4.4.0 @@ -12017,10 +12139,11 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@3.0.2: + form-data@3.0.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 mime-types: 2.1.35 form-data@4.0.1: @@ -12067,14 +12190,25 @@ snapshots: get-caller-file@2.0.5: {} - get-func-name@2.0.0: {} - get-intrinsic@1.2.0: dependencies: function-bind: 1.1.2 has: 1.0.3 has-symbols: 1.0.3 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-package-type@0.1.0: {} get-pkg-repo@4.2.1: @@ -12084,6 +12218,11 @@ snapshots: through2: 2.0.5 yargs: 16.2.0 + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@5.2.0: dependencies: pump: 3.0.2 @@ -12194,11 +12333,13 @@ snapshots: dependencies: get-intrinsic: 1.2.0 + gopd@1.2.0: {} + graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} + graphemer@1.4.0: {} handlebars@4.7.7: dependencies: @@ -12225,10 +12366,16 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + has@1.0.3: dependencies: function-bind: 1.1.2 @@ -12271,6 +12418,10 @@ snapshots: dependencies: whatwg-encoding: 1.0.5 + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + html-escaper@2.0.2: {} html-tags@3.3.1: {} @@ -12293,6 +12444,13 @@ snapshots: transitivePeerDependencies: - supports-color + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -12300,6 +12458,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} human-signals@4.3.0: {} @@ -12310,6 +12475,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + icss-replace-symbols@1.1.0: {} icss-utils@5.1.0(postcss@8.4.49): @@ -12320,6 +12489,8 @@ snapshots: ignore@5.2.4: {} + ignore@5.3.2: {} + immutable@4.3.0: {} import-fresh@3.3.0: @@ -12496,8 +12667,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.26.5 + '@babel/core': 7.27.1 + '@babel/parser': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -12518,6 +12689,14 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 @@ -12540,7 +12719,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -12582,10 +12761,10 @@ snapshots: jest-config@27.5.1(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.27.1 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.25.2) + babel-jest: 27.5.1(@babel/core@7.27.1) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -12638,7 +12817,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -12653,7 +12832,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -12663,7 +12842,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.9 - '@types/node': 18.19.74 + '@types/node': 18.19.87 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12682,7 +12861,7 @@ snapshots: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -12712,7 +12891,7 @@ snapshots: jest-message-util@27.5.1: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -12725,7 +12904,7 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): optionalDependencies: @@ -12761,7 +12940,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -12793,7 +12972,7 @@ snapshots: '@jest/transform': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 execa: 5.1.1 glob: 7.2.3 @@ -12812,21 +12991,21 @@ snapshots: jest-serializer@27.5.1: dependencies: - '@types/node': 18.19.74 + '@types/node': 18.19.87 graceful-fs: 4.2.11 jest-snapshot@27.5.1: dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.26.5 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.25.2) - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.11 @@ -12838,14 +13017,14 @@ snapshots: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12864,7 +13043,7 @@ snapshots: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.74 + '@types/node': 18.19.87 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -12872,7 +13051,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.19.74 + '@types/node': 18.19.87 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12911,10 +13090,6 @@ snapshots: js-cookie@3.0.5: {} - js-sdsl@4.3.0: {} - - js-string-escape@1.0.1: {} - js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -12931,7 +13106,7 @@ snapshots: jsdom@16.7.0: dependencies: abab: 2.0.6 - acorn: 8.14.0 + acorn: 8.14.1 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -12939,12 +13114,12 @@ snapshots: decimal.js: 10.5.0 domexception: 2.0.1 escodegen: 2.1.0 - form-data: 3.0.2 + form-data: 3.0.3 html-encoding-sniffer: 2.0.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 + nwsapi: 2.2.20 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -12962,6 +13137,34 @@ snapshots: - supports-color - utf-8-validate + jsdom@26.0.0: + dependencies: + cssstyle: 4.3.0 + data-urls: 5.0.0 + decimal.js: 10.5.0 + form-data: 4.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsesc@0.5.0: {} jsesc@3.1.0: {} @@ -13144,9 +13347,7 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - loupe@2.3.6: - dependencies: - get-func-name: 2.0.0 + loupe@3.1.3: {} lru-cache@10.4.3: {} @@ -13164,27 +13365,26 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.14: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.2: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.8: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + magicast@0.3.5: + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + source-map-js: 1.2.1 + make-dir@4.0.0: dependencies: semver: 7.6.3 - make-error@1.3.6: {} + make-error@1.3.6: + optional: true makeerror@1.0.12: dependencies: @@ -13196,9 +13396,7 @@ snapshots: mark.js@8.11.1: {} - md5-hex@3.0.1: - dependencies: - blueimp-md5: 2.19.0 + math-intrinsics@1.1.0: {} mdast-util-to-hast@13.2.0: dependencies: @@ -13343,15 +13541,6 @@ snapshots: dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} - - mlly@1.2.0: - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.4.0 - mlly@1.6.1: dependencies: acorn: 8.11.3 @@ -13384,8 +13573,6 @@ snapshots: nanoid@3.3.8: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -13402,6 +13589,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + nopt@7.2.1: dependencies: abbrev: 2.0.0 @@ -13452,6 +13641,8 @@ snapshots: nwsapi@2.2.16: {} + nwsapi@2.2.20: {} + object-inspect@1.12.3: {} object-keys@1.1.1: {} @@ -13493,14 +13684,14 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - optionator@0.9.1: + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 + word-wrap: 1.2.5 os-locale-s-fix@1.0.8-fix-1: dependencies: @@ -13595,6 +13786,10 @@ snapshots: parse5@6.0.1: {} + parse5@7.2.1: + dependencies: + entities: 4.5.0 + parseurl@1.3.3: {} path-browserify@1.0.1: {} @@ -13633,13 +13828,11 @@ snapshots: path-type@4.0.0: {} - pathe@1.1.0: {} - pathe@1.1.2: {} pathe@2.0.3: {} - pathval@1.1.1: {} + pathval@2.0.0: {} pend@1.2.0: {} @@ -13647,8 +13840,6 @@ snapshots: phin@2.9.3: {} - picocolors@1.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -13663,7 +13854,7 @@ snapshots: pify@3.0.0: {} - pirates@4.0.6: {} + pirates@4.0.7: {} pixelmatch@4.0.2: dependencies: @@ -13807,8 +13998,6 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@2.3.0: {} - punycode@2.3.1: {} puppeteer@14.0.0: @@ -13978,8 +14167,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve-url@0.2.1: {} - resolve.exports@1.1.1: {} resolve@1.22.10: @@ -14025,6 +14212,7 @@ snapshots: rollup@3.29.5: optionalDependencies: fsevents: 2.3.3 + optional: true rollup@4.28.1: dependencies: @@ -14051,6 +14239,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.28.1 fsevents: 2.3.3 + rrweb-cssom@0.8.0: {} + run-async@3.0.0: {} run-parallel@1.2.0: @@ -14091,6 +14281,10 @@ snapshots: dependencies: xmlchars: 2.2.0 + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scule@1.3.0: {} search-insights@2.13.0: {} @@ -14107,6 +14301,8 @@ snapshots: semver@7.6.3: {} + semver@7.7.1: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -14196,23 +14392,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-url@0.4.1: {} - - source-map@0.5.6: {} - source-map@0.6.1: {} source-map@0.7.4: {} @@ -14274,7 +14458,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.3.2: {} + std-env@3.9.0: {} string-argv@0.3.1: {} @@ -14356,14 +14540,8 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} - strip-literal@1.0.1: - dependencies: - acorn: 8.8.2 - strip-literal@1.3.0: dependencies: acorn: 8.11.3 @@ -14438,6 +14616,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-extensions@1.9.0: {} text-extensions@2.4.0: {} @@ -14457,19 +14641,27 @@ snapshots: through@2.3.8: {} - time-zone@1.0.0: {} - timm@1.7.1: {} - tinybench@2.4.0: {} + tinybench@2.9.0: {} tinycolor2@1.6.0: {} tinyexec@0.3.0: {} - tinypool@0.4.0: {} + tinyexec@0.3.2: {} - tinyspy@2.1.0: {} + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + tldts-core@6.1.85: {} + + tldts@6.1.85: + dependencies: + tldts-core: 6.1.85 tmp@0.0.33: dependencies: @@ -14490,34 +14682,27 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.85 + tr46@0.0.3: {} tr46@2.1.0: dependencies: punycode: 2.3.1 + tr46@5.1.0: + dependencies: + punycode: 2.3.1 + trim-lines@3.0.1: {} trim-newlines@3.0.1: {} - ts-jest@27.0.4(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)))(typescript@5.5.4): + ts-api-utils@1.4.3(typescript@5.5.4): dependencies: - bs-logger: 0.2.6 - buffer-from: 1.1.2 - fast-json-stable-stringify: 2.1.0 - jest: 27.0.4(ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4)) - jest-util: 27.5.1 - json5: 2.2.3 - lodash: 4.17.21 - make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.6.3 typescript: 5.5.4 - yargs-parser: 20.2.9 - optionalDependencies: - '@babel/core': 7.25.2 - '@types/jest': 27.5.2 - babel-jest: 27.5.1(@babel/core@7.25.2) ts-node@10.9.2(@types/node@18.15.3)(typescript@5.5.4): dependencies: @@ -14538,22 +14723,8 @@ snapshots: yn: 3.1.1 optional: true - tsconfig@7.0.0: - dependencies: - '@types/strip-bom': 3.0.0 - '@types/strip-json-comments': 0.0.30 - strip-bom: 3.0.0 - strip-json-comments: 2.0.1 - - tslib@1.14.1: {} - tslib@2.5.0: {} - tsutils@3.21.0(typescript@5.5.4): - dependencies: - tslib: 1.14.1 - typescript: 5.5.4 - tsx@4.19.2: dependencies: esbuild: 0.23.1 @@ -14653,13 +14824,13 @@ snapshots: unimport@3.7.1(rollup@3.29.5): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) acorn: 8.11.3 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.3 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.17 mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 @@ -14701,7 +14872,7 @@ snapshots: unplugin-auto-import@0.17.5(@vueuse/core@12.0.0(typescript@5.5.4))(rollup@3.29.5): dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) fast-glob: 3.3.3 local-pkg: 0.5.0 magic-string: 0.30.8 @@ -14728,10 +14899,10 @@ snapshots: transitivePeerDependencies: - rollup - unplugin-vue-components@0.26.0(@babel/parser@7.26.10)(rollup@3.29.5)(vue@3.4.38(typescript@5.5.4)): + unplugin-vue-components@0.26.0(@babel/parser@7.27.1)(rollup@3.29.5)(vue@3.4.38(typescript@5.5.4)): dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) chokidar: 3.5.3 debug: 4.3.4 fast-glob: 3.3.3 @@ -14742,7 +14913,7 @@ snapshots: unplugin: 1.7.1 vue: 3.4.38(typescript@5.5.4) optionalDependencies: - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.1 transitivePeerDependencies: - rollup - supports-color @@ -14767,11 +14938,15 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: - punycode: 2.3.0 - - urix@0.1.0: {} + punycode: 2.3.1 url-parse@1.5.10: dependencies: @@ -14812,14 +14987,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@0.30.1(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6): + vite-node@3.1.1(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6): dependencies: cac: 6.7.14 debug: 4.4.0 - mlly: 1.2.0 - pathe: 1.1.0 - picocolors: 1.1.1 - vite: 4.5.5(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) transitivePeerDependencies: - '@types/node' - less @@ -14839,17 +15013,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite@4.5.5(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.49 - rollup: 3.29.5 - optionalDependencies: - '@types/node': 18.15.3 - fsevents: 2.3.3 - sass: 1.59.3 - terser: 5.16.6 - vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6): dependencies: esbuild: 0.20.2 @@ -14881,7 +15044,7 @@ snapshots: '@shikijs/transformers': 1.24.0 '@shikijs/types': 1.24.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.5.13(typescript@5.5.4)) + '@vitejs/plugin-vue': 5.2.3(vite@5.4.11(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6))(vue@3.5.13(typescript@5.5.4)) '@vue/devtools-api': 7.6.7 '@vue/shared': 3.5.13 '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.5.4)) @@ -14922,39 +15085,35 @@ snapshots: - typescript - universal-cookie - vitest@0.30.1(jsdom@16.7.0)(sass@1.59.3)(terser@5.16.6): + vitest@3.1.1(@types/node@18.15.3)(jsdom@26.0.0)(sass@1.59.3)(terser@5.16.6): dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.15.3 - '@vitest/expect': 0.30.1 - '@vitest/runner': 0.30.1 - '@vitest/snapshot': 0.30.1 - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 - acorn: 8.8.2 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - concordance: 5.0.4 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.2 - pathe: 1.1.0 - picocolors: 1.0.0 - source-map: 0.6.1 - std-env: 3.3.2 - strip-literal: 1.0.1 - tinybench: 2.4.0 - tinypool: 0.4.0 - vite: 4.5.5(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) - vite-node: 0.30.1(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) - why-is-node-running: 2.2.2 + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(vite@5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 5.2.8(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) + vite-node: 3.1.1(@types/node@18.15.3)(sass@1.59.3)(terser@5.16.6) + why-is-node-running: 2.3.0 optionalDependencies: - jsdom: 16.7.0 + '@types/node': 18.15.3 + jsdom: 26.0.0 transitivePeerDependencies: - less - lightningcss + - msw - sass - stylus - sugarss @@ -14973,10 +15132,10 @@ snapshots: dependencies: vue: 3.4.38(typescript@5.5.4) - vue-eslint-parser@9.1.0(eslint@8.36.0): + vue-eslint-parser@9.1.0(eslint@8.57.1): dependencies: debug: 4.3.4 - eslint: 8.36.0 + eslint: 8.57.1 eslint-scope: 7.1.1 eslint-visitor-keys: 3.3.0 espree: 9.5.0 @@ -15034,6 +15193,10 @@ snapshots: dependencies: xml-name-validator: 3.0.0 + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -15044,20 +15207,31 @@ snapshots: webidl-conversions@6.1.0: {} + webidl-conversions@7.0.0: {} + webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.1: {} webpack-virtual-modules@0.6.2: {} - well-known-symbols@2.0.0: {} - whatwg-encoding@1.0.5: dependencies: iconv-lite: 0.4.24 + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-mimetype@2.3.0: {} + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.0 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -15094,12 +15268,12 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.2.2: + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - word-wrap@1.2.3: {} + word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -15134,6 +15308,8 @@ snapshots: ws@8.13.0: {} + ws@8.18.1: {} + ws@8.6.0: {} xhr@2.6.0: @@ -15147,6 +15323,8 @@ snapshots: xml-name-validator@4.0.0: {} + xml-name-validator@5.0.0: {} + xml-parse-from-string@1.0.1: {} xml2js@0.4.23: diff --git a/scripts/test-component.ts b/scripts/test-component.ts new file mode 100644 index 00000000..89194c89 --- /dev/null +++ b/scripts/test-component.ts @@ -0,0 +1,121 @@ +#!/usr/bin/env node + +/** + * 组件测试脚本 (仅 H5 平台) + * 用法: + * - 测试单个组件:pnpm test:component wd-button + * - 测试多个组件:pnpm test:component wd-button wd-input + * - 生成覆盖率报告:pnpm test:component wd-button --coverage + */ + +import { execSync } from 'child_process' +import fs from 'fs' +import path from 'path' + +// 定义类型 +type TestOptions = { + components: string[] + coverage: boolean +} + +/** + * 解析命令行参数 + * @returns 解析后的测试选项 + */ +function parseArgs(): TestOptions { + const args = process.argv.slice(2) + const components: string[] = [] + let coverage = false + + // 解析参数 + args.forEach((arg) => { + if (arg === '--coverage') { + coverage = true + } else { + components.push(arg) + } + }) + + return { components, coverage } +} + +/** + * 显示帮助信息 + */ +function showHelp(): void { + console.log(` +组件测试脚本 (仅 H5 平台) +用法: + - 测试单个组件:pnpm test:component wd-button + - 测试多个组件:pnpm test:component wd-button wd-input + - 生成覆盖率报告:pnpm test:component wd-button --coverage + `) +} + +/** + * 检查组件测试文件是否存在 + * @param components 组件列表 + * @returns 是否所有组件测试文件都存在 + */ +function checkTestFilesExist(components: string[]): boolean { + for (const component of components) { + const testFile = path.join(__dirname, '..', 'tests', 'components', `${component}.test.ts`) + if (!fs.existsSync(testFile)) { + console.error(`错误:找不到组件 ${component} 的测试文件:${testFile}`) + return false + } + } + return true +} + +/** + * 运行组件测试 + * @param options 测试选项 + */ +function runComponentTests(options: TestOptions): void { + const { components, coverage } = options + + // 构建测试命令 + const testFiles = components.map((component) => `tests/components/${component}.test.ts`).join(' ') + const coverageFlag = coverage ? '--coverage' : '' + const command = `cross-env UNI_PLATFORM=h5 COMPONENT_TEST=true vitest run ${testFiles} ${coverageFlag}` + + console.log(`正在运行测试 (H5 平台):${command}`) + + try { + // 执行测试命令 + execSync(command, { stdio: 'inherit' }) + console.log('测试完成!') + } catch (error) { + if (error instanceof Error) { + console.error('测试失败!', error.message) + } else { + console.error('测试失败!', error) + } + process.exit(1) + } +} + +/** + * 主函数 + */ +function main(): void { + const options = parseArgs() + + // 如果没有指定组件,显示帮助信息 + if (options.components.length === 0) { + showHelp() + process.exit(0) + } + + // 检查组件测试文件是否存在 + if (!checkTestFilesExist(options.components)) { + process.exit(1) + } + + // 运行组件测试 + runComponentTests(options) +} + +// 执行主函数 +main() diff --git a/scripts/test-workflow.ts b/scripts/test-workflow.ts new file mode 100644 index 00000000..1595e219 --- /dev/null +++ b/scripts/test-workflow.ts @@ -0,0 +1,320 @@ +#!/usr/bin/env node + +/** + * 本地测试组件测试工作流 (仅 H5 平台) + * + * 用法: + * - 测试单个组件: pnpm test:workflow wd-button + * - 测试多个组件: pnpm test:workflow wd-button wd-input + * - 测试所有组件: pnpm test:workflow --all + * - 跳过 lint: pnpm test:workflow wd-button --skip-lint + * - 生成覆盖率报告: pnpm test:workflow wd-button --coverage + */ + +import { execSync } from 'child_process' +import fs from 'fs' +import path from 'path' + +// 定义类型 +type WorkflowOptions = { + components: string[] + skipLint: boolean + coverage: boolean + testAll: boolean +} + +type TestResult = { + component: string + status: 'success' | 'failure' + coverage?: CoverageData | null + error?: string +} + +type CoverageData = { + lines: { total: number; covered: number; skipped: number; pct: number } + statements: { total: number; covered: number; skipped: number; pct: number } + functions: { total: number; covered: number; skipped: number; pct: number } + branches: { total: number; covered: number; skipped: number; pct: number } +} + +/** + * 解析命令行参数 + * @returns 解析后的工作流选项 + */ +function parseArgs(): WorkflowOptions { + const args = process.argv.slice(2) + const components: string[] = [] + let skipLint = false + let coverage = false + let testAll = false + + // 解析参数 + args.forEach((arg) => { + if (arg === '--all') { + testAll = true + } else if (arg === '--skip-lint') { + skipLint = true + } else if (arg === '--coverage') { + coverage = true + } else { + components.push(arg) + } + }) + + return { components, skipLint, coverage, testAll } +} + +/** + * 显示帮助信息 + */ +function showHelp(): void { + console.log(` +本地测试组件测试工作流 (仅 H5 平台) + +用法: + - 测试单个组件: pnpm test:workflow wd-button + - 测试多个组件: pnpm test:workflow wd-button wd-input + - 测试所有组件: pnpm test:workflow --all + - 跳过 lint: pnpm test:workflow wd-button --skip-lint + - 生成覆盖率报告: pnpm test:workflow wd-button --coverage + `) +} + +/** + * 获取所有组件测试文件 + * @returns 所有组件名称列表 + */ +function getAllComponents(): string[] { + const testsDir = path.join(__dirname, '..', 'tests', 'components') + return fs + .readdirSync(testsDir) + .filter((file) => file.endsWith('.test.ts')) + .map((file) => file.replace('.test.ts', '')) +} + +/** + * 检查组件测试文件是否存在 + * @param components 组件列表 + * @returns 是否所有组件测试文件都存在 + */ +function checkTestFilesExist(components: string[]): boolean { + for (const component of components) { + const testFile = path.join(__dirname, '..', 'tests', 'components', `${component}.test.ts`) + if (!fs.existsSync(testFile)) { + console.error(`错误:找不到组件 ${component} 的测试文件:${testFile}`) + return false + } + } + return true +} + +/** + * 运行 ESLint 检查 + * @returns 是否检查通过 + */ +async function runLint(): Promise { + try { + console.log('\n📝 步骤 1: 运行 ESLint 检查') + console.log('-'.repeat(80)) + console.log('运行 ESLint 检查...') + execSync('pnpm lint', { stdio: 'inherit' }) + console.log('✅ ESLint 检查通过') + return true + } catch (error) { + console.error('❌ ESLint 检查失败') + if (error instanceof Error) { + console.error(error.message) + } + return false + } +} + +/** + * 获取覆盖率数据 + * @param component 组件名称 + * @returns 覆盖率数据 + */ +function getCoverageData(component: string): CoverageData | null { + try { + const coveragePath = path.join(__dirname, '..', 'coverage', 'coverage-summary.json') + if (fs.existsSync(coveragePath)) { + const coverageData = JSON.parse(fs.readFileSync(coveragePath, 'utf8')) + return coverageData.total as CoverageData + } + } catch (error) { + console.error(`无法读取 ${component} 的覆盖率数据:`, error) + } + + return null +} + +/** + * 运行组件测试 + * @param components 组件列表 + * @param coverage 是否生成覆盖率报告 + * @returns 测试结果列表 + */ +async function runComponentTests(components: string[], coverage: boolean): Promise { + console.log('\n🧪 步骤 2: 运行组件测试 (H5 平台)') + console.log('-'.repeat(80)) + + const results: TestResult[] = [] + + for (const component of components) { + console.log(`\n测试组件: ${component}`) + + try { + const coverageFlag = coverage ? '--coverage' : '' + const command = `cross-env UNI_PLATFORM=h5 COMPONENT_TEST=true vitest run tests/components/${component}.test.ts ${coverageFlag}` + + console.log(`执行命令: ${command}`) + execSync(command, { stdio: 'inherit' }) + + results.push({ + component, + status: 'success', + coverage: coverage ? getCoverageData(component) : null + }) + + console.log(`✅ 组件 ${component} 测试通过`) + } catch (error) { + let errorMessage = 'Unknown error' + if (error instanceof Error) { + errorMessage = error.message + } + + results.push({ + component, + status: 'failure', + error: errorMessage + }) + + console.error(`❌ 组件 ${component} 测试失败`) + } + } + + return results +} + +/** + * 生成测试报告 + * @param results 测试结果列表 + */ +function generateTestReport(results: TestResult[]): void { + console.log('\n📊 步骤 3: 生成测试报告') + console.log('-'.repeat(80)) + + const reportDir = path.join(__dirname, '..', 'test-reports') + if (!fs.existsSync(reportDir)) { + fs.mkdirSync(reportDir, { recursive: true }) + } + + const reportPath = path.join(reportDir, `test-report-h5-${new Date().toISOString().replace(/:/g, '-')}.md`) + + let report = '# 组件测试报告 (H5 平台)\n\n' + report += `## 测试时间: ${new Date().toLocaleString()}\n\n` + report += '## 测试结果\n\n' + report += '| 组件 | 状态 | 行覆盖率 | 语句覆盖率 | 函数覆盖率 | 分支覆盖率 |\n' + report += '| ---- | ---- | -------- | ---------- | ---------- | ---------- |\n' + + results.forEach((result) => { + const status = result.status === 'success' ? '✅ 通过' : '❌ 失败' + + if (result.coverage) { + const { lines, statements, functions, branches } = result.coverage + report += `| ${result.component} | ${status} | ${lines.pct}% | ${statements.pct}% | ${functions.pct}% | ${branches.pct}% |\n` + } else { + report += `| ${result.component} | ${status} | - | - | - | - |\n` + } + }) + + fs.writeFileSync(reportPath, report) + console.log(`测试报告已生成: ${reportPath}`) +} + +/** + * 主函数 + */ +async function main(): Promise { + try { + const options = parseArgs() + + // 如果指定了 --all,则测试所有组件 + if (options.testAll) { + options.components = getAllComponents() + } + + // 如果没有指定组件且没有指定 --all,显示帮助信息 + if (options.components.length === 0 && !options.testAll) { + showHelp() + return + } + + // 检查组件测试文件是否存在 + if (!checkTestFilesExist(options.components)) { + process.exit(1) + } + + console.log('='.repeat(80)) + console.log('🚀 开始测试工作流 - 平台: H5') + console.log('='.repeat(80)) + + const startTime = Date.now() + + // 步骤 1: 运行 ESLint 检查 + if (!options.skipLint) { + const lintSuccess = await runLint() + if (!lintSuccess) { + process.exit(1) + } + } else { + console.log('\n📝 步骤 1: 跳过 ESLint 检查') + } + + // 步骤 2: 运行组件测试 + const results = await runComponentTests(options.components, options.coverage) + + // 步骤 3: 生成测试报告 + generateTestReport(results) + + const endTime = Date.now() + const duration = (endTime - startTime) / 1000 + + console.log('\n='.repeat(80)) + console.log(`✨ 测试工作流完成 - 耗时: ${duration.toFixed(2)}s`) + console.log('='.repeat(80)) + + // 输出测试结果摘要 + const successCount = results.filter((r) => r.status === 'success').length + const failureCount = results.filter((r) => r.status === 'failure').length + + console.log('\n📋 测试结果摘要:') + console.log(`- 总计: ${results.length} 个组件`) + console.log(`- 成功: ${successCount} 个组件`) + console.log(`- 失败: ${failureCount} 个组件`) + + if (failureCount > 0) { + console.log('\n❌ 失败的组件:') + results + .filter((r) => r.status === 'failure') + .forEach((result) => { + console.log(`- ${result.component}`) + }) + + process.exit(1) + } + } catch (error) { + if (error instanceof Error) { + console.error('\n❌ 测试工作流失败:', error.message) + } else { + console.error('\n❌ 测试工作流失败:', error) + } + process.exit(1) + } +} + +// 执行主函数 +main().catch((error) => { + console.error('测试工作流失败:', error) + process.exit(1) +}) diff --git a/src/pages/configProvider/Index.vue b/src/pages/configProvider/Index.vue index 44f63804..3c70591a 100644 --- a/src/pages/configProvider/Index.vue +++ b/src/pages/configProvider/Index.vue @@ -121,12 +121,13 @@ import type { ColPickerColumnChangeOption } from '@/uni_modules/wot-design-uni/c import { ref } from 'vue' import { useColPickerData } from '@/hooks/useColPickerData' import { useI18n } from 'vue-i18n' +import { Action } from '@/uni_modules/wot-design-uni/components/wd-action-sheet/types' const { colPickerData, findChildrenByCode } = useColPickerData() const { t } = useI18n() const showAction = ref(false) -const actions = ref([]) +const actions = ref([]) const couponName = ref('') const couponNameErr = ref(false) diff --git a/src/uni_modules/wot-design-uni/components/common/util.ts b/src/uni_modules/wot-design-uni/components/common/util.ts index 59a4dca7..bd9deee3 100644 --- a/src/uni_modules/wot-design-uni/components/common/util.ts +++ b/src/uni_modules/wot-design-uni/components/common/util.ts @@ -123,7 +123,7 @@ export function rgbToHex(r: number, g: number, b: number): string { * @param hex 十六进制颜色代码(例如:'#RRGGBB') * @returns 包含红、绿、蓝三个颜色分量的数组 */ -function hexToRgb(hex: string): number[] { +export function hexToRgb(hex: string): number[] { const rgb: number[] = [] // 从第一个字符开始,每两个字符代表一个颜色分量 @@ -402,7 +402,7 @@ export function objToStyle(styles: Record | Record[]): if (isArray(styles)) { // 使用过滤函数去除空值和 null 值的元素 // 对每个非空元素递归调用 objToStyle,然后通过分号连接 - return styles + const result = styles .filter(function (item) { return item != null && item !== '' }) @@ -410,10 +410,14 @@ export function objToStyle(styles: Record | Record[]): return objToStyle(item) }) .join(';') + + // 如果结果不为空,确保末尾有分号 + return result ? (result.endsWith(';') ? result : result + ';') : '' } if (isString(styles)) { - return styles + // 如果是字符串且不为空,确保末尾有分号 + return styles ? (styles.endsWith(';') ? styles : styles + ';') : '' } // 如果 styles 是对象类型 @@ -421,7 +425,7 @@ export function objToStyle(styles: Record | Record[]): // 使用 Object.keys 获取所有属性名 // 使用过滤函数去除值为 null 或空字符串的属性 // 对每个属性名和属性值进行格式化,通过分号连接 - return Object.keys(styles) + const result = Object.keys(styles) .filter(function (key) { return styles[key] != null && styles[key] !== '' }) @@ -431,11 +435,38 @@ export function objToStyle(styles: Record | Record[]): return [kebabCase(key), styles[key]].join(':') }) .join(';') + + // 如果结果不为空,确保末尾有分号 + return result ? (result.endsWith(';') ? result : result + ';') : '' } // 如果 styles 不是对象也不是数组,则直接返回 return '' } +/** + * 判断一个对象是否包含任何字段 + * @param obj 要检查的对象 + * @returns {boolean} 如果对象为空(不包含任何字段)则返回 true,否则返回 false + */ +export function hasFields(obj: unknown): boolean { + // 如果不是对象类型或为 null,则认为没有字段 + if (!isObj(obj) || obj === null) { + return false + } + + // 使用 Object.keys 检查对象是否有属性 + return Object.keys(obj).length > 0 +} + +/** + * 判断一个对象是否为空对象(不包含任何字段) + * @param obj 要检查的对象 + * @returns {boolean} 如果对象为空(不包含任何字段)则返回 true,否则返回 false + */ +export function isEmptyObj(obj: unknown): boolean { + return !hasFields(obj) +} + export const requestAnimationFrame = (cb = () => {}) => { return new AbortablePromise((resolve) => { const timer = setInterval(() => { diff --git a/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue b/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue index 71aa7fe5..d16a8fa3 100644 --- a/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue +++ b/src/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue @@ -3,12 +3,12 @@ - {{ title }} + {{ title }} - {{ value }} + {{ value }} diff --git a/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue b/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue index f810752f..1cb70401 100644 --- a/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue +++ b/src/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue @@ -46,6 +46,7 @@ const BEGIN_ANGLE = -Math.PI / 2 const STEP = 1 const props = defineProps(circleProps) +const { proxy } = getCurrentInstance() as any const progressColor = ref('') // 进度条颜色 @@ -80,7 +81,7 @@ const canvasStyle = computed(() => { width: addUnit(props.size), height: addUnit(props.size) } - return `${objToStyle(style)};` + return `${objToStyle(style)}` }) // 监听目标数值变化 @@ -126,7 +127,6 @@ onUnmounted(() => { clearTimeInterval() }) -const { proxy } = getCurrentInstance() as any /** * 获取canvas上下文 */ diff --git a/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue b/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue index c1eec231..11aad888 100644 --- a/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue +++ b/src/uni_modules/wot-design-uni/components/wd-col/wd-col.vue @@ -1,14 +1,5 @@ -