hookehuyr

chore: 添加测试框架和更新项目文档

- 配置 Vitest 测试框架
- 添加 search/index.test.js 测试套件
- 更新 README.md 和 MaterialCard 组件文档
- 更新 pnpm 依赖

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
...@@ -45,6 +45,13 @@ pnpm lint ...@@ -45,6 +45,13 @@ pnpm lint
45 -**组件复用** - "第 3 次出现原则"抽取 Composables 45 -**组件复用** - "第 3 次出现原则"抽取 Composables
46 -**可复用组件** - TabBar、NavHeader、IconFont 46 -**可复用组件** - TabBar、NavHeader、IconFont
47 47
48 +## 🆕 最新更新(2026-02-13)
49 +
50 +### 权限与测试
51 +-**资料查看权限** - 资料查看入口增加登录校验,支持动作级权限扩展
52 +-**回跳路径统一** - 统一保存登录回跳路径,确保权限拦截后可恢复
53 +-**搜索页测试** - 搜索页测试对齐当前实现并补充接口 Mock
54 +
48 ## 🆕 最新更新(2026-02-12) 55 ## 🆕 最新更新(2026-02-12)
49 56
50 ### 计划书功能优化 57 ### 计划书功能优化
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
28 "dev:quickapp": "NODE_ENV=development taro build --type quickapp --watch", 28 "dev:quickapp": "NODE_ENV=development taro build --type quickapp --watch",
29 "postinstall": "weapp-tw patch", 29 "postinstall": "weapp-tw patch",
30 "lint": "eslint --ext .js,.vue src", 30 "lint": "eslint --ext .js,.vue src",
31 + "test": "vitest run",
31 "api:generate": "node scripts/generateApiFromOpenAPI.js", 32 "api:generate": "node scripts/generateApiFromOpenAPI.js",
32 "changelog:check": "bash scripts/check-changelog.sh 7", 33 "changelog:check": "bash scripts/check-changelog.sh 7",
33 "changelog:check:30": "bash scripts/check-changelog.sh 30", 34 "changelog:check:30": "bash scripts/check-changelog.sh 30",
...@@ -77,8 +78,10 @@ ...@@ -77,8 +78,10 @@
77 "@tarojs/taro-loader": "4.1.11", 78 "@tarojs/taro-loader": "4.1.11",
78 "@tarojs/webpack5-runner": "4.1.11", 79 "@tarojs/webpack5-runner": "4.1.11",
79 "@types/webpack-env": "^1.13.6", 80 "@types/webpack-env": "^1.13.6",
81 + "@vitejs/plugin-vue": "^5.2.4",
80 "@vue/babel-plugin-jsx": "^1.0.6", 82 "@vue/babel-plugin-jsx": "^1.0.6",
81 "@vue/compiler-sfc": "^3.0.0", 83 "@vue/compiler-sfc": "^3.0.0",
84 + "@vue/test-utils": "^2.4.6",
82 "autoprefixer": "^10.4.21", 85 "autoprefixer": "^10.4.21",
83 "babel-preset-taro": "4.1.11", 86 "babel-preset-taro": "4.1.11",
84 "css-loader": "3.4.2", 87 "css-loader": "3.4.2",
...@@ -87,6 +90,7 @@ ...@@ -87,6 +90,7 @@
87 "eslint-plugin-react": "^7.33.2", 90 "eslint-plugin-react": "^7.33.2",
88 "eslint-plugin-react-hooks": "^4.4.0", 91 "eslint-plugin-react-hooks": "^4.4.0",
89 "eslint-plugin-vue": "^8.0.0", 92 "eslint-plugin-vue": "^8.0.0",
93 + "happy-dom": "^14.12.0",
90 "husky": "^9.1.7", 94 "husky": "^9.1.7",
91 "js-yaml": "^4.1.1", 95 "js-yaml": "^4.1.1",
92 "less": "^4.2.0", 96 "less": "^4.2.0",
...@@ -99,7 +103,8 @@ ...@@ -99,7 +103,8 @@
99 "vue-eslint-parser": "^9.0.0", 103 "vue-eslint-parser": "^9.0.0",
100 "vue-loader": "^17.0.0", 104 "vue-loader": "^17.0.0",
101 "weapp-tailwindcss": "^4.1.10", 105 "weapp-tailwindcss": "^4.1.10",
102 - "webpack": "5.91.0" 106 + "webpack": "5.91.0",
107 + "vitest": "^1.6.0"
103 }, 108 },
104 "pnpm": { 109 "pnpm": {
105 "onlyBuiltDependencies": [ 110 "onlyBuiltDependencies": [
......
...@@ -28,7 +28,7 @@ importers: ...@@ -28,7 +28,7 @@ importers:
28 version: 4.1.11 28 version: 4.1.11
29 '@tarojs/plugin-framework-vue3': 29 '@tarojs/plugin-framework-vue3':
30 specifier: 4.1.11 30 specifier: 4.1.11
31 - version: 4.1.11(@tarojs/helper@4.1.11)(@tarojs/runner-utils@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(vue-loader@17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)))(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)) 31 + version: 4.1.11(@tarojs/helper@4.1.11)(@tarojs/runner-utils@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(@vitejs/plugin-vue@5.2.4(vue@3.5.27(typescript@5.9.3)))(vue-loader@17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)))(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96))
32 '@tarojs/plugin-html': 32 '@tarojs/plugin-html':
33 specifier: 4.1.11 33 specifier: 4.1.11
34 version: 4.1.11(@tarojs/helper@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11) 34 version: 4.1.11(@tarojs/helper@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)
...@@ -108,12 +108,18 @@ importers: ...@@ -108,12 +108,18 @@ importers:
108 '@types/webpack-env': 108 '@types/webpack-env':
109 specifier: ^1.13.6 109 specifier: ^1.13.6
110 version: 1.18.8 110 version: 1.18.8
111 + '@vitejs/plugin-vue':
112 + specifier: ^5.2.4
113 + version: 5.2.4(vue@3.5.27(typescript@5.9.3))
111 '@vue/babel-plugin-jsx': 114 '@vue/babel-plugin-jsx':
112 specifier: ^1.0.6 115 specifier: ^1.0.6
113 version: 1.5.0(@babel/core@7.28.6) 116 version: 1.5.0(@babel/core@7.28.6)
114 '@vue/compiler-sfc': 117 '@vue/compiler-sfc':
115 specifier: ^3.0.0 118 specifier: ^3.0.0
116 version: 3.5.27 119 version: 3.5.27
120 + '@vue/test-utils':
121 + specifier: ^2.4.6
122 + version: 2.4.6
117 autoprefixer: 123 autoprefixer:
118 specifier: ^10.4.21 124 specifier: ^10.4.21
119 version: 10.4.23(postcss@8.5.6) 125 version: 10.4.23(postcss@8.5.6)
...@@ -138,6 +144,9 @@ importers: ...@@ -138,6 +144,9 @@ importers:
138 eslint-plugin-vue: 144 eslint-plugin-vue:
139 specifier: ^8.0.0 145 specifier: ^8.0.0
140 version: 8.7.1(eslint@8.57.1) 146 version: 8.7.1(eslint@8.57.1)
147 + happy-dom:
148 + specifier: ^14.12.0
149 + version: 14.12.3
141 husky: 150 husky:
142 specifier: ^9.1.7 151 specifier: ^9.1.7
143 version: 9.1.7 152 version: 9.1.7
...@@ -165,6 +174,9 @@ importers: ...@@ -165,6 +174,9 @@ importers:
165 unplugin-vue-components: 174 unplugin-vue-components:
166 specifier: ^0.26.0 175 specifier: ^0.26.0
167 version: 0.26.0(@babel/parser@7.29.0)(rollup@3.29.5)(vue@3.5.27(typescript@5.9.3)) 176 version: 0.26.0(@babel/parser@7.29.0)(rollup@3.29.5)(vue@3.5.27(typescript@5.9.3))
177 + vitest:
178 + specifier: ^1.6.0
179 + version: 1.6.1(@types/node@25.2.2)(happy-dom@14.12.3)(jsdom@24.1.3)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)
168 vue-eslint-parser: 180 vue-eslint-parser:
169 specifier: ^9.0.0 181 specifier: ^9.0.0
170 version: 9.4.3(eslint@8.57.1) 182 version: 9.4.3(eslint@8.57.1)
...@@ -1504,6 +1516,9 @@ packages: ...@@ -1504,6 +1516,9 @@ packages:
1504 unplugin-vue-components: 1516 unplugin-vue-components:
1505 optional: true 1517 optional: true
1506 1518
1519 + '@one-ini/wasm@0.1.1':
1520 + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
1521 +
1507 '@parcel/watcher-android-arm64@2.5.6': 1522 '@parcel/watcher-android-arm64@2.5.6':
1508 resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} 1523 resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
1509 engines: {node: '>= 10.0.0'} 1524 engines: {node: '>= 10.0.0'}
...@@ -1624,6 +1639,144 @@ packages: ...@@ -1624,6 +1639,144 @@ packages:
1624 rollup: 1639 rollup:
1625 optional: true 1640 optional: true
1626 1641
1642 + '@rollup/rollup-android-arm-eabi@4.57.1':
1643 + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==}
1644 + cpu: [arm]
1645 + os: [android]
1646 +
1647 + '@rollup/rollup-android-arm64@4.57.1':
1648 + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==}
1649 + cpu: [arm64]
1650 + os: [android]
1651 +
1652 + '@rollup/rollup-darwin-arm64@4.57.1':
1653 + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==}
1654 + cpu: [arm64]
1655 + os: [darwin]
1656 +
1657 + '@rollup/rollup-darwin-x64@4.57.1':
1658 + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==}
1659 + cpu: [x64]
1660 + os: [darwin]
1661 +
1662 + '@rollup/rollup-freebsd-arm64@4.57.1':
1663 + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==}
1664 + cpu: [arm64]
1665 + os: [freebsd]
1666 +
1667 + '@rollup/rollup-freebsd-x64@4.57.1':
1668 + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==}
1669 + cpu: [x64]
1670 + os: [freebsd]
1671 +
1672 + '@rollup/rollup-linux-arm-gnueabihf@4.57.1':
1673 + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==}
1674 + cpu: [arm]
1675 + os: [linux]
1676 + libc: [glibc]
1677 +
1678 + '@rollup/rollup-linux-arm-musleabihf@4.57.1':
1679 + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==}
1680 + cpu: [arm]
1681 + os: [linux]
1682 + libc: [musl]
1683 +
1684 + '@rollup/rollup-linux-arm64-gnu@4.57.1':
1685 + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==}
1686 + cpu: [arm64]
1687 + os: [linux]
1688 + libc: [glibc]
1689 +
1690 + '@rollup/rollup-linux-arm64-musl@4.57.1':
1691 + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==}
1692 + cpu: [arm64]
1693 + os: [linux]
1694 + libc: [musl]
1695 +
1696 + '@rollup/rollup-linux-loong64-gnu@4.57.1':
1697 + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==}
1698 + cpu: [loong64]
1699 + os: [linux]
1700 + libc: [glibc]
1701 +
1702 + '@rollup/rollup-linux-loong64-musl@4.57.1':
1703 + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==}
1704 + cpu: [loong64]
1705 + os: [linux]
1706 + libc: [musl]
1707 +
1708 + '@rollup/rollup-linux-ppc64-gnu@4.57.1':
1709 + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==}
1710 + cpu: [ppc64]
1711 + os: [linux]
1712 + libc: [glibc]
1713 +
1714 + '@rollup/rollup-linux-ppc64-musl@4.57.1':
1715 + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==}
1716 + cpu: [ppc64]
1717 + os: [linux]
1718 + libc: [musl]
1719 +
1720 + '@rollup/rollup-linux-riscv64-gnu@4.57.1':
1721 + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==}
1722 + cpu: [riscv64]
1723 + os: [linux]
1724 + libc: [glibc]
1725 +
1726 + '@rollup/rollup-linux-riscv64-musl@4.57.1':
1727 + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==}
1728 + cpu: [riscv64]
1729 + os: [linux]
1730 + libc: [musl]
1731 +
1732 + '@rollup/rollup-linux-s390x-gnu@4.57.1':
1733 + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==}
1734 + cpu: [s390x]
1735 + os: [linux]
1736 + libc: [glibc]
1737 +
1738 + '@rollup/rollup-linux-x64-gnu@4.57.1':
1739 + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==}
1740 + cpu: [x64]
1741 + os: [linux]
1742 + libc: [glibc]
1743 +
1744 + '@rollup/rollup-linux-x64-musl@4.57.1':
1745 + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==}
1746 + cpu: [x64]
1747 + os: [linux]
1748 + libc: [musl]
1749 +
1750 + '@rollup/rollup-openbsd-x64@4.57.1':
1751 + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==}
1752 + cpu: [x64]
1753 + os: [openbsd]
1754 +
1755 + '@rollup/rollup-openharmony-arm64@4.57.1':
1756 + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==}
1757 + cpu: [arm64]
1758 + os: [openharmony]
1759 +
1760 + '@rollup/rollup-win32-arm64-msvc@4.57.1':
1761 + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==}
1762 + cpu: [arm64]
1763 + os: [win32]
1764 +
1765 + '@rollup/rollup-win32-ia32-msvc@4.57.1':
1766 + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==}
1767 + cpu: [ia32]
1768 + os: [win32]
1769 +
1770 + '@rollup/rollup-win32-x64-gnu@4.57.1':
1771 + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==}
1772 + cpu: [x64]
1773 + os: [win32]
1774 +
1775 + '@rollup/rollup-win32-x64-msvc@4.57.1':
1776 + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==}
1777 + cpu: [x64]
1778 + os: [win32]
1779 +
1627 '@rtsao/scc@1.1.0': 1780 '@rtsao/scc@1.1.0':
1628 resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 1781 resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
1629 1782
...@@ -2268,6 +2421,28 @@ packages: ...@@ -2268,6 +2421,28 @@ packages:
2268 '@ungap/structured-clone@1.3.0': 2421 '@ungap/structured-clone@1.3.0':
2269 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 2422 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
2270 2423
2424 + '@vitejs/plugin-vue@5.2.4':
2425 + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
2426 + engines: {node: ^18.0.0 || >=20.0.0}
2427 + peerDependencies:
2428 + vite: ^5.0.0 || ^6.0.0
2429 + vue: ^3.2.25
2430 +
2431 + '@vitest/expect@1.6.1':
2432 + resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==}
2433 +
2434 + '@vitest/runner@1.6.1':
2435 + resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==}
2436 +
2437 + '@vitest/snapshot@1.6.1':
2438 + resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==}
2439 +
2440 + '@vitest/spy@1.6.1':
2441 + resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==}
2442 +
2443 + '@vitest/utils@1.6.1':
2444 + resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==}
2445 +
2271 '@vue/babel-helper-vue-transform-on@1.5.0': 2446 '@vue/babel-helper-vue-transform-on@1.5.0':
2272 resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} 2447 resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==}
2273 2448
...@@ -2322,6 +2497,9 @@ packages: ...@@ -2322,6 +2497,9 @@ packages:
2322 '@vue/shared@3.5.27': 2497 '@vue/shared@3.5.27':
2323 resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} 2498 resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==}
2324 2499
2500 + '@vue/test-utils@2.4.6':
2501 + resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
2502 +
2325 '@weapp-core/escape@7.0.0': 2503 '@weapp-core/escape@7.0.0':
2326 resolution: {integrity: sha512-xMiRT/54YCuyXGXC6ozxmoF+wmnnPJNbouRaAhGLl1jBKsLqtkeILYU5/tGDtfJPxwKcQEFeDuaSmnMHaU3myg==} 2504 resolution: {integrity: sha512-xMiRT/54YCuyXGXC6ozxmoF+wmnnPJNbouRaAhGLl1jBKsLqtkeILYU5/tGDtfJPxwKcQEFeDuaSmnMHaU3myg==}
2327 2505
...@@ -2396,6 +2574,10 @@ packages: ...@@ -2396,6 +2574,10 @@ packages:
2396 '@xtuc/long@4.2.2': 2574 '@xtuc/long@4.2.2':
2397 resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 2575 resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
2398 2576
2577 + abbrev@2.0.0:
2578 + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
2579 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
2580 +
2399 abortcontroller-polyfill@1.7.8: 2581 abortcontroller-polyfill@1.7.8:
2400 resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==} 2582 resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==}
2401 2583
...@@ -2488,6 +2670,10 @@ packages: ...@@ -2488,6 +2670,10 @@ packages:
2488 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 2670 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
2489 engines: {node: '>=8'} 2671 engines: {node: '>=8'}
2490 2672
2673 + ansi-styles@5.2.0:
2674 + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
2675 + engines: {node: '>=10'}
2676 +
2491 ansi-styles@6.2.3: 2677 ansi-styles@6.2.3:
2492 resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} 2678 resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
2493 engines: {node: '>=12'} 2679 engines: {node: '>=12'}
...@@ -2551,6 +2737,9 @@ packages: ...@@ -2551,6 +2737,9 @@ packages:
2551 resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 2737 resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
2552 engines: {node: '>= 0.4'} 2738 engines: {node: '>= 0.4'}
2553 2739
2740 + assertion-error@1.1.0:
2741 + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
2742 +
2554 async-function@1.0.0: 2743 async-function@1.0.0:
2555 resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 2744 resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
2556 engines: {node: '>= 0.4'} 2745 engines: {node: '>= 0.4'}
...@@ -2788,6 +2977,10 @@ packages: ...@@ -2788,6 +2977,10 @@ packages:
2788 resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} 2977 resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
2789 engines: {node: '>=4'} 2978 engines: {node: '>=4'}
2790 2979
2980 + chai@4.5.0:
2981 + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
2982 + engines: {node: '>=4'}
2983 +
2791 chalk@3.0.0: 2984 chalk@3.0.0:
2792 resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 2985 resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
2793 engines: {node: '>=8'} 2986 engines: {node: '>=8'}
...@@ -2805,6 +2998,9 @@ packages: ...@@ -2805,6 +2998,9 @@ packages:
2805 charenc@0.0.2: 2998 charenc@0.0.2:
2806 resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} 2999 resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
2807 3000
3001 + check-error@1.0.3:
3002 + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
3003 +
2808 chokidar@3.6.0: 3004 chokidar@3.6.0:
2809 resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 3005 resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
2810 engines: {node: '>= 8.10.0'} 3006 engines: {node: '>= 8.10.0'}
...@@ -2904,6 +3100,10 @@ packages: ...@@ -2904,6 +3100,10 @@ packages:
2904 resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 3100 resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
2905 engines: {node: '>= 0.8'} 3101 engines: {node: '>= 0.8'}
2906 3102
3103 + commander@10.0.1:
3104 + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
3105 + engines: {node: '>=14'}
3106 +
2907 commander@14.0.3: 3107 commander@14.0.3:
2908 resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} 3108 resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
2909 engines: {node: '>=20'} 3109 engines: {node: '>=20'}
...@@ -3238,6 +3438,10 @@ packages: ...@@ -3238,6 +3438,10 @@ packages:
3238 resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} 3438 resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
3239 engines: {node: '>=4'} 3439 engines: {node: '>=4'}
3240 3440
3441 + deep-eql@4.1.4:
3442 + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
3443 + engines: {node: '>=6'}
3444 +
3241 deep-extend@0.6.0: 3445 deep-extend@0.6.0:
3242 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 3446 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
3243 engines: {node: '>=4.0.0'} 3447 engines: {node: '>=4.0.0'}
...@@ -3308,6 +3512,10 @@ packages: ...@@ -3308,6 +3512,10 @@ packages:
3308 didyoumean@1.2.2: 3512 didyoumean@1.2.2:
3309 resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 3513 resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
3310 3514
3515 + diff-sequences@29.6.3:
3516 + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
3517 + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
3518 +
3311 dijkstrajs@1.0.3: 3519 dijkstrajs@1.0.3:
3312 resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} 3520 resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
3313 3521
...@@ -3391,6 +3599,11 @@ packages: ...@@ -3391,6 +3599,11 @@ packages:
3391 eastasianwidth@0.2.0: 3599 eastasianwidth@0.2.0:
3392 resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 3600 resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
3393 3601
3602 + editorconfig@1.0.4:
3603 + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==}
3604 + engines: {node: '>=14'}
3605 + hasBin: true
3606 +
3394 ee-first@1.1.1: 3607 ee-first@1.1.1:
3395 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 3608 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
3396 3609
...@@ -3653,6 +3866,9 @@ packages: ...@@ -3653,6 +3866,9 @@ packages:
3653 estree-walker@2.0.2: 3866 estree-walker@2.0.2:
3654 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 3867 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
3655 3868
3869 + estree-walker@3.0.3:
3870 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
3871 +
3656 esutils@2.0.3: 3872 esutils@2.0.3:
3657 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 3873 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
3658 engines: {node: '>=0.10.0'} 3874 engines: {node: '>=0.10.0'}
...@@ -3675,6 +3891,10 @@ packages: ...@@ -3675,6 +3891,10 @@ packages:
3675 resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 3891 resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
3676 engines: {node: '>=10'} 3892 engines: {node: '>=10'}
3677 3893
3894 + execa@8.0.1:
3895 + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
3896 + engines: {node: '>=16.17'}
3897 +
3678 expr-parser@1.0.0: 3898 expr-parser@1.0.0:
3679 resolution: {integrity: sha512-ncuWTCWH0M5KbaYikXxZ3FG3Q+FTYIEXeXAbxYscdZLFNnR5Le5gRU2r/a/JUZHnxwBDZcxWEWzCoPQlW9Engg==} 3899 resolution: {integrity: sha512-ncuWTCWH0M5KbaYikXxZ3FG3Q+FTYIEXeXAbxYscdZLFNnR5Le5gRU2r/a/JUZHnxwBDZcxWEWzCoPQlW9Engg==}
3680 3900
...@@ -3889,6 +4109,9 @@ packages: ...@@ -3889,6 +4109,9 @@ packages:
3889 resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} 4109 resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
3890 engines: {node: '>=18'} 4110 engines: {node: '>=18'}
3891 4111
4112 + get-func-name@2.0.2:
4113 + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
4114 +
3892 get-intrinsic@1.3.0: 4115 get-intrinsic@1.3.0:
3893 resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 4116 resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
3894 engines: {node: '>= 0.4'} 4117 engines: {node: '>= 0.4'}
...@@ -3921,6 +4144,10 @@ packages: ...@@ -3921,6 +4144,10 @@ packages:
3921 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 4144 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
3922 engines: {node: '>=10'} 4145 engines: {node: '>=10'}
3923 4146
4147 + get-stream@8.0.1:
4148 + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
4149 + engines: {node: '>=16'}
4150 +
3924 get-symbol-description@1.1.0: 4151 get-symbol-description@1.1.0:
3925 resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 4152 resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
3926 engines: {node: '>= 0.4'} 4153 engines: {node: '>= 0.4'}
...@@ -4005,6 +4232,10 @@ packages: ...@@ -4005,6 +4232,10 @@ packages:
4005 handle-thing@2.0.1: 4232 handle-thing@2.0.1:
4006 resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} 4233 resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
4007 4234
4235 + happy-dom@14.12.3:
4236 + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==}
4237 + engines: {node: '>=16.0.0'}
4238 +
4008 harmony-reflect@1.6.2: 4239 harmony-reflect@1.6.2:
4009 resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} 4240 resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==}
4010 4241
...@@ -4149,6 +4380,10 @@ packages: ...@@ -4149,6 +4380,10 @@ packages:
4149 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 4380 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
4150 engines: {node: '>=10.17.0'} 4381 engines: {node: '>=10.17.0'}
4151 4382
4383 + human-signals@5.0.0:
4384 + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
4385 + engines: {node: '>=16.17.0'}
4386 +
4152 husky@9.1.7: 4387 husky@9.1.7:
4153 resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} 4388 resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==}
4154 engines: {node: '>=18'} 4389 engines: {node: '>=18'}
...@@ -4390,6 +4625,10 @@ packages: ...@@ -4390,6 +4625,10 @@ packages:
4390 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 4625 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
4391 engines: {node: '>=8'} 4626 engines: {node: '>=8'}
4392 4627
4628 + is-stream@3.0.0:
4629 + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
4630 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
4631 +
4393 is-string@1.1.1: 4632 is-string@1.1.1:
4394 resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 4633 resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
4395 engines: {node: '>= 0.4'} 4634 engines: {node: '>= 0.4'}
...@@ -4486,9 +4725,21 @@ packages: ...@@ -4486,9 +4725,21 @@ packages:
4486 joi@17.13.3: 4725 joi@17.13.3:
4487 resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} 4726 resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
4488 4727
4728 + js-beautify@1.15.4:
4729 + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
4730 + engines: {node: '>=14'}
4731 + hasBin: true
4732 +
4733 + js-cookie@3.0.5:
4734 + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
4735 + engines: {node: '>=14'}
4736 +
4489 js-tokens@4.0.0: 4737 js-tokens@4.0.0:
4490 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 4738 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
4491 4739
4740 + js-tokens@9.0.1:
4741 + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
4742 +
4492 js-yaml@4.1.1: 4743 js-yaml@4.1.1:
4493 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 4744 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
4494 hasBin: true 4745 hasBin: true
...@@ -4782,6 +5033,10 @@ packages: ...@@ -4782,6 +5033,10 @@ packages:
4782 resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 5033 resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
4783 engines: {node: '>=14'} 5034 engines: {node: '>=14'}
4784 5035
5036 + local-pkg@0.5.1:
5037 + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
5038 + engines: {node: '>=14'}
5039 +
4785 local-pkg@1.1.2: 5040 local-pkg@1.1.2:
4786 resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} 5041 resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
4787 engines: {node: '>=14'} 5042 engines: {node: '>=14'}
...@@ -4841,6 +5096,9 @@ packages: ...@@ -4841,6 +5096,9 @@ packages:
4841 resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 5096 resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
4842 hasBin: true 5097 hasBin: true
4843 5098
5099 + loupe@2.3.7:
5100 + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
5101 +
4844 lower-case@1.1.4: 5102 lower-case@1.1.4:
4845 resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} 5103 resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
4846 5104
...@@ -4948,6 +5206,10 @@ packages: ...@@ -4948,6 +5206,10 @@ packages:
4948 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 5206 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
4949 engines: {node: '>=6'} 5207 engines: {node: '>=6'}
4950 5208
5209 + mimic-fn@4.0.0:
5210 + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
5211 + engines: {node: '>=12'}
5212 +
4951 mimic-function@5.0.1: 5213 mimic-function@5.0.1:
4952 resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 5214 resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
4953 engines: {node: '>=18'} 5215 engines: {node: '>=18'}
...@@ -4975,6 +5237,10 @@ packages: ...@@ -4975,6 +5237,10 @@ packages:
4975 minimatch@3.1.2: 5237 minimatch@3.1.2:
4976 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 5238 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
4977 5239
5240 + minimatch@9.0.1:
5241 + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
5242 + engines: {node: '>=16 || 14 >=14.17'}
5243 +
4978 minimatch@9.0.3: 5244 minimatch@9.0.3:
4979 resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 5245 resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
4980 engines: {node: '>=16 || 14 >=14.17'} 5246 engines: {node: '>=16 || 14 >=14.17'}
...@@ -5081,6 +5347,11 @@ packages: ...@@ -5081,6 +5347,11 @@ packages:
5081 node-releases@2.0.27: 5347 node-releases@2.0.27:
5082 resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 5348 resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
5083 5349
5350 + nopt@7.2.1:
5351 + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
5352 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
5353 + hasBin: true
5354 +
5084 normalize-path@3.0.0: 5355 normalize-path@3.0.0:
5085 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 5356 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
5086 engines: {node: '>=0.10.0'} 5357 engines: {node: '>=0.10.0'}
...@@ -5101,6 +5372,10 @@ packages: ...@@ -5101,6 +5372,10 @@ packages:
5101 resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 5372 resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
5102 engines: {node: '>=8'} 5373 engines: {node: '>=8'}
5103 5374
5375 + npm-run-path@5.3.0:
5376 + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
5377 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
5378 +
5104 nth-check@2.1.1: 5379 nth-check@2.1.1:
5105 resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 5380 resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
5106 5381
...@@ -5169,6 +5444,10 @@ packages: ...@@ -5169,6 +5444,10 @@ packages:
5169 resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 5444 resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
5170 engines: {node: '>=6'} 5445 engines: {node: '>=6'}
5171 5446
5447 + onetime@6.0.0:
5448 + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
5449 + engines: {node: '>=12'}
5450 +
5172 onetime@7.0.0: 5451 onetime@7.0.0:
5173 resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 5452 resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
5174 engines: {node: '>=18'} 5453 engines: {node: '>=18'}
...@@ -5217,6 +5496,10 @@ packages: ...@@ -5217,6 +5496,10 @@ packages:
5217 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 5496 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
5218 engines: {node: '>=10'} 5497 engines: {node: '>=10'}
5219 5498
5499 + p-limit@5.0.0:
5500 + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
5501 + engines: {node: '>=18'}
5502 +
5220 p-locate@3.0.0: 5503 p-locate@3.0.0:
5221 resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} 5504 resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
5222 engines: {node: '>=6'} 5505 engines: {node: '>=6'}
...@@ -5304,6 +5587,10 @@ packages: ...@@ -5304,6 +5587,10 @@ packages:
5304 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 5587 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
5305 engines: {node: '>=8'} 5588 engines: {node: '>=8'}
5306 5589
5590 + path-key@4.0.0:
5591 + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
5592 + engines: {node: '>=12'}
5593 +
5307 path-parse@1.0.7: 5594 path-parse@1.0.7:
5308 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 5595 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
5309 5596
...@@ -5325,9 +5612,15 @@ packages: ...@@ -5325,9 +5612,15 @@ packages:
5325 resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} 5612 resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
5326 engines: {node: '>=18'} 5613 engines: {node: '>=18'}
5327 5614
5615 + pathe@1.1.2:
5616 + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
5617 +
5328 pathe@2.0.3: 5618 pathe@2.0.3:
5329 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 5619 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
5330 5620
5621 + pathval@1.1.1:
5622 + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
5623 +
5331 pend@1.2.0: 5624 pend@1.2.0:
5332 resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 5625 resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
5333 5626
...@@ -5897,6 +6190,10 @@ packages: ...@@ -5897,6 +6190,10 @@ packages:
5897 resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} 6190 resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
5898 engines: {node: '>= 10'} 6191 engines: {node: '>= 10'}
5899 6192
6193 + pretty-format@29.7.0:
6194 + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
6195 + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
6196 +
5900 pretty-time@1.1.0: 6197 pretty-time@1.1.0:
5901 resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} 6198 resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==}
5902 engines: {node: '>=4'} 6199 engines: {node: '>=4'}
...@@ -5986,6 +6283,9 @@ packages: ...@@ -5986,6 +6283,9 @@ packages:
5986 react-is@17.0.2: 6283 react-is@17.0.2:
5987 resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 6284 resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
5988 6285
6286 + react-is@18.3.1:
6287 + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
6288 +
5989 react@19.2.4: 6289 react@19.2.4:
5990 resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} 6290 resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
5991 engines: {node: '>=0.10.0'} 6291 engines: {node: '>=0.10.0'}
...@@ -6128,6 +6428,11 @@ packages: ...@@ -6128,6 +6428,11 @@ packages:
6128 engines: {node: '>=14.18.0', npm: '>=8.0.0'} 6428 engines: {node: '>=14.18.0', npm: '>=8.0.0'}
6129 hasBin: true 6429 hasBin: true
6130 6430
6431 + rollup@4.57.1:
6432 + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==}
6433 + engines: {node: '>=18.0.0', npm: '>=8.0.0'}
6434 + hasBin: true
6435 +
6131 rrweb-cssom@0.7.1: 6436 rrweb-cssom@0.7.1:
6132 resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} 6437 resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
6133 6438
...@@ -6328,6 +6633,9 @@ packages: ...@@ -6328,6 +6633,9 @@ packages:
6328 resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 6633 resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
6329 engines: {node: '>= 0.4'} 6634 engines: {node: '>= 0.4'}
6330 6635
6636 + siginfo@2.0.0:
6637 + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
6638 +
6331 signal-exit@3.0.7: 6639 signal-exit@3.0.7:
6332 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 6640 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
6333 6641
...@@ -6405,6 +6713,9 @@ packages: ...@@ -6405,6 +6713,9 @@ packages:
6405 resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} 6713 resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==}
6406 engines: {node: '>=12'} 6714 engines: {node: '>=12'}
6407 6715
6716 + stackback@0.0.2:
6717 + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
6718 +
6408 statuses@1.5.0: 6719 statuses@1.5.0:
6409 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} 6720 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
6410 engines: {node: '>= 0.6'} 6721 engines: {node: '>= 0.6'}
...@@ -6491,6 +6802,10 @@ packages: ...@@ -6491,6 +6802,10 @@ packages:
6491 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 6802 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
6492 engines: {node: '>=6'} 6803 engines: {node: '>=6'}
6493 6804
6805 + strip-final-newline@3.0.0:
6806 + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
6807 + engines: {node: '>=12'}
6808 +
6494 strip-json-comments@2.0.1: 6809 strip-json-comments@2.0.1:
6495 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 6810 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
6496 engines: {node: '>=0.10.0'} 6811 engines: {node: '>=0.10.0'}
...@@ -6499,6 +6814,9 @@ packages: ...@@ -6499,6 +6814,9 @@ packages:
6499 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 6814 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
6500 engines: {node: '>=8'} 6815 engines: {node: '>=8'}
6501 6816
6817 + strip-literal@2.1.1:
6818 + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
6819 +
6502 strip-outer@1.0.1: 6820 strip-outer@1.0.1:
6503 resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} 6821 resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
6504 engines: {node: '>=0.10.0'} 6822 engines: {node: '>=0.10.0'}
...@@ -6652,6 +6970,9 @@ packages: ...@@ -6652,6 +6970,9 @@ packages:
6652 tiny-case@1.0.3: 6970 tiny-case@1.0.3:
6653 resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} 6971 resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==}
6654 6972
6973 + tinybench@2.9.0:
6974 + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
6975 +
6655 tinyexec@1.0.2: 6976 tinyexec@1.0.2:
6656 resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 6977 resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
6657 engines: {node: '>=18'} 6978 engines: {node: '>=18'}
...@@ -6660,6 +6981,14 @@ packages: ...@@ -6660,6 +6981,14 @@ packages:
6660 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 6981 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
6661 engines: {node: '>=12.0.0'} 6982 engines: {node: '>=12.0.0'}
6662 6983
6984 + tinypool@0.8.4:
6985 + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
6986 + engines: {node: '>=14.0.0'}
6987 +
6988 + tinyspy@2.2.1:
6989 + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
6990 + engines: {node: '>=14.0.0'}
6991 +
6663 to-buffer@1.2.2: 6992 to-buffer@1.2.2:
6664 resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} 6993 resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
6665 engines: {node: '>= 0.4'} 6994 engines: {node: '>= 0.4'}
...@@ -6719,6 +7048,10 @@ packages: ...@@ -6719,6 +7048,10 @@ packages:
6719 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 7048 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
6720 engines: {node: '>= 0.8.0'} 7049 engines: {node: '>= 0.8.0'}
6721 7050
7051 + type-detect@4.1.0:
7052 + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
7053 + engines: {node: '>=4'}
7054 +
6722 type-fest@0.20.2: 7055 type-fest@0.20.2:
6723 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 7056 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
6724 engines: {node: '>=10'} 7057 engines: {node: '>=10'}
...@@ -6887,11 +7220,75 @@ packages: ...@@ -6887,11 +7220,75 @@ packages:
6887 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 7220 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
6888 engines: {node: '>= 0.8'} 7221 engines: {node: '>= 0.8'}
6889 7222
7223 + vite-node@1.6.1:
7224 + resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==}
7225 + engines: {node: ^18.0.0 || >=20.0.0}
7226 + hasBin: true
7227 +
7228 + vite@5.4.21:
7229 + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
7230 + engines: {node: ^18.0.0 || >=20.0.0}
7231 + hasBin: true
7232 + peerDependencies:
7233 + '@types/node': ^18.0.0 || >=20.0.0
7234 + less: '*'
7235 + lightningcss: ^1.21.0
7236 + sass: '*'
7237 + sass-embedded: '*'
7238 + stylus: '*'
7239 + sugarss: '*'
7240 + terser: ^5.4.0
7241 + peerDependenciesMeta:
7242 + '@types/node':
7243 + optional: true
7244 + less:
7245 + optional: true
7246 + lightningcss:
7247 + optional: true
7248 + sass:
7249 + optional: true
7250 + sass-embedded:
7251 + optional: true
7252 + stylus:
7253 + optional: true
7254 + sugarss:
7255 + optional: true
7256 + terser:
7257 + optional: true
7258 +
7259 + vitest@1.6.1:
7260 + resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==}
7261 + engines: {node: ^18.0.0 || >=20.0.0}
7262 + hasBin: true
7263 + peerDependencies:
7264 + '@edge-runtime/vm': '*'
7265 + '@types/node': ^18.0.0 || >=20.0.0
7266 + '@vitest/browser': 1.6.1
7267 + '@vitest/ui': 1.6.1
7268 + happy-dom: '*'
7269 + jsdom: '*'
7270 + peerDependenciesMeta:
7271 + '@edge-runtime/vm':
7272 + optional: true
7273 + '@types/node':
7274 + optional: true
7275 + '@vitest/browser':
7276 + optional: true
7277 + '@vitest/ui':
7278 + optional: true
7279 + happy-dom:
7280 + optional: true
7281 + jsdom:
7282 + optional: true
7283 +
6890 vm2@3.10.4: 7284 vm2@3.10.4:
6891 resolution: {integrity: sha512-Gl6r7MN3mkawGurFdp467yDJQ7HdragK2QVVWFbOCd3LPJXJLE2xZFwLCNhp04MTkHruPqLIOs3pYbJQJw/1aA==} 7285 resolution: {integrity: sha512-Gl6r7MN3mkawGurFdp467yDJQ7HdragK2QVVWFbOCd3LPJXJLE2xZFwLCNhp04MTkHruPqLIOs3pYbJQJw/1aA==}
6892 engines: {node: '>=6.0'} 7286 engines: {node: '>=6.0'}
6893 hasBin: true 7287 hasBin: true
6894 7288
7289 + vue-component-type-helpers@2.2.12:
7290 + resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
7291 +
6895 vue-eslint-parser@8.3.0: 7292 vue-eslint-parser@8.3.0:
6896 resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} 7293 resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==}
6897 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 7294 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
...@@ -7021,6 +7418,10 @@ packages: ...@@ -7021,6 +7418,10 @@ packages:
7021 whatwg-fetch@3.6.20: 7418 whatwg-fetch@3.6.20:
7022 resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} 7419 resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
7023 7420
7421 + whatwg-mimetype@3.0.0:
7422 + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
7423 + engines: {node: '>=12'}
7424 +
7024 whatwg-mimetype@4.0.0: 7425 whatwg-mimetype@4.0.0:
7025 resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 7426 resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
7026 engines: {node: '>=18'} 7427 engines: {node: '>=18'}
...@@ -7053,6 +7454,11 @@ packages: ...@@ -7053,6 +7454,11 @@ packages:
7053 engines: {node: '>= 8'} 7454 engines: {node: '>= 8'}
7054 hasBin: true 7455 hasBin: true
7055 7456
7457 + why-is-node-running@2.3.0:
7458 + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
7459 + engines: {node: '>=8'}
7460 + hasBin: true
7461 +
7056 wildcard@2.0.1: 7462 wildcard@2.0.1:
7057 resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} 7463 resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==}
7058 7464
...@@ -7146,6 +7552,10 @@ packages: ...@@ -7146,6 +7552,10 @@ packages:
7146 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 7552 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
7147 engines: {node: '>=10'} 7553 engines: {node: '>=10'}
7148 7554
7555 + yocto-queue@1.2.2:
7556 + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
7557 + engines: {node: '>=12.20'}
7558 +
7149 yup@1.7.1: 7559 yup@1.7.1:
7150 resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==} 7560 resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==}
7151 7561
...@@ -8545,6 +8955,8 @@ snapshots: ...@@ -8545,6 +8955,8 @@ snapshots:
8545 optionalDependencies: 8955 optionalDependencies:
8546 unplugin-vue-components: 0.26.0(@babel/parser@7.29.0)(rollup@3.29.5)(vue@3.5.27(typescript@5.9.3)) 8956 unplugin-vue-components: 0.26.0(@babel/parser@7.29.0)(rollup@3.29.5)(vue@3.5.27(typescript@5.9.3))
8547 8957
8958 + '@one-ini/wasm@0.1.1': {}
8959 +
8548 '@parcel/watcher-android-arm64@2.5.6': 8960 '@parcel/watcher-android-arm64@2.5.6':
8549 optional: true 8961 optional: true
8550 8962
...@@ -8630,6 +9042,81 @@ snapshots: ...@@ -8630,6 +9042,81 @@ snapshots:
8630 optionalDependencies: 9042 optionalDependencies:
8631 rollup: 3.29.5 9043 rollup: 3.29.5
8632 9044
9045 + '@rollup/rollup-android-arm-eabi@4.57.1':
9046 + optional: true
9047 +
9048 + '@rollup/rollup-android-arm64@4.57.1':
9049 + optional: true
9050 +
9051 + '@rollup/rollup-darwin-arm64@4.57.1':
9052 + optional: true
9053 +
9054 + '@rollup/rollup-darwin-x64@4.57.1':
9055 + optional: true
9056 +
9057 + '@rollup/rollup-freebsd-arm64@4.57.1':
9058 + optional: true
9059 +
9060 + '@rollup/rollup-freebsd-x64@4.57.1':
9061 + optional: true
9062 +
9063 + '@rollup/rollup-linux-arm-gnueabihf@4.57.1':
9064 + optional: true
9065 +
9066 + '@rollup/rollup-linux-arm-musleabihf@4.57.1':
9067 + optional: true
9068 +
9069 + '@rollup/rollup-linux-arm64-gnu@4.57.1':
9070 + optional: true
9071 +
9072 + '@rollup/rollup-linux-arm64-musl@4.57.1':
9073 + optional: true
9074 +
9075 + '@rollup/rollup-linux-loong64-gnu@4.57.1':
9076 + optional: true
9077 +
9078 + '@rollup/rollup-linux-loong64-musl@4.57.1':
9079 + optional: true
9080 +
9081 + '@rollup/rollup-linux-ppc64-gnu@4.57.1':
9082 + optional: true
9083 +
9084 + '@rollup/rollup-linux-ppc64-musl@4.57.1':
9085 + optional: true
9086 +
9087 + '@rollup/rollup-linux-riscv64-gnu@4.57.1':
9088 + optional: true
9089 +
9090 + '@rollup/rollup-linux-riscv64-musl@4.57.1':
9091 + optional: true
9092 +
9093 + '@rollup/rollup-linux-s390x-gnu@4.57.1':
9094 + optional: true
9095 +
9096 + '@rollup/rollup-linux-x64-gnu@4.57.1':
9097 + optional: true
9098 +
9099 + '@rollup/rollup-linux-x64-musl@4.57.1':
9100 + optional: true
9101 +
9102 + '@rollup/rollup-openbsd-x64@4.57.1':
9103 + optional: true
9104 +
9105 + '@rollup/rollup-openharmony-arm64@4.57.1':
9106 + optional: true
9107 +
9108 + '@rollup/rollup-win32-arm64-msvc@4.57.1':
9109 + optional: true
9110 +
9111 + '@rollup/rollup-win32-ia32-msvc@4.57.1':
9112 + optional: true
9113 +
9114 + '@rollup/rollup-win32-x64-gnu@4.57.1':
9115 + optional: true
9116 +
9117 + '@rollup/rollup-win32-x64-msvc@4.57.1':
9118 + optional: true
9119 +
8633 '@rtsao/scc@1.1.0': {} 9120 '@rtsao/scc@1.1.0': {}
8634 9121
8635 '@sideway/address@4.1.5': 9122 '@sideway/address@4.1.5':
...@@ -8910,7 +9397,7 @@ snapshots: ...@@ -8910,7 +9397,7 @@ snapshots:
8910 transitivePeerDependencies: 9397 transitivePeerDependencies:
8911 - supports-color 9398 - supports-color
8912 9399
8913 - '@tarojs/plugin-framework-vue3@4.1.11(@tarojs/helper@4.1.11)(@tarojs/runner-utils@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(vue-loader@17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)))(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96))': 9400 + '@tarojs/plugin-framework-vue3@4.1.11(@tarojs/helper@4.1.11)(@tarojs/runner-utils@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)(@vitejs/plugin-vue@5.2.4(vue@3.5.27(typescript@5.9.3)))(vue-loader@17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)))(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96))':
8914 dependencies: 9401 dependencies:
8915 '@tarojs/helper': 4.1.11 9402 '@tarojs/helper': 4.1.11
8916 '@tarojs/runner-utils': 4.1.11 9403 '@tarojs/runner-utils': 4.1.11
...@@ -8921,6 +9408,8 @@ snapshots: ...@@ -8921,6 +9408,8 @@ snapshots:
8921 vue: 3.5.27(typescript@5.9.3) 9408 vue: 3.5.27(typescript@5.9.3)
8922 vue-loader: 17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96)) 9409 vue-loader: 17.4.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))(webpack@5.91.0(@swc/core@1.3.96))
8923 webpack: 5.91.0(@swc/core@1.3.96) 9410 webpack: 5.91.0(@swc/core@1.3.96)
9411 + optionalDependencies:
9412 + '@vitejs/plugin-vue': 5.2.4(vue@3.5.27(typescript@5.9.3))
8924 9413
8925 '@tarojs/plugin-html@4.1.11(@tarojs/helper@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)': 9414 '@tarojs/plugin-html@4.1.11(@tarojs/helper@4.1.11)(@tarojs/runtime@4.1.11)(@tarojs/shared@4.1.11)':
8926 dependencies: 9415 dependencies:
...@@ -9433,6 +9922,39 @@ snapshots: ...@@ -9433,6 +9922,39 @@ snapshots:
9433 9922
9434 '@ungap/structured-clone@1.3.0': {} 9923 '@ungap/structured-clone@1.3.0': {}
9435 9924
9925 + '@vitejs/plugin-vue@5.2.4(vue@3.5.27(typescript@5.9.3))':
9926 + dependencies:
9927 + vue: 3.5.27(typescript@5.9.3)
9928 +
9929 + '@vitest/expect@1.6.1':
9930 + dependencies:
9931 + '@vitest/spy': 1.6.1
9932 + '@vitest/utils': 1.6.1
9933 + chai: 4.5.0
9934 +
9935 + '@vitest/runner@1.6.1':
9936 + dependencies:
9937 + '@vitest/utils': 1.6.1
9938 + p-limit: 5.0.0
9939 + pathe: 1.1.2
9940 +
9941 + '@vitest/snapshot@1.6.1':
9942 + dependencies:
9943 + magic-string: 0.30.21
9944 + pathe: 1.1.2
9945 + pretty-format: 29.7.0
9946 +
9947 + '@vitest/spy@1.6.1':
9948 + dependencies:
9949 + tinyspy: 2.2.1
9950 +
9951 + '@vitest/utils@1.6.1':
9952 + dependencies:
9953 + diff-sequences: 29.6.3
9954 + estree-walker: 3.0.3
9955 + loupe: 2.3.7
9956 + pretty-format: 29.7.0
9957 +
9436 '@vue/babel-helper-vue-transform-on@1.5.0': {} 9958 '@vue/babel-helper-vue-transform-on@1.5.0': {}
9437 9959
9438 '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.6)': 9960 '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.6)':
...@@ -9534,6 +10056,11 @@ snapshots: ...@@ -9534,6 +10056,11 @@ snapshots:
9534 10056
9535 '@vue/shared@3.5.27': {} 10057 '@vue/shared@3.5.27': {}
9536 10058
10059 + '@vue/test-utils@2.4.6':
10060 + dependencies:
10061 + js-beautify: 1.15.4
10062 + vue-component-type-helpers: 2.2.12
10063 +
9537 '@weapp-core/escape@7.0.0': {} 10064 '@weapp-core/escape@7.0.0': {}
9538 10065
9539 '@weapp-core/regex@1.0.1': {} 10066 '@weapp-core/regex@1.0.1': {}
...@@ -9645,6 +10172,8 @@ snapshots: ...@@ -9645,6 +10172,8 @@ snapshots:
9645 10172
9646 '@xtuc/long@4.2.2': {} 10173 '@xtuc/long@4.2.2': {}
9647 10174
10175 + abbrev@2.0.0: {}
10176 +
9648 abortcontroller-polyfill@1.7.8: {} 10177 abortcontroller-polyfill@1.7.8: {}
9649 10178
9650 accepts@1.3.8: 10179 accepts@1.3.8:
...@@ -9722,6 +10251,8 @@ snapshots: ...@@ -9722,6 +10251,8 @@ snapshots:
9722 dependencies: 10251 dependencies:
9723 color-convert: 2.0.1 10252 color-convert: 2.0.1
9724 10253
10254 + ansi-styles@5.2.0: {}
10255 +
9725 ansi-styles@6.2.3: {} 10256 ansi-styles@6.2.3: {}
9726 10257
9727 any-promise@1.3.0: {} 10258 any-promise@1.3.0: {}
...@@ -9812,6 +10343,8 @@ snapshots: ...@@ -9812,6 +10343,8 @@ snapshots:
9812 get-intrinsic: 1.3.0 10343 get-intrinsic: 1.3.0
9813 is-array-buffer: 3.0.5 10344 is-array-buffer: 3.0.5
9814 10345
10346 + assertion-error@1.1.0: {}
10347 +
9815 async-function@1.0.0: {} 10348 async-function@1.0.0: {}
9816 10349
9817 asynckit@0.4.0: {} 10350 asynckit@0.4.0: {}
...@@ -10122,6 +10655,16 @@ snapshots: ...@@ -10122,6 +10655,16 @@ snapshots:
10122 tunnel-agent: 0.6.0 10655 tunnel-agent: 0.6.0
10123 url-to-options: 1.0.1 10656 url-to-options: 1.0.1
10124 10657
10658 + chai@4.5.0:
10659 + dependencies:
10660 + assertion-error: 1.1.0
10661 + check-error: 1.0.3
10662 + deep-eql: 4.1.4
10663 + get-func-name: 2.0.2
10664 + loupe: 2.3.7
10665 + pathval: 1.1.1
10666 + type-detect: 4.1.0
10667 +
10125 chalk@3.0.0: 10668 chalk@3.0.0:
10126 dependencies: 10669 dependencies:
10127 ansi-styles: 4.3.0 10670 ansi-styles: 4.3.0
...@@ -10151,6 +10694,10 @@ snapshots: ...@@ -10151,6 +10694,10 @@ snapshots:
10151 10694
10152 charenc@0.0.2: {} 10695 charenc@0.0.2: {}
10153 10696
10697 + check-error@1.0.3:
10698 + dependencies:
10699 + get-func-name: 2.0.2
10700 +
10154 chokidar@3.6.0: 10701 chokidar@3.6.0:
10155 dependencies: 10702 dependencies:
10156 anymatch: 3.1.3 10703 anymatch: 3.1.3
...@@ -10259,6 +10806,8 @@ snapshots: ...@@ -10259,6 +10806,8 @@ snapshots:
10259 dependencies: 10806 dependencies:
10260 delayed-stream: 1.0.0 10807 delayed-stream: 1.0.0
10261 10808
10809 + commander@10.0.1: {}
10810 +
10262 commander@14.0.3: {} 10811 commander@14.0.3: {}
10263 10812
10264 commander@2.20.3: {} 10813 commander@2.20.3: {}
...@@ -10616,6 +11165,10 @@ snapshots: ...@@ -10616,6 +11165,10 @@ snapshots:
10616 pify: 2.3.0 11165 pify: 2.3.0
10617 strip-dirs: 2.1.0 11166 strip-dirs: 2.1.0
10618 11167
11168 + deep-eql@4.1.4:
11169 + dependencies:
11170 + type-detect: 4.1.0
11171 +
10619 deep-extend@0.6.0: {} 11172 deep-extend@0.6.0: {}
10620 11173
10621 deep-is@0.1.4: {} 11174 deep-is@0.1.4: {}
...@@ -10671,6 +11224,8 @@ snapshots: ...@@ -10671,6 +11224,8 @@ snapshots:
10671 11224
10672 didyoumean@1.2.2: {} 11225 didyoumean@1.2.2: {}
10673 11226
11227 + diff-sequences@29.6.3: {}
11228 +
10674 dijkstrajs@1.0.3: {} 11229 dijkstrajs@1.0.3: {}
10675 11230
10676 dingtalk-jsapi@2.15.6: 11231 dingtalk-jsapi@2.15.6:
...@@ -10777,6 +11332,13 @@ snapshots: ...@@ -10777,6 +11332,13 @@ snapshots:
10777 11332
10778 eastasianwidth@0.2.0: {} 11333 eastasianwidth@0.2.0: {}
10779 11334
11335 + editorconfig@1.0.4:
11336 + dependencies:
11337 + '@one-ini/wasm': 0.1.1
11338 + commander: 10.0.1
11339 + minimatch: 9.0.1
11340 + semver: 7.7.4
11341 +
10780 ee-first@1.1.1: {} 11342 ee-first@1.1.1: {}
10781 11343
10782 electron-to-chromium@1.5.279: {} 11344 electron-to-chromium@1.5.279: {}
...@@ -11233,6 +11795,10 @@ snapshots: ...@@ -11233,6 +11795,10 @@ snapshots:
11233 11795
11234 estree-walker@2.0.2: {} 11796 estree-walker@2.0.2: {}
11235 11797
11798 + estree-walker@3.0.3:
11799 + dependencies:
11800 + '@types/estree': 1.0.8
11801 +
11236 esutils@2.0.3: {} 11802 esutils@2.0.3: {}
11237 11803
11238 etag@1.8.1: {} 11804 etag@1.8.1: {}
...@@ -11255,6 +11821,18 @@ snapshots: ...@@ -11255,6 +11821,18 @@ snapshots:
11255 signal-exit: 3.0.7 11821 signal-exit: 3.0.7
11256 strip-final-newline: 2.0.0 11822 strip-final-newline: 2.0.0
11257 11823
11824 + execa@8.0.1:
11825 + dependencies:
11826 + cross-spawn: 7.0.6
11827 + get-stream: 8.0.1
11828 + human-signals: 5.0.0
11829 + is-stream: 3.0.0
11830 + merge-stream: 2.0.0
11831 + npm-run-path: 5.3.0
11832 + onetime: 6.0.0
11833 + signal-exit: 4.1.0
11834 + strip-final-newline: 3.0.0
11835 +
11258 expr-parser@1.0.0: {} 11836 expr-parser@1.0.0: {}
11259 11837
11260 express@4.22.1: 11838 express@4.22.1:
...@@ -11486,6 +12064,8 @@ snapshots: ...@@ -11486,6 +12064,8 @@ snapshots:
11486 12064
11487 get-east-asian-width@1.4.0: {} 12065 get-east-asian-width@1.4.0: {}
11488 12066
12067 + get-func-name@2.0.2: {}
12068 +
11489 get-intrinsic@1.3.0: 12069 get-intrinsic@1.3.0:
11490 dependencies: 12070 dependencies:
11491 call-bind-apply-helpers: 1.0.2 12071 call-bind-apply-helpers: 1.0.2
...@@ -11525,6 +12105,8 @@ snapshots: ...@@ -11525,6 +12105,8 @@ snapshots:
11525 12105
11526 get-stream@6.0.1: {} 12106 get-stream@6.0.1: {}
11527 12107
12108 + get-stream@8.0.1: {}
12109 +
11528 get-symbol-description@1.1.0: 12110 get-symbol-description@1.1.0:
11529 dependencies: 12111 dependencies:
11530 call-bound: 1.0.4 12112 call-bound: 1.0.4
...@@ -11661,6 +12243,12 @@ snapshots: ...@@ -11661,6 +12243,12 @@ snapshots:
11661 12243
11662 handle-thing@2.0.1: {} 12244 handle-thing@2.0.1: {}
11663 12245
12246 + happy-dom@14.12.3:
12247 + dependencies:
12248 + entities: 4.5.0
12249 + webidl-conversions: 7.0.0
12250 + whatwg-mimetype: 3.0.0
12251 +
11664 harmony-reflect@1.6.2: {} 12252 harmony-reflect@1.6.2: {}
11665 12253
11666 has-bigints@1.1.0: {} 12254 has-bigints@1.1.0: {}
...@@ -11829,6 +12417,8 @@ snapshots: ...@@ -11829,6 +12417,8 @@ snapshots:
11829 12417
11830 human-signals@2.1.0: {} 12418 human-signals@2.1.0: {}
11831 12419
12420 + human-signals@5.0.0: {}
12421 +
11832 husky@9.1.7: {} 12422 husky@9.1.7: {}
11833 12423
11834 iconv-lite@0.4.24: 12424 iconv-lite@0.4.24:
...@@ -12051,6 +12641,8 @@ snapshots: ...@@ -12051,6 +12641,8 @@ snapshots:
12051 12641
12052 is-stream@2.0.1: {} 12642 is-stream@2.0.1: {}
12053 12643
12644 + is-stream@3.0.0: {}
12645 +
12054 is-string@1.1.1: 12646 is-string@1.1.1:
12055 dependencies: 12647 dependencies:
12056 call-bound: 1.0.4 12648 call-bound: 1.0.4
...@@ -12163,8 +12755,20 @@ snapshots: ...@@ -12163,8 +12755,20 @@ snapshots:
12163 '@sideway/formula': 3.0.1 12755 '@sideway/formula': 3.0.1
12164 '@sideway/pinpoint': 2.0.0 12756 '@sideway/pinpoint': 2.0.0
12165 12757
12758 + js-beautify@1.15.4:
12759 + dependencies:
12760 + config-chain: 1.1.13
12761 + editorconfig: 1.0.4
12762 + glob: 10.5.0
12763 + js-cookie: 3.0.5
12764 + nopt: 7.2.1
12765 +
12766 + js-cookie@3.0.5: {}
12767 +
12166 js-tokens@4.0.0: {} 12768 js-tokens@4.0.0: {}
12167 12769
12770 + js-tokens@9.0.1: {}
12771 +
12168 js-yaml@4.1.1: 12772 js-yaml@4.1.1:
12169 dependencies: 12773 dependencies:
12170 argparse: 2.0.1 12774 argparse: 2.0.1
...@@ -12440,6 +13044,11 @@ snapshots: ...@@ -12440,6 +13044,11 @@ snapshots:
12440 13044
12441 local-pkg@0.4.3: {} 13045 local-pkg@0.4.3: {}
12442 13046
13047 + local-pkg@0.5.1:
13048 + dependencies:
13049 + mlly: 1.8.0
13050 + pkg-types: 1.3.1
13051 +
12443 local-pkg@1.1.2: 13052 local-pkg@1.1.2:
12444 dependencies: 13053 dependencies:
12445 mlly: 1.8.0 13054 mlly: 1.8.0
...@@ -12496,6 +13105,10 @@ snapshots: ...@@ -12496,6 +13105,10 @@ snapshots:
12496 dependencies: 13105 dependencies:
12497 js-tokens: 4.0.0 13106 js-tokens: 4.0.0
12498 13107
13108 + loupe@2.3.7:
13109 + dependencies:
13110 + get-func-name: 2.0.2
13111 +
12499 lower-case@1.1.4: {} 13112 lower-case@1.1.4: {}
12500 13113
12501 lower-case@2.0.2: 13114 lower-case@2.0.2:
...@@ -12578,6 +13191,8 @@ snapshots: ...@@ -12578,6 +13191,8 @@ snapshots:
12578 13191
12579 mimic-fn@2.1.0: {} 13192 mimic-fn@2.1.0: {}
12580 13193
13194 + mimic-fn@4.0.0: {}
13195 +
12581 mimic-function@5.0.1: {} 13196 mimic-function@5.0.1: {}
12582 13197
12583 mimic-response@1.0.1: {} 13198 mimic-response@1.0.1: {}
...@@ -12602,6 +13217,10 @@ snapshots: ...@@ -12602,6 +13217,10 @@ snapshots:
12602 dependencies: 13217 dependencies:
12603 brace-expansion: 1.1.12 13218 brace-expansion: 1.1.12
12604 13219
13220 + minimatch@9.0.1:
13221 + dependencies:
13222 + brace-expansion: 2.0.2
13223 +
12605 minimatch@9.0.3: 13224 minimatch@9.0.3:
12606 dependencies: 13225 dependencies:
12607 brace-expansion: 2.0.2 13226 brace-expansion: 2.0.2
...@@ -12701,6 +13320,10 @@ snapshots: ...@@ -12701,6 +13320,10 @@ snapshots:
12701 13320
12702 node-releases@2.0.27: {} 13321 node-releases@2.0.27: {}
12703 13322
13323 + nopt@7.2.1:
13324 + dependencies:
13325 + abbrev: 2.0.0
13326 +
12704 normalize-path@3.0.0: {} 13327 normalize-path@3.0.0: {}
12705 13328
12706 normalize-url@2.0.1: 13329 normalize-url@2.0.1:
...@@ -12720,6 +13343,10 @@ snapshots: ...@@ -12720,6 +13343,10 @@ snapshots:
12720 dependencies: 13343 dependencies:
12721 path-key: 3.1.1 13344 path-key: 3.1.1
12722 13345
13346 + npm-run-path@5.3.0:
13347 + dependencies:
13348 + path-key: 4.0.0
13349 +
12723 nth-check@2.1.1: 13350 nth-check@2.1.1:
12724 dependencies: 13351 dependencies:
12725 boolbase: 1.0.0 13352 boolbase: 1.0.0
...@@ -12794,6 +13421,10 @@ snapshots: ...@@ -12794,6 +13421,10 @@ snapshots:
12794 dependencies: 13421 dependencies:
12795 mimic-fn: 2.1.0 13422 mimic-fn: 2.1.0
12796 13423
13424 + onetime@6.0.0:
13425 + dependencies:
13426 + mimic-fn: 4.0.0
13427 +
12797 onetime@7.0.0: 13428 onetime@7.0.0:
12798 dependencies: 13429 dependencies:
12799 mimic-function: 5.0.1 13430 mimic-function: 5.0.1
...@@ -12851,6 +13482,10 @@ snapshots: ...@@ -12851,6 +13482,10 @@ snapshots:
12851 dependencies: 13482 dependencies:
12852 yocto-queue: 0.1.0 13483 yocto-queue: 0.1.0
12853 13484
13485 + p-limit@5.0.0:
13486 + dependencies:
13487 + yocto-queue: 1.2.2
13488 +
12854 p-locate@3.0.0: 13489 p-locate@3.0.0:
12855 dependencies: 13490 dependencies:
12856 p-limit: 2.3.0 13491 p-limit: 2.3.0
...@@ -12937,6 +13572,8 @@ snapshots: ...@@ -12937,6 +13572,8 @@ snapshots:
12937 13572
12938 path-key@3.1.1: {} 13573 path-key@3.1.1: {}
12939 13574
13575 + path-key@4.0.0: {}
13576 +
12940 path-parse@1.0.7: {} 13577 path-parse@1.0.7: {}
12941 13578
12942 path-scurry@1.11.1: 13579 path-scurry@1.11.1:
...@@ -12952,8 +13589,12 @@ snapshots: ...@@ -12952,8 +13589,12 @@ snapshots:
12952 13589
12953 path-type@6.0.0: {} 13590 path-type@6.0.0: {}
12954 13591
13592 + pathe@1.1.2: {}
13593 +
12955 pathe@2.0.3: {} 13594 pathe@2.0.3: {}
12956 13595
13596 + pathval@1.1.1: {}
13597 +
12957 pend@1.2.0: {} 13598 pend@1.2.0: {}
12958 13599
12959 perfect-debounce@1.0.0: {} 13600 perfect-debounce@1.0.0: {}
...@@ -13541,6 +14182,12 @@ snapshots: ...@@ -13541,6 +14182,12 @@ snapshots:
13541 ansi-styles: 4.3.0 14182 ansi-styles: 4.3.0
13542 react-is: 17.0.2 14183 react-is: 17.0.2
13543 14184
14185 + pretty-format@29.7.0:
14186 + dependencies:
14187 + '@jest/schemas': 29.6.3
14188 + ansi-styles: 5.2.0
14189 + react-is: 18.3.1
14190 +
13544 pretty-time@1.1.0: {} 14191 pretty-time@1.1.0: {}
13545 14192
13546 process-nextick-args@2.0.1: {} 14193 process-nextick-args@2.0.1: {}
...@@ -13635,6 +14282,8 @@ snapshots: ...@@ -13635,6 +14282,8 @@ snapshots:
13635 14282
13636 react-is@17.0.2: {} 14283 react-is@17.0.2: {}
13637 14284
14285 + react-is@18.3.1: {}
14286 +
13638 react@19.2.4: {} 14287 react@19.2.4: {}
13639 14288
13640 read-cache@1.0.0: 14289 read-cache@1.0.0:
...@@ -13790,6 +14439,37 @@ snapshots: ...@@ -13790,6 +14439,37 @@ snapshots:
13790 optionalDependencies: 14439 optionalDependencies:
13791 fsevents: 2.3.3 14440 fsevents: 2.3.3
13792 14441
14442 + rollup@4.57.1:
14443 + dependencies:
14444 + '@types/estree': 1.0.8
14445 + optionalDependencies:
14446 + '@rollup/rollup-android-arm-eabi': 4.57.1
14447 + '@rollup/rollup-android-arm64': 4.57.1
14448 + '@rollup/rollup-darwin-arm64': 4.57.1
14449 + '@rollup/rollup-darwin-x64': 4.57.1
14450 + '@rollup/rollup-freebsd-arm64': 4.57.1
14451 + '@rollup/rollup-freebsd-x64': 4.57.1
14452 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1
14453 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1
14454 + '@rollup/rollup-linux-arm64-gnu': 4.57.1
14455 + '@rollup/rollup-linux-arm64-musl': 4.57.1
14456 + '@rollup/rollup-linux-loong64-gnu': 4.57.1
14457 + '@rollup/rollup-linux-loong64-musl': 4.57.1
14458 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1
14459 + '@rollup/rollup-linux-ppc64-musl': 4.57.1
14460 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1
14461 + '@rollup/rollup-linux-riscv64-musl': 4.57.1
14462 + '@rollup/rollup-linux-s390x-gnu': 4.57.1
14463 + '@rollup/rollup-linux-x64-gnu': 4.57.1
14464 + '@rollup/rollup-linux-x64-musl': 4.57.1
14465 + '@rollup/rollup-openbsd-x64': 4.57.1
14466 + '@rollup/rollup-openharmony-arm64': 4.57.1
14467 + '@rollup/rollup-win32-arm64-msvc': 4.57.1
14468 + '@rollup/rollup-win32-ia32-msvc': 4.57.1
14469 + '@rollup/rollup-win32-x64-gnu': 4.57.1
14470 + '@rollup/rollup-win32-x64-msvc': 4.57.1
14471 + fsevents: 2.3.3
14472 +
13793 rrweb-cssom@0.7.1: {} 14473 rrweb-cssom@0.7.1: {}
13794 14474
13795 rrweb-cssom@0.8.0: {} 14475 rrweb-cssom@0.8.0: {}
...@@ -14034,6 +14714,8 @@ snapshots: ...@@ -14034,6 +14714,8 @@ snapshots:
14034 side-channel-map: 1.0.1 14714 side-channel-map: 1.0.1
14035 side-channel-weakmap: 1.0.2 14715 side-channel-weakmap: 1.0.2
14036 14716
14717 + siginfo@2.0.0: {}
14718 +
14037 signal-exit@3.0.7: {} 14719 signal-exit@3.0.7: {}
14038 14720
14039 signal-exit@4.1.0: {} 14721 signal-exit@4.1.0: {}
...@@ -14116,6 +14798,8 @@ snapshots: ...@@ -14116,6 +14798,8 @@ snapshots:
14116 14798
14117 split-on-first@3.0.0: {} 14799 split-on-first@3.0.0: {}
14118 14800
14801 + stackback@0.0.2: {}
14802 +
14119 statuses@1.5.0: {} 14803 statuses@1.5.0: {}
14120 14804
14121 statuses@2.0.2: {} 14805 statuses@2.0.2: {}
...@@ -14224,10 +14908,16 @@ snapshots: ...@@ -14224,10 +14908,16 @@ snapshots:
14224 14908
14225 strip-final-newline@2.0.0: {} 14909 strip-final-newline@2.0.0: {}
14226 14910
14911 + strip-final-newline@3.0.0: {}
14912 +
14227 strip-json-comments@2.0.1: {} 14913 strip-json-comments@2.0.1: {}
14228 14914
14229 strip-json-comments@3.1.1: {} 14915 strip-json-comments@3.1.1: {}
14230 14916
14917 + strip-literal@2.1.1:
14918 + dependencies:
14919 + js-tokens: 9.0.1
14920 +
14231 strip-outer@1.0.1: 14921 strip-outer@1.0.1:
14232 dependencies: 14922 dependencies:
14233 escape-string-regexp: 1.0.5 14923 escape-string-regexp: 1.0.5
...@@ -14418,6 +15108,8 @@ snapshots: ...@@ -14418,6 +15108,8 @@ snapshots:
14418 15108
14419 tiny-case@1.0.3: {} 15109 tiny-case@1.0.3: {}
14420 15110
15111 + tinybench@2.9.0: {}
15112 +
14421 tinyexec@1.0.2: {} 15113 tinyexec@1.0.2: {}
14422 15114
14423 tinyglobby@0.2.15: 15115 tinyglobby@0.2.15:
...@@ -14425,6 +15117,10 @@ snapshots: ...@@ -14425,6 +15117,10 @@ snapshots:
14425 fdir: 6.5.0(picomatch@4.0.3) 15117 fdir: 6.5.0(picomatch@4.0.3)
14426 picomatch: 4.0.3 15118 picomatch: 4.0.3
14427 15119
15120 + tinypool@0.8.4: {}
15121 +
15122 + tinyspy@2.2.1: {}
15123 +
14428 to-buffer@1.2.2: 15124 to-buffer@1.2.2:
14429 dependencies: 15125 dependencies:
14430 isarray: 2.0.5 15126 isarray: 2.0.5
...@@ -14483,6 +15179,8 @@ snapshots: ...@@ -14483,6 +15179,8 @@ snapshots:
14483 dependencies: 15179 dependencies:
14484 prelude-ls: 1.2.1 15180 prelude-ls: 1.2.1
14485 15181
15182 + type-detect@4.1.0: {}
15183 +
14486 type-fest@0.20.2: {} 15184 type-fest@0.20.2: {}
14487 15185
14488 type-fest@0.21.3: {} 15186 type-fest@0.21.3: {}
...@@ -14645,11 +15343,81 @@ snapshots: ...@@ -14645,11 +15343,81 @@ snapshots:
14645 15343
14646 vary@1.1.2: {} 15344 vary@1.1.2: {}
14647 15345
15346 + vite-node@1.6.1(@types/node@25.2.2)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0):
15347 + dependencies:
15348 + cac: 6.7.14
15349 + debug: 4.4.3
15350 + pathe: 1.1.2
15351 + picocolors: 1.1.1
15352 + vite: 5.4.21(@types/node@25.2.2)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)
15353 + transitivePeerDependencies:
15354 + - '@types/node'
15355 + - less
15356 + - lightningcss
15357 + - sass
15358 + - sass-embedded
15359 + - stylus
15360 + - sugarss
15361 + - supports-color
15362 + - terser
15363 +
15364 + vite@5.4.21(@types/node@25.2.2)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0):
15365 + dependencies:
15366 + esbuild: 0.21.5
15367 + postcss: 8.5.6
15368 + rollup: 4.57.1
15369 + optionalDependencies:
15370 + '@types/node': 25.2.2
15371 + fsevents: 2.3.3
15372 + less: 4.5.1
15373 + lightningcss: 1.31.1
15374 + sass: 1.97.3
15375 + stylus: 0.64.0
15376 + terser: 5.46.0
15377 +
15378 + vitest@1.6.1(@types/node@25.2.2)(happy-dom@14.12.3)(jsdom@24.1.3)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0):
15379 + dependencies:
15380 + '@vitest/expect': 1.6.1
15381 + '@vitest/runner': 1.6.1
15382 + '@vitest/snapshot': 1.6.1
15383 + '@vitest/spy': 1.6.1
15384 + '@vitest/utils': 1.6.1
15385 + acorn-walk: 8.3.4
15386 + chai: 4.5.0
15387 + debug: 4.4.3
15388 + execa: 8.0.1
15389 + local-pkg: 0.5.1
15390 + magic-string: 0.30.21
15391 + pathe: 1.1.2
15392 + picocolors: 1.1.1
15393 + std-env: 3.10.0
15394 + strip-literal: 2.1.1
15395 + tinybench: 2.9.0
15396 + tinypool: 0.8.4
15397 + vite: 5.4.21(@types/node@25.2.2)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)
15398 + vite-node: 1.6.1(@types/node@25.2.2)(less@4.5.1)(lightningcss@1.31.1)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)
15399 + why-is-node-running: 2.3.0
15400 + optionalDependencies:
15401 + '@types/node': 25.2.2
15402 + happy-dom: 14.12.3
15403 + jsdom: 24.1.3
15404 + transitivePeerDependencies:
15405 + - less
15406 + - lightningcss
15407 + - sass
15408 + - sass-embedded
15409 + - stylus
15410 + - sugarss
15411 + - supports-color
15412 + - terser
15413 +
14648 vm2@3.10.4: 15414 vm2@3.10.4:
14649 dependencies: 15415 dependencies:
14650 acorn: 8.15.0 15416 acorn: 8.15.0
14651 acorn-walk: 8.3.4 15417 acorn-walk: 8.3.4
14652 15418
15419 + vue-component-type-helpers@2.2.12: {}
15420 +
14653 vue-eslint-parser@8.3.0(eslint@8.57.1): 15421 vue-eslint-parser@8.3.0(eslint@8.57.1):
14654 dependencies: 15422 dependencies:
14655 debug: 4.4.3 15423 debug: 4.4.3
...@@ -14872,6 +15640,8 @@ snapshots: ...@@ -14872,6 +15640,8 @@ snapshots:
14872 15640
14873 whatwg-fetch@3.6.20: {} 15641 whatwg-fetch@3.6.20: {}
14874 15642
15643 + whatwg-mimetype@3.0.0: {}
15644 +
14875 whatwg-mimetype@4.0.0: {} 15645 whatwg-mimetype@4.0.0: {}
14876 15646
14877 whatwg-url@14.2.0: 15647 whatwg-url@14.2.0:
...@@ -14926,6 +15696,11 @@ snapshots: ...@@ -14926,6 +15696,11 @@ snapshots:
14926 dependencies: 15696 dependencies:
14927 isexe: 2.0.0 15697 isexe: 2.0.0
14928 15698
15699 + why-is-node-running@2.3.0:
15700 + dependencies:
15701 + siginfo: 2.0.0
15702 + stackback: 0.0.2
15703 +
14929 wildcard@2.0.1: {} 15704 wildcard@2.0.1: {}
14930 15705
14931 word-wrap@1.2.5: {} 15706 word-wrap@1.2.5: {}
...@@ -15018,6 +15793,8 @@ snapshots: ...@@ -15018,6 +15793,8 @@ snapshots:
15018 15793
15019 yocto-queue@0.1.0: {} 15794 yocto-queue@0.1.0: {}
15020 15795
15796 + yocto-queue@1.2.2: {}
15797 +
15021 yup@1.7.1: 15798 yup@1.7.1:
15022 dependencies: 15799 dependencies:
15023 property-expr: 2.0.6 15800 property-expr: 2.0.6
......
...@@ -169,12 +169,13 @@ const { handleClick } = useListItemClick({ ...@@ -169,12 +169,13 @@ const { handleClick } = useListItemClick({
169 // 通知父组件查看完成 169 // 通知父组件查看完成
170 emit('viewed', item) 170 emit('viewed', item)
171 } 171 }
172 -}) 172 +});
173 173
174 /** 174 /**
175 * 处理查看点击 175 * 处理查看点击
176 * 176 *
177 * @description 内部处理查看逻辑,调用 useListItemClick 177 * @description 内部处理查看逻辑,调用 useListItemClick
178 + * 注意:权限检查和埋点由 ListItemActions 组件内部处理
178 */ 179 */
179 const handleView = () => { 180 const handleView = () => {
180 handleClick({ 181 handleClick({
......
1 /** 1 /**
2 * 搜索页面测试套件 2 * 搜索页面测试套件
3 - * @description 测试搜索功能的各种场景,包括输入、返回、状态切换等 3 + * @description 测试搜索功能的各种场景,包括输入、状态切换等
4 - * @date 2026-01-31 4 + * @date 2026-02-13
5 */ 5 */
6 6
7 import { describe, it, expect, beforeEach, vi } from 'vitest' 7 import { describe, it, expect, beforeEach, vi } from 'vitest'
8 import { mount } from '@vue/test-utils' 8 import { mount } from '@vue/test-utils'
9 +import { createPinia, setActivePinia } from 'pinia'
10 +import Taro from '@tarojs/taro'
9 import SearchPage from './index.vue' 11 import SearchPage from './index.vue'
12 +import { searchAPI } from '@/api/search'
10 13
11 -// Mock Taro
12 vi.mock('@tarojs/taro', () => ({ 14 vi.mock('@tarojs/taro', () => ({
13 default: { 15 default: {
14 - showToast: vi.fn() 16 + showToast: vi.fn(),
15 - } 17 + getCurrentPages: vi.fn(() => [])
18 + },
19 + useDidShow: vi.fn(),
20 + usePullDownRefresh: vi.fn(),
21 + stopPullDownRefresh: vi.fn()
16 })) 22 }))
17 23
18 -// Mock hooks
19 vi.mock('@/hooks/useGo', () => ({ 24 vi.mock('@/hooks/useGo', () => ({
20 useGo: () => vi.fn() 25 useGo: () => vi.fn()
21 })) 26 }))
22 27
23 -describe('搜索页面测试', () => { 28 +vi.mock('@/api/search', () => ({
24 - let wrapper 29 + searchAPI: vi.fn()
30 +}))
25 31
26 - beforeEach(() => { 32 +const create_wrapper = () => {
27 - wrapper = mount(SearchPage, { 33 + const pinia = createPinia()
28 - global: { 34 + setActivePinia(pinia)
29 - components: { 35 + return mount(SearchPage, {
30 - NavHeader: { template: '<div>NavHeader</div>' }, 36 + global: {
31 - IconFont: { template: '<div>IconFont</div>' }, 37 + plugins: [pinia],
32 - SearchBar: { 38 + components: {
33 - template: '<input :value="modelValue" @input="$emit(\'update:modelValue\', $event.target.value)" @search="$emit(\'search\')" @clear="$emit(\'clear\')" @blur="$emit(\'blur\')" />', 39 + NavHeader: { template: '<div />' },
34 - props: ['modelValue'], 40 + IconFont: { template: '<div />' },
35 - emits: ['update:modelValue', 'search', 'clear', 'blur'] 41 + SearchBar: { template: '<input />' }
36 - }
37 - }
38 } 42 }
39 - }) 43 + }
40 - })
41 -
42 - describe('初始化状态测试', () => {
43 - it('应该正确初始化 mock 数据', () => {
44 - // 验证是否生成了 100 条数据(50 产品 + 50 资料)
45 - expect(wrapper.vm.allData.length).toBe(100)
46 - })
47 -
48 - it('应该正确初始化分类数据', () => {
49 - // 验证 3 个分类(全部、产品、资料)
50 - expect(wrapper.vm.tabsData.length).toBe(3)
51 - expect(wrapper.vm.tabsData[0].name).toBe('全部')
52 - expect(wrapper.vm.tabsData[1].name).toBe('产品')
53 - expect(wrapper.vm.tabsData[2].name).toBe('资料')
54 - })
55 -
56 - it('应该默认选中"全部"分类', () => {
57 - expect(wrapper.vm.activeTabId).toBe('')
58 - })
59 -
60 - it('初始状态 shouldSearched 应该为 false', () => {
61 - expect(wrapper.vm.hasSearched).toBe(false)
62 - })
63 -
64 - it('初始状态搜索结果应该为空数组', () => {
65 - expect(wrapper.vm.searchResults.length).toBe(0)
66 - })
67 }) 44 })
45 +}
68 46
69 - describe('搜索功能测试', () => { 47 +describe('搜索页面测试', () => {
70 - it('输入搜索关键词后,hasSearched 应该变为 true', async () => { 48 + beforeEach(() => {
71 - wrapper.vm.searchKeyword = '保险' 49 + searchAPI.mockReset()
72 - await wrapper.vm.$nextTick() 50 + Taro.showToast.mockReset()
73 - await wrapper.vm.handleSearch()
74 -
75 - expect(wrapper.vm.hasSearched).toBe(true)
76 - expect(wrapper.vm.searchKeyword).toBe('保险')
77 - })
78 -
79 - it('应该能搜索到包含关键词的产品', async () => {
80 - wrapper.vm.searchKeyword = '保险'
81 - await wrapper.vm.$nextTick()
82 - await wrapper.vm.handleSearch()
83 -
84 - const results = wrapper.vm.searchResults
85 - expect(results.length).toBeGreaterThan(0)
86 - expect(results[0].title.toLowerCase()).toContain('保险')
87 - })
88 -
89 - it('应该能搜索到包含关键词的资料', async () => {
90 - wrapper.vm.searchKeyword = '培训'
91 - await wrapper.vm.$nextTick()
92 - await wrapper.vm.handleSearch()
93 -
94 - const results = wrapper.vm.searchResults
95 - expect(results.length).toBeGreaterThan(0)
96 - expect(results[0].title.toLowerCase()).toContain('培训')
97 - })
98 -
99 - it('搜索不存在的关键词应该返回空结果', async () => {
100 - wrapper.vm.searchKeyword = '不存在的内容xyz123'
101 - await wrapper.vm.$nextTick()
102 - await wrapper.vm.handleSearch()
103 -
104 - expect(wrapper.vm.hasSearched).toBe(true)
105 - expect(wrapper.vm.searchResults.length).toBe(0)
106 - })
107 -
108 - it('清空搜索关键词后 hasSearched 应该保持为 true', async () => {
109 - // 先执行搜索
110 - wrapper.vm.searchKeyword = '保险'
111 - await wrapper.vm.$nextTick()
112 - await wrapper.vm.handleSearch()
113 - expect(wrapper.vm.hasSearched).toBe(true)
114 -
115 - // 清空搜索
116 - await wrapper.vm.clearSearch()
117 - expect(wrapper.vm.searchKeyword).toBe('')
118 - // ✅ 修复后:hasSearched 应该保持 true
119 - expect(wrapper.vm.hasSearched).toBe(true)
120 - })
121 }) 51 })
122 52
123 - describe('分类切换测试', () => { 53 + it('初始化状态正确', () => {
124 - beforeEach(async () => { 54 + const wrapper = create_wrapper()
125 - // 先执行一次搜索 55 + expect(wrapper.vm.activeTab).toBe('')
126 - wrapper.vm.searchKeyword = '保险' 56 + expect(wrapper.vm.hasSearched).toBe(false)
127 - await wrapper.vm.handleSearch() 57 + expect(wrapper.vm.currentList.length).toBe(0)
128 - }) 58 + expect(wrapper.vm.currentTotal).toBe(0)
129 - 59 + expect(wrapper.vm.shouldEnableScrollLoad).toBe(false)
130 - it('切换到"产品"分类应该只显示产品', async () => { 60 + expect(wrapper.vm.tabsData.length).toBe(2)
131 - await wrapper.vm.onTabClick('product') 61 + expect(wrapper.vm.tabsData[0].id).toBe('product')
132 - 62 + expect(wrapper.vm.tabsData[1].id).toBe('file')
133 - expect(wrapper.vm.activeTabId).toBe('product')
134 - const results = wrapper.vm.searchResults
135 -
136 - results.forEach(item => {
137 - expect(item.category).toBe('product')
138 - })
139 - })
140 -
141 - it('切换到"资料"分类应该只显示资料', async () => {
142 - await wrapper.vm.onTabClick('material')
143 -
144 - expect(wrapper.vm.activeTabId).toBe('material')
145 - const results = wrapper.vm.searchResults
146 -
147 - results.forEach(item => {
148 - expect(item.category).toBe('material')
149 - })
150 - })
151 -
152 - it('切换到"全部"分类应该显示所有结果', async () => {
153 - await wrapper.vm.onTabClick('')
154 -
155 - expect(wrapper.vm.activeTabId).toBe('')
156 - const results = wrapper.vm.searchResults
157 -
158 - // 验证包含所有分类
159 - const hasProduct = results.some(item => item.category === 'product')
160 - const hasMaterial = results.some(item => item.category === 'material')
161 -
162 - expect(hasProduct).toBe(true)
163 - expect(hasMaterial).toBe(true)
164 - })
165 -
166 - it('切换分类后 listRenderKey 应该递增', async () => {
167 - const oldKey = wrapper.vm.listRenderKey
168 - await wrapper.vm.onTabClick('product')
169 -
170 - expect(wrapper.vm.listRenderKey).toBe(oldKey + 1)
171 - })
172 }) 63 })
173 64
174 - describe('实时搜索测试(watch searchKeyword)', () => { 65 + it('空关键词时提示并保持未搜索状态', async () => {
175 - it('输入关键词应该自动触发搜索', async () => { 66 + const wrapper = create_wrapper()
176 - wrapper.vm.searchKeyword = '医疗' 67 + wrapper.vm.searchKeyword = ''
177 - 68 + await wrapper.vm.handleSearch()
178 - // 等待 watch 触发
179 - await wrapper.vm.$nextTick()
180 -
181 - expect(wrapper.vm.hasSearched).toBe(true)
182 - expect(wrapper.vm.searchResults.length).toBeGreaterThan(0)
183 - })
184 -
185 - it('清空关键词应该自动重置搜索状态', async () => {
186 - // 先输入
187 - wrapper.vm.searchKeyword = '保险'
188 - await wrapper.vm.$nextTick()
189 - expect(wrapper.vm.hasSearched).toBe(true)
190 -
191 - // 清空
192 - wrapper.vm.searchKeyword = ''
193 - await wrapper.vm.$nextTick()
194 69
195 - expect(wrapper.vm.hasSearched).toBe(false) 70 + expect(Taro.showToast).toHaveBeenCalledTimes(1)
196 - expect(wrapper.vm.searchResults.length).toBe(0) 71 + expect(wrapper.vm.hasSearched).toBe(false)
197 - }) 72 + expect(wrapper.vm.activeTab).toBe('')
198 }) 73 })
199 74
200 - describe('边界情况测试', () => { 75 + it('搜索成功后默认选中产品并展示列表', async () => {
201 - it('输入纯空格不应该触发搜索', async () => { 76 + const wrapper = create_wrapper()
202 - wrapper.vm.searchKeyword = ' ' 77 + searchAPI.mockResolvedValueOnce({
203 - await wrapper.vm.handleSearch() 78 + code: 1,
204 - 79 + msg: 'ok',
205 - expect(wrapper.vm.hasSearched).toBe(false) 80 + data: {
206 - }) 81 + products: {
207 - 82 + list: [{ id: 1, product_name: '保险A', tags: [] }],
208 - it('输入特殊字符应该正常搜索', async () => { 83 + total: 1
209 - wrapper.vm.searchKeyword = '!@#$%' 84 + },
210 - await wrapper.vm.handleSearch() 85 + files: {
211 - 86 + list: [{ id: 10, name: '培训资料', value: 'url', size: '1MB', extension: 'pdf', is_favorite: 1 }],
212 - expect(wrapper.vm.hasSearched).toBe(true) 87 + total: 1
213 - // 应该返回空结果,但不应该报错 88 + }
214 - expect(wrapper.vm.searchResults.length).toBe(0) 89 + }
215 - })
216 -
217 - it('输入超长关键词应该正常处理', async () => {
218 - const longKeyword = 'a'.repeat(1000)
219 - wrapper.vm.searchKeyword = longKeyword
220 - await wrapper.vm.handleSearch()
221 -
222 - expect(wrapper.vm.hasSearched).toBe(true)
223 - // 应该返回空结果,但不应该报错
224 - expect(wrapper.vm.searchResults.length).toBe(0)
225 - })
226 -
227 - it('快速切换多次分类不应该出错', async () => {
228 - wrapper.vm.searchKeyword = '保险'
229 - await wrapper.vm.handleSearch()
230 -
231 - // 快速切换分类
232 - await wrapper.vm.onTabClick('product')
233 - await wrapper.vm.onTabClick('material')
234 - await wrapper.vm.onTabClick('')
235 - await wrapper.vm.onTabClick('product')
236 -
237 - // 不应该抛出错误
238 - expect(wrapper.vm.activeTabId).toBe('product')
239 }) 90 })
240 91
241 - it('快速输入和删除关键词应该正常处理', async () => { 92 + wrapper.vm.searchKeyword = '保险'
242 - // 快速输入 93 + await wrapper.vm.handleSearch()
243 - wrapper.vm.searchKeyword = '保'
244 - await wrapper.vm.$nextTick()
245 -
246 - wrapper.vm.searchKeyword = '保险'
247 - await wrapper.vm.$nextTick()
248 -
249 - wrapper.vm.searchKeyword = '保险产品'
250 - await wrapper.vm.$nextTick()
251 -
252 - // 快速删除
253 - wrapper.vm.searchKeyword = '保险'
254 - await wrapper.vm.$nextTick()
255 -
256 - wrapper.vm.searchKeyword = ''
257 - await wrapper.vm.$nextTick()
258 94
259 - // 最终状态应该是重置的 95 + expect(wrapper.vm.hasSearched).toBe(true)
260 - expect(wrapper.vm.hasSearched).toBe(false) 96 + expect(wrapper.vm.activeTab).toBe('product')
261 - expect(wrapper.vm.searchResults.length).toBe(0) 97 + expect(wrapper.vm.currentList.length).toBe(1)
262 - }) 98 + expect(wrapper.vm.currentTotal).toBe(1)
99 + expect(wrapper.vm.hasMore).toBe(false)
263 }) 100 })
264 101
265 - describe('✅ 修复后的问题测试', () => { 102 + it('切换 tab 时按当前关键词重新搜索', async () => {
266 - it('问题1修复: 清空关键词后,应该显示"暂无搜索结果"而不是"初始状态"', async () => { 103 + const wrapper = create_wrapper()
267 - // 1. 先搜索一个关键词(有结果) 104 + searchAPI.mockResolvedValueOnce({
268 - wrapper.vm.searchKeyword = '保险' 105 + code: 1,
269 - await wrapper.vm.handleSearch() 106 + msg: 'ok',
270 - 107 + data: {
271 - console.log('搜索"保险"后:') 108 + products: {
272 - console.log('- hasSearched:', wrapper.vm.hasSearched) 109 + list: [{ id: 1, product_name: '保险A', tags: [] }],
273 - console.log('- results.length:', wrapper.vm.searchResults.length) 110 + total: 1
274 - 111 + },
275 - expect(wrapper.vm.hasSearched).toBe(true) 112 + files: {
276 - expect(wrapper.vm.searchResults.length).toBeGreaterThan(0) 113 + list: [],
277 - 114 + total: 0
278 - // 2. 清空关键词 115 + }
279 - wrapper.vm.searchKeyword = '' 116 + }
280 - await wrapper.vm.$nextTick()
281 -
282 - console.log('清空关键词后:')
283 - console.log('- hasSearched:', wrapper.vm.hasSearched)
284 - console.log('- results.length:', wrapper.vm.searchResults.length)
285 - console.log('- isInitialState:', wrapper.vm.isInitialState)
286 -
287 - // ✅ 修复后:hasSearched 保持 true
288 - expect(wrapper.vm.hasSearched).toBe(true)
289 - expect(wrapper.vm.isInitialState).toBe(false)
290 - expect(wrapper.vm.searchResults.length).toBe(0)
291 - console.log('✅ FIXED: 用户看到"暂无搜索结果"而不是"初始状态"')
292 }) 117 })
293 118
294 - it('问题2: 切换分类时,如果当前没有关键词,不应该显示结果', async () => { 119 + wrapper.vm.searchKeyword = '保险'
295 - // 不输入任何关键词,直接切换分类 120 + await wrapper.vm.handleSearch()
296 - await wrapper.vm.onTabClick('product') 121 +
297 - 122 + searchAPI.mockResolvedValueOnce({
298 - // hasSearched 应该保持 false 123 + code: 1,
299 - expect(wrapper.vm.hasSearched).toBe(false) 124 + msg: 'ok',
300 - // 结果应该为空 125 + data: {
301 - expect(wrapper.vm.searchResults.length).toBe(0) 126 + products: {
127 + list: [],
128 + total: 0
129 + },
130 + files: {
131 + list: [{ id: 10, name: '培训资料', value: 'url', size: '1MB', extension: 'pdf', is_favorite: 0 }],
132 + total: 1
133 + }
134 + }
302 }) 135 })
303 136
304 - it('问题3: 搜索关键词后切换分类,结果应该正确更新', async () => { 137 + await wrapper.vm.onTabClick('file')
305 - // 1. 搜索"保险"
306 - wrapper.vm.searchKeyword = '保险'
307 - await wrapper.vm.handleSearch()
308 -
309 - const allResults = wrapper.vm.searchResults.length
310 - console.log('全部分类搜索"保险"结果数:', allResults)
311 -
312 - // 2. 切换到"产品"分类
313 - await wrapper.vm.onTabClick('product')
314 - const productResults = wrapper.vm.searchResults.length
315 - console.log('产品分类搜索"保险"结果数:', productResults)
316 138
317 - // 3. 切换到"资料"分类 139 + expect(wrapper.vm.activeTab).toBe('file')
318 - await wrapper.vm.onTabClick('material') 140 + expect(wrapper.vm.currentList.length).toBe(1)
319 - const materialResults = wrapper.vm.searchResults.length 141 + expect(searchAPI).toHaveBeenCalledWith({ keyword: '保险', page: 0, limit: 20, type: 'file' })
320 - console.log('资料分类搜索"保险"结果数:', materialResults)
321 -
322 - // 验证结果正确性
323 - expect(productResults + materialResults).toBe(allResults)
324 - })
325 }) 142 })
326 -})
327 143
328 -describe('搜索结果 computed 属性详细测试', () => { 144 + it('清空搜索后重置状态', async () => {
329 - let wrapper 145 + const wrapper = create_wrapper()
330 - 146 + searchAPI.mockResolvedValueOnce({
331 - beforeEach(() => { 147 + code: 1,
332 - wrapper = mount(SearchPage, { 148 + msg: 'ok',
333 - global: { 149 + data: {
334 - components: { 150 + products: {
335 - NavHeader: { template: '<div>NavHeader</div>' }, 151 + list: [{ id: 1, product_name: '保险A', tags: [] }],
336 - IconFont: { template: '<div>IconFont</div>' }, 152 + total: 1
337 - SearchBar: { template: '<div>SearchBar</div>' } 153 + },
154 + files: {
155 + list: [],
156 + total: 0
338 } 157 }
339 } 158 }
340 }) 159 })
341 - })
342 160
343 - it('当 hasSearched 为 false 时,应该返回空数组', () => {
344 - wrapper.vm.hasSearched = false
345 wrapper.vm.searchKeyword = '保险' 161 wrapper.vm.searchKeyword = '保险'
162 + await wrapper.vm.handleSearch()
346 163
347 - expect(wrapper.vm.searchResults.length).toBe(0) 164 + wrapper.vm.clearSearch()
348 - })
349 165
350 - it('当 hasSearched 为 true 但关键词为空时,应该返回当前分类的所有数据', () => { 166 + expect(wrapper.vm.hasSearched).toBe(false)
351 - wrapper.vm.hasSearched = true 167 + expect(wrapper.vm.activeTab).toBe('')
352 - wrapper.vm.searchKeyword = '' 168 + expect(wrapper.vm.currentList.length).toBe(0)
353 - wrapper.vm.activeTabId = ''
354 -
355 - // 应该返回所有 100 条数据
356 - expect(wrapper.vm.searchResults.length).toBe(100)
357 }) 169 })
358 170
359 - it('当 hasSearched 为 true 且有关键词时,应该返回过滤后的结果', () => { 171 + it('未搜索或无关键词时不触发加载更多', async () => {
360 - wrapper.vm.hasSearched = true 172 + const wrapper = create_wrapper()
361 - wrapper.vm.searchKeyword = '保险' 173 + await wrapper.vm.handleLoadMore(1)
362 - wrapper.vm.activeTabId = '' 174 + expect(searchAPI).not.toHaveBeenCalled()
363 -
364 - const results = wrapper.vm.searchResults
365 - expect(results.length).toBeGreaterThan(0)
366 -
367 - // 验证所有结果都包含关键词
368 - results.forEach(item => {
369 - expect(item.title.toLowerCase()).toContain('保险')
370 - })
371 - })
372 -
373 - it('搜索应该不区分大小写', () => {
374 - wrapper.vm.hasSearched = true
375 - wrapper.vm.searchKeyword = 'BAOXIAN'
376 - wrapper.vm.activeTabId = ''
377 -
378 - const results = wrapper.vm.searchResults
379 - // 应该能搜索到包含"保险"的内容
380 - expect(results.length).toBeGreaterThan(0)
381 }) 175 })
382 }) 176 })
......