From 57be2a10f4fca14ac2824081e3252cc575b3ccfd Mon Sep 17 00:00:00 2001 From: sjeam <359824901@qq.com> Date: Tue, 19 Aug 2025 11:09:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .commitlintrc.cjs | 3 + .editorconfig | 13 + .github/release.yml | 31 + .github/workflows/auto-merge.yml | 44 + .github/workflows/release-log.yml | 119 + .gitignore | 44 + .husky/commit-msg | 1 + .husky/pre-commit | 1 + .npmrc | 6 + .prettierignore | 14 + .prettierrc.cjs | 19 + .vscode/extensions.json | 20 + .vscode/settings.json | 118 + .vscode/vue3.code-snippets | 56 + LICENSE | 21 + README.md | 93 + env/.env | 28 + env/.env.development | 6 + env/.env.production | 6 + env/.env.test | 4 + eslint.config.mjs | 22 + favicon.ico | Bin 0 -> 14575 bytes index.html | 26 + manifest.config.ts | 138 + openapi-ts-request.config.ts | 13 + package.json | 159 + pages.config.ts | 23 + patches/@dcloudio__uni-h5.patch | 13 + pnpm-lock.yaml | 14262 ++++++++++++++++++++++ pnpm-workspace.yaml | 2 + scripts/postupgrade.js | 35 + src/App.vue | 61 + src/api/login.ts | 83 + src/api/login.typings.ts | 57 + src/components/.gitkeep | 0 src/components/fg-navbar/fg-navbar.vue | 58 + src/env.d.ts | 31 + src/hooks/.gitkeep | 0 src/hooks/usePageAuth.ts | 50 + src/hooks/useRequest.ts | 44 + src/hooks/useUpload.ts | 160 + src/interceptors/index.ts | 3 + src/interceptors/prototype.ts | 14 + src/interceptors/request.ts | 70 + src/interceptors/route.ts | 65 + src/layouts/default.vue | 17 + src/layouts/demo.vue | 17 + src/layouts/fg-tabbar/fg-tabbar.vue | 67 + src/layouts/fg-tabbar/tabbar.md | 16 + src/layouts/fg-tabbar/tabbar.ts | 11 + src/layouts/fg-tabbar/tabbarList.ts | 65 + src/layouts/tabbar.vue | 19 + src/main.ts | 21 + src/manifest.json | 113 + src/pages-sub/demo/index.vue | 27 + src/pages.json | 65 + src/pages/about/about.vue | 46 + src/pages/about/components/request.vue | 84 + src/pages/about/components/upload.vue | 38 + src/pages/index/index.vue | 82 + src/service/app/caipu.json | 1158 ++ src/service/app/caipu/index.ts | 6 + src/service/app/caipu/types.ts | 64 + src/service/app/caipu/yanxi.ts | 376 + src/service/app/caipu/yanxi.vuequery.ts | 301 + src/service/app/displayEnumLabel.ts | 13 + src/service/app/index.ts | 11 + src/service/app/pet.ts | 193 + src/service/app/pet.vuequery.ts | 151 + src/service/app/store.ts | 72 + src/service/app/store.vuequery.ts | 75 + src/service/app/types.ts | 128 + src/service/app/user.ts | 150 + src/service/app/user.vuequery.ts | 149 + src/service/index/foo.ts | 28 + src/static/app/icons/1024x1024.png | Bin 0 -> 59336 bytes src/static/app/icons/120x120.png | Bin 0 -> 3231 bytes src/static/app/icons/144x144.png | Bin 0 -> 3791 bytes src/static/app/icons/152x152.png | Bin 0 -> 3981 bytes src/static/app/icons/167x167.png | Bin 0 -> 4479 bytes src/static/app/icons/180x180.png | Bin 0 -> 4844 bytes src/static/app/icons/192x192.png | Bin 0 -> 5319 bytes src/static/app/icons/20x20.png | Bin 0 -> 574 bytes src/static/app/icons/29x29.png | Bin 0 -> 780 bytes src/static/app/icons/40x40.png | Bin 0 -> 985 bytes src/static/app/icons/58x58.png | Bin 0 -> 1483 bytes src/static/app/icons/60x60.png | Bin 0 -> 1521 bytes src/static/app/icons/72x72.png | Bin 0 -> 1802 bytes src/static/app/icons/76x76.png | Bin 0 -> 1972 bytes src/static/app/icons/80x80.png | Bin 0 -> 2060 bytes src/static/app/icons/87x87.png | Bin 0 -> 2289 bytes src/static/app/icons/96x96.png | Bin 0 -> 2396 bytes src/static/images/.gitkeep | 0 src/static/images/avatar.jpg | Bin 0 -> 58805 bytes src/static/images/default-avatar.png | Bin 0 -> 560 bytes src/static/logo.svg | 33 + src/static/tabbar/example.png | Bin 0 -> 1371 bytes src/static/tabbar/exampleHL.png | Bin 0 -> 1398 bytes src/static/tabbar/home.png | Bin 0 -> 1346 bytes src/static/tabbar/homeHL.png | Bin 0 -> 1415 bytes src/static/tabbar/personal.png | Bin 0 -> 2457 bytes src/static/tabbar/personalHL.png | Bin 0 -> 2534 bytes src/store/index.ts | 17 + src/store/user.ts | 111 + src/style/iconfont.css | 28 + src/style/index.scss | 18 + src/typings.d.ts | 28 + src/typings.ts | 15 + src/uni.scss | 77 + src/uni_modules/.gitkeep | 0 src/utils/http.ts | 112 + src/utils/index.ts | 163 + src/utils/platform.ts | 24 + src/utils/request.ts | 78 + src/utils/toast.ts | 65 + src/utils/uploadFile.ts | 324 + tsconfig.json | 41 + uno.config.ts | 65 + vite-plugins/copyNativeRes.ts | 41 + vite-plugins/updatePackageJson.ts | 37 + vite.config.ts | 186 + 121 files changed, 21062 insertions(+) create mode 100644 .commitlintrc.cjs create mode 100644 .editorconfig create mode 100644 .github/release.yml create mode 100644 .github/workflows/auto-merge.yml create mode 100644 .github/workflows/release-log.yml create mode 100644 .gitignore create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.cjs create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/vue3.code-snippets create mode 100644 LICENSE create mode 100644 env/.env create mode 100644 env/.env.development create mode 100644 env/.env.production create mode 100644 env/.env.test create mode 100644 eslint.config.mjs create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 manifest.config.ts create mode 100644 openapi-ts-request.config.ts create mode 100644 package.json create mode 100644 pages.config.ts create mode 100644 patches/@dcloudio__uni-h5.patch create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 scripts/postupgrade.js create mode 100644 src/App.vue create mode 100644 src/api/login.ts create mode 100644 src/api/login.typings.ts create mode 100644 src/components/.gitkeep create mode 100644 src/components/fg-navbar/fg-navbar.vue create mode 100644 src/env.d.ts create mode 100644 src/hooks/.gitkeep create mode 100644 src/hooks/usePageAuth.ts create mode 100644 src/hooks/useRequest.ts create mode 100644 src/hooks/useUpload.ts create mode 100644 src/interceptors/index.ts create mode 100644 src/interceptors/prototype.ts create mode 100644 src/interceptors/request.ts create mode 100644 src/interceptors/route.ts create mode 100644 src/layouts/default.vue create mode 100644 src/layouts/demo.vue create mode 100644 src/layouts/fg-tabbar/fg-tabbar.vue create mode 100644 src/layouts/fg-tabbar/tabbar.md create mode 100644 src/layouts/fg-tabbar/tabbar.ts create mode 100644 src/layouts/fg-tabbar/tabbarList.ts create mode 100644 src/layouts/tabbar.vue create mode 100644 src/main.ts create mode 100644 src/manifest.json create mode 100644 src/pages-sub/demo/index.vue create mode 100644 src/pages.json create mode 100644 src/pages/about/about.vue create mode 100644 src/pages/about/components/request.vue create mode 100644 src/pages/about/components/upload.vue create mode 100644 src/pages/index/index.vue create mode 100644 src/service/app/caipu.json create mode 100644 src/service/app/caipu/index.ts create mode 100644 src/service/app/caipu/types.ts create mode 100644 src/service/app/caipu/yanxi.ts create mode 100644 src/service/app/caipu/yanxi.vuequery.ts create mode 100644 src/service/app/displayEnumLabel.ts create mode 100644 src/service/app/index.ts create mode 100644 src/service/app/pet.ts create mode 100644 src/service/app/pet.vuequery.ts create mode 100644 src/service/app/store.ts create mode 100644 src/service/app/store.vuequery.ts create mode 100644 src/service/app/types.ts create mode 100644 src/service/app/user.ts create mode 100644 src/service/app/user.vuequery.ts create mode 100644 src/service/index/foo.ts create mode 100644 src/static/app/icons/1024x1024.png create mode 100644 src/static/app/icons/120x120.png create mode 100644 src/static/app/icons/144x144.png create mode 100644 src/static/app/icons/152x152.png create mode 100644 src/static/app/icons/167x167.png create mode 100644 src/static/app/icons/180x180.png create mode 100644 src/static/app/icons/192x192.png create mode 100644 src/static/app/icons/20x20.png create mode 100644 src/static/app/icons/29x29.png create mode 100644 src/static/app/icons/40x40.png create mode 100644 src/static/app/icons/58x58.png create mode 100644 src/static/app/icons/60x60.png create mode 100644 src/static/app/icons/72x72.png create mode 100644 src/static/app/icons/76x76.png create mode 100644 src/static/app/icons/80x80.png create mode 100644 src/static/app/icons/87x87.png create mode 100644 src/static/app/icons/96x96.png create mode 100644 src/static/images/.gitkeep create mode 100644 src/static/images/avatar.jpg create mode 100644 src/static/images/default-avatar.png create mode 100644 src/static/logo.svg create mode 100644 src/static/tabbar/example.png create mode 100644 src/static/tabbar/exampleHL.png create mode 100644 src/static/tabbar/home.png create mode 100644 src/static/tabbar/homeHL.png create mode 100644 src/static/tabbar/personal.png create mode 100644 src/static/tabbar/personalHL.png create mode 100644 src/store/index.ts create mode 100644 src/store/user.ts create mode 100644 src/style/iconfont.css create mode 100644 src/style/index.scss create mode 100644 src/typings.d.ts create mode 100644 src/typings.ts create mode 100644 src/uni.scss create mode 100644 src/uni_modules/.gitkeep create mode 100644 src/utils/http.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/platform.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/toast.ts create mode 100644 src/utils/uploadFile.ts create mode 100644 tsconfig.json create mode 100644 uno.config.ts create mode 100644 vite-plugins/copyNativeRes.ts create mode 100644 vite-plugins/updatePackageJson.ts create mode 100644 vite.config.ts diff --git a/.commitlintrc.cjs b/.commitlintrc.cjs new file mode 100644 index 0000000..98ee7df --- /dev/null +++ b/.commitlintrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7f09864 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] # 表示所有文件适用 +charset = utf-8 # 设置文件字符集为 utf-8 +indent_style = space # 缩进风格(tab | space) +indent_size = 2 # 缩进大小 +end_of_line = lf # 控制换行类型(lf | cr | crlf) +trim_trailing_whitespace = true # 去除行首的任意空白字符 +insert_final_newline = true # 始终在文件末尾插入一个新行 + +[*.md] # 表示仅 md 文件适用以下规则 +max_line_length = off # 关闭最大行长度限制 +trim_trailing_whitespace = false # 关闭末尾空格修剪 diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..6ae23b0 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,31 @@ +categories: + - title: 🚀 新功能 + labels: [feat, feature] + - title: 🛠️ 修复 + labels: [fix, bugfix] + - title: 💅 样式 + labels: [style] + - title: 📄 文档 + labels: [docs] + - title: ⚡️ 性能 + labels: [perf] + - title: 🧪 测试 + labels: [test] + - title: ♻️ 重构 + labels: [refactor] + - title: 📦 构建 + labels: [build] + - title: 🚨 补丁 + labels: [patch, hotfix] + - title: 🌐 发布 + labels: [release, publish] + - title: 🔧 流程 + labels: [ci, cd, workflow] + - title: ⚙️ 配置 + labels: [config, chore] + - title: 📁 文件 + labels: [file] + - title: 🎨 格式化 + labels: [format] + - title: 🔀 其他 + labels: [other, misc] diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml new file mode 100644 index 0000000..c1a9d78 --- /dev/null +++ b/.github/workflows/auto-merge.yml @@ -0,0 +1,44 @@ +name: Auto Merge Main to Other Branches + +on: + push: + branches: + - main + workflow_dispatch: # 手动触发 + +jobs: + merge-to-i18n: + name: Merge main into i18n + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GH_TOKEN_AUTO_MERGE }} + + - name: Merge main into i18n + run: | + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git checkout i18n + git merge main --no-ff -m "Auto merge main into i18n" + git push origin i18n + + merge-to-base-sard-ui: + name: Merge main into base-sard-ui + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GH_TOKEN_AUTO_MERGE }} + + - name: Merge main into base-sard-ui + run: | + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git checkout base-sard-ui + git merge main --no-ff -m "Auto merge main into base-sard-ui" + git push origin base-sard-ui diff --git a/.github/workflows/release-log.yml b/.github/workflows/release-log.yml new file mode 100644 index 0000000..c2887ab --- /dev/null +++ b/.github/workflows/release-log.yml @@ -0,0 +1,119 @@ +name: Auto Release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + pull-requests: read + issues: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install yq + run: sudo snap install yq + + - name: Generate changelog + id: changelog + env: + CONFIG_FILE: .github/release.yml + run: | + # 解析配置文件 + declare -A category_map + while IFS=";" read -r title labels; do + for label in $labels; do + category_map[$label]="$title" + done + done < <(yq -o=tsv '.categories[] | [.title, (.labels | join(" "))] | join(";")' $CONFIG_FILE) + # 获取版本范围 + mapfile -t tags < <(git tag -l --sort=-version:refname) + current_tag=${tags[0]} + previous_tag=${tags[1]:-} + if [[ -z "$previous_tag" ]]; then + commit_range="$current_tag" + echo "首次发布版本: $current_tag" + else + commit_range="$previous_tag..$current_tag" + echo "版本范围: $commit_range" + fi + # 获取所有符合规范的提交 + commits=$(git log --pretty=format:"%s|%h" "$commit_range") + # 生成分类日志 + declare -A log_entries + while IFS="|" read -r subject hash; do + # type=$(echo "$subject" | cut -d':' -f1 | tr -d ' ') + type=$(echo "$subject" | sed -E 's/^([[:alnum:]]+)(\(.*\))?:.*/\1/' | tr -d ' ') + found=0 + for label in "${!category_map[@]}"; do + if [[ "$type" == "$label" ]]; then + entry="- ${subject} (${hash:0:7})" + log_entries[${category_map[$label]}]+="$entry"$'\n' + found=1 + break + fi + done + if [[ $found -eq 0 ]]; then + entry="- ${subject} (${hash:0:7})" + log_entries["其他"]+="$entry"$'\n' + fi + done <<< "$commits" + + # 统计提交数量 + commit_count=$(git log --oneline "$commit_range" | wc -l) + # 统计受影响的文件数量 + file_count=$(git diff --name-only "$commit_range" | wc -l) + # 统计贡献者信息 + contributor_stats=$(git shortlog -sn "$commit_range") + contributor_notes="" + while IFS= read -r line; do + commits=$(echo "$line" | awk '{print $1}') + name=$(echo "$line" | awk '{$1=""; print $0}' | sed 's/^ //') + contributor_notes+="- @${name} (${commits} commits)\n" + done <<< "$contributor_stats" + # 构建输出内容 + release_notes="## 版本更新日志 ($current_tag)\n\n" + while IFS= read -r category; do + if [[ -n "${log_entries[$category]}" ]]; then + release_notes+="### $category\n${log_entries[$category]}\n" + fi + done < <(yq '.categories[].title' $CONFIG_FILE) + # 构建输出内容 + release_notes="## 版本更新日志 ($current_tag)\n\n" + current_date=$(date +"%Y-%m-%d") + # 添加发布日期和下载统计信息 + release_notes+=" ### 📅 发布日期: ${current_date}\n" + while IFS= read -r category; do + if [[ -n "${log_entries[$category]}" ]]; then + release_notes+="### $category\n${log_entries[$category]}\n" + fi + done < <(yq '.categories[].title' $CONFIG_FILE) + + # 添加统计信息 + release_notes+="### 📊 统计信息\n" + release_notes+="- 本次发布包含 ${commit_count} 个提交\n" + release_notes+="- 影响 ${file_count} 个文件\n\n" + # 添加贡献者信息 + release_notes+="### 👥 贡献者\n" + release_notes+="感谢这些优秀的贡献者(按提交次数排序):\n" + release_notes+="${contributor_notes}\n" + release_notes+="---\n" + # 写入文件 + echo -e "$release_notes" > changelog.md + echo "生成日志内容:" + cat changelog.md + - name: Create Release + uses: ncipollo/release-action@v1 + with: + generateReleaseNotes: false + bodyFile: changelog.md + tag: ${{ github.ref_name }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a73675 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.hbuilderx + +.stylelintcache +.eslintcache + +docs/.vitepress/dist +docs/.vitepress/cache + +types + +# lock 文件还是不要了,我主要的版本写死就好了 +# pnpm-lock.yaml +# package-lock.json + +# TIPS:如果某些文件已经加入了版本管理,现在重新加入 .gitignore 是不生效的,需要执行下面的操作 +# `git rm -r --cached .` 然后提交 commit 即可。 + +# git rm -r --cached file1 file2 ## 针对某些文件 +# git rm -r --cached dir1 dir2 ## 针对某些文件夹 +# git rm -r --cached . ## 针对所有文件 + +# 更新 uni-app 官方版本 +# npx @dcloudio/uvm@latest diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..36158d9 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +npx --no-install commitlint --edit "$1" \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..c3ec64b --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged --allow-empty \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..356a656 --- /dev/null +++ b/.npmrc @@ -0,0 +1,6 @@ +# registry = https://registry.npmjs.org +registry = https://registry.npmmirror.com + +strict-peer-dependencies=false +auto-install-peers=true +shamefully-hoist=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..77134df --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +node_modules + +# unplugin-auto-import 生成的类型文件,每次提交都改变,所以加入这里吧,与 .gitignore 配合使用 +auto-import.d.ts + +# vite-plugin-uni-pages 生成的类型文件,每次切换分支都一堆不同的,所以直接 .gitignore +uni-pages.d.ts + +# 插件生成的文件 +src/pages.json +src/manifest.json + +# 忽略自动生成文件 +src/service/app/** diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 0000000..448279e --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,19 @@ +// @see https://prettier.io/docs/en/options +module.exports = { + singleQuote: true, + printWidth: 100, + tabWidth: 2, + useTabs: false, + semi: false, + trailingComma: 'all', + endOfLine: 'auto', + htmlWhitespaceSensitivity: 'ignore', + overrides: [ + { + files: '*.{json,jsonc}', + options: { + trailingComma: 'none', + }, + }, + ], +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..178c449 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,20 @@ +{ + "recommendations": [ + "vue.volar", + "stylelint.vscode-stylelint", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "antfu.unocss", + "antfu.iconify", + "evils.uniapp-vscode", + "uni-helper.uni-helper-vscode", + "uni-helper.uni-app-schemas-vscode", + "uni-helper.uni-highlight-vscode", + "uni-helper.uni-ui-snippets-vscode", + "uni-helper.uni-app-snippets-vscode", + "mrmlnc.vscode-json5", + "streetsidesoftware.code-spell-checker", + "foxundermoon.shell-format", + "christian-kohler.path-intellisense" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8cdc821 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,118 @@ +{ + // 默认格式化工具选择prettier + "editor.defaultFormatter": "esbenp.prettier-vscode", + + // 配置stylelint检查的文件类型范围 + "stylelint.validate": ["css", "scss", "vue", "html"], // 与package.json的scripts对应 + "stylelint.enable": true, + "css.validate": false, + "less.validate": false, + "scss.validate": false, + "[shellscript]": { + "editor.defaultFormatter": "foxundermoon.shell-format" + }, + "[dotenv]": { + "editor.defaultFormatter": "foxundermoon.shell-format" + }, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + // 配置语言的文件关联 + "files.associations": { + "pages.json": "jsonc", // pages.json 可以写注释 + "manifest.json": "jsonc" // manifest.json 可以写注释 + }, + "cSpell.words": [ + "Aplipay", + "climblee", + "commitlint", + "dcloudio", + "iconfont", + "oxlint", + "qrcode", + "refresherrefresh", + "scrolltolower", + "tabbar", + "Toutiao", + "unibest", + "uvui", + "Wechat", + "WechatMiniprogram", + "Weixin" + ], + "typescript.tsdk": "node_modules\\typescript\\lib", + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "README.md": "index.html,favicon.ico,robots.txt,CHANGELOG.md", + "pages.config.ts": "manifest.config.ts,openapi-ts-request.config.ts", + "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,.npmrc,.browserslistrc", + "eslint.config.mjs": "tsconfig.json,.commitlintrc.*,.prettier*,.editorconfig,.commitlint.cjs,.eslint*" + }, + + // 保存的时候自动格式化 + "prettier.enable": true, + "editor.formatOnSave": true, + // 开启自动修复 + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.fixAll.eslint": "explicit", + "source.fixAll.stylelint": "explicit" + }, + + // Disable the default formatter, use eslint instead + // "prettier.enable": false, + // "editor.formatOnSave": false, + + // Auto fix + // "editor.codeActionsOnSave": { + // "source.fixAll.eslint": "explicit", + // "source.organizeImports": "never" + // }, + + // Silent the stylistic rules in you IDE, but still auto fix them + "eslint.rules.customizations": [ + { "rule": "style/*", "severity": "off", "fixable": true }, + { "rule": "format/*", "severity": "off", "fixable": true }, + { "rule": "*-indent", "severity": "off", "fixable": true }, + { "rule": "*-spacing", "severity": "off", "fixable": true }, + { "rule": "*-spaces", "severity": "off", "fixable": true }, + { "rule": "*-order", "severity": "off", "fixable": true }, + { "rule": "*-dangle", "severity": "off", "fixable": true }, + { "rule": "*-newline", "severity": "off", "fixable": true }, + { "rule": "*quotes", "severity": "off", "fixable": true }, + { "rule": "*semi", "severity": "off", "fixable": true } + ], + + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "json5", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql", + "astro", + "svelte", + "css", + "less", + "scss", + "pcss", + "postcss" + ] +} diff --git a/.vscode/vue3.code-snippets b/.vscode/vue3.code-snippets new file mode 100644 index 0000000..621b9e2 --- /dev/null +++ b/.vscode/vue3.code-snippets @@ -0,0 +1,56 @@ +{ + // Place your unibest 工作区 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + "Print unibest Vue3 SFC": { + "scope": "vue", + "prefix": "v3", + "body": [ + "", + "{", + " layout: 'default',", + " style: {", + " navigationBarTitleText: '$1',", + " },", + "}", + "\n", + "\n", + "\n", + "\n", + ], + }, + "Print unibest style": { + "scope": "vue", + "prefix": "st", + "body": ["\n"], + }, + "Print unibest script": { + "scope": "vue", + "prefix": "sc", + "body": ["\n"], + }, + "Print unibest template": { + "scope": "vue", + "prefix": "te", + "body": ["\n"], + }, +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9c3438e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 菲鸽 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index e69de29..18934b4 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,93 @@ +

+ + + +

+ +

+ unibest - 最好的 uniapp 开发框架 +

+ +
+旧仓库 codercup 进不去了,star 也拿不回来,这里也展示一下那个地址的 star. + +[![GitHub Repo stars](https://img.shields.io/github/stars/codercup/unibest?style=flat&logo=github)](https://github.com/codercup/unibest) +[![GitHub forks](https://img.shields.io/github/forks/codercup/unibest?style=flat&logo=github)](https://github.com/codercup/unibest) + +
+ +
+ +[![GitHub Repo stars](https://img.shields.io/github/stars/feige996/unibest?style=flat&logo=github)](https://github.com/feige996/unibest) +[![GitHub forks](https://img.shields.io/github/forks/feige996/unibest?style=flat&logo=github)](https://github.com/feige996/unibest) +[![star](https://gitee.com/feige996/unibest/badge/star.svg?theme=dark)](https://gitee.com/feige996/unibest/stargazers) +[![fork](https://gitee.com/feige996/unibest/badge/fork.svg?theme=dark)](https://gitee.com/feige996/unibest/members) +![node version](https://img.shields.io/badge/node-%3E%3D18-green) +![pnpm version](https://img.shields.io/badge/pnpm-%3E%3D7.30-green) +![GitHub package.json version (subfolder of monorepo)](https://img.shields.io/github/package-json/v/feige996/unibest) +![GitHub License](https://img.shields.io/github/license/feige996/unibest) + +
+ +`unibest` —— 最好的 `uniapp` 开发模板,由 `uniapp` + `Vue3` + `Ts` + `Vite5` + `UnoCss` + `wot-ui` + `z-paging` 构成,使用了最新的前端技术栈,无需依靠 `HBuilderX`,通过命令行方式运行 `web`、`小程序` 和 `App`(编辑器推荐 `VSCode`,可选 `webstorm`)。 + +`unibest` 内置了 `约定式路由`、`layout布局`、`请求封装`、`请求拦截`、`登录拦截`、`UnoCSS`、`i18n多语言` 等基础功能,提供了 `代码提示`、`自动格式化`、`统一配置`、`代码片段` 等辅助功能,让你编写 `uniapp` 拥有 `best` 体验 ( `unibest 的由来`)。 + +![](https://raw.githubusercontent.com/andreasbm/readme/master/screenshots/lines/rainbow.png) + +

+ 📖 文档地址(new) + | + 📱 DEMO 地址 +

+ +--- + +注意旧的地址 [codercup](https://github.com/codercup/unibest) 我进不去了,使用新的 [feige996](https://github.com/feige996/unibest)。PR和 issue 也请使用新地址,否则无法合并。 + +## 平台兼容性 + +| H5 | IOS | 安卓 | 微信小程序 | 字节小程序 | 快手小程序 | 支付宝小程序 | 钉钉小程序 | 百度小程序 | +| --- | --- | ---- | ---------- | ---------- | ---------- | ------------ | ---------- | ---------- | +| √ | √ | √ | √ | √ | √ | √ | √ | √ | + +注意每种 `UI框架` 支持的平台有所不同,详情请看各 `UI框架` 的官网,也可以看 `unibest` 文档。 + +## ⚙️ 环境 + +- node>=18 +- pnpm>=7.30 +- Vue Official>=2.1.10 +- TypeScript>=5.0 + +## 📂 快速开始 + +执行 `pnpm create unibest` 创建项目 +执行 `pnpm i` 安装依赖 +执行 `pnpm dev` 运行 `H5` +执行 `pnpm dev:mp` 运行 `微信小程序` + +## 📦 运行(支持热更新) + +- web平台: `pnpm dev:h5`, 然后打开 [http://localhost:9000/](http://localhost:9000/)。 +- weixin平台:`pnpm dev:mp` 然后打开微信开发者工具,导入本地文件夹,选择本项目的`dist/dev/mp-weixin` 文件。 +- APP平台:`pnpm dev:app`, 然后打开 `HBuilderX`,导入刚刚生成的`dist/dev/app` 文件夹,选择运行到模拟器(开发时优先使用),或者运行的安卓/ios基座。 + +## 🔗 发布 + +- web平台: `pnpm build:h5`,打包后的文件在 `dist/build/h5`,可以放到web服务器,如nginx运行。如果最终不是放在根目录,可以在 `manifest.config.ts` 文件的 `h5.router.base` 属性进行修改。 +- weixin平台:`pnpm build:mp`, 打包后的文件在 `dist/build/mp-weixin`,然后通过微信开发者工具导入,并点击右上角的“上传”按钮进行上传。 +- APP平台:`pnpm build:app`, 然后打开 `HBuilderX`,导入刚刚生成的`dist/build/app` 文件夹,选择发行 - APP云打包。 + +## 📄 License + +[MIT](https://opensource.org/license/mit/) + +Copyright (c) 2025 菲鸽 + +## 捐赠 + +

+special sponsor appwrite +special sponsor appwrite +

diff --git a/env/.env b/env/.env new file mode 100644 index 0000000..05c8a58 --- /dev/null +++ b/env/.env @@ -0,0 +1,28 @@ +VITE_APP_TITLE = 'unibest' +VITE_APP_PORT = 9000 + +VITE_UNI_APPID = '__UNI__D1E5001' +VITE_WX_APPID = 'wxa2abb91f64032a2b' + +# h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base +VITE_APP_PUBLIC_BASE=/ + +# 登录页面 +VITE_LOGIN_URL = '/pages/login/index' + +VITE_SERVER_BASEURL = 'https://ukw0y1.laf.run' +VITE_UPLOAD_BASEURL = 'https://ukw0y1.laf.run/upload' + +# 有些同学可能需要在微信小程序里面根据 develop、trial、release 分别设置上传地址,参考代码如下。 +# 下面的变量如果没有设置,会默认使用 VITE_SERVER_BASEURL or VITE_UPLOAD_BASEURL +VITE_SERVER_BASEURL__WEIXIN_DEVELOP = 'https://ukw0y1.laf.run' +VITE_SERVER_BASEURL__WEIXIN_TRIAL = 'https://ukw0y1.laf.run' +VITE_SERVER_BASEURL__WEIXIN_RELEASE = 'https://ukw0y1.laf.run' + +VITE_UPLOAD_BASEURL__WEIXIN_DEVELOP = 'https://ukw0y1.laf.run/upload' +VITE_UPLOAD_BASEURL__WEIXIN_TRIAL = 'https://ukw0y1.laf.run/upload' +VITE_UPLOAD_BASEURL__WEIXIN_RELEASE = 'https://ukw0y1.laf.run/upload' + +# h5是否需要配置代理 +VITE_APP_PROXY=false +VITE_APP_PROXY_PREFIX = '/api' diff --git a/env/.env.development b/env/.env.development new file mode 100644 index 0000000..04fa273 --- /dev/null +++ b/env/.env.development @@ -0,0 +1,6 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'development' +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE = false +# 是否开启sourcemap +VITE_SHOW_SOURCEMAP = true diff --git a/env/.env.production b/env/.env.production new file mode 100644 index 0000000..8a1b50c --- /dev/null +++ b/env/.env.production @@ -0,0 +1,6 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'development' +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE = true +# 是否开启sourcemap +VITE_SHOW_SOURCEMAP = false diff --git a/env/.env.test b/env/.env.test new file mode 100644 index 0000000..e22f765 --- /dev/null +++ b/env/.env.test @@ -0,0 +1,4 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'development' +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE = false diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..a624835 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,22 @@ +import uniHelper from '@uni-helper/eslint-config' + +export default uniHelper({ + unocss: true, + vue: true, + markdown: false, + ignores: [ + 'src/uni_modules/', + 'dist', + ], + rules: { + 'no-console': 'off', + 'no-unused-vars': 'off', + 'vue/no-unused-refs': 'off', + 'unused-imports/no-unused-vars': 'off', + 'eslint-comments/no-unlimited-disable': 'off', + 'jsdoc/check-param-names': 'off', + 'jsdoc/require-returns-description': 'off', + 'ts/no-empty-object-type': 'off', + 'no-extend-native': 'off', + }, +}) diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..47c577c972aeee4d27bd1171c95e54961c51167e GIT binary patch literal 14575 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 K$XCglhy5Q-x+2H` literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..2e368d0 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + + unibest + + + + + +
+ + + diff --git a/manifest.config.ts b/manifest.config.ts new file mode 100644 index 0000000..b498ca4 --- /dev/null +++ b/manifest.config.ts @@ -0,0 +1,138 @@ +import path from 'node:path' +import process from 'node:process' +// manifest.config.ts +import { defineManifestConfig } from '@uni-helper/vite-plugin-uni-manifest' +import { loadEnv } from 'vite' + +// 获取环境变量的范例 +const env = loadEnv(process.env.NODE_ENV!, path.resolve(process.cwd(), 'env')) +const { + VITE_APP_TITLE, + VITE_UNI_APPID, + VITE_WX_APPID, + VITE_APP_PUBLIC_BASE, + VITE_FALLBACK_LOCALE, +} = env + +export default defineManifestConfig({ + 'name': VITE_APP_TITLE, + 'appid': VITE_UNI_APPID, + 'description': '', + 'versionName': '1.0.0', + 'versionCode': '100', + 'transformPx': false, + 'locale': VITE_FALLBACK_LOCALE, // 'zh-Hans' + 'h5': { + router: { + base: VITE_APP_PUBLIC_BASE, + }, + }, + /* 5+App特有相关 */ + 'app-plus': { + usingComponents: true, + nvueStyleCompiler: 'uni-app', + compilerVersion: 3, + compatible: { + ignoreVersion: true, + }, + splashscreen: { + alwaysShowBeforeRender: true, + waiting: true, + autoclose: true, + delay: 0, + }, + /* 模块配置 */ + modules: {}, + /* 应用发布信息 */ + distribute: { + /* android打包配置 */ + android: { + minSdkVersion: 30, + targetSdkVersion: 30, + abiFilters: ['armeabi-v7a', 'arm64-v8a'], + permissions: [ + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + ], + }, + /* ios打包配置 */ + ios: {}, + /* SDK配置 */ + sdkConfigs: {}, + /* 图标配置 */ + icons: { + android: { + hdpi: 'static/app/icons/72x72.png', + xhdpi: 'static/app/icons/96x96.png', + xxhdpi: 'static/app/icons/144x144.png', + xxxhdpi: 'static/app/icons/192x192.png', + }, + ios: { + appstore: 'static/app/icons/1024x1024.png', + ipad: { + 'app': 'static/app/icons/76x76.png', + 'app@2x': 'static/app/icons/152x152.png', + 'notification': 'static/app/icons/20x20.png', + 'notification@2x': 'static/app/icons/40x40.png', + 'proapp@2x': 'static/app/icons/167x167.png', + 'settings': 'static/app/icons/29x29.png', + 'settings@2x': 'static/app/icons/58x58.png', + 'spotlight': 'static/app/icons/40x40.png', + 'spotlight@2x': 'static/app/icons/80x80.png', + }, + iphone: { + 'app@2x': 'static/app/icons/120x120.png', + 'app@3x': 'static/app/icons/180x180.png', + 'notification@2x': 'static/app/icons/40x40.png', + 'notification@3x': 'static/app/icons/60x60.png', + 'settings@2x': 'static/app/icons/58x58.png', + 'settings@3x': 'static/app/icons/87x87.png', + 'spotlight@2x': 'static/app/icons/80x80.png', + 'spotlight@3x': 'static/app/icons/120x120.png', + }, + }, + }, + }, + }, + /* 快应用特有相关 */ + 'quickapp': {}, + /* 小程序特有相关 */ + 'mp-weixin': { + appid: VITE_WX_APPID, + setting: { + urlCheck: false, + // 是否启用 ES6 转 ES5 + es6: true, + minified: true, + }, + usingComponents: true, + // __usePrivacyCheck__: true, + }, + 'mp-alipay': { + usingComponents: true, + styleIsolation: 'shared', + }, + 'mp-baidu': { + usingComponents: true, + }, + 'mp-toutiao': { + usingComponents: true, + }, + 'uniStatistics': { + enable: false, + }, + 'vueVersion': '3', +}) diff --git a/openapi-ts-request.config.ts b/openapi-ts-request.config.ts new file mode 100644 index 0000000..9ea90b0 --- /dev/null +++ b/openapi-ts-request.config.ts @@ -0,0 +1,13 @@ +import type { GenerateServiceProps } from 'openapi-ts-request' + +export default [ + { + schemaPath: './src/service/app/caipu.json', + serversPath: './src/service/app/caipu', + requestLibPath: `import request from '@/utils/request';\n import { CustomRequestOptions } from '@/interceptors/request';`, + requestOptionsType: 'CustomRequestOptions', + isGenReactQuery: true, + reactQueryMode: 'vue', + isGenJavaScript: false, + }, +] as GenerateServiceProps[] diff --git a/package.json b/package.json new file mode 100644 index 0000000..ec8cb7f --- /dev/null +++ b/package.json @@ -0,0 +1,159 @@ +{ + "name": "digital_village", + "type": "commonjs", + "version": "3.0.0", + "description": "unibest - 最好的 uniapp 开发模板", + "update-time": "2025-06-21", + "author": { + "name": "feige996", + "zhName": "菲鸽", + "email": "1020103647@qq.com", + "github": "https://github.com/feige996", + "gitee": "https://gitee.com/feige996" + }, + "license": "MIT", + "homepage": "https://unibest.tech", + "repository": "https://github.com/feige996/unibest", + "repository-gitee": "https://gitee.com/feige996/unibest", + "repository-old": "https://github.com/codercup/unibest", + "bugs": { + "url": "https://github.com/feige996/unibest/issues", + "url-old": "https://github.com/codercup/unibest/issues" + }, + "engines": { + "node": ">=18", + "pnpm": ">=7.30" + }, + "scripts": { + "preinstall": "npx only-allow pnpm", + "uvm": "npx @dcloudio/uvm@latest", + "uvm-rm": "node ./scripts/postupgrade.js", + "postuvm": "echo upgrade uni-app success!", + "dev:app": "uni -p app", + "dev:app-android": "uni -p app-android", + "dev:app-ios": "uni -p app-ios", + "dev:custom": "uni -p", + "dev": "uni", + "dev:h5": "uni", + "dev:h5:ssr": "uni --ssr", + "dev:mp": "uni -p mp-weixin", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-xhs": "uni -p mp-xhs", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build:app": "uni build -p app", + "build:app-android": "uni build -p app-android", + "build:app-ios": "uni build -p app-ios", + "build:custom": "uni build -p", + "build:h5": "uni build", + "build": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp": "uni build -p mp-weixin", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-weixin": "uni build -p mp-weixin", + "build:mp-xhs": "uni build -p mp-xhs", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union", + "type-check": "vue-tsc --noEmit", + "openapi-ts-request": "openapi-ts", + "prepare": "git init && husky", + "lint": "eslint", + "lint:fix": "eslint --fix" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-4060620250520001", + "@dcloudio/uni-app-harmony": "3.0.0-4060620250520001", + "@dcloudio/uni-app-plus": "3.0.0-4060620250520001", + "@dcloudio/uni-components": "3.0.0-4060620250520001", + "@dcloudio/uni-h5": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-alipay": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-baidu": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-harmony": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-jd": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-lark": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-qq": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-toutiao": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-weixin": "3.0.0-4060620250520001", + "@dcloudio/uni-mp-xhs": "3.0.0-4060620250520001", + "@dcloudio/uni-quickapp-webview": "3.0.0-4060620250520001", + "@tanstack/vue-query": "^5.62.16", + "abortcontroller-polyfill": "^1.7.8", + "dayjs": "1.11.10", + "js-cookie": "^3.0.5", + "pinia": "2.0.36", + "pinia-plugin-persistedstate": "3.2.1", + "qs": "6.5.3", + "vue": "^3.4.21", + "wot-design-uni": "^1.9.1", + "z-paging": "2.8.7" + }, + "devDependencies": { + "@antfu/eslint-config": "^4.15.0", + "@commitlint/cli": "^19.8.1", + "@commitlint/config-conventional": "^19.8.1", + "@dcloudio/types": "^3.4.8", + "@dcloudio/uni-automator": "3.0.0-4060620250520001", + "@dcloudio/uni-cli-shared": "3.0.0-4060620250520001", + "@dcloudio/uni-stacktracey": "3.0.0-4060620250520001", + "@dcloudio/vite-plugin-uni": "3.0.0-4060620250520001", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@iconify-json/carbon": "^1.2.4", + "@rollup/rollup-darwin-x64": "^4.28.0", + "@types/node": "^20.17.9", + "@types/wechat-miniprogram": "^3.4.8", + "@uni-helper/eslint-config": "^0.4.0", + "@uni-helper/uni-types": "1.0.0-alpha.3", + "@uni-helper/unocss-preset-uni": "^0.2.11", + "@uni-helper/vite-plugin-uni-components": "0.2.0", + "@uni-helper/vite-plugin-uni-layouts": "0.1.10", + "@uni-helper/vite-plugin-uni-manifest": "0.2.8", + "@uni-helper/vite-plugin-uni-pages": "0.2.28", + "@uni-helper/vite-plugin-uni-platform": "0.0.4", + "@uni-ku/bundle-optimizer": "^1.3.3", + "@unocss/eslint-plugin": "^66.2.3", + "@unocss/preset-legacy-compat": "^0.59.4", + "@vue/runtime-core": "^3.4.21", + "@vue/tsconfig": "^0.1.3", + "autoprefixer": "^10.4.20", + "eslint": "^9.29.0", + "husky": "^9.1.7", + "lint-staged": "^15.2.10", + "openapi-ts-request": "^1.1.2", + "postcss": "^8.4.49", + "postcss-html": "^1.7.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.5.3", + "rollup-plugin-visualizer": "^5.12.0", + "sass": "1.77.8", + "terser": "^5.36.0", + "typescript": "^5.7.2", + "unocss": "65.4.2", + "unplugin-auto-import": "^0.17.8", + "vite": "5.2.8", + "vite-plugin-restart": "^0.4.2", + "vue-tsc": "^2.2.10" + }, + "resolutions": { + "bin-wrapper": "npm:bin-wrapper-china" + }, + "lint-staged": { + "*": "eslint --fix" + } +} \ No newline at end of file diff --git a/pages.config.ts b/pages.config.ts new file mode 100644 index 0000000..dd555b1 --- /dev/null +++ b/pages.config.ts @@ -0,0 +1,23 @@ +import { defineUniPages } from '@uni-helper/vite-plugin-uni-pages' +import { tabBar } from './src/layouts/fg-tabbar/tabbarList' + +export default defineUniPages({ + globalStyle: { + navigationStyle: 'default', + navigationBarTitleText: 'unibest', + navigationBarBackgroundColor: '#f8f8f8', + navigationBarTextStyle: 'black', + backgroundColor: '#FFFFFF', + }, + easycom: { + autoscan: true, + custom: { + '^fg-(.*)': '@/components/fg-$1/fg-$1.vue', + '^wd-(.*)': 'wot-design-uni/components/wd-$1/wd-$1.vue', + '^(?!z-paging-refresh|z-paging-load-more)z-paging(.*)': + 'z-paging/components/z-paging$1/z-paging$1.vue', + }, + }, + // tabbar 的配置统一在 “./src/layouts/fg-tabbar/tabbarList.ts” 文件中 + tabBar: tabBar as any, +}) diff --git a/patches/@dcloudio__uni-h5.patch b/patches/@dcloudio__uni-h5.patch new file mode 100644 index 0000000..ff1e37c --- /dev/null +++ b/patches/@dcloudio__uni-h5.patch @@ -0,0 +1,13 @@ +diff --git a/dist/uni-h5.es.js b/dist/uni-h5.es.js +index 7421bad97d94ad34a3d4d94292a9ee9071430662..19c6071ee4036ceb8d1cfa09030e471c002d2cda 100644 +--- a/dist/uni-h5.es.js ++++ b/dist/uni-h5.es.js +@@ -23410,7 +23410,7 @@ function useShowTabBar(emit2) { + const tabBar2 = useTabBar(); + const showTabBar2 = computed(() => route.meta.isTabBar && tabBar2.shown); + updateCssVar({ +- "--tab-bar-height": tabBar2.height ++ "--tab-bar-height": tabBar2?.height || 0 + }); + return showTabBar2; + } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..b4b9e85 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,14262 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + bin-wrapper: npm:bin-wrapper-china + +patchedDependencies: + '@dcloudio/uni-h5': + hash: 5763725268e9a493075be3c82d91b590b9ae30e997a04a418494dd7d6d327b9d + path: patches/@dcloudio__uni-h5.patch + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(@dcloudio/types@3.4.14)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-app-harmony': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-components': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-h5': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(patch_hash=5763725268e9a493075be3c82d91b590b9ae30e997a04a418494dd7d6d327b9d)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(@dcloudio/types@3.4.14)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-harmony': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-xhs': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@tanstack/vue-query': + specifier: ^5.62.16 + version: 5.62.16(vue@3.5.15(typescript@5.7.2)) + abortcontroller-polyfill: + specifier: ^1.7.8 + version: 1.7.8 + dayjs: + specifier: 1.11.10 + version: 1.11.10 + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + pinia: + specifier: 2.0.36 + version: 2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + pinia-plugin-persistedstate: + specifier: 3.2.1 + version: 3.2.1(pinia@2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))) + qs: + specifier: 6.5.3 + version: 6.5.3 + vue: + specifier: ^3.4.21 + version: 3.5.15(typescript@5.7.2) + wot-design-uni: + specifier: ^1.9.1 + version: 1.9.1(vue@3.5.15(typescript@5.7.2)) + z-paging: + specifier: 2.8.7 + version: 2.8.7 + devDependencies: + '@antfu/eslint-config': + specifier: ^4.15.0 + version: 4.15.0(@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@commitlint/cli': + specifier: ^19.8.1 + version: 19.8.1(@types/node@20.17.9)(typescript@5.7.2) + '@commitlint/config-conventional': + specifier: ^19.8.1 + version: 19.8.1 + '@dcloudio/types': + specifier: ^3.4.8 + version: 3.4.14 + '@dcloudio/uni-automator': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-4060620250520001 + version: 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@esbuild/darwin-arm64': + specifier: 0.20.2 + version: 0.20.2 + '@esbuild/darwin-x64': + specifier: 0.20.2 + version: 0.20.2 + '@iconify-json/carbon': + specifier: ^1.2.4 + version: 1.2.4 + '@rollup/rollup-darwin-x64': + specifier: ^4.28.0 + version: 4.28.0 + '@types/node': + specifier: ^20.17.9 + version: 20.17.9 + '@types/wechat-miniprogram': + specifier: ^3.4.8 + version: 3.4.8 + '@uni-helper/eslint-config': + specifier: ^0.4.0 + version: 0.4.0(@antfu/eslint-config@4.15.0(@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2)) + '@uni-helper/uni-types': + specifier: 1.0.0-alpha.3 + version: 1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(@uni-helper/uni-cloud-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(@uni-helper/uni-ui-types@1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + '@uni-helper/unocss-preset-uni': + specifier: ^0.2.11 + version: 0.2.11(@unocss/preset-legacy-compat@0.59.4)(@unocss/preset-mini@66.1.2)(@unocss/rule-utils@66.2.3)(@unocss/vite@66.1.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)))(unocss-applet@0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2)(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))))(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))) + '@uni-helper/vite-plugin-uni-components': + specifier: 0.2.0 + version: 0.2.0(rollup@4.41.1) + '@uni-helper/vite-plugin-uni-layouts': + specifier: 0.1.10 + version: 0.1.10(rollup@4.41.1) + '@uni-helper/vite-plugin-uni-manifest': + specifier: 0.2.8 + version: 0.2.8(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0)) + '@uni-helper/vite-plugin-uni-pages': + specifier: 0.2.28 + version: 0.2.28(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0)) + '@uni-helper/vite-plugin-uni-platform': + specifier: 0.0.4 + version: 0.0.4 + '@uni-ku/bundle-optimizer': + specifier: ^1.3.3 + version: 1.3.3(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@unocss/eslint-plugin': + specifier: ^66.2.3 + version: 66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@unocss/preset-legacy-compat': + specifier: ^0.59.4 + version: 0.59.4 + '@vue/runtime-core': + specifier: ^3.4.21 + version: 3.5.13 + '@vue/tsconfig': + specifier: ^0.1.3 + version: 0.1.3(@types/node@20.17.9) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.49) + eslint: + specifier: ^9.29.0 + version: 9.29.0(jiti@2.4.2) + husky: + specifier: ^9.1.7 + version: 9.1.7 + lint-staged: + specifier: ^15.2.10 + version: 15.2.10 + openapi-ts-request: + specifier: ^1.1.2 + version: 1.1.2(@types/node@20.17.9)(@vue/compiler-sfc@3.5.15)(chokidar@3.6.0)(typescript@5.7.2) + postcss: + specifier: ^8.4.49 + version: 8.4.49 + postcss-html: + specifier: ^1.7.0 + version: 1.7.0 + postcss-scss: + specifier: ^4.0.9 + version: 4.0.9(postcss@8.4.49) + prettier: + specifier: ^3.5.3 + version: 3.5.3 + rollup-plugin-visualizer: + specifier: ^5.12.0 + version: 5.12.0(rollup@4.41.1) + sass: + specifier: 1.77.8 + version: 1.77.8 + terser: + specifier: ^5.36.0 + version: 5.36.0 + typescript: + specifier: ^5.7.2 + version: 5.7.2 + unocss: + specifier: 65.4.2 + version: 65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + unplugin-auto-import: + specifier: ^0.17.8 + version: 0.17.8(rollup@4.41.1) + vite: + specifier: 5.2.8 + version: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + vite-plugin-restart: + specifier: ^0.4.2 + version: 0.4.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0)) + vue-tsc: + specifier: ^2.2.10 + version: 2.2.10(typescript@5.7.2) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/eslint-config@4.15.0': + resolution: {integrity: sha512-wNn8eDUR+L48nGqX0j8uS19+lHjlhjJsTuhOIbp5aUtnNzAqUuzeoGa7S7rfIbK3XnzcRXJ1AW+xWXsMSGu0YA==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.38.4 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + 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-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + 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.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + + '@commitlint/cli@19.8.1': + resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.8.1': + resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.8.1': + resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.8.1': + resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.8.1': + resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + engines: {node: '>=v18'} + + '@commitlint/format@19.8.1': + resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.8.1': + resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.8.1': + resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + engines: {node: '>=v18'} + + '@commitlint/load@19.8.1': + resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + engines: {node: '>=v18'} + + '@commitlint/message@19.8.1': + resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.8.1': + resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.8.1': + resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.8.1': + resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.8.1': + resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.8.1': + resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.8.1': + resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + engines: {node: '>=v18'} + + '@commitlint/types@19.8.1': + resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + engines: {node: '>=v18'} + + '@dcloudio/types@3.4.14': + resolution: {integrity: sha512-VolQeZfTh8pQFsr2IlfIVX93blfvGTuBoJuZUc7iWOqtHV8gDrq6fXLhzsVlgZyuhhRZLOxlo33rkEqnY+ucAw==} + + '@dcloudio/uni-app-harmony@3.0.0-4060620250520001': + resolution: {integrity: sha512-5RIgJ+f4U/+5C+0LW4vB3z0DaIurUnRrocV4KVsJ1Hy67GFIp2sjQ5telPXgCYow0d3hregYMKP6iSxinXeloA==} + + '@dcloudio/uni-app-plus@3.0.0-4060620250520001': + resolution: {integrity: sha512-dvPgDWXUyh9DLb7q9hPCFzFEb3Nc26V5E3xNeAELwsOdAltzsrrz4ecPBYaOqoUREZ4PNmcNuS/I+AuNW+HvVA==} + + '@dcloudio/uni-app-uts@3.0.0-4060620250520001': + resolution: {integrity: sha512-kq1JhhBmtmdfqmkeOCj3jhOwIv3J20gqXbMexoc1B998k42Byt4XQ68x/fITeZ6JGUw/ev99eFexyECI4Y1Nuw==} + + '@dcloudio/uni-app-vite@3.0.0-4060620250520001': + resolution: {integrity: sha512-Aid9y2L330X0r7v3IwlJFLTrlESNEqgkwxzyuTZqN6Zlhb1ETgHuliV0Bl1/Pq4GPnt3OEgFg2H2BcqAYekNGQ==} + + '@dcloudio/uni-app-vue@3.0.0-4060620250520001': + resolution: {integrity: sha512-eBr1gZlpyzW6jv2mMvrU9eTfibfWJu7cSU8P6k8OoKRt9bIRrQxELNsDGsORQFaWkrNcuarhAXuKxxvnV9bVCA==} + + '@dcloudio/uni-app@3.0.0-4060620250520001': + resolution: {integrity: sha512-lF9bNbAyeGNP0uAgpcdby5+Wbf4gdvjtW2J/DIWe5E0zoFfTDJkyiE3Zg90i3uF7aZ4unw/hwBdlGLZ6xuQIAg==} + peerDependencies: + '@dcloudio/types': ^3.4.14 + + '@dcloudio/uni-automator@3.0.0-4060620250520001': + resolution: {integrity: sha512-ImOT4lXHyTPUVNs4jIweB1ORtcIsWVPcO0/Yr9jh1Qwfy17D4yC26+R8cx+kDdowYutTV1hA3IqKk/g/NS2x+Q==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-4020820240925001': + resolution: {integrity: sha512-zWIMxjyc8OdpZU1/ivEfjQQa5jNk2sThIkBS6hM3rs7E68HE6cAxPZqZh9CY0LuM8XsAgILIoY77yTcCM3vMJQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cli-shared@3.0.0-4060620250520001': + resolution: {integrity: sha512-6OhYL/3xDq2vqqfD6jka8yfNPEjTFcr6qZ1HQvN6YZbM1+AJrgPZkCyhh3w4ypC911lSMVWeWqunIigLLobXAw==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-4060620250520001': + resolution: {integrity: sha512-M/OCsqNwWkj0xjKqECGHy2w/Veo4E52TZJifov+7dOahRvEKuZe2S5gstI7YlfQuNl17B1MsckyUVwdoqthsiw==} + + '@dcloudio/uni-components@3.0.0-4060620250520001': + resolution: {integrity: sha512-kRIGLVaTvkoUFgljtxyTbSRgin7l0TVc9biZTViLRFL8W1DbK7/Nxy4XAOgUwPC807c/bKAf/JUfljlCcMwwQg==} + + '@dcloudio/uni-console@3.0.0-4060620250520001': + resolution: {integrity: sha512-KdEj12xYogeGKBxrTh/9HKUsTOe3+nzK1mszT7abkeEZ0iLFEVewhQjxqpD7AzLeGL4wem648sVc+lEbLz75vw==} + + '@dcloudio/uni-h5-vite@3.0.0-4060620250520001': + resolution: {integrity: sha512-sLHfMkEfUMJTZXZedr2/FGuz+M84teDnt1BrdZjGE1tiC+1qPHa49Bg8oxeuR0MLWLAuWq33cW4b2149/ZBW7Q==} + + '@dcloudio/uni-h5-vue@3.0.0-4060620250520001': + resolution: {integrity: sha512-5il9s6XMxSmi1ZT6xBqKr6D7Si71rxxRC50WxMyr/a59rgpLVcvqonX6BMPwAxxgYKrGU6HIUifJs0UnD64JNQ==} + + '@dcloudio/uni-h5@3.0.0-4060620250520001': + resolution: {integrity: sha512-lfjD85Pj0rLnsPJQKP6T+iy3H1gW/PWwcRU8b/K6lfE0CL74P9DdgZp9VsFRyaTvH1uvwg+PeUElj6iFsI9cSQ==} + + '@dcloudio/uni-i18n@3.0.0-4020820240925001': + resolution: {integrity: sha512-+EfuUC79QIYIbKB8cdH0IoY69DYytG9jeybIATSlMwMZjVJznA8dGfvkfgy29mBjgLYThuXyZ1dSZ33DXr9MBw==} + + '@dcloudio/uni-i18n@3.0.0-4060620250520001': + resolution: {integrity: sha512-UqYcjERvmlb8FPhKqg9xAkDPxjMXG9BjezaVm0PTw33Jm5h2Sf9BnCJZYVg2RNS7+3kPSwUBIGdyC4rBNI4COg==} + + '@dcloudio/uni-mp-alipay@3.0.0-4060620250520001': + resolution: {integrity: sha512-B+8QhXjSZzU1Z8jG5GofPtPuLCsBiGobqlhVMmM7e+KJqKdEGPTFhYFXBoQU3zoU1ONCWvRW6VhScWIt26+4Wg==} + + '@dcloudio/uni-mp-baidu@3.0.0-4060620250520001': + resolution: {integrity: sha512-hHmwVyrU+ubdglHP2W9yirm9MTgdHoIWSvoR+sQsaL3ygQBE67di6vyqJhPmH4rB+I0j7/29yLjbQ58Xzz77yg==} + + '@dcloudio/uni-mp-compiler@3.0.0-4060620250520001': + resolution: {integrity: sha512-nMeZO/vX/vOZVCnFj+fwwzyrSwWI/oiBUL3ci1bnPfOR8mgM1TB6TVLt3x0g8Xmpjvc88E9/La+2UmCpcKWUAg==} + + '@dcloudio/uni-mp-harmony@3.0.0-4060620250520001': + resolution: {integrity: sha512-vT72FTv5po6tb7iaWb5iJ4P2AHSZBi2SK0FHNGux8wRYaMs1Qh3cgwBKcWZb/hbZbMNT/Zu+ydgq09nUtKm/0g==} + + '@dcloudio/uni-mp-jd@3.0.0-4060620250520001': + resolution: {integrity: sha512-4CQEmLeXeiTKTncWCpL6zAa0SEDKLCUzCkbUfNXcvUl/D7N37nkPdIhyZNWGTt7d3SQCOPSiqN1vGS10X82mOA==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-4060620250520001': + resolution: {integrity: sha512-aWLBYZ9G+ltRIgIt1n7gr43CNSlwIRKF5NJ7uxj8uAOscEAt+VXIUsPS6bqhkrQ4Nt3zggSOrF0zBRF4YQVSuA==} + + '@dcloudio/uni-mp-lark@3.0.0-4060620250520001': + resolution: {integrity: sha512-8NwHxJb1rtIvEemGfbBQRGqojlL6KGObxluEtrFX+bjqzAmHqvd6kBAR7LUBFAnHmigVZ9V6J0tqt3Fs2hZJYg==} + + '@dcloudio/uni-mp-qq@3.0.0-4060620250520001': + resolution: {integrity: sha512-4iYm9Mnb0whS68qNiJ+t08PaUjP9Jfxwc81RsaPYMSm4oQvDmG8h7STSqAJS70ldUvvX7qjiU8eC6g2fbu+glQ==} + + '@dcloudio/uni-mp-toutiao@3.0.0-4060620250520001': + resolution: {integrity: sha512-ChTXgYQM55pFyoSRhJh8pIykRPPZ7Ijkj2KaHnPkivAdictZrA0Urj8v4/DDDfFamHRnSNNyciPLZKjlJqZVMA==} + + '@dcloudio/uni-mp-vite@3.0.0-4060620250520001': + resolution: {integrity: sha512-zk62bZsl6X6U+Ite7p7BONIjnN7XiNdhu8P+xcZGDOJCstUawrdbvqzsix2Uht/UxFp4I4a7lB82nDLCcPBdlA==} + + '@dcloudio/uni-mp-vue@3.0.0-4060620250520001': + resolution: {integrity: sha512-7VlkwL8XSPhurdkj3CXVWaNPt5ydsQJqRtXZDsbpiLET3TF3pB23QRdPHWSZadv1BSM0zOxaA3HiHnnSQmnG3Q==} + + '@dcloudio/uni-mp-weixin@3.0.0-4060620250520001': + resolution: {integrity: sha512-0vzOMVPsLtJB/LF+HlplZEzYmXguEP8Ph4Gzl1/5o7PSvsZQGz+e6hpCjjQPSWdm6Pga4nvGnrtOQ9F7yZvkfA==} + + '@dcloudio/uni-mp-xhs@3.0.0-4060620250520001': + resolution: {integrity: sha512-Q60T5QACcdO2OYi7L0c7rTPHP9K9c8OvWG44XD2pNnxaYYm8+UzHG1oCPLgvqRcTy9ZiRF3xvWilgj/Fuwu7rA==} + + '@dcloudio/uni-nvue-styler@3.0.0-4060620250520001': + resolution: {integrity: sha512-XsM2jDrMVMMQvKJLGHcxBV4sGkyiFw0J6SctbYci7I/qf/se9WehEqdnuNdFrDv1Fah92bitQ5RFrNrsh7MKOw==} + + '@dcloudio/uni-push@3.0.0-4060620250520001': + resolution: {integrity: sha512-7ly9CIZQOPu/mkej/M/2OI88Qq2O89E71lbW2NM+isHMbeJWXDTIn84Xdlk9EONWcOw03HuUWLb2ZYqoeDYiTw==} + + '@dcloudio/uni-quickapp-webview@3.0.0-4060620250520001': + resolution: {integrity: sha512-DN1BEeX4PxOPR5EG4zHx/QI7DLoBtqIshw3DPOvtaLPMOd9LKMFgiHRm37WkIjUSDzD1n/DgRB+nXgxH20lCvQ==} + + '@dcloudio/uni-shared@3.0.0-4020820240925001': + resolution: {integrity: sha512-CSzMyxotDk/O8Yc2h1B0Bfm/wiDumexLNRJ0EJxXBX2eCyHpLl9SMrYIDqC0Y7aSHNPYA2UKfoaAujTMGqFmtg==} + + '@dcloudio/uni-shared@3.0.0-4060620250520001': + resolution: {integrity: sha512-U3VhBYC2+kPDFm7Ap9oZeJTqmys774bcli6kJpNmDYFkgkqOoYUtT+0SueOliREL98ogaqoW42zV5T4XjPXj4w==} + + '@dcloudio/uni-stacktracey@3.0.0-4060620250520001': + resolution: {integrity: sha512-Sd3Zvps3TWqMCiSVUtb0Ro30GhA1ic7e92kv5PzCP9REHg7ecNJl7ACo6cY2NioAgITEvmMu6jeZKE2Z+FX4sg==} + + '@dcloudio/uni-stat@3.0.0-4060620250520001': + resolution: {integrity: sha512-l2XREt2On5uf33PVrAdarncMmGqBLkgZdLsafqag8R2Kdw2Gg/JQQ66RsrLlfBHN2m9eXpfFW6MITqF2vYOoeA==} + + '@dcloudio/vite-plugin-uni@3.0.0-4060620250520001': + resolution: {integrity: sha512-U2UDgnEF6A2xQ2cqGnwaCZMCOk6hMQaJ/lmJoUAlst9ldy8c70T4oPTfzaJzBUQJioF0T+BRhF/HbKnrxICh4g==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^5.2.8 + + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + + '@es-joy/jsdoccomment@0.50.2': + resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} + engines: {node: '>=18'} + + '@es-joy/jsdoccomment@0.51.1': + resolution: {integrity: sha512-fPn7AW/unCg3JRLt8Wg44HLRVkAEfkFIXiGRJbeOIrd7Hgl4iOFwVHpvVR8I5hJYpn5mNFWwIXR6A16ZRA/M9w==} + engines: {node: '>=18'} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + 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.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + 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.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + 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.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + 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.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + 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.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + 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.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + 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.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + 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.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + 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.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + 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.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + 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.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + 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.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + 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.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + 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.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + 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.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + 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.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + 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.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + 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.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + 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.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + 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.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + 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.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0': + resolution: {integrity: sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.3.0': + resolution: {integrity: sha512-ZBygRBqpDYiIHsN+d1WyHn3TYgzgpzLEcgJUxTATyiInQbKZz6wZb6+ljwdg8xeeOe4v03z6Uh6lELiw0/mVhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.20.1': + resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.3': + resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.15.0': + resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.29.0': + resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@6.6.0': + resolution: {integrity: sha512-IsWPy2jU3gaQDlioDC4sT4I4kG1hX1OMWs/q2sWwJrPoMASHW/Z4SDw+6Aql6EsHejGbagYuJbFq9Zvx+Y1b1Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.2': + resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify-json/carbon@1.2.4': + resolution: {integrity: sha512-DhW2jjMVGwV0DLHc0cmDYohdtGxMra8UuwgjHrryPy+rQX4gXhJwCBBVP2h2UG/92AoRCTn7zUJve4WvY5MLYg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@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'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@napi-rs/wasm-runtime@0.2.10': + resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + + '@node-rs/xxhash-android-arm-eabi@1.7.6': + resolution: {integrity: sha512-ptmfpFZ8SgTef58Us+0HsZ9BKhyX/gZYbhLkuzPt7qUoMqMSJK85NC7LEgzDgjUiG+S5GahEEQ9/tfh9BVvKhw==} + engines: {node: '>= 12'} + cpu: [arm] + os: [android] + + '@node-rs/xxhash-android-arm64@1.7.6': + resolution: {integrity: sha512-n4MyZvqifuoARfBvrZ2IBqmsGzwlVI3kb2mB0gVvoHtMsPbl/q94zoDBZ7WgeP3t4Wtli+QS3zgeTCOWUbqqUQ==} + engines: {node: '>= 12'} + cpu: [arm64] + os: [android] + + '@node-rs/xxhash-darwin-arm64@1.7.6': + resolution: {integrity: sha512-6xGuE07CiCIry/KT3IiwQd/kykTOmjKzO/ZnHlE5ibGMx64NFE0qDuwJbxQ4rGyUzgJ0KuN9ZdOhUDJmepnpcw==} + engines: {node: '>= 12'} + cpu: [arm64] + os: [darwin] + + '@node-rs/xxhash-darwin-x64@1.7.6': + resolution: {integrity: sha512-Z4oNnhyznDvHhxv+s0ka+5KG8mdfLVucZMZMejj9BL+CPmamClygPiHIRiifRcPAoX9uPZykaCsULngIfLeF3Q==} + engines: {node: '>= 12'} + cpu: [x64] + os: [darwin] + + '@node-rs/xxhash-freebsd-x64@1.7.6': + resolution: {integrity: sha512-arCDOf3xZ5NfBL5fk5J52sNPjXL2cVWN6nXNB3nrtRFFdPBLsr6YXtshAc6wMVxnIW4VGaEv/5K6IpTA8AFyWw==} + engines: {node: '>= 12'} + cpu: [x64] + os: [freebsd] + + '@node-rs/xxhash-linux-arm-gnueabihf@1.7.6': + resolution: {integrity: sha512-ndLLEW+MwLH3lFS0ahlHCcmkf2ykOv/pbP8OBBeAOlz/Xc3jKztg5IJ9HpkjKOkHk470yYxgHVaw1QMoMzU00A==} + engines: {node: '>= 12'} + cpu: [arm] + os: [linux] + + '@node-rs/xxhash-linux-arm64-gnu@1.7.6': + resolution: {integrity: sha512-VX7VkTG87mAdrF2vw4aroiRpFIIN8Lj6NgtGHF+IUVbzQxPudl4kG+FPEjsNH8y04yQxRbPE7naQNgHcTKMrNw==} + engines: {node: '>= 12'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@node-rs/xxhash-linux-arm64-musl@1.7.6': + resolution: {integrity: sha512-AB5m6crGYSllM9F/xZNOQSPImotR5lOa9e4arW99Bv82S+gcpphI8fGMDOVTTCXY/RLRhvvhwzLDxmLB2O8VDg==} + engines: {node: '>= 12'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@node-rs/xxhash-linux-x64-gnu@1.7.6': + resolution: {integrity: sha512-a2A6M+5tc0PVlJlE/nl0XsLEzMpKkwg7Y1lR5urFUbW9uVQnKjJYQDrUojhlXk0Uv3VnYQPa6ThmwlacZA5mvQ==} + engines: {node: '>= 12'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@node-rs/xxhash-linux-x64-musl@1.7.6': + resolution: {integrity: sha512-WioGJSC1GoxQpmdQrG5l/uddSBAS4XCWczHNwXe895J5xadGQzyvmr0r17BNfihvbBUDH1H9jwouNYzDDeA6+A==} + engines: {node: '>= 12'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@node-rs/xxhash-wasm32-wasi@1.7.6': + resolution: {integrity: sha512-WDXXKMMFMrez+esm2DzMPHFNPFYf+wQUtaXrXwtxXeQMFEzleOLwEaqV0+bbXGJTwhPouL3zY1Qo2xmIH4kkTg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@node-rs/xxhash-win32-arm64-msvc@1.7.6': + resolution: {integrity: sha512-qjDFUZJT/Zq0yFS+0TApkD86p0NBdPXlOoHur9yNeO9YX2/9/b1sC2P7N27PgOu13h61TUOvTUC00e/82jAZRQ==} + engines: {node: '>= 12'} + cpu: [arm64] + os: [win32] + + '@node-rs/xxhash-win32-ia32-msvc@1.7.6': + resolution: {integrity: sha512-s7a+mQWOTnU4NiiypRq/vbNGot/il0HheXuy9oxJ0SW2q/e4BJ8j0pnP6UBlAjsk+005A76vOwsEj01qbQw8+A==} + engines: {node: '>= 12'} + cpu: [ia32] + os: [win32] + + '@node-rs/xxhash-win32-x64-msvc@1.7.6': + resolution: {integrity: sha512-zHOHm2UaIahRhgRPJll+4Xy4Z18aAT/7KNeQW+QJupGvFz+GzOFXMGs3R/3B1Ktob/F5ui3i1MrW9GEob3CWTg==} + engines: {node: '>= 12'} + cpu: [x64] + os: [win32] + + '@node-rs/xxhash@1.7.6': + resolution: {integrity: sha512-XMisO+aQHsVpxRp/85EszTtOQTOlhPbd149P/Xa9F55wafA6UM3h2UhOgOs7aAzItnHU/Aw1WQ1FVTEg7WB43Q==} + engines: {node: '>= 12'} + + '@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.2.7': + resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@prettier/sync@0.5.2': + resolution: {integrity: sha512-Yb569su456XNx5BsH/Vyem7xD6g/y9iLmLUzRKM1a/dhU/D7HqqvkAG72znulXlMXztbV0iiu9O5AL8K98TzZQ==} + peerDependencies: + prettier: '*' + + '@quansync/fs@0.1.3': + resolution: {integrity: sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==} + engines: {node: '>=20.0.0'} + + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.28.0': + resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@stylistic/eslint-plugin@5.0.0-beta.5': + resolution: {integrity: sha512-hYoTE1AuPKkF8gN6nwJVnBovUEkt3UGiE3zu8nNmFi3yw7F36l1/tU/VRg16CZC804rnAhUwsYTHqKnAPqICxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@tanstack/match-sorter-utils@8.19.4': + resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} + engines: {node: '>=12'} + + '@tanstack/query-core@5.62.16': + resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==} + + '@tanstack/vue-query@5.62.16': + resolution: {integrity: sha512-QVx/tAexhAN+q0IbwyhVXu3f3hujfvhqLlZMNAWKTrDSUcp2BxJNjPyiti5gcaDhQwBUK9BdSXIFFYLcjYWvvA==} + peerDependencies: + '@vue/composition-api': ^1.1.2 + vue: ^2.6.0 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@trivago/prettier-plugin-sort-imports@5.2.1': + resolution: {integrity: sha512-NDZndt0fmVThIx/8cExuJHLZagUVzfGCoVrwH9x6aZvwfBdkrDFTYujecek6X2WpG4uUFsVaPg5+aNQPSyjcmw==} + engines: {node: '>18.12'} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + prettier-plugin-svelte: 3.x + svelte: 4.x || 5.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + prettier-plugin-svelte: + optional: true + svelte: + optional: true + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@20.17.50': + resolution: {integrity: sha512-Mxiq0ULv/zo1OzOhwPqOA13I81CV/W3nvd3ChtQZRT5Cwz3cr0FKo/wMSsbTqL3EXpaBAEQhva2B8ByRkOIh9A==} + + '@types/node@20.17.9': + resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} + + '@types/node@20.19.0': + resolution: {integrity: sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/wechat-miniprogram@3.4.8': + resolution: {integrity: sha512-lOqddA707X3SZxVhlZNBZPzYzj7lG/ED2fF30k+aE2oT6R4wfw0Wiup2k2hGrmzYUFyJXfGs01sDCuJMhQMAdg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@typescript-eslint/eslint-plugin@8.34.1': + resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.34.1 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.34.1': + resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/project-service@8.34.1': + resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.34.1': + resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.34.1': + resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.34.1': + resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.34.1': + resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.34.1': + resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.34.1': + resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.34.1': + resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uni-helper/eslint-config@0.4.0': + resolution: {integrity: sha512-8Cbe4Ortvxs9A708LWN5gyZoUx4TpjPQwusL7tPmRLeSgKvwMppeRq3pDckhXiFXXT2RTdn3LKE8SH5gMPD8fg==} + peerDependencies: + '@antfu/eslint-config': ^4.0.1 + eslint: ^9.10.0 + + '@uni-helper/uni-app-types@1.0.0-alpha.3': + resolution: {integrity: sha512-lhSpVroEUxzre1vzKAckg85CFLUpn6vw9L2FDO1d8cd9JtMstlXkYmIn/Oz8tqzXxQ1sOgd3YcwoQmkXsw+Oxw==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.5.4 + vue: ^3.4.21 + + '@uni-helper/uni-cloud-types@1.0.0-alpha.3': + resolution: {integrity: sha512-rFyWXR2C3XQ59MzLvhSFBV0jFzY6NvZ7KKxTsOB1eVkt9VBFXiCHGr3tE8X5yG9ZslUdye1W+whZ25d8RhmQTQ==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^5.5.4 + vue: ^3.4.21 + + '@uni-helper/uni-env@0.0.3': + resolution: {integrity: sha512-K6MEnmN7Dg+NnEkfUUhjaKc/rPVY7tcGdsVUKOlC1/z2E6H6zjSSTdJg8z+sVJtZ03Ff1G/MHz2PYDyAS6gjQQ==} + + '@uni-helper/uni-env@0.1.7': + resolution: {integrity: sha512-vxWnscbm1VgmK4ZzqN721mY0mIIVCeJutA32fH9P29itaYewVfL9VAWZWZi7nHJEssTkzhfdTTfydcnJKxUQzg==} + + '@uni-helper/uni-types@1.0.0-alpha.3': + resolution: {integrity: sha512-wFGaFTY9coLZ9us1SlUPxPhOcQd3bvPmvkpi3CvQANLMVVnaqp3WY/vlrr4rZBQgYeePnkdm7rRxnDLPmJS24A==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.3 + '@uni-helper/uni-cloud-types': 1.0.0-alpha.3 + '@uni-helper/uni-ui-types': 1.0.0-alpha.3 + typescript: ^5.5.4 + vue: ^3.4.21 + + '@uni-helper/uni-ui-types@1.0.0-alpha.3': + resolution: {integrity: sha512-4laNtsQOJYFszvFcxMJfLwcruh/Qx2tsKMyG7+9J2ORCUMJ3HnLsfyCkMkqP8Jj3jwHEgN0XzKzueJaCgIAUiA==} + engines: {node: '>=14.18'} + peerDependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.3 + typescript: ^5.5.4 + vue: ^3.4.21 + + '@uni-helper/unocss-preset-uni@0.2.11': + resolution: {integrity: sha512-/863vV/9y89j0ZzEGSrz+dCsOjxxUpGTNHL7+i/yokhyscmvcH8KPEpcOTfNtbkE5ALyJdNnfN70g2jbpxC3mw==} + peerDependencies: + '@unocss/preset-legacy-compat': '>=0.58' + '@unocss/preset-mini': '>=0.58' + '@unocss/rule-utils': '>=0.58' + '@unocss/vite': '>=0.58' + unocss: '>=0.58' + unocss-applet: '>=0.7' + peerDependenciesMeta: + '@unocss/preset-mini': + optional: true + '@unocss/vite': + optional: true + + '@uni-helper/vite-plugin-uni-components@0.2.0': + resolution: {integrity: sha512-h/rV8Z3N+wus/ZviYzkdRePNSUlkndn5H+wVC17ZXmG+2mqmUfLJdGskzrCbgE7Y1TT7u8E9yMz8Ah/RwMf0GQ==} + + '@uni-helper/vite-plugin-uni-layouts@0.1.10': + resolution: {integrity: sha512-RJdGmJjZtpKNVfShiKYZrualMxdi+i8uh7zpPG+X3lzf6wyKSJgWwVAj3GUdqeE/QUEncNPmj2sqwuyeLXPxbA==} + + '@uni-helper/vite-plugin-uni-manifest@0.2.8': + resolution: {integrity: sha512-6QtUcCTkvpR5GAPUxyKlEtm+KYxOk1RSVfdrxlWYW2q7Iws0D7UeNirA4GMuc/SaayEjURlU7cUrS7NceoPCfQ==} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@uni-helper/vite-plugin-uni-pages@0.2.28': + resolution: {integrity: sha512-WSunH3tWjuw9tVAVOqo/RmkKPsaF97MY5I9FXuTuovs4j5oNgPiot9Ysb6T5RJN2KU2zlBlQi1dO/ZMj9b4BYA==} + peerDependencies: + vite: ^5.0.0 + + '@uni-helper/vite-plugin-uni-platform@0.0.4': + resolution: {integrity: sha512-aQnhpiLpxlxr6C2i6FsEbY6aFJH1igZUC5DsqoDscD/dBnpCPnovW9bFL/ig8qHsq87iAnqwhZtEpsLrzgrDaw==} + + '@uni-ku/bundle-optimizer@1.3.3': + resolution: {integrity: sha512-/E7bxVH3Iu/ul8GOxNW18mvQ9ccuQ/HotfoXkHfNZhP346o6cHIn4lbrGTDw10sOfg47KR9zks6hjf5R6lywpw==} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + + '@unocss-applet/preset-applet@0.10.0': + resolution: {integrity: sha512-bN6jaZo0WMQRvKVDisUXAF4Ig2CVDMe8rk6rZDxzWNFZiReMYK97SxS/JTEFAknWSu4C+GYtut+57NPD2PqHrg==} + peerDependencies: + '@unocss/core': '>=66.0.0' + '@unocss/preset-mini': '>=66.0.0' + '@unocss/preset-wind3': '>=66.0.0' + + '@unocss-applet/preset-rem-rpx@0.10.0': + resolution: {integrity: sha512-l4bLD6RxOqpX+5YJi8a0ntgWjUWWMYZh9gNeMCX337YBi/1qZHjnn96D+K6gny0ECBFq1pa9jvlWY0MismvXGQ==} + peerDependencies: + '@unocss/core': '>=66.0.0' + + '@unocss-applet/transformer-attributify@0.10.0': + resolution: {integrity: sha512-T1h3Zu/KHbMpXl5qSqeAuaGovmtmxX4YsDrFM173N3Y8VxDOQhrA2IzNYotftSkLLZeqKmnqr3g2M24ansdnjw==} + peerDependencies: + '@unocss/core': '>=66.0.0' + + '@unocss/astro@65.4.2': + resolution: {integrity: sha512-5UR8KmonbpeeSG5pxWtBYlwr9XNbcsrVTfXKzWZAic5kRUWQREFpmjMcDL/+Co+OYWe4z5WWayjwfQUmLLPG5w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@65.4.2': + resolution: {integrity: sha512-eQmzBhph67CDe+MNz8k/3rMwR1g1xCKZIWfrFoSQv7CqlJxgjRgFOxmnIw7pGhUEC0wenrvauGkVjFkIUHFqeg==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@65.4.2': + resolution: {integrity: sha512-2xyWDt6t879rsdxJ0TiRbk9ENkGuLjAWjl3aAph5HHxwgGaBN1c9S5G9607j/WXP+tO6c37B4Q1iG/XYx35HBA==} + engines: {node: '>=14'} + + '@unocss/config@66.1.2': + resolution: {integrity: sha512-2sQXj+Qaq4RVDELVTPoXMggZ30g1WKHeCuur396I12Ab0HgAR6bTc/DIrNtqKVHFI3mmlvP1oM1ynhKWSKPsTg==} + engines: {node: '>=14'} + + '@unocss/config@66.2.3': + resolution: {integrity: sha512-Xd2P1NgD7poYKDMI176yPvmMojBbc1HH26dgG8OYpNiBuzdhdLuyfSLPbpAOXPSyoK8Fu2BikS+NLTWQ8MmgFQ==} + engines: {node: '>=14'} + + '@unocss/core@0.59.4': + resolution: {integrity: sha512-bBZ1sgcAtezQVZ1BST9IS3jqcsTLyqKNjiIf7FTnX3DHpfpYuMDFzSOtmkZDzBleOLO/CtcRWjT0HwTSQAmV0A==} + + '@unocss/core@65.4.2': + resolution: {integrity: sha512-VmXy5D25por+pt9LBlKZ3gk4rOE5ldm80MyVOEnLcpaFb9LqB0g/8qUU9/Dk3TSA+ZPeoGm53Juo0p8LMFIigA==} + + '@unocss/core@66.1.2': + resolution: {integrity: sha512-mN9h1hHEuhDcdbI4z74o7UnxlBZYVsJpYcdC1YLWBKROcLYTkuyZ7hgBzpo1FBNox2Bt3JnrSinVDmc44Bxjow==} + + '@unocss/core@66.2.0': + resolution: {integrity: sha512-jq+UPvmf271MjY/RoREBmjSCzTYdjzdlgBcjmtymYjBRg7a6a0GiSuhdL0D20cwQ4MoBvlO1tIzgCqnqImACBg==} + + '@unocss/core@66.2.3': + resolution: {integrity: sha512-mRpwm3HUAqCtQrBB7+vkCp0qDZT+G1s2EAVJIF6zzrnoqb2BmIlHgz7DXVDufRFMRJtQUCp2jVMtEQZCTXEVjQ==} + + '@unocss/eslint-plugin@66.2.3': + resolution: {integrity: sha512-HULjzcEsfbcHWzTMOkJbsZ90Y/gCyUW3QGepj4p4IMv8iYRvpeoBq0vYknu08rOBZjSH+ONVyIGIRbp/J9kD2Q==} + engines: {node: '>=14'} + + '@unocss/extractor-arbitrary-variants@65.4.2': + resolution: {integrity: sha512-qm5JXfjbxgXqhQAeOfV1jFT1ThBTi1bP1m+Nu2p6tB9EUbAUp+AKY4sODueqDXoriUtOc7h0QzyW3Lm+s3fTGw==} + + '@unocss/extractor-arbitrary-variants@66.1.2': + resolution: {integrity: sha512-F570wH9VYeFTb4r8qgcbN5QpEVIAvFC1zOnrAPUr6B6kbU2YChMXxHP7PHK0AzLHnEr458Pwpzl6hmP6bzxZ8g==} + + '@unocss/extractor-arbitrary-variants@66.2.0': + resolution: {integrity: sha512-tRvWLbLLZweCv+eujbkvjflNclbkrJHhW2asuBUcaHXCzXIHCYgbBdF3lV5ww1lBBfEUWekgyFC/9fbB4rh1fg==} + + '@unocss/inspector@65.4.2': + resolution: {integrity: sha512-64m6SpjbeTQNqgWLUQpVwu1WQpuv4RshA1KIs4cc6WdDivckWb4woA+4Zdm+DjYjm0aLqX7oUE0kWwjK+pIZdA==} + + '@unocss/inspector@66.1.2': + resolution: {integrity: sha512-ftdZzFP5DAKDzgBI078xDDZbNNVq1RV/yhpNkviBvWCUsgRWc6o3G8swqJPIvFaphmUms0RIYH9shmXilVXFtA==} + + '@unocss/postcss@65.4.2': + resolution: {integrity: sha512-LKb8K9B1zTFN6zaQYIYSiFRz4a+HpNHKSIGjo/dtN0p0R1ME7VaGOgwg3+cEsNguNhTeXoaX5y/ADp8KP/HD6A==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@65.4.2': + resolution: {integrity: sha512-DHFHU+tvknLMk01cWQjLjEdJkRyPIdVYVoCoR9yzmwwVT6n7JKK1R/Ailwofm2229GjplY5c9qu1PjA5K1K7Vw==} + + '@unocss/preset-icons@65.4.2': + resolution: {integrity: sha512-XytFiMSbIqPshiVtsiFoq1nqyFYNTGnxMe6g3w+Zj5B+vNwfwHPR6CD8pTSkXpbW6zo+Ed/CBYe0pRwCrYjcgw==} + + '@unocss/preset-legacy-compat@0.59.4': + resolution: {integrity: sha512-vUggTaG8qXNzaLn5tGzQ+7VzYTjH3sjaN+wVV5I9XojgoiBGmyuyw0xuSVBmiQmxvdGV3KPUBZ5td///hprW8w==} + + '@unocss/preset-mini@65.4.2': + resolution: {integrity: sha512-4ZZK9KwDHjI8wFUKeB+30GHekPmy1OzXncjlXhqm+vNQ7FO3xCee7VY00E5bgz5Tt0pXALcKFlrEspjpSaeCoQ==} + + '@unocss/preset-mini@66.1.2': + resolution: {integrity: sha512-oiDe+VhwZ8B5Z0UGfggtOwgpRZMLtH1RTDFvmJmJEXYYX5BPWknS6wYcQzxy0i/y9ym0xp2QnEaTpGmR7LKdkg==} + + '@unocss/preset-tagify@65.4.2': + resolution: {integrity: sha512-Ldk2QU8Zmy9irQQ/ZlFLBTPfPTHDBXcbxsxCFFCjI/MiTMh1Wac6cpryoYlju5SJ+yQuys4sIKzjkhRUD2d7Ug==} + + '@unocss/preset-typography@65.4.2': + resolution: {integrity: sha512-Mp3GSS24qP8Fdf3wH2UeM4PRqGOuJGvKMNuZsIPX09Y/HcpleyjolBDNiagaM2rdp5cs2jcvWDAJ2fz9OXR3HQ==} + + '@unocss/preset-uno@65.4.2': + resolution: {integrity: sha512-rJcGx/+EWA3wXGOAZdYQFSEn8knsiqiST/Ji1adN+9dTq4BVYMZ9n3zYRF6GZ8p61aZomhU4jmzpLk12RMdxpg==} + + '@unocss/preset-web-fonts@65.4.2': + resolution: {integrity: sha512-YVgjB3igldU5uKgwkDXNvxe9cISiLBnaKwW2bjJJyyTZ3QbjbYklgI4LyakxtnY4hf6U1vO+1W83/GIhl2RAdw==} + + '@unocss/preset-wind3@66.1.2': + resolution: {integrity: sha512-S09imGOngAAOXCBCHb3JAtxD1/L7nDWrgEeX6NT0ElDp3X1T6XxUXYJlpjCfcqV/klMoXyYouKvp0YuG9QSgVg==} + + '@unocss/preset-wind4@66.2.0': + resolution: {integrity: sha512-+qllvO142kajxD9EFag1WmiCJOjIxoMTVh1sW30SFXftB6rvVCaA8GbDo/Jnk9gXtmRQ2L9ZnuxPIx8W65pBjA==} + + '@unocss/preset-wind@65.4.2': + resolution: {integrity: sha512-TQm9P2UHpqfn92APfZJtbK2brkXQ+GInFL2evup/ZChU1fqdbH9mL0ef6ZNQbCH4gjY6mEzwPXt4lhGod6CajA==} + + '@unocss/reset@65.4.2': + resolution: {integrity: sha512-Sas0lTGEgzdWKafSiT+dyhhrUOkOpPbhJYbPMgjW6Ol/tB5JXhdlCNm90Xue1wt453P8O3J4v+dQcyrdRSq0Ig==} + + '@unocss/rule-utils@65.4.2': + resolution: {integrity: sha512-OdMSJZiZUr8XmLo3Bz3Wrw1nZLT1nTPnPOV8gdi4vZ+2RgCChua9o8Dz4IyeQ7mMhLXoqHIUpJ7jE5Nv+Uz1Fw==} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.1.2': + resolution: {integrity: sha512-nn0ehvDh7yyWq2mcBDLVpmMAivjRATUroZ8ETinyN1rmfsGesm71R0d1gV3K+Z6YC7a3+dMLc+/qzI7VK3AG/Q==} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.2.0': + resolution: {integrity: sha512-T2Gg8WwLeCi7QaOss6EKC5Ypmbls+dqet5sMRsiIE5Mi04j3ndS0+lTwV/x7X6NnN6kCoh0IlwCdBUU4tkJbkQ==} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.2.3': + resolution: {integrity: sha512-OL4s4pTb/YD66OK2b7NavwSqGTn5cDBaafkLphqnXKe9/DUfGoWNmeUAHfSzvM1QelprRXtPNLK/GIfUjcsNMg==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@65.4.2': + resolution: {integrity: sha512-3jANN8pnOd3xX8PhkUMhRYEwT97HOYNLMiACpRb2x3MRxYjmpOPR/We31r/tYz23hMsbGkR0C5xvpuCkDj2QAA==} + + '@unocss/transformer-compile-class@65.4.2': + resolution: {integrity: sha512-9kRV7W6LA7D+OBfbA2ayKJyZl9RnOb1mv+XW0KcFdD8KP0r8DfxT5rOj6QpEt88d6KwDo09iOaExsy0rHU7ZTg==} + + '@unocss/transformer-directives@65.4.2': + resolution: {integrity: sha512-u/hbpRe/mEasRdzznGQnKmJqDHcoJ2MJJBLpDc2RisiAEokz73dno3JtT70HZVA+DN7Y9ddAKioxlvSU+iJxFA==} + + '@unocss/transformer-variant-group@65.4.2': + resolution: {integrity: sha512-a5xjR9mPUo7n6wD3nO5tcEcH7j0ks25E3d100XdNUeVUJeszzMAeLZ/uYrkd6Z3amyLLxwVOkAdYcczGhKdsbA==} + + '@unocss/vite@65.4.2': + resolution: {integrity: sha512-pEIU/egxec0CErgUwo/Nuyfi+ZZPIBD+XQBi2Pa51VKeuD91BBnXc1JGu9yzRT2WbrGP3hwsDgYqhj2G6wGXyA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + + '@unocss/vite@66.1.2': + resolution: {integrity: sha512-ZJHN8+HKSrclVjT/+S7Vh2t59DK8J44d5nLZPG1Goua7uNK8yYJeOLK2sCGX7aackRer1ZynmglFFzxNFVt+IA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + + '@vitejs/plugin-legacy@5.3.2': + resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.1.0': + resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.2.7': + resolution: {integrity: sha512-7WHcGZo6uXsE4SsSnpGDqKyGrd6NfOMM52WKoHSpTRZLbjMuDyHfA5P7m8yrr73tpqYjsiAdSjSerOnx8uEhpA==} + peerDependencies: + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@volar/language-core@2.4.14': + resolution: {integrity: sha512-X6beusV0DvuVseaOEy7GoagS4rYHgDHnTrdOj5jeUb49fW5ceQyP9Ej5rBhqgz2wJggl+2fDbbojq1XKaxDi6w==} + + '@volar/source-map@2.4.14': + resolution: {integrity: sha512-5TeKKMh7Sfxo8021cJfmBzcjfY1SsXsPMMjMvjY7ivesdnybqqS+GxGAoXHAOUawQTwtdUxgP65Im+dEmvWtYQ==} + + '@volar/typescript@2.4.14': + resolution: {integrity: sha512-p8Z6f/bZM3/HyCdRNFZOEEzts51uV8WHeN8Tnfnm2EBv6FDB2TQLzfVx7aJvnl8ofKAOnS64B2O8bImBFaauRw==} + + '@vue/babel-helper-vue-transform-on@1.2.5': + resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} + + '@vue/babel-plugin-jsx@1.2.5': + resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.5': + resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-core@3.5.15': + resolution: {integrity: sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-dom@3.5.15': + resolution: {integrity: sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-sfc@3.5.15': + resolution: {integrity: sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/compiler-ssr@3.5.15': + resolution: {integrity: sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/consolidate@1.0.0': + resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} + engines: {node: '>= 0.12.0'} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/language-core@2.2.10': + resolution: {integrity: sha512-+yNoYx6XIKuAO8Mqh1vGytu8jkFEOH5C8iOv3i8Z/65A7x9iAOXA97Q+PqZ3nlm2lxf5rOJuIGI/wDtx/riNYw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/reactivity@3.5.15': + resolution: {integrity: sha512-GaA5VUm30YWobCwpvcs9nvFKf27EdSLKDo2jA0IXzGS344oNpFNbEQ9z+Pp5ESDaxyS8FcH0vFN/XSe95BZtHQ==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-core@3.5.15': + resolution: {integrity: sha512-CZAlIOQ93nj0OPpWWOx4+QDLCMzBNY85IQR4Voe6vIID149yF8g9WQaWnw042f/6JfvLttK7dnyWlC1EVCRK8Q==} + + '@vue/runtime-dom@3.5.15': + resolution: {integrity: sha512-wFplHKzKO/v998up2iCW3RN9TNUeDMhdBcNYZgs5LOokHntrB48dyuZHspcahKZczKKh3v6i164gapMPxBTKNw==} + + '@vue/server-renderer@3.4.21': + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + + '@vue/server-renderer@3.5.15': + resolution: {integrity: sha512-Gehc693kVTYkLt6QSYEjGvqvdK2zZ/gf/D5zkgmvBdeB30dNnVZS8yY7+IlBmHRd1rR/zwaqeu06Ij04ZxBscg==} + peerDependencies: + vue: 3.5.15 + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vue/shared@3.5.15': + resolution: {integrity: sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==} + + '@vue/tsconfig@0.1.3': + resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + a-sync-waterfall@1.0.1: + resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abortcontroller-polyfill@1.7.8: + resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + 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-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansis@4.1.0: + resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + engines: {node: '>=14'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + ast-kit@0.11.3: + resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} + engines: {node: '>=16.14.0'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bing-translate-api@4.0.2: + resolution: {integrity: sha512-JJ8XUehnxzOhHU91oy86xEtp8OOMjVEjCZJX042fKxoO19NNvxJ5omeCcxQNFoPbDqVpBJwqiGVquL0oPdQm1Q==} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} + + 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 + + c12@2.0.4: + resolution: {integrity: sha512-3DbbhnFt0fKJHxU4tEUPmD1ahWE4PWPMomqfYsTJdrhpmEnRKJi3qSC4rO5U6E6zN1+pjBY7+z8fUmNRMaVKLw==} + peerDependencies: + magicast: ^0.3.5 + 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-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001686: + resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} + + caniuse-lite@1.0.30001724: + resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@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'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + 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@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + + core-js-compat@3.43.0: + resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} + + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + + css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + + css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + + css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + + css-list-helpers@2.0.0: + resolution: {integrity: sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==} + + css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + 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 + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + 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.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + 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-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'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + dom-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==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + 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==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.171: + resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==} + + electron-to-chromium@1.5.68: + resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + 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.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + 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@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@2.1.0: + resolution: {integrity: sha512-6fjOJ9tS0k28ketkUcQ+kKptB4dBZY2VijMZ9rGn8Cwnn1SH0cZBoPXT8AHBFHxmHcLFQK9zbELDinZ2Mr1rng==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' + + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@3.3.0: + resolution: {integrity: sha512-hDy283ajilnXykdJZQB5SuIPPZ8He4rzltirXiCgT7/O05DV40IeS6RzRNqnNcNUFviW1ZHAY2DgzGjs1MIC6w==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import-lite@0.3.0: + resolution: {integrity: sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=4.5' + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-jsdoc@51.1.0: + resolution: {integrity: sha512-dWyjRvQcAuFHZUTUaJEw7OQ6XziNlbz2wZNt6QuLUHwYMnOWzs6vGSikR/ZSeh+IFHjdH+91AKf+CwYjlJ4kVA==} + engines: {node: '>=20.11.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.20.1: + resolution: {integrity: sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.20.0: + resolution: {integrity: sha512-IRSoatgB/NQJZG5EeTbv/iAx1byOGdbbyhQrNvWdCfTnmPxUT0ao9/eGOeG7ljD8wJBsxwE8f6tES5Db0FRKEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.15.0: + resolution: {integrity: sha512-pC7PgoXyDnEXe14xvRUhBII8A3zRgggKqJFx2a82fjrItDs1BSI7zdZnQtM2yQvcyod6/ujmzb7ejKPx8lZTnw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-plugin-pnpm@0.3.1: + resolution: {integrity: sha512-vi5iHoELIAlBbX4AW8ZGzU3tUnfxuXhC/NKo3qRcI5o9igbz6zJUqSlQ03bPeMqWIGTPatZnbWsNR1RnlNERNQ==} + peerDependencies: + eslint: ^9.0.0 + + eslint-plugin-regexp@2.9.0: + resolution: {integrity: sha512-9WqJMnOq8VlE/cK+YAo9C9YHhkOtcEtEk9d12a+H7OSZFwlpI6stiHmYPGa2VE0QhTzodJyhlyprUaXDZLgHBw==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@59.0.1: + resolution: {integrity: sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==} + engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} + peerDependencies: + eslint: '>=9.22.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@10.2.0: + resolution: {integrity: sha512-tl9s+KN3z0hN2b8fV2xSs5ytGl7Esk1oSCxULLwFcdaElhZ8btYYZFrWxvh4En+czrSDtuLCeCOGa8HhEZuBdQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + + eslint-plugin-yml@1.18.0: + resolution: {integrity: sha512-9NtbhHRN2NJa/s3uHchO3qVVZw0vyOIvWlXWGaKCr/6l3Go62wsvJK5byiI6ZoYztDsow4GnS69BZD3GnqH3hA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.29.0: + resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + engines: {node: '>= 0.10.0'} + + exsolve@1.0.5: + resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + 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-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@3.0.3: + resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} + engines: {node: '>= 6'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-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.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} + hasBin: true + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + 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'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + importx@0.4.4: + resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==} + + importx@0.5.2: + resolution: {integrity: sha512-YEwlK86Ml5WiTxN/ECUYC5U7jd1CisAVw7ya4i9ZppBoHfFkT2+hChhr3PE2fYxUKLkNyivxEQpa5Ruil1LJBQ==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.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-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + 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-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.0.4: + resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-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-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + 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'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + licia@1.46.0: + resolution: {integrity: sha512-Zms2AjJB+KdqUKFF87J5J/w9DwXnGN/lKlbjpRgvaPf0BIQ0mOZ/2lX4E79zwNafHGMUq5RtN54FN6Af5G92cA==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + 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@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + + 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.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} + + localstorage-polyfill@1.0.1: + resolution: {integrity: sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + 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.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + + magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-synchronized@0.2.9: + resolution: {integrity: sha512-4wczOs8SLuEdpEvp3vGo83wh8rjJ78UsIk7DIX5fxdfmfMJGog4bQzxfvOwq7Q3yCHLC4jp1urPHIxRS/A93gA==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + 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.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + mockjs@1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + + module-alias@2.2.3: + resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} + + 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==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nunjucks@3.2.4: + resolution: {integrity: sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==} + engines: {node: '>= 6.9.0'} + hasBin: true + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + 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'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openapi-ts-request@1.1.2: + resolution: {integrity: sha512-Hzqm3JzxgzyGGrTv1THo21HqDea215IQq4I3Ic/WMh/Y+SbmeLb7VQmdeIORPP3Wx836qlTm3X0H10ignkPqfQ==} + engines: {node: '>=18.0.0', pnpm: '>=9'} + hasBin: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + 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-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + + 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'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia-plugin-persistedstate@3.2.1: + resolution: {integrity: sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==} + peerDependencies: + pinia: ^2.0.0 + + pinia@2.0.36: + resolution: {integrity: sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.1.0: + resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + pnpm-workspace-yaml@0.3.1: + resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==} + + postcss-html@1.7.0: + resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==} + engines: {node: ^12 || >=14} + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.1.0: + resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} + 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-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + 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.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode-reader@1.0.4: + resolution: {integrity: sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==} + + qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + 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==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + reserved-words@0.1.2: + resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + 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'} + + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + 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@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + 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-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + 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==} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.8: + resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tiny-pinyin@1.3.2: + resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} + + 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.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + unconfig@0.5.5: + resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} + + unconfig@0.6.1: + resolution: {integrity: sha512-cVU+/sPloZqOyJEAfNwnQSFCzFrZm85vcVkryH7lnlB/PiTycUkAjt5Ds79cfIshGOZ+M5v3PBDnKgpmlE5DtA==} + + unconfig@7.3.2: + resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + 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.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unimport@3.14.3: + resolution: {integrity: sha512-yEJps4GW7jBdoQlxEV0ElBCJsJmH8FdZtk4oog0y++8hgLh0dGnDpE4oaTc0Lfx4N5rRJiGFUWHrBqC8CyUBmQ==} + + unimport@4.1.1: + resolution: {integrity: sha512-j9+fijH6aDd05yv1fXlyt7HSxtOWtGtrZeYTVBsSUg57Iuf+Ps2itIZjeyu7bEQ4k0WOgYhHrdW8m/pJgOpl5g==} + engines: {node: '>=18.12.0'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unocss-applet@0.10.0: + resolution: {integrity: sha512-heFDDR2ETuxrzNagAr6K5rrLChQwj4RD0rXdzjF6DD30DafdAqJXaPJ2ZGzXOZK6HW4F0yUc1cJsaVM5N6vroA==} + peerDependencies: + unocss: '>=66.0.0' + + unocss@65.4.2: + resolution: {integrity: sha512-fAmolcpWyU9TlYw04cXu1ba4+lxh/PKjT5xKEAobWCTmwkS+yQDJ3LrEkqfGvry2EJr2os+/qhQm1lAx/0o7Ww==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 65.4.2 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.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-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.17.8: + resolution: {integrity: sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-auto-import@19.1.0: + resolution: {integrity: sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} + + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + engines: {node: '>=14.0.0'} + + unplugin@2.3.4: + resolution: {integrity: sha512-m4PjxTurwpWfpMomp8AptjD5yj8qEZN5uQjjGM3TAs9MWWD2tXSSNNj6jGR2FoVGod4293ytyV6SwBbertfyJg==} + engines: {node: '>=18.12.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-plugin-restart@0.4.2: + resolution: {integrity: sha512-9aWN2ScJ8hbT7aC8SDeZnsbWapnslz1vhNq6Vgf2GU9WdN4NExlrWhtnu7pmtOUG3Guj8y6lPcUZ+ls7SVP33w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + + vite@5.2.8: + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@10.1.3: + resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + vue-flow-layout@0.1.1: + resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} + peerDependencies: + vue: ^3.4.37 + + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@2.2.10: + resolution: {integrity: sha512-jWZ1xSaNbabEV3whpIDMbjVSVawjAyW+x1n3JeGQo7S0uv2n9F/JMgWW90tGWNFRKya4YwKMZgCtr0vRAM7DeQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.15: + resolution: {integrity: sha512-aD9zK4rB43JAMK/5BmS4LdPiEp8Fdh8P1Ve/XNuMF5YRf78fCyPE6FUbQwcaWQ5oZ1R2CD9NKE0FFOVpMR7gEQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wot-design-uni@1.9.1: + resolution: {integrity: sha512-bZBt6xt5HfvmHBm76BZWBrvthHKeK7cbR//bbmv2ICjPRLXvD9KKHGZDZrq6C/j+DXHzA4UbcGer3iE8XcuVkw==} + engines: {HBuilderX: ^3.8.7} + peerDependencies: + vue: '>=3.2.47' + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest@1.8.0: + resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} + engines: {node: '>=0.4.0'} + + xregexp@3.1.0: + resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml-eslint-parser@1.3.0: + resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + z-paging@2.8.7: + resolution: {integrity: sha512-RcDeKFoCQB51dmrrTb1PMIazjTqGuAbFmjPS0/N5hdUNTCRvxGOOBTBFolvIxUcsWhrocI9C0mYDgUwXT6Dwcg==} + engines: {HBuilderX: ^3.0.7} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/eslint-config@4.15.0(@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 0.11.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint/markdown': 6.6.0 + '@stylistic/eslint-plugin': 5.0.0-beta.5(eslint@9.29.0(jiti@2.4.2)) + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@vitest/eslint-plugin': 1.2.7(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + ansis: 4.1.0 + cac: 6.7.14 + eslint: 9.29.0(jiti@2.4.2) + eslint-config-flat-gitignore: 2.1.0(eslint@9.29.0(jiti@2.4.2)) + eslint-flat-config-utils: 2.1.0 + eslint-merge-processors: 2.0.0(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-antfu: 3.1.1(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-command: 3.3.0(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-import-lite: 0.3.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + eslint-plugin-jsdoc: 51.1.0(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.20.1(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-n: 17.20.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.15.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + eslint-plugin-pnpm: 0.3.1(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.9.0(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-toml: 0.12.0(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-unicorn: 59.0.1(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-vue: 10.2.0(eslint@9.29.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2))) + eslint-plugin-yml: 1.18.0(eslint@9.29.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2)) + globals: 16.2.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 1.1.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 10.1.3(eslint@9.29.0(jiti@2.4.2)) + yaml-eslint-parser: 1.3.0 + optionalDependencies: + '@unocss/eslint-plugin': 66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + transitivePeerDependencies: + - '@eslint/json' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@0.7.10': {} + + '@antfu/utils@8.1.1': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.2': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/generator@7.27.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.25.9': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/parser@7.27.5': + dependencies: + '@babel/types': 7.27.6 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.27.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.27.1 + esutils: 2.0.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.27.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@babel/types@7.27.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@commitlint/cli@19.8.1(@types/node@20.17.9)(typescript@5.7.2)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@20.17.9)(typescript@5.7.2) + '@commitlint/read': 19.8.1 + '@commitlint/types': 19.8.1 + tinyexec: 1.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + ajv: 8.17.1 + + '@commitlint/ensure@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.8.1': {} + + '@commitlint/format@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + semver: 7.7.2 + + '@commitlint/lint@19.8.1': + dependencies: + '@commitlint/is-ignored': 19.8.1 + '@commitlint/parse': 19.8.1 + '@commitlint/rules': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/load@19.8.1(@types/node@20.17.9)(typescript@5.7.2)': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/execute-rule': 19.8.1 + '@commitlint/resolve-extends': 19.8.1 + '@commitlint/types': 19.8.1 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@20.17.9)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.8.1': {} + + '@commitlint/parse@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.8.1': + dependencies: + '@commitlint/top-level': 19.8.1 + '@commitlint/types': 19.8.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 1.0.1 + + '@commitlint/resolve-extends@19.8.1': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/types': 19.8.1 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.8.1': + dependencies: + '@commitlint/ensure': 19.8.1 + '@commitlint/message': 19.8.1 + '@commitlint/to-lines': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/to-lines@19.8.1': {} + + '@commitlint/top-level@19.8.1': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.8.1': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.3.0 + + '@dcloudio/types@3.4.14': {} + + '@dcloudio/uni-app-harmony@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-app-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + debug: 4.4.1 + fs-extra: 10.1.0 + licia: 1.46.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-plus@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-app-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-app-vue': 3.0.0-4060620250520001 + debug: 4.4.1 + fs-extra: 10.1.0 + licia: 1.46.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-console': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-nvue-styler': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@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.1 + es-module-lexer: 1.5.4 + estree-walker: 2.0.2 + fs-extra: 10.1.0 + magic-string: 0.30.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unimport: 4.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-nvue-styler': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + debug: 4.4.1 + fs-extra: 10.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-4060620250520001': {} + + '@dcloudio/uni-app@3.0.0-4060620250520001(@dcloudio/types@3.4.14)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/types': 3.4.14 + '@dcloudio/uni-cloud': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-components': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-console': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-push': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@dcloudio/uni-stat': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-4060620250520001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.4.1 + default-gateway: 6.0.3 + fs-extra: 10.1.0 + jest: 27.0.4 + jest-environment-node: 27.5.1 + jsonc-parser: 3.3.1 + licia: 1.46.0 + merge: 2.1.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4020820240925001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.26.0 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-i18n': 3.0.0-4020820240925001 + '@dcloudio/uni-shared': 3.0.0-4020820240925001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@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.15(typescript@5.7.2)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.16 + autoprefixer: 10.4.20(postcss@8.4.49) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.1 + es-module-lexer: 1.5.4 + 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.4 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.17 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.4.49) + postcss-load-config: 3.1.4(postcss@8.4.49) + postcss-modules: 4.3.1(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + source-map-js: 1.2.1 + tapable: 2.2.1 + unplugin-auto-import: 0.16.7(rollup@4.41.1) + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.26.0 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@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.15(typescript@5.7.2)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.16 + autoprefixer: 10.4.20(postcss@8.4.49) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.1 + es-module-lexer: 1.5.4 + 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.4 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.17 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.4.49) + postcss-load-config: 3.1.4(postcss@8.4.49) + postcss-modules: 4.3.1(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + source-map-js: 1.2.1 + tapable: 2.2.1 + unimport: 4.1.1 + unplugin-auto-import: 19.1.0 + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-h5': 3.0.0-4060620250520001(patch_hash=5763725268e9a493075be3c82d91b590b9ae30e997a04a418494dd7d6d327b9d)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-console@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.5.15(typescript@5.7.2)) + '@vue/shared': 3.4.21 + debug: 4.4.1 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.2.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-4060620250520001(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/server-renderer': 3.4.21(vue@3.5.15(typescript@5.7.2)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-4060620250520001(patch_hash=5763725268e9a493075be3c82d91b590b9ae30e997a04a418494dd7d6d327b9d)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-h5-vue': 3.0.0-4060620250520001(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/server-renderer': 3.4.21(vue@3.5.15(typescript@5.7.2)) + '@vue/shared': 3.4.21 + debug: 4.4.1 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.2 + safe-area-insets: 1.4.1 + vue-router: 4.5.0(vue@3.5.15(typescript@5.7.2)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-4020820240925001': {} + + '@dcloudio/uni-i18n@3.0.0-4060620250520001': {} + + '@dcloudio/uni-mp-alipay@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(@dcloudio/types@3.4.14)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-app': 3.0.0-4060620250520001(@dcloudio/types@3.4.14)(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-mp-weixin': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.46.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - '@dcloudio/types' + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-harmony@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-quickapp-webview': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-mp-weixin': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@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-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-i18n': 3.0.0-4060620250520001 + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + debug: 4.4.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-4060620250520001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + + '@dcloudio/uni-mp-weixin@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.46.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-xhs@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-compiler': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-4060620250520001': + dependencies: + parse-css-font: 4.0.0 + postcss: 8.5.3 + + '@dcloudio/uni-push@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vite': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-mp-vue': 3.0.0-4060620250520001 + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-4020820240925001': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-shared@3.0.0-4060620250520001': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-stacktracey@3.0.0-4060620250520001': {} + + '@dcloudio/uni-stat@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + debug: 4.4.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@dcloudio/uni-cli-shared': 3.0.0-4060620250520001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@dcloudio/uni-shared': 3.0.0-4060620250520001 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + '@vitejs/plugin-legacy': 5.3.2(terser@5.36.0)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0)) + '@vitejs/plugin-vue': 5.1.0(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + cac: 6.7.9 + debug: 4.4.1 + estree-walker: 2.0.2 + express: 4.21.1 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + picocolors: 1.1.1 + terser: 5.36.0 + unplugin-auto-import: 19.1.0 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@es-joy/jsdoccomment@0.50.2': + dependencies: + '@types/estree': 1.0.7 + '@typescript-eslint/types': 8.34.1 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.51.1': + dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.34.1 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.20.2': {} + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.20.2': {} + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.29.0(jiti@2.4.2))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.29.0(jiti@2.4.2) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))': + dependencies: + eslint: 9.29.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.3.0(eslint@9.29.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.29.0(jiti@2.4.2) + + '@eslint/config-array@0.20.1': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.3': {} + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.15.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.29.0': {} + + '@eslint/markdown@6.6.0': + dependencies: + '@eslint/core': 0.14.0 + '@eslint/plugin-kit': 0.3.2 + github-slugger: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-frontmatter: 2.0.1 + mdast-util-gfm: 3.1.0 + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@eslint/plugin-kit@0.3.2': + dependencies: + '@eslint/core': 0.15.0 + levn: 0.4.1 + + '@exodus/schemasafe@1.3.0': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify-json/carbon@1.2.4': + dependencies: + '@iconify/types': 2.0.0 + + '@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.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + + '@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 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/core@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 20.19.0 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.19.0 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.39.0 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.39.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.26.0 + '@jimp/core': 0.10.3 + core-js: 3.39.0 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.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.26.0 + '@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.39.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.26.0 + '@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.39.0 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.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.26.0 + '@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.39.0 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.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.26.0 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + load-bmfont: 1.4.2 + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.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.26.0 + '@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.39.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.26.0 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.39.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.26.0 + '@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.39.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.26.0 + '@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.39.0 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@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.39.0 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.39.0 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@jimp/custom': 0.10.3 + core-js: 3.39.0 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.26.0 + '@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.39.0 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.26.0 + core-js: 3.39.0 + regenerator-runtime: 0.13.11 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@napi-rs/wasm-runtime@0.2.10': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@node-rs/xxhash-android-arm-eabi@1.7.6': + optional: true + + '@node-rs/xxhash-android-arm64@1.7.6': + optional: true + + '@node-rs/xxhash-darwin-arm64@1.7.6': + optional: true + + '@node-rs/xxhash-darwin-x64@1.7.6': + optional: true + + '@node-rs/xxhash-freebsd-x64@1.7.6': + optional: true + + '@node-rs/xxhash-linux-arm-gnueabihf@1.7.6': + optional: true + + '@node-rs/xxhash-linux-arm64-gnu@1.7.6': + optional: true + + '@node-rs/xxhash-linux-arm64-musl@1.7.6': + optional: true + + '@node-rs/xxhash-linux-x64-gnu@1.7.6': + optional: true + + '@node-rs/xxhash-linux-x64-musl@1.7.6': + optional: true + + '@node-rs/xxhash-wasm32-wasi@1.7.6': + dependencies: + '@napi-rs/wasm-runtime': 0.2.10 + optional: true + + '@node-rs/xxhash-win32-arm64-msvc@1.7.6': + optional: true + + '@node-rs/xxhash-win32-ia32-msvc@1.7.6': + optional: true + + '@node-rs/xxhash-win32-x64-msvc@1.7.6': + optional: true + + '@node-rs/xxhash@1.7.6': + optionalDependencies: + '@node-rs/xxhash-android-arm-eabi': 1.7.6 + '@node-rs/xxhash-android-arm64': 1.7.6 + '@node-rs/xxhash-darwin-arm64': 1.7.6 + '@node-rs/xxhash-darwin-x64': 1.7.6 + '@node-rs/xxhash-freebsd-x64': 1.7.6 + '@node-rs/xxhash-linux-arm-gnueabihf': 1.7.6 + '@node-rs/xxhash-linux-arm64-gnu': 1.7.6 + '@node-rs/xxhash-linux-arm64-musl': 1.7.6 + '@node-rs/xxhash-linux-x64-gnu': 1.7.6 + '@node-rs/xxhash-linux-x64-musl': 1.7.6 + '@node-rs/xxhash-wasm32-wasi': 1.7.6 + '@node-rs/xxhash-win32-arm64-msvc': 1.7.6 + '@node-rs/xxhash-win32-ia32-msvc': 1.7.6 + '@node-rs/xxhash-win32-x64-msvc': 1.7.6 + + '@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.17.1 + + '@pkgr/core@0.2.7': {} + + '@polka/url@1.0.0-next.29': {} + + '@prettier/sync@0.5.2(prettier@3.5.3)': + dependencies: + make-synchronized: 0.2.9 + prettier: 3.5.3 + + '@quansync/fs@0.1.3': + dependencies: + quansync: 0.2.10 + + '@rollup/pluginutils@5.1.3(rollup@4.41.1)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.41.1 + + '@rollup/pluginutils@5.1.4(rollup@4.41.1)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.41.1 + + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.28.0': {} + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + + '@sindresorhus/is@4.6.0': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@stylistic/eslint-plugin@5.0.0-beta.5(eslint@9.29.0(jiti@2.4.2))': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@typescript-eslint/types': 8.34.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@tanstack/match-sorter-utils@8.19.4': + dependencies: + remove-accents: 0.5.0 + + '@tanstack/query-core@5.62.16': {} + + '@tanstack/vue-query@5.62.16(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@tanstack/match-sorter-utils': 8.19.4 + '@tanstack/query-core': 5.62.16 + '@vue/devtools-api': 6.6.4 + vue: 3.5.15(typescript@5.7.2) + vue-demi: 0.14.10(vue@3.5.15(typescript@5.7.2)) + + '@tootallnate/once@1.1.2': {} + + '@trivago/prettier-plugin-sort-imports@5.2.1(@vue/compiler-sfc@3.5.15)(prettier@3.5.3)': + dependencies: + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 3.5.3 + optionalDependencies: + '@vue/compiler-sfc': 3.5.15 + transitivePeerDependencies: + - supports-color + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.6 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.17.9 + '@types/responselike': 1.0.3 + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 20.17.50 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@1.0.6': {} + + '@types/estree@1.0.7': {} + + '@types/estree@1.0.8': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 20.19.0 + + '@types/http-cache-semantics@4.0.4': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 20.17.9 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@20.17.50': + dependencies: + undici-types: 6.19.8 + + '@types/node@20.17.9': + dependencies: + undici-types: 6.19.8 + + '@types/node@20.19.0': + dependencies: + undici-types: 6.21.0 + + '@types/prettier@2.7.3': {} + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.17.9 + + '@types/stack-utils@2.0.3': {} + + '@types/unist@3.0.3': {} + + '@types/wechat-miniprogram@3.4.8': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.34.1 + eslint: 9.29.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.34.1 + debug: 4.4.1 + eslint: 9.29.0(jiti@2.4.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.34.1(typescript@5.7.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.7.2) + '@typescript-eslint/types': 8.34.1 + debug: 4.4.1 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.34.1': + dependencies: + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 + + '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.7.2)': + dependencies: + typescript: 5.7.2 + + '@typescript-eslint/type-utils@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + debug: 4.4.1 + eslint: 9.29.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.34.1': {} + + '@typescript-eslint/typescript-estree@8.34.1(typescript@5.7.2)': + dependencies: + '@typescript-eslint/project-service': 8.34.1(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.7.2) + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.7.2) + eslint: 9.29.0(jiti@2.4.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.34.1': + dependencies: + '@typescript-eslint/types': 8.34.1 + eslint-visitor-keys: 4.2.1 + + '@uni-helper/eslint-config@0.4.0(@antfu/eslint-config@4.15.0(@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))': + dependencies: + '@antfu/eslint-config': 4.15.0(@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@eslint/eslintrc': 3.3.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-flat-config-utils: 2.1.0 + local-pkg: 1.1.1 + transitivePeerDependencies: + - supports-color + + '@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))': + dependencies: + typescript: 5.7.2 + vue: 3.5.15(typescript@5.7.2) + + '@uni-helper/uni-cloud-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))': + dependencies: + typescript: 5.7.2 + vue: 3.5.15(typescript@5.7.2) + + '@uni-helper/uni-env@0.0.3': {} + + '@uni-helper/uni-env@0.1.7': + dependencies: + std-env: 3.8.0 + + '@uni-helper/uni-types@1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(@uni-helper/uni-cloud-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(@uni-helper/uni-ui-types@1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + '@uni-helper/uni-cloud-types': 1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + '@uni-helper/uni-ui-types': 1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + typescript: 5.7.2 + vue: 3.5.15(typescript@5.7.2) + + '@uni-helper/uni-ui-types@1.0.0-alpha.3(@uni-helper/uni-app-types@1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@uni-helper/uni-app-types': 1.0.0-alpha.3(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + typescript: 5.7.2 + vue: 3.5.15(typescript@5.7.2) + + '@uni-helper/unocss-preset-uni@0.2.11(@unocss/preset-legacy-compat@0.59.4)(@unocss/preset-mini@66.1.2)(@unocss/rule-utils@66.2.3)(@unocss/vite@66.1.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)))(unocss-applet@0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2)(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))))(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)))': + dependencies: + '@uni-helper/uni-env': 0.1.7 + '@unocss/preset-legacy-compat': 0.59.4 + '@unocss/rule-utils': 66.2.3 + unocss: 65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + unocss-applet: 0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2)(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))) + optionalDependencies: + '@unocss/preset-mini': 66.1.2 + '@unocss/vite': 66.1.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + + '@uni-helper/vite-plugin-uni-components@0.2.0(rollup@4.41.1)': + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + chokidar: 3.6.0 + debug: 4.4.1 + fast-glob: 3.3.3 + local-pkg: 0.4.3 + magic-string: 0.30.17 + minimatch: 8.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - rollup + - supports-color + + '@uni-helper/vite-plugin-uni-layouts@0.1.10(rollup@4.41.1)': + dependencies: + '@babel/types': 7.27.6 + '@uni-helper/uni-env': 0.1.7 + '@vue/compiler-core': 3.5.15 + '@vue/compiler-sfc': 3.5.15 + ast-kit: 0.11.3(rollup@4.41.1) + c12: 1.11.2 + chokidar: 3.6.0 + fast-glob: 3.3.3 + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + scule: 1.3.0 + transitivePeerDependencies: + - magicast + - rollup + + '@uni-helper/vite-plugin-uni-manifest@0.2.8(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))': + dependencies: + c12: 2.0.4 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - magicast + + '@uni-helper/vite-plugin-uni-pages@0.2.28(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))': + dependencies: + '@uni-helper/uni-env': 0.1.7 + '@vue/compiler-sfc': 3.5.15 + chokidar: 3.6.0 + debug: 4.4.1 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + fast-glob: 3.3.3 + json5: 2.2.3 + lodash.groupby: 4.6.0 + magic-string: 0.30.17 + unconfig: 0.5.5 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + yaml: 2.6.1 + transitivePeerDependencies: + - supports-color + + '@uni-helper/vite-plugin-uni-platform@0.0.4': + dependencies: + '@uni-helper/uni-env': 0.0.3 + + '@uni-ku/bundle-optimizer@1.3.3(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4020820240925001(postcss@8.4.49)(rollup@4.41.1)(vue@3.5.15(typescript@5.7.2)) + '@node-rs/xxhash': 1.7.6 + chalk: 4.1.2 + magic-string: 0.30.17 + minimatch: 9.0.5 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@unocss-applet/preset-applet@0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2)': + dependencies: + '@unocss/core': 66.2.3 + '@unocss/preset-mini': 66.1.2 + '@unocss/preset-wind3': 66.1.2 + '@unocss/preset-wind4': 66.2.0 + + '@unocss-applet/preset-rem-rpx@0.10.0(@unocss/core@66.2.3)': + dependencies: + '@unocss/core': 66.2.3 + + '@unocss-applet/transformer-attributify@0.10.0(@unocss/core@66.2.3)': + dependencies: + '@unocss/core': 66.2.3 + magic-string: 0.30.17 + + '@unocss/astro@65.4.2(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/reset': 65.4.2 + '@unocss/vite': 65.4.2(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + optionalDependencies: + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - rollup + - supports-color + - vue + + '@unocss/cli@65.4.2(rollup@4.41.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/preset-uno': 65.4.2 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.17 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.14 + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/config@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + unconfig: 0.6.1 + transitivePeerDependencies: + - supports-color + + '@unocss/config@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + unconfig: 7.3.2 + optional: true + + '@unocss/config@66.2.3': + dependencies: + '@unocss/core': 66.2.3 + unconfig: 7.3.2 + + '@unocss/core@0.59.4': {} + + '@unocss/core@65.4.2': {} + + '@unocss/core@66.1.2': {} + + '@unocss/core@66.2.0': {} + + '@unocss/core@66.2.3': {} + + '@unocss/eslint-plugin@66.2.3(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + '@unocss/config': 66.2.3 + '@unocss/core': 66.2.3 + '@unocss/rule-utils': 66.2.3 + magic-string: 0.30.17 + synckit: 0.11.8 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/extractor-arbitrary-variants@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/extractor-arbitrary-variants@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + + '@unocss/extractor-arbitrary-variants@66.2.0': + dependencies: + '@unocss/core': 66.2.0 + + '@unocss/inspector@65.4.2(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.1 + vue-flow-layout: 0.1.1(vue@3.5.15(typescript@5.7.2)) + transitivePeerDependencies: + - vue + + '@unocss/inspector@66.1.2(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@unocss/core': 66.1.2 + '@unocss/rule-utils': 66.1.2 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.1 + vue-flow-layout: 0.1.1(vue@3.5.15(typescript@5.7.2)) + transitivePeerDependencies: + - vue + optional: true + + '@unocss/postcss@65.4.2(postcss@8.4.49)': + dependencies: + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + css-tree: 3.1.0 + postcss: 8.4.49 + tinyglobby: 0.2.14 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-attributify@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/preset-icons@65.4.2': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 65.4.2 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-legacy-compat@0.59.4': + dependencies: + '@unocss/core': 0.59.4 + + '@unocss/preset-mini@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/extractor-arbitrary-variants': 65.4.2 + '@unocss/rule-utils': 65.4.2 + + '@unocss/preset-mini@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + '@unocss/extractor-arbitrary-variants': 66.1.2 + '@unocss/rule-utils': 66.1.2 + + '@unocss/preset-tagify@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/preset-typography@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 + + '@unocss/preset-uno@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/preset-wind': 65.4.2 + '@unocss/rule-utils': 65.4.2 + + '@unocss/preset-web-fonts@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + ofetch: 1.4.1 + + '@unocss/preset-wind3@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + '@unocss/preset-mini': 66.1.2 + '@unocss/rule-utils': 66.1.2 + + '@unocss/preset-wind4@66.2.0': + dependencies: + '@unocss/core': 66.2.0 + '@unocss/extractor-arbitrary-variants': 66.2.0 + '@unocss/rule-utils': 66.2.0 + + '@unocss/preset-wind@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/rule-utils': 65.4.2 + + '@unocss/reset@65.4.2': {} + + '@unocss/rule-utils@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + magic-string: 0.30.17 + + '@unocss/rule-utils@66.1.2': + dependencies: + '@unocss/core': 66.2.3 + magic-string: 0.30.17 + + '@unocss/rule-utils@66.2.0': + dependencies: + '@unocss/core': 66.2.3 + magic-string: 0.30.17 + + '@unocss/rule-utils@66.2.3': + dependencies: + '@unocss/core': 66.2.3 + magic-string: 0.30.17 + + '@unocss/transformer-attributify-jsx@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/transformer-compile-class@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/transformer-directives@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/vite@65.4.2(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/inspector': 65.4.2(vue@3.5.15(typescript@5.7.2)) + chokidar: 3.6.0 + magic-string: 0.30.17 + tinyglobby: 0.2.14 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - rollup + - supports-color + - vue + + '@unocss/vite@66.1.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.1.2 + '@unocss/core': 66.1.2 + '@unocss/inspector': 66.1.2(vue@3.5.15(typescript@5.7.2)) + chokidar: 3.6.0 + magic-string: 0.30.17 + pathe: 2.0.3 + tinyglobby: 0.2.14 + unplugin-utils: 0.2.4 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - vue + optional: true + + '@vitejs/plugin-legacy@5.3.2(terser@5.36.0)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + browserslist: 4.24.2 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.2) + core-js: 3.39.0 + magic-string: 0.30.17 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.36.0 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + vue: 3.5.15(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.1.0(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))': + dependencies: + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + vue: 3.5.15(typescript@5.7.2) + + '@vitest/eslint-plugin@1.2.7(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.29.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + + '@volar/language-core@2.4.14': + dependencies: + '@volar/source-map': 2.4.14 + + '@volar/source-map@2.4.14': {} + + '@volar/typescript@2.4.14': + dependencies: + '@volar/language-core': 2.4.14 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.2.5': {} + + '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@vue/babel-helper-vue-transform-on': 1.2.5 + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.27.2 + '@vue/compiler-sfc': 3.5.15 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.27.2 + '@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.15': + dependencies: + '@babel/parser': 7.27.2 + '@vue/shared': 3.5.15 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-dom@3.5.15': + dependencies: + '@vue/compiler-core': 3.5.15 + '@vue/shared': 3.5.15 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.26.2 + '@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.14 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.15': + dependencies: + '@babel/parser': 7.27.2 + '@vue/compiler-core': 3.5.15 + '@vue/compiler-dom': 3.5.15 + '@vue/compiler-ssr': 3.5.15 + '@vue/shared': 3.5.15 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + 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.15': + dependencies: + '@vue/compiler-dom': 3.5.15 + '@vue/shared': 3.5.15 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/consolidate@1.0.0': {} + + '@vue/devtools-api@6.6.4': {} + + '@vue/language-core@2.2.10(typescript@5.7.2)': + dependencies: + '@volar/language-core': 2.4.14 + '@vue/compiler-dom': 3.5.15 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.15 + alien-signals: 1.0.13 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.7.2 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/reactivity@3.5.15': + dependencies: + '@vue/shared': 3.5.15 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.15': + dependencies: + '@vue/reactivity': 3.5.15 + '@vue/shared': 3.5.15 + + '@vue/runtime-dom@3.5.15': + dependencies: + '@vue/reactivity': 3.5.15 + '@vue/runtime-core': 3.5.15 + '@vue/shared': 3.5.15 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.21(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.5.15(typescript@5.7.2) + + '@vue/server-renderer@3.5.15(vue@3.5.15(typescript@5.7.2))': + dependencies: + '@vue/compiler-ssr': 3.5.15 + '@vue/shared': 3.5.15 + vue: 3.5.15(typescript@5.7.2) + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.5.13': {} + + '@vue/shared@3.5.15': {} + + '@vue/tsconfig@0.1.3(@types/node@20.17.9)': + optionalDependencies: + '@types/node': 20.17.9 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + a-sync-waterfall@1.0.1: {} + + abab@2.0.6: {} + + abortcontroller-polyfill@1.7.8: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.14.0: {} + + acorn@8.14.1: {} + + acorn@8.15.0: {} + + address@1.2.2: {} + + adm-zip@0.5.16: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + 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-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + ansis@4.1.0: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + are-docs-informative@0.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + array-ify@1.0.0: {} + + asap@2.0.6: {} + + ast-kit@0.11.3(rollup@4.41.1): + dependencies: + '@babel/parser': 7.27.5 + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + asynckit@0.4.0: {} + + autoprefixer@10.4.20(postcss@8.4.49): + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001686 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + axios@1.7.9: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-jest@27.5.1(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + babel-preset-jest@27.5.1(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + binary-extensions@2.3.0: {} + + bing-translate-api@4.0.2: + dependencies: + got: 11.8.6 + + bmp-js@0.1.0: {} + + body-parser@1.20.3: + 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.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist-to-esbuild@2.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + meow: 13.2.0 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001686 + electron-to-chromium: 1.5.68 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + browserslist@4.25.0: + dependencies: + caniuse-lite: 1.0.30001724 + electron-to-chromium: 1.5.171 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.0) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-equal@0.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@5.0.0: {} + + bundle-require@5.1.0(esbuild@0.20.2): + dependencies: + esbuild: 0.20.2 + load-tsconfig: 0.2.5 + + bundle-require@5.1.0(esbuild@0.25.5): + dependencies: + esbuild: 0.25.5 + 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.4 + dotenv: 16.5.0 + giget: 1.2.5 + jiti: 1.21.6 + mlly: 1.7.4 + ohash: 1.1.4 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + c12@2.0.4: + dependencies: + chokidar: 4.0.3 + confbox: 0.1.8 + defu: 6.1.4 + dotenv: 16.5.0 + giget: 1.2.5 + jiti: 2.4.2 + mlly: 1.7.4 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + cac@6.7.14: {} + + cac@6.7.9: {} + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-me-maybe@1.0.2: {} + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001686: {} + + caniuse-lite@1.0.30001724: {} + + ccount@2.0.1: {} + + centra@2.7.0: + dependencies: + follow-redirects: 1.15.9 + transitivePeerDependencies: + - debug + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + char-regex@1.0.2: {} + + character-entities@2.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@2.0.0: {} + + ci-info@3.9.0: {} + + ci-info@4.2.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + + cjs-module-lexer@1.4.3: {} + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@5.1.0: {} + + comment-parser@1.4.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compare-versions@3.6.0: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + consola@3.4.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + core-js-compat@3.39.0: + dependencies: + browserslist: 4.24.2 + + core-js-compat@3.43.0: + dependencies: + browserslist: 4.25.0 + + core-js@3.39.0: {} + + cosmiconfig-typescript-loader@6.1.0(@types/node@20.17.9)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + dependencies: + '@types/node': 20.17.9 + cosmiconfig: 9.0.0(typescript@5.7.2) + jiti: 2.4.2 + typescript: 5.7.2 + + cosmiconfig@9.0.0(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-font-size-keywords@1.0.0: {} + + css-font-stretch-keywords@1.0.1: {} + + css-font-style-keywords@1.0.1: {} + + css-font-weight-keywords@1.0.0: {} + + css-list-helpers@2.0.0: {} + + css-system-font-keywords@1.0.0: {} + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.3: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + dargs@8.1.0: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + dayjs@1.11.10: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-indent@6.1.0: {} + + detect-newline@3.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff-sequences@27.5.1: {} + + 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: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv@16.5.0: {} + + 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: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.171: {} + + electron-to-chromium@1.5.68: {} + + emittery@0.8.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.5.4: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-promise@3.3.1: {} + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + 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.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-compat-utils@0.5.1(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + semver: 7.7.2 + + eslint-compat-utils@0.6.5(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + semver: 7.7.2 + + eslint-config-flat-gitignore@2.1.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@eslint/compat': 1.3.0(eslint@9.29.0(jiti@2.4.2)) + eslint: 9.29.0(jiti@2.4.2) + + eslint-flat-config-utils@2.1.0: + dependencies: + pathe: 2.0.3 + + eslint-json-compat-utils@0.2.1(eslint@9.29.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@2.0.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + + eslint-plugin-antfu@3.1.1(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + + eslint-plugin-command@3.3.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.50.2 + eslint: 9.29.0(jiti@2.4.2) + + eslint-plugin-es-x@7.8.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.29.0(jiti@2.4.2)) + + eslint-plugin-import-lite@0.3.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@typescript-eslint/types': 8.34.1 + eslint: 9.29.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.7.2 + + eslint-plugin-jsdoc@51.1.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.51.1 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint: 9.29.0(jiti@2.4.2) + espree: 10.4.0 + esquery: 1.6.0 + parse-imports-exports: 0.2.4 + semver: 7.7.2 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.20.1(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + eslint: 9.29.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.29.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + espree: 10.4.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.11.8 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.20.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + enhanced-resolve: 5.18.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.29.0(jiti@2.4.2)) + get-tsconfig: 4.10.1 + globals: 15.15.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.7.2 + ts-declaration-location: 1.0.7(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.15.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2): + dependencies: + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.29.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@0.3.1(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + find-up-simple: 1.0.1 + jsonc-eslint-parser: 2.4.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 0.3.1 + tinyglobby: 0.2.14 + yaml-eslint-parser: 1.3.0 + + eslint-plugin-regexp@2.9.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.29.0(jiti@2.4.2) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + debug: 4.4.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@59.0.1(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint/plugin-kit': 0.2.8 + ci-info: 4.2.0 + clean-regexp: 1.0.0 + core-js-compat: 3.43.0 + eslint: 9.29.0(jiti@2.4.2) + esquery: 1.6.0 + find-up-simple: 1.0.1 + globals: 16.2.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.2 + strip-indent: 4.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.29.0(jiti@2.4.2))(typescript@5.7.2) + + eslint-plugin-vue@10.2.0(eslint@9.29.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2))): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + eslint: 9.29.0(jiti@2.4.2) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.2 + vue-eslint-parser: 10.1.3(eslint@9.29.0(jiti@2.4.2)) + xml-name-validator: 4.0.0 + + eslint-plugin-yml@1.18.0(eslint@9.29.0(jiti@2.4.2)): + dependencies: + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint: 9.29.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2)) + natural-compare: 1.4.0 + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.15)(eslint@9.29.0(jiti@2.4.2)): + dependencies: + '@vue/compiler-sfc': 3.5.15 + eslint: 9.29.0(jiti@2.4.2) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.29.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.1 + '@eslint/config-helpers': 0.2.3 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.29.0 + '@eslint/plugin-kit': 0.3.2 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + eventemitter3@5.0.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exif-parser@0.1.12: {} + + exit@0.1.2: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + express@4.21.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.5: {} + + ext@1.7.0: + dependencies: + type: 2.7.3 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + 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-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-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + 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.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up-simple@1.0.1: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@3.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + format@0.2.2: {} + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + 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.3.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.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + giget@1.2.5: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.6 + nypm: 0.5.4 + pathe: 2.0.3 + tar: 6.2.1 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.2.0: {} + + gopd@1.2.0: {} + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-sum@2.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-escaper@2.0.2: {} + + html-tags@3.3.1: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-cache-semantics@4.1.1: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + http2-client@1.3.5: {} + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + husky@9.1.7: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immutable@4.3.7: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + import-meta-resolve@4.1.0: {} + + importx@0.4.4: + dependencies: + bundle-require: 5.1.0(esbuild@0.20.2) + debug: 4.4.1 + esbuild: 0.20.2 + jiti: 2.0.0-beta.3 + jiti-v1: jiti@1.21.6 + pathe: 1.1.2 + tsx: 4.19.4 + transitivePeerDependencies: + - supports-color + + importx@0.5.2: + dependencies: + bundle-require: 5.1.0(esbuild@0.25.5) + debug: 4.4.1 + esbuild: 0.25.5 + jiti: 2.4.2 + pathe: 2.0.3 + tsx: 4.19.4 + transitivePeerDependencies: + - supports-color + + imurmurhash@0.1.4: {} + + indent-string@5.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@4.1.1: {} + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@5.0.0: + dependencies: + builtin-modules: 5.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-promise@2.2.2: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typedarray@1.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.27.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + + javascript-natural-sort@0.7.1: {} + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1: + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1: + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.26.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.19.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.10 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1: + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 20.19.0 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.0) + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.7 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.19.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.0.4: + dependencies: + '@jest/core': 27.5.1 + import-local: 3.2.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jimp@0.10.3: + dependencies: + '@babel/runtime': 7.26.0 + '@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.39.0 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jiti@1.21.6: {} + + jiti@2.0.0-beta.3: {} + + jiti@2.4.2: {} + + jpeg-js@0.3.7: {} + + js-cookie@3.0.5: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.5.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.3 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.15.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.2 + + jsonc-parser@3.3.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + kolorist@1.8.0: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + licia@1.46.0: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + lint-staged@15.2.10: + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.7 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.5.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + 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.4.3: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + local-pkg@1.1.1: + dependencies: + mlly: 1.7.4 + pkg-types: 2.1.0 + quansync: 0.2.10 + + localstorage-polyfill@1.0.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.groupby@4.6.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + longest-streak@3.1.0: {} + + lowercase-keys@2.0.0: {} + + lru-cache@11.0.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-queue@0.1.0: + dependencies: + es5-ext: 0.10.64 + + magic-string@0.30.14: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + make-synchronized@0.2.9: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.12.2: {} + + media-typer@0.3.0: {} + + memoizee@0.4.17: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.8 + + meow@12.1.1: {} + + meow@13.2.0: {} + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.1 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + 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.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.5.4 + + mockjs@1.1.0: + dependencies: + commander: 12.1.0 + + module-alias@2.2.3: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + negotiator@0.6.3: {} + + next-tick@1.1.0: {} + + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + + node-fetch-native@1.6.6: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + + node-releases@2.0.18: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nunjucks@3.2.4(chokidar@3.6.0): + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + commander: 5.1.0 + optionalDependencies: + chokidar: 3.6.0 + + nwsapi@2.2.20: {} + + 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.1 + + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + + object-inspect@1.13.3: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + + ohash@1.1.4: {} + + ohash@2.0.11: {} + + 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 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openapi-ts-request@1.1.2(@types/node@20.17.9)(@vue/compiler-sfc@3.5.15)(chokidar@3.6.0)(typescript@5.7.2): + dependencies: + '@prettier/sync': 0.5.2(prettier@3.5.3) + '@trivago/prettier-plugin-sort-imports': 5.2.1(@vue/compiler-sfc@3.5.15)(prettier@3.5.3) + axios: 1.7.9 + bing-translate-api: 4.0.2 + chalk: 4.1.2 + commander: 12.1.0 + cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@20.17.9)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + glob: 11.0.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + memoizee: 0.4.17 + minimatch: 10.0.1 + mockjs: 1.1.0 + nunjucks: 3.2.4(chokidar@3.6.0) + prettier: 3.5.3 + reserved-words: 0.1.2 + rimraf: 6.0.1 + swagger2openapi: 7.0.8 + tiny-pinyin: 1.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + - '@vue/compiler-sfc' + - chokidar + - debug + - encoding + - prettier-plugin-svelte + - supports-color + - svelte + - typescript + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-cancelable@2.1.1: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.3.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-gitignore@2.0.0: {} + + parse-headers@2.0.5: {} + + parse-imports-exports@0.2.4: + dependencies: + parse-statements: 1.0.11 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-statements@1.0.11: {} + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + + path-to-regexp@0.1.10: {} + + 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.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia-plugin-persistedstate@3.2.1(pinia@2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2))): + dependencies: + pinia: 2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)) + + pinia@2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.15(typescript@5.7.2) + vue-demi: 0.14.10(vue@3.5.15(typescript@5.7.2)) + optionalDependencies: + typescript: 5.7.2 + + pirates@4.0.7: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + + pkg-types@2.1.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.5 + pathe: 2.0.3 + + pluralize@8.0.0: {} + + pngjs@3.4.0: {} + + pnpm-workspace-yaml@0.3.1: + dependencies: + yaml: 2.8.0 + + postcss-html@1.7.0: + dependencies: + htmlparser2: 8.0.2 + js-tokens: 9.0.1 + postcss: 8.4.49 + postcss-safe-parser: 6.0.0(postcss@8.4.49) + + postcss-import@14.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-load-config@3.1.4(postcss@8.4.49): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.49 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-modules-local-by-default@4.1.0(postcss@8.4.49): + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 + + postcss-modules-values@4.0.0(postcss@8.4.49): + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + + postcss-modules@4.3.1(postcss@8.4.49): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.49 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) + postcss-modules-values: 4.0.0(postcss@8.4.49) + string-hash: 1.1.3 + + postcss-safe-parser@6.0.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-scss@4.0.9(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.0.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.5.3: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + qs@6.5.3: {} + + quansync@0.2.10: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + reftools@1.1.9: {} + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.0 + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + remove-accents@0.5.0: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + reserved-words@0.1.2: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.1 + + rollup-plugin-visualizer@5.12.0(rollup@4.41.1): + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 4.41.1 + + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-area-insets@1.4.1: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass@1.77.8: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.3 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + std-env@3.8.0: {} + + string-argv@0.3.2: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + swagger2openapi@7.0.8: + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + + symbol-tree@3.2.4: {} + + synckit@0.11.8: + dependencies: + '@pkgr/core': 0.2.7 + + systemjs@6.15.1: {} + + tapable@2.2.1: {} + + 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 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.36.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-extensions@2.4.0: {} + + throat@6.0.2: {} + + through@2.3.8: {} + + timers-ext@0.1.8: + dependencies: + es5-ext: 0.10.64 + next-tick: 1.1.0 + + timm@1.7.1: {} + + tiny-pinyin@1.3.2: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + + totalist@3.0.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + ts-api-utils@2.1.0(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + + ts-declaration-location@1.0.7(typescript@5.7.2): + dependencies: + picomatch: 4.0.2 + typescript: 5.7.2 + + tslib@2.8.1: {} + + tsx@4.19.4: + dependencies: + esbuild: 0.25.5 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type@2.7.3: {} + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.7.2: {} + + ufo@1.5.4: {} + + ufo@1.6.1: {} + + unconfig@0.5.5: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + importx: 0.4.4 + transitivePeerDependencies: + - supports-color + + unconfig@0.6.1: + dependencies: + '@antfu/utils': 8.1.1 + defu: 6.1.4 + importx: 0.5.2 + transitivePeerDependencies: + - supports-color + + unconfig@7.3.2: + dependencies: + '@quansync/fs': 0.1.3 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.10 + + undici-types@6.19.8: {} + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unicorn-magic@0.1.0: {} + + unimport@3.14.3(rollup@4.41.1): + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + acorn: 8.14.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 0.5.1 + magic-string: 0.30.17 + mlly: 1.7.3 + pathe: 1.1.2 + picomatch: 4.0.2 + pkg-types: 1.2.1 + scule: 1.3.0 + strip-literal: 2.1.1 + tinyglobby: 0.2.10 + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + unimport@4.1.1: + dependencies: + acorn: 8.14.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.3 + picomatch: 4.0.2 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 3.0.0 + unplugin: 2.3.4 + unplugin-utils: 0.2.4 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unocss-applet@0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2)(unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2))): + dependencies: + '@unocss-applet/preset-applet': 0.10.0(@unocss/core@66.2.3)(@unocss/preset-mini@66.1.2)(@unocss/preset-wind3@66.1.2) + '@unocss-applet/preset-rem-rpx': 0.10.0(@unocss/core@66.2.3) + '@unocss-applet/transformer-attributify': 0.10.0(@unocss/core@66.2.3) + unocss: 65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + transitivePeerDependencies: + - '@unocss/core' + - '@unocss/preset-mini' + - '@unocss/preset-wind3' + + unocss@65.4.2(postcss@8.4.49)(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)): + dependencies: + '@unocss/astro': 65.4.2(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + '@unocss/cli': 65.4.2(rollup@4.41.1) + '@unocss/core': 65.4.2 + '@unocss/postcss': 65.4.2(postcss@8.4.49) + '@unocss/preset-attributify': 65.4.2 + '@unocss/preset-icons': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/preset-tagify': 65.4.2 + '@unocss/preset-typography': 65.4.2 + '@unocss/preset-uno': 65.4.2 + '@unocss/preset-web-fonts': 65.4.2 + '@unocss/preset-wind': 65.4.2 + '@unocss/transformer-attributify-jsx': 65.4.2 + '@unocss/transformer-compile-class': 65.4.2 + '@unocss/transformer-directives': 65.4.2 + '@unocss/transformer-variant-group': 65.4.2 + '@unocss/vite': 65.4.2(rollup@4.41.1)(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0))(vue@3.5.15(typescript@5.7.2)) + optionalDependencies: + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + - vue + + unpipe@1.0.0: {} + + unplugin-auto-import@0.16.7(rollup@4.41.1): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + fast-glob: 3.3.3 + local-pkg: 0.5.1 + magic-string: 0.30.17 + minimatch: 9.0.5 + unimport: 3.14.3(rollup@4.41.1) + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.17.8(rollup@4.41.1): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.41.1) + fast-glob: 3.3.2 + local-pkg: 0.5.1 + magic-string: 0.30.14 + minimatch: 9.0.5 + unimport: 3.14.3(rollup@4.41.1) + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@19.1.0: + dependencies: + local-pkg: 1.1.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + unimport: 4.1.1 + unplugin: 2.3.4 + unplugin-utils: 0.2.4 + + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + + unplugin@1.16.0: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + + unplugin@2.3.4: + dependencies: + acorn: 8.14.1 + picomatch: 4.0.2 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-browserslist-db@1.1.3(browserslist@4.25.0): + dependencies: + browserslist: 4.25.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + utif@2.0.1: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + vary@1.1.2: {} + + vite-plugin-restart@0.4.2(vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0)): + dependencies: + micromatch: 4.0.8 + vite: 5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0) + + vite@5.2.8(@types/node@20.17.9)(sass@1.77.8)(terser@5.36.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.5.3 + rollup: 4.41.1 + optionalDependencies: + '@types/node': 20.17.9 + fsevents: 2.3.3 + sass: 1.77.8 + terser: 5.36.0 + + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.5.15(typescript@5.7.2)): + dependencies: + vue: 3.5.15(typescript@5.7.2) + + vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2)): + dependencies: + debug: 4.4.1 + eslint: 9.29.0(jiti@2.4.2) + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + vue-flow-layout@0.1.1(vue@3.5.15(typescript@5.7.2)): + dependencies: + vue: 3.5.15(typescript@5.7.2) + + vue-router@4.5.0(vue@3.5.15(typescript@5.7.2)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.15(typescript@5.7.2) + + vue-tsc@2.2.10(typescript@5.7.2): + dependencies: + '@volar/typescript': 2.4.14 + '@vue/language-core': 2.2.10(typescript@5.7.2) + typescript: 5.7.2 + + vue@3.5.15(typescript@5.7.2): + dependencies: + '@vue/compiler-dom': 3.5.15 + '@vue/compiler-sfc': 3.5.15 + '@vue/runtime-dom': 3.5.15 + '@vue/server-renderer': 3.5.15(vue@3.5.15(typescript@5.7.2)) + '@vue/shared': 3.5.15 + optionalDependencies: + typescript: 5.7.2 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@3.0.1: {} + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wot-design-uni@1.9.1(vue@3.5.15(typescript@5.7.2)): + dependencies: + vue: 3.5.15(typescript@5.7.2) + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.10: {} + + ws@8.18.0: {} + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.5 + xtend: 4.0.2 + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml-eslint-parser@1.3.0: + dependencies: + eslint-visitor-keys: 3.4.3 + yaml: 2.6.1 + + yaml@1.10.2: {} + + yaml@2.5.1: {} + + yaml@2.6.1: {} + + yaml@2.8.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + z-paging@2.8.7: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..848a6d9 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +patchedDependencies: + '@dcloudio/uni-h5': patches/@dcloudio__uni-h5.patch diff --git a/scripts/postupgrade.js b/scripts/postupgrade.js new file mode 100644 index 0000000..b1671d2 --- /dev/null +++ b/scripts/postupgrade.js @@ -0,0 +1,35 @@ +// # 执行 `pnpm upgrade` 后会升级 `uniapp` 相关依赖 +// # 在升级完后,会自动添加很多无用依赖,这需要删除以减小依赖包体积 +// # 只需要执行下面的命令即可 + +const { exec } = require('node:child_process') + +// 定义要执行的命令 +const dependencies = [ + '@dcloudio/uni-app-harmony', + // TODO: 如果需要某个平台的小程序,请手动删除或注释掉 + '@dcloudio/uni-mp-alipay', + '@dcloudio/uni-mp-baidu', + '@dcloudio/uni-mp-jd', + '@dcloudio/uni-mp-kuaishou', + '@dcloudio/uni-mp-lark', + '@dcloudio/uni-mp-qq', + '@dcloudio/uni-mp-toutiao', + '@dcloudio/uni-mp-xhs', + '@dcloudio/uni-quickapp-webview', + // i18n模板要注释掉下面的 + 'vue-i18n', +] + +// 使用exec执行命令 +exec(`pnpm un ${dependencies.join(' ')}`, (error, stdout, stderr) => { + if (error) { + // 如果有错误,打印错误信息 + console.error(`执行出错: ${error}`) + return + } + // 打印正常输出 + console.log(`stdout: ${stdout}`) + // 如果有错误输出,也打印出来 + console.error(`stderr: ${stderr}`) +}) diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..fc282a1 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/api/login.ts b/src/api/login.ts new file mode 100644 index 0000000..ad5b26d --- /dev/null +++ b/src/api/login.ts @@ -0,0 +1,83 @@ +import type { ICaptcha, IUpdateInfo, IUpdatePassword, IUserInfoVo, IUserLogin } from './login.typings' +import { http } from '@/utils/http' + +/** + * 登录表单 + */ +export interface ILoginForm { + username: string + password: string + code: string + uuid: string +} + +/** + * 获取验证码 + * @returns ICaptcha 验证码 + */ +export function getCode() { + return http.get('/user/getCode') +} + +/** + * 用户登录 + * @param loginForm 登录表单 + */ +export function login(loginForm: ILoginForm) { + return http.post('/user/login', loginForm) +} + +/** + * 获取用户信息 + */ +export function getUserInfo() { + return http.get('/user/info') +} + +/** + * 退出登录 + */ +export function logout() { + return http.get('/user/logout') +} + +/** + * 修改用户信息 + */ +export function updateInfo(data: IUpdateInfo) { + return http.post('/user/updateInfo', data) +} + +/** + * 修改用户密码 + */ +export function updateUserPassword(data: IUpdatePassword) { + return http.post('/user/updatePassword', data) +} + +/** + * 获取微信登录凭证 + * @returns Promise 包含微信登录凭证(code) + */ +export function getWxCode() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'weixin', + success: res => resolve(res), + fail: err => reject(new Error(err)), + }) + }) +} + +/** + * 微信登录参数 + */ + +/** + * 微信登录 + * @param params 微信登录参数,包含code + * @returns Promise 包含登录结果 + */ +export function wxLogin(data: { code: string }) { + return http.post('/user/wxLogin', data) +} diff --git a/src/api/login.typings.ts b/src/api/login.typings.ts new file mode 100644 index 0000000..d0638cf --- /dev/null +++ b/src/api/login.typings.ts @@ -0,0 +1,57 @@ +/** + * 用户信息 + */ +export interface IUserInfoVo { + id: number + username: string + avatar: string + token: string +} + +/** + * 登录返回的信息 + */ +export interface IUserLogin { + id: string + username: string + token: string +} + +/** + * 获取验证码 + */ +export interface ICaptcha { + captchaEnabled: boolean + uuid: string + image: string +} +/** + * 上传成功的信息 + */ +export interface IUploadSuccessInfo { + fileId: number + originalName: string + fileName: string + storagePath: string + fileHash: string + fileType: string + fileBusinessType: string + fileSize: number +} +/** + * 更新用户信息 + */ +export interface IUpdateInfo { + id: number + name: string + sex: string +} +/** + * 更新用户信息 + */ +export interface IUpdatePassword { + id: number + oldPassword: string + newPassword: string + confirmPassword: string +} diff --git a/src/components/.gitkeep b/src/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/components/fg-navbar/fg-navbar.vue b/src/components/fg-navbar/fg-navbar.vue new file mode 100644 index 0000000..dbde618 --- /dev/null +++ b/src/components/fg-navbar/fg-navbar.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..ffa725c --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,31 @@ +/// +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + + const component: DefineComponent<{}, {}, any> + export default component +} + +interface ImportMetaEnv { + /** 网站标题,应用名称 */ + readonly VITE_APP_TITLE: string + /** 服务端口号 */ + readonly VITE_SERVER_PORT: string + /** 后台接口地址 */ + readonly VITE_SERVER_BASEURL: string + /** H5是否需要代理 */ + readonly VITE_APP_PROXY: 'true' | 'false' + /** H5是否需要代理,需要的话有个前缀 */ + readonly VITE_APP_PROXY_PREFIX: string // 一般是/api + /** 上传图片地址 */ + readonly VITE_UPLOAD_BASEURL: string + /** 是否清除console */ + readonly VITE_DELETE_CONSOLE: string + // 更多环境变量... +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/src/hooks/.gitkeep b/src/hooks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/hooks/usePageAuth.ts b/src/hooks/usePageAuth.ts new file mode 100644 index 0000000..fd006c8 --- /dev/null +++ b/src/hooks/usePageAuth.ts @@ -0,0 +1,50 @@ +import { onLoad } from '@dcloudio/uni-app' +import { useUserStore } from '@/store' +import { needLoginPages as _needLoginPages, getNeedLoginPages } from '@/utils' + +const loginRoute = import.meta.env.VITE_LOGIN_URL +const isDev = import.meta.env.DEV +function isLogined() { + const userStore = useUserStore() + return !!userStore.userInfo.username +} +// 检查当前页面是否需要登录 +export function usePageAuth() { + onLoad((options) => { + // 获取当前页面路径 + const pages = getCurrentPages() + const currentPage = pages[pages.length - 1] + const currentPath = `/${currentPage.route}` + + // 获取需要登录的页面列表 + let needLoginPages: string[] = [] + if (isDev) { + needLoginPages = getNeedLoginPages() + } + else { + needLoginPages = _needLoginPages + } + + // 检查当前页面是否需要登录 + const isNeedLogin = needLoginPages.includes(currentPath) + if (!isNeedLogin) { + return + } + + const hasLogin = isLogined() + if (hasLogin) { + return true + } + + // 构建重定向URL + const queryString = Object.entries(options || {}) + .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`) + .join('&') + + const currentFullPath = queryString ? `${currentPath}?${queryString}` : currentPath + const redirectRoute = `${loginRoute}?redirect=${encodeURIComponent(currentFullPath)}` + + // 重定向到登录页 + uni.redirectTo({ url: redirectRoute }) + }) +} diff --git a/src/hooks/useRequest.ts b/src/hooks/useRequest.ts new file mode 100644 index 0000000..80ff33d --- /dev/null +++ b/src/hooks/useRequest.ts @@ -0,0 +1,44 @@ +import type { UnwrapRef } from 'vue' + +interface IUseRequestOptions { + /** 是否立即执行 */ + immediate?: boolean + /** 初始化数据 */ + initialData?: T +} + +/** + * useRequest是一个定制化的请求钩子,用于处理异步请求和响应。 + * @param func 一个执行异步请求的函数,返回一个包含响应数据的Promise。 + * @param options 包含请求选项的对象 {immediate, initialData}。 + * @param options.immediate 是否立即执行请求,默认为false。 + * @param options.initialData 初始化数据,默认为undefined。 + * @returns 返回一个对象{loading, error, data, run},包含请求的加载状态、错误信息、响应数据和手动触发请求的函数。 + */ +export default function useRequest( + func: () => Promise>, + options: IUseRequestOptions = { immediate: false }, +) { + const loading = ref(false) + const error = ref(false) + const data = ref(options.initialData) + const run = async () => { + loading.value = true + return func() + .then((res) => { + data.value = res.data as UnwrapRef + error.value = false + return data.value + }) + .catch((err) => { + error.value = err + throw err + }) + .finally(() => { + loading.value = false + }) + } + + options.immediate && run() + return { loading, error, data, run } +} diff --git a/src/hooks/useUpload.ts b/src/hooks/useUpload.ts new file mode 100644 index 0000000..3080d5a --- /dev/null +++ b/src/hooks/useUpload.ts @@ -0,0 +1,160 @@ +import { ref } from 'vue' +import { getEnvBaseUploadUrl } from '@/utils' + +const VITE_UPLOAD_BASEURL = `${getEnvBaseUploadUrl()}` + +type TfileType = 'image' | 'file' +type TImage = 'png' | 'jpg' | 'jpeg' | 'webp' | '*' +type TFile = 'doc' | 'docx' | 'ppt' | 'zip' | 'xls' | 'xlsx' | 'txt' | TImage + +interface TOptions { + formData?: Record + maxSize?: number + accept?: T extends 'image' ? TImage[] : TFile[] + fileType?: T + success?: (params: any) => void + error?: (err: any) => void +} + +export default function useUpload(options: TOptions = {} as TOptions) { + const { + formData = {}, + maxSize = 5 * 1024 * 1024, + accept = ['*'], + fileType = 'image', + success, + error: onError, + } = options + + const loading = ref(false) + const error = ref(null) + const data = ref(null) + + const handleFileChoose = ({ tempFilePath, size }: { tempFilePath: string, size: number }) => { + if (size > maxSize) { + uni.showToast({ + title: `文件大小不能超过 ${maxSize / 1024 / 1024}MB`, + icon: 'none', + }) + return + } + + // const fileExtension = file?.tempFiles?.name?.split('.').pop()?.toLowerCase() + // const isTypeValid = accept.some((type) => type === '*' || type.toLowerCase() === fileExtension) + + // if (!isTypeValid) { + // uni.showToast({ + // title: `仅支持 ${accept.join(', ')} 格式的文件`, + // icon: 'none', + // }) + // return + // } + + loading.value = true + uploadFile({ + tempFilePath, + formData, + onSuccess: (res) => { + const { data: _data } = JSON.parse(res) + data.value = _data + // console.log('上传成功', res) + success?.(_data) + }, + onError: (err) => { + error.value = err + onError?.(err) + }, + onComplete: () => { + loading.value = false + }, + }) + } + + const run = () => { + // 微信小程序从基础库 2.21.0 开始, wx.chooseImage 停止维护,请使用 uni.chooseMedia 代替。 + // 微信小程序在2023年10月17日之后,使用本API需要配置隐私协议 + const chooseFileOptions = { + count: 1, + success: (res: any) => { + console.log('File selected successfully:', res) + // 小程序中res:{errMsg: "chooseImage:ok", tempFiles: [{fileType: "image", size: 48976, tempFilePath: "http://tmp/5iG1WpIxTaJf3ece38692a337dc06df7eb69ecb49c6b.jpeg"}]} + // h5中res:{errMsg: "chooseImage:ok", tempFilePaths: "blob:http://localhost:9000/f74ab6b8-a14d-4cb6-a10d-fcf4511a0de5", tempFiles: [File]} + // h5的File有以下字段:{name: "girl.jpeg", size: 48976, type: "image/jpeg"} + // App中res:{errMsg: "chooseImage:ok", tempFilePaths: "file:///Users/feige/xxx/gallery/1522437259-compressed-IMG_0006.jpg", tempFiles: [File]} + // App的File有以下字段:{path: "file:///Users/feige/xxx/gallery/1522437259-compressed-IMG_0006.jpg", size: 48976} + let tempFilePath = '' + let size = 0 + // #ifdef MP-WEIXIN + tempFilePath = res.tempFiles[0].tempFilePath + size = res.tempFiles[0].size + // #endif + // #ifndef MP-WEIXIN + tempFilePath = res.tempFilePaths[0] + size = res.tempFiles[0].size + // #endif + handleFileChoose({ tempFilePath, size }) + }, + fail: (err: any) => { + console.error('File selection failed:', err) + error.value = err + onError?.(err) + }, + } + + if (fileType === 'image') { + // #ifdef MP-WEIXIN + uni.chooseMedia({ + ...chooseFileOptions, + mediaType: ['image'], + }) + // #endif + + // #ifndef MP-WEIXIN + uni.chooseImage(chooseFileOptions) + // #endif + } + else { + uni.chooseFile({ + ...chooseFileOptions, + type: 'all', + }) + } + } + + return { loading, error, data, run } +} + +async function uploadFile({ + tempFilePath, + formData, + onSuccess, + onError, + onComplete, +}: { + tempFilePath: string + formData: Record + onSuccess: (data: any) => void + onError: (err: any) => void + onComplete: () => void +}) { + uni.uploadFile({ + url: VITE_UPLOAD_BASEURL, + filePath: tempFilePath, + name: 'file', + formData, + success: (uploadFileRes) => { + try { + const data = uploadFileRes.data + onSuccess(data) + } + catch (err) { + onError(err) + } + }, + fail: (err) => { + console.error('Upload failed:', err) + onError(err) + }, + complete: onComplete, + }) +} diff --git a/src/interceptors/index.ts b/src/interceptors/index.ts new file mode 100644 index 0000000..786c44f --- /dev/null +++ b/src/interceptors/index.ts @@ -0,0 +1,3 @@ +export { prototypeInterceptor } from './prototype' +export { requestInterceptor } from './request' +export { routeInterceptor } from './route' diff --git a/src/interceptors/prototype.ts b/src/interceptors/prototype.ts new file mode 100644 index 0000000..647e6bd --- /dev/null +++ b/src/interceptors/prototype.ts @@ -0,0 +1,14 @@ +export const prototypeInterceptor = { + install() { + // 解决低版本手机不识别 array.at() 导致运行报错的问题 + if (typeof Array.prototype.at !== 'function') { + Array.prototype.at = function (index: number) { + if (index < 0) + return this[this.length + index] + if (index >= this.length) + return undefined + return this[index] + } + } + }, +} diff --git a/src/interceptors/request.ts b/src/interceptors/request.ts new file mode 100644 index 0000000..ad77815 --- /dev/null +++ b/src/interceptors/request.ts @@ -0,0 +1,70 @@ +import qs from 'qs' +import { useUserStore } from '@/store' +import { getEnvBaseUrl } from '@/utils' +import { platform } from '@/utils/platform' + +export type CustomRequestOptions = UniApp.RequestOptions & { + query?: Record + /** 出错时是否隐藏错误提示 */ + hideErrorToast?: boolean +} & IUniUploadFileOptions // 添加uni.uploadFile参数类型 + +// 请求基准地址 +const baseUrl = getEnvBaseUrl() + +// 拦截器配置 +const httpInterceptor = { + // 拦截前触发 + invoke(options: CustomRequestOptions) { + // 接口请求支持通过 query 参数配置 queryString + if (options.query) { + const queryStr = qs.stringify(options.query) + if (options.url.includes('?')) { + options.url += `&${queryStr}` + } + else { + options.url += `?${queryStr}` + } + } + // 非 http 开头需拼接地址 + if (!options.url.startsWith('http')) { + // #ifdef H5 + // console.log(__VITE_APP_PROXY__) + if (JSON.parse(__VITE_APP_PROXY__)) { + // 自动拼接代理前缀 + options.url = import.meta.env.VITE_APP_PROXY_PREFIX + options.url + } + else { + options.url = baseUrl + options.url + } + // #endif + // 非H5正常拼接 + // #ifndef H5 + options.url = baseUrl + options.url + // #endif + // TIPS: 如果需要对接多个后端服务,也可以在这里处理,拼接成所需要的地址 + } + // 1. 请求超时 + options.timeout = 10000 // 10s + // 2. (可选)添加小程序端请求头标识 + options.header = { + platform, // 可选,与 uniapp 定义的平台一致,告诉后台来源 + ...options.header, + } + // 3. 添加 token 请求头标识 + const userStore = useUserStore() + const { token } = userStore.userInfo as unknown as IUserInfo + if (token) { + options.header.Authorization = `Bearer ${token}` + } + }, +} + +export const requestInterceptor = { + install() { + // 拦截 request 请求 + uni.addInterceptor('request', httpInterceptor) + // 拦截 uploadFile 文件上传 + uni.addInterceptor('uploadFile', httpInterceptor) + }, +} diff --git a/src/interceptors/route.ts b/src/interceptors/route.ts new file mode 100644 index 0000000..70eff89 --- /dev/null +++ b/src/interceptors/route.ts @@ -0,0 +1,65 @@ +/** + * by 菲鸽 on 2024-03-06 + * 路由拦截,通常也是登录拦截 + * 可以设置路由白名单,或者黑名单,看业务需要选哪一个 + * 我这里应为大部分都可以随便进入,所以使用黑名单 + */ +import { useUserStore } from '@/store' +import { needLoginPages as _needLoginPages, getLastPage, getNeedLoginPages } from '@/utils' + +// TODO Check +const loginRoute = import.meta.env.VITE_LOGIN_URL + +function isLogined() { + const userStore = useUserStore() + return !!userStore.userInfo.username +} + +const isDev = import.meta.env.DEV + +// 黑名单登录拦截器 - (适用于大部分页面不需要登录,少部分页面需要登录) +const navigateToInterceptor = { + // 注意,这里的url是 '/' 开头的,如 '/pages/index/index',跟 'pages.json' 里面的 path 不同 + // 增加对相对路径的处理,BY 网友 @ideal + invoke({ url }: { url: string }) { + // console.log(url) // /pages/route-interceptor/index?name=feige&age=30 + let path = url.split('?')[0] + + // 处理相对路径 + if (!path.startsWith('/')) { + const currentPath = getLastPage().route + const normalizedCurrentPath = currentPath.startsWith('/') ? currentPath : `/${currentPath}` + const baseDir = normalizedCurrentPath.substring(0, normalizedCurrentPath.lastIndexOf('/')) + path = `${baseDir}/${path}` + } + + let needLoginPages: string[] = [] + // 为了防止开发时出现BUG,这里每次都获取一下。生产环境可以移到函数外,性能更好 + if (isDev) { + needLoginPages = getNeedLoginPages() + } + else { + needLoginPages = _needLoginPages + } + const isNeedLogin = needLoginPages.includes(path) + if (!isNeedLogin) { + return true + } + const hasLogin = isLogined() + if (hasLogin) { + return true + } + const redirectRoute = `${loginRoute}?redirect=${encodeURIComponent(url)}` + uni.navigateTo({ url: redirectRoute }) + return false + }, +} + +export const routeInterceptor = { + install() { + uni.addInterceptor('navigateTo', navigateToInterceptor) + uni.addInterceptor('reLaunch', navigateToInterceptor) + uni.addInterceptor('redirectTo', navigateToInterceptor) + uni.addInterceptor('switchTab', navigateToInterceptor) + }, +} diff --git a/src/layouts/default.vue b/src/layouts/default.vue new file mode 100644 index 0000000..360c6b2 --- /dev/null +++ b/src/layouts/default.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layouts/demo.vue b/src/layouts/demo.vue new file mode 100644 index 0000000..360c6b2 --- /dev/null +++ b/src/layouts/demo.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layouts/fg-tabbar/fg-tabbar.vue b/src/layouts/fg-tabbar/fg-tabbar.vue new file mode 100644 index 0000000..2dbecd8 --- /dev/null +++ b/src/layouts/fg-tabbar/fg-tabbar.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/layouts/fg-tabbar/tabbar.md b/src/layouts/fg-tabbar/tabbar.md new file mode 100644 index 0000000..f350aeb --- /dev/null +++ b/src/layouts/fg-tabbar/tabbar.md @@ -0,0 +1,16 @@ +# tabbar 说明 + +tabbar 分为4种情况: + +- 完全原生tabbar,使用 switchTab 切换 tabbar,tabbar页面有缓存。 + - 优势:原生自带的tabbar,最先渲染,有缓存。 + - 劣势:只能使用2组图片来切换选中和非选中状态,修改颜色只能重新换图片(或者用iconfont)。 +- 半自定义tabbar,使用 switchTab 切换 tabbar,tabbar页面有缓存。使用了第三方UI库的 tabbar 组件,并隐藏了原生 tabbar 的显示。 + - 优势:可以随意配置自己想要的 svg icon,切换字体颜色方便。有缓存。可以实现各种花里胡哨的动效等。 + - 劣势:首次点击tababr会闪烁。 +- 全自定义tabbar,使用 navigateTo 切换tabbar,tabbar页面无缓存。使用了第三方UI库的 tabbar 组件。 + - 优势:可以随意配置自己想要的 svg icon,切换字体颜色方便。可以实现各种花里胡哨的动效等。 + - 劣势:首次点击tababr会闪烁,无缓存。 +- 无tabbar,只有一个页面入口,底部无tabbar显示;常用语临时活动页。 + +> 注意:花里胡哨的效果需要自己实现,本模版不提供。 diff --git a/src/layouts/fg-tabbar/tabbar.ts b/src/layouts/fg-tabbar/tabbar.ts new file mode 100644 index 0000000..03be03f --- /dev/null +++ b/src/layouts/fg-tabbar/tabbar.ts @@ -0,0 +1,11 @@ +/** + * tabbar 状态,增加 storageSync 保证刷新浏览器时在正确的 tabbar 页面 + * 使用reactive简单状态,而不是 pinia 全局状态 + */ +export const tabbarStore = reactive({ + curIdx: uni.getStorageSync('app-tabbar-index') || 0, + setCurIdx(idx: number) { + this.curIdx = idx + uni.setStorageSync('app-tabbar-index', idx) + }, +}) diff --git a/src/layouts/fg-tabbar/tabbarList.ts b/src/layouts/fg-tabbar/tabbarList.ts new file mode 100644 index 0000000..1506b47 --- /dev/null +++ b/src/layouts/fg-tabbar/tabbarList.ts @@ -0,0 +1,65 @@ +/** + * tabbar 选择的策略,更详细的介绍见 tabbar.md 文件 + * 0: 'NATIVE_TABBAR' + * 2: 'FULL_CUSTOM_TABBAR' + * 1: 'HALF_CUSTOM_TABBAR' + * 3: 'NO_TABBAR' + * + * 温馨提示:本文件的任何代码更改了之后,都需要重新运行,否则 pages.json 不会更新导致错误 + */ + +// TODO:通过这里切换使用tabbar的策略 +export const selectedTabbarStrategy = 0 + +// 0 和 1 时,需要tabbar缓存 +export const cacheTabbarEnable = selectedTabbarStrategy < 2 + +// selectedTabbarStrategy==0 时,需要填 iconPath 和 selectedIconPath +// selectedTabbarStrategy==1 or 2 时,需要填 icon 和 iconType +// selectedTabbarStrategy==3 时,tabbarList 不生效 +export const tabbarList = [ + { + iconPath: 'static/tabbar/home.png', + selectedIconPath: 'static/tabbar/homeHL.png', + pagePath: 'pages/index/index', + text: '首页', + icon: 'home', + iconType: 'uiLib', + }, + { + iconPath: 'static/tabbar/example.png', + selectedIconPath: 'static/tabbar/exampleHL.png', + pagePath: 'pages/about/about', + text: '关于', + icon: 'i-carbon-code', + // 注意 unocss 的图标需要在 页面上引入一下,或者配置到 unocss.config.ts 的 safelist 中 + iconType: 'unocss', + }, + // { + // pagePath: 'pages/my/index', + // text: '我的', + // icon: '/static/logo.svg', + // iconType: 'local', + // }, + // { + // pagePath: 'pages/mine/index', + // text: '我的', + // icon: 'iconfont icon-my', + // iconType: 'iconfont', + // }, +] + +const _tabbar = { + color: '#999999', + selectedColor: '#018d71', + backgroundColor: '#F8F8F8', + borderStyle: 'black', + height: '50px', + fontSize: '10px', + iconWidth: '24px', + spacing: '3px', + list: tabbarList, +} + +// 0和1 需要显示底部的tabbar的各种配置,以利用缓存 +export const tabBar = cacheTabbarEnable ? _tabbar : undefined diff --git a/src/layouts/tabbar.vue b/src/layouts/tabbar.vue new file mode 100644 index 0000000..0c1bb1c --- /dev/null +++ b/src/layouts/tabbar.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..b86a5fd --- /dev/null +++ b/src/main.ts @@ -0,0 +1,21 @@ +import { VueQueryPlugin } from '@tanstack/vue-query' +import { createSSRApp } from 'vue' +import App from './App.vue' +import { prototypeInterceptor, requestInterceptor, routeInterceptor } from './interceptors' + +import store from './store' +import '@/style/index.scss' +import 'virtual:uno.css' + +export function createApp() { + const app = createSSRApp(App) + app.use(store) + app.use(routeInterceptor) + app.use(requestInterceptor) + app.use(prototypeInterceptor) + app.use(VueQueryPlugin) + + return { + app, + } +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..791ddeb --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,113 @@ +{ + "name": "unibest", + "appid": "__UNI__D1E5001", + "description": "", + "versionName": "1.0.0", + "versionCode": "100", + "transformPx": false, + "app-plus": { + "usingComponents": true, + "nvueStyleCompiler": "uni-app", + "compilerVersion": 3, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + "modules": {}, + "distribute": { + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "minSdkVersion": 30, + "targetSdkVersion": 30, + "abiFilters": [ + "armeabi-v7a", + "arm64-v8a" + ] + }, + "ios": {}, + "sdkConfigs": {}, + "icons": { + "android": { + "hdpi": "static/app/icons/72x72.png", + "xhdpi": "static/app/icons/96x96.png", + "xxhdpi": "static/app/icons/144x144.png", + "xxxhdpi": "static/app/icons/192x192.png" + }, + "ios": { + "appstore": "static/app/icons/1024x1024.png", + "ipad": { + "app": "static/app/icons/76x76.png", + "app@2x": "static/app/icons/152x152.png", + "notification": "static/app/icons/20x20.png", + "notification@2x": "static/app/icons/40x40.png", + "proapp@2x": "static/app/icons/167x167.png", + "settings": "static/app/icons/29x29.png", + "settings@2x": "static/app/icons/58x58.png", + "spotlight": "static/app/icons/40x40.png", + "spotlight@2x": "static/app/icons/80x80.png" + }, + "iphone": { + "app@2x": "static/app/icons/120x120.png", + "app@3x": "static/app/icons/180x180.png", + "notification@2x": "static/app/icons/40x40.png", + "notification@3x": "static/app/icons/60x60.png", + "settings@2x": "static/app/icons/58x58.png", + "settings@3x": "static/app/icons/87x87.png", + "spotlight@2x": "static/app/icons/80x80.png", + "spotlight@3x": "static/app/icons/120x120.png" + } + } + } + }, + "compatible": { + "ignoreVersion": true + } + }, + "quickapp": {}, + "mp-weixin": { + "appid": "wxa2abb91f64032a2b", + "setting": { + "urlCheck": false, + "es6": true, + "minified": true + }, + "usingComponents": true + }, + "mp-alipay": { + "usingComponents": true, + "styleIsolation": "shared" + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "3", + "h5": { + "router": { + "base": "/" + } + } +} \ No newline at end of file diff --git a/src/pages-sub/demo/index.vue b/src/pages-sub/demo/index.vue new file mode 100644 index 0000000..bee8a77 --- /dev/null +++ b/src/pages-sub/demo/index.vue @@ -0,0 +1,27 @@ + +{ + style: { + navigationStyle: 'default', + navigationBarTitleText: '分包页面 标题', + }, +} + + + + + + + diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..a385426 --- /dev/null +++ b/src/pages.json @@ -0,0 +1,65 @@ +{ + "globalStyle": { + "navigationStyle": "default", + "navigationBarTitleText": "unibest", + "navigationBarBackgroundColor": "#f8f8f8", + "navigationBarTextStyle": "black", + "backgroundColor": "#FFFFFF" + }, + "easycom": { + "autoscan": true, + "custom": { + "^fg-(.*)": "@/components/fg-$1/fg-$1.vue", + "^wd-(.*)": "wot-design-uni/components/wd-$1/wd-$1.vue", + "^(?!z-paging-refresh|z-paging-load-more)z-paging(.*)": "z-paging/components/z-paging$1/z-paging$1.vue" + } + }, + "tabBar": { + "color": "#999999", + "selectedColor": "#018d71", + "backgroundColor": "#F8F8F8", + "borderStyle": "black", + "height": "50px", + "fontSize": "10px", + "iconWidth": "24px", + "spacing": "3px", + "list": [ + { + "iconPath": "static/tabbar/home.png", + "selectedIconPath": "static/tabbar/homeHL.png", + "pagePath": "pages/index/index", + "text": "首页", + "icon": "home", + "iconType": "uiLib" + }, + { + "iconPath": "static/tabbar/example.png", + "selectedIconPath": "static/tabbar/exampleHL.png", + "pagePath": "pages/about/about", + "text": "关于", + "icon": "i-carbon-code", + "iconType": "unocss" + } + ] + }, + "pages": [ + { + "path": "pages/index/index", + "type": "home", + "layout": "tabbar", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "首页" + } + }, + { + "path": "pages/about/about", + "type": "page", + "layout": "tabbar", + "style": { + "navigationBarTitleText": "关于" + } + } + ], + "subPackages": [] +} \ No newline at end of file diff --git a/src/pages/about/about.vue b/src/pages/about/about.vue new file mode 100644 index 0000000..71ca5fe --- /dev/null +++ b/src/pages/about/about.vue @@ -0,0 +1,46 @@ + +{ + layout: 'tabbar', + style: { + navigationBarTitleText: '关于', + }, +} + + + + + + + diff --git a/src/pages/about/components/request.vue b/src/pages/about/components/request.vue new file mode 100644 index 0000000..60e21f4 --- /dev/null +++ b/src/pages/about/components/request.vue @@ -0,0 +1,84 @@ + +{ + layout: 'demo', + style: { + navigationBarTitleText: '请求', + }, +} + + + + + diff --git a/src/pages/about/components/upload.vue b/src/pages/about/components/upload.vue new file mode 100644 index 0000000..d23625f --- /dev/null +++ b/src/pages/about/components/upload.vue @@ -0,0 +1,38 @@ + +{ + layout: 'default', + style: { + navigationBarTitleText: '上传-状态一体化', + }, +} + + + + + + + diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue new file mode 100644 index 0000000..ec3bcbf --- /dev/null +++ b/src/pages/index/index.vue @@ -0,0 +1,82 @@ + + +{ + layout: 'tabbar', + style: { + // 'custom' 表示开启自定义导航栏,默认 'default' + navigationStyle: 'custom', + navigationBarTitleText: '首页', + }, +} + + + + + diff --git a/src/service/app/caipu.json b/src/service/app/caipu.json new file mode 100644 index 0000000..3527558 --- /dev/null +++ b/src/service/app/caipu.json @@ -0,0 +1,1158 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "菜谱项目", + "description": "", + "version": "1.0.0" + }, + "tags": [ + { + "name": "宴席" + } + ], + "paths": { + "/api/banquet/chef/list": { + "get": { + "summary": "厨师列表", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "limit", + "in": "query", + "description": "", + "required": false, + "example": 15, + "schema": { + "type": "integer" + } + }, + { + "name": "keyword", + "in": "query", + "description": "", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-333667936-run" + } + }, + "/api/banquet/chef/detail": { + "get": { + "summary": "厨师详情", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "id", + "in": "query", + "description": "", + "required": false, + "example": "1", + "schema": { + "type": "string" + } + }, + { + "name": "month", + "in": "query", + "description": "年月", + "required": false, + "example": "2025-08", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-333728717-run" + } + }, + "/api/banquet/dishes/category": { + "get": { + "summary": "菜品分类", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "server_user_id", + "in": "query", + "description": "厨师/酒店id", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "index", + "in": "query", + "description": "第几餐", + "required": false, + "example": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "", + "required": false, + "example": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3ZWJtYW4udGlueXdhbi5jbiIsImF1ZCI6IndlYm1hbi50aW55d2FuLmNuIiwiaWF0IjoxNzU0NzI5NzAxLCJuYmYiOjE3NTQ3Mjk3MDEsImV4cCI6MTc1NDk4ODkwMSwiZXh0ZW5kIjp7ImlkIjoxfX0.7Y_HsJpEraSMFIp-b-tu1WzOhCOSqHLiBdMxmtaODfk", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-333741485-run" + } + }, + "/api/banquet/dishes/list": { + "get": { + "summary": "菜品列表", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "limit", + "in": "query", + "description": "", + "required": false, + "example": 15, + "schema": { + "type": "integer" + } + }, + { + "name": "category_id", + "in": "query", + "description": "分类id", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "keyword", + "in": "query", + "description": "搜索词", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "index", + "in": "query", + "description": "第几餐", + "required": false, + "example": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "server_user_id", + "in": "query", + "description": "厨师/酒店id", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "type", + "in": "query", + "description": "菜品类型:1单品,2套餐", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "", + "required": false, + "example": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3ZWJtYW4udGlueXdhbi5jbiIsImF1ZCI6IndlYm1hbi50aW55d2FuLmNuIiwiaWF0IjoxNzU0NzI5NzAxLCJuYmYiOjE3NTQ3Mjk3MDEsImV4cCI6MTc1NDk4ODkwMSwiZXh0ZW5kIjp7ImlkIjoxfX0.7Y_HsJpEraSMFIp-b-tu1WzOhCOSqHLiBdMxmtaODfk", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-333742056-run" + } + }, + "/api/banquet/cart/add": { + "post": { + "summary": "添加到购物车", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "index": { + "type": "integer", + "x-apifox-mock": "1" + }, + "dishes_id": { + "type": "integer", + "x-apifox-mock": "3" + }, + "number": { + "type": "integer", + "description": "数量" + }, + "server_user_id": { + "type": "integer", + "description": "厨师/酒店id" + }, + "buy_now": { + "type": "integer", + "x-apifox-mock": "0", + "description": "是否立即购买:1是0否" + } + }, + "x-apifox-orders": [ + "index", + "dishes_id", + "number", + "server_user_id", + "buy_now" + ], + "required": [ + "index", + "dishes_id", + "number", + "server_user_id", + "buy_now" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334023073-run" + } + }, + "/api/banquet/cart/delete": { + "post": { + "summary": "删除购物车记录", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "x-apifox-mock": "1" + } + }, + "x-apifox-orders": [ + "id" + ], + "required": [ + "id" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334077833-run" + } + }, + "/api/banquet/order/check": { + "post": { + "summary": "校验订单信息", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cart_ids": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "购物车id" + } + }, + "x-apifox-orders": [ + "cart_ids" + ], + "required": [ + "cart_ids" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334089060-run" + } + }, + "/api/banquet/cart/edit": { + "post": { + "summary": "编辑购物车信息", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "server_user_id": { + "type": "integer", + "description": "厨师/酒店id", + "x-apifox-mock": "3" + }, + "index": { + "type": "integer", + "description": "第几餐", + "x-apifox-mock": "0" + }, + "date": { + "type": "string", + "description": "宴席日期", + "x-apifox-mock": "2025-08-05" + }, + "time": { + "type": "string", + "description": "宴席时段", + "x-apifox-mock": "早上" + }, + "number": { + "type": "integer", + "description": "桌数", + "x-apifox-mock": "1" + } + }, + "x-apifox-orders": [ + "server_user_id", + "index", + "date", + "time", + "number" + ], + "required": [ + "index", + "server_user_id", + "date", + "time", + "number" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334124014-run" + } + }, + "/api/banquet/order/createOrder": { + "post": { + "summary": "提交订单信息", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cart_ids": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "购物车id(酒店必填)" + }, + "customer_name": { + "type": "string", + "description": "客户姓名" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "address": { + "type": "string", + "description": "地址" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "banquet_type": { + "type": "integer", + "x-apifox-mock": "1", + "description": "宴席类型" + }, + "reservation_type": { + "type": "integer", + "x-apifox-mock": "1", + "description": "预约类型:1后付费,2订金" + }, + "server_user_id": { + "type": "integer", + "description": "厨师/酒店id" + }, + "table_number": { + "type": "integer", + "description": "桌数(酒店必填)" + }, + "banquet_date": { + "type": "string", + "description": "日期(酒店必填)" + } + }, + "x-apifox-orders": [ + "cart_ids", + "customer_name", + "phone", + "address", + "remark", + "banquet_type", + "reservation_type", + "server_user_id", + "table_number", + "banquet_date" + ], + "required": [ + "cart_ids", + "customer_name", + "phone", + "address", + "remark", + "banquet_type", + "reservation_type", + "server_user_id", + "table_number", + "banquet_date" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334145352-run" + } + }, + "/api/banquet/dishes/banquetType": { + "get": { + "summary": "宴席类型列表", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334185705-run" + } + }, + "/api/banquet/order/detail": { + "get": { + "summary": "订单详情", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "order_id", + "in": "query", + "description": "", + "required": false, + "example": "订单id", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334335775-run" + } + }, + "/api/banquet/order/cancel": { + "post": { + "summary": "取消订单", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "order_id": { + "type": "integer", + "description": "订单id", + "x-apifox-mock": "5" + } + }, + "x-apifox-orders": [ + "order_id" + ], + "required": [ + "order_id" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334369097-run" + } + }, + "/api/banquet/order/pay": { + "post": { + "summary": "订单发起支付", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "order_id": { + "type": "integer", + "description": "订单id", + "x-apifox-mock": "5" + } + }, + "x-apifox-orders": [ + "order_id" + ], + "required": [ + "order_id" + ], + "x-apifox-ignore-properties": [] + }, + "examples": {} + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-334619375-run" + } + }, + "/api/banquet/dishes/detail": { + "get": { + "summary": "菜品详情", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "id", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "Authorization", + "in": "header", + "description": "", + "required": false, + "example": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3ZWJtYW4udGlueXdhbi5jbiIsImF1ZCI6IndlYm1hbi50aW55d2FuLmNuIiwiaWF0IjoxNzU0NzI5NzAxLCJuYmYiOjE3NTQ3Mjk3MDEsImV4cCI6MTc1NDk4ODkwMSwiZXh0ZW5kIjp7ImlkIjoxfX0.7Y_HsJpEraSMFIp-b-tu1WzOhCOSqHLiBdMxmtaODfk", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-335503840-run" + } + }, + "/api/banquet/hotel/list": { + "get": { + "summary": "酒店列表", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "limit", + "in": "query", + "description": "", + "required": false, + "example": 15, + "schema": { + "type": "integer" + } + }, + { + "name": "keyword", + "in": "query", + "description": "", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-335865679-run" + } + }, + "/api/banquet/hotel/detail": { + "get": { + "summary": "酒店详情", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "id", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-335865859-run" + } + }, + "/api/banquet/hotel/schedule": { + "get": { + "summary": "酒店日程", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "id", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "month", + "in": "query", + "description": "", + "required": false, + "example": "2025-08", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-335866010-run" + } + }, + "/api/banquet/order/list": { + "get": { + "summary": "订单列表", + "deprecated": false, + "description": "", + "tags": [ + "宴席" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "", + "required": false, + "example": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "limit", + "in": "query", + "description": "", + "required": false, + "example": 15, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "x-apifox-ignore-properties": [], + "x-apifox-orders": [] + } + } + }, + "headers": {}, + "x-apifox-name": "成功" + } + }, + "security": [], + "x-apifox-folder": "宴席", + "x-apifox-status": "developing", + "x-run-in-apifox": "https://app.apifox.com/web/project/6830277/apis/api-336320486-run" + } + } + }, + "components": { + "schemas": {}, + "securitySchemes": {} + }, + "servers": [ + { + "url": "http://ceshi-worker-task.lihaink.cn", + "description": "测试环境" + } + ], + "security": [] +} \ No newline at end of file diff --git a/src/service/app/caipu/index.ts b/src/service/app/caipu/index.ts new file mode 100644 index 0000000..d5633df --- /dev/null +++ b/src/service/app/caipu/index.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +// @ts-ignore +export * from './types'; + +export * from './yanxi'; +export * from './yanxi.vuequery'; diff --git a/src/service/app/caipu/types.ts b/src/service/app/caipu/types.ts new file mode 100644 index 0000000..dac0202 --- /dev/null +++ b/src/service/app/caipu/types.ts @@ -0,0 +1,64 @@ +/* eslint-disable */ +// @ts-ignore + +export type getChefDetailParams = { + id?: string; + /** 年月 */ + month?: string; +}; + +export type getChefListParams = { + page?: number; + limit?: number; + keyword?: string; +}; + +export type getDishesCategoryParams = { + /** 厨师/酒店id */ + server_user_id?: number; + /** 第几餐 */ + index?: number; +}; + +export type getDishesDetailParams = { + id?: number; +}; + +export type getDishesListParams = { + page?: number; + limit?: number; + /** 分类id */ + category_id?: number; + /** 搜索词 */ + keyword?: string; + /** 第几餐 */ + index?: number; + /** 厨师/酒店id */ + server_user_id?: number; + /** 菜品类型:1单品,2套餐 */ + type?: number; +}; + +export type getHotelDetailParams = { + id?: number; +}; + +export type getHotelListParams = { + page?: number; + limit?: number; + keyword?: string; +}; + +export type getHotelScheduleParams = { + id?: number; + month?: string; +}; + +export type getOrderDetailParams = { + order_id?: number; +}; + +export type getOrderListParams = { + page?: number; + limit?: number; +}; diff --git a/src/service/app/caipu/yanxi.ts b/src/service/app/caipu/yanxi.ts new file mode 100644 index 0000000..e091b2e --- /dev/null +++ b/src/service/app/caipu/yanxi.ts @@ -0,0 +1,376 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as API from './types'; + +/** 添加到购物车 POST /api/banquet/cart/add https://app.apifox.com/web/project/6830277/apis/api-334023073-run */ +export async function postCartAdd({ + body, + options, +}: { + body: { + index: number; + dishes_id: number; + /** 数量 */ + number: number; + /** 厨师/酒店id */ + server_user_id: number; + /** 是否立即购买:1是0否 */ + buy_now: number; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/cart/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除购物车记录 POST /api/banquet/cart/delete https://app.apifox.com/web/project/6830277/apis/api-334077833-run */ +export async function postCartOpenApiDelete({ + body, + options, +}: { + body: { + id: string; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/cart/delete', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 编辑购物车信息 POST /api/banquet/cart/edit https://app.apifox.com/web/project/6830277/apis/api-334124014-run */ +export async function postCartEdit({ + body, + options, +}: { + body: { + /** 厨师/酒店id */ + server_user_id: number; + /** 第几餐 */ + index: number; + /** 宴席日期 */ + date: string; + /** 宴席时段 */ + time: string; + /** 桌数 */ + number: number; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/cart/edit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 厨师详情 GET /api/banquet/chef/detail https://app.apifox.com/web/project/6830277/apis/api-333728717-run */ +export async function getChefDetail({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getChefDetailParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/chef/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 厨师列表 GET /api/banquet/chef/list https://app.apifox.com/web/project/6830277/apis/api-333667936-run */ +export async function getChefList({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getChefListParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/chef/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 宴席类型列表 GET /api/banquet/dishes/banquetType https://app.apifox.com/web/project/6830277/apis/api-334185705-run */ +export async function getDishesBanquetType({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/dishes/banquetType', { + method: 'GET', + ...(options || {}), + }); +} + +/** 菜品分类 GET /api/banquet/dishes/category https://app.apifox.com/web/project/6830277/apis/api-333741485-run */ +export async function getDishesCategory({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesCategoryParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/dishes/category', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 菜品详情 GET /api/banquet/dishes/detail https://app.apifox.com/web/project/6830277/apis/api-335503840-run */ +export async function getDishesDetail({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesDetailParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/dishes/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 菜品列表 GET /api/banquet/dishes/list https://app.apifox.com/web/project/6830277/apis/api-333742056-run */ +export async function getDishesList({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesListParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/dishes/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 酒店详情 GET /api/banquet/hotel/detail https://app.apifox.com/web/project/6830277/apis/api-335865859-run */ +export async function getHotelDetail({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelDetailParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/hotel/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 酒店列表 GET /api/banquet/hotel/list https://app.apifox.com/web/project/6830277/apis/api-335865679-run */ +export async function getHotelList({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelListParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/hotel/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 酒店日程 GET /api/banquet/hotel/schedule https://app.apifox.com/web/project/6830277/apis/api-335866010-run */ +export async function getHotelSchedule({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelScheduleParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/hotel/schedule', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 取消订单 POST /api/banquet/order/cancel https://app.apifox.com/web/project/6830277/apis/api-334369097-run */ +export async function postOrderCancel({ + body, + options, +}: { + body: { + /** 订单id */ + order_id: number; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/cancel', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 校验订单信息 POST /api/banquet/order/check https://app.apifox.com/web/project/6830277/apis/api-334089060-run */ +export async function postOrderCheck({ + body, + options, +}: { + body: { + /** 购物车id */ + cart_ids: number[]; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/check', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 提交订单信息 POST /api/banquet/order/createOrder https://app.apifox.com/web/project/6830277/apis/api-334145352-run */ +export async function postOrderCreateOrder({ + body, + options, +}: { + body: { + /** 购物车id(酒店必填) */ + cart_ids: number[]; + /** 客户姓名 */ + customer_name: string; + /** 手机号 */ + phone: string; + /** 地址 */ + address: string; + /** 备注 */ + remark: string; + /** 宴席类型 */ + banquet_type: number; + /** 预约类型:1后付费,2订金 */ + reservation_type: number; + /** 厨师/酒店id */ + server_user_id: number; + /** 桌数(酒店必填) */ + table_number: number; + /** 日期(酒店必填) */ + banquet_date: string; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/createOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 订单详情 GET /api/banquet/order/detail https://app.apifox.com/web/project/6830277/apis/api-334335775-run */ +export async function getOrderDetail({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderDetailParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 订单列表 GET /api/banquet/order/list https://app.apifox.com/web/project/6830277/apis/api-336320486-run */ +export async function getOrderList({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderListParams; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 订单发起支付 POST /api/banquet/order/pay https://app.apifox.com/web/project/6830277/apis/api-334619375-run */ +export async function postOrderPay({ + body, + options, +}: { + body: { + /** 订单id */ + order_id: number; + }; + options?: CustomRequestOptions; +}) { + return request>('/api/banquet/order/pay', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/app/caipu/yanxi.vuequery.ts b/src/service/app/caipu/yanxi.vuequery.ts new file mode 100644 index 0000000..8caf30c --- /dev/null +++ b/src/service/app/caipu/yanxi.vuequery.ts @@ -0,0 +1,301 @@ +/* eslint-disable */ +// @ts-ignore +import { queryOptions, useMutation } from '@tanstack/vue-query'; +import type { DefaultError } from '@tanstack/vue-query'; +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as apis from './yanxi'; +import * as API from './types'; + +/** 添加到购物车 POST /api/banquet/cart/add https://app.apifox.com/web/project/6830277/apis/api-334023073-run */ +export function usePostCartAddMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postCartAdd, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 删除购物车记录 POST /api/banquet/cart/delete https://app.apifox.com/web/project/6830277/apis/api-334077833-run */ +export function usePostCartOpenApiDeleteMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postCartOpenApiDelete, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 编辑购物车信息 POST /api/banquet/cart/edit https://app.apifox.com/web/project/6830277/apis/api-334124014-run */ +export function usePostCartEditMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postCartEdit, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 厨师详情 GET /api/banquet/chef/detail https://app.apifox.com/web/project/6830277/apis/api-333728717-run */ +export function getChefDetailQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getChefDetailParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getChefDetail(queryKey[1] as typeof options); + }, + queryKey: ['getChefDetail', options], + }); +} + +/** 厨师列表 GET /api/banquet/chef/list https://app.apifox.com/web/project/6830277/apis/api-333667936-run */ +export function getChefListQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getChefListParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getChefList(queryKey[1] as typeof options); + }, + queryKey: ['getChefList', options], + }); +} + +/** 宴席类型列表 GET /api/banquet/dishes/banquetType https://app.apifox.com/web/project/6830277/apis/api-334185705-run */ +export function getDishesBanquetTypeQueryOptions(options: { + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getDishesBanquetType(queryKey[1] as typeof options); + }, + queryKey: ['getDishesBanquetType', options], + }); +} + +/** 菜品分类 GET /api/banquet/dishes/category https://app.apifox.com/web/project/6830277/apis/api-333741485-run */ +export function getDishesCategoryQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesCategoryParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getDishesCategory(queryKey[1] as typeof options); + }, + queryKey: ['getDishesCategory', options], + }); +} + +/** 菜品详情 GET /api/banquet/dishes/detail https://app.apifox.com/web/project/6830277/apis/api-335503840-run */ +export function getDishesDetailQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesDetailParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getDishesDetail(queryKey[1] as typeof options); + }, + queryKey: ['getDishesDetail', options], + }); +} + +/** 菜品列表 GET /api/banquet/dishes/list https://app.apifox.com/web/project/6830277/apis/api-333742056-run */ +export function getDishesListQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getDishesListParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getDishesList(queryKey[1] as typeof options); + }, + queryKey: ['getDishesList', options], + }); +} + +/** 酒店详情 GET /api/banquet/hotel/detail https://app.apifox.com/web/project/6830277/apis/api-335865859-run */ +export function getHotelDetailQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelDetailParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getHotelDetail(queryKey[1] as typeof options); + }, + queryKey: ['getHotelDetail', options], + }); +} + +/** 酒店列表 GET /api/banquet/hotel/list https://app.apifox.com/web/project/6830277/apis/api-335865679-run */ +export function getHotelListQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelListParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getHotelList(queryKey[1] as typeof options); + }, + queryKey: ['getHotelList', options], + }); +} + +/** 酒店日程 GET /api/banquet/hotel/schedule https://app.apifox.com/web/project/6830277/apis/api-335866010-run */ +export function getHotelScheduleQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getHotelScheduleParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getHotelSchedule(queryKey[1] as typeof options); + }, + queryKey: ['getHotelSchedule', options], + }); +} + +/** 取消订单 POST /api/banquet/order/cancel https://app.apifox.com/web/project/6830277/apis/api-334369097-run */ +export function usePostOrderCancelMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postOrderCancel, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 校验订单信息 POST /api/banquet/order/check https://app.apifox.com/web/project/6830277/apis/api-334089060-run */ +export function usePostOrderCheckMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postOrderCheck, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 提交订单信息 POST /api/banquet/order/createOrder https://app.apifox.com/web/project/6830277/apis/api-334145352-run */ +export function usePostOrderCreateOrderMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postOrderCreateOrder, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** 订单详情 GET /api/banquet/order/detail https://app.apifox.com/web/project/6830277/apis/api-334335775-run */ +export function getOrderDetailQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderDetailParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getOrderDetail(queryKey[1] as typeof options); + }, + queryKey: ['getOrderDetail', options], + }); +} + +/** 订单列表 GET /api/banquet/order/list https://app.apifox.com/web/project/6830277/apis/api-336320486-run */ +export function getOrderListQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderListParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getOrderList(queryKey[1] as typeof options); + }, + queryKey: ['getOrderList', options], + }); +} + +/** 订单发起支付 POST /api/banquet/order/pay https://app.apifox.com/web/project/6830277/apis/api-334619375-run */ +export function usePostOrderPayMutation(options?: { + onSuccess?: (value?: Record) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.postOrderPay, + onSuccess(data: Record) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} diff --git a/src/service/app/displayEnumLabel.ts b/src/service/app/displayEnumLabel.ts new file mode 100644 index 0000000..4974815 --- /dev/null +++ b/src/service/app/displayEnumLabel.ts @@ -0,0 +1,13 @@ +/* eslint-disable */ +// @ts-ignore +import * as API from './types'; + +export function displayStatusEnum(field: API.IStatusEnum) { + return { available: 'available', pending: 'pending', sold: 'sold' }[field]; +} + +export function displayStatusEnum2(field: API.IStatusEnum2) { + return { placed: 'placed', approved: 'approved', delivered: 'delivered' }[ + field + ]; +} diff --git a/src/service/app/index.ts b/src/service/app/index.ts new file mode 100644 index 0000000..45b6e53 --- /dev/null +++ b/src/service/app/index.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +// @ts-ignore +export * from './types'; +export * from './displayEnumLabel'; + +export * from './pet'; +export * from './pet.vuequery'; +export * from './store'; +export * from './store.vuequery'; +export * from './user'; +export * from './user.vuequery'; diff --git a/src/service/app/pet.ts b/src/service/app/pet.ts new file mode 100644 index 0000000..70b95ef --- /dev/null +++ b/src/service/app/pet.ts @@ -0,0 +1,193 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as API from './types'; + +/** Update an existing pet PUT /pet */ +export async function updatePet({ + body, + options, +}: { + body: API.Pet; + options?: CustomRequestOptions; +}) { + return request('/pet', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Add a new pet to the store POST /pet */ +export async function addPet({ + body, + options, +}: { + body: API.Pet; + options?: CustomRequestOptions; +}) { + return request('/pet', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Find pet by ID Returns a single pet GET /pet/${param0} */ +export async function getPetById({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getPetByIdParams; + options?: CustomRequestOptions; +}) { + const { petId: param0, ...queryParams } = params; + + return request(`/pet/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Updates a pet in the store with form data POST /pet/${param0} */ +export async function updatePetWithForm({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.updatePetWithFormParams; + body: { + /** Updated name of the pet */ + name?: string; + /** Updated status of the pet */ + status?: string; + }; + options?: CustomRequestOptions; +}) { + const { petId: param0, ...queryParams } = params; + + return request(`/pet/${param0}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { ...queryParams }, + data: body, + ...(options || {}), + }); +} + +/** Deletes a pet DELETE /pet/${param0} */ +export async function deletePet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.deletePetParams; + options?: CustomRequestOptions; +}) { + const { petId: param0, ...queryParams } = params; + + return request(`/pet/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** uploads an image POST /pet/${param0}/uploadImage */ +export async function uploadFile({ + params, + body, + file, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.uploadFileParams; + body: { + /** Additional data to pass to server */ + additionalMetadata?: string; + }; + file?: File; + options?: CustomRequestOptions; +}) { + const { petId: param0, ...queryParams } = params; + const formData = new FormData(); + + if (file) { + formData.append('file', file); + } + + Object.keys(body).forEach((ele) => { + const item = (body as { [key: string]: any })[ele]; + + if (item !== undefined && item !== null) { + if (typeof item === 'object' && !(item instanceof File)) { + if (item instanceof Array) { + item.forEach((f) => formData.append(ele, f || '')); + } else { + formData.append(ele, JSON.stringify(item)); + } + } else { + formData.append(ele, item); + } + } + }); + + return request(`/pet/${param0}/uploadImage`, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + }, + params: { ...queryParams }, + data: formData, + ...(options || {}), + }); +} + +/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ +export async function findPetsByStatus({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.findPetsByStatusParams; + options?: CustomRequestOptions; +}) { + return request('/pet/findByStatus', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ +export async function findPetsByTags({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.findPetsByTagsParams; + options?: CustomRequestOptions; +}) { + return request('/pet/findByTags', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/src/service/app/pet.vuequery.ts b/src/service/app/pet.vuequery.ts new file mode 100644 index 0000000..c6c0b7d --- /dev/null +++ b/src/service/app/pet.vuequery.ts @@ -0,0 +1,151 @@ +/* eslint-disable */ +// @ts-ignore +import { queryOptions, useMutation } from '@tanstack/vue-query'; +import type { DefaultError } from '@tanstack/vue-query'; +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as apis from './pet'; +import * as API from './types'; + +/** Update an existing pet PUT /pet */ +export function useUpdatePetMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.updatePet, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Add a new pet to the store POST /pet */ +export function useAddPetMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.addPet, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Find pet by ID Returns a single pet GET /pet/${param0} */ +export function getPetByIdQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getPetByIdParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getPetById(queryKey[1] as typeof options); + }, + queryKey: ['getPetById', options], + }); +} + +/** Updates a pet in the store with form data POST /pet/${param0} */ +export function useUpdatePetWithFormMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.updatePetWithForm, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Deletes a pet DELETE /pet/${param0} */ +export function useDeletePetMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.deletePet, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** uploads an image POST /pet/${param0}/uploadImage */ +export function useUploadFileMutation(options?: { + onSuccess?: (value?: API.ApiResponse) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.uploadFile, + onSuccess(data: API.ApiResponse) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ +export function findPetsByStatusQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.findPetsByStatusParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.findPetsByStatus(queryKey[1] as typeof options); + }, + queryKey: ['findPetsByStatus', options], + }); +} + +/** Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ +export function findPetsByTagsQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.findPetsByTagsParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.findPetsByTags(queryKey[1] as typeof options); + }, + queryKey: ['findPetsByTags', options], + }); +} diff --git a/src/service/app/store.ts b/src/service/app/store.ts new file mode 100644 index 0000000..0d87f52 --- /dev/null +++ b/src/service/app/store.ts @@ -0,0 +1,72 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as API from './types'; + +/** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */ +export async function getInventory({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request>('/store/inventory', { + method: 'GET', + ...(options || {}), + }); +} + +/** Place an order for a pet POST /store/order */ +export async function placeOrder({ + body, + options, +}: { + body: API.Order; + options?: CustomRequestOptions; +}) { + return request('/store/order', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */ +export async function getOrderById({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderByIdParams; + options?: CustomRequestOptions; +}) { + const { orderId: param0, ...queryParams } = params; + + return request(`/store/order/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */ +export async function deleteOrder({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.deleteOrderParams; + options?: CustomRequestOptions; +}) { + const { orderId: param0, ...queryParams } = params; + + return request(`/store/order/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} diff --git a/src/service/app/store.vuequery.ts b/src/service/app/store.vuequery.ts new file mode 100644 index 0000000..dd6d660 --- /dev/null +++ b/src/service/app/store.vuequery.ts @@ -0,0 +1,75 @@ +/* eslint-disable */ +// @ts-ignore +import { queryOptions, useMutation } from '@tanstack/vue-query'; +import type { DefaultError } from '@tanstack/vue-query'; +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as apis from './store'; +import * as API from './types'; + +/** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */ +export function getInventoryQueryOptions(options: { + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getInventory(queryKey[1] as typeof options); + }, + queryKey: ['getInventory', options], + }); +} + +/** Place an order for a pet POST /store/order */ +export function usePlaceOrderMutation(options?: { + onSuccess?: (value?: API.Order) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.placeOrder, + onSuccess(data: API.Order) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */ +export function getOrderByIdQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getOrderByIdParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getOrderById(queryKey[1] as typeof options); + }, + queryKey: ['getOrderById', options], + }); +} + +/** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */ +export function useDeleteOrderMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.deleteOrder, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} diff --git a/src/service/app/types.ts b/src/service/app/types.ts new file mode 100644 index 0000000..4691b64 --- /dev/null +++ b/src/service/app/types.ts @@ -0,0 +1,128 @@ +/* eslint-disable */ +// @ts-ignore + +export type ApiResponse = { + code?: number; + type?: string; + message?: string; +}; + +export type Category = { + id?: number; + name?: string; +}; + +export type deleteOrderParams = { + /** ID of the order that needs to be deleted */ + orderId: number; +}; + +export type deletePetParams = { + /** Pet id to delete */ + petId: number; +}; + +export type deleteUserParams = { + /** The name that needs to be deleted */ + username: string; +}; + +export type findPetsByStatusParams = { + /** Status values that need to be considered for filter */ + status: ('available' | 'pending' | 'sold')[]; +}; + +export type findPetsByTagsParams = { + /** Tags to filter by */ + tags: string[]; +}; + +export type getOrderByIdParams = { + /** ID of pet that needs to be fetched */ + orderId: number; +}; + +export type getPetByIdParams = { + /** ID of pet to return */ + petId: number; +}; + +export type getUserByNameParams = { + /** The name that needs to be fetched. Use user1 for testing. */ + username: string; +}; + +export type loginUserParams = { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; +}; + +export type Order = { + id?: number; + petId?: number; + quantity?: number; + shipDate?: string; + /** Order Status */ + status?: 'placed' | 'approved' | 'delivered'; + complete?: boolean; +}; + +export type Pet = { + id?: number; + category?: Category; + name: string; + photoUrls: string[]; + tags?: Tag[]; + /** pet status in the store */ + status?: 'available' | 'pending' | 'sold'; +}; + +export enum StatusEnum { + available = 'available', + pending = 'pending', + sold = 'sold', +} + +export type IStatusEnum = keyof typeof StatusEnum; + +export enum StatusEnum2 { + placed = 'placed', + approved = 'approved', + delivered = 'delivered', +} + +export type IStatusEnum2 = keyof typeof StatusEnum2; + +export type Tag = { + id?: number; + name?: string; +}; + +export type updatePetWithFormParams = { + /** ID of pet that needs to be updated */ + petId: number; +}; + +export type updateUserParams = { + /** name that need to be updated */ + username: string; +}; + +export type uploadFileParams = { + /** ID of pet to update */ + petId: number; +}; + +export type User = { + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** User Status */ + userStatus?: number; +}; diff --git a/src/service/app/user.ts b/src/service/app/user.ts new file mode 100644 index 0000000..2474272 --- /dev/null +++ b/src/service/app/user.ts @@ -0,0 +1,150 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as API from './types'; + +/** Create user This can only be done by the logged in user. 返回值: successful operation POST /user */ +export async function createUser({ + body, + options, +}: { + body: API.User; + options?: CustomRequestOptions; +}) { + return request('/user', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Get user by user name GET /user/${param0} */ +export async function getUserByName({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getUserByNameParams; + options?: CustomRequestOptions; +}) { + const { username: param0, ...queryParams } = params; + + return request(`/user/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ +export async function updateUser({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.updateUserParams; + body: API.User; + options?: CustomRequestOptions; +}) { + const { username: param0, ...queryParams } = params; + + return request(`/user/${param0}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + params: { ...queryParams }, + data: body, + ...(options || {}), + }); +} + +/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ +export async function deleteUser({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.deleteUserParams; + options?: CustomRequestOptions; +}) { + const { username: param0, ...queryParams } = params; + + return request(`/user/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Creates list of users with given input array 返回值: successful operation POST /user/createWithArray */ +export async function createUsersWithArrayInput({ + body, + options, +}: { + body: API.User[]; + options?: CustomRequestOptions; +}) { + return request('/user/createWithArray', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Creates list of users with given input array 返回值: successful operation POST /user/createWithList */ +export async function createUsersWithListInput({ + body, + options, +}: { + body: API.User[]; + options?: CustomRequestOptions; +}) { + return request('/user/createWithList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Logs user into the system GET /user/login */ +export async function loginUser({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.loginUserParams; + options?: CustomRequestOptions; +}) { + return request('/user/login', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** Logs out current logged in user session 返回值: successful operation GET /user/logout */ +export async function logoutUser({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/user/logout', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/app/user.vuequery.ts b/src/service/app/user.vuequery.ts new file mode 100644 index 0000000..0e13636 --- /dev/null +++ b/src/service/app/user.vuequery.ts @@ -0,0 +1,149 @@ +/* eslint-disable */ +// @ts-ignore +import { queryOptions, useMutation } from '@tanstack/vue-query'; +import type { DefaultError } from '@tanstack/vue-query'; +import request from '@/utils/request'; +import { CustomRequestOptions } from '@/interceptors/request'; + +import * as apis from './user'; +import * as API from './types'; + +/** Create user This can only be done by the logged in user. 返回值: successful operation POST /user */ +export function useCreateUserMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.createUser, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Get user by user name GET /user/${param0} */ +export function getUserByNameQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.getUserByNameParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.getUserByName(queryKey[1] as typeof options); + }, + queryKey: ['getUserByName', options], + }); +} + +/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ +export function useUpdateUserMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.updateUser, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ +export function useDeleteUserMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.deleteUser, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Creates list of users with given input array 返回值: successful operation POST /user/createWithArray */ +export function useCreateUsersWithArrayInputMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.createUsersWithArrayInput, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Creates list of users with given input array 返回值: successful operation POST /user/createWithList */ +export function useCreateUsersWithListInputMutation(options?: { + onSuccess?: (value?: unknown) => void; + onError?: (error?: DefaultError) => void; +}) { + const { onSuccess, onError } = options || {}; + + const response = useMutation({ + mutationFn: apis.createUsersWithListInput, + onSuccess(data: unknown) { + onSuccess?.(data); + }, + onError(error) { + onError?.(error); + }, + }); + + return response; +} + +/** Logs user into the system GET /user/login */ +export function loginUserQueryOptions(options: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.loginUserParams; + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.loginUser(queryKey[1] as typeof options); + }, + queryKey: ['loginUser', options], + }); +} + +/** Logs out current logged in user session 返回值: successful operation GET /user/logout */ +export function logoutUserQueryOptions(options: { + options?: CustomRequestOptions; +}) { + return queryOptions({ + queryFn: async ({ queryKey }) => { + return apis.logoutUser(queryKey[1] as typeof options); + }, + queryKey: ['logoutUser', options], + }); +} diff --git a/src/service/index/foo.ts b/src/service/index/foo.ts new file mode 100644 index 0000000..88c1138 --- /dev/null +++ b/src/service/index/foo.ts @@ -0,0 +1,28 @@ +import { http } from '@/utils/http' + +export interface IFooItem { + id: string + name: string +} + +/** GET 请求 */ +export function getFooAPI(name: string) { + return http.get('/foo', { name }) +} +/** GET 请求;支持 传递 header 的范例 */ +export function getFooAPI2(name: string) { + return http.get('/foo', { name }, { 'Content-Type-100': '100' }) +} + +/** POST 请求 */ +export function postFooAPI(name: string) { + return http.post('/foo', { name }) +} +/** POST 请求;需要传递 query 参数的范例;微信小程序经常有同时需要query参数和body参数的场景 */ +export function postFooAPI2(name: string) { + return http.post('/foo', { name }) +} +/** POST 请求;支持 传递 header 的范例 */ +export function postFooAPI3(name: string) { + return http.post('/foo', { name }, { name }, { 'Content-Type-100': '100' }) +} diff --git a/src/static/app/icons/1024x1024.png b/src/static/app/icons/1024x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..08dbd5f4a09da5a8e4f54ebb1fccfbe622ee2008 GIT binary patch literal 59336 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%0DZqZ7Y5Pr+NCwpF_!JlOAVQ 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 z
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 AmjD0& literal 0 HcmV?d00001 diff --git a/src/static/app/icons/120x120.png b/src/static/app/icons/120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..718ca79880f6b2a530ee18316408da9555703d69 GIT binary patch literal 3231 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�(wEH@R7n(9F_rjwyQ$4qxa% z2`#gv2ob3JZ;k}Nk*8d#bj&>J*#1N<-ftjMU&rdM s&BMcg?6DB%aY8fVztgzWi13v_^ft`y4-utvT`mAddM3Jc+71!_2eRZa@&Et; literal 0 HcmV?d00001 diff --git a/src/static/app/icons/144x144.png b/src/static/app/icons/144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..f78346b9c6163e772729134be111de0bc45f1d95 GIT binary patch literal 3791 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 a& zwH8X{L|D9GFAP17RkGU!0 zDBeXNR)>7+_Mu7gj0$@P4k?wNini<+;jVkZYd7JZgUCL*nwUuO+si5WnSA|xcMGKk z4_M$`jCP>rTz}-xA{W{9KMSYwJ~tb(bMKVJcZqbD7rpUj?(GyXrxaGBf}FF%d6dIh z3;}GiqWMCLs3iF}l)tbByZ8%1<1+-iE@u-&aG~W*W})ncM6cDq&72rB zf_#{|EL#I}hbzc}_-XLf(u!zf3b$qB&+;C-wxXTS=4!Xt48Mr(IcX&1h14%7c6RWk zHaT_i(KC59QF-$`sE^oH#2xwsP?k>n2}ZzvQ%5c=-YeBvre%TB?PfKTR3Ac^UJ;lg zgrbdQ8CK88y>_;$U+s!r&gryguwS2VIo{70A@ s?$Bth?PM=Q?f=Xf{>vT;FOMVCVj4QF55nPB;R&FtWu#fI?(q750Oxyu`~Uy| literal 0 HcmV?d00001 diff --git a/src/static/app/icons/180x180.png b/src/static/app/icons/180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..24bd062906510ec33eededef567a3a8bdd61b601 GIT binary patch literal 4844 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 NK-Wa4M$0MwzW^yXPQ(BJ literal 0 HcmV?d00001 diff --git a/src/static/app/icons/192x192.png b/src/static/app/icons/192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ea1a2f780d32e825b5343bbed44178ab0ecb15 GIT binary patch literal 5319 zcmds5*HhC0v;8FmNT{Jn69|X|q)HP}ARtwG7wIA@y%U-VRSb%t^d3P0snS9XMNyh` z5a~!2kkE_N%XeSz%=ZV}hqF7gWzIhB>{*rgO9mPDnpJtHm zasU9ciI%FeNkHbtbg-}KXcpzxCORirJdjWPJ(xT(9u@Ej!Nx7~@?n;9LCt7cv+vI$ zu7aMQgoioSr4=suCYHt;cMfiwnp;a5SG?J99%WaPG=jDT$?Y$7&nR{@>#ylzn_@?4Gw;v3i2J_D2_=XDz?v zfQEWotD~1D-+bGdC>n%$5+b^<>wzU0RfKSS%3@>W>17gRc=91kd^uw?j637`;JFO# zm~{1GLqpl3A|T^wti7TW&6pC}5Q&P4RDo-S*O&M2y#N9LCqVR_S=YKDYh;hC^+ikh zQXSy}`Si}OUlT=Nj5b;28eCv~Nz$1gxPDWL)My8g(Zxyb(Ywmm1u;3#`Brou`Ba!H?&7b=p22ey;VB%wkPOV23Sbe;gOd!JvId{06P=x zf!oe21pRME##?UAIv1=M0zrY*Z_g6A;Zoc!IHkQ60w`nmU3RkQ+ICMive7a#dsAWO zB%-Z%XvusGgaK7-4p+)SN{bwIJla1 z_~KHp@`p=B=Sc0W*5-_ldkp7W(4rjOMz138LhMR5PL~5_#+3vlpaNLC!ARun!vkj* z>|RC3>@$cw|Mru!i?LtO2(%JZwtmD}+da{i#r2%77<{j7BL8vTh9=k`(AM$h z$0ETA$z|e$cKB}Ppf^9rbK~PTz5=zuC>~4$0Mcc zj6jfHbv-sg7oy#REKpaUc2`BVad2zh`R=PF6p*Ms?JT_le4xeZn89ek<++8EvHSoZ zb?&o{)G`AoT#&`D(U3OG_0(e~j?0e}S`NjpvdV+|okPh6n9OIa6w&96%W6 z)-DFtR2jyf445=z5V21nOeORc@Pqr0ttW>k2);;;IT;AMMVhp!B6<|RvVLLbJUZSI zbp*88GbE*ohF1$f&psN8+_tf>lzIK-D{w`_z;cEobamMlUac^+lEnig^N9$$V;NhQ zo5zx@!+{Q4jhY$ESHJyWhynzG>`6XM0kHwqh>amb8N$I@%?A8HW7OtK7g;c$n}KU` ze2q-tP8*6Q^yc&vkVM7*MPdk7ltmngs{RBGgewPNqr_$m>C<2(G+akPC^5R5r zpKaT^H90QW_(s|XI_fSdy?@*p#otV4|E3VZnnQI3823wA ziQl8|-~n2Gzj^c$=wHc5y?tBVdrjs{vW_?^E6Ds~s1OQPxls7L+JO-~2h}t}5qhfJ z&gxkvA&P4MkQ0ZsBmFif-``)$a6SLNR&axq+HxbUbpy;A+ebE;kYe=YfZ*yAGxn2(6g2gWY%v{5~dPn_(3~!iUGPklP<_~Yb`o#M&R$NRB z>uDe#Q0@I~ISUvF81|twh{(|s%C7yQJWKB7g{8rX0Mm0>7!~^)ZBp0C>&sTAp;xbb z_8mT2$%)G)?vFY;q(PfSetQE845ObvEadr0gjPW_$FoOLeu}1t=;zify>;5ZbAYG7 zNSV2F)IL5=y59B9Qq!93^Pk9#gD`SDCr4Sa$Bo9Pq=I*)A`an!haLi(mK@(p-P@O- zCqsSRMHNxs)YP!lTV}Z7yrOa`2pQa1d7AY~k`)2t^$&dzX}QKa%DcNJ%6XVeQL86f z8Who53()kKaRnacq?M*b^IE0v*N-9E5%luC40T5iIOT|; zRj9sfNe(*4$im-JQ|at#Pmr&$z^4W_mAD#6vQI&OXD;*>!*>{iWlQhF<0D!%6-_l& zj#Uhmw_kxtD~%-4m~e8$lkXuCUKRM_t_6MJpbC(IC|;+Q^H3*T1Z+ZMUqaTcAd@vG zL@Z5t%!`|}v9cmi^`vtIP3oD805>b2{5~>9jl}=$i=U7E(fmF7Nx7PB$MjTP-J>8u zYvqQ15ZmZ51?064m25`QCZFlnb%Qen(%7D3Eawx&swMT!A!^W> zx370nH zP@}8{o@ckGGPT@n%ohm`tnHixxhZTn#wibI??%_h(5qR*U2?YWIP;@y!m`h>=KT6a zbv|eF+&>^)wQ?10!dAEQ%2sK?%~iF%RtMh0-@hgBFnLn!vUN6qz!&m{KmNMt%RKPv7k=Y>k)-98mDUrDplNDqcSe(zZ?E;&`!|Zpm zJIZACykTa!)lH~)n2@M5}UIu zl&;#hT0->Ahu^PXF{dF5XbZ+5=tLhmGl%Mt!H;$RgwKew^7lJ~;{0XW*KnW!#uEEB z1lqr>xRaG~ataC`J|;Tk_Fk8aZaA&?Au92r(}(3+a_hz>c_vMmV;7mi>1=E>nil`U z>dUV4Ks=2>dz;;^?+_)r0#n6V=WGb8+=kj-CP5EzO^qGXE)eVG&F*CuKOZN&StReE z(i{1JK3WCOm$AX*8Z|=mDXo=T^A1EL%6I((Qr=eo&o>`^E{*w0#XWhs1x8{sasC0> z=2c)bgbH9)kuUz>yBG6GNzRe8wbSEcuQ4Uv(+QG7WjN<2+_=?`T%zciLA=g6Js=mA zc7T}rcT!MGDqMXO(!AU>tao4VpBpIY`Jd#zMoD1(cz_}l#1VQ;la6w$BBXIzAp>%H z`>obAy}rgljBvXobiK|KEmyV@zQcvE30i5@w>D;i!*z|khfD*_BjCA>(HT} zk5j<_IQ+;g`Giy76ZFytuz_w-!?D~F`;DxuDd_r1M(aNqzva}{Hc_R|{GG_b`IrjOVYL~c#i`4XId3vHd$Z&Q$Z(ATB zz6)-*L+ZiR4AwaInbH1f(y~qOg7z9+@im)aPg-6+89e@>Dx?*1|uL&T+!kaDCjFJ`6L1gRn1@hOlh{1 z3x)LtKX2&Sax2a@K<$Op2WssX{B(<3#B+|q1(6zT!?%qRzI@5O2}lHsPGlYS0Q>)b z{?0ZO4m)Axda5zaL~~>F-?8#e_VH%38CsPeWKgICtK1C@;mw|B#0|%t%Pcwo^oNBo z-fPcV@C)w9_ZwM<8?4pzLt-#-P#rstsHE7JPlMkLHZs=0PFj-#}GS$E5pfE^xQ>w)QOVmKLiGb|_2<>y3M$7)18rqC3} z0-);Q(2V+%)`K+8nY$#m=U>CU?m^Iw{TR_e%2N%93kw&E77(%<7E!kMK^It28_Zt4 zbKj?cCEL0JRxC>vN`I#R=ZF_P{qSkRQ1)K)cNXNt_>DVa{(eDi#lkL6cyT6!v2x3g ziI(le(zFB0;ObtOswBj@&`C~E0*QQ>@585lElfM^RN?ODC3?Hr&9>EI-BDx;e{|v) zw5}OB$*>cOwdS6_zA6`xO3P8VHh+8wuBqlXXHLn#(6I|KaZ7LJz1rCrg@ zCMj@VH}r3cce-OijQla`%_A{zm(*BZVp#6W*-h2}o%+!AtO?Y7ImxK1*(I~6E(rSQTp(^C!3^ZfNPmdtasHS7;Um$aT&Xe9zqNGrOnjE-+nPs5LQ;Y$ z*RMlFn1-uhq7wAo7mZW=Rxk_NBoW+7xsJZ-uE1uq)M_i?LHEF!!qcIlemmOGW_#nl z8F%vMVt4bPqrkjd@+-?Awyao19dS6_Ty-mp0OPLuC{N+!`1z}`!)j}(Y`+wB(NcLOYFK(+AATug-M?}IAy zTN|4#vwx3{u{t)!S%o6*Sxev}Q60C8-)36uxS7Ix zyBuxW=u>!HJ5*jNQRP!;IEsX@uCpC*|7REHv$|aS)vYlP)9Pp9?QbMcAQXL;9yx8T zcL9E|N>91x_Rxo`Zn<@dM{IexZMYSu4~df$4~*^coo6LFv{sHzqdG|R+c~BCc9orA zR2TY5thcR0lOv=_^|yuog>OS?X>$!8@7QsE>_4)&Vn{^pxUUq|ExaC7el*}pnXH|v z>iq$46#gyzFB9Kb`xS$XrF!zc^47*I?_a^KtEJb*m}m5N#DL8qLtEXMF?L%Sji+9J j39SG9TX&hY*u#3pl2|UjzA?Q#XaFrWJ=HQ5yYT-3@W|Zw literal 0 HcmV?d00001 diff --git a/src/static/app/icons/20x20.png b/src/static/app/icons/20x20.png new file mode 100644 index 0000000000000000000000000000000000000000..0abed04c9c9455c14c5d044dbb01a31e73dd44d6 GIT binary patch literal 574 zcmV-E0>S->P)3kJ6#s%PUL+!IC{%iBEv4S-pM&@Tdh#qvPg;cBEO>|!KY)mM z@gO2C?WHFPme_z;5o!`Dq#}5bQUg{~#iZ|!hc+cOt489@2NsrRW`8@&umk^C(&S8_ z6g<99k8yx`fxWke2Q-j-g7kSW^2(|pQ>(6WY317DIzR}(#S^h0&}ksv8fd$o5V+8( zdq1wg6#xb3>y9P<9@bc>jMTRZ5UB<~Wy~2Q4JLQEn3>sigCy{2yUzMc>%gW9&9a5@ zTw08orch<=W??*+Hlyr2>jk!>{}34dIpvpnA!e^kq`zgLXm#FPc)7udiW9}!;;EkV zHe2pTIOdRCdT8I1d@I1$R~Oy_cN)F?NOvMqnZmeXMp>}Y%}crnDRa1kOe1j{Xd)$e<6n)De3SuYAXe`-bTm z6&4JOYBfH?R+sb3wG#0Dch9fuQO};km@SFun1~%PNMYO^$d*(q9SO5S3 literal 0 HcmV?d00001 diff --git a/src/static/app/icons/29x29.png b/src/static/app/icons/29x29.png new file mode 100644 index 0000000000000000000000000000000000000000..a20d3736400b6641dad628891f5fc47a441abafa GIT binary patch literal 780 zcmV+n1M~ceP)84jKN3^>umXh^x(cjCn-;mQjY!lGxd@ez79p-n zXjT0I8Ez^ptQ3(jYuuRSY(%L1!emV6-nYdxGS<=Y10m2KT)6Lff9E{!;T+C6uu~+) z)&~_SC9{@aQ(SX?9g5&Y!q-2{B!w0<6nMRX+`GUPfvn8}0Tfk%L7*WN?CVX;S&2c~ z;oOG;H?|4{5JW&u0xyc&E6a?~qPEIn6}`Mwm;s+|D~(2|N3}dw-8M)$o)~(T>#@ay z8hgwtID%NfUh|mz0-XmC$OK7UVG!{ohAY<8prwWI_q^d?pFb4r%>j(N5wvkQ*ykS( z_W4!yUXn4BK~+cn2c6{rb&W0|8vhruq9)G6vHnTc zRP6kW#hmrjM=syW~d5pJDyMVWJdKCh`kI@Muq6PvhL9@@isfLWA=G(m+fYx1Em7qjX(tsJk+$cfC?7rqI9`^#(47T>**Stk;1F~50tmVN`WxZ`1IE&B@q0000< KMNUMnLSTYqnPJrc literal 0 HcmV?d00001 diff --git a/src/static/app/icons/40x40.png b/src/static/app/icons/40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..2b41be67d60b6bb9b81cbd3d350c0f9ed4cbbef0 GIT binary patch literal 985 zcmV;~119{5P)j zy%0gMq7DYT7|e~yZZ_Bll`+BT=10ZORl8b63kA_BHf>S!)#m(np|SZeCT(8hko+JQ zdCv2k_xI+U_q;g=DDZ;Aj2Ue{XFcv%&*I{}ZM~69IZqaB^EvBZ4sWEzb%Z1^ePi63^zXDT$;G6eG&|!5DsE*qSm4IAX6*McpJ36#$?R({4 z+bWnX7n^2R$YK2gpc>LafcGxOgkAt)kc7DFyce!X35s%5a%%l#1Ziny+!fsm%+;?fa+@>C=HkK2gMz{j z6ItVO*Lve?vmRoC1aZ2dy)iH$J7FU_hH7H-j$)L*W9+>5O5MUPj9z%FZjB|mW9_12 zHh{C^_cJk^1WPCKkuaUqNODK6viTRg-}dZ$^LXD8ktfD~2@c2SB?uatl#X)6A{PUA zEFfawkw~Wu`W^-qn|A@X73oYX7}eN00byGWiB%`7ijLsXdT1H>|Mq#B0P`iuVD~$9 zhY2hJ0198ccC3FSu{?=}_QuZ$eqyJifbYNU@c%~WbAV~4mHwO-c+mXnnHve4s+8mr zVk@L$b_xPoy>@xUBL5WY0|1vGX}n4IDD5eYhLDc#jpC~}c|wva$HQ7}Y9LSiIp;0I9zk=STL zLIjM~5R90L7fc90KuADQG_h?I5Gn*LRd>sVG+2d*tS!r>+nt@)AJ9VEncXhCTiRxx zpYxsXo$sBQGw0--12{N1IP?J|k;a8vC+4f+j8TdvTDl5~hiTA=M%pd}%1>QNBrm?v z%1L_3RsBUmSuR8|1ozBj2ZTYvZvwNjK0ERWmYVWPv2~_InG0 zwPC|t99Va}DONk%;yoLu=BY02r~pN&FE6zaXrOTV@2h_f+O<*a0;)^h+8;~;fB;1b zWJ{bj-6?u+x+g>A4A2MqW6v=R7{$IdwGCE5%Qvb4i_pJJ0)VDcTVxlsG%CRO^wpC- zV%2S9REDOnob*A^wr=a6kt8;e=rhEqI~D!#AA(mpU7=)&;J&-i`itO=J1+<%2S9!j z^#MrID1mS^Y&`5Muf5zUP&r924!If=GD|kqH?)n#$DL<6o{dxUv<&THvNJN$NE`@xx zt~H1=tp_6!tbhK=VINRYzKA8BHly{&jy_R1yRgUlfncE9GRm)I?zK>`0T5TGR)t0^ zD;&JWu2G-tqjhEOg#_0@L_qok*wG%Nhzc?nA~QiwgNQ&xNUr?+?6qU#fn8Rbea>jL z7aA3L7q>US&RsVB7430v4Jbeq0P5zsUnjY_-7Ex~s=W{HE30X2?W&vXI4Z`_a7tJ8 z^Ryx_$imxqz=GkbXJ4-B*)m*pe^ocv^WW*RqSXMPM1$Mz%q8$Zp12lR=_X~Az@Q-} zEQRk{(-iNmpUo{q1+l&K2j5D9J4C39qGSSqspXFBmM`#H=_d8*3Pe=Fm&Fw`nuIiy z(E@;|m@DOAa{+DQMsvfy>`eDJo+G}{pVLPV3YyAiUH4lAQec&viax3eP>_lv4kD6m z!v4I0KGZ!nESP&{&bXQ}Kc4;Lly}@JMOBXg$ZBt6_q44)UBd36rWY!s0W{jiMIMF7 zwy35aARrTK&YlKP)uokXzNOJ_yJNkC05b%r2HEkTNf-jt000v-0JZ?;VZqIpL2_^x zjcO}x8>6U8UHJ(yf9-5nJ%EmL2#VmlN2(eQ0l@w$|K3QmKfko9VHp6NDswM{U`|Ii z(U^7K_})s`vOBo9%yjEf*5e+GvjjKn{QBSHs-heqL;>Nam>rVO9ogCJ~VLCsg@fvuk2I zjv8U(72fd)^%f$?)I{0;%>3+K5Uc_aZ=W?x;Eh-&ffz=8<+YbpJvxu%F9dt}FD&2HMAJnnGLzu^lESlverQiK`g*o|TjIl92uaL|K7eKJ<9= z0ZR?Rk4A>tsyElPWDYiEh^a8-uL)du_ST%YCnR=^b>qZ*RnHhD0zL7vlS8P688I&S l%4>tbJsRg792^{y<$ur)-3%O*Liqpy002ovPDHLkV1fe%so4Mk literal 0 HcmV?d00001 diff --git a/src/static/app/icons/60x60.png b/src/static/app/icons/60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..167826b328a904c0b75606db77f392528008bae5 GIT binary patch literal 1521 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 literal 0 HcmV?d00001 diff --git a/src/static/app/icons/76x76.png b/src/static/app/icons/76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..0d9d28e127fb68096ff163d4d314514842057e50 GIT binary patch literal 1972 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 bxtUzFGGw>2Y}c&Gdik7jaA literal 0 HcmV?d00001 diff --git a/src/static/app/icons/96x96.png b/src/static/app/icons/96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..eccf3967ee0e6551498b1014a1f322d85adf5047 GIT binary patch literal 2396 zcmbW3Ydq5pAIAS%4%=9A>K4hN-v5^*Y)D}dwE@Pa36s%+QvQF86Ol)_KOMx$Yio^NMsl(z>g59 zi;uckIDb?T03b6M>*Fqz+k!iB1aDXQ&Nh5eAsG)} z>a~8b{pR}S49Uh4$%S%Ny+rAh$EW}NqK3Z?+hN|wA2vci&KeiFWAa0%wvueg#Nu>sY=Yc)HY04BpS}jc1cpmfJ}oHeeId~kshPVZ_!+gC+${K zuTEX*G!|4wrK1Gh?+5g@=hi0KhxZd5LV+H9feQP|Clt)|1$;{!!cnVyRjB7ZcDt$; z8Xlw3f_}LL=3R+gL`lBrko+0^O7KKeV^+zX_Qs6#4n%OMQ^vt@6^~<3N!dLI6R+Cg z3*89mpB#AQ*KP8ZAu`q9IJ(~3;Z8+XV>JIBLx39e@_HatL_0ti)2SH@Gv`hUX^=l{ zeNbP!il?BWTFeM+VtP!4P42O*^xg8YuSFXiwXFQ`;p)XFoh1%E&%&39Hk{G2Ldcl4 zmlS{mIhy&-vSuR~u+gzhw>)hP^g7jgStd7*6m2aBpU1&4E?mbyevP=ICvsy}NoSdD< z;M|CI>?7}ZIyizCGLMdUN#7$@Zzp!psnBvjs)V`jM|}66dsk&uakl}r2@%L1O{*?b z(1}jyF64h-`Tr{WsVy_Iq^rl5Q-iFyB=>5rXTgO> z<Wg32AM+R})@x zcR1m56{oGp;IR2Z6yT;QJ6bO5JKJ9x377;uY;y~8JlLzv7zOdbfJTLsz5zqOCwSRm z_|e);Qe_c-qp$wLS3#EkfnZsWV{j@lA;zf8bOVu$SI@l#H_MgA3p$&%HN!mzqsyw8 zhUH;{u=nS$j09WGi#`ojoqQnT5$?Ayth)N<*2Z5`CiLdaX1N>M8+LE<&K+It2*K7u z#PMJLMmwbdD0sP~?+AMqff99GZ$ZZO(sj#Wz zXXD*y-1T24^LK5iv7kizAe)_6bVUi?S?+a6QE5*QBOK(q`gME08vCJDX7Dbo!Xja_ z1vf$e8!T_y-Hc~dHsoZ0IuA27_z&T$lYhWRwL{R5Wl&4%{FaJK^(;pWaLvRUH4WyP zfZg|&m2`w-`5r*(oh|UK5viUZF@_%$axNnuv{OEuk$G*^qSCm1D=}Z`UA zH3}jKKyi-_&DWgIK4q#566wOhHkQAnb|+S*$Hxcr2~YODxa4|_`z(Pc-afyMMbCtE4XXAWP_Q!Y@!g;Ly)_J(;@^{bK``RSmdPUzp{Tdf*Th&Cs!%#vd(+BEwKmY1j2d(T{i$Z+MQf6EG z_zAQ{+KO>Kbn}fONb4#}ViAML-Foxwjmjr?pV4RcT3d(#-oxF%d*IWFP8V) zW?Ukz6c@YQevl#Ue`=~@Jze46KD5R0k#isFS6ScIzjNx4@TJ|Z?S^nGFQQnE6ODOy z{RoRJJDhn5{Uz?DTN#Qw09{O>9LZ+dbH}Lui^fT#2dK=)%PrWwt_`Ka)E$jLU~j)# z^X!foeDPDd!kKLhJ4e+4>TgjX{Yd+=*Fu%6l)&41Tst18s5`t;ITVR8B~%+16|v$M z4rYyIuESNM$9j#GzlvVbo;K&H9nW~30CIDUUg)-X9vaajtR2Wj=`Q!aAj8@8K~9CZ zR5^&sQTH@VbTMY7sHesbH+ma*$r|0CJLIDm@mZN`xKhzJ*WJ(+0j5MNDmB#~#Rmm! zF3@8|3Q{AzIUnKQqTov}Rh+X*`dX&-F6#W6yQH$^21M97cGSt$po10@5rd$@f`WbE zMc;m6=BWp@j!Hvh;bRF4F267qEvPUqiv;X0RtcV(d5rNS9^3NP*9-AGVk4^@?VvIr zmuDtIBWoT~sU)dqK>ufj&{%W1Y}NYf8|MZJ7)3JOLtcCP49>T@MN1{uW(w1gsxvd# zG3>_}kCnl}<^YDMdXLSW6NF#-*xjr#t&xGI%8Awq&r{e?!<3|vDJ*0$Cn}4(jfgwh zw($8gaoBFbc*ybC(V@`9i~3xcZBF{>=>tnDrweu1B-b#`^Yo9`jO>M49V1;P5FIsF zv%G6aIRqFFqOj7aI(bio18*}dHudTC*^(hgdr5-`y=)&)m}Wmk^z^c6S)T|L%EA1& r;J>`h40P<-X@p3q{@-z7z}f~WDM-2+JNK{uUPb`M#=*MggfIOc1^8}N literal 0 HcmV?d00001 diff --git a/src/static/images/.gitkeep b/src/static/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/static/images/avatar.jpg b/src/static/images/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2010a704fa8a3bd674eb7837fe527c6a9020009d GIT binary patch literal 58805 zcmbTd2UJsS*DV^lbb+9NAXOwFNC~}23ndUB3B3t|NP_gDpeRK^BE1Qrm(WAeglYk) zq7evHnsfvNML=xm*}U)f|Np&bj5Ef$HyO{)PS|AZXJE86Qyq*G7T~kL#=YpJ}sezV>s8TkC6xI&LkEHR*X(BJteN++|7#`{UV`sEhvVW<;+<=et`>;7o{N5 zP-PWWHFXUGLzt1Vi76ayZDVU^@8Ia+dEM)VHwGIV5*l{vc6dbWgShyFhl#k1%&hF3 z$GLgFMd{nNH?KLwgGtbX@cdq6&=MdPpYs zKprv0=u=?*^wQ>TW^pCd7v5_@qbz46pi39_PNw$H%>M5t7W4mWX8%30|C!eeh>ea0 z`0?ntKvzJ!Z>-MaVJc~fw{WVs6r8SUx>=v0k_CSW6AB3f$$3*$a?)7s7euozlylRp zv=MPVdvZFjKEN|g{KESt%U;~M`>6Y%`U=VTNSZwL`>y&?^;5?IkCM(~!k<3jnX8{{ zG^9r_wg2}!Y3T>9f2e;!*HU*bf0IrI)7-^g`Gk%y|I>Hl542o|L{oZP{->+_m+^75 zb@*ZVUJ1MK&Uu~1%D*7*{UaD^LkLswbEMT&B16pBu563n{p(cOX6w1qtB=Xywh!+G zy5?5|vqVD7dum9h`an3hP2Kubpc0F$$RGuL*wkEExr1}m&<-y=PL{;FlNR;thM#L5~HrW z=~ek(h40tNI{tj8mm^n{J?eP7_Ux-+ezZed4k5T=?nM@prGfQgXUv*`(eWLxO8O!t zt5Lg)3#9q&&xjw-Yl5)wvq8T`+aouhjp`=svPCKY7pnH`*`WsUM>(I-{a4*&7oslC zNl}d0rJzywB0mm4R~4rwrNZ?Bf1D?IMvO^S(k0fmqQfx-Qy@qESp*e|j()ho~T(sAkiPTjVvyAxQN5@$lA_Wcg2{i$DN zb?Ye@hDYav{(?e~8<&q@dUz#W`{LoNySRY1t9mxUy3kjB!=%e4gtN@YGgbHiC`;c< zZEdOj$J9En0toP*5kFCnqBm{!b#=y1wOn*Ws?|nO<4Zh0Yh=DAo;#bg66M32jF}eh zoQ!dJk))C$?S>`Y53$}xc@22w@p}dktXh%(f(_@86dQ(8MCm+*Lo~x48Hw&vzlYr$UD|jHZi%45OR;?HEH57jIMTDjP1)bkKXp|p)@x9Svboi$Rup-v( zb2Vw8QbTFXW4$misAba4B` zkPtD1HW}4jB|?4SA8FHl&mUs$Uamd!YwHTnAKp3XvLxwfi-8ub`kPg?>@P3MUVfdh zT)zJ*$C3@pearIgUr=1whc5z3sC7F?k1@dqZx-I1w*8Tr_~0ZiCQ` z=?OE62J52D2<@G5m+Whl=Wp$}5|WSTHc{*CPNJ>t(3H9ghkwExkGLBX4l%&I-8c|j3i?=PaGB&| z6UJH-i4^N#ibRN^^Jts(oodEB&vpWvwCt-a`4Yp~xN~vFZOAqhm*k$&9�#uFE+G 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 z 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 + + + + + + + + + + + + + + + + + diff --git a/src/static/tabbar/example.png b/src/static/tabbar/example.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1e942bcf691d6d3711535d9419417cabd5d781 GIT binary patch literal 1371 zcma)+YdF&j0LK5b{h6hjZ73Fsn#(CGhf?XxNQT^VPevwl$!tqTry*;KVh7b+9(QV) z;=~wgbIDvLdg$ol-l^Q;a8~LZj`Q_=Iv?Km_df53_v4%H=5lH)LK^`9z*drjoyR86 z|0}rirpHd@dTjzi_c%oagmUaB001>eb~av@gBA)WX=D0ooZQoVlK;L4bJ9x^-kI_v_0t+=InfGB*I zdUX!tDHw)!kgu5n$NBk;1(lZaoFR`C?W}XJMyQRi4bTko#?PkuR^ix|tMinhCwkXH zWoVU|EkM%K1{d-0x^czo3+T+jiq+`Dbl0U~l;uPeb54t(pkN6K?}CINKviFkiKV!# zX5EBHX1%q#3L++D*o*~dieHgQf^tA}Rckm>;<-zSi_->>1SPIHSa1(*JrhL;p*_yN z0OMq)_?^=wXd*ro&@QT=E%3!xf@0txG7_Y`_d!`)Vu}ZC5y*Y+q2|-=r8Tgu4FcY* zxPgNq{NR7C#`%D|K}828>Q>!h797AYQqA?K7QX7@a3I(CPt;dm-@xi4l z)?l&d7&fuH{DN@@K*VuouJ|Nbyne9+tOOjsRN1>mbEa zPD+!kQ&vR9frYCAot!uhk+%JOC@UTJB-Ssm@bj=vV&7y2XG$AB$jiU7LbRKWrP4$=Xe`Ol_ylGCTZuw$oXeC!5HNP7^{- z--MxiQm=)O{o^WT#KN~(pqU&{%Ty_cAV#G%s8N3~rgdyDa(B+GS~}gQOkwTcnHTt3 z6Rwhm8a7d6!Cxn4M(V>bR9Ak0gV%H2))1$~`0eEc$+P8^`RYH!cT@*VS%TCxuj~21 zo(R8s#C>#iKv5`j;XXSy)rvXR?l>_LH=x|X$Zt3k*#BoZ^ia~ctpRnwx(Xr{nJShj zx48zNthJFU>6v$B*ecn|pT-OK=Q(5lu!~ z*+>fQGiC+JGu`$FOCP=zJv>={b7NaVy%e4u(DO(+<-=-GfZC17jU;HDBH6-yB;BwO z$IvZ%X5zH3ZOGEzH`+KvpNBnLqfQ&Y3VMsnm&vke{`J4wd0{=qR(iBRX3TfluV~;p58^3Px)FiAu~RCr$Po!xQUFbse}T?cU{i8D##4ea{*-1Ir;*c&97B+evt_vnc|$#&w% zBmnV8f+YCK4-yIDBS3-#DFgZwr2!*K8Wjc)It=9 zFbxP3M=eBw2-AQtacB#9T+X3@+X7%_jhP9Pe=y=$YxhvXJA8u!tab;V;3yFDw0Z*z z^TD)w2!a~eTVoeKC|)26BQITB*c%rVH;~QpmjUyTSEPxTURlbI?Ojs~P9SEpvJ+QV zC(XB|y@Q{-{bgm>K(@=7Db1fwB${|77R&ZJJw>`S@cErNkq zun(}_{q98Cu~hQ7oSVYDxtgOu`hcuJ`p`O3rvgzR!ZaXE9JP=M0Xa3*yD%n96_Uhp zF3LvFvLv-|46-N?VH6dJ0uiPGVdAKTC=g*95GGEvh3Mj908tGL1C*BY6$SEDyTxYt zY{AUIz`fqbgim8j9V+f^VZAV{KyFXJPNwJ4CITFquv08md@BrC9_%x0AP7#o_wfO`oAhifziu%8{*V01j|WAr@Ym;W6kqra(R*|@}z-KgSjWcx$fB1Jia!Faa&XaO zd##~N5(s4-j=qyeY5H5_+qjHqH3WVGQ#W=I?w?r{Om@rr|g0CxM+q9vOTTB?vkD`+j z5kR_tL0Jbk_CWj=!!iJ<4X@sTbO9sxU|#LXbMASeVD!F0)fEgvVL9WP4};>s=o<*N zVp_=;HD;W(LAk5Ym?ouVoMr9JWg!)xWlI7hqq|DxrY^^&-heQ!C= zlyx}npJFYKV1s!K3<*Fg8L~l1x$n^=GR@>IT*liuWXENqU=Q zIebG>OQGCVMC`$JYeCOR0>ZWwj%u7Whpd`TJ*E)*(8$r5`obsF`UL?9d}=#C-f zt^#9^C`EH$mI{P|g6MHkrPOrS5+-_=#Q^~0&aaD zSmRxS$xG+q3#3naHQ-8l)vvVm*kRfL@!rPPqx_?*+Od2>|*s$nyE-BmVsAa{Dq?2Q;Fs@kb$dVXyPjn zVZ;=O0uiPGVdAKTC=g*95GIaVhyoF&0b$~(g$M)kA7W?=zYOT6RR91007*qoM6N<$ Eg2>i=Q~&?~ literal 0 HcmV?d00001 diff --git a/src/static/tabbar/home.png b/src/static/tabbar/home.png new file mode 100644 index 0000000000000000000000000000000000000000..8f82e213c78bd38fc9e7a6eee31c05de0cd3363d GIT binary patch literal 1346 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 V*RY*zoyhZ! literal 0 HcmV?d00001 diff --git a/src/static/tabbar/personal.png b/src/static/tabbar/personal.png new file mode 100644 index 0000000000000000000000000000000000000000..0a569a2f441a1b64342cab45d0b5d85a13891962 GIT binary patch literal 2457 zcmV;K31;?*P)Px;Q%OWYRCr$PoxiJPH4w*hd9TpUMz9dp?Zsy6U0)h|OF_{63q-K9a2M=E@IP?H z#!|3dh>MMdh#-QEKi0}Zun}y8Cv#0C?|3rvotfmEJh=}ZZfyt_K?JOjv^jrv`{8D$`SoG=R{QsZnZ;bKt$@-kF z&eTA1=f4(0xL82Y_A$XBF!cA)%#fx6vH(C3M*R>N`u!-z_+ZpSEagrCB&GCDwt&|y zjd0#G6`b9GRMv3M*`YmeCpZscjQ4vMswrz1AlV{j0^r2?NFxMWV zsO$^s%P0b)pYqr9xXr%QTvE9mpR_^O`PD+(1AW zG&-ZyWA*2X(Wxo6Oe9r71UN7V_chO!mhRbO2^>r4DCBMR@eB9BO z7s#d16BHW4>1`0OrSn_&jDljG)tiB<@>(RLE!;^`cYh@S^i&K?{MW_AP*%swLVb zSwMxfGKEegOGe5uMpQc5H(Ej?Dj$Rmu4(o7mGLCMeM!dHuQaSLxMD}jLsqggF0DJ3%X zR<1~09s*+FS2(FrSqUJ$aCsUa+-UA<9Wh3@UK$XKOaNJWDhfL0qtt7Cz9&95s`*5NiUe?!2?6^ zYhEB~Kf(cNIdqrS3oDLh-{gUkQrf(&E!kfMBE-?IPU}50_J9BqjGMQ$1*Dk;^*Hp( zkF@4Do68oX^Deo{u+@>)UO>1NJC`JCET;FeLL)Pwns;e|bQ!@t($t!cXC`mllC(>% zDmCZ=qGphWs;FflTL9tomHN{aUUNWz-7a0M!!i-x4TzMA z&&QoryVNDC$j_8EOn0-6>j;F~Xi)mMo23XlUFdmTd}KW^dP!FIWE2RHr)(AuXc<(%g;SV`A8d*ClPQ zZzC}0A%rhO2tQOG{F(nv_1C;LV%XeAo0hSpPKJymAdMlZgZ1-~?cwBjHIkbONR@8* zB82d)wTHp`OveSlvX7T>nE+LCQP93_QO_b8DKCgY4%le=W$oH4ZFu@vj3jGN-4b>Lil)5w@+e> zuXv$Y7QQ$j>ctgJ1HiKynj%}*vd7?3N?(N#ZY^&RNVcCHxr8h1wFJC$w4o@Bqhi}i$&fdR$ z`}QxDpCh%P$Ow8{sjzRrwUv~UEio&ql&H-?NEWb?hk{O42}w*gwU6w6Z^{<;Vn_vy z=|EWL5S0v?x8Nc`xM*wDN`RxnrS4tlG}4IId@hXg=ETl>tPKIe9gbhE80a%hk(#Dc zJ=X$f@>^|p9sd)705SCyD*<2(&mnn0RI($zrGYNJ0>x_`?8LBcl(b8vyrC0;p?P&h zkB;?}0lrP{I3OjNMwcxh3jwTzUZ+97Ts~@Af5AZmq0kH3xHo6R@~i=Ztbe!K)_two zGxD|f0#JSpAw1J67qt#pvMOCgms+n(^sbXkwK^4m!tlUf$OBtQ1x0$3+_GZuj9xo( zx4vHT6D##m%d`auvP-1Y?SBKqs1oY-tAPLxe)>tD$FdX|2-uO=^)Ug-P$cR4AjbHn zr}4Ain^Jl!gzz3yKebeqvOGYfsB6j`l@~HFga0kY__XyoW+2&05PxDaU2B6z-UqJf zsQpG4$x=GGYYzq37ffB^f}x&=FflqZKY`W~Mvibx*$OA_hS3d3mM>&0=(X}IfWIh= zyKO~v`HjA&deH0YKroCZnIzxa|Au*+-(Ji87-xY0cgWrzrfn)$dk26pDkh%^7QdtY) z?3Z;dR@41E4Gjl*>beaN--iRKtYy=$Uag)>@<}_}wTF0?vO45@3pep0!hEHCcRFIh z+%;tf`|^842!M2!5PkOMVfrQ(Qn%iy+h_;&x^8n2rQ(|dSwv#w^tU*mgM!)(#O^>A zU`XFRU$2dJcZLzfYt5+zxkHFbWO=X4LHrM753 zpBBhkBPvLBBz0ru+Q;P-mG?l8rZan7d#!-Px;ph-kQRCr$Pojs2mMHqnJSyDhpgG7OpOOI&s1Mbq$Qz9WH_X}d5Lq&0kM3*?W z_yczl4J8skActru5JEyoX#j_c0*MBRChVY@-L-dpJMY)btk;pR3Bt3pGw<_$&F308 z{EbQiW>l>?GzJbpMy3P@AO|2LlfcNDvws${m>j_?ID(=$s$^N-?8>xwS^e*F<^TP3 zc{MVbqs!=_!Q9K=ey2UczkoXjg684UqZd z+>8svw)}SnW>_HevwH^YMI!C1vM2-9zs+A2{N0~60ch7YIGAC8EG9?BnhUU?3DmWZ zw^u$x;-<3BCAz;lMK;FXRleWVva*G}1Jh*}ej?3kSCb!z&OKF{nIlEjXL5sBOFke9 ztFT}nW`PjWWKCjW;K~|%n#)@90C_w)F@<@~wCF)J4{eJa%*vMbG{*olJrDs5ZxK68 zF|R?AfytssX@PLFs2HAZq9ibyO2YlqDF-GmhHEE*VB-W^*jwa?d0To|gEjTV(m}LZlQ{xrB@C;h zfdo=hRqSvpd`Na>749#VhkHJxbgDRl_mQ+Z97v@3^$9BkL<=|tkmPN`td5ugM}eU3 zN~z7MwJ`;d;6Rb#VnXi^%8sZL2a?!bdG`<)?e8R@uLFBt7u$GYbFrHOz9My`>0d0Q~pBx4eHK@h{Hg;Ks> zI#m>~ko-WGz9IkR> z%tJB!J-uFjs^wY+oisocLw-iv@FLU}|L)W7c841P_Iqp1ubZFjzdn#w_iM3ljmSCn zkxt9Vr%p1M^;)2OONr*+RFKOueEo_ksBr;lI$_OsVBx)FQtz)wbzDHyCdCxg@YC<1 z9tnNENHAN4uVrqJ?|%Ts97AE=1b`QCw)iHd{*A@UmxjYYLgzLTj@BEq_V+3daDSE` zffw+ovzKgs_K5-eWhXPT@KyO>@o_8^&B7P5ge#{j>Hy=chN!-9Ve}ZBnNNNIFt@iK zw}rh8)8&sbZIA|ZpO6G!h-F%_fnAnS@nmA*6&Uyj4E*G-*znhDFwP>H`Sfo9c>5X< zYd?Yq%ddGa?6SpU0Mz22yAl8d}l%siR?1_rJjV~fqcv^zAl z8|CC9cAZt|4|{S|dp`Nxfcb2z_%C+0c%NHEUpehM{UBRO$%CEU9_5FyEx{+#`^LbB z0PvOp__=)Jzd204_`{7OT*Bebzk3(Ry-Esm_c2>Zv4IV1%|Pa&h6h2IK#!KQPFA7r zikRA`cfW^^E#r;j!x$Y1&q=X`r{NpQt~g3e0s+MQf-m4*2H)j$QC9F;yRq zp^?YhXdt+z_cn|ZGg7W|2;|H!O3$nH_Z?fOXYAOafq3%`ACBC%5(bR?b4Yx#hfDHY zZWl_Vb>IWTc2lWcBJ~ZOEEtljD^dtHrVhq!a%+X8ZggN+2OkJwB|a8ddxg$NjW}MQ z%otGIdJ1-Pw!}U2T$XDwqhUzLPzXO0C>U>*J>L>j8;8trr7f?h^4$daYnILZ;KgMZ>tj1|AJWJ0u@J$b7lYNmNL8;mB?{kk-{NUsAO?%nabn*bHp$NB#R{O3>cqY0X zI|h;*MD}Ipd_WpO30y!+w)sCSS$&zB`f5T4_YmoOejtqt8~W3$jg|UOufnnP5YLw3 zWph#620jdswYB)Q`E#je2D}pXabl6?BVKRt#A8?>y4VsECA7~D4x(x3@Iab34|qUF zKxJnjb`PWjrZ|cGytY8*y+wBpVmv_F^6^$P7@W~SXp3NXE{oFX<^%O*aZ*5eEd27? zcJ1yM^~!Bk8uatvR3CeOA1{!;&NPsGDqGZ { + // 定义用户信息 + const userInfo = ref({ ...userInfoState }) + // 设置用户信息 + const setUserInfo = (val: IUserInfoVo) => { + console.log('设置用户信息', val) + // 若头像为空 则使用默认头像 + if (!val.avatar) { + val.avatar = userInfoState.avatar + } + else { + val.avatar = 'https://oss.laf.run/ukw0y1-site/avatar.jpg?feige' + } + userInfo.value = val + } + const setUserAvatar = (avatar: string) => { + userInfo.value.avatar = avatar + console.log('设置用户头像', avatar) + console.log('userInfo', userInfo.value) + } + // 删除用户信息 + const removeUserInfo = () => { + userInfo.value = { ...userInfoState } + uni.removeStorageSync('userInfo') + uni.removeStorageSync('token') + } + /** + * 获取用户信息 + */ + const getUserInfo = async () => { + const res = await _getUserInfo() + const userInfo = res.data + setUserInfo(userInfo) + uni.setStorageSync('userInfo', userInfo) + uni.setStorageSync('token', userInfo.token) + // TODO 这里可以增加获取用户路由的方法 根据用户的角色动态生成路由 + return res + } + /** + * 用户登录 + * @param credentials 登录参数 + * @returns R + */ + const login = async (credentials: { + username: string + password: string + code: string + uuid: string + }) => { + const res = await _login(credentials) + console.log('登录信息', res) + toast.success('登录成功') + await getUserInfo() + return res + } + + /** + * 退出登录 并 删除用户信息 + */ + const logout = async () => { + _logout() + removeUserInfo() + } + /** + * 微信登录 + */ + const wxLogin = async () => { + // 获取微信小程序登录的code + const data = await getWxCode() + console.log('微信登录code', data) + + const res = await _wxLogin(data) + await getUserInfo() + return res + } + + return { + userInfo, + login, + wxLogin, + getUserInfo, + setUserAvatar, + logout, + } + }, + { + persist: true, + }, +) diff --git a/src/style/iconfont.css b/src/style/iconfont.css new file mode 100644 index 0000000..35da86c --- /dev/null +++ b/src/style/iconfont.css @@ -0,0 +1,28 @@ +@font-face { + font-family: 'iconfont'; /* Project id 4543091 */ + src: + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAOwAAsAAAAAB9AAAANjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDHAqDBIJqATYCJAMQCwoABCAFhGcHPRvnBsgusG3kMyE15/44PsBX09waBHv0REDt97oHAQDFrOIyPirRiULQ+TJcXV0hCYTuVFcBC915/2vX/32Q80hkZ5PZGZ9snvwruVLloidKqYN6iKC53bOtbKwVLSIi3W6zCWZbs3VbER3j9JpGX3ySYcc94IQRTK5s4epS/jSqIgvg37qlY2/jwQN7D9ADpfRCmIknQByTscVZPTBr+hnnCKg2o4bjakvXEPjuY65DJGeJNtBUhn1JxOBuB2UZmUpBOXdsFp4oxOv4GHgs3h/+wRDcicqSZJG1q9kK1z/Af9NpqxjpC2QaAdpHlCFh4spcYXs5sMWpSk5wUj31G2dLQKVKkZ/w7f/8/i/A3JVUSZK9f7xIKJeU14IFpBI/Qfkkz46GT/CuaGREfCtKJUougWeQWHvVC5Lcz2BGS+SePR99vj3yjJx7h574tp7uWcOh4yfaTjS/245TT/vkQrN+a7RLkK8+Vd+bz+FSGh+9srDQKPeJ2s29z7ah4+efdoxefRbbGwfy7ht+SuIWukzsu1b6ePP+6kN1aamb47qsPim1Ia3xdEpDcl1dckPKGYnneI23+57r2W1Mmkqs6ajrChRCs5qyQ66rTVWhgZaG7toOeHm5cxn0sSQuNDEgcUTdNTSupKI1JRZih/JssAUKezPeOJJzbNozF6zWJuuVavVU5Tgtkop/SDzHa7ytvnCTq0PhkEfi4xLLtb0PuwyOAYqmrYQApFJyoJjTnfz+ve94vvv2f/yWgxl8Jd8Di2DRDPuob59mU/+VfDCROQyR8xSnmP9fXm7liagmN39OlmbvjqG0sMsJKrU0EFXogaRSH5bNY1CmxhyUq7QC1cY1T67RwuQk5CoM2RUQNLoEUb03kDS6h2XzcyjT7iOUa/QXqq1Hn6/GUBAaGcGcWJFlGUmCoVOp8kLvABHnVczGYiOE2SVEUH5OXj/TSnTCDjHAviAWcE4RZYaGWszNiKoayGSGTASeY+PcrMjNpVMvyREMDRoxBMYRVojFMkQiMOhohubdzxtAiOapMMbERpKMnQT9SL4ceQysVdJZVa9kEbsFogIcRyEUE2kN0mL7CDVIGhBzupWMEHA5bDvipgq5hKJcKef8ivbx1kC15KgcYkghhzLxYNntxoKCReJ82jAHAAA=') + format('woff2'), + url('//at.alicdn.com/t/c/font_4543091_njpo5b95nl.woff?t=1715485842402') format('woff'), + url('//at.alicdn.com/t/c/font_4543091_njpo5b95nl.ttf?t=1715485842402') format('truetype'); +} + +.iconfont { + font-family: 'iconfont' !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-my:before { + content: '\e78c'; +} + +.icon-package:before { + content: '\e9c2'; +} + +.icon-chat:before { + content: '\e600'; +} diff --git a/src/style/index.scss b/src/style/index.scss new file mode 100644 index 0000000..86184d9 --- /dev/null +++ b/src/style/index.scss @@ -0,0 +1,18 @@ +@import './iconfont.css'; + +.test { + // 可以通过 @apply 多个样式封装整体样式 + @apply mt-4 ml-4; + + padding-top: 4px; + color: red; +} + +:root, +page { + // 修改按主题色 + // --wot-color-theme: #37c2bc; + + // 修改按钮背景色 + // --wot-button-primary-bg-color: green; +} diff --git a/src/typings.d.ts b/src/typings.d.ts new file mode 100644 index 0000000..9ead3fb --- /dev/null +++ b/src/typings.d.ts @@ -0,0 +1,28 @@ +// 全局要用的类型放到这里 + +declare global { + interface IResData { + code: number + msg: string + data: T + } + + // uni.uploadFile文件上传参数 + interface IUniUploadFileOptions { + file?: File + files?: UniApp.UploadFileOptionFiles[] + filePath?: string + name?: string + formData?: any + } + + interface IUserInfo { + nickname?: string + avatar?: string + /** 微信的 openid,非微信没有这个字段 */ + openid?: string + token?: string + } +} + +export {} // 防止模块污染 diff --git a/src/typings.ts b/src/typings.ts new file mode 100644 index 0000000..b48b630 --- /dev/null +++ b/src/typings.ts @@ -0,0 +1,15 @@ +// 枚举定义 + +export enum TestEnum { + A = '1', + B = '2', +} + +// uni.uploadFile文件上传参数 +export interface IUniUploadFileOptions { + file?: File + files?: UniApp.UploadFileOptionFiles[] + filePath?: string + name?: string + formData?: any +} diff --git a/src/uni.scss b/src/uni.scss new file mode 100644 index 0000000..21b9e5f --- /dev/null +++ b/src/uni.scss @@ -0,0 +1,77 @@ +/* stylelint-disable comment-empty-line-before */ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color: #333; // 基本色 +$uni-text-color-inverse: #fff; // 反色 +$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable: #c0c0c0; + +/* 背景颜色 */ +$uni-bg-color: #fff; +$uni-bg-color-grey: #f8f8f8; +$uni-bg-color-hover: #f1f1f1; // 点击状态颜色 +$uni-bg-color-mask: rgb(0 0 0 / 40%); // 遮罩颜色 + +/* 边框颜色 */ +$uni-border-color: #c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm: 12px; +$uni-font-size-base: 14px; +$uni-font-size-lg: 16; + +/* 图片尺寸 */ +$uni-img-size-sm: 20px; +$uni-img-size-base: 26px; +$uni-img-size-lg: 40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2c405a; // 文章标题颜色 +$uni-font-size-title: 20px; +$uni-color-subtitle: #555; // 二级标题颜色 +$uni-font-size-subtitle: 18px; +$uni-color-paragraph: #3f536e; // 文章段落颜色 +$uni-font-size-paragraph: 15px; diff --git a/src/uni_modules/.gitkeep b/src/uni_modules/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/http.ts b/src/utils/http.ts new file mode 100644 index 0000000..fb4d9bd --- /dev/null +++ b/src/utils/http.ts @@ -0,0 +1,112 @@ +import type { CustomRequestOptions } from '@/interceptors/request' + +export function http(options: CustomRequestOptions) { + // 1. 返回 Promise 对象 + return new Promise>((resolve, reject) => { + uni.request({ + ...options, + dataType: 'json', + // #ifndef MP-WEIXIN + responseType: 'json', + // #endif + // 响应成功 + success(res) { + // 状态码 2xx,参考 axios 的设计 + if (res.statusCode >= 200 && res.statusCode < 300) { + // 2.1 提取核心数据 res.data + resolve(res.data as IResData) + } + else if (res.statusCode === 401) { + // 401错误 -> 清理用户信息,跳转到登录页 + // userStore.clearUserInfo() + // uni.navigateTo({ url: '/pages/login/login' }) + reject(res) + } + else { + // 其他错误 -> 根据后端错误信息轻提示 + !options.hideErrorToast + && uni.showToast({ + icon: 'none', + title: (res.data as IResData).msg || '请求错误', + }) + reject(res) + } + }, + // 响应失败 + fail(err) { + uni.showToast({ + icon: 'none', + title: '网络错误,换个网络试试', + }) + reject(err) + }, + }) + }) +} + +/** + * GET 请求 + * @param url 后台地址 + * @param query 请求query参数 + * @param header 请求头,默认为json格式 + * @returns + */ +export function httpGet(url: string, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + query, + method: 'GET', + header, + ...options, + }) +} + +/** + * POST 请求 + * @param url 后台地址 + * @param data 请求body参数 + * @param query 请求query参数,post请求也支持query,很多微信接口都需要 + * @param header 请求头,默认为json格式 + * @returns + */ +export function httpPost(url: string, data?: Record, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + query, + data, + method: 'POST', + header, + ...options, + }) +} +/** + * PUT 请求 + */ +export function httpPut(url: string, data?: Record, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + data, + query, + method: 'PUT', + header, + ...options, + }) +} + +/** + * DELETE 请求(无请求体,仅 query) + */ +export function httpDelete(url: string, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + query, + method: 'DELETE', + header, + ...options, + }) +} + +http.get = httpGet +http.post = httpPost +http.put = httpPut +http.delete = httpDelete diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..e015753 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,163 @@ +import { pages, subPackages } from '@/pages.json' +import { isMpWeixin } from './platform' + +export function getLastPage() { + // getCurrentPages() 至少有1个元素,所以不再额外判断 + // const lastPage = getCurrentPages().at(-1) + // 上面那个在低版本安卓中打包会报错,所以改用下面这个【虽然我加了 src/interceptions/prototype.ts,但依然报错】 + const pages = getCurrentPages() + return pages[pages.length - 1] +} + +/** + * 获取当前页面路由的 path 路径和 redirectPath 路径 + * path 如 '/pages/login/index' + * redirectPath 如 '/pages/demo/base/route-interceptor' + */ +export function currRoute() { + const lastPage = getLastPage() + const currRoute = (lastPage as any).$page + // console.log('lastPage.$page:', currRoute) + // console.log('lastPage.$page.fullpath:', currRoute.fullPath) + // console.log('lastPage.$page.options:', currRoute.options) + // console.log('lastPage.options:', (lastPage as any).options) + // 经过多端测试,只有 fullPath 靠谱,其他都不靠谱 + const { fullPath } = currRoute as { fullPath: string } + // console.log(fullPath) + // eg: /pages/login/index?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor (小程序) + // eg: /pages/login/index?redirect=%2Fpages%2Froute-interceptor%2Findex%3Fname%3Dfeige%26age%3D30(h5) + return getUrlObj(fullPath) +} + +function ensureDecodeURIComponent(url: string) { + if (url.startsWith('%')) { + return ensureDecodeURIComponent(decodeURIComponent(url)) + } + return url +} +/** + * 解析 url 得到 path 和 query + * 比如输入url: /pages/login/index?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor + * 输出: {path: /pages/login/index, query: {redirect: /pages/demo/base/route-interceptor}} + */ +export function getUrlObj(url: string) { + const [path, queryStr] = url.split('?') + // console.log(path, queryStr) + + if (!queryStr) { + return { + path, + query: {}, + } + } + const query: Record = {} + queryStr.split('&').forEach((item) => { + const [key, value] = item.split('=') + // console.log(key, value) + query[key] = ensureDecodeURIComponent(value) // 这里需要统一 decodeURIComponent 一下,可以兼容h5和微信y + }) + return { path, query } +} +/** + * 得到所有的需要登录的 pages,包括主包和分包的 + * 这里设计得通用一点,可以传递 key 作为判断依据,默认是 needLogin, 与 route-block 配对使用 + * 如果没有传 key,则表示所有的 pages,如果传递了 key, 则表示通过 key 过滤 + */ +export function getAllPages(key = 'needLogin') { + // 这里处理主包 + const mainPages = pages + .filter(page => !key || page[key]) + .map(page => ({ + ...page, + path: `/${page.path}`, + })) + + // 这里处理分包 + const subPages: any[] = [] + subPackages.forEach((subPageObj) => { + // console.log(subPageObj) + const { root } = subPageObj + + subPageObj.pages + .filter(page => !key || page[key]) + .forEach((page: { path: string } & Record) => { + subPages.push({ + ...page, + path: `/${root}/${page.path}`, + }) + }) + }) + const result = [...mainPages, ...subPages] + // console.log(`getAllPages by ${key} result: `, result) + return result +} + +/** + * 得到所有的需要登录的 pages,包括主包和分包的 + * 只得到 path 数组 + */ +export const getNeedLoginPages = (): string[] => getAllPages('needLogin').map(page => page.path) + +/** + * 得到所有的需要登录的 pages,包括主包和分包的 + * 只得到 path 数组 + */ +export const needLoginPages: string[] = getAllPages('needLogin').map(page => page.path) + +/** + * 根据微信小程序当前环境,判断应该获取的 baseUrl + */ +export function getEnvBaseUrl() { + // 请求基准地址 + let baseUrl = import.meta.env.VITE_SERVER_BASEURL + + // 微信小程序端环境区分 + if (isMpWeixin) { + const { + miniProgram: { envVersion }, + } = uni.getAccountInfoSync() + + switch (envVersion) { + case 'develop': + baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_DEVELOP || baseUrl + break + case 'trial': + baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_TRIAL || baseUrl + break + case 'release': + baseUrl = import.meta.env.VITE_SERVER_BASEURL__WEIXIN_RELEASE || baseUrl + break + } + } + + return baseUrl +} + +/** + * 根据微信小程序当前环境,判断应该获取的 UPLOAD_BASEURL + */ +export function getEnvBaseUploadUrl() { + // 请求基准地址 + let baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL + + // 微信小程序端环境区分 + if (isMpWeixin) { + const { + miniProgram: { envVersion }, + } = uni.getAccountInfoSync() + + switch (envVersion) { + case 'develop': + baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_DEVELOP || baseUploadUrl + break + case 'trial': + baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_TRIAL || baseUploadUrl + break + case 'release': + baseUploadUrl = import.meta.env.VITE_UPLOAD_BASEURL__WEIXIN_RELEASE || baseUploadUrl + break + } + } + + return baseUploadUrl +} diff --git a/src/utils/platform.ts b/src/utils/platform.ts new file mode 100644 index 0000000..c714199 --- /dev/null +++ b/src/utils/platform.ts @@ -0,0 +1,24 @@ +/* + * @Author: 菲鸽 + * @Date: 2024-03-28 19:13:55 + * @Last Modified by: 菲鸽 + * @Last Modified time: 2024-03-28 19:24:55 + */ +export const platform = __UNI_PLATFORM__ +export const isH5 = __UNI_PLATFORM__ === 'h5' +export const isApp = __UNI_PLATFORM__ === 'app' +export const isMp = __UNI_PLATFORM__.startsWith('mp-') +export const isMpWeixin = __UNI_PLATFORM__.startsWith('mp-weixin') +export const isMpAplipay = __UNI_PLATFORM__.startsWith('mp-alipay') +export const isMpToutiao = __UNI_PLATFORM__.startsWith('mp-toutiao') + +const PLATFORM = { + platform, + isH5, + isApp, + isMp, + isMpWeixin, + isMpAplipay, + isMpToutiao, +} +export default PLATFORM diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..9879f25 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,78 @@ +import type { CustomRequestOptions } from '@/interceptors/request' + +/** + * 请求方法: 主要是对 uni.request 的封装,去适配 openapi-ts-request 的 request 方法 + * @param options 请求参数 + * @returns 返回 Promise 对象 + */ +function http(options: CustomRequestOptions) { + // 1. 返回 Promise 对象 + return new Promise((resolve, reject) => { + uni.request({ + ...options, + dataType: 'json', + // #ifndef MP-WEIXIN + responseType: 'json', + // #endif + // 响应成功 + success(res) { + // 状态码 2xx,参考 axios 的设计 + if (res.statusCode >= 200 && res.statusCode < 300) { + // 2.1 提取核心数据 res.data + resolve(res.data as T) + } + else if (res.statusCode === 401) { + // 401错误 -> 清理用户信息,跳转到登录页 + // userStore.clearUserInfo() + // uni.navigateTo({ url: '/pages/login/login' }) + reject(res) + } + else { + // 其他错误 -> 根据后端错误信息轻提示 + !options.hideErrorToast + && uni.showToast({ + icon: 'none', + title: (res.data as T & { msg?: string })?.msg || '请求错误', + }) + reject(res) + } + }, + // 响应失败 + fail(err) { + uni.showToast({ + icon: 'none', + title: '网络错误,换个网络试试', + }) + reject(err) + }, + }) + }) +} + +/* + * openapi-ts-request 工具的 request 跨客户端适配方法 + */ +export default function request( + url: string, + options: Omit & { + params?: Record + headers?: Record + }, +) { + const requestOptions = { + url, + ...options, + } + + if (options.params) { + requestOptions.query = requestOptions.params + delete requestOptions.params + } + + if (options.headers) { + requestOptions.header = options.headers + delete requestOptions.headers + } + + return http(requestOptions) +} diff --git a/src/utils/toast.ts b/src/utils/toast.ts new file mode 100644 index 0000000..e524b00 --- /dev/null +++ b/src/utils/toast.ts @@ -0,0 +1,65 @@ +/** + * toast 弹窗组件 + * 支持 success/error/warning/info 四种状态 + * 可配置 duration, position 等参数 + */ + +type ToastType = 'success' | 'error' | 'warning' | 'info' + +interface ToastOptions { + type?: ToastType + duration?: number + position?: 'top' | 'middle' | 'bottom' + icon?: 'success' | 'error' | 'none' | 'loading' | 'fail' | 'exception' + message: string +} + +export function showToast(options: ToastOptions | string) { + const defaultOptions: ToastOptions = { + type: 'info', + duration: 2000, + position: 'middle', + message: '', + } + const mergedOptions + = typeof options === 'string' + ? { ...defaultOptions, message: options } + : { ...defaultOptions, ...options } + // 映射position到uniapp支持的格式 + const positionMap: Record = { + top: 'top', + middle: 'center', + bottom: 'bottom', + } + + // 映射图标类型 + const iconMap: Record< + ToastType, + 'success' | 'error' | 'none' | 'loading' | 'fail' | 'exception' + > = { + success: 'success', + error: 'error', + warning: 'fail', + info: 'none', + } + + // 调用uni.showToast显示提示 + uni.showToast({ + title: mergedOptions.message, + duration: mergedOptions.duration, + position: positionMap[mergedOptions.position], + icon: mergedOptions.icon || iconMap[mergedOptions.type], + mask: true, + }) +} + +export const toast = { + success: (message: string, options?: Omit) => + showToast({ ...options, type: 'success', message }), + error: (message: string, options?: Omit) => + showToast({ ...options, type: 'error', message }), + warning: (message: string, options?: Omit) => + showToast({ ...options, type: 'warning', message }), + info: (message: string, options?: Omit) => + showToast({ ...options, type: 'info', message }), +} diff --git a/src/utils/uploadFile.ts b/src/utils/uploadFile.ts new file mode 100644 index 0000000..416d39c --- /dev/null +++ b/src/utils/uploadFile.ts @@ -0,0 +1,324 @@ +import { toast } from './toast' + +/** + * 文件上传钩子函数使用示例 + * @example + * const { loading, error, data, progress, run } = useUpload( + * uploadUrl, + * {}, + * { + * maxSize: 5, // 最大5MB + * sourceType: ['album'], // 仅支持从相册选择 + * onProgress: (p) => console.log(`上传进度:${p}%`), + * onSuccess: (res) => console.log('上传成功', res), + * onError: (err) => console.error('上传失败', err), + * }, + * ) + */ + +/** + * 上传文件的URL配置 + */ +export const uploadFileUrl = { + /** 用户头像上传地址 */ + USER_AVATAR: `${import.meta.env.VITE_SERVER_BASEURL}/user/avatar`, +} + +/** + * 通用文件上传函数(支持直接传入文件路径) + * @param url 上传地址 + * @param filePath 本地文件路径 + * @param formData 额外表单数据 + * @param options 上传选项 + */ +export function useFileUpload(url: string, filePath: string, formData: Record = {}, options: Omit = {}) { + return useUpload( + url, + formData, + { + ...options, + sourceType: ['album'], + sizeType: ['original'], + }, + filePath, + ) +} + +export interface UploadOptions { + /** 最大可选择的图片数量,默认为1 */ + count?: number + /** 所选的图片的尺寸,original-原图,compressed-压缩图 */ + sizeType?: Array<'original' | 'compressed'> + /** 选择图片的来源,album-相册,camera-相机 */ + sourceType?: Array<'album' | 'camera'> + /** 文件大小限制,单位:MB */ + maxSize?: number // + /** 上传进度回调函数 */ + onProgress?: (progress: number) => void + /** 上传成功回调函数 */ + onSuccess?: (res: Record) => void + /** 上传失败回调函数 */ + onError?: (err: Error | UniApp.GeneralCallbackResult) => void + /** 上传完成回调函数(无论成功失败) */ + onComplete?: () => void +} + +/** + * 文件上传钩子函数 + * @template T 上传成功后返回的数据类型 + * @param url 上传地址 + * @param formData 额外的表单数据 + * @param options 上传选项 + * @returns 上传状态和控制对象 + */ +export function useUpload(url: string, formData: Record = {}, options: UploadOptions = {}, + /** 直接传入文件路径,跳过选择器 */ + directFilePath?: string) { + /** 上传中状态 */ + const loading = ref(false) + /** 上传错误状态 */ + const error = ref(false) + /** 上传成功后的响应数据 */ + const data = ref() + /** 上传进度(0-100) */ + const progress = ref(0) + + /** 解构上传选项,设置默认值 */ + const { + /** 最大可选择的图片数量 */ + count = 1, + /** 所选的图片的尺寸 */ + sizeType = ['original', 'compressed'], + /** 选择图片的来源 */ + sourceType = ['album', 'camera'], + /** 文件大小限制(MB) */ + maxSize = 10, + /** 进度回调 */ + onProgress, + /** 成功回调 */ + onSuccess, + /** 失败回调 */ + onError, + /** 完成回调 */ + onComplete, + } = options + + /** + * 检查文件大小是否超过限制 + * @param size 文件大小(字节) + * @returns 是否通过检查 + */ + const checkFileSize = (size: number) => { + const sizeInMB = size / 1024 / 1024 + if (sizeInMB > maxSize) { + toast.warning(`文件大小不能超过${maxSize}MB`) + return false + } + return true + } + /** + * 触发文件选择和上传 + * 根据平台使用不同的选择器: + * - 微信小程序使用 chooseMedia + * - 其他平台使用 chooseImage + */ + const run = () => { + if (directFilePath) { + // 直接使用传入的文件路径 + loading.value = true + progress.value = 0 + uploadFile({ + url, + tempFilePath: directFilePath, + formData, + data, + error, + loading, + progress, + onProgress, + onSuccess, + onError, + onComplete, + }) + return + } + + // #ifdef MP-WEIXIN + // 微信小程序环境下使用 chooseMedia API + uni.chooseMedia({ + count, + mediaType: ['image'], // 仅支持图片类型 + sourceType, + success: (res) => { + const file = res.tempFiles[0] + // 检查文件大小是否符合限制 + if (!checkFileSize(file.size)) + return + + // 开始上传 + loading.value = true + progress.value = 0 + uploadFile({ + url, + tempFilePath: file.tempFilePath, + formData, + data, + error, + loading, + progress, + onProgress, + onSuccess, + onError, + onComplete, + }) + }, + fail: (err) => { + console.error('选择媒体文件失败:', err) + error.value = true + onError?.(err) + }, + }) + // #endif + + // #ifndef MP-WEIXIN + // 非微信小程序环境下使用 chooseImage API + uni.chooseImage({ + count, + sizeType, + sourceType, + success: (res) => { + console.log('选择图片成功:', res) + + // 开始上传 + loading.value = true + progress.value = 0 + uploadFile({ + url, + tempFilePath: res.tempFilePaths[0], + formData, + data, + error, + loading, + progress, + onProgress, + onSuccess, + onError, + onComplete, + }) + }, + fail: (err) => { + console.error('选择图片失败:', err) + error.value = true + onError?.(err) + }, + }) + // #endif + } + + return { loading, error, data, progress, run } +} + +/** + * 文件上传选项接口 + * @template T 上传成功后返回的数据类型 + */ +interface UploadFileOptions { + /** 上传地址 */ + url: string + /** 临时文件路径 */ + tempFilePath: string + /** 额外的表单数据 */ + formData: Record + /** 上传成功后的响应数据 */ + data: Ref + /** 上传错误状态 */ + error: Ref + /** 上传中状态 */ + loading: Ref + /** 上传进度(0-100) */ + progress: Ref + /** 上传进度回调 */ + onProgress?: (progress: number) => void + /** 上传成功回调 */ + onSuccess?: (res: Record) => void + /** 上传失败回调 */ + onError?: (err: Error | UniApp.GeneralCallbackResult) => void + /** 上传完成回调 */ + onComplete?: () => void +} + +/** + * 执行文件上传 + * @template T 上传成功后返回的数据类型 + * @param options 上传选项 + */ +function uploadFile({ + url, + tempFilePath, + formData, + data, + error, + loading, + progress, + onProgress, + onSuccess, + onError, + onComplete, +}: UploadFileOptions) { + try { + // 创建上传任务 + const uploadTask = uni.uploadFile({ + url, + filePath: tempFilePath, + name: 'file', // 文件对应的 key + formData, + header: { + // H5环境下不需要手动设置Content-Type,让浏览器自动处理multipart格式 + // #ifndef H5 + 'Content-Type': 'multipart/form-data', + // #endif + }, + // 确保文件名称合法 + success: (uploadFileRes) => { + console.log('上传文件成功:', uploadFileRes) + try { + // 解析响应数据 + const { data: _data } = JSON.parse(uploadFileRes.data) + // 上传成功 + data.value = _data as T + onSuccess?.(_data) + } + catch (err) { + // 响应解析错误 + console.error('解析上传响应失败:', err) + error.value = true + onError?.(new Error('上传响应解析失败')) + } + }, + fail: (err) => { + // 上传请求失败 + console.error('上传文件失败:', err) + error.value = true + onError?.(err) + }, + complete: () => { + // 无论成功失败都执行 + loading.value = false + onComplete?.() + }, + }) + + // 监听上传进度 + uploadTask.onProgressUpdate((res) => { + progress.value = res.progress + onProgress?.(res.progress) + }) + } + catch (err) { + // 创建上传任务失败 + console.error('创建上传任务失败:', err) + error.value = true + loading.value = false + onError?.(new Error('创建上传任务失败')) + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..22a48c5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "composite": true, + "lib": ["esnext", "dom"], + "baseUrl": ".", + "module": "ESNext", + "moduleResolution": "Node", + "paths": { + "@/*": ["./src/*"], + "@img/*": ["./src/static/*"] + }, + "resolveJsonModule": true, + "types": [ + "@dcloudio/types", + "@uni-helper/uni-types", + "@types/wechat-miniprogram", + "wot-design-uni/global.d.ts", + "z-paging/types", + "./src/typings.d.ts" + ], + "allowJs": true, + "noImplicitThis": true, + "outDir": "dist", + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true + }, + "vueCompilerOptions": { + "plugins": ["@uni-helper/uni-types/volar-plugin"] + }, + "include": [ + "src/**/*.ts", + "src/**/*.js", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.jsx", + "src/**/*.vue", + "src/**/*.json" + ], + "exclude": ["node_modules"] +} diff --git a/uno.config.ts b/uno.config.ts new file mode 100644 index 0000000..2ddbd83 --- /dev/null +++ b/uno.config.ts @@ -0,0 +1,65 @@ +// https://www.npmjs.com/package/@uni-helper/unocss-preset-uni +import { presetUni } from '@uni-helper/unocss-preset-uni' +import { + defineConfig, + presetAttributify, + presetIcons, + transformerDirectives, + transformerVariantGroup, +} from 'unocss' + +export default defineConfig({ + presets: [ + presetUni({ + attributify: { + // prefix: 'fg-', // 如果加前缀,则需要在代码里面使用 `fg-` 前缀,如:
+ prefixedOnly: true, + }, + }), + presetIcons({ + scale: 1.2, + warn: true, + extraProperties: { + 'display': 'inline-block', + 'vertical-align': 'middle', + }, + }), + // 支持css class属性化 + presetAttributify(), + ], + transformers: [ + // 启用指令功能:主要用于支持 @apply、@screen 和 theme() 等 CSS 指令 + transformerDirectives(), + // 启用 () 分组功能 + // 支持css class组合,eg: `
测试 unocss
` + transformerVariantGroup(), + ], + shortcuts: [ + { + center: 'flex justify-center items-center', + }, + ], + safelist: [], + rules: [ + [ + 'p-safe', + { + padding: + 'env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)', + }, + ], + ['pt-safe', { 'padding-top': 'env(safe-area-inset-top)' }], + ['pb-safe', { 'padding-bottom': 'env(safe-area-inset-bottom)' }], + ], + theme: { + colors: { + /** 主题色,用法如: text-primary */ + primary: 'var(--wot-color-theme,#0957DE)', + }, + fontSize: { + /** 提供更小号的字体,用法如:text-2xs */ + '2xs': ['20rpx', '28rpx'], + '3xs': ['18rpx', '26rpx'], + }, + }, +}) diff --git a/vite-plugins/copyNativeRes.ts b/vite-plugins/copyNativeRes.ts new file mode 100644 index 0000000..5a461d2 --- /dev/null +++ b/vite-plugins/copyNativeRes.ts @@ -0,0 +1,41 @@ +import path from 'node:path' +import process from 'node:process' +import fs from 'fs-extra' + +export function copyNativeRes() { + const waitPath = path.resolve(__dirname, '../src/nativeResources') + const buildPath = path.resolve( + __dirname, + '../dist', + process.env.NODE_ENV === 'production' ? 'build' : 'dev', + process.env.UNI_PLATFORM!, + 'nativeResources', + ) + + return { + enforce: 'post', + async writeBundle() { + try { + // 检查源目录是否存在 + const sourceExists = await fs.pathExists(waitPath) + if (!sourceExists) { + console.warn(`[copyNativeRes] 警告:源目录 "${waitPath}" 不存在,跳过复制操作。`) + return + } + + // 确保目标目录及中间目录存在 + await fs.ensureDir(buildPath) + console.log(`[copyNativeRes] 确保目标目录存在:${buildPath}`) + + // 执行文件夹复制 + await fs.copy(waitPath, buildPath) + console.log( + `[copyNativeRes] 成功将 nativeResources 目录中的资源移动到构建目录:${buildPath}`, + ) + } + catch (error) { + console.error(`[copyNativeRes] 复制资源失败:`, error) + } + }, + } +} diff --git a/vite-plugins/updatePackageJson.ts b/vite-plugins/updatePackageJson.ts new file mode 100644 index 0000000..bd93d6a --- /dev/null +++ b/vite-plugins/updatePackageJson.ts @@ -0,0 +1,37 @@ +// src/plugins/updatePackageJson.ts +import type { Plugin } from 'vite' +import fs from 'node:fs/promises' +import path from 'node:path' +import process from 'node:process' + +function updatePackageJson(): Plugin { + return { + name: 'update-package-json', + async buildStart() { + // 只在生产环境构建时执行 + if (process.env.NODE_ENV !== 'production') + return + + const packageJsonPath = path.resolve(process.cwd(), 'package.json') + + try { + // 读取并解析 package.json + const content = await fs.readFile(packageJsonPath, 'utf-8') + const packageJson = JSON.parse(content) + + // 更新时间戳(使用 ISO 格式或自定义格式) + packageJson['update-time'] = new Date().toISOString().split('T')[0] // YYYY-MM-DD + + // 写回文件(保持 2 空格缩进) + await fs.writeFile(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, 'utf-8') + + console.log(`[update-package-json] 更新时间戳: ${packageJson['update-time']}`) + } + catch (error) { + console.error('[update-package-json] 插件执行失败:', error) + } + }, + } +} + +export default updatePackageJson diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..6d9e635 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,186 @@ +import path from 'node:path' +import process from 'node:process' +import Uni from '@dcloudio/vite-plugin-uni' +import Components from '@uni-helper/vite-plugin-uni-components' +// @see https://uni-helper.js.org/vite-plugin-uni-layouts +import UniLayouts from '@uni-helper/vite-plugin-uni-layouts' +// @see https://github.com/uni-helper/vite-plugin-uni-manifest +import UniManifest from '@uni-helper/vite-plugin-uni-manifest' +// @see https://uni-helper.js.org/vite-plugin-uni-pages +import UniPages from '@uni-helper/vite-plugin-uni-pages' +// @see https://github.com/uni-helper/vite-plugin-uni-platform +// 需要与 @uni-helper/vite-plugin-uni-pages 插件一起使用 +import UniPlatform from '@uni-helper/vite-plugin-uni-platform' +/** + * 分包优化、模块异步跨包调用、组件异步跨包引用 + * @see https://github.com/uni-ku/bundle-optimizer + */ +import Optimization from '@uni-ku/bundle-optimizer' +import dayjs from 'dayjs' +import { visualizer } from 'rollup-plugin-visualizer' +import AutoImport from 'unplugin-auto-import/vite' +import { defineConfig, loadEnv } from 'vite' +import ViteRestart from 'vite-plugin-restart' +import updatePackageJson from './vite-plugins/updatePackageJson' + +// https://vitejs.dev/config/ +export default async ({ command, mode }) => { + // @see https://unocss.dev/ + const UnoCSS = (await import('unocss/vite')).default + // console.log(mode === process.env.NODE_ENV) // true + + // mode: 区分生产环境还是开发环境 + console.log('command, mode -> ', command, mode) + // pnpm dev:h5 时得到 => serve development + // pnpm build:h5 时得到 => build production + // pnpm dev:mp-weixin 时得到 => build development (注意区别,command为build) + // pnpm build:mp-weixin 时得到 => build production + // pnpm dev:app 时得到 => build development (注意区别,command为build) + // pnpm build:app 时得到 => build production + // dev 和 build 命令可以分别使用 .env.development 和 .env.production 的环境变量 + + const { UNI_PLATFORM } = process.env + console.log('UNI_PLATFORM -> ', UNI_PLATFORM) // 得到 mp-weixin, h5, app 等 + + const env = loadEnv(mode, path.resolve(process.cwd(), 'env')) + const { + VITE_APP_PORT, + VITE_SERVER_BASEURL, + VITE_DELETE_CONSOLE, + VITE_SHOW_SOURCEMAP, + VITE_APP_PROXY, + VITE_APP_PROXY_PREFIX, + } = env + console.log('环境变量 env -> ', env) + + return defineConfig({ + envDir: './env', // 自定义env目录 + + plugins: [ + UniPages({ + exclude: ['**/components/**/**.*'], + routeBlockLang: 'json5', // 虽然设了默认值,但是vue文件还是要加上 lang="json5", 这样才能很好地格式化 + // homePage 通过 vue 文件的 route-block 的type="home"来设定 + // pages 目录为 src/pages,分包目录不能配置在pages目录下 + // subPackages: ['src/pages-sub'], // 是个数组,可以配置多个,但是不能为pages里面的目录 + dts: 'src/types/uni-pages.d.ts', + }), + UniLayouts(), + UniPlatform(), + UniManifest(), + // UniXXX 需要在 Uni 之前引入 + { + // 临时解决 dcloudio 官方的 @dcloudio/uni-mp-compiler 出现的编译 BUG + // 参考 github issue: https://github.com/dcloudio/uni-app/issues/4952 + // 自定义插件禁用 vite:vue 插件的 devToolsEnabled,强制编译 vue 模板时 inline 为 true + name: 'fix-vite-plugin-vue', + configResolved(config) { + const plugin = config.plugins.find(p => p.name === 'vite:vue') + if (plugin && plugin.api && plugin.api.options) { + plugin.api.options.devToolsEnabled = false + } + }, + }, + UnoCSS(), + AutoImport({ + imports: ['vue', 'uni-app'], + dts: 'src/types/auto-import.d.ts', + dirs: ['src/hooks'], // 自动导入 hooks + vueTemplate: true, // default false + }), + // Optimization 插件需要 page.json 文件,故应在 UniPages 插件之后执行 + Optimization({ + enable: { + 'optimization': true, + 'async-import': true, + 'async-component': true, + }, + dts: { + base: 'src/types', + }, + logger: false, + }), + + ViteRestart({ + // 通过这个插件,在修改vite.config.js文件则不需要重新运行也生效配置 + restart: ['vite.config.js'], + }), + // h5环境增加 BUILD_TIME 和 BUILD_BRANCH + UNI_PLATFORM === 'h5' && { + name: 'html-transform', + transformIndexHtml(html) { + return html.replace('%BUILD_TIME%', dayjs().format('YYYY-MM-DD HH:mm:ss')) + }, + }, + // 打包分析插件,h5 + 生产环境才弹出 + UNI_PLATFORM === 'h5' + && mode === 'production' + && visualizer({ + filename: './node_modules/.cache/visualizer/stats.html', + open: true, + gzipSize: true, + brotliSize: true, + }), + // 只有在 app 平台时才启用 copyNativeRes 插件 + // UNI_PLATFORM === 'app' && copyNativeRes(), + Components({ + extensions: ['vue'], + deep: true, // 是否递归扫描子目录, + directoryAsNamespace: false, // 是否把目录名作为命名空间前缀,true 时组件名为 目录名+组件名, + dts: 'src/types/components.d.ts', // 自动生成的组件类型声明文件路径(用于 TypeScript 支持) + }), + Uni(), + updatePackageJson(), + ], + define: { + __UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM), + __VITE_APP_PROXY__: JSON.stringify(VITE_APP_PROXY), + }, + css: { + postcss: { + plugins: [ + // autoprefixer({ + // // 指定目标浏览器 + // overrideBrowserslist: ['> 1%', 'last 2 versions'], + // }), + ], + }, + }, + + resolve: { + alias: { + '@': path.join(process.cwd(), './src'), + '@img': path.join(process.cwd(), './src/static/images'), + }, + }, + server: { + host: '0.0.0.0', + hmr: true, + port: Number.parseInt(VITE_APP_PORT, 10), + // 仅 H5 端生效,其他端不生效(其他端走build,不走devServer) + proxy: JSON.parse(VITE_APP_PROXY) + ? { + [VITE_APP_PROXY_PREFIX]: { + target: VITE_SERVER_BASEURL, + changeOrigin: true, + rewrite: path => path.replace(new RegExp(`^${VITE_APP_PROXY_PREFIX}`), ''), + }, + } + : undefined, + }, + build: { + sourcemap: false, + // 方便非h5端调试 + // sourcemap: VITE_SHOW_SOURCEMAP === 'true', // 默认是false + target: 'es6', + // 开发环境不用压缩 + minify: mode === 'development' ? false : 'terser', + terserOptions: { + compress: { + drop_console: VITE_DELETE_CONSOLE === 'true', + drop_debugger: true, + }, + }, + }, + }) +}