From 1bf312c125f436bc6fd84730ba806c52c0eddea2 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Wed, 4 Nov 2026 19:04:25 +0800 Subject: [PATCH] =?UTF-8?q?chore(lint):=20=E5=8D=87=E7=BA=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=B7=A5=E5=85=B7=E9=93=BE=E5=B9=B6=E5=8F=91=E5=B8=83?= =?UTF-8?q?=201.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit eslint 10、eslint-plugin-vue 10、stylelint 17、commitlint 21 eslint 配置改为 flat config,去掉自动导入 globals 文件 环境变量改成 VITE_API_BASE 与 VITE_API_URL 函数注释改成多行 JSDoc,去掉行末句号 列表项 id 改为必填,去掉非空断言 新增 useFormDialog 统一表单弹窗流程 菜单表单在小程序端改由 flex 派生滚动区高度 声明 packageManager 为 pnpm@10.34.5 --- .env.development | 17 +- .env.production | 8 +- .eslintrc-auto-import.json | 98 - .gitignore | 3 +- .husky/commit-msg | 3 +- .husky/pre-commit | 4 +- .prettierignore | 9 +- .prettierrc.yaml | 4 +- .stylelintignore | 1 + .stylelintrc.json | 55 - commitlint.config.cjs | 40 +- eslint.config.mjs | 181 +- index.html | 2 +- package.json | 86 +- pnpm-lock.yaml | 10381 ++++++++++++++++ public/favicon.ico | Bin 4286 -> 4286 bytes public/images/qrcode/wechat-mp.jpg | Bin 42954 -> 54211 bytes public/images/qrcode/wechat-official.jpg | Bin 27403 -> 27425 bytes public/logo.png | Bin 19649 -> 28940 bytes src/api/auth.ts | 8 +- src/api/config.ts | 9 +- src/api/dept.ts | 39 +- src/api/dict.ts | 10 +- src/api/file.ts | 17 +- src/api/log.ts | 5 +- src/api/menu.ts | 37 +- src/api/notice.ts | 9 +- src/api/realtime.ts | 2 +- src/api/role.ts | 6 +- src/api/user.ts | 14 +- src/components/AppNavbar.vue | 6 +- src/components/AppProvider.vue | 36 +- .../qiun-data-charts/qiun-data-charts.vue | 6 +- src/components/u-charts/u-charts.js | 458 +- src/composables/useCacheCleaner.ts | 24 +- src/composables/useConfirmAction.ts | 23 +- src/composables/useCountdown.ts | 16 +- src/composables/useFormDialog.ts | 109 + src/composables/useLogout.ts | 6 +- src/composables/useNavbarMetrics.ts | 64 +- src/composables/useNavigation.ts | 4 +- src/composables/usePagedList.ts | 12 +- src/composables/useRealtime.ts | 34 +- src/composables/useScanLogin.ts | 12 +- src/composables/useSmsLoginCode.ts | 8 +- src/composables/useTheme.ts | 2 +- src/config/index.ts | 2 - src/config/work-menu.ts | 5 +- src/constants/index.ts | 1 - src/constants/permissions.ts | 2 - src/constants/storage-keys.ts | 16 +- src/enums/api-code-enum.ts | 2 +- src/env.d.ts | 7 - src/layouts/blank.vue | 14 +- src/layouts/default.vue | 18 +- src/layouts/tabbar.vue | 8 +- src/main.ts | 2 +- src/pages/index/index.vue | 28 +- .../login/components/BindMobilePopup.vue | 16 +- src/pages/login/index.vue | 26 +- src/pages/mine/components/MenuSection.vue | 10 +- .../mine/components/OfficialAccountCard.vue | 8 +- src/pages/mine/components/ProfileCard.vue | 5 +- src/pages/mine/components/QuickActions.vue | 8 +- src/pages/mine/index.vue | 32 +- src/static/icons/pv.svg | 2 +- src/static/icons/uv.svg | 2 +- src/static/images/logo.png | Bin 19649 -> 28940 bytes src/store/index.ts | 4 +- src/store/modules/theme.ts | 42 +- src/store/modules/user.ts | 16 +- src/subPages/mine/account/index.vue | 4 +- src/subPages/mine/profile/index.vue | 16 +- src/subPages/mine/scan-confirm/index.vue | 20 +- src/subPages/mine/settings/network/index.vue | 12 +- src/subPages/work/components/ActionSheet.vue | 11 +- src/subPages/work/components/TreeView.vue | 51 +- src/subPages/work/config/index.vue | 20 +- src/subPages/work/dept/index.vue | 34 +- src/subPages/work/dict/index.vue | 70 +- src/subPages/work/dict/item/index.vue | 86 +- src/subPages/work/log/index.vue | 15 +- src/subPages/work/menu/index.vue | 93 +- src/subPages/work/monitor/index.vue | 2 +- src/subPages/work/notice/index.vue | 29 +- src/subPages/work/role/assign-perm/index.vue | 36 +- src/subPages/work/role/index.vue | 24 +- src/subPages/work/user/index.vue | 44 +- src/types/env.d.ts | 22 +- src/types/global.d.ts | 4 +- src/utils/auth.ts | 13 +- src/utils/error.ts | 5 +- src/utils/form-schema.ts | 36 +- src/utils/format.ts | 11 +- src/utils/permission.ts | 8 +- src/utils/realtime/client.ts | 63 +- src/utils/realtime/protocol.ts | 44 +- src/utils/request.ts | 32 +- src/utils/storage.ts | 38 +- src/utils/tree.ts | 22 +- stylelint.config.cjs | 40 + tsconfig.json | 1 - tsconfig.templates.json | 11 - unocss.config.ts | 2 +- vite.config.ts | 20 +- 105 files changed, 11854 insertions(+), 1229 deletions(-) delete mode 100644 .eslintrc-auto-import.json delete mode 100644 .stylelintrc.json create mode 100644 pnpm-lock.yaml create mode 100644 src/composables/useFormDialog.ts delete mode 100644 src/env.d.ts create mode 100644 stylelint.config.cjs delete mode 100644 tsconfig.templates.json diff --git a/.env.development b/.env.development index 5339033..1fbb9c2 100644 --- a/.env.development +++ b/.env.development @@ -3,16 +3,9 @@ # 应用端口 VITE_APP_PORT=4096 -# 代理前缀 -VITE_APP_BASE_API=/dev-api +# 请求前缀,开发由 vite 代理转发到后端 +VITE_API_BASE=/dev-api -# 代理转发目标(开发环境代理指向的接口地址,默认走线上) -VITE_PROXY_TARGET=https://api.youlai.tech # 线上 -# VITE_PROXY_TARGET=http://localhost:8000 # 本地 - -# 接口地址(小程序/App 直连,H5 走代理用不到) -VITE_APP_API_URL=https://api.youlai.tech # 线上 -# VITE_APP_API_URL=http://localhost:8000 # 本地 - -# 应用监控地址(工作台-应用监控) -VITE_APP_MONITOR_URL=http://localhost:9090/wallboard +# 接口地址:开发时 H5 的请求代理到这里,小程序/App 直接请求这里 +VITE_API_URL=https://www.youlai.tech # 线上 +# VITE_API_URL=http://localhost:8000 # 本地 diff --git a/.env.production b/.env.production index d4836e7..8295244 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ +# 请求前缀,生产由 nginx 剥掉该前缀转发到后端 +VITE_API_BASE=/prod-api - -# API 基础路径,开发环境下的请求前缀 -VITE_APP_BASE_API = '/prod-api' -VITE_APP_API_URL = https://api.youlai.tech +# 接口地址:小程序/App 直接请求这里;H5 走同源 /prod-api,不需要它 +VITE_API_URL=https://www.youlai.tech diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json deleted file mode 100644 index 662da57..0000000 --- a/.eslintrc-auto-import.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "globals": { - "Component": true, - "ComponentPublicInstance": true, - "ComputedRef": true, - "EffectScope": true, - "ExtractDefaultPropTypes": true, - "ExtractPropTypes": true, - "ExtractPublicPropTypes": true, - "InjectionKey": true, - "PropType": true, - "Ref": true, - "VNode": true, - "WritableComputedRef": true, - "computed": true, - "createApp": true, - "customRef": true, - "defineAsyncComponent": true, - "defineComponent": true, - "effectScope": true, - "getCurrentInstance": true, - "getCurrentScope": true, - "h": true, - "inject": true, - "isProxy": true, - "isReactive": true, - "isReadonly": true, - "isRef": true, - "markRaw": true, - "nextTick": true, - "onActivated": true, - "onAddToFavorites": true, - "onBackPress": true, - "onBeforeMount": true, - "onBeforeUnmount": true, - "onBeforeUpdate": true, - "onDeactivated": true, - "onError": true, - "onErrorCaptured": true, - "onHide": true, - "onLaunch": true, - "onLoad": true, - "onMounted": true, - "onNavigationBarButtonTap": true, - "onNavigationBarSearchInputChanged": true, - "onNavigationBarSearchInputClicked": true, - "onNavigationBarSearchInputConfirmed": true, - "onNavigationBarSearchInputFocusChanged": true, - "onPageNotFound": true, - "onPageScroll": true, - "onPullDownRefresh": true, - "onReachBottom": true, - "onReady": true, - "onRenderTracked": true, - "onRenderTriggered": true, - "onResize": true, - "onScopeDispose": true, - "onServerPrefetch": true, - "onShareAppMessage": true, - "onShareTimeline": true, - "onShow": true, - "onTabItemTap": true, - "onThemeChange": true, - "onUnhandledRejection": true, - "onUnload": true, - "onUnmounted": true, - "onUpdated": true, - "onWatcherCleanup": true, - "provide": true, - "reactive": true, - "readonly": true, - "ref": true, - "resolveComponent": true, - "shallowReactive": true, - "shallowReadonly": true, - "shallowRef": true, - "toRaw": true, - "toRef": true, - "toRefs": true, - "toValue": true, - "triggerRef": true, - "unref": true, - "useAttrs": true, - "useCssModule": true, - "useCssVars": true, - "useId": true, - "useModel": true, - "useSlots": true, - "useTemplateRef": true, - "watch": true, - "watchEffect": true, - "watchPostEffect": true, - "watchSyncEffect": true, - "DirectiveBinding": true, - "MaybeRef": true, - "MaybeRefOrGetter": true - } -} diff --git a/.gitignore b/.gitignore index 1f29192..e8bd8db 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ node_modules .pnpm-store .DS_Store dist +unpackage *.local .history @@ -36,8 +37,6 @@ deploy.mjs launch.json .hbuilderx -pnpm-lock.yaml - .vscode .claude/ diff --git a/.husky/commit-msg b/.husky/commit-msg index 23ce835..b147a8b 100644 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1 +1,2 @@ -#npx --no-install commitlint --edit $1 +#!/usr/bin/env sh +pnpm exec commitlint --edit "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit index a3ec6f2..26fc364 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,2 @@ -echo "Running pre-commit hook..." -pnpm run lint:lint-staged +#!/usr/bin/env sh +pnpm exec lint-staged diff --git a/.prettierignore b/.prettierignore index 5bb1d8c..28d3aea 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,13 @@ - *.min.js dist +unpackage public +src/static node_modules +.husky auto-imports.d.ts +# 锁文件由 pnpm 生成 +pnpm-lock.yaml +# 脚本与文档不参与格式化 +*.sh +*.md diff --git a/.prettierrc.yaml b/.prettierrc.yaml index d9cf0c7..8ad7634 100644 --- a/.prettierrc.yaml +++ b/.prettierrc.yaml @@ -26,8 +26,8 @@ semi: true singleQuote: false # 缩进使用 2 个空格 tabWidth: 2 -# 在多行元素的末尾添加逗号(ES5 支持的对象、数组等) -trailingComma: "es5" +# 在多行元素的末尾添加逗号(包含函数参数) +trailingComma: "all" # 使用空格而不是制表符缩进 useTabs: false # Vue 文件中的 diff --git a/package.json b/package.json index 54ef044..9cd1276 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "youlai-app", - "version": "1.2.0", + "version": "1.2.1", "engines": { "node": ">=18" }, @@ -45,34 +45,26 @@ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", "build:quickapp-webview-union": "uni build -p quickapp-webview-union", "type-check": "vue-tsc --noEmit", - "check": "pnpm type-check && pnpm lint:eslint:check && pnpm lint:stylelint:check", - "lint:eslint:check": "eslint \"src/**/*.{vue,ts}\"", - "lint:eslint": "eslint \"src/**/*.{vue,ts}\" --fix", - "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,css,scss,vue,html,md}\"", + "check": "pnpm type-check && pnpm lint:eslint:check && pnpm format:check && pnpm lint:stylelint:check", + "lint:eslint:check": "eslint \"src/**/*.{vue,ts}\" vite.config.ts unocss.config.ts pages.config.ts eslint.config.mjs", + "lint:eslint": "eslint --cache \"src/**/*.{vue,ts}\" vite.config.ts unocss.config.ts pages.config.ts eslint.config.mjs --fix", + "lint:prettier": "prettier --write --no-error-on-unmatched-pattern \"src/**/*.{ts,vue,scss,css,json}\" \"*.{ts,cjs,mjs,json,yaml}\"", "lint:stylelint:check": "stylelint \"**/*.{css,scss,vue,html}\"", "lint:stylelint": "stylelint \"**/*.{css,scss,vue,html}\" --fix", "lint:lint-staged": "lint-staged", "prepare": "husky", - "commit": "git-cz" + "commit": "git-cz", + "format:check": "prettier --check --no-error-on-unmatched-pattern \"src/**/*.{ts,vue,scss,css,json}\" \"*.{ts,cjs,mjs,json,yaml}\"" }, "lint-staged": { - "*.{js,ts}": [ + "*.{js,mjs,cjs,ts,vue}": [ "eslint --fix", "prettier --write" ], - "*.{cjs,json}": [ - "prettier --write" - ], - "*.{vue,html}": [ - "eslint --fix", - "prettier --write", + "*.{css,scss,vue}": [ "stylelint --fix" ], - "*.{scss,css}": [ - "stylelint --fix", - "prettier --write" - ], - "*.md": [ + "*.{json,html}": [ "prettier --write" ] }, @@ -104,48 +96,54 @@ "vue": "^3.5.22" }, "devDependencies": { - "@commitlint/cli": "^19.8.1", - "@commitlint/config-conventional": "^19.8.1", + "@commitlint/cli": "^21.2.1", + "@commitlint/config-conventional": "^21.2.0", + "@commitlint/types": "^21.2.0", "@dcloudio/types": "^3.4.24", "@dcloudio/uni-cli-shared": "3.0.0-4020420240722002", "@dcloudio/uni-stacktracey": "3.0.0-4020420240722002", "@dcloudio/vite-plugin-uni": "3.0.0-4020420240722002", - "@eslint/js": "^9.37.0", - "@typescript-eslint/eslint-plugin": "^8.46.0", - "@typescript-eslint/parser": "^8.46.0", + "@eslint/js": "^10.0.1", "@uni-helper/uni-types": "1.0.0-alpha.6", "@uni-helper/vite-plugin-uni-components": "^0.2.3", "@uni-helper/vite-plugin-uni-layouts": "^0.1.11", "@uni-helper/vite-plugin-uni-pages": "^0.3.24", + "@vue/eslint-config-prettier": "^10.2.0", "@vue/runtime-core": "^3.5.22", - "commitizen": "^4.3.1", - "cz-git": "^1.12.0", - "eslint": "^9.37.0", - "eslint-config-prettier": "^9.1.2", - "eslint-plugin-prettier": "^5.5.4", - "eslint-plugin-vue": "^9.33.0", - "globals": "^15.15.0", + "commitizen": "^4.3.2", + "cz-git": "^1.13.2", + "eslint": "^10.14.0", + "eslint-plugin-vue": "^10.12.0", + "globals": "^17.13.0", "husky": "^9.1.7", - "lint-staged": "^15.5.2", - "postcss": "^8.5.6", - "postcss-html": "^1.8.0", + "lint-staged": "^17.6.0", + "postcss": "^8.5.26", + "postcss-html": "^2.0.0", "postcss-scss": "^4.0.9", - "prettier": "^3.6.2", + "prettier": "^3.9.10", "sass": "1.78.0", - "stylelint": "^16.25.0", - "stylelint-config-html": "^1.1.0", - "stylelint-config-recess-order": "^5.1.1", - "stylelint-config-recommended": "^14.0.1", - "stylelint-config-recommended-scss": "^14.1.0", - "stylelint-config-recommended-vue": "^1.6.1", - "stylelint-prettier": "^5.0.3", + "stylelint": "^17.16.0", + "stylelint-config-html": "^2.0.0", + "stylelint-config-recess-order": "^7.9.0", + "stylelint-config-recommended": "^18.0.0", + "stylelint-config-recommended-scss": "^17.0.1", + "stylelint-config-recommended-vue": "^2.0.0", + "stylelint-order": "^8.1.2", "typescript": "^5.7.0", - "typescript-eslint": "^8.46.0", + "typescript-eslint": "^8.72.1", "unocss": "^0.62.4", "unocss-preset-weapp": "^0.62.2", "unplugin-auto-import": "^0.18.6", "vite": "^6.3.2", - "vue-eslint-parser": "^9.4.3", + "vue-eslint-parser": "^10.4.1", "vue-tsc": "^2.2.0" - } + }, + "pnpm": { + "onlyBuiltDependencies": [ + "core-js", + "esbuild", + "vue-demi" + ] + }, + "packageManager": "pnpm@10.34.5" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..8e83418 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,10381 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@dcloudio/types@3.4.32)(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-app-harmony': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-components': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-h5': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-xhs': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@uni-helper/uni-use': + specifier: ^0.19.15 + version: 0.19.17(postcss@8.5.32)(rollup@4.62.2)(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + '@wot-ui/ui': + specifier: ^2.2.0 + version: 2.3.2(vue@3.5.40(typescript@5.9.3)) + dayjs: + specifier: ^1.11.13 + version: 1.11.21 + pinia: + specifier: ^2.3.1 + version: 2.3.1(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + vue: + specifier: ^3.5.22 + version: 3.5.40(typescript@5.9.3) + devDependencies: + '@commitlint/cli': + specifier: ^21.2.1 + version: 21.2.4(typescript@5.9.3) + '@commitlint/config-conventional': + specifier: ^21.2.0 + version: 21.2.4 + '@commitlint/types': + specifier: ^21.2.0 + version: 21.2.0 + '@dcloudio/types': + specifier: ^3.4.24 + version: 3.4.32 + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-4020420240722002 + version: 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1(eslint@10.14.0(jiti@2.7.0)) + '@uni-helper/uni-types': + specifier: 1.0.0-alpha.6 + version: 1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + '@uni-helper/vite-plugin-uni-components': + specifier: ^0.2.3 + version: 0.2.10(rollup@4.62.2) + '@uni-helper/vite-plugin-uni-layouts': + specifier: ^0.1.11 + version: 0.1.11(rollup@4.62.2) + '@uni-helper/vite-plugin-uni-pages': + specifier: ^0.3.24 + version: 0.3.24(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + '@vue/eslint-config-prettier': + specifier: ^10.2.0 + version: 10.2.0(eslint@10.14.0(jiti@2.7.0))(prettier@3.9.10) + '@vue/runtime-core': + specifier: ^3.5.22 + version: 3.5.40 + commitizen: + specifier: ^4.3.2 + version: 4.3.2(@types/node@26.1.1)(typescript@5.9.3) + cz-git: + specifier: ^1.13.2 + version: 1.14.0 + eslint: + specifier: ^10.14.0 + version: 10.14.0(jiti@2.7.0) + eslint-plugin-vue: + specifier: ^10.12.0 + version: 10.12.0(@typescript-eslint/parser@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.14.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.14.0(jiti@2.7.0))) + globals: + specifier: ^17.13.0 + version: 17.14.0 + husky: + specifier: ^9.1.7 + version: 9.1.7 + lint-staged: + specifier: ^17.6.0 + version: 17.6.0 + postcss: + specifier: ^8.5.26 + version: 8.5.32 + postcss-html: + specifier: ^2.0.0 + version: 2.0.0(postcss@8.5.32) + postcss-scss: + specifier: ^4.0.9 + version: 4.0.9(postcss@8.5.32) + prettier: + specifier: ^3.9.10 + version: 3.9.10 + sass: + specifier: 1.78.0 + version: 1.78.0 + stylelint: + specifier: ^17.16.0 + version: 17.16.0(typescript@5.9.3) + stylelint-config-html: + specifier: ^2.0.0 + version: 2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint@17.16.0(typescript@5.9.3)) + stylelint-config-recess-order: + specifier: ^7.9.0 + version: 7.9.0(stylelint-order@8.1.2(stylelint@17.16.0(typescript@5.9.3)))(stylelint@17.16.0(typescript@5.9.3)) + stylelint-config-recommended: + specifier: ^18.0.0 + version: 18.0.0(stylelint@17.16.0(typescript@5.9.3)) + stylelint-config-recommended-scss: + specifier: ^17.0.1 + version: 17.0.1(postcss@8.5.32)(stylelint@17.16.0(typescript@5.9.3)) + stylelint-config-recommended-vue: + specifier: ^2.0.0 + version: 2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint-config-html@2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint@17.16.0(typescript@5.9.3)))(stylelint-config-recommended-scss@17.0.1(postcss@8.5.32)(stylelint@17.16.0(typescript@5.9.3)))(stylelint-config-recommended@18.0.0(stylelint@17.16.0(typescript@5.9.3)))(stylelint@17.16.0(typescript@5.9.3)) + stylelint-order: + specifier: ^8.1.2 + version: 8.1.2(stylelint@17.16.0(typescript@5.9.3)) + typescript: + specifier: ^5.7.0 + version: 5.9.3 + typescript-eslint: + specifier: ^8.72.1 + version: 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + unocss: + specifier: ^0.62.4 + version: 0.62.4(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + unocss-preset-weapp: + specifier: ^0.62.2 + version: 0.62.2(rollup@4.62.2) + unplugin-auto-import: + specifier: ^0.18.6 + version: 0.18.6(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2) + vite: + specifier: ^6.3.2 + version: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + vue-eslint-parser: + specifier: ^10.4.1 + version: 10.4.1(eslint@10.14.0(jiti@2.7.0)) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.29.7': + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.29.7': + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.29.7': + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': + resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': + resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': + resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': + resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': + resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': + resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.29.7': + resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.29.7': + resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.7': + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.29.7': + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.29.7': + resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.29.7': + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.29.7': + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.29.7': + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.29.7': + resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.29.7': + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.29.7': + resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.29.7': + resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.29.7': + resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.29.7': + resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.29.7': + resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.29.7': + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.29.7': + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.29.7': + resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.29.7': + resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.29.7': + resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7': + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.29.7': + resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.29.7': + resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.7': + resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.29.7': + resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.29.7': + resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.29.7': + resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.29.7': + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.29.7': + resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.29.7': + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.29.7': + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.29.7': + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.29.7': + resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.7': + resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.29.7': + resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.29.7': + resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.29.7': + resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.29.7': + resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.29.7': + resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.29.7': + resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.29.7': + resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.7': + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.29.7': + resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.29.7': + resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.29.7': + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7': + resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.7': + resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} + + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + + '@commitlint/cli@21.2.4': + resolution: {integrity: sha512-g3M/wrQdElqGH5vROIeL2QiYIxrzqUkhCgsDyDlWfKEyQdCt10OyMB28W2cJtpZ+VNGMvmaN923infr1hOfyrg==} + engines: {node: '>=22.12.0'} + hasBin: true + + '@commitlint/config-conventional@21.2.4': + resolution: {integrity: sha512-IRldtwgNmR0SySR7wizFbhRmq45lPt6H3XCNTMyVN7jrPLgi8JlTRR6Eg1HLWUQt9P1Lh3k6eY25ilDa47EE6w==} + engines: {node: '>=22.12.0'} + + '@commitlint/config-validator@21.2.0': + resolution: {integrity: sha512-t7AzNHAKeIdo/3NRGwzpufKHsKkPHmFs/56N2Fnsh0/r0rGtnQzTxk6vnFgjaGr4hdSQKNB50/KAhR9Yk4LJKA==} + engines: {node: '>=22.12.0'} + + '@commitlint/config-validator@21.2.3': + resolution: {integrity: sha512-JQ13v0GafSM4fBYX8UowSy++07Was20auq0NcTdnzSEq6/05Cq5GBUMIfKkqjzyBwC9sJFmPpKWgLLhH7cygkw==} + engines: {node: '>=22.12.0'} + + '@commitlint/ensure@21.2.4': + resolution: {integrity: sha512-woLOLV4pBMUBLyr5+MDM3WSG1r+eb2DObkysFSDxqyDUE4c6hZUOrpebJb2f8XcP3zKGJLb8H5w2suERVGI+Ag==} + engines: {node: '>=22.12.0'} + + '@commitlint/execute-rule@21.0.1': + resolution: {integrity: sha512-RifH+FmImozKBE6mozhF4K3r2RRKP7SMi/Q/zLCmExtp5e05lhHOUYqGBlFBAGNHaZxU/WYw1XuugYK9jQzqnA==} + engines: {node: '>=22.12.0'} + + '@commitlint/format@21.2.3': + resolution: {integrity: sha512-KKwCjXYqA8r295uhLnulDXL9yekdXmj2yp2Q0XsBPhxQ2iPuvRE8F43j7g7yexo69wTdmUQmFz15jpderluzUQ==} + engines: {node: '>=22.12.0'} + + '@commitlint/is-ignored@21.2.3': + resolution: {integrity: sha512-Ng4nRj/LBAOvc+GQu7bsFW4/fL89LvZ14OOC/ERLbUpnG6QBwWRzY/1oXGwPs3C8YHWjJObin4kLYo2YeEn70w==} + engines: {node: '>=22.12.0'} + + '@commitlint/lint@21.2.4': + resolution: {integrity: sha512-HR8SGl1oEGfi/cqyBipanVY0a9CfEzIcJjPC37t7oQedaUUngw3d5E17g5Cfr2S3p6KsZM7UOHFq5fXHLRh7DQ==} + engines: {node: '>=22.12.0'} + + '@commitlint/load@21.2.0': + resolution: {integrity: sha512-RjlzWQqruRwIenJEfZtq7kG97co97nKoHpflE5YnF61tDLXxHPrdWImgzw6VL6MlFyaOcVlk74eBV8ZQmc3oIA==} + engines: {node: '>=22.12.0'} + + '@commitlint/load@21.2.4': + resolution: {integrity: sha512-Gi+aAW9nL8XPgvg8kIO0gZOw1/ePvpDLkv1bm8tj0RqenhNtCzk0frtctJhl41uIAP7OSx9bgQ6HCOa9En4g2Q==} + engines: {node: '>=22.12.0'} + + '@commitlint/message@21.2.0': + resolution: {integrity: sha512-YxGoiXD/HXNXLJPrQwE5poXa+XH0CBEm+mdvbHQP0g6MV/dmJyUFCzPNzZbxL93GvZ70TmtTK0Z0/IBpAqHv8g==} + engines: {node: '>=22.12.0'} + + '@commitlint/parse@21.2.3': + resolution: {integrity: sha512-Jt61QpF1xA88damCELe8I0FlDZPSpXNc8IhN7z5kZ0EcDYPjdZ+ZHPvsSXl69r2MIlLnNKeHhOn2cmVpziFE9w==} + engines: {node: '>=22.12.0'} + + '@commitlint/read@21.2.3': + resolution: {integrity: sha512-szAepuLA1vTTr7fuudEg7jYyVHudf+FH+vptU91bhxE1WnE8TKrfTAi44HVllz8XpI8Pvp4GjR/iP5Nshgh+og==} + engines: {node: '>=22.12.0'} + + '@commitlint/resolve-extends@21.2.0': + resolution: {integrity: sha512-4O/1j51+79Wth9s/MGxt/5gs0XYLDgNlYpltQfhAvLE0itusLKs9zruxbiNg1oOkmkb9L9L4USYGjEj7n87NxA==} + engines: {node: '>=22.12.0'} + + '@commitlint/resolve-extends@21.2.3': + resolution: {integrity: sha512-bqJdmAtXgAQel+l02uIsF7rHgKgx1AGZdGBjam7uK4XW54ZAQtB6XAIUXezYprQiCcRMpBh4fHs5JodXK4mVZA==} + engines: {node: '>=22.12.0'} + + '@commitlint/rules@21.2.4': + resolution: {integrity: sha512-wranK/aevXs/WiW4N3orQlXY4sU2pQWjRSjN7I3TsZmP146Rr4CpsG38lpyqVcbNfMgvUVGy7ffYm7nCziTUwg==} + engines: {node: '>=22.12.0'} + + '@commitlint/to-lines@21.0.1': + resolution: {integrity: sha512-bd1BFII7p1EQZre9Kaj+kKaMFP3cFCdt21K7DItVux9XP5WjLgJ0/Uy1pJJh9aPwVJ6SKg62PxqlZaHI8hQAXw==} + engines: {node: '>=22.12.0'} + + '@commitlint/top-level@21.2.0': + resolution: {integrity: sha512-Y5gmQ+KxzqCrBFJfLvFEPvvwD3LDiNZoTT2yeFBm96M8qhmqSzQc5DvX3rheAaAMjyIvMXOCLS/mWfdpONsjyQ==} + engines: {node: '>=22.12.0'} + + '@commitlint/types@21.2.0': + resolution: {integrity: sha512-7zVFCDB2reMvJH5dmbKnOQPjZEvjdJTH8jc0U/PIPU1r3/+vf5pD1HlfitV2MWsWXrvu7u39iY1lyLUPOaN0Gw==} + engines: {node: '>=22.12.0'} + + '@commitlint/types@21.2.3': + resolution: {integrity: sha512-sGEA473TlCvhCGNoTBY9OXZVWdscIXdGt0dm8EpB+2MRfmt8LNh/X56P/T3nCtEB+eH5qGEa3odphSAoUxSfSQ==} + engines: {node: '>=22.12.0'} + + '@conventional-changelog/git-client@3.2.0': + resolution: {integrity: sha512-sD/E0vzpkoDz/dqM1Hhv0ihC4KBw6RXjefeO8SG1XrX+wGkMxe1pKeedkKDPCtr2JjuhbuS9aJNgOvnT8hbeBw==} + engines: {node: '>=22'} + peerDependencies: + conventional-commits-filter: ^6.0.1 + conventional-commits-parser: ^7.1.3 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + + '@conventional-changelog/template@1.4.0': + resolution: {integrity: sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg==} + engines: {node: '>=22'} + + '@csstools/css-calc@3.4.3': + resolution: {integrity: sha512-iex20d8CHVkyvg6B7UKV7uHnI2Bqo9g+EFfT9E0y+GvTvhZ/DwONJ+9aKb1dlqm0ZiGsL5RXjp0fCoJYnkeDjA==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.2 + '@csstools/css-tokenizer': ^4.0.2 + + '@csstools/css-parser-algorithms@4.0.2': + resolution: {integrity: sha512-40cSKyMvK+tq4qz6Awrlye2WGuOKt3FwPgtGg6KTfbHOWNw+Rk1rzbAtZnZ6IBhsY491HLRnDXwoyBAijmmILA==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.2 + + '@csstools/css-syntax-patches-for-csstree@1.1.16': + resolution: {integrity: sha512-LsDbJPP/B8cPasUJyTA5S99F7C4G93ngW8hUluXz8CFeOaaRnBPtBiIlvgcPYU0HmHNz8CXg+1vwFrIB4F6Dgw==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.2': + resolution: {integrity: sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==} + engines: {node: '>=20.19.0'} + + '@csstools/media-query-list-parser@5.0.2': + resolution: {integrity: sha512-qx19O8AbbLLbDSAcI6YOby/Vq8rV51psgIvlF5OZT/L8fQJDCyQifL6k+kYU4a8ySpzJ4RBzZkIs530bAn8y4Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.2 + '@csstools/css-tokenizer': ^4.0.2 + + '@csstools/selector-resolve-nested@4.0.2': + resolution: {integrity: sha512-JpjNBJFA+4OnAHKRK4AMp8xrYyLhI9XapOeBlP2PhRU/IylSw+1ep3BFNTksBJnrTS3KT6kqKNVfpzLLwZUW5Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.1': + resolution: {integrity: sha512-MBuqFIIvqk4S593MGAskTkPpEUUzZNvGzh8mMxEwl3oHwjQlXmqHEDxNbN3Y0Tsh+xjmem4GZjeg7I0qkwBivg==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@dcloudio/types@3.4.32': + resolution: {integrity: sha512-sjhbkjUKxoym8KLEnyeXxCsxvRlBc7Bd/kNSZZRLj+lewS384bDPtq/x5FZ4iG+NrnzDmg3+HyiwV5u5vu2reQ==} + + '@dcloudio/uni-app-harmony@3.0.0-4020420240722002': + resolution: {integrity: sha512-oa2oaLLgU3L9oOy2mrxUui9tEqof/2pWzhrx8RfNLBDcbIvN5gXEkxAJopx2WbCvHqM/0fx0GofM52vFWPvJUA==} + + '@dcloudio/uni-app-plus@3.0.0-4020420240722002': + resolution: {integrity: sha512-Gbd/tXSZqHlGUrryZ1NCTkv/MJH/tkspnLdofPpTdk3+dUCO6/5cd05UrCYLQaqSqGwHL4VUZedyZoL0YqolbA==} + + '@dcloudio/uni-app-uts@3.0.0-4020420240722002': + resolution: {integrity: sha512-KzuzhZaAQT41vs5fp7YuZYu1iXWVW9QRxZmhYFjyfFvuVBgVy64PPVV9HdB0j3L3vcj/J/o4b/iBBfl4U7wfwg==} + + '@dcloudio/uni-app-vite@3.0.0-4020420240722002': + resolution: {integrity: sha512-pqB5Cn9qUP8GRZbHP9u+kXFy1Gl/S7kerqntVgRQKMIrs1zCAa9NCQlGDUQIGj5MlWGqU+/mw20TdpyibEW+/w==} + + '@dcloudio/uni-app-vue@3.0.0-4020420240722002': + resolution: {integrity: sha512-pxtIzEhdapE9JhGrTIPi271yr0c2leEhtO6xsTsdrfhswFqbh4BPVlT89XdioOhGtIOaS5m5hn6t6UVvuH0RDw==} + + '@dcloudio/uni-app@3.0.0-4020420240722002': + resolution: {integrity: sha512-TxRH2Q5akpJawxEcC9D+YKzhLOz5IsLpFkMabVFLWEZfgeDE2Ft2YJALwAxJSCYD4o0BcGtDEoYz68uWDwk0Ng==} + peerDependencies: + '@dcloudio/types': ^3.4.8 + + '@dcloudio/uni-cli-shared@3.0.0-4020420240722002': + resolution: {integrity: sha512-cU9iOmHcOSFYQ8Ucy+ipt8AaQWdYeaW+S433aLKfeyv/6Ehqn/C2aFSFjkslqYsKfeQ7ZymqDn6FcCnz7HYSvQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-4020420240722002': + resolution: {integrity: sha512-44J/k1dCcSYHLgqdedo1/EQE363C9POXjQfWJPDDIZc00b6Cqf6O16IPJowqbNs6lusKMZIrMp1mTdU2iQbpBw==} + + '@dcloudio/uni-components@3.0.0-4020420240722002': + resolution: {integrity: sha512-zMZSpPuxsKSkImB7fYmQMuO5x9hD5lbiFxq1PUByfG7O9nrMh1/ta7QA6QPu+R1haU0mNUXZz5PGgKUZ5wKnbw==} + + '@dcloudio/uni-h5-vite@3.0.0-4020420240722002': + resolution: {integrity: sha512-TFD+vYVwaH1tHH1xavRHH+ZTz0Irecx7dHf1ZP2rDizzigx6piCyTlS1W3zf/GFzu8bepLjANEcyfZ1Wn0DCzA==} + + '@dcloudio/uni-h5-vue@3.0.0-4020420240722002': + resolution: {integrity: sha512-1iv1aJHyFFMhEmggEjzys3hcU0PzTEGD/LuyP7FmphJeUM3h3pMRmcpdVErXjjbfsw6Vcl5XpfKw49wWpF5wdw==} + + '@dcloudio/uni-h5@3.0.0-4020420240722002': + resolution: {integrity: sha512-6S6B2WAnv2hgb2UNdYilDbP7uM9aFRdo+j+7as6aomKzNrepRW66qnqo7gThCx6f1T33TIZ8maESAMGZnW2/YA==} + + '@dcloudio/uni-i18n@3.0.0-4020420240722002': + resolution: {integrity: sha512-AYFfypLBqA6mWqvAsSipboZF8YLk3N6ok6Ud1EtIe4Lk0XthlGNX7EacSyfb8cPVGtt5mamkLP6z+butG+nuZg==} + + '@dcloudio/uni-mp-alipay@3.0.0-4020420240722002': + resolution: {integrity: sha512-eC93bKMDn7LC1K9yDkkebOeuLEISHgdmfxK5MDcBWEEw0X/GSKpKclUzRUEuFFKtAJCT++6gDN/rMYI5lMl+TQ==} + + '@dcloudio/uni-mp-baidu@3.0.0-4020420240722002': + resolution: {integrity: sha512-DLfOW03QK4FilySJ5IKMka8GRwkYKkwmA4fjG27ZmIWaziHec+IbDyRXyJ4DN2JIC/WKSTYR96bGNGSAQcWQDw==} + + '@dcloudio/uni-mp-compiler@3.0.0-4020420240722002': + resolution: {integrity: sha512-j3nTBkxRut1ESJDOhMpioTVbpT6zhNseT3KQd7/1J3AF5GCi3pJ7gu7LvMp5oD3F1cmwvruFLqkOi/Q5AVcZyg==} + + '@dcloudio/uni-mp-jd@3.0.0-4020420240722002': + resolution: {integrity: sha512-WecNRAA9TnNQwe9XzIbf2gdEO3k+01Eee9f4TbN6tCvGWbF2YWNahEgFCE1lJchbsxuFwddIDtW8w4HiHyl/3w==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-4020420240722002': + resolution: {integrity: sha512-4mcY73GTgd/IdhlSVTk9LPBt/+orVu828LPlQ66rJBXfkMpzGU6LEeYsGlKi1th21v09vByAt37kvdjfqNk3oQ==} + + '@dcloudio/uni-mp-lark@3.0.0-4020420240722002': + resolution: {integrity: sha512-6Ks70f0bDCYmUHDi/VBP20QmfWaAwE88HPlJv4W52iAQZx1VGln/JzbCzHglcy+X7HuyjpOzjTEXRwo+olnoWA==} + + '@dcloudio/uni-mp-qq@3.0.0-4020420240722002': + resolution: {integrity: sha512-KFCxpKvfIVOpw2iW6bf1UsR0ScqileUDi0niWernb/OkvefEznJukAAWFlpYHv+SMMCiC7cNm5L3mDFgti3+qA==} + + '@dcloudio/uni-mp-toutiao@3.0.0-4020420240722002': + resolution: {integrity: sha512-mMyWaAvaMNn4fW5JNveK2gfa6rh7qzS1ffSPSx/NkzJzFYsKrLPuyfIU60LgN6a5YM3iNGoI3KYpRvgLjws4sg==} + + '@dcloudio/uni-mp-vite@3.0.0-4020420240722002': + resolution: {integrity: sha512-KlNM780RwZ6POpFre78v9fxiT5dcKTSozDoBGs3qeUH+XCdKjMYGQyuy1QFMd6rqbwsEwGnhK57l1fiMi3yVOg==} + + '@dcloudio/uni-mp-vue@3.0.0-4020420240722002': + resolution: {integrity: sha512-A3nj0Vg5xUaYs0W2eoyRtbiI4WBzpMpkF1PIxiWLvxABLhR5c0LctV3tcLZxOnjk/04GtMOYin5InTv1mVEEgg==} + + '@dcloudio/uni-mp-weixin@3.0.0-4020420240722002': + resolution: {integrity: sha512-c89Grd/9hadCl3zzL4ydgenS7fEIxwaizEGqxn+1cgy9vuCnnh7eVL5V3JkxwCDwMsf8t7ltxgdQEUX1Sd/c5A==} + + '@dcloudio/uni-mp-xhs@3.0.0-4020420240722002': + resolution: {integrity: sha512-xEXe5XRlF8cFVREGlNTocbYSZS6XLT2GBDt9XUW9Py98cVOdyckl/bi4vp7ui0poV4Z9T4hVNG2cC7XDuqwLeQ==} + + '@dcloudio/uni-nvue-styler@3.0.0-4020420240722002': + resolution: {integrity: sha512-G1aqig3dHgzli16UG2yYkqq6vs/zwHtAMDjbIi0riElJX9g6uokJ2AWyoV1E1AmbFen5oaBIlwcjDYX7AJ4jbg==} + + '@dcloudio/uni-push@3.0.0-4020420240722002': + resolution: {integrity: sha512-YvU9PS005OdVbsuhJ++1X7pS7vbX0WPeyZSLgi7zu05ROVZSH41vu54HlNvL1sfopKEWtHl4BKlruGV2muDVoQ==} + + '@dcloudio/uni-quickapp-webview@3.0.0-4020420240722002': + resolution: {integrity: sha512-o0ekdcrQUAX1oNGbACNdLTGEzP75LginMMRjpkYyhrqz0cVXYlmzybY8PF+LvoYvmAEQV30ECR9FVtayFpVyZw==} + + '@dcloudio/uni-shared@3.0.0-4020420240722002': + resolution: {integrity: sha512-kFKmAgUDdlUyS3XBuXvmLQu3tEDAlJX6hQshsbdwP5LsH4MoI5xJVZpO6iloz3injL7+D/3i/UGoreA0qT3jew==} + + '@dcloudio/uni-stacktracey@3.0.0-4020420240722002': + resolution: {integrity: sha512-SFc5wFqGBd5Gfk3uq0WPl3T1YsPcRP17euilbjJHvrdzAs3U5QlI9Azu6IYYTOBhxsRa5n234dfu+YHjvHysrQ==} + + '@dcloudio/uni-stat@3.0.0-4020420240722002': + resolution: {integrity: sha512-eLiNyyGlaHuEtNOBLIcr7x4+aEsg7IEHq8RlLl21zQcpvDAFaa3IwMtyMaLZa5UUg/LPQA6vITCHx/O2R0uXrQ==} + + '@dcloudio/vite-plugin-uni@3.0.0-4020420240722002': + resolution: {integrity: sha512-+SYpD22swzwOtyiaOWyknRFpkc2YD8UNFoz+fAVEE6GEK48kvWAP1KpeY8iVsTObkrTs+1Oz4yr8QGZVqE3ksg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^5.2.8 + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.3': + resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/devtools-if@9.1.9': + resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.1.9': + resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==} + engines: {node: '>= 10'} + + '@intlify/message-resolver@9.1.9': + resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==} + engines: {node: '>= 10'} + + '@intlify/runtime@9.1.9': + resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==} + engines: {node: '>= 10'} + + '@intlify/shared@9.1.9': + resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==} + engines: {node: '>= 10'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + + '@meoc/utils@0.2.10': + resolution: {integrity: sha512-LN/CQDOVmmN/kq31630r+dFYZSPezmhbRq0Ib0RbKv+qpSpaOasXwAcwO/rkpPkhuoty5kfpHmTdjrEUU8bJYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.62.2': + resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.2': + resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.2': + resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.2': + resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.2': + resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.2': + resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.62.2': + resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.62.2': + resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.62.2': + resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.62.2': + resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.62.2': + resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.62.2': + resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.62.2': + resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.62.2': + resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.62.2': + resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.62.2': + resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.2': + resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.2': + resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.2': + resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.2': + resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} + cpu: [x64] + os: [win32] + + '@simple-libs/child-process-utils@2.0.0': + resolution: {integrity: sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==} + engines: {node: '>=22'} + + '@simple-libs/stream-utils@2.0.0': + resolution: {integrity: sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==} + engines: {node: '>=22'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@26.1.1': + resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} + + '@types/proper-lockfile@4.1.4': + resolution: {integrity: sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==} + + '@types/retry@0.12.5': + resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@typescript-eslint/eslint-plugin@8.72.1': + resolution: {integrity: sha512-5CokTWXpmbylfFabsbvHC0CAw3XLaGnoa+nFJX5FR592h/LoZsENUE6p/rg5xvkKrFEXz6pYmgI29AgXc2N3BQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.72.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.72.1': + resolution: {integrity: sha512-ZGwZP4OCfyA0AQTpEAMWz+rtX01DRhQWW5hB0ucKDEIX5U7jdmPSaMx94rQfaPAQzIYz2BimOgKOJtjfpRFQ9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.72.1': + resolution: {integrity: sha512-fAuVMkwdO/huI8nyo/WKnNKf6Gag93S56Rh3Ts5mGcavwSdaN8tRg1gCeIGX8PF+nzp1BjGfO4gHhGzW1J6jTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.72.1': + resolution: {integrity: sha512-lC/t6eMCZZQAAKZEYGL6RDVSuFehpdmMT6h+nJIjIa6oylN/PwDgDVtEIbB7O9xFfZYtZAYLoLlDNWKJhtF+uQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.72.1': + resolution: {integrity: sha512-e4D5R5vpeAEPBxT2BAzsFQL3sbwyeeeo5+aczgNSRK1V734jE7pTqaGFU+fXapWEQwnZbpFaTn32+Z8DwS6OTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.72.1': + resolution: {integrity: sha512-iY2wlmyrXJmx4yxUGP3aYCFF3cA/6ShddOKmLU2dx7LnEykbAM8WThlxZEfd1NddqceF6eJmZUayxx9oKIYNlg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.72.1': + resolution: {integrity: sha512-LmE5IhQet1BWOWEXqBrVtBPsMAOQ6Nzk35d+WLh3mk4EUF33sqlfxjio1MdYeSvKSG5skactKKuixBIKXhL4Rw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.72.1': + resolution: {integrity: sha512-DAlUoUV93hIvrtIQLwCbmZQYVZwOMhiHJrOVUUIWicFZaIYjTRqlY3I/NZevfkLmSqkNHRu2qYDcq9lrn16oOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.72.1': + resolution: {integrity: sha512-5v5liypurJBFHCBNqh/RjsymAD+VWcE0djuGY/BUqp5fC3Qn+luWDEksjuTtWjPn6i5zQlUtkZCRG/CYG0yCkA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.72.1': + resolution: {integrity: sha512-SB8xqipSzZHUePCCLNeYxqnxq83X61/qzNhjQGbTfjxGZIeOEP7tBgWYX05Tcd6CgE02WdTJnh5b8kMZJ/+bnQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uni-helper/uni-app-types@1.0.0-alpha.6': + resolution: {integrity: sha512-t9AKDYBmDaz4IW0fgtBt25ubEzf7kyUeMlHaBaG5nyNGd6pVuDpYkABhsnNPDiZcaHAoN6SbX1SQQx5axDOWbA==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-cloud-types@1.0.0-alpha.6': + resolution: {integrity: sha512-xnLiRcqf14NXcmkcekF3BbN0O157WROpzHfyKVAeLhcXRhO0HIRUMy0+h9KnCDZ+LFteeIOZXJWC5ere3yhIiQ==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-env@0.1.8': + resolution: {integrity: sha512-oZQisgM5sFarGrswKHJvS5S7xNMXLjcBcPTKp2gzLMon+chdHiKua1+Hlqe/NX79Re35W4A6/QHDrw9cZ5AVGQ==} + + '@uni-helper/uni-types@1.0.0-alpha.6': + resolution: {integrity: sha512-lGSm3RUOQThyYIUuJI46b8ug3nGZMyRfMQ/ktOGNxOXBukGA1TF1TN2m4MjKUklIQ+kiIuIgZJoU3S7oIK5emw==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6 + '@uni-helper/uni-cloud-types': 1.0.0-alpha.6 + '@uni-helper/uni-ui-types': 1.0.0-alpha.6 + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-ui-types@1.0.0-alpha.6': + resolution: {integrity: sha512-2KuAup2M7rPVzpLaXhhnxCD/Cs5VQYiqzC9XNI/VZuA88+ApPmHzkwyS0THSHnz1VbDIGX/Ju69nj+mApfYKDw==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6 + typescript: ^5.0.0 + vue: ^3.0.0 + + '@uni-helper/uni-use@0.19.17': + resolution: {integrity: sha512-hwA5o56TtL5vwuU/0M57a0IbCFjwiOpa6xdjDplo7CUcowjiYOZJQMwGwTI52rZBEx8HB+E433rRr3cDaLXnzA==} + engines: {node: '>=18'} + peerDependencies: + typescript: ^4.5.0 || ^5.0.0 + vue: ^3.2.47 + peerDependenciesMeta: + typescript: + optional: true + + '@uni-helper/vite-plugin-uni-components@0.2.10': + resolution: {integrity: sha512-RmTyqO7hCu7GwPtEwaiQbuyZG9Q7Mn+6PEYfLUyGjxzo+y+FP3PakaB0vctGB0snIUrR7DvuVbGxzsKTmgLIzA==} + + '@uni-helper/vite-plugin-uni-layouts@0.1.11': + resolution: {integrity: sha512-FXdFATBFsHAl7xY9q3KO0EexMRGua/7txIiQTm2rQi1/bXcft4CUXldtuHl9Upq0V6CT47aanmfzcOF5CpHK7Q==} + + '@uni-helper/vite-plugin-uni-pages@0.3.24': + resolution: {integrity: sha512-2jlX2XaoB1xUzk2qeih0oqDwItat5wlkBfhcdJMe5XU5OjJwLw6vuL3vEUNWT16a0EbdItWzh+4xKrttx4KRuA==} + peerDependencies: + vite: ^5.0.0 + + '@unocss/astro@0.62.4': + resolution: {integrity: sha512-98KfkbrNhBLx2+uYxMiGsldIeIZ6/PbL4yaGRHeHoiHd7p4HmIyCF+auYe4Psntx3Yr8kU+XSIAhGDYebvTidQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.62.4': + resolution: {integrity: sha512-p4VyS40mzn4LCOkIsbIRzN0Zi50rRepesREi2S1+R4Kpvd4QFeeuxTuZNHEyi2uCboQ9ZWl1gfStCXIrNECwTg==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.62.4': + resolution: {integrity: sha512-XKudKxxW8P44JvlIdS6HBpfE3qZA9rhbemy6/sb8HyZjKYjgeM9jx5yjk+9+4hXNma/KlwDXwjAqY29z0S0SrA==} + engines: {node: '>=14'} + + '@unocss/core@0.62.4': + resolution: {integrity: sha512-Cc+Vo6XlaQpyVejkJrrzzWtiK9pgMWzVVBpm9VCVtwZPUjD4GSc+g7VQCPXSsr7m03tmSuRySJx72QcASmauNQ==} + + '@unocss/extractor-arbitrary-variants@0.62.4': + resolution: {integrity: sha512-e4hJfBMyFr6T6dYSTTjNv9CQwaU1CVEKxDlYP0GpfSgxsV58pguID9j1mt0/XZD6LvEDzwxj9RTRWKpUSWqp+Q==} + + '@unocss/inspector@0.62.4': + resolution: {integrity: sha512-bRcnI99gZecNzrUr6kDMdwGHkhUuTPyvvadRdaOxHc9Ow3ANNyqymeFM1q5anZEUZt8h15TYN0mdyQyIWkU3zg==} + + '@unocss/postcss@0.62.4': + resolution: {integrity: sha512-kWdHy7UsSP4bDu8I7sCKeO0VuzvVpNHmn2rifK5gNstUx5dZ1H/SoyXTHx5sKtgfZBRzdNXFu2nZ3PzYGvEFbw==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.62.4': + resolution: {integrity: sha512-ei5nNT58GON9iyCGRRiIrphzyQbBIZ9iEqSBhIY0flcfi1uAPUXV32aO2slqJnWWAIwbRSb1GMpwYR8mmfuz8g==} + + '@unocss/preset-icons@0.62.4': + resolution: {integrity: sha512-n9m2nRTxyiw0sqOwSioO3rro0kaPW0JJzWlzcfdwQ+ZORNR5WyJL298fLXYUFbZG3EOF+zSPg6CMDWudKk/tlA==} + + '@unocss/preset-mini@0.62.4': + resolution: {integrity: sha512-1O+QpQFx7FT61aheAZEYemW5e4AGib8TFGm+rWLudKq2IBNnXHcS5xsq5QvqdC7rp9Dn3lnW5du6ijow5kCBuw==} + + '@unocss/preset-tagify@0.62.4': + resolution: {integrity: sha512-8b2Kcsvt93xu1JqDqcD3QvvW0L5rqvH7ev3BlNEVx6n8ayBqfB5HEd4ILKr7wSC90re+EnCgnMm7EP2FiQAJkw==} + + '@unocss/preset-typography@0.62.4': + resolution: {integrity: sha512-ZVh+NbcibMmD6ve8Deub/G+XAFcGPuzE2Fx/tMAfWfYlfyOAtrMxuL+AARMthpRxdE0JOtggXNTrJb0ZhGYl9g==} + + '@unocss/preset-uno@0.62.4': + resolution: {integrity: sha512-2S6+molIz8dH/al0nfkU7i/pMS0oERPr4k9iW80Byt4cKDIhh/0jhZrC83kgZRtCf5hclSBO4oCoMTi1JF7SBw==} + + '@unocss/preset-web-fonts@0.62.4': + resolution: {integrity: sha512-kaxgYBVyMdBlErseN8kWLiaS2N5OMlwg5ktAxUlei275fMoY7inQjOwppnjDVveJbN9SP6TcqqFpBIPfUayPkQ==} + + '@unocss/preset-wind@0.62.4': + resolution: {integrity: sha512-YOzfQ11AmAnl1ZkcWLMMxCdezLjRKavLNk38LumUMtcdsa0DAy+1JjTp+KEvVQAnD+Et/ld5X+YcBWJkVy5WFQ==} + + '@unocss/reset@0.62.4': + resolution: {integrity: sha512-CtxjeDgN39fY/eZDLIXN4wy7C8W7+SD+41AlzGVU5JwhcXmnb1XoDpOd2lzMxc/Yy3F5dIJt2+MRDj9RnpX9Ew==} + + '@unocss/rule-utils@0.62.4': + resolution: {integrity: sha512-XUwLbLUzL+VSHCJNK5QBHC9RbFehumge1/XJmsRfmh0+oxgJoO1gvEvxi57gYEmdJdMRJHRJZ66se6+cB0Ymvw==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@0.62.4': + resolution: {integrity: sha512-z9DDqS2DibDR9gno55diKfAVegeJ9uoyQXQhH3R0KY4YMF49N1fWy/t74gOiHtlPmvjQtDRZYgjgaMCc2w8oWg==} + + '@unocss/transformer-compile-class@0.62.4': + resolution: {integrity: sha512-8yadY9T7LToJwSsrmYU3rUKlnDgPGVRvON7z9g1IjUCmFCGx7Gpg84x9KpKUG6eUTshPQFUI0YUHocrYFevAEA==} + + '@unocss/transformer-directives@0.62.4': + resolution: {integrity: sha512-bq9ZDG6/mr6X2mAogAo0PBVrLSLT0900MPqnj/ixadYHc7mRpX+y6bc/1AgWytZIFYSdNzf7XDoquZuwf42Ucg==} + + '@unocss/transformer-variant-group@0.62.4': + resolution: {integrity: sha512-W1fxMc2Lzxu4E+6JBQEBzK+AwoCQYI+EL2FT2BCUsAno37f3JdnwFFEVscck0epSdmdtidsSLDognyX8h10r8A==} + + '@unocss/vite@0.62.4': + resolution: {integrity: sha512-JKq3V6bcevYl9X5Jl3p9crArbhzI8JVWQkOxKV2nGLFaqvnc47vMSDxlU4MUdRWp3aQvzDw132tcx27oSbrojw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@vitejs/plugin-legacy@5.4.3': + resolution: {integrity: sha512-wsyXK9mascyplcqvww1gA1xYiy29iRHfyciw+a0t7qRNdzX6PdfSWmOoCi74epr87DujM+5J+rnnSv+4PazqVg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.15': + resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==} + + '@volar/source-map@2.4.15': + resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==} + + '@volar/typescript@2.4.15': + resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-core@3.5.40': + resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-dom@3.5.40': + resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-sfc@3.5.40': + resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/compiler-ssr@3.5.40': + resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/consolidate@1.0.0': + resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} + engines: {node: '>= 0.12.0'} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/eslint-config-prettier@10.2.0': + resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} + peerDependencies: + eslint: '>= 8.21.0' + prettier: '>= 3.0.0' + + '@vue/language-core@2.2.12': + resolution: {integrity: sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.40': + resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==} + + '@vue/runtime-core@3.5.40': + resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==} + + '@vue/runtime-dom@3.5.40': + resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==} + + '@vue/server-renderer@3.4.21': + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + + '@vue/server-renderer@3.5.40': + resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==} + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/shared@3.5.40': + resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + '@wot-ui/ui@2.3.2': + resolution: {integrity: sha512-voPLlAsSh9mWASqYXXiYMSp8Rc9aZ3HBEYh7kAuxrADtbwtL+D+gbofUL5hd2SnSIbRVaweVD5Bb+MicZ6jIlw==} + engines: {HBuilderX: ^3.8.7} + peerDependencies: + vue: '>=3.2.47' + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.5.18: + resolution: {integrity: sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==} + engines: {node: '>=12.0'} + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + alien-signals@1.0.13: + resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + argue-cli@3.1.0: + resolution: {integrity: sha512-DhBpBfXL4SS2uC0N922MMajKR3CdrTG0u2or1PNYgXMsrSzViJrbtvT0nCLlLGUI0plam/ZZCs7aAauHtW9thw==} + engines: {node: '>=22'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + ast-kit@0.11.3: + resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} + engines: {node: '>=16.14.0'} + + ast-kit@1.4.3: + resolution: {integrity: sha512-MdJqjpodkS5J149zN0Po+HPshkTdUyrvF7CKTafUgv69vBSPtncrj+3IiUgqdd7ElIEkbeXCsEouBUwLrw9Ilg==} + engines: {node: '>=16.14.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + autoprefixer@10.5.4: + resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + baseline-browser-mapping@2.11.1: + resolution: {integrity: sha512-HYXq73DDpCtNzOmrFsm9eSwCvWCql0RzqjpDzXN9EadiLJ4DNat0nsZ/Bzmy+Ud12mb4/zKDY0cQ805ZzN+i0A==} + engines: {node: '>=6.0.0'} + hasBin: true + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.6: + resolution: {integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.16: + resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} + + brace-expansion@2.1.2: + resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==} + + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + + brace-expansion@5.0.7: + resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.28.7: + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c12@1.11.2: + resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cac@6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} + engines: {node: '>=8'} + + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chardet@2.2.0: + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.10.0: + resolution: {integrity: sha512-AidJptpBJmjTclAp9BkLwJi0T93fo5epJnbaZslpg6QVzpHjAiveF55mE9AcUJiGMqRHgMDY8soMsQtuNYMHfw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + comment-json@4.6.2: + resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} + engines: {node: '>= 6'} + + commitizen@4.3.2: + resolution: {integrity: sha512-1Zs37z9JPvAcuTSSricZZwBhOPVNNxJouuY4yDEt+eD70EoxT2TU9kViG8CuB/PmVg2G4XsAGQiK4YCst97aDQ==} + engines: {node: '>= 18'} + hasBin: true + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@9.4.0: + resolution: {integrity: sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==} + engines: {node: '>=22'} + + conventional-changelog-conventionalcommits@10.4.1: + resolution: {integrity: sha512-jS1LRFSbRoAr6JbhhRy1JYfNNUj5LM3+v49hRE03CgccsiYqgdVj/RTmrw4J1rylrqijHwdOlJWiJa61JHOgHg==} + engines: {node: '>=22'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@7.1.0: + resolution: {integrity: sha512-DPp6hkUjvwIivxbkrTiLXeRswNv1A/4GFA2X6scXma0AMa9632V3TwxmrlkUIEtUktiM3Ln+RrSH2xlP3/jUTw==} + engines: {node: '>=22'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + + cosmiconfig-typescript-loader@6.3.0: + resolution: {integrity: sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.2: + resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + + css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + + css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + + css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + + css-list-helpers@2.0.0: + resolution: {integrity: sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==} + + css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + cz-git@1.14.0: + resolution: {integrity: sha512-QjwlXZrGWsXQkyregBHhA2qNNGB2TCuf0ovkW1Q5OLgdJDs9Tq1yahfKpSMLyqOBjVRuv1iHBTDP83zJDBlJdg==} + engines: {node: '>=v12.20.0'} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.395: + resolution: {integrity: sha512-7zt9Aw+SrmxLWLN0zhaTWZQiCdryLVrYTq5R7iZakLvi2UQPYMMsROYV/2qVCzMeCiSXHwKOU+sZ4zOVVlrtKA==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-toolkit@1.49.0: + resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.5.6: + resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@10.12.0: + resolution: {integrity: sha512-YsrHHtMaxjWqmxr/Kv9yXUfakUlbTCWtIBvr9eounzj6ZsGJdz1I4UuTIHkhzKHes793Cwo3PGTcvsoBqNyzCA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-eslint-parser: ^10.3.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.14.0: + resolution: {integrity: sha512-T0pNsxkb9IKmtQjhpK3d7nWOpFv+YHuMbTJnSVMoQblF0onvXfErrtp4V1jHtsQPan7dKaGVD0q1WCXnzMF31A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + express@4.22.2: + resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==} + engines: {node: '>= 0.10.0'} + + exsolve@1.1.0: + resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.1.4: + resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} + + flatted@3.4.3: + resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@5.0.0: + resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} + engines: {node: '>=20'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@17.14.0: + resolution: {integrity: sha512-UtdkTVyAJePQv0J2M9Xe4L0ruNSDV314XiIJsADI2Zf40bcdAonE/D/OhAU8AT99oij9mhLByb+NvA3QWZYgCg==} + engines: {node: '>=18'} + + globby@16.2.4: + resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==} + engines: {node: '>=20'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} + + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + + immutable@4.3.9: + resolution: {integrity: sha512-ObHy4YN7ycwZOUCLI1/6svfyAFu7vL8RhAvVu/bh/RZW9EPlOyDaQ9jDQWCtdqzaXUjgXZCW1migtHE7YI7UGQ==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + importx@0.4.4: + resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + inquirer@8.2.7: + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} + engines: {node: '>=12.0.0'} + + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.1.0: + resolution: {integrity: sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} + hasBin: true + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + licia@1.48.1: + resolution: {integrity: sha512-euqxHtJMyMOTiEVacSQfPSaHhIuzd9IpuKpQY6V5oj6C3rZs9DxCmegRlbtt2FW9fDdLrQpvKjwXTWglIbypuQ==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lint-staged@17.6.0: + resolution: {integrity: sha512-nOhBfYkZEwkFtNzD5pK9s9LkcWoxJ+whLzEnhqi9nl7zTB5n7tg8+9iYgMGx2Wm3VlLu8cbNj0RACzY+nWi5iQ==} + engines: {node: '>=22.22.1'} + hasBin: true + + load-bmfont@1.4.2: + resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} + engines: {node: '>=14'} + + localstorage-polyfill@1.0.1: + resolution: {integrity: sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==} + engines: {node: '>=6'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.groupby@4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} + engines: {node: '>=20'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + module-alias@2.3.4: + resolution: {integrity: sha512-bOclZt8hkpuGgSSoG07PKmvzTizROilUTvLNyrMqvlC9snhs7y7GzjNWAVbISIOlhCP1T14rH1PDAV9iNyBq/w==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-releases@2.0.51: + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + engines: {node: '>=18'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@1.1.6: + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + phin@3.7.1: + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} + engines: {node: '>= 8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@2.3.1: + resolution: {integrity: sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + postcss-html@2.0.0: + resolution: {integrity: sha512-f2Rvw5FCollEfVj3wfN7JdQb7n2rNIthW+epw2EByio7M6P7RH0BTj8a/ODHrUXd0cmO7ychb6YniymV93182Q==} + engines: {node: ^22.12 || >=24} + peerDependencies: + postcss: ^8.5.0 + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-resolve-nested-selector@0.1.7: + resolution: {integrity: sha512-lFcugRCQXWManq7nyZ0dDtir52wc7gKYJfWpSuz4GxvnGc7dtlpXcZYX4A0asatzTuqpQ3ngDdyD+QG/szeXWw==} + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@6.1.4: + resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.4: + resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.7: + resolution: {integrity: sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==} + engines: {node: '>=4'} + + postcss-sorting@10.0.0: + resolution: {integrity: sha512-TXbU+h6vVRW+86c/+ewhWq9k7pr7ijASTnepVhCQiC87zAOTkvB1v2dHyWP+ggstSTX/PNvjzS+IOqzejndz9w==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.32: + resolution: {integrity: sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} + engines: {node: '>=14'} + hasBin: true + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} + + qrcode-reader@1.0.4: + resolution: {integrity: sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==} + + qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + + qs@6.15.3: + resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} + engines: {node: '>=0.6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.2: + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} + hasBin: true + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.62.2: + resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.78.0: + resolution: {integrity: sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + stylelint-config-html@2.0.0: + resolution: {integrity: sha512-Lk1NPEdUxzHkPv3ehktjpiOk4MPaqQ3H8fkvhxdWlQpaZCm9ze0SoMbRQLqkUxEMfPE1G9/x968uxm/+d2njoA==} + engines: {node: ^22.12 || >=24} + peerDependencies: + postcss-html: ^2.0.0 + stylelint: '>=16.0.0' + + stylelint-config-recess-order@7.9.0: + resolution: {integrity: sha512-Pu3zhefjou7PYNkEtx4uLnsCSmXpiNIx8ALd20r+PGO1LApcf2Gowh2pKEaY9h8gdR8Wp6rUGqhqEIAhdyoHxg==} + peerDependencies: + stylelint: ^16.18.0 || ^17.0.0 + stylelint-order: ^7.0.0 || ^8.0.0 + + stylelint-config-recommended-scss@17.0.1: + resolution: {integrity: sha512-x5DVehzJudcwF0od3sGpgkln2PLLranFE7twwbp7dqDINCyZvwzFkMc6TLhNOvazRiVBJYATQLouJY0xPGB8WA==} + engines: {node: '>=20'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^17.0.0 + peerDependenciesMeta: + postcss: + optional: true + + stylelint-config-recommended-vue@2.0.0: + resolution: {integrity: sha512-SrGBfxgX+CmxRoFOl6HHhfKrp+6YvGnuiHj/N+/deI310eGNhix8aZOtPHG+OeqB6+5Si5BbjsZiC+kULUO1DQ==} + engines: {node: ^22.12 || >=24} + peerDependencies: + postcss-html: ^2.0.0 + stylelint: '>=16.0.0' + stylelint-config-html: '>=2.0.0' + stylelint-config-recommended: '>=14.0.0' + stylelint-config-recommended-scss: '>=14.0.0' + peerDependenciesMeta: + stylelint-config-recommended-scss: + optional: true + + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-order@8.1.2: + resolution: {integrity: sha512-A+bxnIMVmzkWr6KlIwHnjQqTWBXPlIixoJa962BpK1N5bkhq3lXhKHjs4fY8ecooktjd3B3TtRiqoLSj+MfbxQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^16.18.0 || ^17.0.0 + + stylelint-scss@7.4.0: + resolution: {integrity: sha512-OvN+AestcvtB/IFvde1kpFLq2mpIsPaeB8E+Cjlxu7qjf0ja7NCoTrDW97tuNeXFlYGUdwqGq5cXaByLpNwuxA==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^16.8.2 || ^17.0.0 + + stylelint@17.16.0: + resolution: {integrity: sha512-ejlWnbJ13x1GU32+zZXa6sYQJsKKkwSdv2B4rAdO3OWdEmvhSJKcXi5pOphQYSzyaj1kXpuGJr7pcMBNfDIuPw==} + engines: {node: '>=20.19.0'} + hasBin: true + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-hyperlinks@4.6.0: + resolution: {integrity: sha512-FL/q/YePS4tFFTNiBOR+zPk2ZrKheqNtmTJ/9OUZ4e1wKHJofDbGQSmSsxS0XNnabSkqexryCaXGvEKz1vf9UQ==} + engines: {node: '>=20'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + terser@5.49.0: + resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} + engines: {node: '>=10'} + hasBin: true + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.23.1: + resolution: {integrity: sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typescript-eslint@8.72.1: + resolution: {integrity: sha512-3Li9FfPmQp45nxEtFD1ZCrYFI3cYK5kpyNtmm1H7lMagm8u9sy6PTjy3ytwQZs7KNukOyKFHAZ6z6GjYFeaeXw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + + unconfig@0.5.5: + resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} + + unconfig@7.5.0: + resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unicorn-magic@0.4.1: + resolution: {integrity: sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==} + engines: {node: '>=20'} + + unimport@3.14.6: + resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unocss-preset-weapp@0.62.2: + resolution: {integrity: sha512-6NmwR+SZLLzk8L5XS6zhVBDPyBmbOhrr9oyvxjbNkquVB/nzSD+5lke6DJvqBsPISLt1yib+XglODRM1MZMIXg==} + + unocss@0.62.4: + resolution: {integrity: sha512-SaGbxXQkk8GDPeJpWsBCZ8a23Knu4ixVTt6pvcQWKjOCGTd9XBd+vLZzN2WwdwgBPVwmMmx5wp+/gPHKFNOmIw==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.62.4 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-attributify-to-class@0.2.5: + resolution: {integrity: sha512-0lTUi01mI19PmTTX4420QO6gJFic1wK4LqNnHeBNDrthQEKI0xw/lYg0bGnWYgPmyqXz88hAdLG+ibaypibXqg==} + + unplugin-auto-import@0.16.7: + resolution: {integrity: sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-auto-import@0.18.6: + resolution: {integrity: sha512-LMFzX5DtkTj/3wZuyG5bgKBoJ7WSgzqSGJ8ppDRdlvPh45mx6t6w3OcbExQi53n3xF5MYkNGPNR/HYOL95KL2A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-transform-class@0.5.3: + resolution: {integrity: sha512-4xBvfoeBDqlqi9aD0Hv3TTs8JpRs2h9l8LBMXIRXFNTf8biRk6hAQir+zEM/GpBKoMzvt7JqqbMIYzMazQZysQ==} + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + verkit@0.5.0: + resolution: {integrity: sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==} + engines: {node: '>=18.12.0'} + + vite@6.4.3: + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@10.4.1: + resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} + peerDependencies: + vue: ^3.5.0 + + vue-tsc@2.2.12: + resolution: {integrity: sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.40: + resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-sources@3.5.1: + resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} + + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlhttprequest@1.8.0: + resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} + engines: {node: '>=0.4.0'} + + xregexp@3.1.0: + resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.8.0 + tinyexec: 1.2.4 + + '@antfu/utils@0.7.10': {} + + '@antfu/utils@8.1.1': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.7 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helper-wrap-function@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/template': 7.29.7 + + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/preset-env@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/types': 7.29.7 + esutils: 2.0.3 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + + '@commitlint/cli@21.2.4(typescript@5.9.3)': + dependencies: + '@commitlint/config-conventional': 21.2.4 + '@commitlint/format': 21.2.3 + '@commitlint/lint': 21.2.4 + '@commitlint/load': 21.2.4(typescript@5.9.3) + '@commitlint/read': 21.2.3 + '@commitlint/types': 21.2.3 + tinyexec: 1.2.4 + yargs: 18.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + - typescript + + '@commitlint/config-conventional@21.2.4': + dependencies: + '@commitlint/types': 21.2.3 + conventional-changelog-conventionalcommits: 10.4.1 + + '@commitlint/config-validator@21.2.0': + dependencies: + '@commitlint/types': 21.2.0 + ajv: 8.20.0 + optional: true + + '@commitlint/config-validator@21.2.3': + dependencies: + '@commitlint/types': 21.2.3 + ajv: 8.20.0 + + '@commitlint/ensure@21.2.4': + dependencies: + '@commitlint/types': 21.2.3 + es-toolkit: 1.49.0 + + '@commitlint/execute-rule@21.0.1': {} + + '@commitlint/format@21.2.3': + dependencies: + '@commitlint/types': 21.2.3 + picocolors: 1.1.1 + + '@commitlint/is-ignored@21.2.3': + dependencies: + '@commitlint/types': 21.2.3 + semver: 7.8.5 + + '@commitlint/lint@21.2.4': + dependencies: + '@commitlint/is-ignored': 21.2.3 + '@commitlint/parse': 21.2.3 + '@commitlint/rules': 21.2.4 + '@commitlint/types': 21.2.3 + + '@commitlint/load@21.2.0(@types/node@26.1.1)(typescript@5.9.3)': + dependencies: + '@commitlint/config-validator': 21.2.0 + '@commitlint/execute-rule': 21.0.1 + '@commitlint/resolve-extends': 21.2.0 + '@commitlint/types': 21.2.0 + cosmiconfig: 9.0.2(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.3.0(@types/node@26.1.1)(cosmiconfig@9.0.2(typescript@5.9.3))(typescript@5.9.3) + es-toolkit: 1.49.0 + is-plain-obj: 4.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + optional: true + + '@commitlint/load@21.2.4(typescript@5.9.3)': + dependencies: + '@commitlint/config-validator': 21.2.3 + '@commitlint/execute-rule': 21.0.1 + '@commitlint/resolve-extends': 21.2.3 + '@commitlint/types': 21.2.3 + cosmiconfig: 9.0.2(typescript@5.9.3) + es-toolkit: 1.49.0 + is-plain-obj: 4.1.0 + jiti: 2.7.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - typescript + + '@commitlint/message@21.2.0': {} + + '@commitlint/parse@21.2.3': + dependencies: + '@commitlint/types': 21.2.3 + conventional-changelog-angular: 9.4.0 + conventional-commits-parser: 7.1.0 + + '@commitlint/read@21.2.3': + dependencies: + '@commitlint/top-level': 21.2.0 + '@commitlint/types': 21.2.3 + '@conventional-changelog/git-client': 3.2.0 + tinyexec: 1.2.4 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + '@commitlint/resolve-extends@21.2.0': + dependencies: + '@commitlint/config-validator': 21.2.0 + '@commitlint/types': 21.2.0 + es-toolkit: 1.49.0 + global-directory: 5.0.0 + resolve-from: 5.0.0 + optional: true + + '@commitlint/resolve-extends@21.2.3': + dependencies: + '@commitlint/config-validator': 21.2.3 + '@commitlint/types': 21.2.3 + es-toolkit: 1.49.0 + global-directory: 5.0.0 + resolve-from: 5.0.0 + + '@commitlint/rules@21.2.4': + dependencies: + '@commitlint/ensure': 21.2.4 + '@commitlint/message': 21.2.0 + '@commitlint/to-lines': 21.0.1 + '@commitlint/types': 21.2.3 + + '@commitlint/to-lines@21.0.1': {} + + '@commitlint/top-level@21.2.0': + dependencies: + escalade: 3.2.0 + + '@commitlint/types@21.2.0': + dependencies: + conventional-commits-parser: 7.1.0 + picocolors: 1.1.1 + + '@commitlint/types@21.2.3': + dependencies: + conventional-commits-parser: 7.1.0 + picocolors: 1.1.1 + + '@conventional-changelog/git-client@3.2.0': + dependencies: + '@simple-libs/child-process-utils': 2.0.0 + '@simple-libs/stream-utils': 2.0.0 + verkit: 0.5.0 + + '@conventional-changelog/template@1.4.0': {} + + '@csstools/css-calc@3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-tokenizer': 4.0.2 + + '@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2)': + dependencies: + '@csstools/css-tokenizer': 4.0.2 + + '@csstools/css-syntax-patches-for-csstree@1.1.16(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.2': {} + + '@csstools/media-query-list-parser@5.0.2(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-tokenizer': 4.0.2 + + '@csstools/selector-resolve-nested@4.0.2(postcss-selector-parser@7.1.7)': + dependencies: + postcss-selector-parser: 7.1.7 + + '@csstools/selector-specificity@6.0.1(postcss-selector-parser@7.1.7)': + dependencies: + postcss-selector-parser: 7.1.7 + + '@dcloudio/types@3.4.32': {} + + '@dcloudio/uni-app-harmony@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-app-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + debug: 4.4.3 + fs-extra: 10.1.0 + licia: 1.48.1 + postcss-selector-parser: 6.1.4 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-plus@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-app-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-app-vue': 3.0.0-4020420240722002 + debug: 4.4.3 + fs-extra: 10.1.0 + licia: 1.48.1 + postcss-selector-parser: 6.1.4 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-nvue-styler': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/consolidate': 1.0.0 + '@vue/shared': 3.4.21 + debug: 4.4.3 + es-module-lexer: 1.7.0 + estree-walker: 2.0.2 + fs-extra: 10.1.0 + magic-string: 0.30.21 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unplugin-auto-import: 0.16.7(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-nvue-styler': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@vitejs/plugin-vue': 5.2.4(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + debug: 4.4.3 + fs-extra: 10.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-4020420240722002': {} + + '@dcloudio/uni-app@3.0.0-4020420240722002(@dcloudio/types@3.4.32)(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/types': 3.4.32 + '@dcloudio/uni-cloud': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-components': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-push': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@dcloudio/uni-stat': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.5.40(typescript@5.9.3)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.18 + autoprefixer: 10.5.4(postcss@8.5.32) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.3 + es-module-lexer: 1.7.0 + esbuild: 0.20.2 + estree-walker: 2.0.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + isbinaryfile: 5.0.7 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.21 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.3.4 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.5.32) + postcss-load-config: 3.1.4(postcss@8.5.32) + postcss-modules: 4.3.1(postcss@8.5.32) + postcss-selector-parser: 6.1.4 + resolve: 1.22.12 + source-map-js: 1.2.1 + tapable: 2.3.3 + unplugin-auto-import: 0.16.7(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2) + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + fast-glob: 3.3.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-h5': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.5.40(typescript@5.9.3)) + '@vue/shared': 3.4.21 + debug: 4.4.3 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.3.4 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-4020420240722002(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/server-renderer': 3.4.21(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-h5-vue': 3.0.0-4020420240722002(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/server-renderer': 3.4.21(vue@3.5.40(typescript@5.9.3)) + '@vue/shared': 3.4.21 + debug: 4.4.3 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.4 + safe-area-insets: 1.4.1 + vue-router: 4.6.4(vue@3.5.40(typescript@5.9.3)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-4020420240722002': {} + + '@dcloudio/uni-mp-alipay@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-baidu@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-mp-weixin': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.48.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.21.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-mp-weixin': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-lark@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-qq@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-toutiao@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-i18n': 3.0.0-4020420240722002 + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + debug: 4.4.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-4020420240722002': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + + '@dcloudio/uni-mp-weixin@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.48.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.21.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-xhs@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-compiler': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-4020420240722002': + dependencies: + parse-css-font: 4.0.0 + postcss: 8.5.32 + + '@dcloudio/uni-push@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vite': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-mp-vue': 3.0.0-4020420240722002 + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-4020420240722002': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-stacktracey@3.0.0-4020420240722002': {} + + '@dcloudio/uni-stat@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + debug: 4.4.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + '@dcloudio/uni-cli-shared': 3.0.0-4020420240722002(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@dcloudio/uni-shared': 3.0.0-4020420240722002 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@vitejs/plugin-legacy': 5.4.3(terser@5.49.0)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + '@vitejs/plugin-vue': 5.2.4(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3)) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + cac: 6.7.9 + debug: 4.4.3 + estree-walker: 2.0.2 + express: 4.22.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + picocolors: 1.1.1 + terser: 5.49.0 + unplugin-auto-import: 0.16.7(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2) + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@eslint-community/eslint-utils@4.10.1(eslint@10.14.0(jiti@2.7.0))': + dependencies: + eslint: 10.14.0(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3 + minimatch: 10.2.6 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.7.0': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/js@10.0.1(eslint@10.14.0(jiti@2.7.0))': + optionalDependencies: + eslint: 10.14.0(jiti@2.7.0) + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.3': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.3 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.2.1 + mlly: 1.8.2 + transitivePeerDependencies: + - supports-color + + '@inquirer/external-editor@1.0.3(@types/node@26.1.1)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.3 + optionalDependencies: + '@types/node': 26.1.1 + + '@intlify/core-base@9.1.9': + dependencies: + '@intlify/devtools-if': 9.1.9 + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + + '@intlify/devtools-if@9.1.9': + dependencies: + '@intlify/shared': 9.1.9 + + '@intlify/message-compiler@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + source-map: 0.6.1 + + '@intlify/message-resolver@9.1.9': {} + + '@intlify/runtime@9.1.9': + dependencies: + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + + '@intlify/shared@9.1.9': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.49.0 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.49.0 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.2 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + transitivePeerDependencies: + - debug + + '@jimp/custom@0.10.3': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/core': 0.10.3 + core-js: 3.49.0 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + load-bmfont: 1.4.2 + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + core-js: 3.49.0 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.49.0 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + core-js: 3.49.0 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) + '@jimp/custom': 0.10.3 + '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) + '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3) + '@jimp/png': 0.10.3(@jimp/custom@0.10.3) + '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.49.0 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.29.7 + core-js: 3.49.0 + regenerator-runtime: 0.13.11 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + + '@meoc/utils@0.2.10': + dependencies: + dayjs: 1.11.21 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@pkgr/core@0.3.6': {} + + '@polka/url@1.0.0-next.29': {} + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + + '@rollup/pluginutils@5.4.0(rollup@4.62.2)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.5 + optionalDependencies: + rollup: 4.62.2 + + '@rollup/rollup-android-arm-eabi@4.62.2': + optional: true + + '@rollup/rollup-android-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-x64@4.62.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.62.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.62.2': + optional: true + + '@rollup/rollup-openbsd-x64@4.62.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.62.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.62.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.62.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.62.2': + optional: true + + '@simple-libs/child-process-utils@2.0.0': + dependencies: + '@simple-libs/stream-utils': 2.0.0 + + '@simple-libs/stream-utils@2.0.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@26.1.1': + dependencies: + undici-types: 8.3.0 + optional: true + + '@types/proper-lockfile@4.1.4': + dependencies: + '@types/retry': 0.12.5 + + '@types/retry@0.12.5': {} + + '@types/web-bluetooth@0.0.16': {} + + '@typescript-eslint/eslint-plugin@8.72.1(@typescript-eslint/parser@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.72.1 + '@typescript-eslint/type-utils': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.72.1 + eslint: 10.14.0(jiti@2.7.0) + ignore: 7.0.6 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.72.1 + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/typescript-estree': 8.72.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.72.1 + debug: 4.4.3 + eslint: 10.14.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.72.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.72.1(typescript@5.9.3) + '@typescript-eslint/types': 8.72.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.72.1': + dependencies: + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/visitor-keys': 8.72.1 + + '@typescript-eslint/tsconfig-utils@8.72.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/typescript-estree': 8.72.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.14.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.72.1': {} + + '@typescript-eslint/typescript-estree@8.72.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.72.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.72.1(typescript@5.9.3) + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/visitor-keys': 8.72.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@10.14.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.72.1 + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/typescript-estree': 8.72.1(typescript@5.9.3) + eslint: 10.14.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.72.1': + dependencies: + '@typescript-eslint/types': 8.72.1 + eslint-visitor-keys: 5.0.1 + + '@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': + dependencies: + typescript: 5.9.3 + vue: 3.5.40(typescript@5.9.3) + + '@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': + dependencies: + typescript: 5.9.3 + vue: 3.5.40(typescript@5.9.3) + + '@uni-helper/uni-env@0.1.8': + dependencies: + std-env: 3.10.0 + + '@uni-helper/uni-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(@uni-helper/uni-cloud-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + '@uni-helper/uni-cloud-types': 1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + '@uni-helper/uni-ui-types': 1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + typescript: 5.9.3 + vue: 3.5.40(typescript@5.9.3) + + '@uni-helper/uni-ui-types@1.0.0-alpha.6(@uni-helper/uni-app-types@1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)))(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.6(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) + typescript: 5.9.3 + vue: 3.5.40(typescript@5.9.3) + + '@uni-helper/uni-use@0.19.17(postcss@8.5.32)(rollup@4.62.2)(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@dcloudio/types': 3.4.32 + '@dcloudio/uni-app': 3.0.0-4020420240722002(@dcloudio/types@3.4.32)(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(postcss@8.5.32)(rollup@4.62.2)(vue@3.5.40(typescript@5.9.3)) + '@vueuse/core': 9.13.0(vue@3.5.40(typescript@5.9.3)) + vue: 3.5.40(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vue/composition-api' + - postcss + - rollup + - supports-color + - ts-node + + '@uni-helper/vite-plugin-uni-components@0.2.10(rollup@4.62.2)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + chokidar: 4.0.3 + debug: 4.4.3 + local-pkg: 1.2.1 + magic-string: 0.30.21 + minimatch: 10.2.5 + tinyglobby: 0.2.17 + transitivePeerDependencies: + - rollup + - supports-color + + '@uni-helper/vite-plugin-uni-layouts@0.1.11(rollup@4.62.2)': + dependencies: + '@babel/types': 7.29.7 + '@uni-helper/uni-env': 0.1.8 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + ast-kit: 0.11.3(rollup@4.62.2) + c12: 1.11.2 + chokidar: 3.6.0 + fast-glob: 3.3.3 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + scule: 1.3.0 + transitivePeerDependencies: + - magicast + - rollup + + '@uni-helper/vite-plugin-uni-pages@0.3.24(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))': + dependencies: + '@babel/generator': 7.29.7 + '@babel/types': 7.29.7 + '@types/proper-lockfile': 4.1.4 + '@uni-helper/uni-env': 0.1.8 + '@vue/compiler-sfc': 3.4.21 + ast-kit: 1.4.3 + chokidar: 3.6.0 + comment-json: 4.6.2 + debug: 4.4.3 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + fast-glob: 3.3.3 + json5: 2.2.3 + kolorist: 1.8.0 + lodash.groupby: 4.6.0 + magic-string: 0.30.21 + proper-lockfile: 4.1.2 + typescript: 5.9.2 + unconfig: 7.5.0 + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + write-file-atomic: 7.0.1 + yaml: 2.9.0 + transitivePeerDependencies: + - supports-color + + '@unocss/astro@0.62.4(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/reset': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + optionalDependencies: + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/cli@0.62.4(rollup@4.62.2)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/preset-uno': 0.62.4 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.21 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.17 + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/config@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + unconfig: 0.5.5 + transitivePeerDependencies: + - supports-color + + '@unocss/core@0.62.4': {} + + '@unocss/extractor-arbitrary-variants@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/inspector@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/postcss@0.62.4(postcss@8.5.32)': + dependencies: + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + css-tree: 2.3.1 + postcss: 8.5.32 + tinyglobby: 0.2.17 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-attributify@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/preset-icons@0.62.4': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 0.62.4 + ofetch: 1.5.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/extractor-arbitrary-variants': 0.62.4 + '@unocss/rule-utils': 0.62.4 + + '@unocss/preset-tagify@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/preset-typography@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + + '@unocss/preset-uno@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/rule-utils': 0.62.4 + + '@unocss/preset-web-fonts@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + ofetch: 1.5.1 + + '@unocss/preset-wind@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/rule-utils': 0.62.4 + + '@unocss/reset@0.62.4': {} + + '@unocss/rule-utils@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + magic-string: 0.30.21 + + '@unocss/transformer-attributify-jsx@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/transformer-compile-class@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/transformer-directives@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + + '@unocss/vite@0.62.4(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/inspector': 0.62.4 + chokidar: 3.6.0 + magic-string: 0.30.21 + tinyglobby: 0.2.17 + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + transitivePeerDependencies: + - rollup + - supports-color + + '@vitejs/plugin-legacy@5.4.3(terser@5.49.0)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))': + dependencies: + '@babel/core': 7.29.7 + '@babel/preset-env': 7.29.7(@babel/core@7.29.7) + browserslist: 4.28.7 + browserslist-to-esbuild: 2.1.1(browserslist@4.28.7) + core-js: 3.49.0 + magic-string: 0.30.21 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.49.0 + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7) + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + vue: 3.5.40(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.4(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1))(vue@3.5.40(typescript@5.9.3))': + dependencies: + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + vue: 3.5.40(typescript@5.9.3) + + '@volar/language-core@2.4.15': + dependencies: + '@volar/source-map': 2.4.15 + + '@volar/source-map@2.4.15': {} + + '@volar/typescript@2.4.15': + dependencies: + '@volar/language-core': 2.4.15 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7) + '@vue/shared': 3.5.40 + optionalDependencies: + '@babel/core': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/parser': 7.29.7 + '@vue/compiler-sfc': 3.5.40 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.29.7 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.40': + dependencies: + '@babel/parser': 7.29.7 + '@vue/shared': 3.5.40 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-dom@3.5.40': + dependencies: + '@vue/compiler-core': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.32 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.40': + dependencies: + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.5.40 + '@vue/compiler-dom': 3.5.40 + '@vue/compiler-ssr': 3.5.40 + '@vue/shared': 3.5.40 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.32 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.4.21': + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-ssr@3.5.40': + dependencies: + '@vue/compiler-dom': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/consolidate@1.0.0': {} + + '@vue/devtools-api@6.6.4': {} + + '@vue/eslint-config-prettier@10.2.0(eslint@10.14.0(jiti@2.7.0))(prettier@3.9.10)': + dependencies: + eslint: 10.14.0(jiti@2.7.0) + eslint-config-prettier: 10.1.8(eslint@10.14.0(jiti@2.7.0)) + eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.14.0(jiti@2.7.0)))(eslint@10.14.0(jiti@2.7.0))(prettier@3.9.10) + prettier: 3.9.10 + transitivePeerDependencies: + - '@types/eslint' + + '@vue/language-core@2.2.12(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.15 + '@vue/compiler-dom': 3.5.40 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.40 + alien-signals: 1.0.13 + minimatch: 9.0.9 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.9.3 + + '@vue/reactivity@3.5.40': + dependencies: + '@vue/shared': 3.5.40 + + '@vue/runtime-core@3.5.40': + dependencies: + '@vue/reactivity': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/runtime-dom@3.5.40': + dependencies: + '@vue/reactivity': 3.5.40 + '@vue/runtime-core': 3.5.40 + '@vue/shared': 3.5.40 + csstype: 3.2.3 + + '@vue/server-renderer@3.4.21(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.5.40(typescript@5.9.3) + + '@vue/server-renderer@3.5.40': + dependencies: + '@vue/compiler-ssr': 3.5.40 + '@vue/runtime-dom': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.5.40': {} + + '@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.40(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.5.40(typescript@5.9.3))': + dependencies: + vue-demi: 0.14.10(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@wot-ui/ui@2.3.2(vue@3.5.40(typescript@5.9.3))': + dependencies: + vue: 3.5.40(typescript@5.9.3) + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + adm-zip@0.5.18: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.4 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@1.0.13: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + argparse@2.0.1: {} + + argue-cli@3.1.0: {} + + array-flatten@1.1.1: {} + + array-timsort@1.0.3: {} + + ast-kit@0.11.3(rollup@4.62.2): + dependencies: + '@babel/parser': 7.29.7 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + ast-kit@1.4.3: + dependencies: + '@babel/parser': 7.29.7 + pathe: 2.0.3 + + astral-regex@2.0.0: {} + + at-least-node@1.0.0: {} + + autoprefixer@10.5.4(postcss@8.5.32): + dependencies: + browserslist: 4.28.7 + caniuse-lite: 1.0.30001806 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.32 + postcss-value-parser: 4.2.0 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + baseline-browser-mapping@2.11.1: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bmp-js@0.1.0: {} + + body-parser@1.20.6: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.15.3 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + brace-expansion@1.1.16: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.2: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + + brace-expansion@5.0.7: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist-to-esbuild@2.1.1(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + meow: 13.2.0 + + browserslist@4.28.7: + dependencies: + baseline-browser-mapping: 2.11.1 + caniuse-lite: 1.0.30001806 + electron-to-chromium: 1.5.395 + node-releases: 2.0.51 + update-browserslist-db: 1.2.3(browserslist@4.28.7) + + buffer-equal@0.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-require@5.1.0(esbuild@0.23.1): + dependencies: + esbuild: 0.23.1 + load-tsconfig: 0.2.5 + + bytes@3.1.2: {} + + c12@1.11.2: + dependencies: + chokidar: 3.6.0 + confbox: 0.1.8 + defu: 6.1.7 + dotenv: 16.6.1 + giget: 1.2.5 + jiti: 1.21.7 + mlly: 1.8.2 + ohash: 1.1.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + cac@6.7.14: {} + + cac@6.7.9: {} + + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 + + cachedir@2.4.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001806: {} + + centra@2.7.0: + dependencies: + follow-redirects: 1.16.0 + transitivePeerDependencies: + - debug + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chardet@2.2.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@2.0.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-width@3.0.0: {} + + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.10.0: {} + + colorette@2.0.20: {} + + commander@2.20.3: {} + + comment-json@4.6.2: + dependencies: + array-timsort: 1.0.3 + esprima: 4.0.1 + + commitizen@4.3.2(@types/node@26.1.1)(typescript@5.9.3): + dependencies: + cachedir: 2.4.0 + cz-conventional-changelog: 3.3.0(@types/node@26.1.1)(typescript@5.9.3) + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.7(@types/node@26.1.1) + is-utf8: 0.2.1 + lodash: 4.18.1 + minimist: 1.2.8 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + compare-versions@3.6.0: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + consola@3.4.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@9.4.0: + dependencies: + '@conventional-changelog/template': 1.4.0 + + conventional-changelog-conventionalcommits@10.4.1: + dependencies: + '@conventional-changelog/template': 1.4.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@7.1.0: + dependencies: + '@simple-libs/stream-utils': 2.0.0 + argue-cli: 3.1.0 + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.7: {} + + cookie@0.7.2: {} + + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.7 + + core-js@3.49.0: {} + + cosmiconfig-typescript-loader@6.3.0(@types/node@26.1.1)(cosmiconfig@9.0.2(typescript@5.9.3))(typescript@5.9.3): + dependencies: + '@types/node': 26.1.1 + cosmiconfig: 9.0.2(typescript@5.9.3) + jiti: 2.6.1 + typescript: 5.9.3 + optional: true + + cosmiconfig@9.0.2(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.3.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-font-size-keywords@1.0.0: {} + + css-font-stretch-keywords@1.0.1: {} + + css-font-style-keywords@1.0.1: {} + + css-font-weight-keywords@1.0.0: {} + + css-functions-list@3.3.3: {} + + css-list-helpers@2.0.0: {} + + css-system-font-keywords@1.0.0: {} + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + csstype@3.2.3: {} + + cz-conventional-changelog@3.3.0(@types/node@26.1.1)(typescript@5.9.3): + dependencies: + chalk: 2.4.2 + commitizen: 4.3.2(@types/node@26.1.1)(typescript@5.9.3) + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 21.2.0(@types/node@26.1.1)(typescript@5.9.3) + transitivePeerDependencies: + - '@types/node' + - typescript + + cz-git@1.14.0: {} + + dayjs@1.11.21: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defu@6.1.7: {} + + depd@2.0.0: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-newline@3.1.0: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom-walk@0.1.2: {} + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv@16.6.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.395: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + encodeurl@2.0.0: {} + + entities@4.5.0: {} + + entities@7.0.1: {} + + env-paths@2.2.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-toolkit@1.49.0: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@10.1.8(eslint@10.14.0(jiti@2.7.0)): + dependencies: + eslint: 10.14.0(jiti@2.7.0) + + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@10.14.0(jiti@2.7.0)))(eslint@10.14.0(jiti@2.7.0))(prettier@3.9.10): + dependencies: + eslint: 10.14.0(jiti@2.7.0) + prettier: 3.9.10 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 + optionalDependencies: + eslint-config-prettier: 10.1.8(eslint@10.14.0(jiti@2.7.0)) + + eslint-plugin-vue@10.12.0(@typescript-eslint/parser@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.14.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.14.0(jiti@2.7.0))): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@10.14.0(jiti@2.7.0)) + eslint: 10.14.0(jiti@2.7.0) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.4 + semver: 7.8.5 + vue-eslint-parser: 10.4.1(eslint@10.14.0(jiti@2.7.0)) + xml-name-validator: 5.0.0 + optionalDependencies: + '@typescript-eslint/parser': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.14.0(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@10.14.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.7.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.3 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 11.1.5 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.6 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + exif-parser@0.1.12: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + express@4.22.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.6 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.13 + proxy-addr: 2.0.7 + qs: 6.15.3 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.1.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.4: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@11.1.5: + dependencies: + flat-cache: 6.1.23 + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-root@1.1.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + flat-cache@6.1.23: + dependencies: + cacheable: 2.5.0 + flatted: 3.4.3 + hookified: 1.15.1 + + flatted@3.4.3: {} + + follow-redirects@1.16.0: {} + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + giget@1.2.5: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.7 + node-fetch-native: 1.6.7 + nypm: 0.5.4 + pathe: 2.0.3 + tar: 6.2.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@5.0.0: + dependencies: + ini: 6.0.0 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + globals@15.15.0: {} + + globals@17.14.0: {} + + globby@16.2.4: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.6 + is-path-inside: 4.0.0 + micromatch: 4.0.8 + slash: 5.1.0 + unicorn-magic: 0.4.1 + + globjoin@0.1.4: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-flag@5.0.1: {} + + has-symbols@1.1.0: {} + + hash-sum@2.0.0: {} + + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hookified@1.15.1: {} + + hookified@2.2.0: {} + + html-tags@5.1.0: {} + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + husky@9.1.7: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.6: {} + + immutable@4.3.9: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + importx@0.4.4: + dependencies: + bundle-require: 5.1.0(esbuild@0.23.1) + debug: 4.4.3 + esbuild: 0.23.1 + jiti: 2.0.0-beta.3 + jiti-v1: jiti@1.21.7 + pathe: 1.1.2 + tsx: 4.23.1 + transitivePeerDependencies: + - supports-color + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@6.0.0: {} + + inquirer@8.2.7(@types/node@26.1.1): + dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@26.1.1) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + figures: 3.2.0 + lodash: 4.18.1 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-function@1.0.2: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@5.1.0: {} + + is-unicode-supported@0.1.0: {} + + is-utf8@0.2.1: {} + + is-windows@1.0.2: {} + + isbinaryfile@5.0.7: {} + + isexe@2.0.0: {} + + jimp@0.10.3: + dependencies: + '@babel/runtime': 7.29.7 + '@jimp/custom': 0.10.3 + '@jimp/plugins': 0.10.3(@jimp/custom@0.10.3) + '@jimp/types': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.49.0 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jiti@1.21.7: {} + + jiti@2.0.0-beta.3: {} + + jiti@2.6.1: + optional: true + + jiti@2.7.0: {} + + jpeg-js@0.3.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + + kind-of@6.0.3: {} + + known-css-properties@0.37.0: {} + + kolorist@1.8.0: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + licia@1.48.1: {} + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + lint-staged@17.6.0: + dependencies: + picomatch: 4.0.7 + string-argv: 0.3.2 + tinyexec: 1.3.1 + optionalDependencies: + yaml: 2.9.1 + + load-bmfont@1.4.2: + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + phin: 3.7.1 + xhr: 2.6.0 + xtend: 4.0.2 + transitivePeerDependencies: + - debug + + load-tsconfig@0.2.5: {} + + loader-utils@3.3.1: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.8.2 + pkg-types: 1.3.1 + + local-pkg@1.2.1: + dependencies: + mlly: 1.8.2 + pkg-types: 2.3.1 + quansync: 0.2.11 + + localstorage-polyfill@1.0.1: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.groupby@4.6.0: {} + + lodash.map@4.6.0: {} + + lodash.truncate@4.4.2: {} + + lodash@4.18.1: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + longest@2.0.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + mathml-tag-names@4.0.0: {} + + mdn-data@2.0.30: {} + + mdn-data@2.27.1: {} + + media-typer@0.3.0: {} + + meow@13.2.0: {} + + meow@14.1.0: {} + + merge-descriptors@1.0.3: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.7 + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.12 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.16 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.2 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mlly@1.8.2: + dependencies: + acorn: 8.17.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + module-alias@2.3.4: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + mute-stream@0.0.8: {} + + nanoid@3.3.20: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + node-fetch-native@1.6.7: {} + + node-releases@2.0.51: {} + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nypm@0.5.4: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 1.3.1 + tinyexec: 0.3.2 + ufo: 1.6.4 + + object-inspect@1.13.4: {} + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 + + ohash@1.1.6: {} + + omggif@1.0.10: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-manager-detector@1.8.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-headers@2.0.6: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.13: {} + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + phin@2.9.3: {} + + phin@3.7.1: + dependencies: + centra: 2.7.0 + transitivePeerDependencies: + - debug + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + picomatch@4.0.7: {} + + pify@2.3.0: {} + + pinia@2.3.1(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.40(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.40(typescript@5.9.3)) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@vue/composition-api' + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + pkg-types@2.3.1: + dependencies: + confbox: 0.2.4 + exsolve: 1.1.0 + pathe: 2.0.3 + + pngjs@3.4.0: {} + + postcss-html@2.0.0(postcss@8.5.32): + dependencies: + htmlparser2: 9.1.0 + js-tokens: 9.0.1 + postcss: 8.5.32 + postcss-safe-parser: 7.0.1(postcss@8.5.32) + + postcss-import@14.1.0(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.12 + + postcss-load-config@3.1.4(postcss@8.5.32): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.3 + optionalDependencies: + postcss: 8.5.32 + + postcss-media-query-parser@0.2.3: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.32): + dependencies: + icss-utils: 5.1.0(postcss@8.5.32) + postcss: 8.5.32 + postcss-selector-parser: 7.1.4 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + postcss-selector-parser: 7.1.4 + + postcss-modules-values@4.0.0(postcss@8.5.32): + dependencies: + icss-utils: 5.1.0(postcss@8.5.32) + postcss: 8.5.32 + + postcss-modules@4.3.1(postcss@8.5.32): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.5.32 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.32) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.32) + postcss-modules-scope: 3.2.1(postcss@8.5.32) + postcss-modules-values: 4.0.0(postcss@8.5.32) + string-hash: 1.1.3 + + postcss-resolve-nested-selector@0.1.7: {} + + postcss-safe-parser@7.0.1(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + + postcss-scss@4.0.9(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + + postcss-selector-parser@6.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.7: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@10.0.0(postcss@8.5.32): + dependencies: + postcss: 8.5.32 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.32: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + + prettier@3.9.10: {} + + process@0.11.10: {} + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + punycode@2.3.1: {} + + qified@0.10.1: + dependencies: + hookified: 2.2.0 + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.15.3: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + + quansync@0.2.11: {} + + quansync@1.0.0: {} + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc9@2.1.2: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + readdirp@4.1.2: {} + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.2 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.2: + dependencies: + jsesc: 3.1.0 + + require-from-string@2.0.2: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.1.0: {} + + rollup@4.62.2: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.62.2 + '@rollup/rollup-android-arm64': 4.62.2 + '@rollup/rollup-darwin-arm64': 4.62.2 + '@rollup/rollup-darwin-x64': 4.62.2 + '@rollup/rollup-freebsd-arm64': 4.62.2 + '@rollup/rollup-freebsd-x64': 4.62.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 + '@rollup/rollup-linux-arm-musleabihf': 4.62.2 + '@rollup/rollup-linux-arm64-gnu': 4.62.2 + '@rollup/rollup-linux-arm64-musl': 4.62.2 + '@rollup/rollup-linux-loong64-gnu': 4.62.2 + '@rollup/rollup-linux-loong64-musl': 4.62.2 + '@rollup/rollup-linux-ppc64-gnu': 4.62.2 + '@rollup/rollup-linux-ppc64-musl': 4.62.2 + '@rollup/rollup-linux-riscv64-gnu': 4.62.2 + '@rollup/rollup-linux-riscv64-musl': 4.62.2 + '@rollup/rollup-linux-s390x-gnu': 4.62.2 + '@rollup/rollup-linux-x64-gnu': 4.62.2 + '@rollup/rollup-linux-x64-musl': 4.62.2 + '@rollup/rollup-openbsd-x64': 4.62.2 + '@rollup/rollup-openharmony-arm64': 4.62.2 + '@rollup/rollup-win32-arm64-msvc': 4.62.2 + '@rollup/rollup-win32-ia32-msvc': 4.62.2 + '@rollup/rollup-win32-x64-gnu': 4.62.2 + '@rollup/rollup-win32-x64-msvc': 4.62.2 + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-area-insets@1.4.1: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass@1.78.0: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.9 + source-map-js: 1.2.1 + + sax@1.6.0: {} + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.8.5: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + source-map-js@1.2.1: {} + + source-map-js@1.2.2: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + statuses@2.0.2: {} + + std-env@3.10.0: {} + + string-argv@0.3.2: {} + + string-hash@1.1.3: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@4.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + stylelint-config-html@2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + postcss-html: 2.0.0(postcss@8.5.32) + stylelint: 17.16.0(typescript@5.9.3) + + stylelint-config-recess-order@7.9.0(stylelint-order@8.1.2(stylelint@17.16.0(typescript@5.9.3)))(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + stylelint: 17.16.0(typescript@5.9.3) + stylelint-order: 8.1.2(stylelint@17.16.0(typescript@5.9.3)) + + stylelint-config-recommended-scss@17.0.1(postcss@8.5.32)(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + postcss-scss: 4.0.9(postcss@8.5.32) + stylelint: 17.16.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.16.0(typescript@5.9.3)) + stylelint-scss: 7.4.0(stylelint@17.16.0(typescript@5.9.3)) + optionalDependencies: + postcss: 8.5.32 + + stylelint-config-recommended-vue@2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint-config-html@2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint@17.16.0(typescript@5.9.3)))(stylelint-config-recommended-scss@17.0.1(postcss@8.5.32)(stylelint@17.16.0(typescript@5.9.3)))(stylelint-config-recommended@18.0.0(stylelint@17.16.0(typescript@5.9.3)))(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + postcss-html: 2.0.0(postcss@8.5.32) + semver: 7.8.5 + stylelint: 17.16.0(typescript@5.9.3) + stylelint-config-html: 2.0.0(postcss-html@2.0.0(postcss@8.5.32))(stylelint@17.16.0(typescript@5.9.3)) + stylelint-config-recommended: 18.0.0(stylelint@17.16.0(typescript@5.9.3)) + optionalDependencies: + stylelint-config-recommended-scss: 17.0.1(postcss@8.5.32)(stylelint@17.16.0(typescript@5.9.3)) + + stylelint-config-recommended@18.0.0(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + stylelint: 17.16.0(typescript@5.9.3) + + stylelint-order@8.1.2(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + postcss: 8.5.32 + postcss-sorting: 10.0.0(postcss@8.5.32) + stylelint: 17.16.0(typescript@5.9.3) + + stylelint-scss@7.4.0(stylelint@17.16.0(typescript@5.9.3)): + dependencies: + '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-syntax-patches-for-csstree': 1.1.16(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.2 + css-tree: 3.2.1 + is-plain-object: 5.1.0 + known-css-properties: 0.37.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.7 + postcss-selector-parser: 7.1.7 + postcss-value-parser: 4.2.0 + stylelint: 17.16.0(typescript@5.9.3) + + stylelint@17.16.0(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2) + '@csstools/css-syntax-patches-for-csstree': 1.1.16(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.2 + '@csstools/media-query-list-parser': 5.0.2(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) + '@csstools/selector-resolve-nested': 4.0.2(postcss-selector-parser@7.1.7) + '@csstools/selector-specificity': 6.0.1(postcss-selector-parser@7.1.7) + colord: 2.10.0 + cosmiconfig: 9.0.2(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.2.1 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 11.1.5 + global-modules: 2.0.0 + globby: 16.2.4 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.6 + import-meta-resolve: 4.2.0 + mathml-tag-names: 4.0.0 + meow: 14.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.32 + postcss-safe-parser: 7.0.1(postcss@8.5.32) + postcss-selector-parser: 7.1.7 + postcss-value-parser: 4.2.0 + string-width: 8.3.0 + supports-hyperlinks: 4.6.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + supports-color@10.2.2: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@4.6.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + + systemjs@6.15.1: {} + + table@6.9.0: + dependencies: + ajv: 8.20.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@2.3.3: {} + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + terser@5.49.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.17.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + through@2.3.8: {} + + timm@1.7.1: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.2.4: {} + + tinyexec@1.3.1: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + totalist@3.0.1: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tslib@2.8.1: {} + + tsx@4.23.1: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript-eslint@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.72.1(@typescript-eslint/parser@8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.72.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.72.1(eslint@10.14.0(jiti@2.7.0))(typescript@5.9.3) + eslint: 10.14.0(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.2: {} + + typescript@5.9.3: {} + + ufo@1.6.4: {} + + unconfig-core@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + + unconfig@0.5.5: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.7 + importx: 0.4.4 + transitivePeerDependencies: + - supports-color + + unconfig@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + defu: 6.1.7 + jiti: 2.7.0 + quansync: 1.0.0 + unconfig-core: 7.5.0 + + undici-types@8.3.0: + optional: true + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unicorn-magic@0.4.1: {} + + unimport@3.14.6(rollup@4.62.2): + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + acorn: 8.17.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.2.1 + magic-string: 0.30.21 + mlly: 1.8.2 + pathe: 2.0.3 + picomatch: 4.0.5 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 2.1.1 + unplugin: 1.16.1 + transitivePeerDependencies: + - rollup + + universalify@2.0.1: {} + + unocss-preset-weapp@0.62.2(rollup@4.62.2): + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@unocss/core': 0.62.4 + '@unocss/extractor-arbitrary-variants': 0.62.4 + '@unocss/rule-utils': 0.62.4 + unplugin-attributify-to-class: 0.2.5(rollup@4.62.2) + unplugin-transform-class: 0.5.3(rollup@4.62.2) + transitivePeerDependencies: + - rollup + + unocss@0.62.4(postcss@8.5.32)(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)): + dependencies: + '@unocss/astro': 0.62.4(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + '@unocss/cli': 0.62.4(rollup@4.62.2) + '@unocss/core': 0.62.4 + '@unocss/postcss': 0.62.4(postcss@8.5.32) + '@unocss/preset-attributify': 0.62.4 + '@unocss/preset-icons': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-tagify': 0.62.4 + '@unocss/preset-typography': 0.62.4 + '@unocss/preset-uno': 0.62.4 + '@unocss/preset-web-fonts': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/transformer-attributify-jsx': 0.62.4 + '@unocss/transformer-compile-class': 0.62.4 + '@unocss/transformer-directives': 0.62.4 + '@unocss/transformer-variant-group': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.62.2)(vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1)) + optionalDependencies: + vite: 6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unpipe@1.0.0: {} + + unplugin-attributify-to-class@0.2.5(rollup@4.62.2): + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + unplugin: 1.16.1 + unplugin-transform-class: 0.5.3(rollup@4.62.2) + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.16.7(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + fast-glob: 3.3.3 + local-pkg: 0.5.1 + magic-string: 0.30.21 + minimatch: 9.0.9 + unimport: 3.14.6(rollup@4.62.2) + unplugin: 1.16.1 + optionalDependencies: + '@vueuse/core': 9.13.0(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.18.6(@vueuse/core@9.13.0(vue@3.5.40(typescript@5.9.3)))(rollup@4.62.2): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + fast-glob: 3.3.3 + local-pkg: 0.5.1 + magic-string: 0.30.21 + minimatch: 9.0.9 + unimport: 3.14.6(rollup@4.62.2) + unplugin: 1.16.1 + optionalDependencies: + '@vueuse/core': 9.13.0(vue@3.5.40(typescript@5.9.3)) + transitivePeerDependencies: + - rollup + + unplugin-transform-class@0.5.3(rollup@4.62.2): + dependencies: + '@meoc/utils': 0.2.10 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + unplugin: 1.7.1 + transitivePeerDependencies: + - rollup + + unplugin@1.16.1: + dependencies: + acorn: 8.17.0 + webpack-virtual-modules: 0.6.2 + + unplugin@1.7.1: + dependencies: + acorn: 8.17.0 + chokidar: 3.6.0 + webpack-sources: 3.5.1 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + utif@2.0.1: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + vary@1.1.2: {} + + verkit@0.5.0: {} + + vite@6.4.3(@types/node@26.1.1)(jiti@2.7.0)(sass@1.78.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.1): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + postcss: 8.5.32 + rollup: 4.62.2 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.1.1 + fsevents: 2.3.3 + jiti: 2.7.0 + sass: 1.78.0 + terser: 5.49.0 + tsx: 4.23.1 + yaml: 2.9.1 + + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.5.40(typescript@5.9.3)): + dependencies: + vue: 3.5.40(typescript@5.9.3) + + vue-eslint-parser@10.4.1(eslint@10.14.0(jiti@2.7.0)): + dependencies: + debug: 4.4.3 + eslint: 10.14.0(jiti@2.7.0) + eslint-scope: 8.4.0 + eslint-visitor-keys: 5.0.1 + espree: 10.4.0 + esquery: 1.7.0 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + + vue-router@4.6.4(vue@3.5.40(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.40(typescript@5.9.3) + + vue-tsc@2.2.12(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.15 + '@vue/language-core': 2.2.12(typescript@5.9.3) + typescript: 5.9.3 + + vue@3.5.40(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.40 + '@vue/compiler-sfc': 3.5.40 + '@vue/runtime-dom': 3.5.40 + '@vue/server-renderer': 3.5.40 + '@vue/shared': 3.5.40 + optionalDependencies: + typescript: 5.9.3 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-sources@3.5.1: {} + + webpack-virtual-modules@0.6.2: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + write-file-atomic@7.0.1: + dependencies: + signal-exit: 4.1.0 + + ws@8.21.1: {} + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.6 + xtend: 4.0.2 + + xml-name-validator@5.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.3: {} + + yaml@2.9.0: {} + + yaml@2.9.1: + optional: true + + yargs-parser@22.0.0: {} + + yargs@18.2.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.3.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + + yocto-queue@0.1.0: {} diff --git a/public/favicon.ico b/public/favicon.ico index 0a6744a4a8e984f910214a0d91bd41ad45f122fb..85fb8f22e1c432b7ef5847f582b1e079da711e9e 100644 GIT binary patch literal 4286 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 literal 4286 zcmd^@d2m(L9ml`-B@iSO(iw`j7I7$anQ5(cm=>jqLv<_`hNrEaI#$*Y2om-vQdU`v zB`g7CUlIZs2%8}kStMbX0s#VIkVS@pR+J?`AmqJw&*|s9mnd48O8KWVz04;k_vW4R zIltfUob&D=dHj3uLAjsGOOhH%`Z4fGPl9_Mz4+Vz>UFV4eL2c|)YG+|bybm?s4J=U zbuOi`&LlV2h8H`iSDPF?((r4LFu%^U@T@0*gX!wY z@9HHI|8m@h*h9n~BKDB&4k`N3rs|1?4^*W$Y+ezm|4?P9?yo|j+E4nSxV9$bJ#RvK z$%fPoUV;8F7)C$_OtxXoutl0@n<~f3Tgn_(`CsJ0;&=HrUG;O?qqr?@i`&{B&=XR% zFXO4C#(z74cD*88Ke>SV2YKp#klp)eXUVH(VZg|^VkGxvGR zsaJu6d2od~2NX^T)YSZW+~rYs$`@{Hd-3}#TH5NDB`+klh`R#QuWDvF;|q3|Ih* zAs<$=P7BSmUSXtxSNLW8t`2_BfO8A4$oCI%AB@KB+yh_`yb6PLydX8$Uca~N)e(Ox z?m^MG!_+*eQPg!DOoSQW*8F0~hj*bcmiwFIcYb&IJz0xw@uxu_wY7cqc{Fb4ehr4e zP#CVwFLhtijy+$dG~9z>w5_7%?er#&5v=oRv~$^O*_;u1knbygWmt9cuBu+{In`Zq zF(&=mPro-c=!btG3}8j2vj=P3!*Gv+F)&VZ?(co(W%k=8_PSedRn)v4d~L)#yRF4> zXZph+NLO9*ogIz4#yuAIUtxkm;mNgL3%qWI>J8RhCTlDUf7adk-E6}HsY5#P4`B{} zQ4>2%yY0y8xZk3k1k+%aE}WR%^kuzeb2#H7nvQ?^-TU1fB11S61~Z3|Fp9Hzv_7*L zI44xQXVYfG5|z!(>GmAwYcc0c2hhMj#k(Qy`trw+hm0t7a2MN5d{ba1EQq?TT|v7> z%bG1Z-kS6E;iTMh`Ni%#>+Y`bB)nO~J^?cIIPE{VkGbd5E`sGy2pd#tH|b}Uo9=n+ zT2Z3Ho8uJT_219IOu;!7Cc{KMK)rWHa;nH}CEb{G8) zu#QUZd=CEfIN9kjzsXV}-dy`Oj#*F>ca3{})V&G!Q*g*`=YF?}O^Lp5_Oo^mbEcHV z-BBUTO#0#XC(6S+#LiH}&Sl(eSOPBRE^g;8(s5${Ejd`t@7C^wy>L(q{li{8bA)k@ zk%v>?Yzk&JpLe;Z#rquXrD)8#jF|^+t+{${ge|&ax2X&F8m%&LmBWuoSw|`Mh{c>u1jXw6P>(S&f27X+!xqO>0 zQDt;*xqPn$x4&v?yO%TI0B50dZ-64$M*ki9p8dNvGOt+fkJ5eu|GPe1eO5q?iEvEkt`tF9k z`U!I@iRS(opFa)fa9@IJGX4!^getxGNQgN^yl5fJO8V#X?z2qIsB?*Zmp*Qdx%KV# zQ>@mpHC3v~ewkO>?P=$(xy%QQ;qt*VTdG#}Bb~G-=u7VH=h4`$siY0-y6-E6Z)%0Z zp2{yL$j9$5_Y&+X-V)cS!oJ6zdLOpJPF*IaSBU#O<1WD4FzUu1!gup!N*Je<@2jKC zp-j(G`x1Lr<>mr=;Hoa0D)4ocx7ClC!=tpiR9@|05vXMf^srsWUfKvnupM^69@wvk zOsQAb<(z%3DqOd^%!lOhNNf(~gmwezYZt~NwfU(yB>p8ln zw$r*ZoLb{2ujH8gx)^VFRq}Upj659XJ@N!&p5^`meJX%8hhO-GpTflaw;SvK<+pKHSB8x%7hM8~5m|3xv9 PpYF*i{&I@^$F6??b$lHE diff --git a/public/images/qrcode/wechat-mp.jpg b/public/images/qrcode/wechat-mp.jpg index 34852141818eeba9a850ebc93289bc1b9ee1bf1c..b97fd0836d52f791fbb85124f40100e19cf66412 100644 GIT binary patch literal 54211 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 literal 42954 zcmbrl2{@E(7zR3$WNYk-n2M-um92!SB*`yH*_kBEm^6P$CdSO4FqW7~nLmD}5)xyw z46=MX?(J|=Q_-hH*6LB|^Zl$GXkTSEf@8#crP(b0tsVPsZqz<{ z_i-&t$=K!$pmX8skg~3cEq|x*w`u>QW&iICOa1?3+5c+T|7I5lrYbK7ZJxXa3<;CT zc0I|4{U5KwcbR8x_E6$7xBO)VS~9L4pXF3f9Y3Z0&v|`Vg0|0L1?WQjg8+QE;2!G2 z-8IoU5365;DJinaIW8)|8jRegQ~kF| zL%|x1-LZ4z(df^~%a>-?C7XAr@-MX4{$nBXztWF!tgdw=e^Qab6{VR3TiGbG-fW>& z=)g1Ug6rc^LL!TtV`Mq(hIJm};m;A+oxD1qtxPz=Qt2l}}kzheMe~dLcPIR9wIlEh_!=?W4Z&E8u~l=ut`%SPlzf%8!!_N6o-2srl(mVFW1nQ%?#N{;g9RY z>$~JZth9m26OgB@MJFMrgPe=K4M#l%80Cod!DzwfE>uQ`G0^*%AG-f@PYdOii*XD= zguN%e(QD4pV*eVNsU-kAu*ze_j5rlQN8pb62pbh*#ylY^;|ZG;vIxm?U=a6kN6az zG%)|nkk_Z-(p{rir`-b26N~G=WnfV7=BC`9vNz;!Uu8-?!sMPc7=n17{C;J|n%vOt zdO}F=#!hni{#k84=;y(fWgl8TE~PcFh?PYNtsRqbv;hN*{myS;ffm@srw_v)OmFUV zLduk-YcK@_3fxIth!7w-3>WP%{KbwD37WUGZjJya1yk5TL=pM6)wj6EV+s8POXFZi z0_A)`oz1SgAJ#Qb8((C^m^26a4Vbb>$zzdy{)KLUBfG zu(K%%*Q&V6AUzPEjTT;SSq-~wmus~ex}9#ZKw4qdg?_JH66Jv{X3#+uNdtM=m<^TTg++F3C3_T|Y zK3NTPa2>(#1>WH=aqvUbSU%WBl-K;uXQ&0Ym#uuHy``5n&dVr9xGK0Obq?c^(?lrU}VD zEli- zo+}C(kag57eB`rOq@q>BSs~%>41HrL?vSrzbmr{Xqd~@^>GbUUmsou-@s|mVNsdXP zy(Xhg4?3$Kj@8Jm=AgC^rcp1V7k)rP8cL}N#7Vk{GGy0|;)}}YF(rE#%|LIHH3{$e z7)N2(d7I`}$Fy|s{a}FR2NzXgGNYQB8Ey41n;T!I&*YQq(T|57js*tZ`D=c&?$NV* zH_5%eSG`$2^=#^aZG(z$5VeU5(SU(SL0ZygAl^^tmu+naCc2<+_Noqh&#sD%$0Ug= ztH4`lsD9&&c4AQTiO*wp!QwZ!W<#8=R9_$DOtQB6jSu!x&-Cv(qFsODMBe6U|LvaY zcPp=NKdT$juyxn^{LU?vyB@*6{{Si$$>K-|CC(9f|Iy{ToW+A$saqYQ72x%ePPM)@GJIf?3i%i_#``9s9tjzdLEIuUeO2{p#yZnw>rjbhvdWdk>7M;Qc8%8y8x9fW_H~u^70(p4q6(TEziGh>WV2tr} zDCrr4UK_)2sRs?jM{&<(BkmwtSU%!a3((Ug=PKvR&I9j?1vv)htpiFQ0&q36=0)Cc z$q|6?tOLer~+JH5oHYX(aVTb5my~= z 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%0DQAYidx$tQ&J;Q%c7H#5;ipss`Ur5@!E?pI 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 diff --git a/public/images/qrcode/wechat-official.jpg b/public/images/qrcode/wechat-official.jpg index 576f210afa4a06336213fc0f0256feca7cb64041..507409ff7e8ccecb4415130a99807b9226441b31 100644 GIT binary patch delta 13289 zcmc(Gdss~QAOA_nExAOcn03u+6Jkqc4qulLhIPrcam!FNOPk70^O5UDYBQVIFzz9C zq8m!5l#*zWN~LC|R4z?T6Vs_PbLRIxlk0x>_kF(K=l93&k9qdNJm<_gpZDc;+ruSB zXG@F{ti~8k5)B$N7U_Pq}DHGQ;LSG0S_ zdgIIQ{?ty>CE)9tEQI+k(MKw4KM-N*7FY9Y-((C=trYmH^Jba-1^vGk~8syK1x?A;mnA$hx72P<7x&U*jkbC$&h-vyqB*C>_WY#BvVRoxXm-l+ zZx(S!4quFs#wI&mO9{bP-5%OSyG1qjM2$n&ARAw{_49Pu%_=?S`(j#M@Q!qj+Qa2m zc5Y3yRqm{5UDHiE|Ebf$1y}2_{6hjqDVIE<$KDh+?q(Z_UU^RLRE&!{dHjIbOZ8Zn zS$a%lPM(M$nt#w^MW-$b;^9ynarG)kJ+_deBhHvb6Y|S?OdTTbj~cD?*rl|&l&9u{ zE}iZo*rF4q2gqezgXHhnBc5kuYgRcl946hQW9cf-w%X8z>xTOm^r|sF+9d!_w$S#A zp$9Flk%VOo*JJmd>NjBf0x91HqS;=L?L$g0j>y-X^-lOaHnG-^I&XcWaDs4|?lK|& zgHSydcS@h%Y)uc0)Q&(e2yZ9I??#GBaG=cv?$4Q>?l$~cjM)gW#aZdNU0NEX`b41rujmnj?X@Mzg<1BmD&=~ zXx@0Er6QB=V>@Lm69M33jZACD z9Ou26y2GzR2pzkmG`}TXYNr!iNn zFk4kxP9*=rZJ^?t5<||tU3D3S_?jnVy!IQ0q6(eXDnc>i7ClA}IYKSaV^8Plv4>q_ z^ceR+ajPDKcd9u@o}%V5Zw3&=rtY{Ndwq$e?c*cX9`We-oBT}jn79JD#&Ru{X$iBu}*iawLzWLQHXP|)|gpGEa6$%^znU2TL`Pf zoiZi{y_=`v?-l$UAnxbm#V^}R+;ot)xZOJab&-q+oysz&D_PCgBguau#Yt3MiO{_* znkHpa+o6!e1~HFv(xPD6OPahI#aE=E$EV^WqmkmZEU8InF4dmdg0x4tOHr2p0;HG| z^+bah=PWCniOuA-M7ax7{+{O0u7j#}J7qhg+7HdD^9j z9u^cx_kDNQV`<`P^bAj_SQGr))uj<@qcXFG@7>G&#in|9zd6fB{_yDPnT^MsJEgl< zn<$N^B7fZgZ{Om#3$E-ZdjryKLXYk+-Y{i{dEk_IJI!zD%}e@^@d|ztH11B= z#iGd}C$P2?d2VuJ_516{jNCg-m6!cKR&ngNfH!g5&97TNy79n$1=3^T0nRpNKacl% zb@sqR6}LR-_?`H3bCQVr+g8y{UiJ6g2Olm>oV<~o^Xrf`we}-N>T=$vwo25_zdA(F zlSzwf(=KUO6rI*%?rG~@y({TqGi$+ul5%Y8u64_M{~RQ_AedBr$}V@%l#KZE+={m@ zA@>?1ehusuSMef3u68XAM{}Ad_}W(uBooixvv>I8YGt~SveqQgC@Rk;;#B54ukTJ{ z%}v>6kqgTOW{J-$vYl?Y`#Zjs)@@dweHAs@c1P%Lv-U@?dbM6lw2I#DJ^7CPy5>If z^YNWyD~n3ZlK&D%DXSB#VoV?Qy;kYde`k1xt@`LQk7oDE=$1IGc~5%2mvMEyF0?=V z{6p;nA8|CBGl~*83BjiqjSSpyl6R6YpA?hV&Dotb%vm~p7bZi(rWjqhHI2D{oL(ufMyE>z{^qH-c{$OP5S zINc4!^&?WT(HoIi<4P7O)$-B zQo}M#wbso}+MzO2?IaDi;kre`z*N~LYUVZ1#lrTt-){;jS`8iUdeSfR-fokJgbiUB zJc)rCTkQ{gX7IS`lIuhE!r*yVs1^{8x*3wxAzRU}R+YIwZ!i8&>tnz_?2p}Mq6-u4 zJ9*lP&deP*{@JNuP99z!sfcVS|7BXUH4LqYQ@&Elq`gaV>8V$3LSFlCVn4SRw8k+l zTrM|`7S)?LbRw^d=B*z)5$AIcu`S7`)N-;u*UR*|9!qg^x}rPS5JT{enK>3Dq=wOR zmabk`v;ARs&G0>@LOmuB^&Vh1;EdU0E;&^E7zR%26g_qW*U+~)qR=km5HXkTYM7&2 zhF_07$Q}jDaDCkti(p2J7oBLZ#Lay_N-|p zXU~{rI*?0 zA2CNg)70h6y;*zrTjeg8GYa;@Xx_LbQ~$mouF}uBs=0h}3m%a%ij0J3aHso9l@gdT ziF98*mK@BUe{CVUPW|L3jZSL}_set6S4-e=aa9`p9A@o`PW5nHf5z-E?kx=!tDd33 z0!LL1wUva8spK|0Qnuyk;!!0l^jI-}ewjK&r#MnpZ^@3QcF@^e)qOpt+Na0v!vO3K z80mu(VL|sH5?~eR zu}2OK$d__2M>To*El#?lGTkO+8hf?h*4@F}hBQDAEA`j`Uvhv#e2}GzCltf!`;?~^ zR+Qp9%HdS~8V|f(ax>#)aGJ2W@MZH!v#Yqbj2!8pb>!u7duiSE*#7f+40UH|9LiBO zJWMw|Rwih2DOrw}=&opL9#^(5*jW?)YFDb(<(&qm>$y!xg{~s?eBn}*{gl`uYyV!{ zHuaevYa6tieHA*q&R>u9;LtUQTIc0SjfKWrMkxNIy9DtRdD<~ep27Kd9 zYDQw4(0hNnq~+nGdWYesm)AJkV55!O2dCMfirK{b@r$F>^nflh4z2DWj*I$SiA0O~0^|WUb%cst5h03M9yG1V1E#N}Y2js{) zzV+;OjqhI*mOB1E0flC)7Ax+Dm|ojlvQoD%W##^)z@0abNX)Nxn^ZlhG+U1i5U?`D zD^wGo`RsCKO{kf9JjS_kiP_x`EGO1|E`A`dE`4%%{Na74d!c$xT7&$F*)6xyyw2 zCzcO>Dz879bMiD+?t4Vl6qd|6AnUg(I|Ivz$=zj_;+3hsaZ;N(r*)boRnx;?I_dd| z^Z;tc?4irW_qxgDWNg%lxweo@q^1y z+6T8^tmK{p+1JQe>t22XkDl#TUgQy-bZ4etX`o&EkVftTaj&&;d+rwp)Z0~=wv3RK zi(Z$`>=~SRA%z#T=mN*SY}&@cohNrVR%HZ1VeD?Ez7qf*P8fq;H*;rsj%*&DxyvF4 z8pOA1VDqF%&9S{#SLSu8j5{^L%ZG1^tZTg2Js8|ga&4s@YnX7l5KuqU(40^&t1k^L zPSRsvI{JA6y7qNP>lW*-uqS`U^!x@6Ih(j4EYM^9q{+IN!j`|z?bZ3^eFm;kZA+Y;f5hpLq?3xzU_`BxN>+w$CILoV)s(0^S7LXC2njGxWWV`qBsv8caV=)j zU~=DK|7lCINIsvFl`)|RX9jIB*9XcKHsot*@gS2t57xx8TQCSE7+FKS2aIef?&eJ;bGbO#Wlj#bWwTCH-jse6p>RZDA z3c1y?Q&)59c8xO&6EXl!B$tpp2Qn3@{tQW@e#M(7QoJ&@RKq9f7VTZJFTgR+)SY@P z*42~cBT{S{Ken~K%~MmSJ3uIsID59&@X6_fVi3jG-V;`8#7QAyI(B9vzf9MXmNNM* zV7XhX9r_CN7$Ca~y2}~1!e>a8WFlHRbeOwIG`#R|^fm?60%EO9u0=pR2Kds0IC9Uh z3>(&d*j{K`NDMs+seTWM&sY1M6YD(77Vi{XCxSNY49+!E&J_9zMIWrkp)+QO^w>Ia zg_yRyMOM(G#pFCrm=K2Rcz%K|wn2|=1~$~MsZtZUbz9SEHr(%E9SmeRzXA!o(s;GR zt&ZTrAeFpulzZli%Um-vCNzsf3lpp7dnjc-cj;1s0St}9I7h!P?%Hpn&FI1j!6TlS zyqRylXlfUc#CA$2ArjHk#e}f61gcLS(Ie=mh{AgbbWcRn* zUp8)Pir^;OW}B5IQvKcZ@NafmShGU~Q8z%tN(>Rh>wjOhhRS%VJaV@s)1)!x zp6rm&Q2xmA3(^QCyzf$OOan;zYmZ+2$dTPU4+6^lKT_BrlmFYs<9xgEW_`2rr1X3& z#89dib(e*f^y7oozmbvEeA0aZ3;~VV`=0R<*L;e5;+w;0gChUV!U1_wy_lC!&Qir9 zW}SBn)DGtYfjrKs$SBf8CZVFuDcdMKBXDOP4kwl!PJF8TB%}67;XCsQv+I3^&uYj^ z=+zznJ$}PQ;fgn6)oN3A%hHs{Wu)trOVPtS-#J>5x)*`kRF%W=Q65E zM{4Q!f^noQ&TBPkog3w&D*Iu+KYz-}eEYZ)Y3s*%FP0voiNGtCXUu#q`>l=Muh~xYV-F7sRG@v@Y1NYcKEvlf`Q>oXg}Z5e@|})eRIz6lA6LK2G`SvZ zS_%w7-Yr!i;6B;lOg*hAd^BZ2W;u!$!nDu&7a>2p(l$4;XTB<1u`kA-oV#k@t&#xh zayaLj%YcnDXDxgfTD&~5%ZPKk2Uyf$R2eS6Oe9(^0`TLQs>3GXP_TzY_os|UwL}ME znJ8vP;H(bB(yd+toc$wUVSw0M17LCDJ*;e<<+S1CM*0dMRGYkpGL>D93;^E^li&W+ zFWs6h=bTw-KB~21-ruEy0o&rAG4|T9zs$?n6 zv|ZKdL;^}pdrS`|oMd|JrYuuRZjv(c!ggIM!$tvF5!K!r&ds)}faiezu2xao>y%WU ztAFm#7(Rf}qF5m9^dcB3>QdSrozBf(U}Qi}-y_AJh;|`))wtH4W!PPSochT~cN&mW z$;~V}RmlP1)O5!`)rL2`82RxlVrk24x=$1oDn~mCR~^-*(d%XFD7=i8>als=vNYw8 z7Zox$Ot6&NCCm~J7EThDuw9yC_PUws5*2qn8gOrziU}|k8|1E@~a@jD%NoG3?2a2#2HfX1#&whs4t(#lDoM=vAeMNqc2j8hcsOo$+Zl zHMVjVxh|62nWx z7?k}N0(3bFwQ(7AIVzG2kSbmE*bJ$k93qlDCGI(RK_a1#@j5yShDclmJ0FIK9?Oe7Rog(VA=)3OrD|`Nzfcq9BF$>hl{O1@ zHaq2V_6n_F_2(&wFkyi%`g%x4NuCntB_Ar`zpV5y&rk6UUR*!z)NQMux?^fFxyy-p zRWlv+*yusMTT6Ru&_K@$gUQ=tt=NVl%p% zVOd1uevxDut{sZ23i0OcNFi#r9AN5)7dKWU*5%edFu9LJ+txXt$QO2szys`wP()o- z{O}~HGSc)d@}t(ol#gU;XzWPN=~14RK~GfK&RO!PHJ)0Rdd(@|5ioe7bq;#$sBbiR zp6UW;VlQ9A$@OwnIX_Kzy41#HmUDu*pk?H2(W^r{{bQm`dTc*=5}S_+-)K#t0AY|5 z6^N&h9zcr0E~QZ#SVt5y$y?lr4{D%1H$z_X0w-tY)k*%>Ltn$w_Ia>YyVZm~Bc>4d z>K{hh_|mr=ZC~SgDbEk)Ms2qg@ib#!!W~g0zyQe+v{u59YzL?+>s+r1&tcwZoi2r> zDFcCIGgWmfj6FO0WbLbI_fGO`ch5IG!e!c$e#WiXppXJC80O+&c!HksT-!qC37SVW zwEYzFvWD;c;DJe<1v~;zyMd|Op!%%Srp-Gx)7C}8Y-G@Tt+d31dj`E1ZsDKrTxf#z z(Dfo=N_D15Gu7eTKLZcD*~)i5OP?0kCf=0ha`(N$?LoP1+sG5Y*A6~7X8XzTKBfZG z|85|BH4hrP0Nh-NviM19+Z<{0TPfl01m(NawWh(64rtrPO=gKEj-HC9vV4S9D1nnn z>=EBQ7$M-vWt~%^s^>ewtVxI8LUT_bK7fOH4|W`Neg%W9voZJg6h7{#v;#rgHwfvQtE`IzvYTaS z<8n@I+fiVd1;&#L9@HOmF6@eRiUeh5tmr%Iv8dfxvkL0amcgTg(;b^dHMUTSy-B`8 zl8k)barwy^lvBCAck;p3A8!^oHvU;XqODKO&IRWEF!oZ?n)*q=(Zvz~{S~XpSh}xF zDX~?8Dm*aND^OGyjNVlPs^3W6Ds1!*jjY69*i}b%NM2o=W5Sbhr5B@lL8CR5Reyr8 zBSG_e^7DD;{8yqio|#fcF;d#TeUq( zd>@fxaIKh^Bcl$WH-A0bjf+xNk4La1dZFC>gGUI(c~o7E?pbJ94Xn2Px=1D3OmVb9 zZR}03^H%AxYn7?If+LT`4`ut-t@z# z!Ytnq4L@n+{Q#$?zs?=wRZhy0wA{{Z=rtM>5`v$|6^h6s?9S-9*1E>tk=l^GD<)bK z?~vqSa-#O((Ku;;yKuM7LF-PgRn3-U0;5Ra=5dd(yA-*3%caIgc<}XD%_^Dl*KS~h zc!Ivgg9-F<$9ZU_?@FV!_T;K+bcF3%+gjmZmh>6kD>Fxp4g1%8I>2NyRu$`X5w{Gj=(CZVh zosb8B`9Coo48B974WA1WlMY5rH5pI~U6O~Bn`EJ0qsSw=unx#j24akc7-+x@AXB{n z$k0f|xo*$hflopr;hJ#_EF#Jy!D2bvT#=1;r6&Z%(*0Qn=#gLz{dHK=a}_H|ce(oH*jXPg2e9I=$8u9}MRy=a0GbZN`t2T9 zfkY*}#;*bKzxM<{J!N|ASezc)`3ya@Al}|U_ws?Du{41iM0W`MOM`l&i{kS0EJ+f=SH&J*w z{w67{HJE0gS1?y3*fkHq@Qv?Ft^RgxFYwmtzdpFYOTxtWhryd4ddsvY8RrHG9Ke^jn$=xv-DrPq@CJUrEgAeWzTmewwf4bj*m29I{}Gi3J1%1C zL?h}vM~Gon9#8$O&vp-NY|-6F%?SFyFY~WCuDigeK+u-U~n=@PTDA)p4j$4~?vCf5^cG8IQtsKgI}~l78L57pTN4 zkH|K*^Z>UN-b&G$O5tPlMUODESqu~)OTL-H40p8uUC2zP7X;eTRAHWWqP?tIEQk#}Oi_sWY0&{%XtFVxlKMJsa|eksLQid`>7Akp30YDc8%{#VKr} z%uczCTV~PHCfqm&M?r`tvq9Pl~BB1NhGp#<{-%L=`hm&o!THpF8Z(vsR5=pmg9ekX24vx9(ujF_Hn!!!Av5q%5L&H9`s#*jTAoFLe!l72K~ zkwm%1SE=c6WK$C8x{?))BRfMp%*HSO-X3@5%wSKYyULLslGQ-)MkivD zEdl0w>}~3o_0h*{H|~eNp}0LMzNS@skIvH&iMm)CPmgp&Wd_QN7|ttwNT}Y4p_RhK zwC8(*o+Bydyx?gD!D|8@yYGeA`qRQh9~IJX7H0A4g(h;df2Y3>>B;ciFmg9Z4NJoc zt_2<=WABDsH`u%Ub`-|_?C;jJwrb9k0B(AH*0ylPFtGig=7gmhu500)LuMb+SblDm zvR~@`oD1En31tE0kFqzTdvF_bj&^8XHZp8HgMAnQ7(5Jx1|?^ZA`jB*iFK4y8U6HYDKZ4+l^I;-s;wT20id#dp~>5e zjQzrVhQ9Hby$c%W@1sv56FIm!AmTe1f8V|^9W!9R9e<;Z)rPsgptng*A>LpFZ$drk z?|U)&@)x3Tr!xSb&RD3I)fpm9;7D3_~_l8q7;;y9AJi4rTRGfx& zb4AEGhJPAjd*0Lb9g+Uv7~XrfxltQ4;E5!KCEkC+r=K2VcHe=)-bFQcK`~?GrWC;( z#%cuY4O&1oC}uOlmVUOgO5eCQ!2Ji6u_r+Z907tB$PhFT0Jj4b;G~3zl&mcv!m{v! zGEEx#5F5yE^H09fzEo7@U~kMs79nHNcXb?yVz0DYVWlt;yf++C!b*D=ZL#hSs@W)0 z?MI)A!~trg3>F3V1ziex2b9+;s^e25^V;uL>=e9sc^ej#L=5QU*6MM{2)I6w@jX?p zAE~}|&YygS>a)LxK{MiS3*xG+L!+brq)$T1pj?9C)&vu~T z@7_FX+>MU`DD`!&ZyI#fIl5@yTJ5|CVB#|Y$OpxmROLI+(|eFbu;UGSdR7TkB5;co zfOV?i(`$5$eAWp9JN3t`a!p3`(C!}Ib$2HhLe$&K9xVaocb6al9P>5cm^(ISmIyi= zbNT^eK-A7zTz{y`_Jc>vdO3#M?3pPfIv(h&NH4scR0SV&F|vutH+Ce!n0#Y8dFErh z@#|)K_^MI5ODELrA=XMmxo8mD*wl$E$Q7EnNW&&Mq=sB=rMzeeMG=f%8}~&`TP<#| zXBr4bVCmNiex7zdyG+AL3W=lL1Wn*zDD_y$wo0P5uq5w|=Vw3k|6+%tZ~Rc~?d#7m zsktksg9L{W|2Eq$|F0gd1TelkG+P51tH*wp>L!%~P57AGL0<=V4qBmN=8H zGk^6*-+z!~UY$e}STRhlb$&|i=7->b@YFbiRtNnq zN|-p*#KW3cpuL8KclYO_Dj}0|iRozhzz@5+c6=6Bzr~T3bHax46MniA(bd^WmppjWb;BsHm_aa7`4YpBFwcgJ_G4G z*2i?6LC(GTEMr++#?_B&(NrUtZ#bVnm3B(5sL9>|O*G1f&H}Jdm-3N4$Nw{Xe*DpW z{3rITPGpD@P>gMK1*#@`iB}@ur{D#NeP$JnD@JCrH#is`_b_v8N)NC0fteF@EFPhF^VicUT@Wy&) zOAKN^5L%CS2a^2X5?j&G=>t0%7_$xf7tPR+Y*xi|Ip-4%8HM+A^UyFXg!ub zMZ7-KTLKQIRQo+n9r+ZMW*h3poa7m@(vvGouL`!qdSbky7YD1I08N5dB-ZreR;~od z98-rbGl)5|iDw;@yI>a~3beMH0ZA zEbrHSQj<*NvT-argCO;Pvo+hHd{M?|@o%&hG{A4KiLyeK+IZb|dq@|(zI15xnNI(oJ{JFUV>5l( F{{aCj+b#eA delta 13513 zcmch8dt6NU|Nlu#E@f61i5RO0sU%6H!-wR$xwk7C)@3A&v{X#XMf+{cmMhQ(LR<3Gv~bDuh;YTdimvr z(cu?HH*Cfl?Gz0jI~1*yYo|Q%+F%}@Nt<7vd5;%7Kq_27esTM;Z`Kx$eD1U2uV(~K zf4fhZ>{J)`!ZODGn}+E<&c|ZYdSU`D$`@tX=rJFUdpP0Xr;$8mrTbEq(v}iEwtxPd zDW|bRwFR>$mFh78N9U-JR{7F>A{D|ayutTS_K3~HJYU=jMt8YNQn~e3u6;=7q{q|8 zmli!Z#4gBwbAGSa1#KeXn!n|Q%KPe049eKvf5G&f zLqj=-@Y^QJY4t6Y4ogxpv$E4Q9zV3t^}6eEZ&y&$HA!k%{J037(}NPDJ5i(UUGsa= z`{$JMGxbirb8L3+1982+cj}zX8*AaIcl05GGv?IyT;4m?@Hh7FtXN}H_!|G z6!FwOJ@)=}SfCNPo32GYvM16-wNuo*D6j21#patiYe}bgt&eUPHy-gEb*(wSjz4;* z=|IT7q8@kk7~LmSkBu6mmeKX7D>PHG7j1SSM!M+SSlk?m1>YC9L<&3lKItOT1q?xZ z$A_)EyQd?srNX5_QXuZ}`s@TXcV9uO;_m!X(y2vz_eb~^M|d3j)Z|#NZJvu0*RTIF zIA{A@iCjjEl<7_;<$Ja3v1l=!`0fwmI(8*byNWnNTI+VHWd(k*XW`C%oT`u>$bL>G zUysawK`P~&(oVc!zpN@5C(8)7IV5VFd8BgkqB+!3!iHR|bEPiovD=0DVo~jyVaTnC zqh7}AboGlq`Bsma%P7w(|6-|nrkfrcnTof6p~tGbu+9LwuTYOURBAkEg}5vDmLv`F zIMuQ`{{nI4)WSeBH8-w*YW>3bN_@jj`hhg+VQY)337!4Ms+YNk*Nw9Ap2Pi@l8aI9 z7^Jx5J%vc9$8}C@!WZ2Z9a%bbZWFKSFx_Xq9y6^}JKmEIkSaFmu{>Yuu$DudKzX>9 zGqo%uhSe_J9Qk`&Sme_)zc+Yd?6EpC>ICf|c*3dXDr5(cV#Huk;D8|k@5D+gbtar= zPd&E2#W>ufU?o@U5j|0s9{F2|YJgu;XMBfwlFVX)?Zrdk>tgF#drM;USlt1>_{b?e z_NxOeFMlJp#BMG2!7L3wbG|lmICrk6q?9LGzR`v2-tK>&UH!DqKNk(%EHKl=$Mru_ zztE$YT+UPs%{gU0PwchmLgVT?h+>I11T#E!1PZ!|n;qB9lpfA6k}?O?p&0U&=Vx@gik@zjp`f9Xf3rcJ&|h zC5GdAO!0^ORtse*)13=Kx+5H<$KYNzyF|-xNpwyFH0*nF_0c2Nq>GaM$H3d!erL2& z4{FxjOz&lA&*bWY2`Kc9T>YL?DWqf8!e8xmMUOprCS`snHjx$0#kJUTymRp0DUulc z1}8^yWZ0Bvx(y93#%H+qPRAeDCd*ZO2rrqleYE$Sq-BHVJlcL?a#4|e`4~OcKZ81{ z$No4a*0JA+b)rB$rcSRHAMlRP9}) zMX9K;L)@e!mlt;3%}m!-R{h@TPY*jneyztIFVJJfz2f0LpSSz#tS2_p$nw-smR3$z z_&-PL`NB?D`~auJLXSPYRD(rM3+wQszCWzTW?HQ|b3S{Z9{VAX2HYHgxa=O`Z~cg9 zg`DvHt=(xw*`7Ic_12xQMqF9p`Gc?V7jgZ~BA-qlHbWz9FgfIHC9j^7F*5C)aEI&A z>Nz>r_U?#v&3!j5;=OwSQuwNdmZpR7LGe50Ncu%zYgtzuy%cx6qVz@o zF%#@NT6a^|Z02Qup=7nwu#8S!#sy8;=t3@kTHJxPvoD;ry8GRery1z3MB*!-`JNS6 zeog0j@#P!;ws8Y*jMA>t9lSCP>yTKcQy0=!bCw0HcKJ`tx`_$HkGzcce4QBbE^^wQ zauHEdA1Ki*%{%Q={BZqhe2a&6dmO)hyJ*eM6@xe%AJAWk!w4&N0zJUY)qU%Vuc)*g zrv{|s+?hJOWtbj29?`x76?+ES$ZW39u3G$_mIz)wH$9;M%bo_YUpGs7qCa(`w`*`|Kq=yQy|7))fsklKh0WDXE(Snqm%zrPPTH z1>ko884BP`O{9@#zJhD0+NEk<>@At0YW=IOWj`JVNIw?PVZm?XHNPkhghb_zkYYFw zj~O%&@Z`M+0zkx={t99rcxjf|Hk;1WVv2nfK$>rp3q;uBb z1wz1HZ!`6_QxssYpAuhxlbp3E;_PZFOVUAXmY=0Uva7Pl|XD8{}iWDnt z^;iX3rpFpj6UN$$)UN=b_x0G&tc7Y`ojh8q=uhwzlAC&L!zSsPGzLbTzRO7HC|^9^ z?cM2m|IU{UyLwq--kjw`6X~S$qY|VkxME#6mmVNjNv0~rM0HK!EfL9GMjL>oQ7}JwM?^ikb!y7tjFuov2ULj4D+!4wQRzK-V-st zh_G`)cR2f`X$}D7m6;@uwvxfq4W+AE1#)^{@XqE4Z*DxD?NBY8H*pYJPCD#PAl_;$=zVP{j zafT;K3Ra4>vS@c4c%nn8nPK%RBCKP8Ly`GaQ~OPmft6e5O78PS9`l@C$=$le>cRqH zRbip`1ogHgDn)UZIsdz)*9|!T{aJpk^R70qhQux7+Sq;>+(C+FS&l=PU^C#QDa|8R z-)W(u^;mj)v7lC*E-vK!AWaj-Weus5!S$>Q=Pm5!hH(z9x{`hjH}ndPKPnp+lGq=! z>hcFlxInBU=MLS%_tbdk?0tP&z2yo0k~t1#ZC=uL%_wE(lE{}0yvYw_S05SqSS~XB z%t5;cul&!1-qXx5ff34GEN$$fN3ElO5qE95B{?1;`6H=bsI)d9Y8q}6UXs(yAZkoY>)t9+y(N3``w~v1L-^Z*KvT8n&IFtwMZ|UCqsxR&(IwqQ#Zo&l@`@-IUSEySK@Xr?;4HlTFTT=TygQ2g9Ft zF+jT`k63^dBT1evFFRk$OQpngLWwl2YFbKqb~vfWpyuPf2hmXTJ@^YXqB=PUhyKLT z?wSwg1XWr4%Quof&sL-gUcLEtZRDeu^TbnZw>`+me2)wA*_xZ74Lo8~3-P;Dy`MTr zn$T;}I+9c6{Zx+)^Y%L>Ri4meZ#}kFwl;*WH!g-gk`rUgb#6d}rn)K5VT^ zl~iOj$`&mqoek`(NB~vD?N&u|^jL}jKF(Z5_|hfK5if4$(&;L{^kLgtGD6dBxpvQ` zigHdWo3a3n7DX-9W5OggAxrW*Ah~3DnNn0G+#wYB+PJVe+smWIr(x;i^fYE};5)cF+HMW#7+UnOiRv z9bW5`VZox2)dHom{VCrov?K{_m8(_97HhzJgN=Dc%IQTFpK<1U_< zyvDPa{e~}iTcB%pMpg`HPLET`O5aDwyIq>e@@{y@7mQ>em#8YePrWa`rV7XZ+1F<<%pGApXf39LZI@S zb3>=@bk|i8)vgaiy}ouEpTBI|#d!O5L+z|CrKOj)Y07w{VyM%oV}}2 z;*hzU(a!n0d<5iS?Ip|q2d8L zlVA9L>bOh=$Ko437PM)~rEA+)S4BMWd3CupBzw{d+kKB>D08#oF=^`*fpHIX2dQ{e z_p@C6MBF3GO~a-K3UzkkYCH&9k*l-QW1Cy~30KzWv2V2(Ys8LWHG^v6LPT9jU)UT{TaSO-aJm3HVc5Jq?k-&} z6_>QRs2Iks?7zg<_DaDHPwbJ&eRM;ng10bT#fL+*^wW)UxF`J%#C3Xwpj3-)p{ISq z-jTkyCw0i!pg!{3&>JAYrgA;@a(So!*-(x|kKOQB+5rFfDbLh#Y{I9=x*15@k_JW~ zSf2ZVjxFCr^%>mXl5692Y?JZ(%Q2(R^wjzX6zk>a4Tk|E%JL%{3A!M#U-2-IWKGcww;#4aG!7h9+b6WFx{VIhgO z5ggq#YwbEccK#$%&$xOvy!V+{-1?y;A zt{z*Ss>huCXw^B^6LAd3Qs?Te4uDFH&DwAUc%I-bY|VbYM;pOy)fFwV?;NoLSl*;> zNa9%|_c~nt-mg-`Fvf|{r|gQsNqWrAUvzk&3(|c<-9c-`1e`AMA5?!EXzv~ouadX* z1=Wx()1oe(GbP`oEvW6RGwztL;N8bf`9bPYry5*(y+PH(hCIuXf7F)#(e&KqtJXGz z6vsB${b0s7{(q+-=<_%v%UBDP_QQ3Q@2=~smgNhH9FC9R}ONRzIf&&$s=Qj&+C zUj<)}k?7xPuVm@~b68th#6qdztftZfBq`{jgGwGm`c~nuZv{-E#PX?`>%>=)qJZ;f z^I(+kGg}|iW3G92vme&(9dA$n=X!b5*;C8GIpjQTaSzzk&WlQ|3R*IL{uQUJS?Lq5 zaj$$+_1vlq|1l%#jpI9)C_K$SpLL{bXH)sUte}Asvt#$lC$&|U+TK39QFSQyxSw}G z7gc-lyS>w{ii|~0Gp3+I%OCxJ=KD}dg28-y8oKGn{KAzh_EEpQii}rnpXVia*``}J z%|p_>imUVLrv-dCe@D?mwtEmuZm@mUSrzi<5Jwd9{j`O~BqnR&uSYy)JaMW&rd7_g zubmg4(+TdSM1l=VYxLl#7rE>mQKQkI8LzQHnRTWxc(^ z^ygh|LuqwK+^*)>I!xdQOzMm`lHNAxr5^xt*iN!5d?nZ7^ z&svX7C`Vd*T#& zi>tlupV9f+`7XD7Oine)tAW_OuKkt4?)4rES7Or!2>vmnYy!AnI3B&xV{3t+9{|Hn zUTR*q+)}15wfS2RBAI(dqNnmGc+xw38gtG?`WoK9}%j0UaYv6&J85G zFdvyy@ucHQGV;2xN+1iix+cGqabk>U%Zt{evZ$#$CR{W(Y66hv!P&%c=|vNz^lZsh zBdKV|WEVvF>oJy(A`66Py_A(0c0x@K}s|Cp>0vMbnd5wD%33Ees0XE_6uN_3Vklzr^x!Gn<@f4lM<;a7|6P!&akjujx>Bs4aZxfpu zLrZMA#(R6RZ}{i6nDWsk>KfmyPHqz|G^QE}@+E`T3pc#4v&#p7SiJL*tmscd!`(ciMcb24@sqn;8& zpfFvj1aw=LF9zq9$DXoNVyDt$uRHu940siR-Zp`ySWo_5_AYdvu#_X(*K<6|kP%<~ zluJ~w3{FtGe6(?=zvP*i7}4w0)+?+dBkEm8$&{<_z{jvb)o=#Wxg1NrtD2)tQG5JJ zpbN;bsuqE49Hg#mL(KU{9X(4PMD3qk=7*g&JeMKumNH?t1ydXczyP~_RXnx-vIfsV!v_;X zwC|}X?D( zucc~{4vgad5QUhSBTYeR-f~(T9NgF`U*9S%FHT5pn%fb2B&)#=$58%nC`jHl3UzXx z=&??q*=JN1s2lM<)Dz#pvL$4>*?qR!-8;>z5TKH9cut*k0u2$9{i&at>_Z+*E}PxE zmvne))X^6(>CpBiE+~XQ=&>~6zN`%mPJSdie>b-}yS!Vql=Oq)LiD#~fwOGK6zmB9 zqWlqCyhEwE-C9L7X2hyIXO{h*8d;Z1o_TXs>C9+O0SaEnFnnumN5Q80VD z==%}ljo6~`K~An0{#8um{@z4%%EYq=KUp+#;`j*}=mzBS-5_Gt;9|2G89)STU!HoO z0g;!p#P;(5L(VB?hlq+sWk^KZ$Bh#u^s$1b4eLFAI+3g$q{ohkSVK_$Y&~}W9z45? z60gA9`jPA^`mt6_Xj=Io4%erH=gHhAiyxAJAOG3t81`n9aSLRL7N(PXPy*5Twc`+H zFWyhOMj9s_%U8+V z!Thkx;U2jeTqcQvKYu%r4~gC?KM-9v&*jZ-K4DW}V&4~|p5f~G5(wPI2M*#|HU#dY zMD$RI_#nu1!wG~lzat%cP-p&Dn`mdJIO|ItWYGHpJv7viXamL-)A4$&Xrd7bGrx}+ zQBV+T#NPgn#ZY;1NL?!Jk+o1WgtRbFC%CbDsVc;9=dVz-0V%+pH635?YKUzVY^FcU zvC#h}$SM((pfvWqmg<=e=?4U6y7eIcM&V|<`C5r;wY75KZ9Isab}fAo-SuMh<%OvM za5{Fes@&pZy-lvd(*u3Ki4z}?ci7U8X&5W!@Ek!nl6$h`is}Jvk<^D230x?oNVsU# zvf&7*9F*sgEhx_doC-*tfp2LGKM>G7^l+(4yq?4>r46L4RU3J=feNgtrnjh8F(iDcgF;D3FQ%R3 zE-+Gi&-$Dzx~XC>Tdk9KokyKJ^;n0Mi_Qbrd5LM)5=Kn;bJVBN!xAc)x}wEzq9i?5 zm@Z;L;BuDJb-!8~Hg%Uc2E5w8VFg=U3;5q64(ZL0Uy=$YG7_Hk^-a;E?aoMAY5D;N7ZpM|IRCG^9o3n0q*6zHv z6zmb{2reqU#a1P=$-yB>NV5hc^QQ+MB82rkVot$fDqhQa-wy>qa!GO$==1h9;<5PM z#H|fBo?RyYDvq3JMEJvvn|+cSB7?JwOr}S1)|39C#;Ov$>-y_YoUT|qm^vU;97csl zx~)MWZO#E};Hbnmk~mm{tjvzc3)MsRGz;@u_De0Z{L}%3yScGhLm2lKE?U?oDB08K z1Ee@hgBOjxX?rowb7^ej4kL+xtzO2d+HQ*S9yZW9gP~OI7MaKaMXhyKT-qkJK@yz} z66!ZV7$IpblB^$!SWGwv^$dPoS zOT?yVD{G&(4N;^K<>Ts;x;YvM7t?l1RQ;0Kx2Usk0=_|^!Q&QPuGm`dceK~8#-?b8 zRueFVE*83hn%ZttSW%1YpYp*Kb~5A9qh1hSUpqL)E)HnRcJC(R4qxpn>JFR~5OE(p z7UMu$xDa!_t3g)rZcqtO?eK<|&0A`k$#p!w=8gPjbD=9am+^!5kaC6sMgyR`0Xse> zMgb|n05u)6J=P_zr;Yd_)D;8)&=VZ8qLi$KP}B!4$AK^x$rJlqGk%pWAt8m?!AZEK+oL_~{B;Fxrv zO8(4~|FJI6Cx!7`x{X)Cr3Xow9=tA90I2>Luaf@dueW~m*9yEYp4}QLHkH0}fD_2f zpniq92qT6r#vKya!C1uH?tG_w&3)>*MARGsaZU8n&*Pf9c)ayH5KVJ1<`a^pX5e+d z=F{Vs)^n+R{C#r}L?7yOW}4J5++qQ&CwwncBD2@oyvi*wO#;>9Sj;HnvK_6SO>u7f za(W0w=@T3+ER8y^>#;A~ymVVW1no;jXIT>wU1LHIy}>s}To)ppTkwzb&((j;KbQVP zsN9+sxtuhmq139_>eE1z02RGM)ba}HD+_JQE$V`b{l3;IfiL90Q^g6EOP0gV!4f_U zih8B%5!SciW8lK(LEe(a3r#e|1T>Vjv569v0hms>U3f^EB6!YZ zRyRMU2`f6Pg&w?G&+4;o`&uQ+On6y9VTc@IWN-+M>=tfVzyNoI6l^ASTv=k$B^M3# z?>9ua7ysJ;T>2h+x_6pm9b1&Q$ZdkoDj3EqXGnMPe!2QL!(_chTdqxlYJcRk4aP{y zv;JL#c$-(H_dB=D#JaUelx^pM_C|g}qs+p8|Mf{12gu>20_it0<*S%&od9o zhFKsC{+nBM4~{MCtltN^Yi7PJ*W`-uSOOCarqCyqm`Ke>cX z=F%(0RP}WBa+LoVZJdaAjX4OXV91FU|AYGg`x*<331rs<=v8wI<;O}z6)an{J1Ixb zBw{KD3gD-2Gh7hlwVj6h$w+JEw;1ln90o29HD#09Vq@tQ^fQin9*5W{-4{5Dh!czk zr24R|0sr@p+Zw~*JHMFFOj~o4baP?wv)2;`v29Ac)u3cBh2^nXHg!Ce*z66nc=KT; zW-aeijg;Ff%Y^O&T;ouwE@Ad=f-@!ZTE{vDHw~*Jjxz2ioDKrIuLXxbov$VcOmJC>$z|K3}VOpJ%}9( zQ2NhF>~p;Cz)bOxC^|<>!a!xSK(ug`i_r^_`#4Wj71JuI64r5b6XThUBTpKt^T#kU zSSi)Gkq%W^;!$tL=&|R#zsO=Z8xy?LV}Ey`^8d+!ijN~jIS#ub7PwCG8tFuwtKu6n zrMn(srr;I(qAUrh<{=EndDAwx_L+d-7X5Yt<--|q5;ls@})*~^eb z;e7-%!B+qXpbKH$W3-r#+bhDqkVD{c3UVUl_9z~nO4@EFtq*((&!NpW}WJb99h8HOcN^%KMl zONM+HmKf%ipAAa_J{^|8$LOrs^nyR(emXlwZj3g_U>E177a!d8tchS-JEducUMvBu z9J>wu*^I4H%j|)KxGp`e9q&byET9WCqY_|fTOx~rd?0$H-`P>?J?DO@F0{#Q8~|hj z(EU=Xz7G(YfbLs#t2{9%*OQWuDi3n{4=N8TtRY@E5ysQ7(?)~*{!n2~5-3*R5aTRXFv88IT||+Z1V19n8F9yT^Ano?zVv0exh^k);9QNd|&q&Ei^=O z%+>(oD@sJJ0|uf_f2A7}w($Vuiq486MRc(LGL#sqJqb-&76BasDqhhUTLa>=~*Key3fP72#-pFj%l|Gtg} zlhW@|K@nmE(t#a%>~J&`wSToVUHZyei>FayrCdWbb|%n8A+%&yjd+rWv*0=PL$-Ce zxDK{>>Ug~f)O~%YVB%33d43Gz%j1#lM_F^hsHGE-zV@V+CJYk zSTLOdz`vbp7r^)50C15>lRraNiMFihL{!o3jQ-B7j*F+WrE>K$)ai;xOFQ6dpI*Ae zhYvGwfykxrkO3UxDvjZ57gVVKAOVOU*PUCwJmkilM&#bU3#K&z(xua@DAb)A6VEx>&d<}$HAF+>G zCJJzN9mKYTK7EXW9@JXsdU}oTryB>Epp))v>f!;Bz{wu{E0mhf z&Om=F837grd6X1M6@N%!@xd}5GBdNKdhBTObMIbYXiZU&8(_^a25SzJ1|IHdP~41E z6YVnnNW|-n)v2PW{!VMGNb27#X=P;SjNmI*p&~7R0%YD|`ZTQKwnJK;3$fhB1Y;h zyQk}$NIzY8Co``A9=}$diAv5~7e0}IFV`97{~vrgvjD*Oa&5$#Hm^H@pRLYKGCLFh}ltq9itDPF#cm!P~-D?R-obhZ2=nG#=#2$7?do|CA`hMO%Qmrc0U$Po?UslR`ngX4hqi&vQx;$Xd?Sq{!YR z8HRLA6=K6?eRCLR@3glaq(QQea_E-q-)Ej|p)a>lAS zD!&v;MB((btdoYIwN;P3aIPWmRNsQ(m%(%v7#9@M79zEk?ZUU-)`DDQ@K(%rFy8>I z;EZ`Ft%dPcXW{P8Fqw97BG>K<<3K9b*<{9a_FkOXclVZl;G+$f_}5D#my2##51hfQ zAJnBQ&ooGwCB^31Af>dhhRJLn$Y5(+3n|YykFQ63;)EG>_lXl0yaqIN9Z2u&lsw0Y zuTB-}oFD43X8x7S3SPOhG(rN%H$1gVkA)5>*@%#>p)mDU(3rFy)0Th_{#IZ}MT z^kG}XVKy~o+s7Nhb`EUeuMjFl#fw}-ohw|7_KU_W_UzHtAre@RUow3t=d+bD2s#RnZotKR0UTKk{Ya{3q0Q9v0xS1wPlkuv5BzBQW4~cfQDhO z1P*HnaKLsXKgwa`%NVqwqbr}#XyCBeThw|dqjvCO=mw|Xt{WL&;QRq?EmQt+4{==1DVeuxBvhE diff --git a/public/logo.png b/public/logo.png index ebfa2af601352e49bd6d93797b43f5b4f4d3bf5d..3b147dffa12f91ea6692bae23320a42b449c131d 100644 GIT binary patch literal 28940 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 url: `${AUTH_BASE_URL}/login`, method: "POST", - data: data, + data, anonymous: true, }); }, @@ -138,7 +138,7 @@ const AuthAPI = { return request({ url: `${WXMA_AUTH_BASE_URL}/phone-login`, method: "POST", - data: data, + data, anonymous: true, }); }, @@ -152,13 +152,13 @@ const AuthAPI = { return request({ url: `${WXMA_AUTH_BASE_URL}/bind-mobile`, method: "POST", - data: data, + data, anonymous: true, }); }, /** - * 刷新接口不携带旧访问令牌,失败由续期调用方处理。 + * 刷新接口不携带旧访问令牌,失败由续期调用方处理 */ refreshToken(refreshToken: string): Promise { return request({ diff --git a/src/api/config.ts b/src/api/config.ts index 2228709..39c502c 100644 --- a/src/api/config.ts +++ b/src/api/config.ts @@ -31,7 +31,7 @@ const ConfigAPI = { return request({ url: `${CONFIG_BASE_URL}`, method: "POST", - data: data, + data, }); }, @@ -42,7 +42,7 @@ const ConfigAPI = { return request({ url: `${CONFIG_BASE_URL}/${id}`, method: "PUT", - data: data, + data, }); }, @@ -80,10 +80,11 @@ export interface ConfigForm { } /** - * 系统配置列表项。 + * 系统配置列表项 */ export interface ConfigItem { - id?: number; + /** 配置ID,列表数据由后端返回,必填 */ + id: number; configName?: string; configKey?: string; configValue?: string; diff --git a/src/api/dept.ts b/src/api/dept.ts index 12591df..67be64f 100644 --- a/src/api/dept.ts +++ b/src/api/dept.ts @@ -3,7 +3,9 @@ import request from "@/utils/request"; const DEPT_BASE_URL = "/api/v1/depts"; const DeptAPI = { - /** 获取部门树形列表 */ + /** + * 获取部门树形列表 + */ getList(queryParams?: DeptQuery) { return request({ url: `${DEPT_BASE_URL}`, @@ -12,7 +14,9 @@ const DeptAPI = { }); }, - /** 获取部门下拉列表 */ + /** + * 获取部门下拉列表 + */ getOptions() { return request({ url: `${DEPT_BASE_URL}/options`, @@ -20,7 +24,9 @@ const DeptAPI = { }); }, - /** 获取部门表单数据 */ + /** + * 获取部门表单数据 + */ getFormData(id: number) { return request({ url: `${DEPT_BASE_URL}/${id}/form`, @@ -28,21 +34,25 @@ const DeptAPI = { }); }, - /** 新增部门 */ + /** + * 新增部门 + */ create(data: DeptForm) { return request({ url: `${DEPT_BASE_URL}`, method: "POST", - data: data, + data, }); }, - /** 修改部门 */ + /** + * 修改部门 + */ update(id: number, data: DeptForm) { return request({ url: `${DEPT_BASE_URL}/${id}`, method: "PUT", - data: data, + data, }); }, @@ -61,17 +71,22 @@ const DeptAPI = { export default DeptAPI; -/** 部门查询参数 */ +/** + * 部门查询参数 + */ export interface DeptQuery { keywords?: string; status?: number; } -/** 部门类型 */ +/** + * 部门树节点 + */ export interface DeptItem { children?: DeptItem[]; createTime?: Date; - id?: number; + /** 部门ID,列表数据由后端返回,必填 */ + id: number; name?: string; code?: string; parentId?: number; @@ -81,7 +96,9 @@ export interface DeptItem { updateTime?: Date; } -/** 部门表单类型 */ +/** + * 部门表单类型 + */ export interface DeptForm { /** 部门ID(新增不填) */ id?: number; diff --git a/src/api/dict.ts b/src/api/dict.ts index c412309..e36f9be 100644 --- a/src/api/dict.ts +++ b/src/api/dict.ts @@ -164,10 +164,11 @@ export interface DictTypeForm { } /** - * 字典类型列表项。 + * 字典类型列表项 */ export interface DictTypeItem { - id?: string; + /** 字典类型ID,列表数据由后端返回,必填 */ + id: string; name?: string; dictCode?: string; status?: number; @@ -197,10 +198,11 @@ export interface DictItemForm { } /** - * 字典数据列表项。 + * 字典数据列表项 */ export interface DictItem { - id?: string; + /** 字典数据ID,列表数据由后端返回,必填 */ + id: string; dictCode?: string; label?: string; value?: string; diff --git a/src/api/file.ts b/src/api/file.ts index bd63153..0f6fab8 100644 --- a/src/api/file.ts +++ b/src/api/file.ts @@ -2,10 +2,13 @@ import { getAccessToken } from "@/utils/auth"; import { RequestError } from "@/utils/request"; import { ApiCode } from "@/enums/api-code-enum"; -// H5 使用 VITE_APP_BASE_API 作为代理路径,其他平台使用 VITE_APP_API_URL 作为请求路径 -let baseApi = import.meta.env.VITE_APP_API_URL; +// H5 走同源请求前缀,其他平台直连接口地址 +let baseApi: string; // #ifdef H5 -baseApi = import.meta.env.VITE_APP_BASE_API; +baseApi = import.meta.env.VITE_API_BASE; +// #endif +// #ifndef H5 +baseApi = import.meta.env.VITE_API_URL; // #endif const FileAPI = { @@ -21,7 +24,7 @@ const FileAPI = { return new Promise((resolve, reject) => { uni.uploadFile({ url: this.uploadUrl, - filePath: filePath, + filePath, name: "file", header: { Authorization: getAccessToken() ? `Bearer ${getAccessToken()}` : "", @@ -39,7 +42,7 @@ const FileAPI = { resolve(resData.data); } else { reject( - new RequestError(resData.msg || "文件上传失败", response.statusCode, resData.code) + new RequestError(resData.msg || "文件上传失败", response.statusCode, resData.code), ); } }, @@ -53,7 +56,9 @@ const FileAPI = { export default FileAPI; -/** 文件API类型声明 */ +/** + * 上传文件信息 + */ export interface FileInfo { /** 文件名 */ name: string; diff --git a/src/api/log.ts b/src/api/log.ts index e1124ce..12d678f 100644 --- a/src/api/log.ts +++ b/src/api/log.ts @@ -47,10 +47,11 @@ export interface LogQuery extends PageQuery { } /** - * 系统日志列表项。 + * 系统日志列表项 */ export interface LogItem { - id?: number; + /** 日志ID,列表数据由后端返回,必填 */ + id: number; module?: number; actionType?: number; title?: string; diff --git a/src/api/menu.ts b/src/api/menu.ts index b7e8e85..dff123c 100644 --- a/src/api/menu.ts +++ b/src/api/menu.ts @@ -3,7 +3,9 @@ import request from "@/utils/request"; const MENU_BASE_URL = "/api/v1/menus"; const MenuAPI = { - /** 获取菜单列表 */ + /** + * 获取菜单列表 + */ getList(queryParams?: MenuQuery) { return request({ url: `${MENU_BASE_URL}`, @@ -25,13 +27,17 @@ const MenuAPI = { }); }, - /** 获取可作为上级菜单的下拉选项(按钮不能有子级,不返回) */ + /** + * 获取可作为上级菜单的下拉选项(按钮不能有子级,不返回) + */ getParentOptions() { // uni.request 对数组的序列化格式不确定,这里用逗号串(后端 List 按英文逗号拆分) return this.getOptions({ types: "C,M" }); }, - /** 获取菜单表单数据 */ + /** + * 获取菜单表单数据 + */ getFormData(id: string) { return request({ url: `${MENU_BASE_URL}/${id}/form`, @@ -39,7 +45,9 @@ const MenuAPI = { }); }, - /** 新增菜单 */ + /** + * 新增菜单 + */ create(data: MenuForm) { return request({ url: `${MENU_BASE_URL}`, @@ -48,7 +56,9 @@ const MenuAPI = { }); }, - /** 修改菜单 */ + /** + * 修改菜单 + */ update(id: string, data: MenuForm) { return request({ url: `${MENU_BASE_URL}/${id}`, @@ -72,7 +82,9 @@ const MenuAPI = { export default MenuAPI; -/** 菜单查询参数 */ +/** + * 菜单查询参数 + */ export interface MenuQuery { keywords?: string; } @@ -80,18 +92,21 @@ export interface MenuQuery { /** * 菜单类型 * - * 与后端 MenuTypeEnum 一致:C 目录、M 菜单、E 外链、B 按钮。 + * 与后端 MenuTypeEnum 一致:C 目录、M 菜单、E 外链、B 按钮 */ export type MenuType = "C" | "M" | "E" | "B"; -/** 菜单实体 */ +/** + * 菜单列表项 + */ export interface MenuItem { children?: MenuItem[]; component?: string; createTime?: Date; externalUrl?: string; icon?: string; - id?: string; + /** 菜单ID,列表数据由后端返回,必填 */ + id: string; name?: string; parentId?: string; perm?: string; @@ -104,7 +119,9 @@ export interface MenuItem { type?: MenuType; } -/** 菜单表单类型 */ +/** + * 菜单表单类型 + */ export interface MenuForm { /** 菜单ID(新增不填) */ id?: string; diff --git a/src/api/notice.ts b/src/api/notice.ts index 61ac197..463ee75 100644 --- a/src/api/notice.ts +++ b/src/api/notice.ts @@ -4,7 +4,7 @@ const NOTICE_BASE_URL = "/api/v1/notices"; const NoticeAPI = { /** - * 管理列表预览,不修改收件人的阅读状态。 + * 管理列表预览,不修改收件人的阅读状态 */ getPreview(id: string) { return request({ url: `${NOTICE_BASE_URL}/${id}/preview`, method: "GET" }); @@ -37,7 +37,7 @@ const NoticeAPI = { return request({ url: `${NOTICE_BASE_URL}`, method: "POST", - data: data, + data, }); }, @@ -48,7 +48,7 @@ const NoticeAPI = { return request({ url: `${NOTICE_BASE_URL}/${id}`, method: "PUT", - data: data, + data, }); }, @@ -156,7 +156,8 @@ export interface NoticeItem { } export interface NoticeDetail { - id?: string; + /** 通知ID,详情数据由后端返回,必填 */ + id: string; title?: string; content?: string; /** 通知类型 */ diff --git a/src/api/realtime.ts b/src/api/realtime.ts index f43aa36..4866b8b 100644 --- a/src/api/realtime.ts +++ b/src/api/realtime.ts @@ -7,7 +7,7 @@ import type { const RealtimeAPI = { /** - * 领取单次连接票据,服务未启用或无权连接时返回 null。 + * 领取单次连接票据,服务未启用或无权连接时返回 null */ async createTicket(data: CreateRealtimeTicketRequest): Promise { try { diff --git a/src/api/role.ts b/src/api/role.ts index 9899017..d0cec31 100644 --- a/src/api/role.ts +++ b/src/api/role.ts @@ -62,7 +62,7 @@ const RoleAPI = { return request({ url: `${ROLE_BASE_URL}`, method: "POST", - data: data, + data, }); }, @@ -73,7 +73,7 @@ const RoleAPI = { return request({ url: `${ROLE_BASE_URL}/${id}`, method: "PUT", - data: data, + data, }); }, @@ -100,7 +100,7 @@ export interface RoleQuery extends PageQuery { } /** - * 角色列表项。 + * 角色列表项 */ export interface RoleItem { code?: string; diff --git a/src/api/user.ts b/src/api/user.ts index 375ffb9..ec52f3a 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -31,7 +31,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}`, method: "POST", - data: data, + data, }); }, @@ -52,7 +52,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}/${id}`, method: "PUT", - data: data, + data, }); }, @@ -73,7 +73,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}/profile`, method: "PUT", - data: data, + data, }); }, @@ -84,7 +84,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}/password`, method: "PUT", - data: data, + data, }); }, @@ -118,7 +118,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}/mobile`, method: "PUT", - data: data, + data, }); }, @@ -129,7 +129,7 @@ const UserAPI = { return request({ url: `${USER_BASE_URL}/email`, method: "PUT", - data: data, + data, }); }, @@ -193,7 +193,7 @@ export interface UserQuery extends PageQuery { } /** - * 用户列表项。 + * 用户列表项 */ export interface UserItem { avatar?: string; diff --git a/src/components/AppNavbar.vue b/src/components/AppNavbar.vue index 9b4228d..96664b6 100644 --- a/src/components/AppNavbar.vue +++ b/src/components/AppNavbar.vue @@ -9,7 +9,7 @@ background, }" > - + @@ -86,7 +86,7 @@ const emit = defineEmits<{ const navbar = useNavbarMetrics({ contentHeightPx: props.contentHeightPx }); const statusBarHeight = computed(() => navbar.statusBarHeight.value); -const contentHeightPx = computed(() => navbar.contentHeightPx.value); +const resolvedContentHeightPx = computed(() => navbar.contentHeightPx.value); const totalHeightPx = computed(() => navbar.totalHeightPx.value); const capsuleSpaceWidth = computed(() => { @@ -203,9 +203,9 @@ export default { .app-navbar__title { overflow: hidden; + text-overflow: ellipsis; font-size: 32rpx; color: var(--color-text); - text-overflow: ellipsis; white-space: nowrap; } diff --git a/src/components/AppProvider.vue b/src/components/AppProvider.vue index 17254dc..831825c 100644 --- a/src/components/AppProvider.vue +++ b/src/components/AppProvider.vue @@ -1,3 +1,18 @@ + + - - diff --git a/src/components/qiun-data-charts/qiun-data-charts.vue b/src/components/qiun-data-charts/qiun-data-charts.vue index a9ec644..7f094a1 100644 --- a/src/components/qiun-data-charts/qiun-data-charts.vue +++ b/src/components/qiun-data-charts/qiun-data-charts.vue @@ -637,7 +637,7 @@ export default { } else { _this.resizeHandler(); } - }, time) + }, time), ); // #endif }, @@ -993,7 +993,7 @@ export default { //#endif }, }, - this + this, ); }, getImage() { @@ -1008,7 +1008,7 @@ export default { }); }, }, - this + this, ); } else { const query = uni.createSelectorQuery().in(this); diff --git a/src/components/u-charts/u-charts.js b/src/components/u-charts/u-charts.js index 750101a..5bc1dd7 100644 --- a/src/components/u-charts/u-charts.js +++ b/src/components/u-charts/u-charts.js @@ -921,7 +921,7 @@ function findRadarChartCurrentIndex(currentPoints, radarData, count) { }; var angle = Math.atan2( radarData.center.y - currentPoints.y, - currentPoints.x - radarData.center.x + currentPoints.x - radarData.center.x, ); angle = -1 * angle; if (angle < 0) { @@ -992,7 +992,7 @@ function findMapChartCurrentIndex(currentPoints, opts) { cData.bounds, cData.scale, cData.xoffset, - cData.yoffset + cData.yoffset, ); var poi = [tmp.x, tmp.y]; for (var i = 0, len = data.length; i < len; i++) { @@ -1011,7 +1011,7 @@ function findRoseChartCurrentIndex(currentPoints, pieData, opts) { opts._series_, opts.extra.rose.type, pieData.radius, - pieData.radius + pieData.radius, ); if ( pieData && @@ -1028,7 +1028,7 @@ function findRoseChartCurrentIndex(currentPoints, pieData, opts) { isInAngleRange( angle, series[i]._start_, - series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI + series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI, ) ) { currentIndex = i; @@ -1060,7 +1060,7 @@ function findPieChartCurrentIndex(currentPoints, pieData, opts) { isInAngleRange( angle, series[i]._start_, - series[i]._start_ + series[i]._proportion_ * 2 * Math.PI + series[i]._start_ + series[i]._proportion_ * 2 * Math.PI, ) ) { currentIndex = i; @@ -1367,7 +1367,7 @@ function calXAxisData(series, opts, config, context) { { type: "", }, - opts.extra.bar + opts.extra.bar, ); var result = { angle: 0, @@ -1419,7 +1419,7 @@ function getRadarDataPoints(angleList, center, radius, series, opts) { tmp.position = convertCoordinateOrigin( radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), - center + center, ); listItem.data.push(tmp); }); @@ -1642,7 +1642,7 @@ function getPieTextMaxLength(series, config, context, opts) { : util.toFixed(item._proportion_ * 100) + "%"; maxLength = Math.max( maxLength, - measureText(text, item.textSize * opts.pix || config.fontSize, context) + measureText(text, item.textSize * opts.pix || config.fontSize, context), ); } return maxLength; @@ -1665,7 +1665,7 @@ function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { seriesGap = Math.min(seriesGap, eachSpacing / columnLen); categoryGap = Math.min(categoryGap, eachSpacing / columnLen); item.width = Math.ceil( - (eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen + (eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen, ); if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) { item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix); @@ -1693,7 +1693,7 @@ function fixBarData(points, eachSpacing, columnLen, index, config, opts) { seriesGap = Math.min(seriesGap, eachSpacing / columnLen); categoryGap = Math.min(categoryGap, eachSpacing / columnLen); item.width = Math.ceil( - (eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen + (eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen, ); if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); @@ -1890,7 +1890,7 @@ function getLineDataPoints( opts, config, lineOption, - process + process, ) { var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; var boundaryGap = opts.xAxis.boundaryGap; @@ -1949,7 +1949,7 @@ function getColumnDataPoints( opts, config, zeroPoints, - process + process, ) { var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; var points = []; @@ -1992,7 +1992,7 @@ function getMountDataPoints( eachSpacing, opts, mountOption, - zeroPoints + zeroPoints, ) { var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; var points = []; @@ -2054,7 +2054,7 @@ function getStackDataPoints( opts, config, seriesIndex, - stackSeries + stackSeries, ) { var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; var points = []; @@ -2103,7 +2103,7 @@ function getBarStackDataPoints( opts, config, seriesIndex, - stackSeries + stackSeries, ) { var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; var points = []; @@ -2213,7 +2213,7 @@ function calYAxisData(series, opts, config, context) { { type: "", }, - opts.extra.column + opts.extra.column, ); //如果是多Y轴,重新计算 var YLength = opts.yAxis.data.length; @@ -2262,7 +2262,7 @@ function calYAxisData(series, opts, config, context) { items = yData.formatter(items, index, opts); yAxisWidthArr[i].width = Math.max( yAxisWidthArr[i].width, - measureText(items, yAxisFontSizes, context) + 5 + measureText(items, yAxisFontSizes, context) + 5, ); return items; }); @@ -2300,7 +2300,7 @@ function calYAxisData(series, opts, config, context) { item = opts.yAxis.formatter(item, index, opts); yAxisWidthArr[0].width = Math.max( yAxisWidthArr[0].width, - measureText(item, yAxisFontSize, context) + 5 + measureText(item, yAxisFontSize, context) + 5, ); return item; }); @@ -2730,7 +2730,7 @@ function drawRadarLabel(angleList, radius, centerPosition, opts, config, context radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, - false + false, ); context.closePath(); context.fill(); @@ -2902,8 +2902,8 @@ function drawToolTipSplitLine(offsetX, opts, config, context) { context.setFillStyle( hexToRgb( toolTipOption.labelBgColor || config.toolTipBackground, - toolTipOption.labelBgOpacity || config.toolTipOpacity - ) + toolTipOption.labelBgOpacity || config.toolTipOpacity, + ), ); context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); context.setLineWidth(1 * opts.pix); @@ -2911,7 +2911,7 @@ function drawToolTipSplitLine(offsetX, opts, config, context) { textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, - config.fontSize + 2 * toolTipOption.boxPadding * opts.pix + config.fontSize + 2 * toolTipOption.boxPadding * opts.pix, ); context.closePath(); context.stroke(); @@ -2922,7 +2922,7 @@ function drawToolTipSplitLine(offsetX, opts, config, context) { context.fillText( String(labelText), textX, - textY + toolTipOption.boxPadding * opts.pix + config.fontSize + textY + toolTipOption.boxPadding * opts.pix + config.fontSize, ); context.closePath(); context.stroke(); @@ -2937,7 +2937,7 @@ function drawMarkLine(opts, config, context) { dashLength: 4, data: [], }, - opts.extra.markLine + opts.extra.markLine, ); let startX = opts.area[3]; let endX = opts.width - opts.area[1]; @@ -2957,7 +2957,7 @@ function drawMarkLine(opts, config, context) { labelOffsetX: 0, labelOffsetY: 0, }, - points[i] + points[i], ); if (markLineOption.type == "dash") { context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); @@ -2995,7 +2995,7 @@ function drawMarkLine(opts, config, context) { context.fillText( String(labelText), textX, - bgStartY + fontSize + (item.labelPadding * opts.pix) / 2 + bgStartY + fontSize + (item.labelPadding * opts.pix) / 2, ); context.stroke(); context.setTextAlign("left"); @@ -3010,7 +3010,7 @@ function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoin gridType: "solid", dashLength: 4, }, - opts.extra.tooltip + opts.extra.tooltip, ); var startX = opts.area[3]; var endX = opts.width - opts.area[1]; @@ -3031,7 +3031,7 @@ function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoin opts.series, opts, config, - eachSpacing + eachSpacing, ); let widthArr = opts.chartData.yAxisData.yAxisWidth; let tStartLeft = opts.area[3]; @@ -3054,8 +3054,8 @@ function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoin context.setFillStyle( hexToRgb( toolTipOption.labelBgColor || config.toolTipBackground, - toolTipOption.labelBgOpacity || config.toolTipOpacity - ) + toolTipOption.labelBgOpacity || config.toolTipOpacity, + ), ); context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); context.setLineWidth(1 * opts.pix); @@ -3063,7 +3063,7 @@ function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoin bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, - config.fontSize + 2 * boxPadding + config.fontSize + 2 * boxPadding, ); context.closePath(); context.stroke(); @@ -3091,7 +3091,7 @@ function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { activeBgOpacity: 0.08, activeWidth: eachSpacing, }, - opts.extra.column + opts.extra.column, ); toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth; @@ -3103,7 +3103,7 @@ function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, - endY - startY + endY - startY, ); context.closePath(); context.fill(); @@ -3117,7 +3117,7 @@ function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { activeBgColor: "#000000", activeBgOpacity: 0.08, }, - opts.extra.bar + opts.extra.bar, ); var startX = opts.area[3]; var endX = opts.width - opts.area[1]; @@ -3150,7 +3150,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis legendShape: "auto", splitLine: true, }, - opts.extra.tooltip + opts.extra.tooltip, ); if (toolTipOption.showCategory == true && opts.categories) { textList.unshift({ text: opts.categories[opts.tooltip.index], color: null }); @@ -3182,7 +3182,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis x: 0, y: 0, }, - offset + offset, ); offset.y -= 8 * opts.pix; var textWidth = textList.map(function (item) { @@ -3233,7 +3233,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, 0, Math.PI / 2, - false + false, ); context.arc( offset.x - arrowWidth - Math.round(toolTipWidth) + radius, @@ -3241,7 +3241,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, Math.PI / 2, Math.PI, - false + false, ); context.arc( offset.x - arrowWidth - Math.round(toolTipWidth) + radius, @@ -3249,7 +3249,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, -Math.PI, -Math.PI / 2, - false + false, ); context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false); if (toolTipOption.showArrow) { @@ -3267,7 +3267,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, -Math.PI, -Math.PI / 2, - false + false, ); context.arc( offset.x + arrowWidth + Math.round(toolTipWidth) - radius, @@ -3275,7 +3275,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, -Math.PI / 2, 0, - false + false, ); context.arc( offset.x + arrowWidth + Math.round(toolTipWidth) - radius, @@ -3283,7 +3283,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, 0, Math.PI / 2, - false + false, ); context.arc( offset.x + arrowWidth + radius, @@ -3291,7 +3291,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis radius, Math.PI / 2, Math.PI, - false + false, ); if (toolTipOption.showArrow) { context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); @@ -3321,7 +3321,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, - 4 * opts.pix + 4 * opts.pix, ); break; case "triangle": @@ -3344,7 +3344,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis startY + 0.5 * legendWidth, 5 * opts.pix, 0, - 2 * Math.PI + 2 * Math.PI, ); break; case "rect": @@ -3353,7 +3353,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); break; case "square": @@ -3362,7 +3362,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); break; default: @@ -3371,7 +3371,7 @@ function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxis startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); } context.closePath(); @@ -3420,7 +3420,7 @@ function drawColumnDataPoints(series, opts, config, context) { colorStop: 0, labelPosition: "outside", }, - opts.extra.column + opts.extra.column, ); let calPoints = []; context.save(); @@ -3438,7 +3438,7 @@ function drawColumnDataPoints(series, opts, config, context) { columnOption.linearType, columnOption.customColor, series, - config + config, ); series.forEach(function (eachSeries, seriesIndex) { let ranges, minRange, maxRange; @@ -3463,7 +3463,7 @@ function drawColumnDataPoints(series, opts, config, context) { opts, config, zeroPoints, - process + process, ); var tooltipPoints = getStackDataPoints( data, @@ -3475,7 +3475,7 @@ function drawColumnDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); calPoints.push(tooltipPoints); points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); @@ -3499,15 +3499,15 @@ function drawColumnDataPoints(series, opts, config, context) { 0, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop( columnOption.colorStop, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -3570,7 +3570,7 @@ function drawColumnDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); calPoints.push(points); points = fixColumeStackData( @@ -3580,7 +3580,7 @@ function drawColumnDataPoints(series, opts, config, context) { seriesIndex, config, opts, - series + series, ); for (let i = 0; i < points.length; i++) { let item = points[i]; @@ -3611,7 +3611,7 @@ function drawColumnDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); calPoints.push(points); points = fixColumeMeterData( @@ -3621,7 +3621,7 @@ function drawColumnDataPoints(series, opts, config, context) { seriesIndex, config, opts, - columnOption.meterBorder + columnOption.meterBorder, ); for (let i = 0; i < points.length; i++) { let item = points[i]; @@ -3700,7 +3700,7 @@ function drawColumnDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); drawColumePointText(points, eachSeries, config, context, opts); @@ -3716,7 +3716,7 @@ function drawColumnDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); drawColumePointText(points, eachSeries, config, context, opts); break; @@ -3729,7 +3729,7 @@ function drawColumnDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); drawColumePointText(points, eachSeries, config, context, opts); break; @@ -3762,7 +3762,7 @@ function drawMountDataPoints(series, opts, config, context) { customColor: [], colorStop: 0, }, - opts.extra.mount + opts.extra.mount, ); mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio; mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio; @@ -3779,7 +3779,7 @@ function drawMountDataPoints(series, opts, config, context) { mountOption.linearType, mountOption.customColor, series, - config + config, ); let ranges, minRange, maxRange; ranges = [].concat(opts.chartData.yAxisData.ranges[0]); @@ -3800,7 +3800,7 @@ function drawMountDataPoints(series, opts, config, context) { opts, mountOption, zeroPoints, - process + process, ); switch (mountOption.type) { case "bar": @@ -3821,11 +3821,11 @@ function drawMountDataPoints(series, opts, config, context) { } else { grd.addColorStop( 0, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop( mountOption.colorStop, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -3896,11 +3896,11 @@ function drawMountDataPoints(series, opts, config, context) { } else { grd.addColorStop( 0, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop( mountOption.colorStop, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -3937,11 +3937,11 @@ function drawMountDataPoints(series, opts, config, context) { } else { grd.addColorStop( 0, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop( mountOption.colorStop, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -3954,7 +3954,7 @@ function drawMountDataPoints(series, opts, config, context) { item.x - item.width / 4, item.y, item.x, - item.y + item.y, ); context.bezierCurveTo( item.x + item.width / 4, @@ -3962,7 +3962,7 @@ function drawMountDataPoints(series, opts, config, context) { item.x + item.width / 4, zeroPoints, startX + item.width, - zeroPoints + zeroPoints, ); context.setStrokeStyle(strokeColor); context.setFillStyle(fillColor); @@ -3992,11 +3992,11 @@ function drawMountDataPoints(series, opts, config, context) { } else { grd.addColorStop( 0, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop( mountOption.colorStop, - hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity) + hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -4008,7 +4008,7 @@ function drawMountDataPoints(series, opts, config, context) { item.x + 0, zeroPoints - height / 4, startX + item.width, - zeroPoints + zeroPoints, ); context.setStrokeStyle(strokeColor); context.setFillStyle(fillColor); @@ -4036,7 +4036,7 @@ function drawMountDataPoints(series, opts, config, context) { opts, mountOption, zeroPoints, - process + process, ); drawMountPointText(points, series, config, context, opts, zeroPoints); } @@ -4070,7 +4070,7 @@ function drawBarDataPoints(series, opts, config, context) { customColor: [], colorStop: 0, }, - opts.extra.bar + opts.extra.bar, ); let calPoints = []; context.save(); @@ -4083,7 +4083,7 @@ function drawBarDataPoints(series, opts, config, context) { columnOption.linearType, columnOption.customColor, series, - config + config, ); series.forEach(function (eachSeries, seriesIndex) { let ranges, minRange, maxRange; @@ -4101,7 +4101,7 @@ function drawBarDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); var tooltipPoints = getBarStackDataPoints( data, @@ -4113,7 +4113,7 @@ function drawBarDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); calPoints.push(tooltipPoints); points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); @@ -4139,15 +4139,15 @@ function drawBarDataPoints(series, opts, config, context) { 0, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop( columnOption.colorStop, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -4208,7 +4208,7 @@ function drawBarDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); calPoints.push(points); points = fixBarStackData( @@ -4218,7 +4218,7 @@ function drawBarDataPoints(series, opts, config, context) { seriesIndex, config, opts, - series + series, ); for (let i = 0; i < points.length; i++) { let item = points[i]; @@ -4254,7 +4254,7 @@ function drawBarDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); drawBarPointText(points, eachSeries, config, context, opts); @@ -4270,7 +4270,7 @@ function drawBarDataPoints(series, opts, config, context) { config, seriesIndex, series, - process + process, ); drawBarPointText(points, eachSeries, config, context, opts); break; @@ -4292,7 +4292,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { color: {}, average: {}, }, - opts.extra.candle + opts.extra.candle, ); candleOption.color = assign( {}, @@ -4302,7 +4302,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { downLine: "#2fc25b", downFill: "#2fc25b", }, - candleOption.color + candleOption.color, ); candleOption.average = assign( {}, @@ -4312,7 +4312,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { day: [], color: config.color, }, - candleOption.average + candleOption.average, ); opts.extra.candle = candleOption; let xAxisData = opts.chartData.xAxisData, @@ -4348,7 +4348,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { eachSpacing, opts, config, - process + process, ); var splitPointList = splitPoints(points, eachSeries); for (let i = 0; i < splitPointList.length; i++) { @@ -4376,7 +4376,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -4402,7 +4402,7 @@ function drawCandleDataPoints(series, seriesMA, opts, config, context) { eachSpacing, opts, config, - process + process, ); calPoints.push(points); var splitPointList = splitPoints(points, eachSeries); @@ -4468,7 +4468,7 @@ function drawAreaDataPoints(series, opts, config, context) { gradient: false, activeType: "none", }, - opts.extra.area + opts.extra.area, ); let xAxisData = opts.chartData.xAxisData, xAxisPoints = xAxisData.xAxisPoints, @@ -4497,7 +4497,7 @@ function drawAreaDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); calPoints.push(points); let splitPointList = splitPoints(points, eachSeries); @@ -4535,7 +4535,7 @@ function drawAreaDataPoints(series, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -4609,7 +4609,7 @@ function drawAreaDataPoints(series, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -4656,7 +4656,7 @@ function drawAreaDataPoints(series, opts, config, context) { context, opts, areaOption, - seriesIndex + seriesIndex, ); }); @@ -4675,7 +4675,7 @@ function drawAreaDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); drawPointText(points, eachSeries, config, context, opts); }); @@ -4695,7 +4695,7 @@ function drawScatterDataPoints(series, opts, config, context) { { type: "circle", }, - opts.extra.scatter + opts.extra.scatter, ); let xAxisData = opts.chartData.xAxisData, xAxisPoints = xAxisData.xAxisPoints, @@ -4723,7 +4723,7 @@ function drawScatterDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); context.beginPath(); context.setStrokeStyle(eachSeries.color); @@ -4785,7 +4785,7 @@ function drawScatterDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); drawPointText(points, eachSeries, config, context, opts); }); @@ -4806,7 +4806,7 @@ function drawBubbleDataPoints(series, opts, config, context) { opacity: 1, border: 2, }, - opts.extra.bubble + opts.extra.bubble, ); let xAxisData = opts.chartData.xAxisData, xAxisPoints = xAxisData.xAxisPoints, @@ -4834,7 +4834,7 @@ function drawBubbleDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); context.beginPath(); context.setStrokeStyle(eachSeries.color); @@ -4882,7 +4882,7 @@ function drawLineDataPoints(series, opts, config, context) { onShadow: false, animation: "vertical", }, - opts.extra.line + opts.extra.line, ); lineOption.width *= opts.pix; let xAxisData = opts.chartData.xAxisData, @@ -4918,7 +4918,7 @@ function drawLineDataPoints(series, opts, config, context) { opts, config, lineOption, - process + process, ); calPoints.push(points); var splitPointList = splitPoints(points, eachSeries); @@ -4938,7 +4938,7 @@ function drawLineDataPoints(series, opts, config, context) { opts.chartData.xAxisData.startX, opts.height / 2, opts.chartData.xAxisData.endX, - opts.height / 2 + opts.height / 2, ); for (var i = 0; i < eachSeries.linearColor.length; i++) { grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1)); @@ -4951,7 +4951,7 @@ function drawLineDataPoints(series, opts, config, context) { eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], - eachSeries.setShadow[3] + eachSeries.setShadow[3], ); } else { context.setShadow(0, 0, 0, "rgba(0,0,0,0)"); @@ -4979,7 +4979,7 @@ function drawLineDataPoints(series, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -5034,7 +5034,7 @@ function drawLineDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); drawPointText(points, eachSeries, config, context, opts); }); @@ -5064,7 +5064,7 @@ function drawMixDataPoints(series, opts, config, context) { customColor: [], colorStop: 0, }, - opts.extra.mix.column + opts.extra.mix.column, ); let areaOption = assign( {}, @@ -5072,14 +5072,14 @@ function drawMixDataPoints(series, opts, config, context) { opacity: 0.2, gradient: false, }, - opts.extra.mix.area + opts.extra.mix.area, ); let lineOption = assign( {}, { width: 2, }, - opts.extra.mix.line + opts.extra.mix.line, ); let endY = opts.height - opts.area[2]; let calPoints = []; @@ -5106,7 +5106,7 @@ function drawMixDataPoints(series, opts, config, context) { columnOption.linearType, columnOption.customColor, series, - config + config, ); series.forEach(function (eachSeries, seriesIndex) { let ranges, minRange, maxRange; @@ -5122,7 +5122,7 @@ function drawMixDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); calPoints.push(points); // 绘制柱状数据图 @@ -5141,7 +5141,7 @@ function drawMixDataPoints(series, opts, config, context) { startX, item.y, startX, - opts.height - opts.area[2] + opts.height - opts.area[2], ); //透明渐变 if (columnOption.linearType == "opacity") { @@ -5152,15 +5152,15 @@ function drawMixDataPoints(series, opts, config, context) { 0, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop( columnOption.colorStop, hexToRgb( columnOption.customColor[eachSeries.linearIndex], - columnOption.linearOpacity - ) + columnOption.linearOpacity, + ), ); grd.addColorStop(1, hexToRgb(fillColor, 1)); } @@ -5222,7 +5222,7 @@ function drawMixDataPoints(series, opts, config, context) { 0, opts.area[0], 0, - opts.height - opts.area[2] + opts.height - opts.area[2], ); gradient.addColorStop("0", hexToRgb(eachSeries.color, areaOption.opacity)); gradient.addColorStop("1.0", hexToRgb("#FFFFFF", 0.1)); @@ -5251,7 +5251,7 @@ function drawMixDataPoints(series, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -5315,7 +5315,7 @@ function drawMixDataPoints(series, opts, config, context) { ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, - item.y + item.y, ); } } @@ -5361,7 +5361,7 @@ function drawMixDataPoints(series, opts, config, context) { eachSpacing, opts, config, - process + process, ); if (eachSeries.type !== "column") { drawPointText(points, eachSeries, config, context, opts); @@ -5407,7 +5407,7 @@ function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoi config, context, eachSpacing, - xAxisPoints + xAxisPoints, ); } context.restore(); @@ -5518,7 +5518,7 @@ function drawXAxis(categories, opts, config, context) { //如果设置X轴密度 if (opts.xAxis.itemCount) { maxXAxisListLength = Math.ceil( - (categories.length / opts.xAxis.itemCount) * opts.xAxis.labelCount + (categories.length / opts.xAxis.itemCount) * opts.xAxis.labelCount, ); } else { maxXAxisListLength = opts.xAxis.labelCount; @@ -5567,7 +5567,7 @@ function drawXAxis(categories, opts, config, context) { startY + opts.xAxis.marginTop * opts.pix + ((opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix) / 2 + - opts.xAxis.fontSize * opts.pix + opts.xAxis.fontSize * opts.pix, ); context.closePath(); context.stroke(); @@ -5633,7 +5633,7 @@ function drawXAxis(categories, opts, config, context) { opts.area[2] + opts.xAxis.marginTop * opts.pix + ((opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix) / 2 + - (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix, ); context.closePath(); context.stroke(); @@ -5739,7 +5739,7 @@ function drawYAxis(series, opts, config, context) { points.push( opts.area[0] + spacingValid / yData.categories.length / 2 + - (spacingValid / yData.categories.length) * i + (spacingValid / yData.categories.length) * i, ); } } else { @@ -5862,7 +5862,7 @@ function drawYAxis(series, opts, config, context) { tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), - opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix + opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix, ); } else if (yAxisWidth.position == "right") { context.fillText( @@ -5870,7 +5870,7 @@ function drawYAxis(series, opts, config, context) { tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), - opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix + opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix, ); } else if (yAxisWidth.position == "center") { context.fillText( @@ -5878,7 +5878,7 @@ function drawYAxis(series, opts, config, context) { tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), - opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix + opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix, ); } context.closePath(); @@ -5963,7 +5963,7 @@ function drawLegend(series, opts, config, context, chartData) { startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, - 4 * opts.pix + 4 * opts.pix, ); break; case "triangle": @@ -5986,7 +5986,7 @@ function drawLegend(series, opts, config, context, chartData) { startY + 0.5 * lineHeight, 5 * opts.pix, 0, - 2 * Math.PI + 2 * Math.PI, ); break; case "rect": @@ -5995,7 +5995,7 @@ function drawLegend(series, opts, config, context, chartData) { startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); break; case "square": @@ -6004,7 +6004,7 @@ function drawLegend(series, opts, config, context, chartData) { startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); break; case "none": @@ -6015,7 +6015,7 @@ function drawLegend(series, opts, config, context, chartData) { startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, - 10 * opts.pix + 10 * opts.pix, ); } context.closePath(); @@ -6060,7 +6060,7 @@ function drawPieDataPoints(series, opts, config, context) { linearType: "none", customColor: [], }, - opts.type == "pie" ? opts.extra.pie : opts.extra.ring + opts.type == "pie" ? opts.extra.pie : opts.extra.ring, ); var centerPosition = { x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, @@ -6077,7 +6077,7 @@ function drawPieDataPoints(series, opts, config, context) { config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - - config.pieChartTextPadding + config.pieChartTextPadding, ); radius = radius < 10 ? 10 : radius; if (pieOption.customRadius > 0) { @@ -6089,7 +6089,7 @@ function drawPieDataPoints(series, opts, config, context) { pieOption.linearType, pieOption.customColor, series, - config + config, ); series = series.map(function (eachSeries) { eachSeries._start_ += (pieOption.offsetAngle * Math.PI) / 180; @@ -6106,7 +6106,7 @@ function drawPieDataPoints(series, opts, config, context) { centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, - eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI + eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI, ); context.closePath(); context.fill(); @@ -6123,7 +6123,7 @@ function drawPieDataPoints(series, opts, config, context) { grd = context.createCircularGradient( centerPosition.x, centerPosition.y, - eachSeries._radius_ + eachSeries._radius_, ); } else { grd = context.createRadialGradient( @@ -6132,7 +6132,7 @@ function drawPieDataPoints(series, opts, config, context) { 0, centerPosition.x, centerPosition.y, - eachSeries._radius_ + eachSeries._radius_, ); } grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1)); @@ -6146,7 +6146,7 @@ function drawPieDataPoints(series, opts, config, context) { centerPosition.y, eachSeries._radius_, eachSeries._start_, - eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI + eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI, ); context.closePath(); context.fill(); @@ -6195,7 +6195,7 @@ function drawRoseDataPoints(series, opts, config, context) { linearType: "none", customColor: [], }, - opts.extra.rose + opts.extra.rose, ); if (config.pieChartLinePadding == 0) { config.pieChartLinePadding = roseOption.activeRadius * opts.pix; @@ -6211,7 +6211,7 @@ function drawRoseDataPoints(series, opts, config, context) { config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - - config.pieChartTextPadding + config.pieChartTextPadding, ); radius = radius < 10 ? 10 : radius; var minRadius = roseOption.minRadius || radius * 0.5; @@ -6224,7 +6224,7 @@ function drawRoseDataPoints(series, opts, config, context) { roseOption.linearType, roseOption.customColor, series, - config + config, ); series = series.map(function (eachSeries) { eachSeries._start_ += ((roseOption.offsetAngle || 0) * Math.PI) / 180; @@ -6241,7 +6241,7 @@ function drawRoseDataPoints(series, opts, config, context) { centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, - eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI + eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI, ); context.closePath(); context.fill(); @@ -6258,7 +6258,7 @@ function drawRoseDataPoints(series, opts, config, context) { grd = context.createCircularGradient( centerPosition.x, centerPosition.y, - eachSeries._radius_ + eachSeries._radius_, ); } else { grd = context.createRadialGradient( @@ -6267,7 +6267,7 @@ function drawRoseDataPoints(series, opts, config, context) { 0, centerPosition.x, centerPosition.y, - eachSeries._radius_ + eachSeries._radius_, ); } grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1)); @@ -6281,7 +6281,7 @@ function drawRoseDataPoints(series, opts, config, context) { centerPosition.y, eachSeries._radius_, eachSeries._start_, - eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI + eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI, ); context.closePath(); context.fill(); @@ -6315,7 +6315,7 @@ function drawArcbarDataPoints(series, opts, config, context) { linearType: "none", customColor: [], }, - opts.extra.arcbar + opts.extra.arcbar, ); series = getArcbarDataPoints(series, arcbarOption, process); var centerPosition; @@ -6343,7 +6343,7 @@ function drawArcbarDataPoints(series, opts, config, context) { arcbarOption.linearType, arcbarOption.customColor, series, - config + config, ); for (let i = 0; i < series.length; i++) { @@ -6360,7 +6360,7 @@ function drawArcbarDataPoints(series, opts, config, context) { radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, - arcbarOption.direction == "ccw" + arcbarOption.direction == "ccw", ); } else { context.arc( @@ -6369,7 +6369,7 @@ function drawArcbarDataPoints(series, opts, config, context) { radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, - arcbarOption.direction == "ccw" + arcbarOption.direction == "ccw", ); } context.stroke(); @@ -6380,7 +6380,7 @@ function drawArcbarDataPoints(series, opts, config, context) { centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, - centerPosition.y + centerPosition.y, ); grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1)); grd.addColorStop(0, hexToRgb(eachSeries.color, 1)); @@ -6396,7 +6396,7 @@ function drawArcbarDataPoints(series, opts, config, context) { radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, - arcbarOption.direction == "ccw" + arcbarOption.direction == "ccw", ); context.stroke(); } @@ -6431,7 +6431,7 @@ function drawGaugeDataPoints(categories, series, opts, config, context) { color: "auto", }, }, - opts.extra.gauge + opts.extra.gauge, ); if (gaugeOption.oldAngle == undefined) { gaugeOption.oldAngle = gaugeOption.startAngle; @@ -6460,7 +6460,7 @@ function drawGaugeDataPoints(categories, series, opts, config, context) { centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, - centerPosition.y + pieRadius + centerPosition.y + pieRadius, ); //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径) gradient.addColorStop("0", hexToRgb(series[0].color, 0.3)); @@ -6479,7 +6479,7 @@ function drawGaugeDataPoints(categories, series, opts, config, context) { innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, - false + false, ); context.stroke(); //## 第二步画刻度线 @@ -6526,7 +6526,7 @@ function drawGaugeDataPoints(categories, series, opts, config, context) { innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, - false + false, ); context.stroke(); //## 第四步画指针 @@ -6569,7 +6569,7 @@ function drawGaugeDataPoints(categories, series, opts, config, context) { radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, - false + false, ); context.stroke(); } @@ -6686,7 +6686,7 @@ function drawRadarDataPoints(series, opts, config, context) { linearType: "none", customColor: [], }, - opts.extra.radar + opts.extra.radar, ); var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); var centerPosition = { @@ -6699,7 +6699,7 @@ function drawRadarDataPoints(series, opts, config, context) { xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), - yr - config.radarLabelTextMargin + yr - config.radarLabelTextMargin, ); radius -= config.radarLabelTextMargin * opts.pix; radius = radius < 10 ? 10 : radius; @@ -6712,7 +6712,7 @@ function drawRadarDataPoints(series, opts, config, context) { var pos = convertCoordinateOrigin( radius * Math.cos(angle), radius * Math.sin(angle), - centerPosition + centerPosition, ); context.moveTo(centerPosition.x, centerPosition.y); if (index % radarOption.gridEval == 0) { @@ -6733,7 +6733,7 @@ function drawRadarDataPoints(series, opts, config, context) { var pos = convertCoordinateOrigin( (radius / radarOption.gridCount) * i * Math.cos(angle), (radius / radarOption.gridCount) * i * Math.sin(angle), - centerPosition + centerPosition, ); if (index === 0) { startPos = pos; @@ -6747,7 +6747,7 @@ function drawRadarDataPoints(series, opts, config, context) { var pos = convertCoordinateOrigin( (radius / radarOption.gridCount) * i * Math.cos(1.5), (radius / radarOption.gridCount) * i * Math.sin(1.5), - centerPosition + centerPosition, ); context.arc( centerPosition.x, @@ -6755,7 +6755,7 @@ function drawRadarDataPoints(series, opts, config, context) { centerPosition.y - pos.y, 0, 2 * Math.PI, - false + false, ); } context.stroke(); @@ -6768,7 +6768,7 @@ function drawRadarDataPoints(series, opts, config, context) { radarOption.linearType, radarOption.customColor, series, - config + config, ); var radarDataPoints = getRadarDataPoints( coordinateAngle, @@ -6776,7 +6776,7 @@ function drawRadarDataPoints(series, opts, config, context) { radius, series, opts, - process + process, ); radarDataPoints.forEach(function (eachSeries, seriesIndex) { // 绘制区域数据 @@ -6796,12 +6796,12 @@ function drawRadarDataPoints(series, opts, config, context) { 0, centerPosition.x, centerPosition.y, - radius + radius, ); } grd.addColorStop( 0, - hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity) + hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity), ); grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity)); fillcolor = grd; @@ -6842,7 +6842,7 @@ function drawRadarDataPoints(series, opts, config, context) { context.fillText( String(label), centerPosition.x + 3 * opts.pix, - centerPosition.y - i * stepLength + fontSize / 2 + centerPosition.y - i * stepLength + fontSize / 2, ); } } @@ -7026,7 +7026,7 @@ function drawMapDataPoints(series, opts, config, context) { activeFillColor: "#facc14", activeFillOpacity: 1, }, - opts.extra.map + opts.extra.map, ); var coords, point; var data = series; @@ -7089,7 +7089,7 @@ function drawMapDataPoints(series, opts, config, context) { if (mapOption.mercator) { centerPoint = lonlat2mercator( data[i].properties.centroid[0], - data[i].properties.centroid[1] + data[i].properties.centroid[1], ); } point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset); @@ -7110,7 +7110,7 @@ function drawMapDataPoints(series, opts, config, context) { context.fillText( text, point.x - measureText(text, fontSize, context) / 2, - point.y + fontSize / 2 + point.y + fontSize / 2, ); context.closePath(); context.stroke(); @@ -7140,7 +7140,7 @@ function normalInt(min, max, iter) { return i + j; }) / iter) * - (max - min) + (max - min), ) + min ); } @@ -7280,7 +7280,7 @@ function drawWordCloudDataPoints(series, opts, config, context) { type: "normal", autoColors: true, }, - opts.extra.word + opts.extra.word, ); if (!opts.chartData.wordCloudData) { opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context); @@ -7311,20 +7311,20 @@ function drawWordCloudDataPoints(series, opts, config, context) { context.strokeText( text, (points[i].areav[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process + (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process, ); } else { context.fillText( text, (points[i].areav[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process + (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process, ); } } else { context.fillText( text, (points[i].areav[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process + (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process, ); } } @@ -7335,20 +7335,20 @@ function drawWordCloudDataPoints(series, opts, config, context) { context.strokeText( text, (points[i].area[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].area[1] + 5 + tHeight - opts.height / 2) * process + (points[i].area[1] + 5 + tHeight - opts.height / 2) * process, ); } else { context.fillText( text, (points[i].area[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].area[1] + 5 + tHeight - opts.height / 2) * process + (points[i].area[1] + 5 + tHeight - opts.height / 2) * process, ); } } else { context.fillText( text, (points[i].area[0] + 5 - opts.width / 2) * process - (tWidth * (1 - process)) / 2, - (points[i].area[1] + 5 + tHeight - opts.height / 2) * process + (points[i].area[1] + 5 + tHeight - opts.height / 2) * process, ); } } @@ -7376,7 +7376,7 @@ function drawFunnelDataPoints(series, opts, config, context) { linearType: "none", customColor: [], }, - opts.extra.funnel + opts.extra.funnel, ); let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length; let centerPosition = { @@ -7386,7 +7386,7 @@ function drawFunnelDataPoints(series, opts, config, context) { let activeWidth = funnelOption.activeWidth * opts.pix; let radius = Math.min( (opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, - (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth + (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth, ); let seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process); context.save(); @@ -7395,7 +7395,7 @@ function drawFunnelDataPoints(series, opts, config, context) { funnelOption.linearType, funnelOption.customColor, series, - config + config, ); if (funnelOption.type == "pyramid") { for (let i = 0; i < seriesNew.length; i++) { @@ -7428,12 +7428,12 @@ function drawFunnelDataPoints(series, opts, config, context) { seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, - -eachSpacing + -eachSpacing, ); grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); grd.addColorStop( 0.5, - hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity) + hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity), ); grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); fillColor = grd; @@ -7478,12 +7478,12 @@ function drawFunnelDataPoints(series, opts, config, context) { seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, - -eachSpacing + -eachSpacing, ); grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); grd.addColorStop( 0.5, - hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity) + hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity), ); grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); fillColor = grd; @@ -7535,12 +7535,12 @@ function drawFunnelDataPoints(series, opts, config, context) { seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, - -eachSpacing + -eachSpacing, ); grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); grd.addColorStop( 0.5, - hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity) + hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity), ); grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); fillColor = grd; @@ -7587,12 +7587,12 @@ function drawFunnelDataPoints(series, opts, config, context) { seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, - -eachSpacing + -eachSpacing, ); grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); grd.addColorStop( 0.5, - hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity) + hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity), ); grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); fillColor = grd; @@ -7623,7 +7623,7 @@ function drawFunnelDataPoints(series, opts, config, context) { eachSpacing, funnelOption.labelAlign, activeWidth, - centerPosition + centerPosition, ); } if (process === 1) { @@ -7634,7 +7634,7 @@ function drawFunnelDataPoints(series, opts, config, context) { eachSpacing, funnelOption.labelAlign, activeWidth, - centerPosition + centerPosition, ); } return { @@ -7651,7 +7651,7 @@ function drawFunnelText( eachSpacing, labelAlign, activeWidth, - centerPosition + centerPosition, ) { for (let i = 0; i < series.length; i++) { let item = series[i]; @@ -7721,7 +7721,7 @@ function drawFunnelText( context.fillText( text, endX - 5 - measureText(text, fontSize, context), - startY + fontSize / 2 - 2 + startY + fontSize / 2 - 2, ); context.closePath(); context.stroke(); @@ -7737,7 +7737,7 @@ function drawFunnelCenterText( eachSpacing, labelAlign, activeWidth, - centerPosition + centerPosition, ) { for (let i = 0; i < series.length; i++) { let item = series[i]; @@ -7751,7 +7751,7 @@ function drawFunnelCenterText( context.fillText( item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, - startY + fontSize / 2 - 2 + startY + fontSize / 2 - 2, ); context.closePath(); context.stroke(); @@ -7927,7 +7927,7 @@ function drawCharts(type, opts, config, context) { maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix - : config.fontSize + : config.fontSize, ); } opts.area[0] += maxTitleHeight; @@ -7970,7 +7970,7 @@ function drawCharts(type, opts, config, context) { opts, config, opts.chartData.xAxisData.eachSpacing, - context + context, ), xAxisHeight = _calCategoriesData.xAxisHeight, angle = _calCategoriesData.angle; @@ -7993,7 +7993,7 @@ function drawCharts(type, opts, config, context) { opts, config, opts.chartData.xAxisData.eachSpacing, - context + context, ), xAxisHeight = _calCategoriesData.xAxisHeight, angle = _calCategoriesData.angle; @@ -8125,7 +8125,7 @@ function drawCharts(type, opts, config, context) { opts, config, context, - process + process, ), xAxisPoints = _drawScatterDataPoints.xAxisPoints, calPoints = _drawScatterDataPoints.calPoints, @@ -8440,7 +8440,7 @@ function drawCharts(type, opts, config, context) { opts, config, context, - process + process, ); drawCanvas(opts, context); }, @@ -8466,7 +8466,7 @@ function drawCharts(type, opts, config, context) { opts, config, context, - process + process, ), xAxisPoints = _drawCandleDataPoints.xAxisPoints, calPoints = _drawCandleDataPoints.calPoints, @@ -8549,7 +8549,7 @@ var uCharts = function uCharts(opts) { padding: 10, fontColor: "#666666", }, - opts.yAxis + opts.yAxis, ); opts.xAxis = assign( {}, @@ -8575,7 +8575,7 @@ var uCharts = function uCharts(opts) { titleOffsetX: 0, titleFontColor: "#666666", }, - opts.xAxis + opts.xAxis, ); opts.xAxis.scrollPosition = opts.xAxis.scrollAlign; opts.legend = assign( @@ -8596,7 +8596,7 @@ var uCharts = function uCharts(opts) { formatter: {}, hiddenColor: "#CECECE", }, - opts.legend + opts.legend, ); opts.extra = assign( { @@ -8604,7 +8604,7 @@ var uCharts = function uCharts(opts) { legendShape: "auto", }, }, - opts.extra + opts.extra, ); opts.rotate = opts.rotate ? true : false; opts.animation = opts.animation ? true : false; @@ -8651,7 +8651,7 @@ var uCharts = function uCharts(opts) { config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix; if (!opts.context) { throw new Error( - "[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!" + "[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!", ); } this.context = opts.context; @@ -8894,7 +8894,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { y: _touches$.y, }, this.opts.chartData.pieData, - this.opts + this.opts, ); } else if (this.opts.type === "rose") { return findRoseChartCurrentIndex( @@ -8903,7 +8903,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { y: _touches$.y, }, this.opts.chartData.pieData, - this.opts + this.opts, ); } else if (this.opts.type === "radar") { return findRadarChartCurrentIndex( @@ -8912,7 +8912,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { y: _touches$.y, }, this.opts.chartData.radarData, - this.opts.categories.length + this.opts.categories.length, ); } else if (this.opts.type === "funnel") { return findFunnelChartCurrentIndex( @@ -8920,7 +8920,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { x: _touches$.x, y: _touches$.y, }, - this.opts.chartData.funnelData + this.opts.chartData.funnelData, ); } else if (this.opts.type === "map") { return findMapChartCurrentIndex( @@ -8928,7 +8928,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { x: _touches$.x, y: _touches$.y, }, - this.opts + this.opts, ); } else if (this.opts.type === "word") { return findWordChartCurrentIndex( @@ -8936,7 +8936,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { x: _touches$.x, y: _touches$.y, }, - this.opts.chartData.wordCloudData + this.opts.chartData.wordCloudData, ); } else if (this.opts.type === "bar") { return findBarChartCurrentIndex( @@ -8947,7 +8947,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { this.opts.chartData.calPoints, this.opts, this.config, - Math.abs(this.scrollOption.currentOffset) + Math.abs(this.scrollOption.currentOffset), ); } else { return findCurrentIndex( @@ -8958,7 +8958,7 @@ uCharts.prototype.getCurrentDataIndex = function (e) { this.opts.chartData.calPoints, this.opts, this.config, - Math.abs(this.scrollOption.currentOffset) + Math.abs(this.scrollOption.currentOffset), ); } } @@ -8979,7 +8979,7 @@ uCharts.prototype.getLegendDataIndex = function (e) { x: _touches$.x, y: _touches$.y, }, - this.opts.chartData.legendData + this.opts.chartData.legendData, ); } return -1; @@ -9044,7 +9044,7 @@ uCharts.prototype.showToolTip = function (e) { index, current.group, this.opts.categories, - option + option, ), textList = _getToolTipData.textList, offset = _getToolTipData.offset; @@ -9103,7 +9103,7 @@ uCharts.prototype.showToolTip = function (e) { index, current.group, this.opts.categories, - option + option, ), textList = _getToolTipData.textList, offset = _getToolTipData.offset; @@ -9134,7 +9134,7 @@ uCharts.prototype.showToolTip = function (e) { this.opts, index, this.opts.categories, - option + option, ), textList = _getMixToolTipData.textList, offset = _getMixToolTipData.offset; @@ -9167,7 +9167,7 @@ uCharts.prototype.showToolTip = function (e) { index, this.opts.categories, this.opts.extra.candle, - option + option, ), textList = _getToolTipData.textList, offset = _getToolTipData.offset; @@ -9367,7 +9367,7 @@ uCharts.prototype.scroll = function (e) { currentOffset + _distance, this.opts.chartData, this.config, - this.opts + this.opts, ); this.scrollOption.distance = _distance = validDistance - currentOffset; var opts = assign({}, this.opts, { diff --git a/src/composables/useCacheCleaner.ts b/src/composables/useCacheCleaner.ts index 20e9373..f52bb11 100644 --- a/src/composables/useCacheCleaner.ts +++ b/src/composables/useCacheCleaner.ts @@ -7,24 +7,32 @@ import { formatBytes } from "@/utils/format"; * 缓存体积统计与清理 * * 统计与清理的范围都是「保留名单之外的全部本地键」:登录态与主题偏好保留, - * 其余键(用户信息缓存等)一并删除。 + * 其余键(用户信息缓存等)一并删除 */ export function useCacheCleaner() { const toast = useToast(); - /** 缓存体积的展示文案,未统计完成前为「计算中...」 */ + // 缓存体积的展示文案,未统计完成前为「计算中...」 const usageText = ref("计算中..."); - /** 是否正在清理,用于展示遮罩并挡住重复触发 */ + // 可清理的字节数,业务判断用它而不是展示文案 + const usageBytes = ref(0); + // 体积读取是否失败,失败时不发起清理 + const usageFailed = ref(false); + // 是否正在清理,用于展示遮罩并挡住重复触发 const isClearing = ref(false); /** * 统计可清理的缓存体积 * - * 读取失败时展示「获取失败」,避免把异常状态当成 0B。 + * 读取失败时展示「获取失败」,避免把异常状态当成 0B */ async function loadUsage() { try { - usageText.value = formatBytes(Storage.getClearableBytes()); + const bytes = Storage.getClearableBytes(); + usageBytes.value = bytes; + usageText.value = formatBytes(bytes); + usageFailed.value = false; } catch { + usageFailed.value = true; usageText.value = "获取失败"; } } @@ -32,17 +40,17 @@ export function useCacheCleaner() { /** * 清理缓存并刷新体积 * - * 体积获取失败或无缓存时不发起删除,成功删除后才提示清理成功。 + * 体积获取失败或无缓存时不发起删除,成功删除后才提示清理成功 */ async function clearCache() { - if (usageText.value === "获取失败") { + if (usageFailed.value) { toast.info("获取缓存信息失败,请稍后重试"); return; } if (isClearing.value) { return; } - if (usageText.value === "0B") { + if (usageBytes.value === 0) { toast.info("暂无缓存需要清理"); return; } diff --git a/src/composables/useConfirmAction.ts b/src/composables/useConfirmAction.ts index 1fbd81b..2793791 100644 --- a/src/composables/useConfirmAction.ts +++ b/src/composables/useConfirmAction.ts @@ -1,9 +1,10 @@ import { useDialog, useToast } from "@wot-ui/ui"; +import { getErrorMessage } from "@/utils/error"; /** * 危险操作确认流程 * - * 确认弹窗 → 执行 → 成功提示,与操作菜单、表单弹窗等界面无关。 + * 确认弹窗 → 执行 → 结果提示,与操作菜单、表单弹窗等界面无关 */ export function useConfirmAction() { const toast = useToast(); @@ -12,20 +13,28 @@ export function useConfirmAction() { /** * 确认后执行操作 * - * 用户取消时静默结束;执行失败会抛出,由调用方统一提示。 + * 用户取消时静默结束;执行结果由本方法提示,调用方无需处理异常 * * @param options.msg - 确认弹窗的提示文案 * @param options.action - 确认后执行的操作 * @param options.title - 确认弹窗标题,默认「确认删除」 * @param options.successText - 成功提示文案,默认「删除成功」 + * @param options.errorText - 失败提示文案,默认「操作失败」 */ async function confirmAction(options: { msg: string; action: () => Promise; title?: string; successText?: string; + errorText?: string; }): Promise { - const { msg, action, title = "确认删除", successText = "删除成功" } = options; + const { + msg, + action, + title = "确认删除", + successText = "删除成功", + errorText = "操作失败", + } = options; try { await confirm({ title, msg, headerImage: "warning" }); @@ -34,8 +43,12 @@ export function useConfirmAction() { return; } - await action(); - toast.success(successText); + try { + await action(); + toast.success(successText); + } catch (error) { + toast.error(getErrorMessage(error, errorText)); + } } return { confirmAction }; diff --git a/src/composables/useCountdown.ts b/src/composables/useCountdown.ts index cfbc99e..5c97c22 100644 --- a/src/composables/useCountdown.ts +++ b/src/composables/useCountdown.ts @@ -3,20 +3,22 @@ import { ref, onUnmounted } from "vue"; /** * 倒计时 * - * 按截止时间计算剩余秒数,页面隐藏或切后台再回来仍保持准确。 + * 按截止时间计算剩余秒数,页面隐藏或切后台再回来仍保持准确 * * @param durationSeconds - 倒计时总秒数,默认 60 */ export function useCountdown(durationSeconds = 60) { - /** 剩余秒数,未开始时为 0 */ + // 剩余秒数,未开始时为 0 const remainingSeconds = ref(0); - /** 是否正在倒计时 */ + // 是否正在倒计时 const isRunning = ref(false); // 截止时间戳,tick 每次按它重算,避免定时器漂移累积 let deadline = 0; let timer: ReturnType | null = null; - // 按剩余时间刷新秒数,归零时自行停止 + /** + * 按截止时间更新剩余秒数,归零时停止计时 + */ function tick() { const remain = Math.ceil((deadline - Date.now()) / 1000); remainingSeconds.value = Math.max(0, remain); @@ -26,7 +28,7 @@ export function useCountdown(durationSeconds = 60) { /** * 开始倒计时 * - * 已在计时中重复调用会被忽略,不会重置截止时间。 + * 已在计时中重复调用会被忽略,不会重置截止时间 */ const start = () => { if (isRunning.value) return; @@ -37,7 +39,9 @@ export function useCountdown(durationSeconds = 60) { timer = setInterval(tick, 1000); }; - /** 停止倒计时并把剩余秒数清零 */ + /** + * 停止倒计时并把剩余秒数清零 + */ const stop = () => { if (timer) { clearInterval(timer); diff --git a/src/composables/useFormDialog.ts b/src/composables/useFormDialog.ts new file mode 100644 index 0000000..ed5be7a --- /dev/null +++ b/src/composables/useFormDialog.ts @@ -0,0 +1,109 @@ +import { reactive, ref, type Ref } from "vue"; +import { useToast } from "@wot-ui/ui"; +import type { WdFormRef } from "@/utils/form-schema"; +import { getErrorMessage } from "@/utils/error"; + +/** + * 表单弹窗依赖的表单引用、数据与接口 + */ +interface FormDialogOptions { + /** 表单组件引用,用于校验与重置 */ + formRef: Ref; + /** 表单数据,关闭时原地重置为初始值 */ + formData: F; + /** 新增时的初始值 */ + initialFormData: F; + /** 按 id 拉取详情,返回值合并进表单 */ + loadDetail: (id: string) => Promise>; + /** 新增提交 */ + create: (data: F) => Promise; + /** 修改提交 */ + update: (id: string, data: F) => Promise; + /** 弹窗打开后、加载详情前的补充初始化 */ + onOpen?: () => void; + /** 提交前的业务校验,返回 false 中止提交 */ + beforeSubmit?: () => boolean; + /** 提交成功后刷新列表 */ + onSubmitted?: () => void; +} + +/** + * 表单弹窗的开关、提交与重置,收敛列表页重复的分页表单流程 + */ +export function useFormDialog(options: FormDialogOptions) { + const { + formRef, + formData, + initialFormData, + loadDetail, + create, + update, + onOpen, + beforeSubmit, + onSubmitted, + } = options; + const toast = useToast(); + const dialog = reactive({ visible: false }); + const isSubmitting = ref(false); + + /** + * 打开弹窗,传入 id 时加载详情回填 + */ + async function open(id?: string) { + formRef.value?.reset(); + Object.assign(formData, initialFormData); + dialog.visible = true; + onOpen?.(); + + if (!id) return; + + formData.id = id; + try { + const detail = await loadDetail(id); + // 连续打开不同记录时,只回填最后一次请求的数据 + if (formData.id !== id) return; + Object.assign(formData, detail, { id }); + } catch (error) { + toast.error(getErrorMessage(error, "加载失败")); + close(); + } + } + + /** + * 校验通过后按 id 判断新增或修改,成功后关闭弹窗并刷新列表 + */ + function submit() { + formRef.value?.validate().then(({ valid }: { valid: boolean }) => { + if (!valid) return; + if (beforeSubmit && !beforeSubmit()) return; + + isSubmitting.value = true; + const id = formData.id; + const action = id ? update(id, formData) : create(formData); + + action + .then(() => { + toast.success("操作成功"); + close(); + onSubmitted?.(); + }) + .catch((error) => { + toast.error(getErrorMessage(error, "保存失败")); + }) + .finally(() => { + isSubmitting.value = false; + }); + }); + } + + /** + * 关闭弹窗并清空表单,避免下次打开残留上次输入 + */ + function close() { + dialog.visible = false; + formRef.value?.reset(); + Object.assign(formData, initialFormData); + } + + return { dialog, isSubmitting, open, submit, close }; +} diff --git a/src/composables/useLogout.ts b/src/composables/useLogout.ts index 9eae788..598a486 100644 --- a/src/composables/useLogout.ts +++ b/src/composables/useLogout.ts @@ -5,19 +5,19 @@ import { useUserStore } from "@/store"; /** * 退出登录流程 * - * 会话清理与跳转登录页由 userStore.logout 负责,这里只做二次确认、进行中反馈与防重入。 + * 会话清理与跳转登录页由 userStore.logout 负责,这里只做二次确认、进行中反馈与防重入 */ export function useLogout() { const toast = useToast(); const userStore = useUserStore(); - /** 退出流程进行中,用于禁用入口并挡住重复触发 */ + // 退出流程进行中,用于禁用入口并挡住重复触发 const isLoggingOut = ref(false); /** * 发起退出登录 * * 用户取消弹窗时不产生任何请求;确认后进入 isLoggingOut, - * 期间再次触发直接忽略,避免重复调用退出接口。 + * 期间再次触发直接忽略,避免重复调用退出接口 */ const requestLogout = () => { if (isLoggingOut.value) return; diff --git a/src/composables/useNavbarMetrics.ts b/src/composables/useNavbarMetrics.ts index efc4df3..1e030e3 100644 --- a/src/composables/useNavbarMetrics.ts +++ b/src/composables/useNavbarMetrics.ts @@ -1,17 +1,8 @@ import { ref, computed, onUnmounted, type Ref, type ComputedRef } from "vue"; /** - * 导航栏几何测量 - * - * 参考 uni-ui 官方实现:https://github.com/dcloudio/uni-ui - * - * 微信小程序按胶囊按钮位置推算内容区高度: - * 状态栏 → 上边距 → 胶囊 → 下边距,上下边距相等, - * 内容区高度 = capsule.height + (capsule.top - statusBarHeight) * 2。 - * H5 与 App 没有胶囊,直接取 fallbackContentHeightPx。 + * 微信胶囊按钮的屏幕坐标与尺寸,单位为 px */ - -// 胶囊按钮相对屏幕的矩形,单位 px interface CapsuleRect { width: number; height: number; @@ -21,7 +12,9 @@ interface CapsuleRect { left: number; } -/** 导航栏测量配置 */ +/** + * 导航栏测量配置 + */ export interface NavbarMetricsOptions { /** H5 / App 无胶囊时的内容区高度(px),默认 44 */ contentHeightPx?: number; @@ -30,7 +23,7 @@ export interface NavbarMetricsOptions { /** * 导航栏测量结果 * - * 长度单位统一为 px,与系统几何 API 保持一致。 + * 长度单位统一为 px,与系统几何 API 保持一致 */ export interface NavbarMetrics { /** 状态栏高度(px) */ @@ -47,12 +40,14 @@ export interface NavbarMetrics { capsuleWidthPx: ComputedRef; } +// 微信胶囊读取失败时的兜底尺寸(px):87×32 为默认胶囊,上下与右侧留 10,顶部偏移 6 +const FALLBACK_CAPSULE = { width: 87, height: 32, margin: 10, topOffset: 6 }; + /** - * 测量导航栏、状态栏与胶囊尺寸 + * 测量状态栏与导航栏尺寸,微信端按胶囊位置计算 + * setup 阶段同步读取,卸载时清理重试任务 * - * setup 阶段即完成首次读取,避免首屏闪烁;组件卸载时清理内部重试定时器。 - * - * @param options - 无胶囊平台的内容区高度 + * @see https://github.com/dcloudio/uni-ui */ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetrics { const { contentHeightPx: fallbackContentHeightPx = 44 } = options; @@ -64,7 +59,9 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr // 胶囊矩形可能晚于首次渲染就绪,重试定时器在卸载与重新测量时清理 let retryTimer: ReturnType | null = null; - // 清理重试定时器 + /** + * 清除胶囊尺寸读取的重试任务 + */ const clearRetryTimer = () => { if (retryTimer !== null) { clearTimeout(retryTimer); @@ -77,6 +74,7 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr // #ifdef MP-WEIXIN const capsule = capsuleRect.value; if (capsule && capsule.height > 0 && capsule.top > 0) { + // 胶囊上下留白相等,内容区包含胶囊与两侧留白 const spaceHeight = capsule.top - statusBarHeight.value; return capsule.height + spaceHeight * 2; } @@ -103,7 +101,7 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr return windowWidth.value - capsuleRect.value.right; } // #endif - return 10; + return FALLBACK_CAPSULE.margin; }); const capsuleWidthPx = computed(() => { @@ -116,20 +114,30 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr }); // #ifdef MP-WEIXIN + /** + * 检查胶囊尺寸与位置是否有效 + */ const isValidCapsuleRect = (rect: ReturnType) => { return !!rect && rect.width > 0 && rect.height > 0 && rect.top > 0 && rect.right > 0; }; - // 有限次重试读取胶囊矩形,仍未取到则回落到默认尺寸,避免内容区高度为 0 + /** + * 有限重试读取胶囊尺寸,失败时使用默认值 + */ const readCapsuleRect = (maxRetry = 6, delayMs = 50) => { + /** + * 按状态栏与窗口尺寸设置默认胶囊位置 + */ const applyDefaultCapsuleRect = () => { + const { width, height, margin, topOffset } = FALLBACK_CAPSULE; + const top = statusBarHeight.value + topOffset; capsuleRect.value = { - width: 87, - height: 32, - top: statusBarHeight.value + 6, - right: windowWidth.value - 10, - bottom: statusBarHeight.value + 38, - left: windowWidth.value - 97, + width, + height, + top, + right: windowWidth.value - margin, + bottom: top + height, + left: windowWidth.value - margin - width, }; }; @@ -161,7 +169,9 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr }; // #endif - // 读取窗口与胶囊尺寸,取不到的值保留声明处默认值 + /** + * 更新窗口与胶囊尺寸,读取失败时保留当前值 + */ const refreshMetrics = () => { try { const windowInfo = @@ -175,7 +185,7 @@ export function useNavbarMetrics(options: NavbarMetricsOptions = {}): NavbarMetr readCapsuleRect(); // #endif } catch { - // 各字段已有声明处默认值兜底 + // 读取失败时保留当前尺寸 } }; diff --git a/src/composables/useNavigation.ts b/src/composables/useNavigation.ts index 94f3bcd..14e397d 100644 --- a/src/composables/useNavigation.ts +++ b/src/composables/useNavigation.ts @@ -9,7 +9,7 @@ interface NavTarget { /** * 业务菜单导航 * - * 站外链接在 H5 新开标签、其余端进内置 webview,站内路由走 navigateTo。 + * 站外链接在 H5 新开标签、其余端进内置 webview,站内路由走 navigateTo */ export function useNavigation() { const toast = useToast(); @@ -17,7 +17,7 @@ export function useNavigation() { /** * 按菜单配置跳转 * - * 未登录先跳登录页并带上来路;地址缺失或页面不存在时给出提示。 + * 未登录先跳登录页并带上来路;地址缺失或页面不存在时给出提示 * * @param target - 菜单项 */ diff --git a/src/composables/usePagedList.ts b/src/composables/usePagedList.ts index c35cc26..d5e441c 100644 --- a/src/composables/usePagedList.ts +++ b/src/composables/usePagedList.ts @@ -2,12 +2,12 @@ import { ref, type Ref } from "vue"; import { onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app"; /** - * 管理分页加载、下拉刷新与失败重试。 - * 过期响应不回填;下拉刷新失败时保留现有列表。 + * 管理分页加载、下拉刷新与失败重试 + * 过期响应不回填;下拉刷新失败时保留现有列表 */ export function usePagedList( fetcher: (query: Q) => Promise<{ list: T[]; total: number }>, - queryParams: Q + queryParams: Q, ) { const total = ref(0); const items = ref([]) as Ref; @@ -28,7 +28,7 @@ export function usePagedList } /** - * 加载指定页,丢弃过期响应。 + * 加载指定页,丢弃过期响应 * * @param append 是否追加到现有列表 * @param keepOnFail 替换加载失败时是否保留现有列表 @@ -55,7 +55,7 @@ export function usePagedList } /** - * 返回第一页并重新加载列表。 + * 返回第一页并重新加载列表 */ async function reload(): Promise { loadedPages = 0; @@ -63,7 +63,7 @@ export function usePagedList } /** - * 按原页码与追加方式重试最近一次请求。 + * 按原页码与追加方式重试最近一次请求 */ function retry(): void { if (!lastAttempt) return; diff --git a/src/composables/useRealtime.ts b/src/composables/useRealtime.ts index 782e732..f3e2914 100644 --- a/src/composables/useRealtime.ts +++ b/src/composables/useRealtime.ts @@ -7,7 +7,7 @@ import { createRealtimeClient, RealtimeConnectionStatus } from "@/utils/realtime import { parseRealtimeTicket } from "@/utils/realtime/protocol"; /** - * 页面可用的连接状态与公告订阅入口。 + * 页面可用的连接状态与公告订阅入口 */ interface RealtimeContext { readonly status: Readonly>; @@ -18,7 +18,7 @@ interface RealtimeContext { const REALTIME_CONTEXT: InjectionKey = Symbol("realtime-context"); /** - * 在 App.vue 初始化连接,绑定会话与应用生命周期。 + * 在 App.vue 初始化连接,绑定会话与应用生命周期 */ export function provideRealtime(): RealtimeContext { const userStore = useUserStore(); @@ -30,7 +30,7 @@ export function provideRealtime(): RealtimeContext { const client = createRealtimeClient({ /** - * 领取并校验票据;服务未启用或无权限时停止连接。 + * 领取并校验票据;服务未启用或无权限时停止连接 */ async requestTicket(request) { const ticket = await RealtimeAPI.createTicket(request); @@ -42,7 +42,7 @@ export function provideRealtime(): RealtimeContext { }); /** - * 通知页面刷新公告,隔离处理器异常。 + * 通知页面刷新公告,隔离处理器异常 */ function notifyNotices(): void { for (const handler of noticeHandlers) { @@ -55,7 +55,7 @@ export function provideRealtime(): RealtimeContext { } /** - * 清除待执行的 HTTP 校准任务。 + * 清除待执行的 HTTP 校准任务 */ function stopCalibration(): void { if (calibrationTimer !== null) clearTimeout(calibrationTimer); @@ -63,7 +63,7 @@ export function provideRealtime(): RealtimeContext { } /** - * 定期用 HTTP 刷新通知,补偿实时提示丢失;随机间隔分散请求。 + * 定期用 HTTP 刷新通知,补偿实时提示丢失;随机间隔分散请求 */ function calibrate(): void { stopCalibration(); @@ -73,7 +73,7 @@ export function provideRealtime(): RealtimeContext { } /** - * 前台恢复时检查连接并校准业务数据。 + * 前台恢复时检查连接并校准业务数据 */ function resume(): void { if (!launched || !foreground || !userStore.isAuthenticated || disposed) return; @@ -95,7 +95,7 @@ export function provideRealtime(): RealtimeContext { if (userStore.isAuthenticated) resume(); else notifyNotices(); }, - { flush: "sync" } + { flush: "sync" }, ); onLaunch(() => { @@ -107,7 +107,7 @@ export function provideRealtime(): RealtimeContext { }); /** - * 网络恢复时重连,断网时释放连接。 + * 网络恢复时重连,断网时释放连接 */ function handleNetworkChange(event: { isConnected: boolean }): void { if (event.isConnected) resume(); @@ -124,7 +124,7 @@ export function provideRealtime(): RealtimeContext { }); onHide(() => { // #ifndef H5 - // 小程序进后台释放连接,回到前台后重新领票与校准。 + // 小程序进后台释放连接,回到前台后重新领票与校准 foreground = false; stopCalibration(); client.disconnect(); @@ -133,12 +133,12 @@ export function provideRealtime(): RealtimeContext { // #ifdef H5 /** - * 随页面可见状态恢复或暂停 HTTP 校准。 + * 随页面可见状态恢复或暂停 HTTP 校准 */ function handleVisibility(): void { foreground = document.visibilityState === "visible"; if (foreground) resume(); - // H5 隐藏时保留 SocketTask,只暂停 HTTP 校准。 + // H5 隐藏时保留 SocketTask,只暂停 HTTP 校准 else stopCalibration(); } if (typeof document !== "undefined") { @@ -152,12 +152,12 @@ export function provideRealtime(): RealtimeContext { status: client.status, isConnected: computed(() => client.status.value === RealtimeConnectionStatus.CONNECTED), /** - * 在 setup 中订阅公告,随当前作用域释放,也可手动取消。 + * 在 setup 中订阅公告,随当前作用域释放,也可手动取消 */ onNoticeChange(handler) { noticeHandlers.add(handler); /** - * 取消当前公告订阅。 + * 取消当前公告订阅 */ function unsubscribe(): void { noticeHandlers.delete(handler); @@ -166,11 +166,11 @@ export function provideRealtime(): RealtimeContext { return unsubscribe; }, }; - // 小程序页面拥有独立组件树,使用当前应用的 provide。 + // 小程序页面拥有独立组件树,使用当前应用的 provide getCurrentInstance()?.appContext.app.provide(REALTIME_CONTEXT, context); /** - * 释放连接、监听器和定时器。 + * 释放连接、监听器和定时器 */ function dispose(): void { if (disposed) return; @@ -196,7 +196,7 @@ export function provideRealtime(): RealtimeContext { } /** - * 获取应用提供的实时状态与公告订阅入口。 + * 获取应用提供的实时状态与公告订阅入口 */ export function useRealtime(): RealtimeContext { const context = inject(REALTIME_CONTEXT); diff --git a/src/composables/useScanLogin.ts b/src/composables/useScanLogin.ts index affb549..eaba5af 100644 --- a/src/composables/useScanLogin.ts +++ b/src/composables/useScanLogin.ts @@ -4,7 +4,7 @@ import { ensureAuthenticated } from "@/utils/auth"; * 扫码登录 PC 端 * * 调起相机扫描 PC 端登录二维码,只检查扫码结果非空;票据有效性与用户身份 - * 由扫码确认页调用服务端校验,本方法不完成登录。 + * 由扫码确认页调用服务端校验,本方法不完成登录 */ export function useScanLogin() { const toast = useToast(); @@ -13,7 +13,7 @@ export function useScanLogin() { * 调起相机扫码并进入确认页 * * 未登录先跳登录页;当前环境无扫码能力时给出可读提示; - * 用户取消扫码静默结束,其余失败按原因提示。 + * 用户取消扫码静默结束,其余失败按原因提示 */ const scanForLogin = async () => { if (!ensureAuthenticated()) return; @@ -42,7 +42,9 @@ export function useScanLogin() { return { scanForLogin }; } -// 当前环境能否调起相机:H5 没有原生扫码能力 +/** + * 当前环境能否调起相机:H5 没有原生扫码能力 + */ function canScanCode(): boolean { let supported = typeof uni.scanCode === "function"; // #ifdef H5 @@ -51,7 +53,9 @@ function canScanCode(): boolean { return supported; } -// 扫码失败提示文案:返回 null 表示用户主动取消,不做提示 +/** + * 扫码失败提示文案:返回 null 表示用户主动取消,不做提示 + */ function getScanErrorMessage(error: unknown): string | null { const errMsg = String((error as { errMsg?: string } | undefined)?.errMsg || "").toLowerCase(); if (errMsg.includes("cancel")) return null; diff --git a/src/composables/useSmsLoginCode.ts b/src/composables/useSmsLoginCode.ts index 6ddb2e7..0bc33a2 100644 --- a/src/composables/useSmsLoginCode.ts +++ b/src/composables/useSmsLoginCode.ts @@ -17,18 +17,18 @@ export function isValidMobile(mobile: string): boolean { /** * 登录短信验证码发送 * - * 含发送锁与 60 秒倒计时:请求返回前阻止重复点击,倒计时在发送成功后才启动。 + * 含发送锁与 60 秒倒计时:请求返回前阻止重复点击,倒计时在发送成功后才启动 */ export function useSmsLoginCode() { const toast = useToast(); const { remainingSeconds, start, stop } = useCountdown(60); - /** 发送中标志,请求返回前阻止重复点击 */ + // 发送中标志,请求返回前阻止重复点击 const isSending = ref(false); /** * 发送验证码 * - * 手机号格式与重复发送在这里拦下,接口失败提示也由这里统一处理。 + * 手机号格式与重复发送在这里拦下,接口失败提示也由这里统一处理 * * @param mobile - 接收验证码的手机号 * @param fallback - 接口无错误信息时的兜底提示 @@ -57,7 +57,7 @@ export function useSmsLoginCode() { /** * 重置倒计时 * - * 关闭弹窗等场景调用,让下次打开可以立即重新发送。 + * 关闭弹窗等场景调用,让下次打开可以立即重新发送 */ function resetCountdown() { stop(); diff --git a/src/composables/useTheme.ts b/src/composables/useTheme.ts index aa29ab7..dd1f634 100644 --- a/src/composables/useTheme.ts +++ b/src/composables/useTheme.ts @@ -2,7 +2,7 @@ import { useThemeStore, themeColorOptions } from "@/store/modules/theme"; import { storeToRefs } from "pinia"; /** - * 提供响应式主题状态、主题选项及设置方法。 + * 提供响应式主题状态、主题选项及设置方法 */ export function useTheme() { const store = useThemeStore(); diff --git a/src/config/index.ts b/src/config/index.ts index e111e9a..e90360a 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,3 +1 @@ -/** 配置统一导出 */ - export * from "./work-menu"; diff --git a/src/config/work-menu.ts b/src/config/work-menu.ts index a58ce60..45e84a9 100644 --- a/src/config/work-menu.ts +++ b/src/config/work-menu.ts @@ -1,5 +1,3 @@ -/** 工作台菜单配置 */ - import { PERM } from "@/constants/permissions"; export interface WorkMenuItem { @@ -16,6 +14,9 @@ export interface WorkMenuGroup { children: WorkMenuItem[]; } +/** + * 工作台入口分组,按权限过滤后展示 + */ export const workMenuGroups: WorkMenuGroup[] = [ { title: "系统管理", diff --git a/src/constants/index.ts b/src/constants/index.ts index 929a5f4..c2f2367 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,3 +1,2 @@ -/** 常量统一出口:具体定义按领域拆分在同级文件 */ export * from "./storage-keys"; export * from "./permissions"; diff --git a/src/constants/permissions.ts b/src/constants/permissions.ts index 6a02990..1d7e7a3 100644 --- a/src/constants/permissions.ts +++ b/src/constants/permissions.ts @@ -1,5 +1,3 @@ -/** 权限相关常量 */ - /** 超级管理员角色标识 */ export const ROLE_ROOT = "ROOT"; diff --git a/src/constants/storage-keys.ts b/src/constants/storage-keys.ts index 5ab12f4..2081b33 100644 --- a/src/constants/storage-keys.ts +++ b/src/constants/storage-keys.ts @@ -1,16 +1,16 @@ -/** - * 本地存储键常量 - * - * 注意:修改已发布的键值时需兼容读取旧键并迁移,不能只改字符串 - */ +// 已发布的存储键改名时须迁移旧数据 -// 🔐 用户认证相关 +/** 访问令牌 */ export const ACCESS_TOKEN_KEY = "access_token"; + +/** 刷新令牌 */ export const REFRESH_TOKEN_KEY = "refresh_token"; -// 📊 用户缓存相关 +/** 用户资料缓存 */ export const USER_INFO_KEY = "user_info"; -// 🎨 主题相关 +/** 主题模式 */ export const THEME_MODE_KEY = "app-theme"; + +/** 主题主色 */ export const THEME_COLOR_KEY = "app-theme-color"; diff --git a/src/enums/api-code-enum.ts b/src/enums/api-code-enum.ts index e868981..62095ba 100644 --- a/src/enums/api-code-enum.ts +++ b/src/enums/api-code-enum.ts @@ -1,5 +1,5 @@ /** - * 客户端使用的后端业务响应码。 + * 客户端使用的后端业务响应码 */ export const enum ApiCode { /** 成功 */ diff --git a/src/env.d.ts b/src/env.d.ts deleted file mode 100644 index 469cf11..0000000 --- a/src/env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// - -declare module "*.vue" { - import type { DefineComponent } from "vue"; - const component: DefineComponent<{}, {}, any>; - export default component; -} diff --git a/src/layouts/blank.vue b/src/layouts/blank.vue index 7a8b9ba..43d23eb 100644 --- a/src/layouts/blank.vue +++ b/src/layouts/blank.vue @@ -1,3 +1,10 @@ + + - - diff --git a/src/layouts/default.vue b/src/layouts/default.vue index eea2e18..de3397c 100644 --- a/src/layouts/default.vue +++ b/src/layouts/default.vue @@ -1,3 +1,12 @@ + + - - diff --git a/src/layouts/tabbar.vue b/src/layouts/tabbar.vue index 49fe701..bd01bc3 100644 --- a/src/layouts/tabbar.vue +++ b/src/layouts/tabbar.vue @@ -35,7 +35,9 @@ const tabbarList = [ // 当前激活项的页面路径 const activePath = ref(tabbarList[0].name); -// 按当前页面同步激活项:mounted 与 onShow 都要执行,切回标签时不能停留在旧值 +/** + * 按当前页面同步激活项:mounted 与 onShow 都要执行,切回标签时不能停留在旧值 + */ function syncActiveTab() { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; @@ -46,7 +48,9 @@ function syncActiveTab() { } } -// 切换标签:先更新选中态再跳转,避免切换过程中高亮回弹 +/** + * 切换标签:先更新选中态再跳转,避免切换过程中高亮回弹 + */ function handleTabbarChange({ value }: { value: string }) { activePath.value = value; nextTick(() => { diff --git a/src/main.ts b/src/main.ts index 29f1fb5..e22e522 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,7 +8,7 @@ import { setupPinia, useUserStore } from "@/store"; import { setUnauthorizedHandler, setRefreshHandler } from "@/utils/request"; /** - * 创建应用并注册会话处理回调。 + * 创建应用并注册会话处理回调 */ export function createApp() { const app = createSSRApp(App); diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index d05744f..bc16819 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -82,7 +82,7 @@ userStore.isAuthenticated); // 快捷入口最多展示的数量 const QUICK_NAV_LIMIT = 4; -// 登录后按权限筛选入口;未登录时保留入口作为登录引导。 +// 登录后按权限筛选入口;未登录时保留入口作为登录引导 const quickNavList = computed(() => { const result: WorkMenuItem[] = []; for (const group of workMenuGroups) { @@ -178,10 +178,10 @@ const chartOpts = computed(() => ({ })); /** - * 仅登录后加载首页通知,忽略旧会话结果。 + * 仅登录后加载首页通知,忽略旧会话结果 */ async function fetchNoticeData() { - // 请求返回前可能切换账号,旧公告不能回填新会话。 + // 请求返回前可能切换账号,旧公告不能回填新会话 const token = userStore.accessToken; if (!isAuthenticated.value) { noticeList.value = []; @@ -196,7 +196,7 @@ async function fetchNoticeData() { } /** - * 在途刷新只记录一次补拉,避免连续提示并发查询同一列表。 + * 在途刷新只记录一次补拉,避免连续提示并发查询同一列表 */ function loadNoticeData(): void { if (disposed || !pageVisible) return; @@ -219,7 +219,7 @@ onScopeDispose(() => { }); /** - * 加载首页访问概览。 + * 加载首页访问概览 */ function loadVisitOverviewData() { LogAPI.getVisitOverview() @@ -228,7 +228,7 @@ function loadVisitOverviewData() { } /** - * 按所选范围加载访问趋势。 + * 按所选范围加载访问趋势 */ async function loadVisitTrendData() { const endDate = dayjs().format("YYYY-MM-DD"); @@ -244,7 +244,7 @@ async function loadVisitTrendData() { { name: "访客数", data: data.uvList || [] }, { name: "浏览量", data: data.pvList || [] }, ], - }) + }), ); } catch { chartData.value = { categories: [], series: [] }; @@ -252,7 +252,7 @@ async function loadVisitTrendData() { } /** - * 检查入口要求并跳转目标页面。 + * 检查入口要求并跳转目标页面 */ function handleNavItemClick(item: WorkMenuItem) { if (!isAuthenticated.value) { @@ -263,7 +263,7 @@ function handleNavItemClick(item: WorkMenuItem) { } /** - * 进入登录页面。 + * 进入登录页面 */ function navigateToLogin() { const pages = getCurrentPages(); @@ -273,7 +273,7 @@ function navigateToLogin() { } /** - * 进入通知页面,未登录时先跳转登录。 + * 进入通知页面,未登录时先跳转登录 */ function handleNoticeClick() { if (!isAuthenticated.value) { @@ -284,7 +284,7 @@ function handleNoticeClick() { } /** - * 切换统计范围并更新趋势。 + * 切换统计范围并更新趋势 */ function switchRange(value: number) { if (trendDays.value === value) return; @@ -443,11 +443,11 @@ onHide(() => { &__text { display: -webkit-box; overflow: hidden; + -webkit-line-clamp: 1; + line-clamp: 1; font-size: 26rpx; font-weight: 500; color: var(--color-text); - -webkit-line-clamp: 1; - line-clamp: 1; -webkit-box-orient: vertical; } } diff --git a/src/pages/login/components/BindMobilePopup.vue b/src/pages/login/components/BindMobilePopup.vue index fab551b..85a6b40 100644 --- a/src/pages/login/components/BindMobilePopup.vue +++ b/src/pages/login/components/BindMobilePopup.vue @@ -70,6 +70,9 @@ import { getErrorMessage } from "@/utils/error"; // 微信静默登录后需绑定手机号时,由父组件打开本弹窗 const visible = defineModel({ required: true }); +/** + * 绑定成功后通知父组件跳转 + */ const emit = defineEmits<{ /** 绑定成功(会话已就绪),父组件负责跳转 */ (e: "success"): void; @@ -86,7 +89,7 @@ const isSubmitting = ref(false); /** * 打开绑定弹窗 * - * 重置输入;微信身份不由弹窗保存,提交时重新通过 wx.login 确认。 + * 重置输入;微信身份不由弹窗保存,提交时重新通过 wx.login 确认 */ function open() { mobile.value = "18888888888"; @@ -95,7 +98,7 @@ function open() { } /** - * 停止倒计时并清空验证码,保留已填手机号。 + * 停止倒计时并清空验证码,保留已填手机号 */ function handleClose() { resetCountdown(); @@ -103,14 +106,14 @@ function handleClose() { } /** - * 请求发送绑定手机号的验证码。 + * 请求发送绑定手机号的验证码 */ async function handleSendCode() { await sendCode(mobile.value); } /** - * 校验并绑定手机号,成功后通知父组件。 + * 校验并绑定手机号,成功后通知父组件 */ async function handleConfirm() { if (isSubmitting.value) return; @@ -124,7 +127,7 @@ async function handleConfirm() { } isSubmitting.value = true; try { - // 静默登录的 code 已消费,绑定时必须重新获取一次。 + // 静默登录的 code 已消费,绑定时必须重新获取一次 const { code: loginCode } = await uni.login(); if (!loginCode) throw new Error("未获取到微信登录凭证,请重试"); await userStore.bindMobileForWxMa({ loginCode, mobile: mobile.value, smsCode: code.value }); @@ -139,6 +142,9 @@ async function handleConfirm() { } } +/** + * 暴露给父组件打开弹窗 + */ defineExpose({ open }); diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue index 45105a9..8c1b7c0 100644 --- a/src/pages/login/index.vue +++ b/src/pages/login/index.vue @@ -251,7 +251,7 @@ const isCaptchaLoading = ref(false); const redirect = ref("/pages/index/index"); -// 绑定手机号弹窗显隐;微信身份由提交时的新 code 确认。 +// 绑定手机号弹窗显隐;微信身份由提交时的新 code 确认 const showBindMobilePopup = ref(false); const pendingLoginAction = ref<"FORM" | "WECHAT_PHONE" | null>(null); @@ -296,7 +296,7 @@ const formSchema = computed(() => ({ })); /** - * 加载图形验证码。 + * 加载图形验证码 */ const loadCaptcha = async () => { if (isCaptchaLoading.value) return; @@ -314,7 +314,7 @@ const loadCaptcha = async () => { }; /** - * 切换登录方式,保留手机号验证码冷却。 + * 切换登录方式,保留手机号验证码冷却 */ const toggleLoginMode = () => { if (loginMode.value === "PASSWORD") { @@ -333,7 +333,7 @@ const toggleLoginMode = () => { }; /** - * 展示登录所需的协议确认。 + * 展示登录所需的协议确认 */ const openPolicyDialog = (action: "FORM" | "WECHAT_PHONE", phoneCode = "") => { pendingLoginAction.value = action; @@ -359,7 +359,7 @@ const openPolicyDialog = (action: "FORM" | "WECHAT_PHONE", phoneCode = "") => { }; /** - * 校验表单并执行当前方式的登录。 + * 校验表单并执行当前方式的登录 */ async function doFormLogin() { if (isLoggingIn.value) return; @@ -389,7 +389,7 @@ async function doFormLogin() { } /** - * 确认协议后提交表单登录。 + * 确认协议后提交表单登录 */ const handleLogin = async () => { // 先校验表单必填项(内联提示,不再弹窗) @@ -406,7 +406,7 @@ const handleLogin = async () => { }; /** - * 发送手机登录验证码并启动倒计时。 + * 发送手机登录验证码并启动倒计时 */ const handleSendCode = async () => { await sendCode(formData.value.username); @@ -418,7 +418,7 @@ interface WxPhoneLoginEvent { } /** - * 确认协议后处理微信手机号授权。 + * 确认协议后处理微信手机号授权 */ const handleWechatPhoneLogin = async (e: WxPhoneLoginEvent) => { const phoneCode = e.detail.code; @@ -434,7 +434,7 @@ const handleWechatPhoneLogin = async (e: WxPhoneLoginEvent) => { }; /** - * 使用微信手机号授权凭证登录。 + * 使用微信手机号授权凭证登录 */ async function doWechatPhoneLogin(phoneCode: string) { if (!phoneCode) { @@ -456,7 +456,7 @@ async function doWechatPhoneLogin(phoneCode: string) { } /** - * 使用微信登录凭证登录,必要时引导绑定手机号。 + * 使用微信登录凭证登录,必要时引导绑定手机号 */ const doWechatSilentLogin = async () => { isLoggingIn.value = true; @@ -477,7 +477,7 @@ const doWechatSilentLogin = async () => { }; /** - * 加载用户资料,显示成功提示后回跳来源页面。 + * 加载用户资料,显示成功提示后回跳来源页面 */ async function completeLogin() { await userStore.loadUserInfo(); @@ -485,7 +485,7 @@ async function completeLogin() { } /** - * 打开用户协议或隐私政策。 + * 打开用户协议或隐私政策 */ const navigateToAgreement = (type: string) => { const url = @@ -526,8 +526,8 @@ onLoad((options) => { .login__circle { position: absolute; - filter: blur(64px); border-radius: 50%; + filter: blur(64px); &--1 { top: -160rpx; diff --git a/src/pages/mine/components/MenuSection.vue b/src/pages/mine/components/MenuSection.vue index e45719b..421f114 100644 --- a/src/pages/mine/components/MenuSection.vue +++ b/src/pages/mine/components/MenuSection.vue @@ -19,9 +19,7 @@ diff --git a/src/subPages/work/components/TreeView.vue b/src/subPages/work/components/TreeView.vue index ca2373e..7da30ba 100644 --- a/src/subPages/work/components/TreeView.vue +++ b/src/subPages/work/components/TreeView.vue @@ -69,7 +69,7 @@ import { ref, computed, watch } from "vue"; * 树节点 * * value 与 label 是树组件自身的字段,其余业务字段通过索引签名扩展, - * 由使用方按需声明具体类型。 + * 由使用方按需声明具体类型 */ export interface TreeOption { value: string; @@ -111,6 +111,9 @@ interface Props { checkStrictly?: boolean; } +/** + * 树组件配置:数据源、字段映射、展开与选择行为 + */ const props = withDefaults(defineProps(), { data: () => [], valueKey: "value", @@ -157,7 +160,7 @@ watch( (keys) => { internalCheckedKeys.value = new Set(keys); }, - { immediate: true } + { immediate: true }, ); // 扁平化树结构:只展开集合内的节点,未展开的分支不下发 @@ -183,17 +186,23 @@ const flatNodes = computed(() => { return result; }); -// 是否处于展开集合中 +/** + * 是否处于展开集合中 + */ function isExpanded(value: string) { return expandedKeys.value.has(value); } -// 节点点击:只上报原始业务节点,选中与跳转由使用方处理 +/** + * 节点点击:只上报原始业务节点,选中与跳转由使用方处理 + */ function handleNodeClick(node: FlatNode) { emit("click", node.raw); } -// 展开/收起:无子节点的节点不可展开 +/** + * 展开/收起:无子节点的节点不可展开 + */ function handleExpand(node: FlatNode) { if (!node.hasChildren) return; const value = node.value; @@ -207,17 +216,23 @@ function handleExpand(node: FlatNode) { emit("expand", node.raw, next.has(value)); } -// 操作按钮点击:上报原始节点,菜单内容由使用方按权限拼装 +/** + * 操作按钮点击:上报原始节点,菜单内容由使用方按权限拼装 + */ function handleNodeAction(node: FlatNode) { emit("action", node.raw); } -// 是否在多选集合中 +/** + * 是否在多选集合中 + */ function isChecked(value: string) { return internalCheckedKeys.value.has(value); } -// 半选状态:checkStrictly 关闭时,子节点部分选中即半选 +/** + * 半选状态:checkStrictly 关闭时,子节点部分选中即半选 + */ function isIndeterminate(value: string) { if (props.checkStrictly) return false; const node = findNodeByValue(value, props.data); @@ -232,7 +247,9 @@ function isIndeterminate(value: string) { return checkedCount > 0 && checkedCount < childValues.length; } -// 按 value 深度优先查找节点 +/** + * 按 value 深度优先查找节点 + */ function findNodeByValue(value: string, nodes: TreeOption[]): TreeOption | null { for (const node of nodes) { if (String(node[props.valueKey]) === value) return node; @@ -245,7 +262,9 @@ function findNodeByValue(value: string, nodes: TreeOption[]): TreeOption | null return null; } -// 收集全部后代节点的 value +/** + * 收集全部后代节点的 value + */ function getAllChildValues(nodes: TreeOption[]): string[] { const result: string[] = []; function traverse(list: TreeOption[]) { @@ -259,7 +278,9 @@ function getAllChildValues(nodes: TreeOption[]): string[] { return result; } -// 收集从根到目标节点的祖先 value,用于父子联动时回写父节点 +/** + * 收集从根到目标节点的祖先 value,用于父子联动时回写父节点 + */ function getAllParentValues(value: string, nodes: TreeOption[], parents: string[] = []): string[] { for (const node of nodes) { const nodeValue = String(node[props.valueKey]); @@ -273,7 +294,9 @@ function getAllParentValues(value: string, nodes: TreeOption[], parents: string[ return []; } -// 多选切换:checkStrictly 关闭时联动子节点,并按子节点结果回写父节点 +/** + * 多选切换:checkStrictly 关闭时联动子节点,并按子节点结果回写父节点 + */ function handleCheck(node: FlatNode) { const value = node.value; const checked = !internalCheckedKeys.value.has(value); @@ -342,7 +365,7 @@ watch( expandedKeys.value = new Set(allValues); } }, - { immediate: true } + { immediate: true }, ); @@ -406,9 +429,9 @@ watch( &__label { flex: 1; overflow: hidden; + text-overflow: ellipsis; font-size: 28rpx; color: var(--color-text); - text-overflow: ellipsis; white-space: nowrap; } diff --git a/src/subPages/work/config/index.vue b/src/subPages/work/config/index.vue index d410aef..fe5cbd6 100644 --- a/src/subPages/work/config/index.vue +++ b/src/subPages/work/config/index.vue @@ -143,12 +143,16 @@ const rules = toFormSchema({ // 搜索触发 const handleSearch = () => loadConfigList(); -// 加载列表(回到第一页) +/** + * 加载列表(回到第一页) + */ function loadConfigList() { reload(); } -// 打开弹窗(新增/编辑) +/** + * 打开弹窗(新增/编辑) + */ async function openConfigDialog(id?: number) { formRef.value?.reset(); Object.assign(formData, initialFormData); @@ -160,7 +164,9 @@ async function openConfigDialog(id?: number) { } } -// 提交表单 +/** + * 提交表单 + */ function submitConfigForm() { formRef.value?.validate().then(({ valid }: { valid: boolean }) => { if (!valid) return; @@ -180,14 +186,18 @@ function submitConfigForm() { }); } -// 关闭弹窗 +/** + * 关闭弹窗 + */ function closeConfigDialog() { dialog.visible = false; formRef.value?.reset(); Object.assign(formData, initialFormData); } -// 更多操作 +/** + * 更多操作 + */ function openConfigActions(item: ConfigItem) { const commands: ActionSheetCommand[] = []; diff --git a/src/subPages/work/dept/index.vue b/src/subPages/work/dept/index.vue index ac8f92f..1e496a7 100644 --- a/src/subPages/work/dept/index.vue +++ b/src/subPages/work/dept/index.vue @@ -141,7 +141,7 @@ const formData = reactive({ ...initialFormData }); // 树组件节点:部门实体字段 + 树节点要求的 value/label interface DeptTreeOption extends TreeOption { - id?: number; + id: number; name?: string; status?: number; children?: DeptTreeOption[]; @@ -159,8 +159,8 @@ const treeData = computed(() => name: dept.name, status: dept.status, children, - }) - ) + }), + ), ); // 上级部门选择器 @@ -191,7 +191,9 @@ const rules = toFormSchema({ // 搜索触发 const handleSearch = () => loadDeptList(); -// 加载列表 +/** + * 加载列表 + */ function loadDeptList() { DeptAPI.getList(queryParams) .then((data) => { @@ -202,7 +204,9 @@ function loadDeptList() { }); } -// 处理节点操作按钮点击 +/** + * 处理节点操作按钮点击 + */ function handleNodeAction(node: DeptTreeOption) { const dept: DeptItem = { id: node.id, @@ -243,7 +247,9 @@ function handleNodeAction(node: DeptTreeOption) { actionSheetRef.value?.open(commands); } -// 打开弹窗(新增/编辑) +/** + * 打开弹窗(新增/编辑) + */ async function openDeptDialog(dept?: DeptItem) { formRef.value?.reset(); Object.assign(formData, initialFormData); @@ -271,11 +277,13 @@ async function openDeptDialog(dept?: DeptItem) { } } -// 新增子部门:按新增流程打开弹窗,并预设上级部门 +/** + * 新增子部门:按新增流程打开弹窗,并预设上级部门 + */ function openChildDeptDialog(dept: DeptItem) { openDeptDialog(); - formData.parentId = dept.id!; - parentSelected.value = dept.id!; + formData.parentId = dept.id; + parentSelected.value = dept.id; parentLabel.value = findOptionChain(treeData.value, dept.id!) ?.map((option) => option.label) @@ -284,7 +292,9 @@ function openChildDeptDialog(dept: DeptItem) { ""; } -// 提交表单 +/** + * 提交表单 + */ function submitDeptForm() { formRef.value?.validate().then(({ valid }: { valid: boolean }) => { if (!valid) return; @@ -302,7 +312,9 @@ function submitDeptForm() { }); } -// 关闭弹窗 +/** + * 关闭弹窗 + */ function closeDeptDialog() { dialog.visible = false; formRef.value?.reset(); diff --git a/src/subPages/work/dict/index.vue b/src/subPages/work/dict/index.vue index 2c9dabd..a970631 100644 --- a/src/subPages/work/dict/index.vue +++ b/src/subPages/work/dict/index.vue @@ -93,28 +93,24 @@ + + diff --git a/src/subPages/work/monitor/index.vue b/src/subPages/work/monitor/index.vue index dfe0d70..50b0345 100644 --- a/src/subPages/work/monitor/index.vue +++ b/src/subPages/work/monitor/index.vue @@ -8,6 +8,6 @@ definePage({ style: { navigationBarTitleText: "应用监控" }, layout: "blank", }); -// SpringBoot Admin 监控地址,生产环境在 .env.production 配置 VITE_APP_MONITOR_URL +// SpringBoot Admin 监控地址,可用 VITE_APP_MONITOR_URL 覆盖 const monitorUrl = import.meta.env.VITE_APP_MONITOR_URL || "http://localhost:9090/wallboard"; diff --git a/src/subPages/work/notice/index.vue b/src/subPages/work/notice/index.vue index 1dd0d92..c80eb73 100644 --- a/src/subPages/work/notice/index.vue +++ b/src/subPages/work/notice/index.vue @@ -182,7 +182,8 @@ const { retry, } = usePagedList(NoticeAPI.getPage, queryParams); -const noticeDetail = ref({}); +// 详情未加载时字段为空,展示层按可选字段读取 +const noticeDetail = ref>({}); const detailDialog = reactive({ visible: false }); const dialog = reactive({ visible: false }); @@ -202,10 +203,10 @@ const formRules = toFormSchema({ }); /** - * 将通知状态转换为标签类型。 + * 将通知状态转换为标签类型 */ const getStatusType = ( - status?: number + status?: number, ): "default" | "primary" | "danger" | "warning" | "success" => { const map: Record = { 0: "primary", @@ -216,7 +217,7 @@ const getStatusType = ( }; /** - * 获取通知状态的显示文本。 + * 获取通知状态的显示文本 */ const getStatusText = (status?: number): string => { const map: Record = { 0: "未发布", 1: "已发布", [-1]: "已撤回" }; @@ -224,7 +225,7 @@ const getStatusText = (status?: number): string => { }; /** - * 获取通知级别的显示文本。 + * 获取通知级别的显示文本 */ const getLevelText = (level?: string): string => { const map: Record = { L: "低", M: "中", H: "高" }; @@ -232,7 +233,7 @@ const getLevelText = (level?: string): string => { }; /** - * 格式化通知时间,空值显示占位符。 + * 格式化通知时间,空值显示占位符 */ const formatTime = (item: NoticeItem): string => { if (item.publishStatus === 1 && item.publishTime) { @@ -245,19 +246,19 @@ const formatTime = (item: NoticeItem): string => { }; /** - * 按搜索条件重新加载通知。 + * 按搜索条件重新加载通知 */ const handleSearch = () => loadNoticeList(); /** - * 从第一页重新加载通知列表。 + * 从第一页重新加载通知列表 */ function loadNoticeList() { reload(); } /** - * 加载并展示通知详情。 + * 加载并展示通知详情 */ async function openNoticeDetail(item: NoticeItem) { const detail = await NoticeAPI.getPreview(item.id); @@ -266,14 +267,14 @@ async function openNoticeDetail(item: NoticeItem) { } /** - * 关闭通知详情。 + * 关闭通知详情 */ function closeNoticeDetail() { detailDialog.visible = false; } /** - * 初始化新增或编辑通知表单。 + * 初始化新增或编辑通知表单 */ async function openNoticeDialog(id?: number) { formRef.value?.reset(); @@ -287,7 +288,7 @@ async function openNoticeDialog(id?: number) { } /** - * 关闭通知编辑弹窗。 + * 关闭通知编辑弹窗 */ function closeNoticeDialog() { dialog.visible = false; @@ -296,7 +297,7 @@ function closeNoticeDialog() { } /** - * 校验并提交通知表单,成功后刷新列表。 + * 校验并提交通知表单,成功后刷新列表 */ function submitNoticeForm() { formRef.value?.validate().then(({ valid }: { valid: boolean }) => { @@ -317,7 +318,7 @@ function submitNoticeForm() { } /** - * 展示当前通知可执行的操作。 + * 展示当前通知可执行的操作 */ function openNoticeActions(item: NoticeItem) { const commands: ActionSheetCommand[] = [ diff --git a/src/subPages/work/role/assign-perm/index.vue b/src/subPages/work/role/assign-perm/index.vue index bf7ee96..78cd0c1 100644 --- a/src/subPages/work/role/assign-perm/index.vue +++ b/src/subPages/work/role/assign-perm/index.vue @@ -117,27 +117,35 @@ const menuTree = computed(() => name: menu.name ?? "", type: menu.type, children: menu.children ? children : undefined, - }) - ) + }), + ), ); -// 处理选中变化 +/** + * 处理选中变化 + */ function handleCheck(keys: string[]) { checkedKeys.value = keys; } -// 全选:包含所有层级的菜单 id +/** + * 全选:包含所有层级的菜单 id + */ function handleSelectAll() { const allIds = getAllMenuIds(menuList.value); checkedKeys.value = allIds; } -// 取消全选:直接清空勾选集合,不逐层回退 +/** + * 取消全选:直接清空勾选集合,不逐层回退 + */ function handleClearAll() { checkedKeys.value = []; } -// 收集所有层级的菜单 id +/** + * 收集所有层级的菜单 id + */ function getAllMenuIds(menus: MenuItem[]): string[] { const ids: string[] = []; function traverse(list: MenuItem[]) { @@ -150,12 +158,16 @@ function getAllMenuIds(menus: MenuItem[]): string[] { return ids; } -// 取消:不保存直接返回 +/** + * 取消:不保存直接返回 + */ function handleCancel() { uni.navigateBack(); } -// 提交:勾选结果是字符串 id,提交前转回数字 +/** + * 提交:勾选结果是字符串 id,提交前转回数字 + */ async function handleSubmit() { isSubmitting.value = true; try { @@ -169,7 +181,9 @@ async function handleSubmit() { } } -// 加载角色权限页所需的菜单树、已授权菜单与角色名 +/** + * 加载角色权限页所需的菜单树、已授权菜单与角色名 + */ async function loadRolePermissions() { try { // 并行加载菜单列表和角色已有权限 @@ -229,10 +243,10 @@ export default { options: { styleIsolation: "shared" } }; &__value { flex: 1; overflow: hidden; + text-overflow: ellipsis; font-size: 28rpx; font-weight: 600; color: var(--color-text); - text-overflow: ellipsis; white-space: nowrap; } } @@ -267,9 +281,9 @@ export default { options: { styleIsolation: "shared" } }; .permissions__node-label { overflow: hidden; + text-overflow: ellipsis; font-size: 28rpx; color: var(--color-text); - text-overflow: ellipsis; white-space: nowrap; &.is-checked { diff --git a/src/subPages/work/role/index.vue b/src/subPages/work/role/index.vue index 13d6a0d..088794d 100644 --- a/src/subPages/work/role/index.vue +++ b/src/subPages/work/role/index.vue @@ -188,12 +188,16 @@ const rules = toFormSchema({ // 搜索触发 const handleSearch = () => loadRoleList(); -// 加载列表(回到第一页) +/** + * 加载列表(回到第一页) + */ function loadRoleList() { reload(); } -// 打开弹窗(新增/编辑) +/** + * 打开弹窗(新增/编辑) + */ async function openRoleDialog(id?: number) { formRef.value?.reset(); Object.assign(formData, initialFormData); @@ -205,7 +209,9 @@ async function openRoleDialog(id?: number) { } } -// 提交表单 +/** + * 提交表单 + */ function submitRoleForm() { formRef.value?.validate().then(({ valid }: { valid: boolean }) => { if (!valid) return; @@ -223,14 +229,18 @@ function submitRoleForm() { }); } -// 关闭弹窗 +/** + * 关闭弹窗 + */ function closeRoleDialog() { dialog.visible = false; formRef.value?.reset(); Object.assign(formData, initialFormData); } -// 更多操作 +/** + * 更多操作 + */ function openRoleActions(item: RoleItem) { const commands: ActionSheetCommand[] = []; @@ -265,7 +275,9 @@ function openRoleActions(item: RoleItem) { actionSheetRef.value?.open(commands); } -// 跳转分配权限页 +/** + * 跳转分配权限页 + */ function navigateToAssignPerm(id: number) { uni.navigateTo({ url: "/subPages/work/role/assign-perm/index?id=" + id, diff --git a/src/subPages/work/user/index.vue b/src/subPages/work/user/index.vue index 72fdcc6..9e9fa41 100644 --- a/src/subPages/work/user/index.vue +++ b/src/subPages/work/user/index.vue @@ -270,7 +270,7 @@ const showCreateTimePicker = ref(false); const createTimeRange = ref([]); const formatDay = (ts: number) => dayjs(ts).format("YYYY-MM-DD"); const createTimeLabel = computed(() => - createTimeRange.value.length === 2 ? createTimeRange.value.map(formatDay).join(" ~ ") : "" + createTimeRange.value.length === 2 ? createTimeRange.value.map(formatDay).join(" ~ ") : "", ); const initialFormData: UserForm = { @@ -354,11 +354,15 @@ const { retry, } = usePagedList(UserAPI.getPage, queryParams); -// 加载列表(回到第一页) +/** + * 加载列表(回到第一页) + */ function loadUserList() { reload(); } -// 应用筛选并刷新 +/** + * 应用筛选并刷新 + */ function applyUserFilter() { if (createTimeRange.value.length === 2) { queryParams.createTime = createTimeRange.value.map(formatDay).join(","); @@ -368,7 +372,9 @@ function applyUserFilter() { closeOutside(); loadUserList(); } -// 重置筛选并刷新 +/** + * 重置筛选并刷新 + */ function resetUserFilter() { queryParams.keywords = ""; createTimeRange.value = []; @@ -378,7 +384,9 @@ function resetUserFilter() { applyUserFilter(); } -// 打开弹窗(新增/编辑) +/** + * 打开弹窗(新增/编辑) + */ async function openUserDialog(user?: UserItem) { formRef.value?.reset(); Object.assign(formData, initialFormData); @@ -411,7 +419,9 @@ async function openUserDialog(user?: UserItem) { } } -// 提交表单 +/** + * 提交表单 + */ function submitUserForm() { formRef.value?.validate().then(({ valid }: { valid: boolean }) => { if (!valid) return; @@ -432,7 +442,9 @@ function submitUserForm() { }); } -// 关闭弹窗 +/** + * 关闭弹窗 + */ function closeUserDialog() { dialog.visible = false; formRef.value?.reset(); @@ -454,7 +466,9 @@ const resetPwdRules = toFormSchema({ ], }); -// 更多操作 +/** + * 更多操作 + */ function openUserActions(item: UserItem) { const commands: ActionSheetCommand[] = []; @@ -492,7 +506,9 @@ function openUserActions(item: UserItem) { actionSheetRef.value?.open(commands); } -// 打开重置密码弹窗 +/** + * 打开重置密码弹窗 + */ function openResetPwdDialog(item: UserItem) { resetPwdForm.password = ""; resetPwdDialog.userId = item.id; @@ -502,7 +518,9 @@ function openResetPwdDialog(item: UserItem) { }); } -// 重置密码 +/** + * 重置密码 + */ async function handleResetPassword() { const valid = await resetPwdFormRef.value?.validate(); if (!valid || valid.valid === false) return; @@ -556,18 +574,18 @@ export default { options: { styleIsolation: "shared" } }; .user-card__name { overflow: hidden; + text-overflow: ellipsis; font-size: 32rpx; font-weight: 700; - text-overflow: ellipsis; white-space: nowrap; } .user-card__role { display: block; overflow: hidden; + text-overflow: ellipsis; font-size: 24rpx; color: var(--color-text-secondary); - text-overflow: ellipsis; white-space: nowrap; } @@ -589,9 +607,9 @@ export default { options: { styleIsolation: "shared" } }; .user-card__contact-text { margin-left: 8rpx; overflow: hidden; + text-overflow: ellipsis; font-size: 24rpx; color: var(--color-text-secondary); - text-overflow: ellipsis; white-space: nowrap; } diff --git a/src/types/env.d.ts b/src/types/env.d.ts index a6fbbdb..431866c 100644 --- a/src/types/env.d.ts +++ b/src/types/env.d.ts @@ -1,18 +1,18 @@ -// src/types/env.d.ts +/// + /** * 环境变量类型声明 */ interface ImportMetaEnv { - /** - * 应用端口 - */ - VITE_APP_PORT: number; - /** API基础路径 */ - readonly VITE_APP_BASE_API: string; - /** API服务器URL */ - readonly VITE_APP_API_URL: string; - - /** 应用版本号 */ + /** 应用端口 */ + readonly VITE_APP_PORT: string; + /** 请求前缀,开发为 /dev-api,生产为 /prod-api */ + readonly VITE_API_BASE: string; + /** 接口地址,小程序/App 直接请求这里 */ + readonly VITE_API_URL: string; + /** 工作台-应用监控地址,未配置时用代码内的默认值 */ + readonly VITE_APP_MONITOR_URL?: string; + /** 应用版本号,构建时注入 */ readonly VITE_APP_VERSION: string; } diff --git a/src/types/global.d.ts b/src/types/global.d.ts index 4b73cae..57c2848 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -10,10 +10,10 @@ declare global { /** - * 微信小程序全局对象。 + * 微信小程序全局对象 * * 条件编译内的 `wx` 在微信端运行时存在,但 vue-tsc 仍会解析源码, - * 因此这里提供最小声明,避免页面直接报未定义。 + * 因此这里提供最小声明,避免页面直接报未定义 */ const wx: { request(options: UniApp.RequestOptions): void; diff --git a/src/utils/auth.ts b/src/utils/auth.ts index c6a6d77..411058b 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -3,7 +3,7 @@ import { ACCESS_TOKEN_KEY, REFRESH_TOKEN_KEY } from "@/constants"; let sessionRevision = 0; /** - * 获取会话版本,用于识别登录状态切换。 + * 获取会话版本,用于识别登录状态切换 */ export function getAuthSessionRevision(): number { return sessionRevision; @@ -19,7 +19,7 @@ export function getAccessToken(): string | null { } /** - * 保存成对凭证;正常续期保留会话版本,避免打断同账号的在途请求。 + * 保存成对凭证;正常续期保留会话版本,避免打断同账号的在途请求 */ export function setTokens(accessToken: string, refreshToken: string, renewing = false): void { Storage.set(ACCESS_TOKEN_KEY, accessToken); @@ -28,7 +28,7 @@ export function setTokens(accessToken: string, refreshToken: string, renewing = } /** - * 读取已保存的刷新令牌,缺失时返回 null。 + * 读取已保存的刷新令牌,缺失时返回 null */ export function getRefreshToken(): string | null { return Storage.get(REFRESH_TOKEN_KEY) || null; @@ -44,7 +44,7 @@ export function clearTokens(): void { } /** - * 获取含查询参数的当前页面路径。 + * 获取含查询参数的当前页面路径 */ function getCurrentPagePath(): string { const pages = getCurrentPages(); @@ -64,7 +64,7 @@ function getCurrentPagePath(): string { /** * 确保已登录 * - * 缺少令牌时跳转登录页并带上来路地址,navigateTo 失败(页面栈已满)时改用 reLaunch。 + * 缺少令牌时跳转登录页并带上来路地址,navigateTo 失败(页面栈已满)时改用 reLaunch * * @returns 是否已登录 */ @@ -75,7 +75,8 @@ export function ensureAuthenticated(): boolean { uni.navigateTo({ url: `/pages/login/index?redirect=${redirect}`, fail: () => { - uni.reLaunch({ url: "/pages/login/index" }); + // 页面栈已满时改用 reLaunch,回跳地址同样带上 + uni.reLaunch({ url: `/pages/login/index?redirect=${redirect}` }); }, }); diff --git a/src/utils/error.ts b/src/utils/error.ts index f26ecdb..7b2306d 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -1,8 +1,5 @@ /** - * 从 catch 捕获的 unknown 错误中提取提示文案 - * @param error catch 捕获的错误对象 - * @param fallback 无有效信息时的兜底文案 - * @returns 错误提示文案 + * 提取错误提示文案,无有效信息时返回默认文案 */ export function getErrorMessage(error: unknown, fallback: string): string { if (error instanceof Error && error.message) return error.message; diff --git a/src/utils/form-schema.ts b/src/utils/form-schema.ts index 465b5d9..078ef6b 100644 --- a/src/utils/form-schema.ts +++ b/src/utils/form-schema.ts @@ -1,6 +1,8 @@ import type { FormSchema } from "@wot-ui/ui/components/wd-form/types"; -/** 单条校验规则(v1 FormRules 风格) */ +/** + * 业务侧声明的字段校验规则,由 toFormSchema 转为 wot v2 schema + */ export interface FormRule { /** 是否必填 */ required?: boolean; @@ -12,20 +14,16 @@ export interface FormRule { min?: number; /** 字符串长度上限(含) */ max?: number; - /** - * 自定义校验:返回 true 表示通过;返回 false 按 message 提示; - * 返回字符串则以该文案提示 - */ + /** 自定义校验:true 表示通过,false 使用 message,字符串作为错误文案 */ validator?: (value: unknown, model: Record) => boolean | string; } /** - * v1 FormRules → v2 FormSchema 适配器 - * 将旧版 rules 格式转换为 v2 的 schema 格式 + * 将旧版字段校验规则转换为 Wot UI v2 schema */ export function toFormSchema(rules: Record): FormSchema { return { - validate(model: Record) { + validate(model: Record) { const issues: { path: Array; message: string }[] = []; for (const [field, fieldRules] of Object.entries(rules)) { const value = model[field]; @@ -56,9 +54,13 @@ export function toFormSchema(rules: Record): FormSchema { }); break; } - if (rule.pattern && !rule.pattern.test(value)) { - issues.push({ path: [field], message: rule.message || `${field} 格式不正确` }); - break; + if (rule.pattern) { + // 带 g 标志的正则会记忆 lastIndex,复用同一实例前必须归零 + rule.pattern.lastIndex = 0; + if (!rule.pattern.test(value)) { + issues.push({ path: [field], message: rule.message || `${field} 格式不正确` }); + break; + } } } if (rule.validator) { @@ -79,10 +81,16 @@ export function toFormSchema(rules: Record): FormSchema { }; } -/** wd-form 实例引用,仅声明本项目用到的方法 */ +/** + * wd-form 实例引用,仅声明本项目用到的方法 + */ export interface WdFormRef { - /** 校验表单,传字段名时只校验对应字段 */ + /** + * 校验表单,传字段名时只校验对应字段 + */ validate(field?: string): Promise<{ valid: boolean; errors: { message: string }[] }>; - /** 重置校验状态 */ + /** + * 重置校验状态 + */ reset(): void; } diff --git a/src/utils/format.ts b/src/utils/format.ts index 826c94d..d9c78ad 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -1,9 +1,12 @@ +/** + * 把字节数格式化为带单位的文本,KB 及以上保留两位小数 + */ export function formatBytes(size: number): string { if (size < 1024) { return size + "B"; - } else if (size < 1024 * 1024) { - return (size / 1024).toFixed(2) + "KB"; - } else { - return (size / 1024 / 1024).toFixed(2) + "MB"; } + if (size < 1024 * 1024) { + return (size / 1024).toFixed(2) + "KB"; + } + return (size / 1024 / 1024).toFixed(2) + "MB"; } diff --git a/src/utils/permission.ts b/src/utils/permission.ts index cce8366..ab2471a 100644 --- a/src/utils/permission.ts +++ b/src/utils/permission.ts @@ -1,7 +1,9 @@ import { useUserStore } from "@/store"; import { ROLE_ROOT, PERM_ALL } from "@/constants"; -/** 判断当前用户是否拥有指定权限点(任一命中即可,根角色或通配权限直接放行) */ +/** + * 检查当前用户是否具备任一指定权限,根角色与通配权限直接通过 + */ export function hasPermission(perm: string | string[]): boolean { if (!perm) return false; @@ -18,7 +20,9 @@ export function hasPermission(perm: string | string[]): boolean { return keys.some((key) => perms.includes(key)); } -/** 菜单入口判权:无权限码的入口视为公开,其余按当前账号权限判断 */ +/** + * 判断菜单权限,未配置权限码时允许显示 + */ export function isMenuAllowed(perm: string): boolean { return !perm || hasPermission(perm); } diff --git a/src/utils/realtime/client.ts b/src/utils/realtime/client.ts index 05c8705..c4458aa 100644 --- a/src/utils/realtime/client.ts +++ b/src/utils/realtime/client.ts @@ -8,7 +8,7 @@ import type { } from "./protocol"; /** - * 实时连接对外显示的状态。 + * 实时连接对外显示的状态 */ export enum RealtimeConnectionStatus { DISCONNECTED = "disconnected", @@ -17,17 +17,17 @@ export enum RealtimeConnectionStatus { } /** - * 连接客户端所需的票据申请接口。 + * 连接客户端所需的票据申请接口 */ interface RealtimeClientOptions { /** 服务未启用或无权连接时返回 null。 */ readonly requestTicket: ( - request: CreateRealtimeTicketRequest + request: CreateRealtimeTicketRequest, ) => Promise; } /** - * 当前连接的传输对象、超时与重连计时。 + * 当前连接的传输对象、超时与重连计时 */ interface ConnectionAttempt { socket: UniApp.SocketTask | null; @@ -39,7 +39,7 @@ interface ConnectionAttempt { } /** - * 已校验服务端消息的处理器。 + * 已校验服务端消息的处理器 */ type MessageHandler = (message: RealtimeServerMessage) => void; @@ -47,18 +47,21 @@ const MAX_RECONNECT_ATTEMPTS = 10; const STOP_RECONNECT_CODES = new Set([1000, 1008, 1009, 4003, 4009]); /** - * 将一次性票据写入 WebSocket 握手地址。 + * 将一次性票据写入 WebSocket 握手地址 */ function createWebSocketUrl(ticket: string): string { - let origin = import.meta.env.VITE_APP_API_URL.replace(/\/$/, ""); + let origin: string; // #ifdef H5 origin = window.location.origin; // #endif + // #ifndef H5 + origin = import.meta.env.VITE_API_URL.replace(/\/$/, ""); + // #endif return `${origin.replace(/^http/, "ws")}/api/v1/realtime/ws?ticket=${encodeURIComponent(ticket)}`; } /** - * 获取当前编译平台的协议标识。 + * 获取当前编译平台的协议标识 */ function getPlatform(): CreateRealtimeTicketRequest["platform"] { let platform: CreateRealtimeTicketRequest["platform"] = "web"; @@ -72,7 +75,7 @@ function getPlatform(): CreateRealtimeTicketRequest["platform"] { } /** - * 一次有效连接、一个重连任务;所有迟到回调都受 attempt 身份约束。 + * 一次有效连接、一个重连任务;所有迟到回调都受 attempt 身份约束 */ export function createRealtimeClient(options: RealtimeClientOptions) { const status = shallowRef(RealtimeConnectionStatus.DISCONNECTED); @@ -82,19 +85,19 @@ export function createRealtimeClient(options: RealtimeClientOptions) { let retryTimer: ReturnType | null = null; let retryCount = 0; let enabled = false; - // 协议或权限拒绝后暂停自动恢复,由 disconnect 重置。 + // 协议或权限拒绝后暂停自动恢复,由 disconnect 重置 let blocked = false; let topics: readonly RealtimeTopic[] = ["notice"]; /** - * 按对象身份识别当前连接,隔离旧连接的回调。 + * 按对象身份识别当前连接,隔离旧连接的回调 */ function isCurrent(attempt: ConnectionAttempt): boolean { return current === attempt; } /** - * 逐个分发消息,隔离订阅者异常。 + * 逐个分发消息,隔离订阅者异常 */ function notify(message: RealtimeServerMessage): void { for (const handler of handlers) { @@ -107,7 +110,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 按退避间隔安排重连,最多保留一个待执行任务。 + * 按退避间隔安排重连,最多保留一个待执行任务 */ function scheduleRetry(minimumDelay = 0): void { if (!enabled || blocked || retryTimer !== null) return; @@ -115,7 +118,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { enabled = false; return; } - // 指数退避叠加随机延迟,避免网络恢复时大量客户端同时重连。 + // 指数退避叠加随机延迟,避免网络恢复时大量客户端同时重连 const maximum = Math.min(1_000 * 2 ** retryCount++, 30_000); const delay = Math.max(minimumDelay, maximum / 2 + (Math.random() * maximum) / 2); retryTimer = setTimeout(() => { @@ -125,11 +128,11 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 结束本次连接尝试,最多安排一次重连。 + * 结束本次连接尝试,最多安排一次重连 */ function finish(attempt: ConnectionAttempt, retry: boolean, code = 4000, minimumDelay = 0): void { if (!isCurrent(attempt)) return; - // 稳定在线后才重置预算,短暂连上不能使快速失败无限重试。 + // 稳定在线后才重置预算,短暂连上不能使快速失败无限重试 if (attempt.connectedAt && Date.now() - attempt.connectedAt >= 30_000) retryCount = 0; current = null; if (attempt.timer !== null) clearTimeout(attempt.timer); @@ -139,7 +142,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { try { socket.close({ code, reason: "client close" }); } catch { - // 迟到回调已失效,不另建恢复链。 + // 迟到回调已失效,不另建恢复链 } } if (!retry && enabled) blocked = true; @@ -147,7 +150,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 检查连接期限,超时后结束本次尝试。 + * 检查连接期限,超时后结束本次尝试 */ function checkDeadline(attempt: ConnectionAttempt): boolean { if (!isCurrent(attempt)) return false; @@ -157,7 +160,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 用一个定时器检查建连或心跳超时。 + * 用一个定时器检查建连或心跳超时 */ function armDeadline(attempt: ConnectionAttempt): void { if (!isCurrent(attempt)) return; @@ -167,12 +170,12 @@ export function createRealtimeClient(options: RealtimeClientOptions) { attempt.timer = null; if (checkDeadline(attempt)) armDeadline(attempt); }, - Math.min(Math.max(1, attempt.deadline - Date.now()), 2_147_483_647) + Math.min(Math.max(1, attempt.deadline - Date.now()), 2_147_483_647), ); } /** - * 应答服务端心跳,发送失败时结束本次尝试。 + * 应答服务端心跳,发送失败时结束本次尝试 */ function sendPong(attempt: ConnectionAttempt, pingId: string): boolean { if (!isCurrent(attempt)) return false; @@ -194,7 +197,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 校验消息,确认连接并更新心跳期限。 + * 校验消息,确认连接并更新心跳期限 */ function handleMessage(attempt: ConnectionAttempt, data: unknown): void { if (!checkDeadline(attempt)) return; @@ -229,14 +232,14 @@ export function createRealtimeClient(options: RealtimeClientOptions) { if (!sendPong(attempt, message.id)) return; armDeadline(attempt); } else if (status.value !== RealtimeConnectionStatus.CONNECTED) { - // ready 前的业务提示由连接成功后的 HTTP 补拉覆盖。 + // ready 前的业务提示由连接成功后的 HTTP 补拉覆盖 return; } notify(message); } /** - * 领取票据并建立连接,忽略过期尝试的回调。 + * 领取票据并建立连接,忽略过期尝试的回调 */ async function start(): Promise { if (!enabled || blocked || current) return; @@ -250,7 +253,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { }; current = attempt; status.value = RealtimeConnectionStatus.CONNECTING; - // 领票与握手共用总超时,领票悬挂也会结束本次尝试。 + // 领票与握手共用总超时,领票悬挂也会结束本次尝试 armDeadline(attempt); try { const ticket = await options.requestTicket({ @@ -268,7 +271,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { complete: () => {}, fail: () => finish(attempt, true), }); - // 某些平台会在返回 SocketTask 前同步触发 fail。 + // 某些平台会在返回 SocketTask 前同步触发 fail if (!isCurrent(attempt)) { socket.close({}); return; @@ -290,7 +293,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 重复调用只检查健康;改变主题时先结束旧连接。 + * 重复调用只检查健康;改变主题时先结束旧连接 */ function connect(nextTopics: readonly RealtimeTopic[] = ["notice"]): void { const desired = [...new Set(["notice", ...nextTopics])].sort(); @@ -307,7 +310,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 停止连接并清理定时器与重连状态。 + * 停止连接并清理定时器与重连状态 */ function disconnect(): void { enabled = false; @@ -320,7 +323,7 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 注册消息处理器,并返回取消订阅函数。 + * 注册消息处理器,并返回取消订阅函数 */ function onMessage(handler: MessageHandler): () => void { handlers.add(handler); @@ -333,6 +336,6 @@ export function createRealtimeClient(options: RealtimeClientOptions) { } /** - * 实时连接客户端的状态与操作。 + * 实时连接客户端的状态与操作 */ export type RealtimeClient = ReturnType; diff --git a/src/utils/realtime/protocol.ts b/src/utils/realtime/protocol.ts index 684b914..04f2e95 100644 --- a/src/utils/realtime/protocol.ts +++ b/src/utils/realtime/protocol.ts @@ -1,23 +1,23 @@ /** - * 实时消息协议版本。 + * 实时消息协议版本 */ export const REALTIME_PROTOCOL_VERSION = 1 as const; /** - * 可订阅的业务主题。 + * 可订阅的业务主题 */ export const REALTIME_TOPICS = ["notice", "dict", "presence"] as const; /** - * 客户端可订阅的实时主题。 + * 客户端可订阅的实时主题 */ export type RealtimeTopic = (typeof REALTIME_TOPICS)[number]; /** - * 实时连接使用的客户端平台标识。 + * 实时连接使用的客户端平台标识 */ export type RealtimeClientPlatform = "web" | "mp-weixin" | "app"; /** - * 申请握手票据的客户端信息与订阅主题。 + * 申请握手票据的客户端信息与订阅主题 */ export interface CreateRealtimeTicketRequest { readonly clientInstanceId: string; @@ -26,14 +26,14 @@ export interface CreateRealtimeTicketRequest { } /** - * 一次性握手票据。 + * 一次性握手票据 */ export interface RealtimeTicketResponse { readonly ticket: string; } /** - * 节点在线统计,用户数按用户 ID 去重。 + * 节点在线统计,用户数按用户 ID 去重 */ export interface PresenceSnapshot { readonly onlineUsers: number; @@ -43,7 +43,7 @@ export interface PresenceSnapshot { } /** - * 服务端消息及各类业务载荷。 + * 服务端消息及各类业务载荷 */ export type RealtimeServerMessage = { readonly version: typeof REALTIME_PROTOCOL_VERSION; @@ -60,7 +60,7 @@ export type RealtimeServerMessage = { ); /** - * 客户端对指定心跳的应答。 + * 客户端对指定心跳的应答 */ export interface HeartbeatPongMessage { readonly version: typeof REALTIME_PROTOCOL_VERSION; @@ -68,12 +68,12 @@ export interface HeartbeatPongMessage { readonly payload: { readonly pingId: string }; } /** - * 通知发布或撤回的变更消息。 + * 通知发布或撤回的变更消息 */ export type NoticeChangedMessage = Extract; /** - * 拒绝服务端消息的校验原因。 + * 拒绝服务端消息的校验原因 */ type RejectionReason = | "message-too-large" @@ -83,7 +83,7 @@ type RejectionReason = | "invalid-payload"; /** - * 区分有效消息、未知类型与协议错误的解析结果。 + * 区分有效消息、未知类型与协议错误的解析结果 */ export type ParseRealtimeMessageResult = | { readonly kind: "message"; readonly message: RealtimeServerMessage } @@ -91,7 +91,7 @@ export type ParseRealtimeMessageResult = | { readonly kind: "rejected"; readonly reason: RejectionReason }; /** - * 握手票据响应的校验结果。 + * 握手票据响应的校验结果 */ export type ParseRealtimeTicketResult = | { readonly kind: "success"; readonly value: RealtimeTicketResponse } @@ -101,14 +101,14 @@ const MAX_MESSAGE_BYTES = 16_384; const MAX_TIMER_DELAY_MS = 2_147_483_647; /** - * 判断输入是否为非空、非数组对象。 + * 判断输入是否为非空、非数组对象 */ function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value); } /** - * 校验文本长度及首尾空白。 + * 校验文本长度及首尾空白 */ function isText(value: unknown, maximumLength = 128): value is string { return ( @@ -120,21 +120,21 @@ function isText(value: unknown, maximumLength = 128): value is string { } /** - * 校验非负安全整数。 + * 校验非负安全整数 */ function isNonNegativeInteger(value: unknown): value is number { return typeof value === "number" && Number.isSafeInteger(value) && value >= 0; } /** - * 校验可用于定时器的正整数毫秒数。 + * 校验可用于定时器的正整数毫秒数 */ function isTimerDelay(value: unknown): value is number { return isNonNegativeInteger(value) && value > 0 && value <= MAX_TIMER_DELAY_MS; } /** - * 校验 UTC 时间及日期有效性。 + * 校验 UTC 时间及日期有效性 */ function isUtcTimestamp(value: unknown): value is string { if (typeof value !== "string") return false; @@ -150,7 +150,7 @@ function isUtcTimestamp(value: unknown): value is string { } /** - * 计算 UTF-8 字节数,超过消息上限时提前结束。 + * 计算 UTF-8 字节数,超过消息上限时提前结束 */ function utf8ByteLength(value: string): number { let bytes = 0; @@ -163,7 +163,7 @@ function utf8ByteLength(value: string): number { } /** - * 解析并校验服务端消息,业务层只接收可信结构。 + * 解析并校验服务端消息,业务层只接收可信结构 */ export function parseRealtimeServerMessage(text: string): ParseRealtimeMessageResult { if (utf8ByteLength(text) > MAX_MESSAGE_BYTES) { @@ -258,7 +258,7 @@ export function parseRealtimeServerMessage(text: string): ParseRealtimeMessageRe } /** - * 校验领票接口,避免无效数据进入连接流程。 + * 校验领票接口,避免无效数据进入连接流程 */ export function parseRealtimeTicket(value: unknown): ParseRealtimeTicketResult { const invalid: ParseRealtimeTicketResult = { @@ -275,7 +275,7 @@ export function parseRealtimeTicket(value: unknown): ParseRealtimeTicketResult { } /** - * 生成对应服务端心跳的应答消息。 + * 生成对应服务端心跳的应答消息 */ export function createHeartbeatPong(pingId: string): HeartbeatPongMessage { return { diff --git a/src/utils/request.ts b/src/utils/request.ts index 7ac8ad4..d0f56e5 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -8,30 +8,30 @@ let unauthorizedHandler: (() => void) | null = null; let refreshHandler: (() => Promise) | null = null; /** - * 由启动入口注入,避免请求模块与用户 store 循环依赖。 + * 由启动入口注入,避免请求模块与用户 store 循环依赖 */ export function setUnauthorizedHandler(handler: () => void): void { unauthorizedHandler = handler; } /** - * 注册会话续期回调,避免请求模块依赖用户 store。 + * 注册会话续期回调,避免请求模块依赖用户 store */ export function setRefreshHandler(handler: () => Promise): void { refreshHandler = handler; } /** - * HTTP、业务或网络请求失败信息。 + * HTTP、业务或网络请求失败信息 */ export class RequestError extends Error { /** - * 保存响应状态与业务码;网络失败的状态为 0。 + * 保存响应状态与业务码;网络失败的状态为 0 */ constructor( message: string, public readonly statusCode: number, - public readonly code = String(statusCode) + public readonly code = String(statusCode), ) { super(message); this.name = "RequestError"; @@ -56,11 +56,11 @@ interface ApiResponse { } /** - * 访问令牌过期时合并续期并重试一次;匿名接口由调用方处理错误。 + * 访问令牌过期时合并续期并重试一次;匿名接口由调用方处理错误 */ async function request( options: RequestOptions, - retried = false + retried = false, ): Promise { const revision = getAuthSessionRevision(); const token = options.anonymous ? null : getAccessToken(); @@ -79,11 +79,11 @@ async function request( if (options.anonymous) throw new RequestError(message, 401, code); if (!retried && token && refreshHandler) { try { - // 较早发出的请求可能晚于续期返回,此时直接使用已更新的凭证。 + // 较早发出的请求可能晚于续期返回,此时直接使用已更新的凭证 if (getAccessToken() === token) await refreshHandler(); } catch (error) { if (revision !== getAuthSessionRevision()) throw new RequestError("登录会话已切换", 0); - // 网络或服务故障不清空登录态,用户可稍后重试。 + // 网络或服务故障不清空登录态,用户可稍后重试 if (!(error instanceof RequestError) || error.statusCode !== 401) throw error; expireSession(); throw error; @@ -102,22 +102,22 @@ async function request( } /** - * 按当前平台发送 HTTP 请求并附加访问令牌。 + * 按当前平台发送 HTTP 请求并附加访问令牌 */ function send( options: RequestOptions, - token: string | null + token: string | null, ): Promise { const header = { ...options.header }; if (token) header.Authorization = `Bearer ${token}`; if (options.anonymous) delete header.Authorization; let url: string; - // #ifdef MP-WEIXIN - url = `${import.meta.env.VITE_APP_API_URL}${options.url}`; + // #ifdef H5 + url = `${import.meta.env.VITE_API_BASE}${options.url}`; // #endif - // #ifndef MP-WEIXIN - url = `${import.meta.env.VITE_APP_BASE_API}${options.url}`; + // #ifndef H5 + url = `${import.meta.env.VITE_API_URL}${options.url}`; // #endif return new Promise((resolve, reject) => { @@ -135,7 +135,7 @@ function send( } /** - * 清理失效会话并合并登录页跳转。 + * 清理失效会话并合并登录页跳转 */ function expireSession(): void { if (unauthorizedHandler) unauthorizedHandler(); diff --git a/src/utils/storage.ts b/src/utils/storage.ts index 5829f9b..3b77666 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -1,34 +1,41 @@ -/** - * 存储工具类 - * 提供uni-app Storage操作方法 - */ - import { ACCESS_TOKEN_KEY, REFRESH_TOKEN_KEY, THEME_MODE_KEY, THEME_COLOR_KEY } from "@/constants"; -/** 清理缓存时保留的键:登录态与主题偏好(清掉会导致下次启动退出登录、设置被重置) */ +// 清理业务缓存时保留登录凭证和主题设置 const PRESERVED_KEYS = [ACCESS_TOKEN_KEY, REFRESH_TOKEN_KEY, THEME_MODE_KEY, THEME_COLOR_KEY]; +/** + * 将值序列化为 JSON 后同步保存 + */ function set(key: string, value: T): void { uni.setStorageSync(key, JSON.stringify(value)); } +/** + * 读取 JSON 缓存,缺失时返回默认值 + */ function get(key: string, defaultValue?: T): T { const value = uni.getStorageSync(key); - if (!value) return defaultValue as T; + // 只把空值视为缺失,避免把 0、false 这类合法缓存当成未写入 + if (value === "" || value === null || value === undefined) return defaultValue as T; try { return JSON.parse(value); } catch { - // 如果解析失败,返回原始字符串;历史数据可能未经 JSON 序列化,类型由调用方保证 + // 兼容未序列化的旧缓存,解析失败时保留原值 return value as unknown as T; } } +/** + * 删除指定缓存项 + */ function remove(key: string): void { uni.removeStorageSync(key); } -/** 估算字符串 UTF-8 字节数(小程序没有 Blob,不能靠它算长度) */ +/** + * 按 UTF-8 估算文本字节数 + */ function byteLength(value: string): number { let bytes = 0; for (let i = 0; i < value.length; i += 1) { @@ -38,7 +45,9 @@ function byteLength(value: string): number { return bytes; } -/** 可清理缓存的字节数:只统计登录态与主题偏好之外的键 */ +/** + * 估算可清理缓存内容的字节数,不含登录凭证与主题设置 + */ function getClearableBytes(): number { const { keys } = uni.getStorageInfoSync(); return keys.reduce((total, key) => { @@ -55,9 +64,9 @@ function getClearableBytes(): number { } /** - * 清理业务缓存:保留登录态与主题偏好 - * 不能用 uni.clearStorage(),它会连 token 和主题一起清掉 - * @returns 清除的键数量 + * 清理业务缓存,保留登录凭证与主题设置,用户信息等缓存一并清除 + * + * @returns 删除的缓存项数 */ function clearCache(): number { const { keys } = uni.getStorageInfoSync(); @@ -72,6 +81,9 @@ function clearCache(): number { return removed; } +/** + * 本地 JSON 存储与业务缓存清理 + */ export const Storage = { set, get, diff --git a/src/utils/tree.ts b/src/utils/tree.ts index d30bfb7..1250457 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -1,15 +1,10 @@ /** - * 沿选项树深度优先查找目标节点的完整节点链(含自身) - * - * 值比较统一转为字符串,兼容选项值为 number、目标值为 string(或相反)的场景 - * - * @param options 选项树,如部门选项 - * @param targetValue 目标节点值 - * @returns 从根到目标的节点链,未命中返回 null + * 查找从根到目标选项的完整路径,未找到返回 null + * 按字符串比较节点值,兼容字符串与数字 ID */ export function findOptionChain( options: OptionType[], - targetValue: string | number + targetValue: string | number, ): OptionType[] | null { for (const option of options) { if (String(option.value) === String(targetValue)) { @@ -26,19 +21,14 @@ export function findOptionChain( } /** - * 递归把带 children 的列表转为树节点 + * 递归转换树节点,保留原有父子关系 * - * 源列表的层级由 children 字段表达,节点字段与叶子形态由调用方决定 - * - * @param items 源列表 - * @param getChildren 取节点的子列表,无子级时返回 undefined - * @param node 单节点映射,children 为已构建的子节点数组,叶子节点为空数组 - * @returns 树节点列表 + * @param node 节点转换函数,叶子节点的 children 为空数组 */ export function toTree( items: TSource[], getChildren: (item: TSource) => TSource[] | undefined, - node: (item: TSource, children: TNode[]) => TNode + node: (item: TSource, children: TNode[]) => TNode, ): TNode[] { return items.map((item) => node(item, toTree(getChildren(item) ?? [], getChildren, node))); } diff --git a/stylelint.config.cjs b/stylelint.config.cjs new file mode 100644 index 0000000..1d0e26c --- /dev/null +++ b/stylelint.config.cjs @@ -0,0 +1,40 @@ +module.exports = { + extends: [ + "stylelint-config-recommended-scss", + "stylelint-config-recess-order", + // 提供 Vue 解析与规则,必须放在最后 + "stylelint-config-recommended-vue/scss", + ], + overrides: [ + { + files: ["**/*.{vue,html}"], + customSyntax: "postcss-html", + }, + { + files: ["**/*.{css,scss}"], + customSyntax: "postcss-scss", + }, + ], + rules: { + "at-rule-no-unknown": [true, { ignoreAtRules: ["apply", "use", "forward"] }], + "custom-property-pattern": null, + "declaration-property-value-no-unknown": null, + "import-notation": "string", + "keyframes-name-pattern": null, + "no-descending-specificity": null, + "no-empty-source": null, + "no-invalid-position-declaration": null, + "selector-class-pattern": null, + "selector-pseudo-class-no-unknown": [ + true, + { ignorePseudoClasses: ["global", "export", "deep"] }, + ], + "selector-pseudo-element-no-unknown": [ + true, + { ignorePseudoElements: ["deep", "slotted", "global", "v-deep", "v-slotted", "v-global"] }, + ], + // 小程序页面根节点用 page 选择器 + "selector-type-no-unknown": [true, { ignoreTypes: ["page"] }], + "unit-no-unknown": null, + }, +}; diff --git a/tsconfig.json b/tsconfig.json index c7e609d..d2bcac1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,6 @@ "nativeTags": ["block", "component", "template", "slot"], // 模板类型检查在 vue-tsc 默认工程里关闭:@wot-ui/ui 内部 SFC 模板(canvas id / inputmode // 等原生属性写法)在严格模板模式下报错,工程无法只针对自有文件开启。 - // 自有文件的模板检查走 tsconfig.templates.json + scripts/check-templates.mjs。 "strictTemplates": false, "skipTemplateCodegen": true }, diff --git a/tsconfig.templates.json b/tsconfig.templates.json deleted file mode 100644 index 39c7a93..0000000 --- a/tsconfig.templates.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - // 模板类型检查专用配置:开启 strictTemplates 后 @wot-ui/ui 内部 SFC 会报错, - // 因此该配置只用于 scripts/check-templates.mjs,脚本只统计 src 下的错误 - "extends": "./tsconfig.json", - "vueCompilerOptions": { - "plugins": ["@uni-helper/uni-types/volar-plugin"], - "nativeTags": ["block", "component", "template", "slot"], - "strictTemplates": true, - "skipTemplateCodegen": false - } -} diff --git a/unocss.config.ts b/unocss.config.ts index 26f37c5..d0cd155 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -1,4 +1,4 @@ -import presetWeapp from "unocss-preset-weapp"; +import presetWeapp from "unocss-preset-weapp"; import { extractorAttributify, transformerClass } from "unocss-preset-weapp/transformer"; const { presetWeappAttributify, transformerAttributify } = extractorAttributify(); diff --git a/vite.config.ts b/vite.config.ts index a041618..a6d6e57 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -38,6 +38,8 @@ export default defineConfig(async ({ mode }: ConfigEnv): Promise => const UnoCss = await import("unocss/vite").then((i) => i.default); const env = loadEnv(mode, process.cwd()); const isProd = mode === "production"; + // 接口地址,开发服务器的代理转发目标 + const proxyTarget = env.VITE_API_URL; const pkg = JSON.parse(readFileSync(resolve(process.cwd(), "package.json"), "utf-8")) as { version?: string; @@ -54,15 +56,17 @@ export default defineConfig(async ({ mode }: ConfigEnv): Promise => port: +env.VITE_APP_PORT, open: true, proxy: { - "/api/v1/realtime/ws": { - target: env.VITE_PROXY_TARGET || env.VITE_APP_API_URL, - ws: true, - }, - [env.VITE_APP_BASE_API]: { + [env.VITE_API_BASE]: { changeOrigin: true, - // 未配置代理目标的环境回落到接口地址 - target: env.VITE_PROXY_TARGET || env.VITE_APP_API_URL, - rewrite: (path) => path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""), + target: proxyTarget, + rewrite: (path) => path.slice(env.VITE_API_BASE.length), + }, + // 实时推送的 WebSocket 握手,单独代理并改写 Origin 供后端校验来源 + "/api/v1/realtime/ws": { + changeOrigin: true, + rewriteWsOrigin: true, + target: proxyTarget, + ws: true, }, }, },