diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.github/images/preview.png b/.github/images/preview.png new file mode 100644 index 0000000..18f319e Binary files /dev/null and b/.github/images/preview.png differ diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..4513b88 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,71 @@ +name: Check + +on: + push: + branches: + - main + + pull_request: + branches: + - main + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: pnpm + + - name: Install + run: pnpm i + + - name: Lint + run: pnpm run lint + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: pnpm + + - name: Install + run: pnpm i + + - name: TypeCheck + run: pnpm run type-check + + build: + runs-on: ${{ matrix.os }} + + timeout-minutes: 10 + + strategy: + matrix: + node_version: [18.x] + os: [ubuntu-latest, windows-latest] + build_cmd: [build, 'build:mp-weixin', 'build:app'] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + + - name: Set node version to ${{ matrix.node_version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node_version }} + cache: pnpm + + - name: Install + run: pnpm i + + - name: Build + run: pnpm run ${{ matrix.build_cmd }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69c9a5b --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# 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? diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..d8b8386 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +strict-peer-dependencies=false +auto-install-peers=true +shamefully-hoist=true diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..54d3dc3 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,11 @@ +{ + "recommendations": [ + "antfu.vite", + "antfu.iconify", + "antfu.unocss", + "vue.volar", + "dbaeumer.vscode-eslint", + "editorConfig.editorConfig", + "uni-helper.uni-helper-vscode" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f8e3c32 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug h5", + "type": "chrome", + "runtimeArgs": [ + "--remote-debugging-port=9222" + ], + "request": "launch", + "url": "http://localhost:5173", + "webRoot": "${workspaceFolder}", + "preLaunchTask": "uni:h5" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5c575c5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,86 @@ +{ + // Enable the ESlint flat config support + "eslint.experimental.useFlatConfig": true, + // Disable the default formatter, use eslint instead + "prettier.enable": false, + "editor.formatOnSave": false, + // Auto fix + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.organizeImports": "never" + }, + // Silent the stylistic rules in you IDE, but still auto fix them + "eslint.rules.customizations": [ + { + "rule": "style/*", + "severity": "off" + }, + { + "rule": "*-indent", + "severity": "off" + }, + { + "rule": "*-spacing", + "severity": "off" + }, + { + "rule": "*-spaces", + "severity": "off" + }, + { + "rule": "*-order", + "severity": "off" + }, + { + "rule": "*-dangle", + "severity": "off" + }, + { + "rule": "*-newline", + "severity": "off" + }, + { + "rule": "*quotes", + "severity": "off" + }, + { + "rule": "*semi", + "severity": "off" + } + ], + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml" + ], + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "vite.config.*": "pages.config.*, manifest.config.*, uno.config.*, volar.config.*, *.env, .env.*" + }, + "search.exclude": { + "**/node_modules": true, + "**/uni_modules": true, + "**/build": true, + "**/dist": true, + "**/.git": true, + "**/.vscode": true + }, + "i18n-ally.localesPaths": [ + "src/uni_modules/tmui/locale", + "src/uni_modules/wot-design-uni/locale", + "src/uni_modules/wot-design-uni/locale/lang", + "src/uni_modules/tmui/tool/dayjs/locale", + "src/uni_modules/uni-popup/components/uni-popup/i18n", + "src/uni_modules/z-paging/components/z-paging/i18n", + "src/uni_modules/tmui/tool/dayjs/esm/locale" + ], + "vue-i18n.i18nPaths": "src\\uni_modules\\tmui\\locale,src\\uni_modules\\wot-design-uni\\locale,src\\uni_modules\\wot-design-uni\\locale\\lang,src\\uni_modules\\tmui\\tool\\dayjs\\locale,src\\uni_modules\\uni-popup\\components\\uni-popup\\i18n,src\\uni_modules\\z-paging\\components\\z-paging\\i18n,src\\uni_modules\\tmui\\tool\\dayjs\\esm\\locale" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..e8c343f --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "uni:h5", + "type": "npm", + "script": "dev --devtools", + "isBackground": true, + "problemMatcher": "$vite", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/env/.env.dev b/env/.env.dev new file mode 100644 index 0000000..88d99d9 --- /dev/null +++ b/env/.env.dev @@ -0,0 +1,8 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'dev' +# 是否显示console +VITE_SHOW_CONSOLE = true +# 是否开启sourcemap +VITE_SHOW_SOURCEMAP = true +# baseUrl +VITE_BASEURL = 'http://warehouse.szjixun.cn/oa_backend' diff --git a/env/.env.prod b/env/.env.prod new file mode 100644 index 0000000..a59de9e --- /dev/null +++ b/env/.env.prod @@ -0,0 +1,8 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'prod' +# 是否显示console +VITE_SHOW_CONSOLE = true +# 是否开启sourcemap +VITE_SHOW_SOURCEMAP = true +# baseUrl +VITE_BASEURL = 'https://oa-a.szjixun.cn/api' diff --git a/env/.env.test b/env/.env.test new file mode 100644 index 0000000..73400a2 --- /dev/null +++ b/env/.env.test @@ -0,0 +1,8 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'test' +# 是否显示console +VITE_SHOW_CONSOLE = true +# 是否开启sourcemap +VITE_SHOW_SOURCEMAP = true +# baseUrl +VITE_BASEURL = 'https://warehouse.szjixun.cn/oa_backend' diff --git a/index.html b/index.html new file mode 100644 index 0000000..a325999 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ + + + + + + + + + + +
+
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..6a4dc7e --- /dev/null +++ b/package.json @@ -0,0 +1,65 @@ +{ + "name": "unihelper", + "version": "0.0.0", + "private": true, + "packageManager": "pnpm@8.14.1", + "license": "MIT", + "scripts": { + "test:h5": "uni --mode test", + "prod:h5": "uni --mode prod", + "build:h5:test": "uni build --mode test", + "build:h5:prod": "uni build --mode prod" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-app-plus": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-components": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-h5": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-alipay": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-baidu": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-jd": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-lark": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-qq": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-weixin": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-mp-xhs": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-4000020240111001", + "@uni-helper/axios-adapter": "^1.5.2", + "@uni-helper/localforage-adapter": "^1.0.2", + "@uni-helper/uni-use": "^0.19.12", + "@vueuse/core": "^9.13.0", + "axios": "^1.7.2", + "dayjs": "^1.11.12", + "nzh": "^1.0.13", + "vconsole": "^3.15.1", + "vue": "^3.3.8", + "vue-i18n": "^9.6.5" + }, + "devDependencies": { + "@dcloudio/types": "^3.4.7", + "@dcloudio/uni-automator": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-cli-shared": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-stacktracey": "3.0.0-alpha-4000020240111001", + "@dcloudio/uni-vue-devtools": "3.0.0-alpha-4000020240111001", + "@dcloudio/vite-plugin-uni": "3.0.0-alpha-4000020240111001", + "@iconify-json/carbon": "^1.1.27", + "@types/node": "^20.11.4", + "@uni-helper/uni-app-types": "^0.5.12", + "@uni-helper/uni-env": "^0.1.1", + "@uni-helper/unocss-preset-uni": "^0.2.9", + "@uni-helper/volar-service-uni-pages": "^0.2.14", + "@uni-ku/root": "^0.0.1", + "@vue/runtime-core": "^3.3.8", + "@vue/tsconfig": "^0.5.1", + "lint-staged": "^15.2.0", + "pinia": "2.0.36", + "sass": "^1.77.8", + "simple-git-hooks": "^2.9.0", + "typescript": "^5.3.3", + "unocss": "^0.58.9", + "unocss-applet": "^0.8.2", + "vite": "^5.0.11", + "vue-tsc": "^1.8.27" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..acfe950 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,9983 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(@dcloudio/types@3.4.12)(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-components': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-h5': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-xhs': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@uni-helper/axios-adapter': + specifier: ^1.5.2 + version: 1.5.2(axios@1.7.3) + '@uni-helper/localforage-adapter': + specifier: ^1.0.2 + version: 1.0.2 + '@uni-helper/uni-use': + specifier: ^0.19.12 + version: 0.19.12(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(typescript@5.5.4)(vue@3.4.35(typescript@5.5.4)) + '@vueuse/core': + specifier: ^9.13.0 + version: 9.13.0(vue@3.4.35(typescript@5.5.4)) + axios: + specifier: ^1.7.2 + version: 1.7.3 + dayjs: + specifier: ^1.11.12 + version: 1.11.12 + nzh: + specifier: ^1.0.13 + version: 1.0.13 + vconsole: + specifier: ^3.15.1 + version: 3.15.1 + vue: + specifier: ^3.3.8 + version: 3.4.35(typescript@5.5.4) + vue-i18n: + specifier: ^9.6.5 + version: 9.13.1(vue@3.4.35(typescript@5.5.4)) + devDependencies: + '@dcloudio/types': + specifier: ^3.4.7 + version: 3.4.12 + '@dcloudio/uni-automator': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-vue-devtools': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-alpha-4000020240111001 + version: 3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@iconify-json/carbon': + specifier: ^1.1.27 + version: 1.1.36 + '@types/node': + specifier: ^20.11.4 + version: 20.14.14 + '@uni-helper/uni-app-types': + specifier: ^0.5.12 + version: 0.5.13(typescript@5.5.4) + '@uni-helper/uni-env': + specifier: ^0.1.1 + version: 0.1.4 + '@uni-helper/unocss-preset-uni': + specifier: ^0.2.9 + version: 0.2.9(@unocss/preset-mini@0.62.3)(@unocss/rule-utils@0.62.3)(@unocss/vite@0.62.3(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))(unocss-applet@0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))))(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + '@uni-helper/volar-service-uni-pages': + specifier: ^0.2.14 + version: 0.2.26 + '@uni-ku/root': + specifier: ^0.0.1 + version: 0.0.1 + '@vue/runtime-core': + specifier: ^3.3.8 + version: 3.4.35 + '@vue/tsconfig': + specifier: ^0.5.1 + version: 0.5.1 + lint-staged: + specifier: ^15.2.0 + version: 15.2.7 + pinia: + specifier: 2.0.36 + version: 2.0.36(typescript@5.5.4)(vue@3.4.35(typescript@5.5.4)) + sass: + specifier: ^1.77.8 + version: 1.77.8 + simple-git-hooks: + specifier: ^2.9.0 + version: 2.11.1 + typescript: + specifier: ^5.3.3 + version: 5.5.4 + unocss: + specifier: ^0.58.9 + version: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + unocss-applet: + specifier: ^0.8.2 + version: 0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + vite: + specifier: ^5.0.11 + version: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + vue-tsc: + specifier: ^1.8.27 + version: 1.8.27(typescript@5.5.4) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.0': + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.2': + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.0': + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.0': + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': + resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + 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-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + 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.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + 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.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + 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.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.0': + resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.7': + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.0': + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.0': + resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.8': + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.1': + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.2': + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.0': + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.8': + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.8': + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.25.3': + resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + 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/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@dcloudio/types@3.4.12': + resolution: {integrity: sha512-xSFDhBCm4bqdRBO9mBj7wySz7fzOv9sMeK9VMI21tHvZbT2bIdGMU5o+kJ/J4H2+N5+7SW2kDY+aIzZs94DAOg==} + + '@dcloudio/uni-app-plus@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-Jrsaz9ghyxddzUTE+PwDtfn5ItxHr1ReKXMWgqRDhn0k2K4xMNYNlaVAxpeDtGxqLkLDp1OcVSDyJx2DqOLlzw==} + + '@dcloudio/uni-app-uts@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-gX56n9FXN1Kx9hgB8dWSdKpr4F0H3I97gMqsdEpMBOCZi/9C59Sp/CGeD2TWRCw0Kicn5y4B0ZFZ48Nm8xeXIw==} + + '@dcloudio/uni-app-vite@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-X2gKCDn4vUGKjpimstjXXpfOBje5i4mG4jEnmTMs4eXpZkJJHiJjbRWOfMtlC8mKCq0yKnxziABad66z4PO5lg==} + + '@dcloudio/uni-app-vue@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-0HoqQQ0epxHqCLBJHqU5Zj4ZdL+qSKtWMgfTzDhChNVzCxWxe2gzHKtpcrXuk/KyzIAdH28smZUmythWu965xQ==} + + '@dcloudio/uni-app@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-iTln489gbprbU5a+RpsLjFO+kATFh9YgHeX1trI3LcvDyYpw9nN266wozWXqOpETYyQl+cdF6X+29SzPbWuGSA==} + peerDependencies: + '@dcloudio/types': ^3.4.6 + + '@dcloudio/uni-automator@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-5e5fhADfAa+mphFhACKnVyVV21NOTlj88h4NdCZmZtYcYd/YbazUQ94UhuadgLJTdkpC4CyO6H4cLJRGelG+QQ==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-gJQii/tGcBznVmKh5yHYHXhkmXR4fM3rcyhZKAtrsI4InOzAYrRFhnFsHpQda9QCiCLLwtAM7+YrXPpgHbvYdg==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-5NscwaEHKrI0BsaSU7oxW3uNoVylmJcskZH4rcOP/jLtsOz3VeY9YQBDLg1dr8kMFapQYWswcpnDC3FvQeW5JA==} + + '@dcloudio/uni-components@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-23aNTKgs9zNcqM/Ogas61D95yjKqHHi5xFpWPRqB2r2PbjDkeK2g0gYl0JPhl4zFa3A/9AZCzpx6vjgUZgb6pA==} + + '@dcloudio/uni-h5-vite@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-FL7suOy59ki5hxGoJH3Yvfh6l0yXM6aXEXkmEsthPPRR1xmzSod9LF6jDcOW4zVEYx61HSJjFOvCvm8/L4YVfA==} + + '@dcloudio/uni-h5-vue@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-9tMd68yKHLaHfRsrB+0BzS8bd0HxhdM0c4Qgw2H7VPrzAgcCKt+sFLP3vnlGgBLcJObgGgnc5ilbi2652NQWEg==} + + '@dcloudio/uni-h5@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-Pp8KBqdHiI/dVQAq8V+xJgv6PYZZIF2a2KJkEiJ5iyPQfQyGMrw/F0Zen1zB+pSQaXJnpUCzEblV7Rvt1678VQ==} + + '@dcloudio/uni-i18n@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-bCsGB73b5EQJjZwIvUhfuvP+wwYTdiVFuxCRSMwNSgRlv0NW/+63QD5Ad1zA26J1QBPi73Tg51pM219ctmSfHw==} + + '@dcloudio/uni-mp-alipay@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-B9s6YpZGrILoxRn1+3EFEjL6pKrwh5D4ojKWi8G5Ze8cH92RAfBBGHn2hg3S5Tz3jmHTPPga7KwCcBQwOeAU2A==} + + '@dcloudio/uni-mp-baidu@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-cTED4jgcvQ4JdBf75NeI22gEor7RW+a8e0rqOn2Ny9dUY2+s/Mrl0B4q4Qbir6kXwlL172m9EzTpcYVSeymWow==} + + '@dcloudio/uni-mp-compiler@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-fPp8EyfuBpRReWEe5qT0+GdcozQ7Fa4/GQMLCC+o0+qjA6Wyratzfvaf5IAVQDSpSElczzsVgPCIQLlGXC3aAQ==} + + '@dcloudio/uni-mp-jd@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-lWvHeN+P3WhYXWeGSDaRtyGncFvT/4yELZYQvap7lTwTFLddwaSIz98UO3YhdZ3XqTBpyEPu30BYlvSZsMBo+g==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-XCdqmqcXSm889uEzvwyc6XeKcRR9KtdIOZw7J98dBwYxgTSnk6tTOZgFvjNusDgSmftGiJEdVJscTavUEDI3+g==} + + '@dcloudio/uni-mp-lark@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-pobVKBPMi4sqzmoDBmCt1SnZttgRe9RbQ4o/lM5Gey3PG5QGTGl/+nquFy0g5nQGSq9LUb9llDU/nWHCfOngKw==} + + '@dcloudio/uni-mp-qq@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-9fvWsj9rVgZQMYgLczY3mJlOMTxkpkcqiN6QxtJxKhiebNIXSksDzKEi6vsvnE+l3KYfTx6rUm3KPwT8pAV9CQ==} + + '@dcloudio/uni-mp-toutiao@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-9nrL5o2dpQ4L37XGVxbPEPGQlhhcyGGYw5sfj6C4FG0wSYTfcB1NYytAO7QkxznnsUlwWIClI9U0vSl35rNNDQ==} + + '@dcloudio/uni-mp-vite@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-+uYROFCbfdYPLaGPqJsEVrqhXzRzAIwoDXsAAEsfc2r6+K1MdgNZDKHrEfv5yY4eIoDfWAoYY9X0OlwXJJJ6Bg==} + + '@dcloudio/uni-mp-vue@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-P86+tGPu4X65KdClEDKUWu+5sBccmB8ijyChiApiL1XPyYphoX15bvYN0rQNgFV50AMGRl1xhlC3q80pfvu2Dg==} + + '@dcloudio/uni-mp-weixin@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-hwHjdUgoyka84O6vD1BJM265u0027W21V/aVYo3DS8spFsQbUYZPT4qGsXomUM+aTa1Jrv1RDIKz5zowhlRH+Q==} + + '@dcloudio/uni-mp-xhs@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-iHISY9LG66j9feBitkYt8k0k+hfLfaZQwOjIULp+3rVD4vUz+85wUWa6jb1VuM7p6vh5fodcoCOg/qH0Zdb8zg==} + + '@dcloudio/uni-nvue-styler@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-FA/bjDhQnkPhNFzPTdLDNzIaANPOiXvFQHEaFqG2/ukIVlJajLwhRywRKsWQCFVPJIGzsZKHgQY/NQn4bfNICw==} + + '@dcloudio/uni-push@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-YchIHwzIkZfCU83fy9uqxQq4e2WOvqJsRTR2wEMDQoE5oydPQxSCxmj9l/f1mA6C1RJ9l4K7S/bpq3P0Q5IS2Q==} + + '@dcloudio/uni-quickapp-webview@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-C+N6evQeaKe7dEuPg+2cWND3mKdoj2PkS3aAo9rMf/sxKu4serdPG+UlYRjaupMpU43PHgYhwlYYHNPdzhuOVw==} + + '@dcloudio/uni-shared@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-qK30qcHeCw0/dBjB0jKz5HYzyVUAwxFRZ9pCNcVFi7Xe37I2tLbMlvbT76b4/UahTvMMb6NUKeaa4AhjPxFsAQ==} + + '@dcloudio/uni-stacktracey@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-/4ikhP9xjRtFgqePk7/9CEs6lUASpZIQumC+dOa/fRro7iS6mbKFLKyOK/fubO/P9wFcJ1O+WYt963+p7WvUWg==} + + '@dcloudio/uni-stat@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-nCDdin2hwgDFUPAke18bqNocLpsGiTvR9TNfcRjqnj3IBbM3B4SY8tuhzCk8QE7ceNS5rCXAV4FExs7lSqK9/Q==} + + '@dcloudio/uni-vue-devtools@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-vK/Aqb/L6RP+hOBS9YfPkYPAQHPVYHwv07RmQUg4GLMhrlt7hz0CLA9WjYVY4vUOb293Bkdue4rMaAVfPPjhzg==} + + '@dcloudio/vite-plugin-uni@3.0.0-alpha-4000020240111001': + resolution: {integrity: sha512-3byRLizDMhy0p9az4uVQfdsRGpvA2zEPhn2J2S65j86B3Cr49qBcwgfp55LHkORG5dWRZNiU9uSY2HlKx5XUPw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^4.0.0 + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@iconify-json/carbon@1.1.36': + resolution: {integrity: sha512-NC3VcqLtwLZpi7+LeXj+99/byv+asrnCQxiDNCZV6hKr9WcNh6C25kJguJYfN+dV54kOkw78e+6PitQi2Bppnw==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.32': + resolution: {integrity: sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==} + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/core-base@9.13.1': + resolution: {integrity: sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==} + engines: {node: '>= 16'} + + '@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-compiler@9.13.1': + resolution: {integrity: sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==} + engines: {node: '>= 16'} + + '@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/shared@9.13.1': + resolution: {integrity: sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==} + engines: {node: '>= 16'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@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/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==} + + '@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'} + + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.19.2': + resolution: {integrity: sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.19.2': + resolution: {integrity: sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.19.2': + resolution: {integrity: sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.19.2': + resolution: {integrity: sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.19.2': + resolution: {integrity: sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.19.2': + resolution: {integrity: sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.19.2': + resolution: {integrity: sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.19.2': + resolution: {integrity: sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.2': + resolution: {integrity: sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.19.2': + resolution: {integrity: sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.19.2': + resolution: {integrity: sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.19.2': + resolution: {integrity: sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.19.2': + resolution: {integrity: sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.19.2': + resolution: {integrity: sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.19.2': + resolution: {integrity: sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.19.2': + resolution: {integrity: sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==} + cpu: [x64] + os: [win32] + + '@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==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@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/node@20.14.14': + resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@uni-helper/axios-adapter@1.5.2': + resolution: {integrity: sha512-0NUHqVpC2a2KoT855csKhA2nV5bhGtIW9SUSyfZ248PmAsRsrnRjzygEeR/1IDGM6cbHdyAFGAdPtA/mwgC6Dg==} + peerDependencies: + axios: ^1.5.0 + + '@uni-helper/localforage-adapter@1.0.2': + resolution: {integrity: sha512-FaivE9W32s5ZOD1QzPQ06k6fZVk2fHwgVxC2NjqHlE2YufC3UhrH0x4otzhJN6fG5Nzvmv10rhW0zPGNl2Oqhw==} + + '@uni-helper/pages-json-schema@0.2.26': + resolution: {integrity: sha512-cssuTRUUGMKMlVMHk+CZ+28m4eJmJjJP+IMtyno7a+wDAQsRcJDNh9gc9qZqcekyFEO2svr6jN5iEJkUil+1vg==} + + '@uni-helper/uni-app-types@0.5.13': + resolution: {integrity: sha512-NIKHv9Zof7sxsznjH+LRB2VM8ncEyfpkwRVLm7u2N1X3e1RFWvABH+bttfu+d8FIP6JzksBNOQwsyZjDnLN0fw==} + engines: {node: '>=14.18'} + peerDependencies: + typescript: ^4.8.0 || ^5.0.0 + + '@uni-helper/uni-env@0.1.4': + resolution: {integrity: sha512-dtHhx7AJwvPxN+iSvvzyYtak946f0lOLQX14chg6etBJqLqaipsK92HRCkYZFCofsdkHeQLJTf1ZnEdzatZE3Q==} + + '@uni-helper/uni-use@0.19.12': + resolution: {integrity: sha512-3Tc1uSVXl1d/AKXq6gBxfUwW3g0GtAvjnV/CMlVHyh/Q0nboP2Z9mLpuMgXocIum9YmqSX8gd5Yr05NWx9NyJA==} + engines: {node: '>=18'} + peerDependencies: + '@vueuse/core': ^9.0.0 || ^10.0.0 + typescript: ^4.5.0 || ^5.0.0 + vue: ^3.2.0 + peerDependenciesMeta: + typescript: + optional: true + + '@uni-helper/unocss-preset-uni@0.2.9': + resolution: {integrity: sha512-DeM2V4ste8PWcCIYBUlLMmA/rbJz1KTfgH2Ns0iIXWrDHYx9Oab7Yr4RSPzShf+VKOLv9FbdxZRoevi14sf1ZQ==} + peerDependencies: + '@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/volar-service-uni-pages@0.2.26': + resolution: {integrity: sha512-WuxklqH5cuGQT1TxyRu73Nym7tencxO4hed9D6vh7qfP5yuOyBHxCzNdTqXWFtMZ0L/M3VUBK6Bk4nBiBx6Q4A==} + + '@uni-ku/root@0.0.1': + resolution: {integrity: sha512-xaltsllx8IONxmUWPipnfaw4WgjdMcEKFstp5SHdTLO7iP4/yMZZ7audLJDn5pcC9J9+bejR+l83uM81vSpBlw==} + + '@unocss-applet/preset-applet@0.8.2': + resolution: {integrity: sha512-6ixMNqzk4/YYE0r27u8QtT/n34HC3oDVJ9lO6JWT3IQd+DsbR5stmZf9BvTVb7kZmfViPOI+WSTj7tLRPBmQiA==} + peerDependencies: + '@unocss/core': '>=0.59' + '@unocss/preset-mini': '>=0.59' + '@unocss/preset-uno': '>=0.59' + unocss: '>=0.59' + peerDependenciesMeta: + '@unocss/core': + optional: true + '@unocss/preset-mini': + optional: true + '@unocss/preset-uno': + optional: true + + '@unocss-applet/preset-rem-rpx@0.8.2': + resolution: {integrity: sha512-Mlhfw7yllFkD7vadVDbUjtu60z7IDOR7ZrskzogNlF3912/O+A3F+0E4YwcZojxQwoaWPa5zFbubnB9QzJqWRw==} + peerDependencies: + unocss: '>=0.59' + + '@unocss-applet/transformer-attributify@0.8.2': + resolution: {integrity: sha512-dp6YI1G8y4x+lwLhZBLmP+E7yZjjc07zo2ZmaJQp84aX6VbHN/3a8c3Npdpu1vX42UsPmw5VVgQ3r3wYoXa0Kg==} + peerDependencies: + magic-string: ^0.30.0 + unocss: '>=0.59' + peerDependenciesMeta: + magic-string: + optional: true + + '@unocss/astro@0.58.9': + resolution: {integrity: sha512-VWfHNC0EfawFxLfb3uI+QcMGBN+ju+BYtutzeZTjilLKj31X2UpqIh8fepixL6ljgZzB3fweqg2xtUMC0gMnoQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.58.9': + resolution: {integrity: sha512-q7qlwX3V6UaqljWUQ5gMj36yTA9eLuuRywahdQWt1ioy4aPF/MEEfnMBZf/ntrqf5tIT5TO8fE11nvCco2Q/sA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.58.9': + resolution: {integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag==} + engines: {node: '>=14'} + + '@unocss/config@0.62.3': + resolution: {integrity: sha512-zYOvFE0HfGIbnP/AvsbAlJpPRx9CQyXzL11m/8zgsHW5SGlJIYxuTll83l/xu026G5mPiksy7quoEOEgCLslqw==} + engines: {node: '>=14'} + + '@unocss/core@0.58.9': + resolution: {integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==} + + '@unocss/core@0.62.3': + resolution: {integrity: sha512-Pfyrj8S7jq9K1QXD6Z5BCeiQavaHpbMN5q958/kmdbNGp57hOg1e346fMJAvgPjLBR+lE/hgZEsDrijtRiZXnw==} + + '@unocss/extractor-arbitrary-variants@0.58.9': + resolution: {integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==} + + '@unocss/extractor-arbitrary-variants@0.62.3': + resolution: {integrity: sha512-9ZscWyXEwDZif+b56xZyJFHwJOjdMXmj+6x96jOsnRNBzwT9eW7YcGCErP1ih/q1S6KmuRrHM/JOXMBQ6H4qlw==} + + '@unocss/inspector@0.58.9': + resolution: {integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw==} + + '@unocss/inspector@0.62.3': + resolution: {integrity: sha512-nTSXOf7YimFPxEYJo5VfP5wlMgYOCjlv3c5Ub/0fynCJXZNb89SFeU05ABXkEgg/FfiobVBTscikLc6guW8eHQ==} + + '@unocss/postcss@0.58.9': + resolution: {integrity: sha512-PnKmH6Qhimw35yO6u6yx9SHaX2NmvbRNPDvMDHA/1xr3M8L0o8U88tgKbWfm65NEGF3R1zJ9A8rjtZn/LPkgPA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.58.9': + resolution: {integrity: sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==} + + '@unocss/preset-icons@0.58.9': + resolution: {integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA==} + + '@unocss/preset-mini@0.58.9': + resolution: {integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==} + + '@unocss/preset-mini@0.62.3': + resolution: {integrity: sha512-dn/8ubeW2ry/ZF3iKxdQHnS0l3EBibt0rIOE/XVwx24ub6pRzclU4r7xHnXeqvAFOO9PoiKDGgFR92m6R2MxyQ==} + + '@unocss/preset-tagify@0.58.9': + resolution: {integrity: sha512-obh75XrRmxYwrQMflzvhQUMeHwd/R9bEDhTWUW9aBTolBy4eNypmQwOhHCKh5Xi4Dg6o0xj6GWC/jcCj1SPLog==} + + '@unocss/preset-typography@0.58.9': + resolution: {integrity: sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==} + + '@unocss/preset-uno@0.58.9': + resolution: {integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A==} + + '@unocss/preset-uno@0.62.3': + resolution: {integrity: sha512-RlsrMlpEzoZqB0lr5VvlkHGpEgr0Vp6z4Q/7DjW5t7mi20Z2i8olaLGWM0TO1wKoRi8bxc6HP0RHUS7pHtZxBA==} + + '@unocss/preset-web-fonts@0.58.9': + resolution: {integrity: sha512-XtiO+Z+RYnNYomNkS2XxaQiY++CrQZKOfNGw5htgIrb32QtYVQSkyYQ3jDw7JmMiCWlZ4E72cV/zUb++WrZLxg==} + + '@unocss/preset-wind@0.58.9': + resolution: {integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==} + + '@unocss/preset-wind@0.62.3': + resolution: {integrity: sha512-6+VNce1he1U5EXKlXRwTIPn8KeK6bZ2jAEgcCxk8mFy8SzOlLeYzXCI9lcdiWRTjIeIiK5iSaUqmsQFtKdTyQg==} + + '@unocss/reset@0.58.9': + resolution: {integrity: sha512-nA2pg3tnwlquq+FDOHyKwZvs20A6iBsKPU7Yjb48JrNnzoaXqE+O9oN6782IG2yKVW4AcnsAnAnM4cxXhGzy1w==} + + '@unocss/rule-utils@0.58.9': + resolution: {integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==} + engines: {node: '>=14'} + + '@unocss/rule-utils@0.62.3': + resolution: {integrity: sha512-qI37jHH//XzyR5Y2aN3Kpo4lQrQO+CaiXpqPSwMLYh2bIypc2RQVpqGVtU736x0eA6IIx41XEkKzUW+VtvJvmg==} + engines: {node: '>=14'} + + '@unocss/scope@0.58.9': + resolution: {integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA==} + + '@unocss/scope@0.62.3': + resolution: {integrity: sha512-TJGmFfsMrTo8DBJ7CJupIqObpgij+w4jCHMBf1uu0/9jbm63dH6WGcrl3zf5mm6UBTeLmB0RwJ8K4hs7LtrBDQ==} + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + resolution: {integrity: sha512-UGaQoGZg+3QrsPtnGHPECmsGn4EQb2KSdZ4eGEn2YssjKv+CcQhzRvpEUgnuF/F+jGPkCkS/G/YEQBHRWBY54Q==} + + '@unocss/transformer-attributify-jsx@0.58.9': + resolution: {integrity: sha512-jpL3PRwf8t43v1agUdQn2EHGgfdWfvzsMxFtoybO88xzOikzAJaaouteNtojc/fQat2T9iBduDxVj5egdKmhdQ==} + + '@unocss/transformer-compile-class@0.58.9': + resolution: {integrity: sha512-l2VpCqelJ6Tgc1kfSODxBtg7fCGPVRr2EUzTg1LrGYKa2McbKuc/wV/2DWKHGxL6+voWi7a2C9XflqGDXXutuQ==} + + '@unocss/transformer-directives@0.58.9': + resolution: {integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw==} + + '@unocss/transformer-directives@0.62.3': + resolution: {integrity: sha512-HqHwFOA7DfxD/A1ROZIp8Dr8iZcE0z4w3VQtViWPQ89Fqmb7p2wCPGekk+8yW5PAltpynvHE4ahJEto5xjdg6w==} + + '@unocss/transformer-variant-group@0.58.9': + resolution: {integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ==} + + '@unocss/vite@0.58.9': + resolution: {integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@unocss/vite@0.62.3': + resolution: {integrity: sha512-RrqF6Go8s0BGpwRfkOiLuO+n3CUE/CXxGqb0ipbUARhmNWJlekE3YPfayqImSEnCcImpaPgtVGv6Y0u3kLGG/w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@vitejs/plugin-legacy@4.1.1': + resolution: {integrity: sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^4.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@4.6.2': + resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.2.25 + + '@volar/language-core@1.11.1': + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + + '@volar/source-map@1.11.1': + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + + '@volar/typescript@1.11.1': + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + + '@vue/babel-helper-vue-transform-on@1.2.2': + resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} + + '@vue/babel-plugin-jsx@1.2.2': + resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.2': + resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.3.11': + resolution: {integrity: sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==} + + '@vue/compiler-core@3.4.35': + resolution: {integrity: sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==} + + '@vue/compiler-dom@3.3.11': + resolution: {integrity: sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==} + + '@vue/compiler-dom@3.4.35': + resolution: {integrity: sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==} + + '@vue/compiler-sfc@3.3.11': + resolution: {integrity: sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==} + + '@vue/compiler-sfc@3.4.35': + resolution: {integrity: sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==} + + '@vue/compiler-ssr@3.3.11': + resolution: {integrity: sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==} + + '@vue/compiler-ssr@3.4.35': + resolution: {integrity: sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==} + + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity-transform@3.3.11': + resolution: {integrity: sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==} + + '@vue/reactivity@3.4.35': + resolution: {integrity: sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==} + + '@vue/runtime-core@3.4.35': + resolution: {integrity: sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==} + + '@vue/runtime-dom@3.4.35': + resolution: {integrity: sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==} + + '@vue/server-renderer@3.3.11': + resolution: {integrity: sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A==} + peerDependencies: + vue: 3.3.11 + + '@vue/server-renderer@3.4.35': + resolution: {integrity: sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==} + peerDependencies: + vue: 3.4.35 + + '@vue/shared@3.3.11': + resolution: {integrity: sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==} + + '@vue/shared@3.4.35': + resolution: {integrity: sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==} + + '@vue/tsconfig@0.5.1': + resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + 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-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.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + 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.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@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'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.7.3: + resolution: {integrity: sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==} + + 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.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + 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==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + 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'} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + 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@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + 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==} + + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + 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'} + + 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'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + 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.30001646: + resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + 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'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + + 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==} + + 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@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + 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==} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + 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'} + + 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.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + copy-text-to-clipboard@3.2.0: + resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + engines: {node: '>=12'} + + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + 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@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + 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==} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + + 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.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + 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'} + + 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'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + + 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-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + 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.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + 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==} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + 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@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 + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + 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'} + + 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.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + 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-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.3.0: + resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + 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.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + 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.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.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + 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.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + 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'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + 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'} + + 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'} + + 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'} + + 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==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + importx@0.4.3: + resolution: {integrity: sha512-x6E6OxmWq/SUaj7wDeDeSjyHP+rMUbEaqJ5fw0uEtC/FTX9ocxNMFJ+ONnpJIsRpFz3ya6qJAK4orwSKqw0BSQ==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + 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-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + 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-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + 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'} + + 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.2: + resolution: {integrity: sha512-c+PHQZakiQuMKbnhvrjZUvrK6E/AfmTOf4P+E3Y4FNVHcNMX9e/XrnbEvO+m4wS6ZjsvhHh/POQTlfy8uXFc0A==} + hasBin: true + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + 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@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + 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'} + + licia@1.41.1: + resolution: {integrity: sha512-XqObV8u1KEMdYWaNK0leRrTwhzKnLQEkhbnuUu7qGNH3zJoN7l9sfvF6PfHstSCuUOmpEP+0SBjRrk0I9uZs8g==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + 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.7: + resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.4: + resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} + 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.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + 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'} + + 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@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + 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'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + 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'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + 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==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + module-alias@2.2.3: + resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + + mutation-observer@1.0.3: + resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + 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'} + + 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} + + nwsapi@2.2.12: + resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} + + nzh@1.0.13: + resolution: {integrity: sha512-K3npIPUq155Oqal3KHZZ8fjiAiBw3NOGcdisTbxr0KQ4N1xlqgsMwzJ1a/oagcsl7f1FWnFh56MSS15fqvCF+Q==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + + 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'} + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + 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-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-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + 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.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + 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@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.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + 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.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-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.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + 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-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} + + prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + engines: {node: '>=10.13.0'} + 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.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + 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.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + 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'} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + 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==} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + 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==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + 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.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + 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 + + rollup@4.19.2: + resolution: {integrity: sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==} + 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'} + + 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.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + 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'} + + 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'} + + simple-git-hooks@2.11.1: + resolution: {integrity: sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==} + hasBin: true + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + 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'} + + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.7.5: + resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} + engines: {node: '>=10.2.0'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + 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'} + + 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.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + 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@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-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-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==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + tinyglobby@0.2.5: + resolution: {integrity: sha512-Dlqgt6h0QkoHttG53/WGADNh9QhcjCAIZMTERAVhdpmIBEejSuLI9ZmGKWzB7tweBjlk30+s/ofi4SLmBeTYhw==} + engines: {node: '>=12.0.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + tsx@4.17.0: + resolution: {integrity: sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==} + engines: {node: '>=18.0.0'} + hasBin: true + + 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'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + unconfig@0.3.13: + resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} + + unconfig@0.5.5: + resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unimport@3.9.1: + resolution: {integrity: sha512-4gtacoNH6YPx2Aa5Xfyrf8pU2RdXjWUACb/eF7bH1AcZtqs+6ijbNB0M3BPENbtVjnCcg8tw9UJ1jQGbCzKA6g==} + + 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.8.2: + resolution: {integrity: sha512-CMNav2StH1H8i2ef2zlf0z9pth7b2/ftpJYTwX0A57UiAdOFx8iLcClP6P0xyTW8q0oFwn1C8O/CG54QRhctXQ==} + peerDependencies: + '@unocss/preset-uno': '>=0.59' + unocss: '>=0.59' + peerDependenciesMeta: + '@unocss/preset-uno': + optional: true + + unocss@0.58.9: + resolution: {integrity: sha512-aqANXXP0RrtN4kSaTLn/7I6wh8o45LUdVgPzGu7Fan2DfH2+wpIs6frlnlHlOymnb+52dp6kXluQinddaUKW1A==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.9 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-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@1.12.0: + resolution: {integrity: sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==} + engines: {node: '>=14.0.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + 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'} + + vconsole@3.15.1: + resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==} + + vite@5.3.5: + resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + 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-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-json-languageservice@5.4.0: + resolution: {integrity: sha512-NCkkCr63OHVkE4lcb0xlUAaix6vE5gHQW4NrswbLEh3ArXj81lrGuFTsGEYEUXlNHdnc53vWPcjeSy/nMTrfXg==} + + vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} + + vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + 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-i18n@9.13.1: + resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-router@4.4.2: + resolution: {integrity: sha512-1qNybkn2L7QsLzaXs8nvlQmRKp8XF8DCxZys/Jr1JpQcHsKUxTKzTxCVA1G7NfBfwRIBgCJPoujOG5lHCCNUxw==} + peerDependencies: + vue: ^3.2.0 + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-tsc@1.8.27: + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + + vue@3.4.35: + resolution: {integrity: sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==} + 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@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-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + 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@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 + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + 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.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.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-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==} + + yaml-language-server@1.15.0: + resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} + hasBin: true + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.0 + tinyexec: 0.3.0 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.25.2': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.0': + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.6 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-wrap-function': 7.25.0 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helper-wrap-function@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.25.3': + dependencies: + '@babel/types': 7.25.2 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 + + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/preset-env@7.25.3(@babel/core@7.25.2)': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.37.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.25.2 + esutils: 2.0.3 + + '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.25.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/traverse@7.25.3': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@dcloudio/types@3.4.12': {} + + '@dcloudio/uni-app-plus@3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-app-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-app-vue': 3.0.0-alpha-4000020240111001 + debug: 4.3.6 + fs-extra: 10.1.0 + licia: 1.41.1 + postcss-selector-parser: 6.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-nvue-styler': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-core': 3.3.11 + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-sfc': 3.3.11 + '@vue/shared': 3.3.11 + debug: 4.3.6 + es-module-lexer: 1.5.4 + estree-walker: 2.0.2 + fs-extra: 10.1.0 + magic-string: 0.30.11 + picocolors: 1.0.1 + source-map-js: 1.2.0 + unplugin-auto-import: 0.16.7(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(rollup@4.19.2) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-nvue-styler': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@rollup/pluginutils': 4.2.1 + '@vitejs/plugin-vue': 4.6.2(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-sfc': 3.3.11 + debug: 4.3.6 + fs-extra: 10.1.0 + picocolors: 1.0.1 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-alpha-4000020240111001': {} + + '@dcloudio/uni-app@3.0.0-alpha-4000020240111001(@dcloudio/types@3.4.12)(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/types': 3.4.12 + '@dcloudio/uni-cloud': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-components': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-push': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-stat': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-alpha-4000020240111001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.3.6 + 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.41.1 + merge: 2.1.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-core': 3.3.11 + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-sfc': 3.3.11 + '@vue/server-renderer': 3.3.11(vue@3.4.35(typescript@5.5.4)) + '@vue/shared': 3.3.11 + autoprefixer: 10.4.19(postcss@8.4.40) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.3.6 + es-module-lexer: 1.5.4 + esbuild: 0.17.19 + estree-walker: 2.0.2 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.11 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.2.3 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.0.1 + postcss-import: 14.1.0(postcss@8.4.40) + postcss-load-config: 3.1.4(postcss@8.4.40) + postcss-modules: 4.3.1(postcss@8.4.40) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + tapable: 2.2.1 + xregexp: 3.1.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + fast-glob: 3.3.2 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-h5': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-sfc': 3.3.11 + '@vue/server-renderer': 3.3.11(vue@3.4.35(typescript@5.5.4)) + '@vue/shared': 3.3.11 + debug: 4.3.6 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.2.3 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-alpha-4000020240111001(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/server-renderer': 3.3.11(vue@3.4.35(typescript@5.5.4)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-h5-vue': 3.0.0-alpha-4000020240111001(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/server-renderer': 3.3.11(vue@3.4.35(typescript@5.5.4)) + '@vue/shared': 3.3.11 + debug: 4.3.6 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.1 + safe-area-insets: 1.4.1 + vue-router: 4.4.2(vue@3.4.35(typescript@5.5.4)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-alpha-4000020240111001': {} + + '@dcloudio/uni-mp-alipay@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-baidu@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-mp-weixin': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + jimp: 0.10.3 + licia: 1.41.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/compiler-dom': 3.3.11 + '@vue/shared': 3.3.11 + estree-walker: 2.0.2 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-mp-weixin': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - bufferutil + - debug + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-lark@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-toutiao': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-qq@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + fs-extra: 10.1.0 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-toutiao@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-i18n': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/compiler-sfc': 3.3.11 + '@vue/shared': 3.3.11 + debug: 4.3.6 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-alpha-4000020240111001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + + '@dcloudio/uni-mp-weixin@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + jimp: 0.10.3 + licia: 1.41.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-xhs@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-compiler': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-alpha-4000020240111001': + dependencies: + '@vue/shared': 3.3.11 + parse-css-font: 4.0.0 + postcss: 8.4.40 + + '@dcloudio/uni-push@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vite': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-mp-vue': 3.0.0-alpha-4000020240111001 + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@vue/shared': 3.3.11 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-alpha-4000020240111001': + dependencies: + '@vue/shared': 3.3.11 + + '@dcloudio/uni-stacktracey@3.0.0-alpha-4000020240111001': {} + + '@dcloudio/uni-stat@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + debug: 4.3.6 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + - vue + + '@dcloudio/uni-vue-devtools@3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + detect-port: 1.6.1 + express: 4.19.2 + open: 8.4.2 + socket.io: 4.7.5 + transitivePeerDependencies: + - bufferutil + - postcss + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-alpha-4000020240111001(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@dcloudio/uni-cli-shared': 3.0.0-alpha-4000020240111001(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@dcloudio/uni-shared': 3.0.0-alpha-4000020240111001 + '@rollup/pluginutils': 4.2.1 + '@vitejs/plugin-legacy': 4.1.1(terser@5.31.3)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + '@vitejs/plugin-vue': 4.6.2(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4)) + '@vue/compiler-core': 3.3.11 + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-sfc': 3.3.11 + '@vue/shared': 3.3.11 + cac: 6.7.9 + debug: 4.3.6 + estree-walker: 2.0.2 + express: 4.19.2 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.11 + picocolors: 1.0.1 + terser: 5.31.3 + unplugin-auto-import: 0.16.7(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(rollup@4.19.2) + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@iconify-json/carbon@1.1.36': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.32': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.6 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 + 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/core-base@9.13.1': + dependencies: + '@intlify/message-compiler': 9.13.1 + '@intlify/shared': 9.13.1 + + '@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-compiler@9.13.1': + dependencies: + '@intlify/shared': 9.13.1 + source-map-js: 1.2.0 + + '@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/shared@9.13.1': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@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.14.14 + 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.14.14 + 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.7 + 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.14.14 + 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.14.14 + 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.14.14 + 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.25.2 + '@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.7 + pirates: 4.0.6 + 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.14.14 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.37.1 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.37.1 + 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.25.0 + '@jimp/core': 0.10.3 + core-js: 3.37.1 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + 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.25.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.37.1 + + '@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.25.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.37.1 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@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.25.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.37.1 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@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.25.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.37.1 + load-bmfont: 1.4.2 + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + + '@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.25.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.37.1 + + '@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.25.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.37.1 + + '@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.25.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.37.1 + + '@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.25.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.37.1 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.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.37.1 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.37.1 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.0 + '@jimp/custom': 0.10.3 + core-js: 3.37.1 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.25.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.37.1 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.25.0 + core-js: 3.37.1 + 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/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 + + '@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 + + '@polka/url@1.0.0-next.25': {} + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.0(rollup@4.19.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.19.2 + + '@rollup/rollup-android-arm-eabi@4.19.2': + optional: true + + '@rollup/rollup-android-arm64@4.19.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.19.2': + optional: true + + '@rollup/rollup-darwin-x64@4.19.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.19.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.19.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.19.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.19.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.19.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.19.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.19.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.19.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.19.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.19.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.19.2': + optional: true + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@socket.io/component-emitter@3.1.2': {} + + '@tootallnate/once@1.1.2': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.2 + + '@types/cookie@0.4.1': {} + + '@types/cors@2.8.17': + dependencies: + '@types/node': 20.14.14 + + '@types/estree@1.0.5': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 20.14.14 + + '@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/node@20.14.14': + dependencies: + undici-types: 5.26.5 + + '@types/prettier@2.7.3': {} + + '@types/stack-utils@2.0.3': {} + + '@types/web-bluetooth@0.0.16': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@uni-helper/axios-adapter@1.5.2(axios@1.7.3)': + dependencies: + axios: 1.7.3 + local-pkg: 0.4.3 + unplugin: 1.12.0 + + '@uni-helper/localforage-adapter@1.0.2': {} + + '@uni-helper/pages-json-schema@0.2.26': {} + + '@uni-helper/uni-app-types@0.5.13(typescript@5.5.4)': + dependencies: + '@dcloudio/types': 3.4.12 + typescript: 5.5.4 + vue3: vue@3.4.35(typescript@5.5.4) + + '@uni-helper/uni-env@0.1.4': + dependencies: + std-env: 3.7.0 + + '@uni-helper/uni-use@0.19.12(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(postcss@8.4.40)(typescript@5.5.4)(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@dcloudio/types': 3.4.12 + '@dcloudio/uni-app': 3.0.0-alpha-4000020240111001(@dcloudio/types@3.4.12)(postcss@8.4.40)(vue@3.4.35(typescript@5.5.4)) + '@vueuse/core': 9.13.0(vue@3.4.35(typescript@5.5.4)) + vue: 3.4.35(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - postcss + - supports-color + - ts-node + + '@uni-helper/unocss-preset-uni@0.2.9(@unocss/preset-mini@0.62.3)(@unocss/rule-utils@0.62.3)(@unocss/vite@0.62.3(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))(unocss-applet@0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))))(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))': + dependencies: + '@uni-helper/uni-env': 0.1.4 + '@unocss/rule-utils': 0.62.3 + unocss: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + unocss-applet: 0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + optionalDependencies: + '@unocss/preset-mini': 0.62.3 + '@unocss/vite': 0.62.3(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + + '@uni-helper/volar-service-uni-pages@0.2.26': + dependencies: + '@uni-helper/pages-json-schema': 0.2.26 + vscode-json-languageservice: 5.4.0 + vscode-languageserver-textdocument: 1.0.12 + yaml-language-server: 1.15.0 + + '@uni-ku/root@0.0.1': + dependencies: + '@vue/compiler-sfc': 3.4.35 + jsonc-parser: 3.3.1 + + '@unocss-applet/preset-applet@0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))': + dependencies: + unocss: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + optionalDependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/preset-uno': 0.62.3 + + '@unocss-applet/preset-rem-rpx@0.8.2(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))': + dependencies: + unocss: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + + '@unocss-applet/transformer-attributify@0.8.2(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)))': + dependencies: + unocss: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + optionalDependencies: + magic-string: 0.30.11 + + '@unocss/astro@0.58.9(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + optionalDependencies: + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.58.9(rollup@4.19.2)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.19.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/preset-uno': 0.58.9 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.11 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + unconfig: 0.3.13 + + '@unocss/config@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + unconfig: 0.5.5 + transitivePeerDependencies: + - supports-color + optional: true + + '@unocss/core@0.58.9': {} + + '@unocss/core@0.62.3': {} + + '@unocss/extractor-arbitrary-variants@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/extractor-arbitrary-variants@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + optional: true + + '@unocss/inspector@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/inspector@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/rule-utils': 0.62.3 + gzip-size: 6.0.0 + sirv: 2.0.4 + optional: true + + '@unocss/postcss@0.58.9(postcss@8.4.40)': + dependencies: + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.11 + postcss: 8.4.40 + + '@unocss/preset-attributify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-icons@0.58.9': + dependencies: + '@iconify/utils': 2.1.32 + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-mini@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/extractor-arbitrary-variants': 0.62.3 + '@unocss/rule-utils': 0.62.3 + optional: true + + '@unocss/preset-tagify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-typography@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + + '@unocss/preset-uno@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-uno@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/preset-wind': 0.62.3 + '@unocss/rule-utils': 0.62.3 + optional: true + + '@unocss/preset-web-fonts@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + + '@unocss/preset-wind@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-wind@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/rule-utils': 0.62.3 + optional: true + + '@unocss/reset@0.58.9': {} + + '@unocss/rule-utils@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + magic-string: 0.30.11 + + '@unocss/rule-utils@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + magic-string: 0.30.11 + + '@unocss/scope@0.58.9': {} + + '@unocss/scope@0.62.3': + optional: true + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@unocss/core': 0.58.9 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-attributify-jsx@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-compile-class@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-directives@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + + '@unocss/transformer-directives@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/rule-utils': 0.62.3 + css-tree: 2.3.1 + optional: true + + '@unocss/transformer-variant-group@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/vite@0.58.9(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.19.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/inspector': 0.58.9 + '@unocss/scope': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.11 + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - rollup + + '@unocss/vite@0.62.3(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.19.2) + '@unocss/config': 0.62.3 + '@unocss/core': 0.62.3 + '@unocss/inspector': 0.62.3 + '@unocss/scope': 0.62.3 + '@unocss/transformer-directives': 0.62.3 + chokidar: 3.6.0 + magic-string: 0.30.11 + tinyglobby: 0.2.5 + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - rollup + - supports-color + optional: true + + '@vitejs/plugin-legacy@4.1.1(terser@5.31.3)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))': + dependencies: + '@babel/core': 7.25.2 + '@babel/preset-env': 7.25.3(@babel/core@7.25.2) + browserslist: 4.23.3 + core-js: 3.37.1 + magic-string: 0.30.11 + regenerator-runtime: 0.13.11 + systemjs: 6.15.1 + terser: 5.31.3 + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + vue: 3.4.35(typescript@5.5.4) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@4.6.2(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))(vue@3.4.35(typescript@5.5.4))': + dependencies: + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + vue: 3.4.35(typescript@5.5.4) + + '@volar/language-core@1.11.1': + dependencies: + '@volar/source-map': 1.11.1 + + '@volar/source-map@1.11.1': + dependencies: + muggle-string: 0.3.1 + + '@volar/typescript@1.11.1': + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + + '@vscode/l10n@0.0.18': {} + + '@vue/babel-helper-vue-transform-on@1.2.2': {} + + '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.2)': + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.25.2) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.25.2)': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.25.3 + '@vue/compiler-sfc': 3.4.35 + + '@vue/compiler-core@3.3.11': + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.3.11 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-core@3.4.35': + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.35 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.3.11': + dependencies: + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + + '@vue/compiler-dom@3.4.35': + dependencies: + '@vue/compiler-core': 3.4.35 + '@vue/shared': 3.4.35 + + '@vue/compiler-sfc@3.3.11': + dependencies: + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.3.11 + '@vue/compiler-dom': 3.3.11 + '@vue/compiler-ssr': 3.3.11 + '@vue/reactivity-transform': 3.3.11 + '@vue/shared': 3.3.11 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.40 + source-map-js: 1.2.0 + + '@vue/compiler-sfc@3.4.35': + dependencies: + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.4.35 + '@vue/compiler-dom': 3.4.35 + '@vue/compiler-ssr': 3.4.35 + '@vue/shared': 3.4.35 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.40 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.3.11': + dependencies: + '@vue/compiler-dom': 3.3.11 + '@vue/shared': 3.3.11 + + '@vue/compiler-ssr@3.4.35': + dependencies: + '@vue/compiler-dom': 3.4.35 + '@vue/shared': 3.4.35 + + '@vue/devtools-api@6.6.3': {} + + '@vue/language-core@1.8.27(typescript@5.5.4)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.35 + '@vue/shared': 3.4.35 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.5.4 + + '@vue/reactivity-transform@3.3.11': + dependencies: + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.3.11 + '@vue/shared': 3.3.11 + estree-walker: 2.0.2 + magic-string: 0.30.11 + + '@vue/reactivity@3.4.35': + dependencies: + '@vue/shared': 3.4.35 + + '@vue/runtime-core@3.4.35': + dependencies: + '@vue/reactivity': 3.4.35 + '@vue/shared': 3.4.35 + + '@vue/runtime-dom@3.4.35': + dependencies: + '@vue/reactivity': 3.4.35 + '@vue/runtime-core': 3.4.35 + '@vue/shared': 3.4.35 + csstype: 3.1.3 + + '@vue/server-renderer@3.3.11(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@vue/compiler-ssr': 3.3.11 + '@vue/shared': 3.3.11 + vue: 3.4.35(typescript@5.5.4) + + '@vue/server-renderer@3.4.35(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@vue/compiler-ssr': 3.4.35 + '@vue/shared': 3.4.35 + vue: 3.4.35(typescript@5.5.4) + + '@vue/shared@3.3.11': {} + + '@vue/shared@3.4.35': {} + + '@vue/tsconfig@0.5.1': {} + + '@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.4.35(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.4.35(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.4.35(typescript@5.5.4))': + dependencies: + vue-demi: 0.14.10(vue@3.4.35(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + abab@2.0.6: {} + + 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-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.12.1: {} + + address@1.2.2: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + 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.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-base@1.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-flatten@1.1.1: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.19(postcss@8.4.40): + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001646 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + + axios@1.7.3: + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-jest@27.5.1(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.25.2) + 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.24.8 + '@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.25.0 + '@babel/types': 7.25.2 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.37.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + + babel-preset-jest@27.5.1(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + base64url@3.0.1: {} + + binary-extensions@2.3.0: {} + + bmp-js@0.1.0: {} + + body-parser@1.20.2: + 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.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + 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@4.23.3: + dependencies: + caniuse-lite: 1.0.30001646 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + 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 + + bundle-require@5.0.0(esbuild@0.23.1): + dependencies: + esbuild: 0.23.1 + load-tsconfig: 0.2.5 + optional: true + + bytes@3.1.2: {} + + cac@6.7.14: {} + + cac@6.7.9: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001646: {} + + centra@2.7.0: + dependencies: + follow-redirects: 1.15.6 + transitivePeerDependencies: + - debug + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + char-regex@1.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 + + ci-info@3.9.0: {} + + cjs-module-lexer@1.3.1: {} + + 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 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@2.20.3: {} + + compare-versions@3.6.0: {} + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.7: {} + + consola@3.2.3: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.4.2: {} + + cookie@0.6.0: {} + + copy-text-to-clipboard@3.2.0: {} + + core-js-compat@3.37.1: + dependencies: + browserslist: 4.23.3 + + core-js@3.37.1: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + 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@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + + 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: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + dayjs@1.11.12: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + decimal.js@10.4.3: {} + + dedent@0.7.0: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + destr@2.0.3: {} + + destroy@1.2.0: {} + + detect-newline@3.1.0: {} + + detect-port@1.6.1: + dependencies: + address: 1.2.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + diff-sequences@27.5.1: {} + + dom-walk@0.1.2: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + duplexer@0.1.2: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.4: {} + + emittery@0.8.1: {} + + emoji-regex@10.3.0: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + engine.io-parser@5.2.3: {} + + engine.io@6.5.5: + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 20.14.14 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.6 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + entities@4.5.0: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.5.4: {} + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + optional: true + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.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 + + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + 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.3 + 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.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + 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 + + 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.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.0.1: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.3.0(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + optional: true + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + 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@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.6: {} + + form-data@3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + 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.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.2.0: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-tsconfig@4.7.6: + dependencies: + resolve-pkg-maps: 1.0.0 + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@11.12.0: {} + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + 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: {} + + 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.3.6 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + 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.40): + dependencies: + postcss: 8.4.40 + + ieee754@1.2.1: {} + + immutable@4.3.7: {} + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + importx@0.4.3: + dependencies: + bundle-require: 5.0.0(esbuild@0.23.1) + debug: 4.3.6 + esbuild: 0.23.1 + jiti: 2.0.0-beta.2 + jiti-v1: jiti@1.21.6 + pathe: 1.1.2 + pkg-types: 1.1.3 + tsx: 4.17.0 + transitivePeerDependencies: + - supports-color + optional: true + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + invert-kv@3.0.1: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.15.0: + 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.2.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-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-typedarray@1.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 + '@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.3.6 + 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 + + 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.14.14 + 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.25.2 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.25.2) + 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.7 + 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.14.14 + 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.14.14 + 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.14.14 + 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.7 + 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.14.14 + 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.24.7 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + 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.14.14 + + 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.8 + 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.14.14 + 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.3.1 + 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.14.14 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.6 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + 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.6.3 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.14.14 + 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.14.14 + 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.14.14 + 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.25.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.37.1 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jiti@1.21.6: {} + + jiti@2.0.0-beta.2: + optional: true + + jpeg-js@0.3.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.12.1 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.1 + 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.12 + 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@0.5.0: {} + + jsesc@2.5.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + kleur@3.0.3: {} + + kolorist@1.8.0: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + licia@1.41.1: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + lint-staged@15.2.7: + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.6 + execa: 8.0.1 + lilconfig: 3.1.2 + listr2: 8.2.4 + micromatch: 4.0.7 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.4.5 + transitivePeerDependencies: + - supports-color + + listr2@8.2.4: + 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: + optional: true + + loader-utils@3.3.1: {} + + local-pkg@0.4.3: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.3 + + localstorage-polyfill@1.0.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + 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 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + mdn-data@2.0.30: {} + + media-typer@0.3.0: {} + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromatch@4.0.7: + 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: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + + module-alias@2.2.3: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + muggle-string@0.3.1: {} + + mutation-observer@1.0.3: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + node-fetch-native@1.6.4: {} + + node-int64@0.4.0: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nwsapi@2.2.12: {} + + nzh@1.0.13: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + ofetch@1.3.4: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + + 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 + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + package-manager-detector@0.2.0: {} + + pako@1.0.11: {} + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-headers@2.0.5: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@0.1.7: {} + + pathe@1.1.2: {} + + perfect-debounce@1.0.0: {} + + phin@2.9.3: {} + + phin@3.7.1: + dependencies: + centra: 2.7.0 + transitivePeerDependencies: + - debug + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: + optional: true + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia@2.0.36(typescript@5.5.4)(vue@3.4.35(typescript@5.5.4)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.35(typescript@5.5.4) + vue-demi: 0.14.10(vue@3.4.35(typescript@5.5.4)) + optionalDependencies: + typescript: 5.5.4 + + pirates@4.0.6: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.1.3: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + pngjs@3.4.0: {} + + postcss-import@14.1.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-load-config@3.1.4(postcss@8.4.40): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.40 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.40): + dependencies: + icss-utils: 5.1.0(postcss@8.4.40) + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 + + postcss-modules-values@4.0.0(postcss@8.4.40): + dependencies: + icss-utils: 5.1.0(postcss@8.4.40) + postcss: 8.4.40 + + postcss-modules@4.3.1(postcss@8.4.40): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.40 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.40) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.40) + postcss-modules-scope: 3.2.0(postcss@8.4.40) + postcss-modules-values: 4.0.0(postcss@8.4.40) + string-hash: 1.1.3 + + postcss-selector-parser@6.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.40: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + prettier@2.8.7: + optional: true + + 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.9.0: {} + + punycode@2.3.1: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + 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 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerate-unicode-properties@10.1.1: + 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.25.0 + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + + request-light@0.5.8: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: + optional: true + + resolve.exports@1.1.1: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.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 + + rollup@4.19.2: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.19.2 + '@rollup/rollup-android-arm64': 4.19.2 + '@rollup/rollup-darwin-arm64': 4.19.2 + '@rollup/rollup-darwin-x64': 4.19.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.2 + '@rollup/rollup-linux-arm-musleabihf': 4.19.2 + '@rollup/rollup-linux-arm64-gnu': 4.19.2 + '@rollup/rollup-linux-arm64-musl': 4.19.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.2 + '@rollup/rollup-linux-riscv64-gnu': 4.19.2 + '@rollup/rollup-linux-s390x-gnu': 4.19.2 + '@rollup/rollup-linux-x64-gnu': 4.19.2 + '@rollup/rollup-linux-x64-musl': 4.19.2 + '@rollup/rollup-win32-arm64-msvc': 4.19.2 + '@rollup/rollup-win32-ia32-msvc': 4.19.2 + '@rollup/rollup-win32-x64-msvc': 4.19.2 + 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.0 + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + send@0.18.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.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.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.2.4 + gopd: 1.0.1 + 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: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-git-hooks@2.11.1: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + 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 + + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.6 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + socket.io@4.7.5: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.6 + engine.io: 6.5.5 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + source-map-js@1.2.0: {} + + 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: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + std-env@3.7.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@7.2.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.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.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + 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: {} + + symbol-tree@3.2.4: {} + + systemjs@6.15.1: {} + + tapable@2.2.1: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.31.3: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + 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 + + throat@6.0.2: {} + + timm@1.7.1: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.0: {} + + tinyglobby@0.2.5: + dependencies: + fdir: 6.3.0(picomatch@4.0.2) + picomatch: 4.0.2 + optional: true + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + totalist@3.0.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + tsx@4.17.0: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.7.6 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + 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 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.5.4: {} + + ufo@1.5.4: {} + + unconfig@0.3.13: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + jiti: 1.21.6 + + unconfig@0.5.5: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + importx: 0.4.3 + transitivePeerDependencies: + - supports-color + optional: true + + undici-types@5.26.5: {} + + unicode-canonical-property-names-ecmascript@2.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.1.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unimport@3.9.1(rollup@4.19.2): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.19.2) + acorn: 8.12.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.11 + mlly: 1.7.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + scule: 1.3.0 + strip-literal: 2.1.0 + unplugin: 1.12.0 + transitivePeerDependencies: + - rollup + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unocss-applet@0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))): + dependencies: + '@unocss-applet/preset-applet': 0.8.2(@unocss/core@0.62.3)(@unocss/preset-mini@0.62.3)(@unocss/preset-uno@0.62.3)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + '@unocss-applet/preset-rem-rpx': 0.8.2(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + '@unocss-applet/transformer-attributify': 0.8.2(magic-string@0.30.11)(unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3))) + unocss: 0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + optionalDependencies: + '@unocss/preset-uno': 0.62.3 + transitivePeerDependencies: + - '@unocss/core' + - '@unocss/preset-mini' + - magic-string + + unocss@0.58.9(postcss@8.4.40)(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)): + dependencies: + '@unocss/astro': 0.58.9(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + '@unocss/cli': 0.58.9(rollup@4.19.2) + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/postcss': 0.58.9(postcss@8.4.40) + '@unocss/preset-attributify': 0.58.9 + '@unocss/preset-icons': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-tagify': 0.58.9 + '@unocss/preset-typography': 0.58.9 + '@unocss/preset-uno': 0.58.9 + '@unocss/preset-web-fonts': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/transformer-attributify-jsx': 0.58.9 + '@unocss/transformer-attributify-jsx-babel': 0.58.9 + '@unocss/transformer-compile-class': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + '@unocss/transformer-variant-group': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.19.2)(vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3)) + optionalDependencies: + vite: 5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unpipe@1.0.0: {} + + unplugin-auto-import@0.16.7(@vueuse/core@9.13.0(vue@3.4.35(typescript@5.5.4)))(rollup@4.19.2): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.19.2) + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.11 + minimatch: 9.0.5 + unimport: 3.9.1(rollup@4.19.2) + unplugin: 1.12.0 + optionalDependencies: + '@vueuse/core': 9.13.0(vue@3.4.35(typescript@5.5.4)) + transitivePeerDependencies: + - rollup + + unplugin@1.12.0: + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.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: {} + + vconsole@3.15.1: + dependencies: + '@babel/runtime': 7.25.0 + copy-text-to-clipboard: 3.2.0 + core-js: 3.37.1 + mutation-observer: 1.0.3 + + vite@5.3.5(@types/node@20.14.14)(sass@1.77.8)(terser@5.31.3): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.40 + rollup: 4.19.2 + optionalDependencies: + '@types/node': 20.14.14 + fsevents: 2.3.3 + sass: 1.77.8 + terser: 5.31.3 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + + vscode-json-languageservice@5.4.0: + dependencies: + '@vscode/l10n': 0.0.18 + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + + vscode-jsonrpc@6.0.0: {} + + vscode-languageserver-protocol@3.16.0: + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.16.0: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@7.0.0: + dependencies: + vscode-languageserver-protocol: 3.16.0 + + vscode-nls@5.2.0: {} + + vscode-uri@3.0.8: {} + + vue-demi@0.14.10(vue@3.4.35(typescript@5.5.4)): + dependencies: + vue: 3.4.35(typescript@5.5.4) + + vue-i18n@9.13.1(vue@3.4.35(typescript@5.5.4)): + dependencies: + '@intlify/core-base': 9.13.1 + '@intlify/shared': 9.13.1 + '@vue/devtools-api': 6.6.3 + vue: 3.4.35(typescript@5.5.4) + + vue-router@4.4.2(vue@3.4.35(typescript@5.5.4)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.35(typescript@5.5.4) + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@5.5.4): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.5.4) + semver: 7.6.3 + typescript: 5.5.4 + + vue@3.4.35(typescript@5.5.4): + dependencies: + '@vue/compiler-dom': 3.4.35 + '@vue/compiler-sfc': 3.4.35 + '@vue/runtime-dom': 3.4.35 + '@vue/server-renderer': 3.4.35(vue@3.4.35(typescript@5.5.4)) + '@vue/shared': 3.4.35 + optionalDependencies: + typescript: 5.5.4 + + 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@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + 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 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + 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.17.1: {} + + 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-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: {} + + yaml-language-server@1.15.0: + dependencies: + ajv: 8.17.1 + lodash: 4.17.21 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + yaml: 2.2.2 + optionalDependencies: + prettier: 2.8.7 + + yaml@1.10.2: {} + + yaml@2.2.2: {} + + yaml@2.4.5: {} + + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + 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 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..6718107 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,30 @@ + + diff --git a/src/api/login/index.js b/src/api/login/index.js new file mode 100644 index 0000000..98fca95 --- /dev/null +++ b/src/api/login/index.js @@ -0,0 +1,15 @@ +import request from '@/service/index.js' + export const login = (data) => { + return request({ + url: '/oa/login', + method: 'POST', + data, + }) +} +export const send = (data) => { + return request({ + url: '/oa/send', + method: 'POST', + data, + }) +} diff --git a/src/components/avatar-module/index.vue b/src/components/avatar-module/index.vue new file mode 100644 index 0000000..35c320a --- /dev/null +++ b/src/components/avatar-module/index.vue @@ -0,0 +1,29 @@ + + diff --git a/src/components/page-animation/index.css b/src/components/page-animation/index.css new file mode 100644 index 0000000..95f748a --- /dev/null +++ b/src/components/page-animation/index.css @@ -0,0 +1,28 @@ +/* #ifdef H5 */ +uni-page { + opacity: 0; +} + +uni-page.animation-before { + /* 在页面上使用 transform 会导致页面内的 fixed 定位渲染为 absolute,需要在动画完成后移除 */ + transform: translateY(20px); +} + +uni-page.animation-leave { + transition: all .3s ease; +} + +uni-page.animation-enter { + transition: all .3s ease; +} + +uni-page.animation-show { + opacity: 1; +} + +uni-page.animation-after { + /* 在页面上使用 transform 会导致页面内的 fixed 定位渲染为 absolute,需要在动画完成后移除 */ + transform: translateY(0); +} + +/* #endif */ diff --git a/src/components/page-animation/index.vue b/src/components/page-animation/index.vue new file mode 100644 index 0000000..be5924f --- /dev/null +++ b/src/components/page-animation/index.vue @@ -0,0 +1,37 @@ + diff --git a/src/components/x-calendar/index.vue b/src/components/x-calendar/index.vue new file mode 100644 index 0000000..61d19c2 --- /dev/null +++ b/src/components/x-calendar/index.vue @@ -0,0 +1,155 @@ + + + + diff --git a/src/components/x-captcha/index.scss b/src/components/x-captcha/index.scss new file mode 100644 index 0000000..133e31d --- /dev/null +++ b/src/components/x-captcha/index.scss @@ -0,0 +1,49 @@ +.ayi-captcha { + position: relative; + width: 100%; + overflow: hidden; + &__input { + position: absolute; + left: -100%; + height: 100%; + width: 200%; + opacity: 0; + } + &__code { + display: flex; + width: 100%; + } + &__item { + display: flex; + justify-content: center; + align-items: center; + flex: 1; + border-radius: 10rpx; + } + &__value { + font-size: 40rpx; + font-weight: 500; + } + &__cursor { + height: 40rpx; + width: 4rpx; + background-color: #000; + animation: flash 1s infinite ease; + } +/* &.is-border { + .ayi-captcha__item { + border: 2rpx solid $uni-color-primary; + } + }*/ + @keyframes flash { + 0% { + opacity: 0.2; + } + 50% { + opacity: 0.5; + } + 100% { + opacity: 0.2; + } + } +} diff --git a/src/components/x-captcha/index.vue b/src/components/x-captcha/index.vue new file mode 100644 index 0000000..257caf1 --- /dev/null +++ b/src/components/x-captcha/index.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/components/x-captcha/tools.js b/src/components/x-captcha/tools.js new file mode 100644 index 0000000..a8da236 --- /dev/null +++ b/src/components/x-captcha/tools.js @@ -0,0 +1,25 @@ +function getTag(value) { + if (value == null) { + return value === undefined ? "[object Undefined]" : "[object Null]" + } + return toString.call(value) +} + +function isObjectLike(value) { + return typeof value === "object" && value !== null +} + +export function isNumber(value) { + return typeof value === "number" || (isObjectLike(value) && getTag(value) == "[object Number]") +} + +export function isBoolean(value) { + return typeof value === "boolean" +} + +export function isArray(value) { + return Array.isArray(value) +} +export function setRpx(val ) { + return isArray(val) ? val.map(setRpx).join(" ") : isNumber(val) ? `${val}rpx` : val +} diff --git a/src/components/x-confirm/index.vue b/src/components/x-confirm/index.vue new file mode 100644 index 0000000..528335d --- /dev/null +++ b/src/components/x-confirm/index.vue @@ -0,0 +1,50 @@ + + diff --git a/src/components/x-confirm/useConfirm.js b/src/components/x-confirm/useConfirm.js new file mode 100644 index 0000000..88f2593 --- /dev/null +++ b/src/components/x-confirm/useConfirm.js @@ -0,0 +1,19 @@ +import { createApp } from 'vue'; +import confirmPopup from '@/components/x-confirm/index.vue' + +export default function useConfirm() { + function showConfirm(obj) { + const instance = createApp(confirmPopup,{ + //监听消息关闭事件 + onAfterLeave:()=>{ + instance.unmount(); + document.body.removeChild(mountNode); + } + }); + const mountNode = document.createElement('div'); + document.body.appendChild(mountNode); + const vm = instance.mount(mountNode); + vm.showConfirm(obj) + } + return { showConfirm }; +} diff --git a/src/components/x-date-select/index.vue b/src/components/x-date-select/index.vue new file mode 100644 index 0000000..b47e8d4 --- /dev/null +++ b/src/components/x-date-select/index.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/components/x-date-select/pickerService.js b/src/components/x-date-select/pickerService.js new file mode 100644 index 0000000..3a3827e --- /dev/null +++ b/src/components/x-date-select/pickerService.js @@ -0,0 +1,55 @@ +import { createApp, h, ref } from 'vue'; +import xDateSelect from './index.vue'; +import dayjs from "dayjs"; +//根据传入的日期格式和日期 生成对应的时间戳 +function generateTimestamp(format, date) { + // 直接使用传入的 format 字符串作为解析格式 + const dateStr = dayjs(date, format); + + if (!dateStr.isValid()) { + throw new Error('Invalid date'); + } + + return dateStr.valueOf(); // 返回时间戳 +} +let datePickerApp = null; +let container=null +export function openDatePicker(options = {}) { + // 如果已经存在一个日期选择器实例,先销毁它 + if (datePickerApp) { + datePickerApp.unmount(); + datePickerApp = null; // 防止重复销毁 + } + if (container){ + //清除dom + document.body.removeChild(container); + } + + // 创建日期选择器实例 + datePickerApp = createApp({ + setup() { + const showdate = ref(true) + // 处理确认事件 + const handleConfirm = (value) => { + options?.onConfirm?.(dayjs(value).format(options.format)); // 使用可选链调用 + showdate.value = false; // 关闭日期选择器 + }; + return () => h(xDateSelect, { + ...options, + defaultValue: generateTimestamp(options.format, options.value), + 'onUpdate:show': (newValue) => { + showdate.value = newValue; + if (!newValue) { + datePickerApp?.unmount(); // 确保不会重复销毁 + datePickerApp = null; + } + }, + onConfirm: handleConfirm, + show: showdate.value, + }); + } + }) + container = document.createElement('div'); + document.body.appendChild(container); + datePickerApp.mount(container); +} diff --git a/src/components/x-loaderror/index.vue b/src/components/x-loaderror/index.vue new file mode 100644 index 0000000..f438ab8 --- /dev/null +++ b/src/components/x-loaderror/index.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/components/x-loading/index.js b/src/components/x-loading/index.js new file mode 100644 index 0000000..cfb5c01 --- /dev/null +++ b/src/components/x-loading/index.js @@ -0,0 +1,39 @@ +import { createVNode, render } from 'vue' +import Loading from './index.vue' + +const vnode = createVNode(Loading) + +export const vLoading = { + mounted(el, binding) { + render(vnode, el) + formatterClass(el, binding) + }, + updated(el, binding) { + if (binding.value) { + vnode?.component?.exposed.show() + } else { + vnode?.component?.exposed.hide() + } + formatterClass(el, binding) + }, + unmounted() { + vnode?.component?.exposed.hide() + }, +} + +function formatterClass(el, binding) { + const classStr = el.className + const hasTargetClass = classStr.includes('loading-parent') + + if (binding.value) { + if (!hasTargetClass) { + el.classList.add('loading-parent') + el.style.position = 'relative' + } + } else { + if (hasTargetClass) { + el.classList.remove('loading-parent') + el.style.position = '' + } + } +} diff --git a/src/components/x-loading/index.vue b/src/components/x-loading/index.vue new file mode 100644 index 0000000..bc601ab --- /dev/null +++ b/src/components/x-loading/index.vue @@ -0,0 +1,57 @@ + + + + diff --git a/src/components/x-message/index.vue b/src/components/x-message/index.vue new file mode 100644 index 0000000..59a055c --- /dev/null +++ b/src/components/x-message/index.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/components/x-message/message/index.vue b/src/components/x-message/message/index.vue new file mode 100644 index 0000000..b40fa58 --- /dev/null +++ b/src/components/x-message/message/index.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/components/x-message/useMessagePopup.js b/src/components/x-message/useMessagePopup.js new file mode 100644 index 0000000..1904379 --- /dev/null +++ b/src/components/x-message/useMessagePopup.js @@ -0,0 +1,19 @@ +import { createApp } from 'vue'; +import MessagePopup from '@/components/x-message/index.vue' + +export default function useMessagePopup() { + function showMessage(obj) { + const messageInstance = createApp(MessagePopup,{ + //监听消息关闭事件 + onAfterLeave:()=>{ + messageInstance.unmount(); + document.body.removeChild(mountNode); + } + }); + const mountNode = document.createElement('div'); + document.body.appendChild(mountNode); + const vm = messageInstance.mount(mountNode); + vm.showMessage(obj) + } + return { showMessage }; +} diff --git a/src/components/x-navbar/index.vue b/src/components/x-navbar/index.vue new file mode 100644 index 0000000..4a17487 --- /dev/null +++ b/src/components/x-navbar/index.vue @@ -0,0 +1,11 @@ + + + + diff --git a/src/components/x-paging/index.vue b/src/components/x-paging/index.vue new file mode 100644 index 0000000..8102b59 --- /dev/null +++ b/src/components/x-paging/index.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/components/x-tabbar/components/tabbar-item/index.vue b/src/components/x-tabbar/components/tabbar-item/index.vue new file mode 100644 index 0000000..fda35e4 --- /dev/null +++ b/src/components/x-tabbar/components/tabbar-item/index.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/x-tabbar/index.vue b/src/components/x-tabbar/index.vue new file mode 100644 index 0000000..fa58796 --- /dev/null +++ b/src/components/x-tabbar/index.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 0000000..10452ce --- /dev/null +++ b/src/config/index.js @@ -0,0 +1 @@ +export const baiduMapAK='hMPtCMLVem8gOeuFud9CEXC8k7woOWiq' diff --git a/src/config/tabbar/index.js b/src/config/tabbar/index.js new file mode 100644 index 0000000..7708dd5 --- /dev/null +++ b/src/config/tabbar/index.js @@ -0,0 +1,58 @@ +// 图片资源导入 +import clockInIcon from '@/static/image/tabbar/wz@3x1.png' // 打卡图标 +import clockInSelectedIcon from '@/static/image/tabbar/zu3499@3x.png' // 打卡选中图标 +import attendanceIcon from '@/static/image/tabbar/attendance2.png' // 考勤图标 +import attendanceSelectedIcon from '@/static/image/tabbar/kaoqin.png' // 考勤选中图标 +import myIcon from '@/static/image/tabbar/my1.png' // 我的图标 +import mySelectedIcon from '@/static/image/tabbar/my2.png' // 我的选中图标 +import applyIcon from '@/static/image/apply/zu3809@3x.png' // 申请图标 +import applySelectedIcon from '@/static/image/apply/zu3808@3x.png' // 申请选中图标 +import spIcon from '@/static/image/apply/sp.png' // 审批图标 +import spSelectedIcon from '@/static/image/apply/zu3812@3x.png' // 审批选中图标 + +// Tabbar 配置 +export const tabbar = [ + { + text: "打卡", + iconPath: clockInIcon, + selectedIconPath: clockInSelectedIcon, + value: 0, + iconWidth: '33.32rpx', + iconHeight: '40rpx', + url: '/pages/clockIn/index' + }, + { + text: "考勤", + iconPath: attendanceIcon, + selectedIconPath: attendanceSelectedIcon, + value: 1, + url: '/pages/attendance/index' + }, + { + text: "我的", + iconPath: myIcon, + selectedIconPath: mySelectedIcon, + value: 3, + url: '/pages/mine/index' + } +] + +// 审批页面 Tabbar 配置 +export const approveTabbar = [ + { + text: "申请", + iconPath: applyIcon, + selectedIconPath: applySelectedIcon, + value: 0, + iconWidth: '33.32rpx', + iconHeight: '40rpx' + }, + { + text: "审批中心", + iconPath: spIcon, + selectedIconPath: spSelectedIcon, + value: 1, + iconWidth: '37rpx', + iconHeight: '40rpx' + } +] diff --git a/src/config/theme/index.js b/src/config/theme/index.js new file mode 100644 index 0000000..bb98ae0 --- /dev/null +++ b/src/config/theme/index.js @@ -0,0 +1,12 @@ + +export const theme = { + colors: { + primary: '#46299D', + secondary: '#35495e', + accent: '#ff4081', + error: '#f44336', + warning: '#ff9800', + info: '#2196f3', + success: '#4caf50' + } +}; diff --git a/src/config/tmui/index.js b/src/config/tmui/index.js new file mode 100644 index 0000000..44ffa2d --- /dev/null +++ b/src/config/tmui/index.js @@ -0,0 +1,8 @@ +//config.ts +import {theme} from "@/config/theme/index.js"; + +export const config = { + theme:{ + primary:theme.colors.primary + } +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..d21415c --- /dev/null +++ b/src/main.js @@ -0,0 +1,51 @@ +import { createSSRApp } from 'vue' +import App from './App.vue' +import dayjs from "dayjs"; +import 'virtual:uno.css' +import VConsole from "vconsole"; +import '@/utils/uni.webview.js' +import tmui from "@/uni_modules/tmui" +import {config} from "@/config/tmui/index.js"; +import 'dayjs/locale/zh-cn'; +import xLoaderror from '@/components/x-loaderror/index.vue' +import { vLoading } from "@/components/x-loading/index.js" +import messagePopup from '@/components/x-message/useMessagePopup' +import pageAnimation from '@/components/page-animation/index.vue' +const {showMessage}=messagePopup() +dayjs.locale('zh-cn') +if (import.meta.env.VITE_SHOW_CONSOLE){ + new VConsole() +} +export function createApp() { + const app = createSSRApp(App) + app.use(tmui,{...config}) + app.directive("loading", vLoading) + app.mixin(pageAnimation) + app.component('x-loaderror',xLoaderror) + app.directive('no-space', { + mounted(el) { + el.addEventListener('input', (e) => { + const originalValue = e.target.value; + const newValue = originalValue.replace(/\s/g, ''); + if (originalValue !== newValue) { + e.target.value = newValue; + e.target.dispatchEvent(new Event('input')); + } + }); + } + }) + window.message = ['success', 'error', 'warning'].reduce((acc, type) => { + acc[type] = (message) => { + if (typeof message === 'string') { + showMessage({ type, message }); + } else if (typeof message === 'object') { + showMessage({ type, ...message }); + } + }; + return acc; + }, {}); + return { + app, + } +} +createApp() diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..a203961 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,101 @@ +{ + "name": "oa-host", + "appid": "", + "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": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios": {}, + "sdkConfigs": {} + } + }, + "quickapp": {}, + "mp-weixin": { + "appid": "", + "setting": { + "urlCheck": false + }, + "usingComponents": true, + "darkmode": true, + "themeLocation": "theme.json" + }, + "mp-alipay": { + "usingComponents": true + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "3", + "h5": { + "darkmode": true, + "template": "index.html", + "async": { + "loading": "AsyncLoading", + "error": "AsyncError", + "delay": 0, + "timeout": 60000 + }, + "sdkConfigs": { + // 使用地图或位置相关功能必须填写其一 + "maps": { + "qqmap": { + // 腾讯地图秘钥 https://lbs.qq.com/dev/console/key/manage + "key": "" + }, + "google": { + // 谷歌地图秘钥(HBuilderX 3.2.10+)https://developers.google.com/maps/documentation/javascript/get-api-key + "key": "" + }, + "amap": { + // 高德地图秘钥(HBuilderX 3.6.0+)https://console.amap.com/dev/key/app + "key": "", + // 高德地图安全密钥(HBuilderX 3.6.0+)https://console.amap.com/dev/key/app + "securityJsCode": "", + // 高德地图安全密钥代理服务器地址(HBuilderX 3.6.0+)https://lbs.amap.com/api/jsapi-v2/guide/abc/prepare + "serviceHost": "" + }, + "bmap": { + // 百度地图秘钥(HBuilderX 3.99+)http://lbsyun.baidu.com/apiconsole/key#/home + "key": "T4vteUoFUBsv6a5cxtw6kOInWb5nloxc" + } + } + } + } +} diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..30861c1 --- /dev/null +++ b/src/pages.json @@ -0,0 +1,31 @@ +{ + "easycom":{ + "autoscan": true, + "custom":{ + "^tm-(.*)": "@/tmui/components/tm-$1/tm-$1.vue" + } + }, + "pages": [ + { + "path": "pages/index/index", + "type": "page" + }, + + + { + "path": "pages/login/index", + "type": "page", + "style": {} + } + + + ], + "globalStyle": { + "backgroundColor": "#FFFFFF", + "navigationBarBackgroundColor": "#FFFFFF", + "navigationBarTextstyle": "black", + "navigationBarTitleText":"" + + }, + "subPackages": [] +} diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue new file mode 100644 index 0000000..8645e19 --- /dev/null +++ b/src/pages/index/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue new file mode 100644 index 0000000..8568be3 --- /dev/null +++ b/src/pages/login/index.vue @@ -0,0 +1,367 @@ + + + + + diff --git a/src/service/index.js b/src/service/index.js new file mode 100644 index 0000000..951b0a8 --- /dev/null +++ b/src/service/index.js @@ -0,0 +1,91 @@ +import Request from '@/service/request/index.js' +import {useAuth} from "@/store/auth"; +const { token ,refreshToken,userInfo}=useAuth() +let isRefreshing = false; +let refreshSubscribers = []; +const request = new Request({ + baseURL: import.meta.env.VITE_BASEURL, + timeout: 1000 * 60 * 5, + interceptors: { + //实例的请求拦截器 + requestInterceptors: (config) => { + config.headers['Content-Type'] = config.method === 'get' ? + 'application/x-www-form-urlencoded' : + 'application/json'; + config.headers['Authorization'] = token.value + if (config.isFormData) { + config.headers['Content-Type'] = 'multipart/form-data'; + } + return config; + }, + //实例的响应拦截器 + responseInterceptors: async (res) => { + if(res.data.status===1){ + message.warning(res.data.msg) + } + if (res.data.status === 401) { + return getRefreshToken(res); + // uni.navigateTo({ + // url:'/pages/login/index' + // }) + } + if ([200, 201, 204].includes(res.status)) { + return res.config.responseType === 'blob' ? res : res; + } else { + /* message.error(res.data.msg || 'An error occurred.');*/ + return Promise.reject(new Error(res.data.msg || 'An error occurred.')); + } + } + } +}) +async function getRefreshToken(response) { + if (!isRefreshing) { + isRefreshing = true; + const refreshTokenT = refreshToken.value; + if (refreshTokenT) { + try { + const data = { refreshToken:refreshTokenT }; + const res = await request.instance.post('/user/refresh/token', data); + if (res.code === 200) { + token.value = res.data.Token; + refreshToken.value = res.data.RefreshToken; + userInfo.value = res.data.AccountInfo + response.config.headers['Authorization'] = res.data.Token; + uni.navigateTo({ + url:'/pages/index/index' + }) + return request.request(response.config); + } else { + message.error(res.message || res.msg); + throw new Error(res.message || res.msg); + } + } catch (error) { + uni.navigateTo({ + url:'/pages/login/index' + }) + throw error + } finally { + isRefreshing = false; + refreshSubscribers.forEach(callback => callback()); + refreshSubscribers = []; + } + } else { + uni.navigateTo({ + url:'/pages/login/index' + }) + throw new Error('No refresh token available.'); + } + } else { + return new Promise(resolve => { + refreshSubscribers.push(() => resolve(request.request(response.config))); + }); + } +} +const fontRequest = (config) => { + if (['get', 'GET'].includes(config.method)) { + config.params = config.data; + } + return request.request(config); +}; + +export default fontRequest; diff --git a/src/service/request/index.js b/src/service/request/index.js new file mode 100644 index 0000000..9705fb5 --- /dev/null +++ b/src/service/request/index.js @@ -0,0 +1,80 @@ +import axios from 'axios'; +import { createUniAppAxiosAdapter } from '@uni-helper/axios-adapter' +axios.defaults.adapter = createUniAppAxiosAdapter() + +class Request { + // axios 实例 + instance; + // 拦截器对象 + interceptorsObj; + // * 存放取消请求控制器Map + abortControllerMap; + constructor(config) { + this.instance = axios.create(config); + // * 初始化存放取消请求控制器Map + this.abortControllerMap = new Map(); + this.interceptorsObj = config.interceptors; + // 拦截器执行顺序 接口请求 -> 实例请求 -> 全局请求 -> 实例响应 -> 全局响应 -> 接口响应 + this.instance.interceptors.request.use((res) => { + const controller = new AbortController(); + const url = res.url || ''; + res.signal = controller.signal; + this.abortControllerMap.set(url, controller); + return res; + }, (err) => err); + // 使用实例拦截器 + this.instance.interceptors.request.use(this.interceptorsObj?.requestInterceptors, this.interceptorsObj?.requestInterceptorsCatch); + this.instance.interceptors.response.use(this.interceptorsObj?.responseInterceptors, this.interceptorsObj?.responseInterceptorsCatch); + // 全局响应拦截器保证最后执行 + this.instance.interceptors.response.use( + // 因为我们接口的数据都在res.data下,所以我们直接返回res.data + (res) => { + const url = res.config.url || ''; + this.abortControllerMap.delete(url); + return res.data; + }, (err) => err); + } + request(config) { + return new Promise((resolve, reject) => { + // 如果我们为单个请求设置拦截器,这里使用单个请求的拦截器 + if (config.interceptors?.requestInterceptors) { + config = config.interceptors.requestInterceptors(config); + } + this.instance + .request(config) + .then((res) => { + // 如果我们为单个响应设置拦截器,这里使用单个响应的拦截器 + if (config.interceptors?.responseInterceptors) { + res = config.interceptors.responseInterceptors(res); + } + resolve(res); + }) + .catch((err) => { + reject(err); + }); + // .finally(() => {}) + }); + } + /** + * 取消全部请求 + */ + cancelAllRequest() { + for (const [, controller] of this.abortControllerMap) { + controller.abort(); + } + this.abortControllerMap.clear(); + } + /** + * 取消指定的请求 + * @param url 待取消的请求URL + */ + cancelRequest(url) { + const urlList = Array.isArray(url) ? url : [url]; + for (const _url of urlList) { + this.abortControllerMap.get(_url)?.abort(); + this.abortControllerMap.delete(_url); + } + } +} +export default Request; + diff --git a/src/static/css/color.scss b/src/static/css/color.scss new file mode 100644 index 0000000..17e5143 --- /dev/null +++ b/src/static/css/color.scss @@ -0,0 +1 @@ +$theme-primary: #46299D; diff --git a/src/static/css/index.scss b/src/static/css/index.scss new file mode 100644 index 0000000..0966cc6 --- /dev/null +++ b/src/static/css/index.scss @@ -0,0 +1,96 @@ +#app{ + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} +.loader { + position: relative; + width: 154px; + height: 154px; + border-radius: 10px; +} + +.loader div { + width: 8%; + height: 24%; + background: $theme-primary; + position: absolute; + left: 50%; + top: 30%; + opacity: 0; + border-radius: 50px; + + animation: fade458 1s linear infinite; +} + +@keyframes fade458 { + from { + opacity: 1; + } + + to { + opacity: 0.25; + } +} + +.loader .bar1 { + transform: rotate(0deg) translate(0, -130%); + animation-delay: 0s; +} + +.loader .bar2 { + transform: rotate(30deg) translate(0, -130%); + animation-delay: -1.1s; +} + +.loader .bar3 { + transform: rotate(60deg) translate(0, -130%); + animation-delay: -1s; +} + +.loader .bar4 { + transform: rotate(90deg) translate(0, -130%); + animation-delay: -0.9s; +} + +.loader .bar5 { + transform: rotate(120deg) translate(0, -130%); + animation-delay: -0.8s; +} + +.loader .bar6 { + transform: rotate(150deg) translate(0, -130%); + animation-delay: -0.7s; +} + +.loader .bar7 { + transform: rotate(180deg) translate(0, -130%); + animation-delay: -0.6s; +} + +.loader .bar8 { + transform: rotate(210deg) translate(0, -130%); + animation-delay: -0.5s; +} + +.loader .bar9 { + transform: rotate(240deg) translate(0, -130%); + animation-delay: -0.4s; +} + +.loader .bar10 { + transform: rotate(270deg) translate(0, -130%); + animation-delay: -0.3s; +} + +.loader .bar11 { + transform: rotate(300deg) translate(0, -130%); + animation-delay: -0.2s; +} + +.loader .bar12 { + transform: rotate(330deg) translate(0, -130%); + animation-delay: -0.1s; +} diff --git a/src/static/error.html b/src/static/error.html new file mode 100644 index 0000000..08326fc --- /dev/null +++ b/src/static/error.html @@ -0,0 +1,29 @@ + + + + + Title + + +
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+
导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用导入使用
+ + diff --git a/src/static/image/apply/sp.png b/src/static/image/apply/sp.png new file mode 100644 index 0000000..91dbfe8 Binary files /dev/null and b/src/static/image/apply/sp.png differ diff --git a/src/static/image/apply/zu3808@3x.png b/src/static/image/apply/zu3808@3x.png new file mode 100644 index 0000000..c08f4e9 Binary files /dev/null and b/src/static/image/apply/zu3808@3x.png differ diff --git a/src/static/image/apply/zu3809@3x.png b/src/static/image/apply/zu3809@3x.png new file mode 100644 index 0000000..b275f5f Binary files /dev/null and b/src/static/image/apply/zu3809@3x.png differ diff --git a/src/static/image/apply/zu3812@3x.png b/src/static/image/apply/zu3812@3x.png new file mode 100644 index 0000000..0c9b5ba Binary files /dev/null and b/src/static/image/apply/zu3812@3x.png differ diff --git a/src/static/image/apply/zu3843@3x.png b/src/static/image/apply/zu3843@3x.png new file mode 100644 index 0000000..a05a5e1 Binary files /dev/null and b/src/static/image/apply/zu3843@3x.png differ diff --git a/src/static/image/clockIn/32px@3x.png b/src/static/image/clockIn/32px@3x.png new file mode 100644 index 0000000..af43f38 Binary files /dev/null and b/src/static/image/clockIn/32px@3x.png differ diff --git a/src/static/image/clockIn/32px@3x1.png b/src/static/image/clockIn/32px@3x1.png new file mode 100644 index 0000000..a399f8a Binary files /dev/null and b/src/static/image/clockIn/32px@3x1.png differ diff --git a/src/static/image/clockIn/chevron-left@2x.png b/src/static/image/clockIn/chevron-left@2x.png new file mode 100644 index 0000000..b92ca06 Binary files /dev/null and b/src/static/image/clockIn/chevron-left@2x.png differ diff --git a/src/static/image/clockIn/location@3x.png b/src/static/image/clockIn/location@3x.png new file mode 100644 index 0000000..c75e52c Binary files /dev/null and b/src/static/image/clockIn/location@3x.png differ diff --git a/src/static/image/clockIn/rest3275@2x.png b/src/static/image/clockIn/rest3275@2x.png new file mode 100644 index 0000000..e14c15d Binary files /dev/null and b/src/static/image/clockIn/rest3275@2x.png differ diff --git a/src/static/image/clockIn/sq@3x.png b/src/static/image/clockIn/sq@3x.png new file mode 100644 index 0000000..6e58d8f Binary files /dev/null and b/src/static/image/clockIn/sq@3x.png differ diff --git a/src/static/image/clockIn/statistics@2x.png b/src/static/image/clockIn/statistics@2x.png new file mode 100644 index 0000000..c07916a Binary files /dev/null and b/src/static/image/clockIn/statistics@2x.png differ diff --git a/src/static/image/clockIn/z3280@3x.png b/src/static/image/clockIn/z3280@3x.png new file mode 100644 index 0000000..6f4039b Binary files /dev/null and b/src/static/image/clockIn/z3280@3x.png differ diff --git a/src/static/image/clockIn/zu3275@3x.png b/src/static/image/clockIn/zu3275@3x.png new file mode 100644 index 0000000..08d790e Binary files /dev/null and b/src/static/image/clockIn/zu3275@3x.png differ diff --git a/src/static/image/login/browse-off@3x.png b/src/static/image/login/browse-off@3x.png new file mode 100644 index 0000000..7b762b1 Binary files /dev/null and b/src/static/image/login/browse-off@3x.png differ diff --git a/src/static/image/login/browse@3x.png b/src/static/image/login/browse@3x.png new file mode 100644 index 0000000..97545e6 Binary files /dev/null and b/src/static/image/login/browse@3x.png differ diff --git a/src/static/image/login/check-circle-filled@3x.png b/src/static/image/login/check-circle-filled@3x.png new file mode 100644 index 0000000..4d28016 Binary files /dev/null and b/src/static/image/login/check-circle-filled@3x.png differ diff --git a/src/static/image/login/gdz@3x.png b/src/static/image/login/gdz@3x.png new file mode 100644 index 0000000..2f8c7ee Binary files /dev/null and b/src/static/image/login/gdz@3x.png differ diff --git a/src/static/image/login/gth@3x.png b/src/static/image/login/gth@3x.png new file mode 100644 index 0000000..468b520 Binary files /dev/null and b/src/static/image/login/gth@3x.png differ diff --git a/src/static/image/login/warn@3x.png b/src/static/image/login/warn@3x.png new file mode 100644 index 0000000..120e44e Binary files /dev/null and b/src/static/image/login/warn@3x.png differ diff --git a/src/static/image/login/xzsu@3x.png b/src/static/image/login/xzsu@3x.png new file mode 100644 index 0000000..bdb523a Binary files /dev/null and b/src/static/image/login/xzsu@3x.png differ diff --git a/src/static/image/mine/1111.png b/src/static/image/mine/1111.png new file mode 100644 index 0000000..1288bea Binary files /dev/null and b/src/static/image/mine/1111.png differ diff --git a/src/static/image/mine/background.png b/src/static/image/mine/background.png new file mode 100644 index 0000000..0166437 Binary files /dev/null and b/src/static/image/mine/background.png differ diff --git a/src/static/image/mine/card.png b/src/static/image/mine/card.png new file mode 100644 index 0000000..1eb7925 Binary files /dev/null and b/src/static/image/mine/card.png differ diff --git a/src/static/image/mine/chevron-down.png b/src/static/image/mine/chevron-down.png new file mode 100644 index 0000000..f6dfba8 Binary files /dev/null and b/src/static/image/mine/chevron-down.png differ diff --git a/src/static/image/mine/chevron-down@3x.png b/src/static/image/mine/chevron-down@3x.png new file mode 100644 index 0000000..01aadae Binary files /dev/null and b/src/static/image/mine/chevron-down@3x.png differ diff --git a/src/static/image/mine/chevron-down@3x1.png b/src/static/image/mine/chevron-down@3x1.png new file mode 100644 index 0000000..b8e4894 Binary files /dev/null and b/src/static/image/mine/chevron-down@3x1.png differ diff --git a/src/static/image/mine/e@3x.png b/src/static/image/mine/e@3x.png new file mode 100644 index 0000000..cfc3899 Binary files /dev/null and b/src/static/image/mine/e@3x.png differ diff --git a/src/static/image/mine/help.png b/src/static/image/mine/help.png new file mode 100644 index 0000000..2c71e6f Binary files /dev/null and b/src/static/image/mine/help.png differ diff --git a/src/static/image/mine/maillist@3x.png b/src/static/image/mine/maillist@3x.png new file mode 100644 index 0000000..99d243c Binary files /dev/null and b/src/static/image/mine/maillist@3x.png differ diff --git a/src/static/image/mine/ming001@3x.png b/src/static/image/mine/ming001@3x.png new file mode 100644 index 0000000..1905a7f Binary files /dev/null and b/src/static/image/mine/ming001@3x.png differ diff --git a/src/static/image/mine/plus@3x.png b/src/static/image/mine/plus@3x.png new file mode 100644 index 0000000..22b316b Binary files /dev/null and b/src/static/image/mine/plus@3x.png differ diff --git a/src/static/image/mine/refresh@3x.png b/src/static/image/mine/refresh@3x.png new file mode 100644 index 0000000..b3739ca Binary files /dev/null and b/src/static/image/mine/refresh@3x.png differ diff --git a/src/static/image/mine/scan@3x.png b/src/static/image/mine/scan@3x.png new file mode 100644 index 0000000..72fd46e Binary files /dev/null and b/src/static/image/mine/scan@3x.png differ diff --git a/src/static/image/mine/setting.png b/src/static/image/mine/setting.png new file mode 100644 index 0000000..867d41f Binary files /dev/null and b/src/static/image/mine/setting.png differ diff --git a/src/static/image/tabbar/attendance2.png b/src/static/image/tabbar/attendance2.png new file mode 100644 index 0000000..53d20e4 Binary files /dev/null and b/src/static/image/tabbar/attendance2.png differ diff --git a/src/static/image/tabbar/kaoqin.png b/src/static/image/tabbar/kaoqin.png new file mode 100644 index 0000000..cac2cb0 Binary files /dev/null and b/src/static/image/tabbar/kaoqin.png differ diff --git a/src/static/image/tabbar/message1.png b/src/static/image/tabbar/message1.png new file mode 100644 index 0000000..f1eadaa Binary files /dev/null and b/src/static/image/tabbar/message1.png differ diff --git a/src/static/image/tabbar/message2.png b/src/static/image/tabbar/message2.png new file mode 100644 index 0000000..cea9d17 Binary files /dev/null and b/src/static/image/tabbar/message2.png differ diff --git a/src/static/image/tabbar/my1.png b/src/static/image/tabbar/my1.png new file mode 100644 index 0000000..75e0693 Binary files /dev/null and b/src/static/image/tabbar/my1.png differ diff --git a/src/static/image/tabbar/my2.png b/src/static/image/tabbar/my2.png new file mode 100644 index 0000000..88055bc Binary files /dev/null and b/src/static/image/tabbar/my2.png differ diff --git a/src/static/image/tabbar/wz@3x1.png b/src/static/image/tabbar/wz@3x1.png new file mode 100644 index 0000000..ae9237b Binary files /dev/null and b/src/static/image/tabbar/wz@3x1.png differ diff --git a/src/static/image/tabbar/zu3499@3x.png b/src/static/image/tabbar/zu3499@3x.png new file mode 100644 index 0000000..183032a Binary files /dev/null and b/src/static/image/tabbar/zu3499@3x.png differ diff --git a/src/static/logo.png b/src/static/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/src/static/logo.png differ diff --git a/src/static/logo.svg b/src/static/logo.svg new file mode 100644 index 0000000..21bb93e --- /dev/null +++ b/src/static/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/store/auth/index.js b/src/store/auth/index.js new file mode 100644 index 0000000..c914b6f --- /dev/null +++ b/src/store/auth/index.js @@ -0,0 +1,20 @@ +import {createGlobalState,useStorage} from '@vueuse/core' +import {uniStorage} from "@/utils/uniStorage.js" + +import {ref} from 'vue' +export const useAuth = createGlobalState(() => { + const token = useStorage('token', '', uniStorage) + const refreshToken = useStorage('refreshToken', '', uniStorage) + const userInfo = useStorage('userInfo', {}, uniStorage) + const leaderList = useStorage('leaderList', [], uniStorage) + const isLeader=ref(false) + // const leaderList=ref([]) + + return { + leaderList, + + userInfo, + token, + refreshToken, + } +}) diff --git a/src/store/status/index.js b/src/store/status/index.js new file mode 100644 index 0000000..785d3e7 --- /dev/null +++ b/src/store/status/index.js @@ -0,0 +1,15 @@ +import {ref} from 'vue' +import {createGlobalState, useStorage} from "@vueuse/core"; +import {uniStorage} from "@/utils/uniStorage"; +export const useStatus =createGlobalState(()=>{ + const currentNavbar=ref({title:'',url:''}) + const applyTabbarIndex=ref(0) + const statusBarHeight = ref(window?.plus?.navigator?.getStatusbarHeight() ?? 0) + const tabBarIndex = useStorage('tabBarIndex', 0, uniStorage) + return { + statusBarHeight, + applyTabbarIndex, + currentNavbar, + tabBarIndex + } +}) diff --git a/src/uni_modules/tmui/.npmignore b/src/uni_modules/tmui/.npmignore new file mode 100644 index 0000000..8d6f82c --- /dev/null +++ b/src/uni_modules/tmui/.npmignore @@ -0,0 +1,12 @@ +full.scss +full.min.css +full.css +mian.css +mian.scss +scss/fonts +scss/colors.scss +scss/fuzhu.scss +scss/fuzhu-full.scss +scss/theme.scss +package.json +readme.md diff --git a/src/uni_modules/tmui/changelog.md b/src/uni_modules/tmui/changelog.md new file mode 100644 index 0000000..5b4f258 --- /dev/null +++ b/src/uni_modules/tmui/changelog.md @@ -0,0 +1,786 @@ +--- +title: 关于tmUi3.0的更新日志 +--- + +##### 开发指南 tmui.design + +# TMUI 3.0 + +### :couplekiss: 更新日志 + +## 3.1.1 (2023-1-31) +**【插播一条广告】tmui4.0 x版本已发布,现招募种子用户,价格199元终身授权,还可免费使用我开发的原生插件截止2.28号** +* **[注意]我本人没有测试uniapp 3.99sdk,我还在使用uniapp sdk 3.0.0-3090520231028001,即10月28号发布的版本,请大家使用时自行测试验证新的sdk是否有问题。** +由于Uni官方后面更新可以使用x版本怕问题太多,不敢使用,请大家谨慎在生产中使用。建议维持我cli的版本即可,切莫尝鲜。 +* tm-form,校验时机改为输入内容即校验,之前是首次不校验。并为ref函数validate校验提供了字段校验参数,允许你只校验部分字段。 +* tmui组件vsocde文档提示插件,请在vscode中搜索插件:tmui-helper进行安装。 +* util工具函数中isPasswordOfOther校验字母数字时可能有误。 +* useTheme,round计算时重复了个2导致写圆角时,第4个失败,使用了第3个的值。 +* tm-slide-switch提高了部分平台报错的兼容问题。 +* index.ts删除了一些不使用而导入的值,可能导致某些功能异常。 +* tm-segtab,修改外部更改值时,不会触发。 +* tm-text,新增aging,适配微信端字号自动适配 +* nvue图表兼容配置函数[见issue](https://gitee.com/LYTB/tmui-design/pulls/213/files).更新此版本需要同步去gitee上下载hybrid覆盖你的项目上同名目录。 +* tm-keyboard,优化安全区域 [见issue](https://gitee.com/LYTB/tmui-design/pulls/212/files) +* tm-carousel,新增imgModel,图片缩放模式 +* tm-cell,新增hover-class属性 +* tm-col,新增justify属性,可选参数与align相同。 +* css库增加了三人居中的baseLine对齐类,flex-row-baseline-[start,center,end] +* tm-radio,buttom模式微信和网页的样式有差异。 +* tm-qrcode,微信真机上可能设置Logo报错. +* tm-overlay,设置为底部内容不可滚动,相对应的是所有弹层组件底部内容都将无法滚动。 +* tm-avatar,增加errorImg,当头像出错时,使用此错误的占位图片代替img +* tm-popover,增加defaultShow属性,默认是否显示展开。 +* tm-time-view,tm-time-picker等时间组件,如果你设置为时分,或者 时秒,这种类似的非标准需求,首次选中时会被默认的设置为起始位置,导致首次选中出错。 +## 3.1.09(2023-11-1) +* **特别提醒:新的sdk3.8.12(含)后如果你不更新为最新的的sdk为3.95,但使用了hbx新版本,nvue平台会白屏,因此请大家注意更新为最新sdk与hbx匹配,否则白屏。** +* **[特别提醒]keyboard键盘上个版本拼写错了,把正确的删除了。错误的留下了,大意了,这次改正了。你们正式的项目升级注意更新下keyboard这个组件导入** +* [优化]所有弹层类组件的定位使用了新的useHooks函数,解决了底部在安全区域和非常安全区域可能出现的错位问题。 +* [优化]因微信新版本引擎渲染节点与旧版本有点差异。导致部分组件可能出现错误的布局。针对这些已经增加了修复优化。如果大家发现哪些组件在新引擎上有问题,请及时在gitee上提交问题,我好修复兼容。 +* [优化]input组件,增加了customicon是否自定义图标,searchBgColor搜索按钮背景,searchWidth搜索按钮宽属性。 +* [优化]tmTabbar,增加了place属性,是否占位。 +* [优化]virtual虚拟列表,增加了scrollViewInTo属性用于手动定位列表当前滚动的具体锚点位置,top,bottom +* [重磅]**添加了一系列实用的useHooks函数,解构即可使用,类似于vue3流行的VueUse,解构出来的值是动态可变的以最终值为准,使用方便效率高。** +* 也是为了解决一些功能组件的界面可能不符合你的预期,因此做成useHooks方便大家自定义界面,直接使用功能。类似我提供底层api基础功能,你负责界面显示,这样就可个性化界面了,而不用实现功能逻辑。 +* 一个useHooks一个文件,因此你不用,就不会增加文件大小。不用担心包过大的问题。 +* [修复]tmCv渲染修复了文字渲染位置计算错误,导致文字排版可能错位。 +* [优化]tm-stepper组件经过项目验证,发现还是失去焦点时,再检查数据合法性比较好一点,因此现在输入值时,失去焦点才会校正。另外发现在华为鸿蒙系统中,如果一个输入框两边都有按钮贴在一起布局,会出现bug.该bug在京东微信商城小程序和一些其它大厂小程序都验证存在。因此本次更新修复兼容。 +* [优化]tm-weekbar新增了:itemSelectedBgColor,方便定义选中时的背景,更聚焦更美观。见示例demo +* [优化]tm-action-menu优化如果底部没有安全区域时增加间隙。 +* [优化]tm-more新增:lightMaskColor,darkMaskColor渐变颜色组,主要是有些应用场景可能遮罩不一定是黑或者白可能会设置其它个性化的渐变色。 +* [优化]tm-input,增加:clearAndEyeColor:清除按钮,显示密码按钮的颜色 +* [优化]tm-scrolly增加refresher开启或者彬下拉刷新 +* [修复]tm-time-between时间范围选择器,修复可能出现的invidate的场景,具体表现概率性表现为时间超过当前日期时出现。具体原因在于变动逻辑上顺序我可能有误导致的。 +* [增强]css工具类,新增了grid排版,gap间隙设置(相比margin,padding增加间隙优势明显)vue包增加2kb,注意:nvue不支持。 +* [增强]tm-Carousel针对list如果为object时,如果含有text字段,就会在轮播的底部显示出轮播的文本,方便新闻轮播。见示例。 +* [优化]tm-calendar新增confirmText,textUnit方便定义其它语言。 +* [更多]更新和修改了许多其它文件,具体请使用git对比发现。 + +## 3.1.08(2023-7-26) +* 本次升级建议大家升级到3.8.7,目前测试良好。 +* [修改]升级tmui cli底层sdk至3.8.7,已经配置了vite.config.js已经可以支持编译到淘系小程序。 +* [修复]小程序全局分享shareDisable为true关闭分享,false为开启。与文档描述不符。 +* [更改]修改所有动画弹层类动效函数为cubic-bezier(.04,.78,.42,1),效果是打开是快-慢。关闭时快-慢,好像速度更快。 +* [优化]tm-scrolly下拉功能,修复在ios下scrolly下拉不正常 +* [优化]timebetween,代码优化 +* [优化]删除demo中index.vue页面的冗余代码。 +* [修复优化]tm-color-view,因uni sdk3.8.xx以来canvas组件反复bug出现。导致我这个组件此版本后渲染异常在微信上。本版本兼容更新了3.8.xx,可以正常了。但低于这sdk版本会出错 +* 所以现在要正常使用请使用3.8.xx以上吧 +* [优化]tminput的focus添加返回event参数。 +* [优化]补充类型和优化类型文件 +* [优化]tm-divider,新增showLable属性,同时新增插槽label,用于自定义文字区域布局。 +* [优化]css库修正。[见gitee](https://gitee.com/LYTB/tmui-design/issues/I7IG3C) +* [优化]tmrow,tmcol,在3.8.7 sdk开始莫名的在微信小程序端tmcol内部高度设置无效,只能设置外部高度解决的问题【已修复】。 +* [优化修复]tm-radio,tmcheckbox优化通过设置direction="customCol"如果label为多行时,在h5,微信小程序无法断行。顺便补下文档 +* [修复]upload组件,新增的after函数,默认返回有误。同时状态文件处添加当前的上传进度值,优化,如果当前在上传中不允许删除操作。 +* [优化]更新了tm-cascader组件,增加了异步加载数据用例以及优化异步加载。 +* [优化]tmRender增加了ref方法saveImg保存图片的方法。如果大家用来生成海报,可以此来保存图片.优化可能出现的问题。 +* [优化]tmCropimg,修改默认宽和高为250,(暂不支持nvue剪切) +* [优化]tmSlider样式修改。 +* [修复]tm-codeinput,字段type值dot,line样式没有生效。同时新增showLine控制是否显示占位符。 +* [优化]tm-filterMenu组件,如果当你放置在父组件设定了transform中时,弹出定位将失败,位置错乱,本质上这个是原生css属性受限。无dom平台(小程序)解决不了。但好在有的平台支持使用根组件来解决。 +因此版本升级允许你放置在相关父组件中:比如当你把这组件放到swiper-item中现在也能正常弹出,但支持的平台仅限:微信小程序,淘系列,h5,nvue,使用场景见[gitee](https://gitee.com/LYTB/tmui-design/issues/I7LH6M) +* [优化]公共参数round属性升级后属性为[number]|number,规则与margin相同即:圆角,[x]或者直接数字x表示全部,[x,x]表示顶左,顶右,[x,x,x]表示顶左,顶右,底右,[x,x,x,x]顶左,顶右,底右,底左 +* [修复]tm-segtab,由于在非nvue平台不同分辨率下(特别是奇数倍率),uni.upx2px转换为rpx后会丢失0.5px导致上下错位。现在改为calc的百分比计算,让内容居中。 +* [修复]tm-tabs导航可能的计算,导致实际宽度大于内容宽度(左右线性动画模式时产生的问题。) +* [优化]tm-drawer,优化在非nvue平台。动画未结束前点击遮罩不允许关闭。 +* [修复]tm-scrolly,底部加载更多在vue平台内容未居中. +* [优化]tm-sku,新增了属性value,用来默认选中产品规格,注意规则请数据data规则以-区分比如:a-b-b +* [优化]tm-input,新增searchWidth,用来改变搜索按钮的宽度,默认为0根据文字自动宽, +* [优化]其它[见gitee PR](https://gitee.com/LYTB/tmui-design/pulls/170) +* [优化]tmHtml组件[跟随原作者](https://github.com/jin-yufeng/mp-html/)更新到2.4.2版本 +* [优化]tmSideMenu,新增disabledPull,是否禁用下拉刷新功能。 +* [优化]radio,checkedbox的属性beforChecked拼写错误修正为beforeChecked,并传递了当前的vale值,可以在函数内直接取得。 +* [优化]tmCountdown新增formatType,指定倒计时的类型,比如指定SS,当你设定300秒时,以300递减而不会进位到分。 +* [优化]tmFloatButton项目类型中增加了可选参数 openType?:string,callback?:Function,各子按钮或者主按钮统一调用你给定的回调函数,并把参数传递给自己的。 +* [更新]修改文档,修复文档错误描述。 +## 3.1.07(2023-6-28) +* [修复]tm-app,在app vue页面类型没有铺满全屏. +* [修复]app ios nvue 下tm-picker组件显示异常 [见gitee](https://gitee.com/LYTB/tmui-design/issues/I7CN16) +* [修复]时间范围选择器,在format 为 HH:mm 时,出现无效数据的bug,[见gitee](https://gitee.com/LYTB/tmui-design/pulls/166/files) +* [修复]tm-Segtab,在vue页面,使用gutter属性时,宽度计算有误。(nvue不受影响)[见gitee](https://gitee.com/LYTB/tmui-design/issues/I7D4FN) +* [修复]tm-steps,当添加小标题时错乱。[见gitee](https://gitee.com/LYTB/tmui-design/issues/I7D5CD) +* [优化]tm-alert,点击事件返回:item,index +* [优化]tm-action-menu,[见gitee](https://gitee.com/LYTB/tmui-design/issues/I7C9LV) +* 增加了事件:open-data,各家小程序开放事件统一在这触发获取:头像,电话,联系人等。 +* [优化]tm-button,去掉了兼容pc的hover效果 +* [修复]tm-stepper,修复在小微信小程序中当值为""时,如果最小值为0,此时用户可以通过删除输入框的值让输入框为"",而不是0。当最小值为负数时,用户清空输入框时,自动设置为最小的负数,而不是0 +* [修复]tm-switch,在vue页面,没对齐(nvue不受影响) +* [修复]tm-overlay,如果同一个页面使用多个这组件,并同时触发显示或者关闭等动作,由于触发了节流,导致只有一个能触发。修复后可同时调用。 +* [优化]tm-upload,开放props属性chooesefileAfter,用于在传前最后一次文件列表的动态修改。上传以你return后的文件列表为准。 +* [优化]tm-input,事件keyboardheightchange补充上,$event属性。 +* [优化]forom-item,添加属性labelWidth,可以单独控制标题宽度。 +* [优化]tm-switch,增加offIcon属性,关闭时显示的图标,默认没有。 +* [优化]tm-cascader,优化标题显示为text标题,而不是显示id标题. +* [修复]tm-translate,动画在app vue页面因兼容嵌套导致所有在app vue页面类型的动画失效。现已修复 +* [修复]tm-time-between,新增modelStr(一般用来显示,因为可能是一个不标准的时间格式,给后台时请使用v-model变量),它是受fomat影响输出,但不允许输入,输入请用v-model来更改。这里只管输出format格式的时间。 +* [优化]tm-tree,添加了选中后文字显示主题色。也增加了禁用时节点文本为禁用色,但如果节点为父节点时,被禁用选中了,文本禁用色不生效(因为它的子节点可以选)[场景需求见gitee](https://gitee.com/LYTB/tmui-design/issues/I7FKZ3) +* [优化]tm-filterMenu-item,增加了自定义标识属性uuid,[场景需求见gitee](https://gitee.com/LYTB/tmui-design/issues/I7FG7N) +## 3.1.06(2023-6-6) +* [注意事项]3.8.3 uni sdk发布了,经过测试可以编译nvue app了。可能第一次编译会报appprieview的标点符号错误, +我已经找到了问题是:uni sdk自己编译的html文件末尾少了个";"导致的,重新编译就正常预览了。但依然无法编译到支付宝。如果要编译到支付宝请继续使用3.6.18的 uni sdk见gitee库的备份json文件。 +* [修复]tm-dragList数据变动不更新问题。 +* [修复]tm-slide-switch,无法手动更改状态值。解决页面无法滚动问题 +* [修复]signBoard,qrCode组件在支付宝中无法保存和获取图片资源。 +* [文档]Scrolly文档现在重写编写,之前的文档存在错误,误导了大家的使用,导致使用出错。 +* [修复]tm-translate,组件ref的play方法失效,导致手动播放动画无法播放。 +* [修复]tm-segtab,动态修改list时,定位样式错乱。 +* [优化]tm-tag,增加了属性:before-close,关闭前执行的回调。 +* [优化]tm-upload,增加show-status 属性,以控制是否显示上传的状态栏。 +* [优化]tm-roll-notice,list类型增加了object,object[]类型支持,也同步增加了rangeKey来指定显示的文本字段。 +* [优化]修正util.getUid函数的类型。 +* [优化]tm-waterfall,见[PR功能日志](https://gitee.com/LYTB/tmui-design/pulls/159) +* [优化]tm-tabs,tm-scrollx,隐藏在安卓上的滚动条。 +* [优化]tm-icon,文档少了一个属性customicon,现已修正了文档。 +* [修复]tm-tabbar-item,少了一个属性customicon,导致如果你填写了自定图标名称,不能显示,要显示需要开启这个属性为true +* [优化]tm-side-menu,属性单词require修正为required。 +* [修复]tm-button,loading状态下还能触发click. +* [修复]tm-image,margin左右间距缺省第二个参数读取。 +## 3.1.05(2023-5-15) +* [文档]升级了文档网站到vitepress +**[重要提示]目前来说从3.7.10-3.7.11无法编译到nvue。3.8.12 alpha及3.7.9(含以下)可以编译到nvue.然后3.6.18(不含,以上)无法编译到支付宝。原因是uni sdk自己的插件问题,我无力修复。我只能把坑放到这大家避免。想要编译到支付宝请参考3.1.04的说明。** +**如果uni升级解决了问题,我会在日志中说明。如果你可以解决上面问题欢迎到我的gitee上提供解决方案。感谢。** +* [优化]3.1.05开始,兼容你配置的darkMode模式。当你开启了darkMode,内部不再设置状态栏,底部菜单,的颜色设置, +* 使用你自己的配置的theme.json文件。这个好处是在app,微信暗黑下没有闪白。 +* [优化]tmapp,文件不再手动设置内容宽和高。采用flex方案代替100% +* [优化]tm-cascader,边线改为内边线。取消单独边线,影响事件触发。 +* [修复]Cascader组件在vue页面布局问题。 +* [优化修复]city-picker,新增了duration,打开弹出的动画时间,同时修复弹出框右上角文字颜色未跟随color属性。 +* [优化]Coupon,新增了disableColor,disableBgColor +* [优化]小程序分享功能,在全局的config中新增shareDisable,是否禁用全局分享,默认禁用。[如何自定分享见文档](https://tmui.design/start/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E4%BA%AB.html) +* 修改了一些其它代码 +## 3.1.04(2023-4-26) +* [提醒]刚发布的uni sdk 3.7.10还是未修复编译至支付宝时出现的编译问题,导致支付宝不可用。经过我测试哪怕使用官方的uni sdk也是有问题无法编译到支付宝小程序。 +* 因此我特意在我的gitee库中,保存了一份文件叫:package - alipay.json,如果要编译支付宝的把node_modules和package-lock.josn删除, +* package.json里面的内容替换成ackage - alipay.json内容,再执行npm i,之后即可编译到支付宝。 +* 如果你们要使用最新的,又想用支付宝的,请自己向官方提bug(别让我提,我提太多了)。 +* [更新]现在全局配置表那已经允许配置按钮的全局配置属性,支持的字段见文档类型。 +* [新增]tm-fly-view,组件,是一个抛物线组件,从触发位置,把目标元素以抛物线的效果抛至目标点位,主要场景交互有:购物车添加商品,收藏夹等 一些交互效果的元素。 +* [修复]util在h5端setClipboardData设置剪切板内容,返回类型不正确。 +* [修复]tm-form无法监测对model整个全部重新赋值的改变。 +* [优化]tm-sku,组件进行了重新设计。具体见demo示例,不向下兼容。 +* [优化]tm-slide-switch,组件进行了重新设计。现在可以用来作为聊天列表使用了。uni的wxs坑至今无法修复。本次放弃wxs,改回原来touch事件。新增了:open,close事件触发。并且opoen-status也开放双向绑定了。可双向打开和关闭。 +* [优化]modal,overlay,drawer增加了teleport属性以便在h5禁用。 +* [修复]修复Image组件冗余代码 +* [新增]新添加一个第三方请求库,位置:tmui->tool->lwu-request.ts,暂时没有文档。代码非常工整。且条理清晰。请查看源码使用。由于大小原因。这个库合并为单独使用。如果需要使用,请自行导入使用。 +* 该请求库,有队列请求,错误重试控制请求,中断请求,拦截器配置等特性,功能强。该库原作者链接:[访问](https://ext.dcloud.net.cn/plugin?id=11409),已经通过pr方式合并到tmui,tool中,版权同tmui版权,免费商用。 +* [修复]input组件在非微信小程序平台,如果不绑定值,可能在事件中不会返回相关值。 +* [优化]tm-picker,新增duration属性弹出动画时间。 +* [优化]tm-drawer,添加了beforeOpen,beforeOk,beforeCanse属性,后两者如果的函数如果返回fase会阻止关闭弹层。 +* [优化]tm-avatar,添加了iconColor属性,用于单独定义图标颜色。如果不提供使用主题色 +* [优化]tm-upload,添加status-code属性,用于服务状态码自定成功时的值,默认200 +* [修复]tm-modal,在vue页面的情况下添加border导致窗口宽度举出隐藏,边线缺失。 +* [修复]tm-table,当所有数据的值为空数组时[],会导致bug。 +* [关于暗黑闪白问题]由于uni在最新的3.7.3+已经出了darkMode配置方法,我原先的一些方法将注销不再使用。如果你们的app,微信,h5出现暗黑闪白问题,请按照官方的配置方法去配置解决。[官方的暗黑配置教程](https://uniapp.dcloud.net.cn/tutorial/darkmode.html) +* [优化]tm-waterfall-item,新增了click事件,当整个项目被点击时触发的方法。 +* [优化]tm-tabbar,增加了zIndex属性,注意:nvue是没有效果的,需要放到页面最后才能是页面的最顶部。 +* [优化]tm-time-between,start,end属性,可动态设置 +* [优化]css库,增加了一个类:flex-col-full,这个功能类似于类flex-1,我们知道在flex-row横向时,内只有一个元素时占比1就是相当于我们的100%宽度。但如果是纵向col布局时, +* 如果让宽度100%呢,使用类flex-col-full就行了。一直这个属性缺失,今天补上。 +* [优化]form-item,组件增加属性errHeight,自行控制底部错误空间的高度。同时提供error插槽,自行显示当前错误的格式,插槽携带了错误信息的数据,见文档 +* [修复]picker,time-picker在支付宝样式问题。 +## 3.1.03(2023-4-1) +* [新库]重新编写发布了tm-render库,不再引入第三方渲染库,而是采用了自写的轻量级canvas渲染库,目前暂不支持Nvue(后续兼容), +* 使用超级简单,具体[请看demo实例](https://tmui.design/h5/#/pages/render/pie) +* ![tmCv](https://cdn.tmui.design/public/design/tmcvDemo.gif) +* [优化]autoDark,优化,可能切换自动时有混乱的表现。 +* [优化]tm-text,主题判断优化下,增加容错率。 +* [优化]tm-form,校验优化,大家对校验的要求较高,希望给出手动校验值,以及校验后需要返回每一个字段校验的结果,因此我重构了校验流程,让校验变得更简单,方便手动或者自动校验功能。 +* 现在不管是submit还是手动vailidate校验,都将返回isPass:是否校验通过,和result[]校验结果列表集,以及绑定的model数据三个字段。 +* [修复]因为新的配置表采用了对pinia实例的插件安装,导致已有pinia store的pinia实例丢失,各位在引用自己的pinia实例时,记得在引入我的tmui之前引入创建实例即可,详见快速上手文档。 +* [优化]最近不少人反应运行到app报错,经过多次配合排查,发现是大家使用了pinia的持久化插件导致。帮本次升级针对pinia升级优化。大家安装pinia插件时,一定要在app.use(tmui)之前引入安装自己的插件。 +* [优化]actionMenu的list数据结构增加了属性openType,方便使用小程序和应用按钮的开放功能 +* [优化]picker,modal,增加了zIndex属性。 +* [优化]tm-icon,自定图标如果名称出现多个-时可能无法显示。 +* [修复]颜色计算公式rgbaToHsla转换精度有误差导致颜色值会相差0.6-1之间。 +* [优化]uni.getsystem下取值hostTheme无效,改为osTheme取值。 +## 3.1.02(2023-3-25) +* [重要]cli相关依赖全部升级到最新,pinia,vite,echart,uni sdk(3.7.9),经过本人测试优化的挺好,建议大家可以升级。如果你是使用cli开发 +* 请下载我的最新cli包[前往下载](https://tmui.design/doc/start/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.html#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9),插件版本号已经帮你配置好。替换packejson后,请执行```npm cache clean --force```清下缓存包。然后再```npm i --save```执行安装依赖 +* 如果你是hbx项目,目前无法升级到379(官方未发布),总的来说建议升级,经测试nvue端有改善,已经支持动态主题投影,不过还是要请大家自行打包我的iosdemo自行比较。 +* [优化]tm-upload,增加imageModel,图片的缩放模式 +* [优化]tm-city-picker,增加了两个导出函数,用于小程序地图选点时,返回的城市名称时,可用于ref函数进行名称反选出index索引或者id数组,方便后台交互。 +* [修复]tm-collapse-item在vue页面展开失效(nvue不受影响) +* [修正]tm-tabs,默认的rangkey之前是title,我测试时,写成了key,发布时忘记改回,对不起各位 。 +* [更新demo]因为filter已经支持了footer底部操作固定功能,因demo相应更新。 +* [修复]utils下的预览图片方法preview,某些情况下判断有误。 +* [优化]tm-sheet,特殊的合并写法,在微信小程序的不同sdk版本库可能会提示非常多的警告。 +* [修复]tm-form,如果设置了某个字段与formitem同时切换隐藏时,且该字段同时存在于form的model中,会触发来回切换造成校验混乱。 +* [优化]config中,下个版本将默认关闭组件库自动跟随系统的暗黑效果,如果要开启请按文档配置即可。 +* [修订文档]更新一些文档。 +## 3.1.01(2023-3-20) +* [紧急]现紧急修复一个问题,因uni SDK底层渲染机制(时机)的一个bug(我认为是bug,但无法确认他们的渲染逻辑顺序只能推测。), +* 如果想知道原理的[可看这,戳我](https://gitee.com/LYTB/tmui-design/issues/I6O1AW),导致主题在app(vue,nvue)真机上失效 +* [优化]tm-tabs,增加了rang-key来自定取值标题的字段,默认是通过title,唯一标识key,也可以写成id字段,优化了类型校验。 +* [修复]tm-sheet,tm-tag,tm-button渐变失效 +* [修复]tm-overlay,禁用底部内容滚动后,如果内部再套入scroll-view或者view的scrollview造成无法滚动。这一问题影响了所有弹层类组件。 +* [修复]tm-image,组件设置margin,会影响原有图片宽度。 +* [修正文档错误] +## 3.1.0(2023-3-16) +* **[非常重要]版本升级后,3.1.0之前的版本需要作下兼容处理:即以前的router,theme文件夹不是必要的了,所以升级后不会读取,需要你手动配置并导入到tmui配置表中,以及main.ts中也改动了安装方式。 +总体来讲就是变得更简单了。不再绑定和要求一些文件配置了,全部为可选。见文档:[进阶指南](https://tmui.design/doc/advanced/tmui全局配置.html),并了解如何配置路由,主题,以及一些其它的全局配置。** +* [基础工具更新]所有文档已经迁移到香港服务器,如果提示网站服务停用,请刷新页面缓存。并且会提供相关的打包接口,以后下载cli和demo包将会在服务器上自动打包最新的版本供你们下载。而不需要我手动来升级打包了. +* [基础工具更新]tmui-cli更新路径:以后将提供可视化安装,并可以更方便的更新插件和安装包,并直接下载模板到安装项目中。极大的方便cli安装方式 +* [基础工具更新]文档提供了【进阶指南栏目】里面有详细的介绍如何配置全局属性,以及ts文件中的Tmui类型命名空间的使用和提示,以及教程,教会你如何配置vsocde来开发hbx uni项目。这次主要的更新是完善vscode中的vue3 ts类型提示以及校验,更体现vue3的优势所在。不管是全局的uni.xx挂载和pinia的store.xx挂载,我都内嵌到全局的类型提示了。你只要输入你的pinia模块和uni.都是会提示全局的属性和方法. +* [通用]部分常用组件,button,tag,sheet增加了border-color属性,如果提供了的话,在亮色下将不采用主题匹配的值,而是采用你提供的。暗黑模式以及切换主题时,border-color会采用切换的计算的颜色值。 +也就是说只有当为默认主题时才会使用自定义的border-color。 +* [优化]tm-waterfall-item瀑布组件,如果图片加载错误返回一个占位空间提示加载错误。 +* [修复]tm-overlay,增加了节流函数,防止点击过快导致显示异常。 +* [优化]jstool即uni.$tm.u下面的工具函数新增了几个非常实用的操作方法,见文档。并优化了部分方法代码实现。 +* [修复+优化]tm-popover,修复width属性失效,并增加label插槽,以实现类似淘宝菜单的小弹窗,出现更多按钮,效果见demo +* [修复]tm-button,font-color设置为自定颜色或者主题色时,可能会导致混乱,使用按钮颜色自定义时出现错误。 +* [优化]tm-tag,新增一个属性iconAlign用于展示图标显示的位置,左还是右。 +* [重要]因为uni在最新的3.7.3升级了vite版本号,会导致大家使用cli升级sdk失败。大家只要在package.json中: +"vite": "^4.1.4","@vitejs/plugin-vue-jsx": "^2.1.1"这两个版本号修改下,然后再修改sdk号:3.0.0-3070320230222002 +再执行:```npm install --force``` 就可以了,但实测可能是uni官方还未提供升级相关插件,即便成功了,也会编译出异常的平台。慎重升级,等uni完善吧。 +* [优化]tm-app,开放了bgimg属性,现在可以设置app背景图片了,注意的是,设置了图片背景颜色会失效。 +* [新增组件]tm-sort,宫格拖动排序,注意事项见文档。 +* [优化]tm-image组件取消了二次缓存方法(之前是一张图片会加载两次的,第二次是缓存结果),现在取消了。 +* [优化]minx.ts中的computedClass属性计算,可能带来的隐患错误。 +* **tm-translate修改了动画属性将影响部分平台,zoom效果没有了,包括一些性能。将影响下面提到的嵌套功能。** +* **实现嵌套原理:微信,支付宝使用root-portal组件,H5使用teleport组件,NVUE本身不受限制** +修改升级原因如下: +1. 广大网友希望弹层类,能够嵌套的使用。 +2. 现在所有的弹层组件:支持压屏嵌套,内弹层(只遮盖组件内部) +3. **【微信,支付宝,NVUE端,H5】不受性能影响,因为有原生组件支持** +4. 除了上述3点中的四个平台将影响部分动画性能,因css3中left,right,bottom动画,相对css3的transform效率性能要打折。具体可见css3文档. +* 预告:我已经跟随uni适配theme暗黑模式,但uni sdk在cli vue3下有bug,根本无法切换,一切换就报变量错误。我也无奈,因此等uni稳定后,再适配,就可以解决暗黑切换闪白问题。 +* [优化]tm-overlay关闭了拖动遮罩时底部内容也可滚动,影响到所有弹出组件。即所有弹出组件触摸拖动遮罩时都将无法滚动页面。 +* [修复]在小程序下切换暗黑时,导航标题栏系统的原生字体未跟随变化。 +* [增强]tm-float-button,增加了弹出子菜的动画。修复子菜单点击事件填写错误。 +* [修复]tm-table,数据监测异常,导致循环卡页面。 +* [优化]tm-collapse,增加了折叠动画,不建议嵌套使用,会影响性能。nvue端,如果需要展开动画,需要指定属性contentHeight内容高度。 +* [修复]tm-descriptions,子组件在非nvue端可能等比分不准确。 +* [修复增强]tm-button,新增disabledColor禁用色,当按钮被禁用时展现的颜色,默认grey-1,以及修复load时按钮样式没有改变。当禁用或者load时去除hover效果。 +* [优化]tm-calendar,tm-calendar-view,新增了format属性,用于对modelStr(输出项)字段属性的时间格式化,非modelValue的格式化。 +* [优化]tm-tabs,增加showTabsLine,用于开启线性动画后,是否隐藏底部灰色的导轨。 +* [TS增强] 不知道vscode从哪个版本的ts开始原有的类型合并,对于我框架的类型与Uni官方类型合并出现了问题。导致在页面输入uni.$tm时不出现提示和注释 +带来编译的不方便。因此变更了类型合并处理,解决部分类型报红的问题。 +* [优化]tm-progress,进度条重构了圆环代码,对圆和半圆增加了进度动画,引入了tween.js增加了15kb大小。 +* [优化]tm-form-item,增加:showTopErrorGap属性,用于隐藏顶部的错误间隙,但保留底部,以减少布局间的空隙 +* [优化]tm-chart,组件,新增ref方法getImg导出图表图片功能 +* [优化增强]tm-button,tm-sheet等组件加入了公共属性linear-color,当开启linear时,如果你提供了linear-color颜色组属性,将使用你提供的渐变方案。如果不提供还是保持原样的自动渐变方案 +* [增强]所有picker类弹层,以及drawer抽掘,modal弹层增加了相关的默认插槽来触发弹层。不用再去定义和绑定show相关变量来控制显示隐藏,提高布局效率。 +* [utils]routerTo方法的类型提示有误。 +* [修复]tm-tabs-pane,属性count不更新的问题。 +* [修复]tmFormItem,修复layout="vertical"时,非nvue页面样式错乱。 +* 修善了部分ts类型文件。 +* 文档示例错误修改 +## 3.0.9(2023-2-13) +* **[新增组件]tm-adsorb,吸附器,主要功能:随意拖动后会在屏幕两侧自动吸附。也可以关闭吸附功能,达到任意拖动。nvue使用Binding,非nvue使用wxs实现,请注意兼容** +* [修复]tm-button,属性fontColor失效 +* [修复优化]tmFilterMenu组件在作为悬浮时是可能展开后内容位置不对,因此增加了fixed属性,用于悬浮时使用,让本组件跟随屏幕滚动,自动吸附顶部展开条件筛选菜单。 +* [优化]tm-slide-switch,现在已经可自行设定rightWidth宽度了,即展开的宽度,不再是固定值。 +* [修复]tm-col,在vue页面(nvue不受影响)时内容未能100%撑开。 +* [修复]tm-form,在nvue页面(vue不受影响),布局为竖向时,标题内容过长时不会自动断行。 +* [修复]tm-calendar-view,tm-calendar,日历范围忘记引入函数了。导致范围选择报错. +* [修复]tm-city-picker,增加cityLevel,城市选择级别,这个功能一直都有,但我忘记放出来给大家用了。导致文档写了,但实际用不上。 +* [修复]tm-rate,单词错误,导致监听变量失败,赋值失败。 +* [修复]tm-picker,tm-time-picker内部参数单词拼写错误。 +* [修复]tm-images,的loadIcon,errorIcon两个属性未启用的问题,同时增加了load插槽 +* [优化]virtual虚拟列表增加top插槽,固定某个内容跟随滚动在顶部。具体见文档。 +* [优化]tm-input,增加searchFontColor搜索按钮字体颜色. +* [优化]tm-button,目前删除了授权的快捷功能,因为微信收回了获取头像昵称规则。 +* [修复]tm-more,util.ts见:[gitee pull](https://gitee.com/LYTB/tmui-design/pulls/106) +* [优化]tm-dropMenu,增加haveArrow是否显示箭头。 +* [优化]tm-upload,新增:fileType,选择图片的场景值,默认为,相册和相机 中选择。 +* **[大改]tm-table,表格已发生重大改变,不向下兼容。请注意备份老版本并谨慎升级本组件。** +* [修复]tm-keyborad,数字键盘在vue页面发生布局错误。 +* [修复]tm-translate,在非nvue端未触发开始和结束事件。 +* [修复]tm-tag,在开启可关闭选项时,关闭后,还占位了空间,并未真正消失。 +* [优化]tm-filterMenu-item,属性为动态响应可修改。 +* [优化]tm-action-menu,修改了样式 +* 修改部分示例 +## 3.0.89(2023-1-9) +* **重要这是农历年,年前最后一个版本,祝大家农历新愉快** +* [新增]tm-color-view,颜色选择器。 +* [新增]tm-sku,商品属性选择器 +* [重要优化]tm-chart图表组件,从3.0.89开始已经兼容nvue平台。并且在nvue下性能是最棒的。具体看文档。同时去除掉了stop事件,允许页面事件穿透。 +* [修复]tm-picker,tm-picker-view,属性dataKey因为在微信平台与官方字段关键字重名,导致设置失败,现在新增了一个mapKey与dataKey作用相同,向下兼容后续建议大家使用mapKey +* [优化]tm-button重新布局,减少嵌套,利于原生的功能。 +* [优化]tm-grid,针对nvue调整优化了宽度的计算。防止部分手机缩放,有概率会断行。更改了角标位置。 +* [优化]tm-calendar-view,nvue页面可能某些手机在切换为月,年季度时,会断行。 +* [修复]tm-carousel,在最新的sdk中,轮播索引对齐样式在nvue端丢失。 +* [修复]tm-scrollx,在vue页面对齐方式失效。 +* [优化]tm-collapse-item +* [优化细节]tm-input,对后缀和前缀图标点击区域稍微扩大,图标也增大,过小无法点中触发事件。同时对边线,图标颜色切换,聚焦时的转换增加动效,让切换变得更为自然。 +* [优化]tm-radio,tm-checbox,优化选中图标大小,以及对齐布局的改变。 +* [优化]tm-rate,增强了选中的动效[nvue颜色过渡效果没有,但弹跳效果是有的]。 +* [修复]tm-tabs,在vue页面时,如果标题过多,会断行。 +* [重要优化]tm-row,tm-col使用了全新的设计思路使得布局变得非常的简单。但特别注意:从3.0.89开始不会向下兼容.请把之前的flex-x,中的x写在tm-col属性:col="x"来兼容升级。原有的row,gutter属性被取消,请在tmcol上重新写入margin属性实现兼容。 +* 此次的tmrow,tmcol优化后,让所有端的差异被抹平。使用变得一致。并且单独设置了borderColor,borderGutter属性来控制边线,颜色,让你用tmRow,tmCol布局应用变得非常简单(尤其是大面积的表格布局边线,边距的处理) +* [优化细节]tm-image,新增一项体验功能,当图片出现了加载错误提示时,可以点击错误提示区域让图片重试加载。 +* [重要优化]tm-floatButton,悬浮按钮已经重构,让各个平台兼容性更好。减少多余的代码。 +* [调整]调整了主题渐变值的计算。 +* [修复]tm-upload,批量上传时,因设定了双向绑定导致状态错乱,阻止了后续上传。现改为当所有文件执行完动作后,再实行数据同步。 +* [优化]tm-segtab,调整了过渡动画,显得更为自然有趣。 +* [优化]tm-tree,补全node-click事件,同时作了调整,当标题为会父节点时,现在点中会展开节点。如果是最终子节点,点击会选中当前节点。 +* [修复]tm-alert,在微信小程序中点击关闭后,还会占位空间。 +* [优化]tmradio,tmcheckbox选中的同步速度【针对部分安卓机】 +* [优化修复]tm-cascader,补上cell-click事件,忘记写上去触发了。 +* [优化]tm-button,补齐在按下或者鼠标悬浮时没有样式变化的问题 +* [优化]好多人看不明白自定义图标,现在把规则重新写了一次,并且写了详细的自定义图标的方法。[详细使用方法](https://tmui.design/doc/com/Icon.html) +* [插件优化]同步了mp-html作者的更新,更新了tm-html组件一些bug,目前3.6.15+以上可以支持nvue页面渲染html了。 +* [优化]tm-modal,为了打开和取消事件处理方便,在使用ref方式打开.open时,支持返回Promise,then为点击了ok按钮事件,catch为点击了取消关闭(包括点击遮罩,同样会执行到catch中)。具体见文档示例。 +* [修复]tm-more,在vue页面(nvue不受影响),更多图标与文字未上下对齐 +## 3.0.88(2022-12-15) +* [重要]uni sdk 3.6.13+,alphat 3.6.11+ ,更新导致本demo运行失败,现已修复,如果你是老项目升级最新sdk[3.0.0-3061320221209001],请在app.vue补齐temlate标签,否则无法运行。 +* [增强] tm-sheet对margin,padding增强现在规则如下(向下兼容,不用担心升级):[x]时表示四周的间隙,[x,x]时表示水平,上下的间隙,[x,x,x]时表示左,上,右,下:0的间隙,[x,x,x,x]时表示:左,上,右,下的x间隙 +* 此项增强,同样适用于以此为组件的增强:比如tag,button等等支持这两个属性的组件大部分支持此优化。 +* [修复]tm-text,tm-icon行高问题,导致相关的部分组件对齐丢失。 +* [重要]tm-slide-switch,舍弃了原有的原生组件movearea用法,改动自己写的手势,如果已用本组件的,请适配后再升级.本次更新主要是提高流畅度性能和使用的体验. +* 升级后:滑动方面nvue采用bingdx,丝滑流畅的滑动体验.非nvue采用wxs,丝滑般的滑动体验.因目前的sdk版本uni有自身的bug,导致底部的可滑动区域被我固定在了120px的宽度,且不可更改.如果 +* 需要更改自定宽度,请自行修改源码.底部菜单方面:使用插槽,取消了原有的属性控制,这样大家布局更为自由,不再局限. +* [增强]tm-keyborad键盘,新增属性:maxLength,最大长度,如果设置了值,当前输入内容达到该值时,将触发success事件,并且无法再继续输入内容 +* [增强]tm-icon 新增:rotate是否允许单独控制图标旋转的角度, rotate-deg:图标旋转的角度 +* [优化]主题计算中的border-color,渐变配色,边线的计算逻辑稍微调整了下. +* [优化]tm-codeinput,优化了样式,开放了text,outlined样式属性 +* [优化]tm-card,修改了默认的内边距为24,之前是16 +* [修复]tm-side-menu内部类名写错了. +* [优化]tm-radio,tm-checkbox开放了outlined属性,设置为true可用于镂空效果. +* [修复]tm-upload新增的排序功能在微信小程序端不显示,原因是:sdk渲染templeat渲染成为一个空view导致的(其它平台不存在,只有微信有.具体原因不明) +* [优化]tm-button文字图标对齐问题 +* tm-side-menu属性sliderMenu拼写错误,修改为sideMenu,如果已使用,请根据错误日志及时修正. +* [修复]tm-calendar-view在设置dateStyle日期样式时,范围模式样式丢失.在单选时,在小程序样式有残留. +* [修复]tm-upload,因为上个版本增加了排序功能,类多写了个,导致nvue端样式走位. +* [优化]调整tm-grid,的角标位置在内容的右上一点。 +* [增强]tm-float-button,增加属性:disabledScrollTo:默认true禁用,是否开启置顶功能,scrollTo:[置顶参数见官网](https://uniapp.dcloud.net.cn/api/ui/scroll.html),nvue不支持。 +* [增强]tm-notification,show参数中,开放了color属性,现在允许通过show来传递color改变弹层的颜色.(注意:我再提醒下从3.0.8x开始color可以不用是主题,可以是任意16进制颜色值.) +* [优化]加所牵涉到加载组件的图标更换成了tmicon-shuaxin图标. +* [修复]tm-time-view,当显示其它不同属性时,会导致选项值不正确。[感谢](https://gitee.com/LYTB/tmui-design/pulls/94) +* [增强]tm-comment,新增属性autoFormatTime是否自动格式化处理时间[见此,感谢](https://gitee.com/LYTB/tmui-design/pulls/93) +* 修改文档错误部分. +## 3.0.87(2022-12-5) +* [新增]tm-time-between组件,这是一个实用组件,用来时间日期的范围选择(相比日历范围选择,这个可以精确到时分秒) +* [新增]tm-side-menu组件,侧边栏导航组件,通常用于商城分类,端口分类等场景 +* [修复]tm-upload如果在onStart中阻止了上传,页面上没有更新阻止状态.因为增加双向绑定功能后,内部我手抖,写错了值,导致绑定后,反而丢失了数据。抱歉。 +* 上传组件,同时开启了预览模式,新增了showSort:是否开启排序功能,可以对已上传图片位置排序. +* [修复]tm-picker,新增的immediateChange属性写错了位置. +* [修复]utool js库中的方法函数getUid,有个致命的bug,因为组件所有子组件是通过这个函数生成的唯一id,在组件内出现较多子组件时,能极低的概率出现雷同的id,导致数据丢失.现已更换了生成方法. +* [修复]tm-time-view参数容错率以及一处赋值错误。,在nvue端修复了时间不准确的错误(这里一个uni的稿笑bug就是我在里面写了一行注释,导致nvue时间错乱,我已经向uni提交了bug,我自己也避免写注释) +* [修复]tmFilterMenu组件标题,在暗黑下,未自动适应字体色。 +* [优化]tm-icon为了对齐准确,如果你设置lineheight=0,内部取消行高选项属性. +* [优化]tm-text:行高问题,lineHeight='auto'自动计算行高,lineHeight=0时,由系统接管行高,>0时,自定义行高. +* [修复]tm-inpu,type='textarea'时,在h5端的兼容问题 +* [优化]fetc请求中新增config属性:statusCode:200,默认200表示请求成功.如果想自定义其它值为成功标志,需要自定设置. +* [其它优化](https://gitee.com/LYTB/tmui-design/issues/I63SJK) +* 添加了自定义微信分享的说明文档. + +## 3.0.86(2022-11-29) +* ------------uni SDK Bug提醒,因官方未修复,以下为记录我踩过的坑---------------- +* uni sdk bug集合见我提交的ask 请前往[UNIASK](https://ask.dcloud.net.cn/question/158252) +* ------------正文日志开始---------------------------------------------------- +* [极其重要优化]tm-form表单验证,此次优化对标大厂逻辑思维,摒弃了常见的组件绑定验证(包括uni的也是如此缺点).更新的逻辑如下: +1. tm-form绑定的模型数据,与form-item中的filed字段绑定,进行验证 +2. 解藕 tmform中的模型数据与组件绑定验证(之前是需要通过特定的组件进行验证,比如输入框,上传组件等等).此次更新解藕,不与组件绑定 +3. 任何数据都可校验,form-item内可以放置任意组件,布局,也不影响校验,与只filed绑定 +4. 优化后,也彻底解决因校验,导致输入框内容闪烁,过快时丢失字符. +5. 校验速度加快.error标签显示,不再页面布局闪动,影响视觉的感观. +6. 具体见form页面demo代码,更为简洁了. +* tm-carousel在h5,小程序端的标签对齐有些差异. +* [修复]tm-steps在微信小程序中错乱的问题,同时为了解决各兼容问题在tm-steps-item增加了属性:width,单独控制各个进度组件的宽度. +* [优化]tm-navbar增加属性isPlace,是否占位内容,方便做透明导航背景内容 +* [优化]tm-input增加属性placeholderStyle,方便定义占位符的样式 +* [优化]tm-modal,ref调用方法open,允许传递参数,modal绑定的ok,cacel事件触发时将会带回open传递的参数,方便逻辑页面交互. +* [修复+优化增强]tm-picker,tm-city-picker在点击确认时,触发confirm事件时,如果当前默认为初始值(起始未选择值),传递的参数为空值. +* [修复+优化增强]tm-time-view,本组件已重构,在微信小程序端显示将更为流畅,并添加了选中和未选中过渡时的指示,以让用户知道是在滑动中还是已经完成选中。并且已经弃用渐进式渲染。(之前是渐进式演示,肉眼可见从左到右渲染过程) +* tm-time-view此组件,同时修复uni sdk3.6.8开始,未知原因,在nvue页面,赋值时间时,页面不会变化,必须通过页面强制刷新ui才可显示,现已修复兼容3.6.8+以上sdk在nvue上使用本组件。 +* [修复]tm-action-menu,标题文字未居中. +* [优化增强]tm-button,form-type新增两个可选属性:'filterCancel','filterConfirm',主要用于在filterMenu组件中的提交和取消选项功能. +* [增强]tm-raido,tm-checkbox,默认插槽新增当前是否选中的属性checked,补上click触发事件 +* [修复]tm-message,如果设置隐藏背景,导致内容位置出错. +* [新增]tm-filterMenu,下拉菜单过滤器,注意:本组件只提供外观框架支持,具体的逻辑选项等数据交由使用才自行处理.主要是考虑到下拉选项千奇百怪,各种各样的 +条件筛选.如果我内部,集成,本组件将会超级大.因此,组件不集成任何数据逻辑,只提供框架.具体由你自己实现逻辑效果. +* [优化增强]tm-table因为安卓性能原因,导致部分安卓机在拖动时抖动无法使用.现在tm-table在app nvue页面采用了weex原生的list scroller+bingx布局,性能高超.建议本组件使用nvue页面 +进行使用表格,nvue同样可以编译到小程序端和其它端.本组件作了全部的兼容. +另外本组件还增加了:固定左边和头部标题的功能.内容区域滚动上和左可固定,当然也可不显示. +* [增强]tm-form-item增加了两个属性:parentClass,align两个类的属性,具体用处见文档 +* js工具库$tm.u下新增两个方法torpx,topx将数值转换为对应的rpx和px单位,方便大家单位间的转换。 +* [修复]tm-collapse-item在nvue ios端点击可能会不触发收起的问题。 +* [修复]tmRadio,tmCheckbox在vue(nvue不受影响)页面,插槽文字过多时,造成左边的按钮被挤压. +* [修复]tm-slider在vue页面(nvue不受影响)位置错乱 +* [优化增强]tm-input加入了readonly属性,针对钉钉和支付宝因为输入框禁用字体变灰的情况,可用此属性代替disabled +* [优化增强]tm-overlay内容显示效果与背景动画同层属性contentAnimation,默认是关闭,开启后,背景的渐隐消失动画将会在内容层上一并实现,有助于内容显示和关闭时过渡的更自然。 +* 同时增加了inContent属性,开启后嵌套弹层只会在父组件内部弹层,不会全屏弹层 +* [优化增强]tm-drawer增加了inContent属性,开启后嵌套弹层只会在父组件内部弹层,不会全屏弹层 +* [优化]stepper步进器输入值优化。 +* [优化增强]tm-result新增,text是否浅背景,size尺寸大小设定 +* [修复]uni.$tm.u.setClipboardData设置剪切内容时在h5端报错。 +* [重构]tm-scrolly已经重构,可在正式生产中使用。 +* [优化]优化tabs组件标题的角标位置与文字间距拉大一点。让角标处于右边上位置.同时新增属性:subtract,就是开启lineAni后,点击某项时,选中项位置会往前移动的数量,默认为2 +* [增强]tm-tabbar-item新增属性:disabled,可以禁用当前项目,阻止链接跳转和触发功能. +* [增强]tm-model新增插槽:title标题栏,button底部按钮栏 +* [增强]tm-icon,关于自定义图标方案已采纳如下:(见方案)[https://gitee.com/LYTB/tmui-design/pulls/77],也可以通过文档查看自定图标方法. +* [修复]tm-grid-item在vue页面,因为未与nvue对齐,导致断行. +* [优化]tm-keyborad-number键盘,不允许多次输入小数点. +* [增强]tm-scrollx新增ref方法:scrollTo,滚动到指定位置 +* [优化]tm-countdown优化倒计时,的判断逻辑,方便配置验证码倒计时之类的应用。 +* [其它]根据gitee上提出的issue需求和bug进行修复和增强,请前往[码云](https://gitee.com/LYTB/tmui-design/tree/master) +* [修复]tm-model弹层组件,cacel会触发两次,在微信上.(我有必要说下原因:产生的原因是uni sdk早期时刚兼容vue3时,安卓和ios无法触发事件冒泡,因此在自定组件上写了click和内部的一个click.stop,但后期uni修复了这个问题.然后ios微信小程序也支持这样子用.但是:安卓机微信端阻止不了冒泡,然后就产生了上面的问题).因此这里有一个坑:安卓微信端在自定组件上加事件修饰符是不起作用的.ios和其它平台是支持的. +* [优化]tm-picker系列补齐immediateChange属性。 +* [优化]部分数据集比较多的组件,在监测变化方面进行了抖动设置,主要是数据多的组件,大家可能默认是一些其它数据,通过请求后,进行赋值或者变动赋值,连续的变动造成监测计算损耗大量性能,会造成表单组件过多影响页面显示的速度. +* [优化]在非nvue端动画组件,和相关的动画组件,取消了原先的animation动画api,改为使用纯粹的css动画效果,虽然两者效果其实是一样的,但必竟通过 animation接口设置,其实本质也是通过底层sdk进行的css设置到组件的style上.相比直接使用css更为直接,不经过这道处理. +* [优化]tm-calendar系列组件,日,范围修改了选中样式为圆形.其它样式头部已经修改. +* [优化]time-picker增加了title属性 +* [优化]tm-badge增加:top,right属性,允许微调位置,整数,可以是负数. +* 一些文档,类型,属性的错误修正. + +## 3.0.85(2022-10-20) +* 新增组件tm-html,富文本渲染组件,主要用来渲染html内容。具体注意事项见文档。 +* 修改了tm-app,去除微信小程序下的警告setTabBarStyle. +* 修复tm-app在读取page.json中的导航和底部导航配置时出错的问题,导致如果配置了原生导航切换浅背景时,无法设置为Page.json中的样式. +* 修复tm-tag事件冒泡问题. +* 优化tm-radio. +* 修复tm-upload主题,未读取props.color配置,修复beforeStart以及beforSuccess函数返回true或者false无法设置文件状态的改变。 +* 修复tm-input为textarea时字段未对齐的问题. +* tm-input新增 prefixColor,suffixColor,应用于前缀和后缀图标及标题色。 +* tm-sheet新增url属性,如果提供,点击时自动跳转至该链接,方便做链接跳转,省得再套个nav +* tm-form-item,新增了transpren,round,desc 属性。方便单独控制一行的表单样式属性,达到个性化布局的需求。 +* 修复tm-form中的tm-radio-group,tm-checkbox-group,手动对其赋值值,form表单的submit取值不正确 +* 修复tm-more在未知版本开始,因为 写法上不支持,导致设置的height失效。 +* 修复tm-checkbox-group严重bug,如果先赋值选中值,再改变checbox组件数据时,会导致数据无法选中,并且选中值被清空。 +* 修改了默认的theme主题值。 +* 非nvue模式字体格式调整为woff.之前为woff2因为 钉浏览器不支持。 +* 修复tm-navbar中属性hideback逻辑错误,导致设置无法隐藏。 +* 修复tm-pagination分页组件, v-model:current时手动赋值,无法改变当前页码。 +* tm-divider添加click事件,点击分割线时触发。 +* tm-tabs,tm-cell,tm-navbar添加了darkBgColor属性,在强制暗黑模式下设置自定义的颜色值。 +* tm-cell新增titleColor,可以指定强制配色主题(如果不提供,采用主题color自动配色。) +* 优化tm-steps-item,tm-steps步骤条在nvue下显示。让其在布局中自动居中显示。删除属性:contentHeight,从此版本开始不再要求输入contentHeight来占位。 +* 修复theme主题生成工具在生成具体色值时,某些色值无法生成主题,导致出现undefined。 + 同时优化计算主题生成时:如果使用了outlined 同时又提供了text,将会产生浅色边框,只单独使用outlined产生深色边框,方便界面的搭配. +* 修复tm-scrollx,设置隐藏底部bar滚动条时,高度未减去此滚动条高度。 +* 修复code-input组件在微信小程序,待输入字符不闪烁。 +* 修复tm-city-picker可能选值不正常的bug.同时新增属性city,方便自定义城市数据.同时调整了文档说明,让大家更能理解. +* tmui-cli工具升级至1.1.0,新增在tmui use命令中,选择自己喜欢的包管理工具:npm,yarn,pnpm,cnpm来进行安装依赖 +* 增强了部分组件props属性的ts类型检查,和类型提示. +* 修复tm-uplad属性maxFile失效导致无法限制上传数量 +* tm-alert增加右边插槽功能,方便添加按钮操作之类 +* 优化tm-picker,tm-city-picker组件的一些问题.优化后如果提供的正确的值,将会通过model-str自动反选并显示选中的字符路径(与arco的选择框类似),极大的方便表单的填写功能. +* 修复tm-picker关闭事件会触发两次 +* 修复tm-image,添加自定义错误插槽时,图片成功会继续显示. +* 修复tabs,如果动态取tabs栏目时,首次为空时,会导致激活swiper模式. +* tm-calendar,tm-calendar-view新增了:按季度选择的模式 +* 修复tm-indexes在非nvue平台.如果套入动态的其它组件内时,执行滑动选择索引值时,会不准确. +* 优化tm-message,现在你可以使用js连续调用并显示message组件的show了,不再限制,也不做防抖处理.方便日常加载数据连续调用显示. +* 优化tm-notification,现在你可以使用js连续调用show来显示组件,方便日常加载数据连续调用显示. +* 优化tm-tabbar层级过低问题. +* tm-comment新增authorFontSize属性. +* 更新部分错误文档 +## 3.0.84(2022-9-26) +* [重要] 从uni3.6.1开始部分安卓模拟器运行本框架会经常性的空白.原因在于uni3.6.1开始对部分安卓模拟器的兼容变差导致.已知mumu网易模拟器会空白.作者使用的是夜神模拟器,正常. +* [重要] 从3.0.84起,color等相关需要颜色主题的属性,不再要求在theme.ts中预定义主题,而是直接可以提供16进制的颜色值。比如tm-button中的color你现在可写"#FF0000"或者"red"。将自动解析颜色值。 + 当你提供的颜色非主题时,而是颜色值。会自动解析颜色值生成临时主题应用于所在的组件上。 +* tm-scrollx,在非NVUE平台去除横向滚动条样式. +* tm-progress,解决可能在微信高分屏幕上初次渲染带来的矩齿问题.并针对安卓机器的差异性优化显示,减少部分机型的异常显示. +* tm-button如果配置了边线导致上下居中不对齐 +* tm-indexes[重大升级]新增右侧导航可手势滑动选择,布局功能升级:同类或者官方索引组件,大多是要设定子项目的高度,或者只能提供列表式布局.这点应对复杂的索引(可能不是列表可能是复杂的布局)无能为力. + 经过这次的升级,即子项目你通过tm-indexes-item组件插槽布局,可以像正常的view布局一样随意的布局 +* tm-action-menu修复了一处错误. +* 调整了颜色深浅的计算方法. +* 修复tm-dropdown图标未对齐。 +* tm-card修复在vue页面内容不能够断行的问题。 +* tm-form表单工具,现在重置时(指定的form表单类组件)将恢复到最初的值. +* tm-switch新增了两个字段:selected、unSelected允许你开关设置打开和关闭的值 +* tm-upload新增配置属性:formName,用于设定上传文件的表单名称,默认为"file" +* tm-tabs修复开启swiper左右滑动时,无法触发change的bug. +* tm-stepper修复部分安卓机在Input上不支持type = "number"属性的情况下继续输入其它字符时,会被转译成NaN或者underfind的可能性. +* tm-button添加了一些qq上的属性. +* tm-picker修复在小程序中手动赋值时可能造成的延迟选中状态。导致可能选不中的问题。 +* 修复在纯nvue编译模式下,图标字体丢失的问题. +* 修复深浅主题切换.或者首页首次加载时,app端的系统状态栏主题文字没有同步应用组件的沉浸式变化.导致系统状态栏文字出现与底色相同看不清. +* fetch请求,默认不再提供默认的content-type的值 +* 修复tmui-cli工具创建的hbx项目路径资源引用错误. +* tm-image新增错误插槽error,用于自定义加载错误的提示 +* tm-roll-notice删除了duration属性.新增speed属性(滚动速度) +* tm-modal 新增了:titleStyle,格式和正常写style一样的写法 +* tm-waterfall新增ref方法clear,用于清空列表,当前列表需要重新赋值,清空原有时,需要调用些方法清空.清空后需要在nextTick里面重新赋值. +* [新增组件]tm-scrolly,见文档 +## 3.0.82(2022-9-7) +* 此版本性能大幅度提升,针对安卓性能提升非常的明显。 +* 特别声明下:以下组件在安卓nvue端有待优化:滑块组件tm-slider(如果大家有测试到异常的要吧提交到gitee上) +* 级联器tm-cascader新增ref方法:reFresh,方便动态加载数据后刷新同步。 +* tm-tabs现左右滑动切换列表可以应用于生产了,已经兼容了全端,滑动表现已流畅(ios及android模拟器端已于头条对比过,无压力)。修复在h5端内容点击事件失效的问题。 +* tm-barcode条形码,tm-qrcode二维码生成组件在nvue端对安卓端额外优化进行适配。 +* tm-sign-board修复3.6.0 sdk和3.5.5sdk下在安卓端签名时位置的异常(我真的无语) +* tm-codeinput在nvue端修复了呼吸效果。 +* nvue端tm-skeleton-line组件修复了骨架呼吸动画。 +* 修复tm-icon组件nvue端,可能由于变量机制未回收导致ios和andriod程序的内存泄漏造成不同程度的卡顿情况。 +* 针对nvue端,由Bingdingx动画全部切换成了Animation动画,手势动画继续保留为BingdxingX。 +* tm-form-item 修复插入自定组件,非指定组件时,默认的标题校验值异常。 +* tm-calendar 修复上个版本修改时,把确认事件给删除了,导致数据不同步,事件不触发。 +* tm-overlay 修复如果外层套了父元素有间距,影响弹层的位置。 +* 修改$tm挂载时机。因为部分人反映没有挂载成功。(只有个别人反映,我反正是成功的)。 +* tm-action-menu修复安全区域丢失 +* radio-group,checkbox-group新增了align属性,用于对齐,可选,左,中,右,见文档。 +* 修复因全局只获取一次系统信息的缘故,在h5端未能检测窗口变化,导致一些弹层位置 异常。现在位置为响应式了。 +* tm-image增加showMenuByLongPress属性 +* tm-message新增:width,height属性。同时新增默认插槽替换自带的内容。 +## 3.0.81(2022-8-29) +* 修改兼容了sdk 3.5.5。因为uni最新的sdk修复(改)了接口getSystem返回值的bug,我的组件同步要更新。之前因为为了个bug我不得不自己修复。现在他修复了,又会导致我的问题。无奈。 +* 大量的减少代码的冗余,所有动画弹出效果向原生的渐隐对齐,关闭和弹出的背景动画与内容动画同步,显得更为流畅不突兀。 +* 修复了因为uni plus+底层代码调用,导致部分安卓机型白屏的问题(非我所致,h5+本身的接口bug不兼容所有安卓) +* tm-form 开放了属性transprent,以支持透明背景,去掉背景色。 +* 【重要】在h5端彻底解决了暗黑切换页面短暂的闪白问题,现在切换暗黑,导航致任何页面都将不会出现闪白,而是沉浸式原生暗黑效果。 +* 【重要】针对QQ小程序,重要优化,现在已经可以和h5,微信小程序一样的流畅使用 +* 修复tm-divider在上个版本修改中失效了。 +* 修复tm-progress在nvue上 ios系统下圆形渲染背景失效的问题。 +* tm-drawer新增:disabbleScroll是否禁用内容可滚动。默认为false +* tm-form-item,新增属性requiredTitleChangeColor,具体看文档 +* tm-modal,gm-message等组件兼容了有些异常机型包括QQ小程序。 +* tm-collapse-item新增titleSize设置标题字号属性 +* tm-pagination增加了点按效果,以便提供更友好的点按反馈 +* 【重要,如果你升级后有问题(如果你的代码在useTmRouterBefore中依赖了context,升级后这个值为null )】修改router路由拦截,useTmRouterBefore勾子使用uni拦截器拦截,因此是早于页面切换前执行. +* tm-keyborad键盘优化了细节,点按按钮时效果会有明显的缩小和变浅,以增强按下的提示效果。车牌键盘输入增强:在第一个中文输入后自动切换到英文键盘方便车牌的输入。 +* 其它组件代码逻辑优化修改,和近一周的修复 修改,优化了相关组件代码,使用是相关组件更流畅。 +## 3.0.80(2022-8-17) +* 新增了35+新图标。 +* tm-app新增了menu插槽,用来显示左滑覆盖页面的菜单,类似flutter的菜单。 +* tm-weekbar新增model=week,custom和rowNumber,可以自定义显示几天为一周。 +* tm-tabs,tm-tabs-pane增加了count属性,以支持在标题的右上角添加非dot属性,比如数字,文字。 +* 优化了tm-drawer代码逻辑,防抖逻辑。 +* 【修复】tm-time-picker右上解确认文本主题色未跟随主题。 +* tm-avatar增加了unit属性 +* 【修复】tm-divider在纵向时,real-color属性失效。 +* tm-modal的calseable单词拼写错误,修正 +* tm-progress增加圆环时的文字插槽title +* tm-picker做了一点让步。本意上我所有的picker中的model-str本意是为了大家方便省得通过索引(或者时间对象转字符串,比如element ui,arco就不提供这功能,只提供时间对象)来显示字符串,只是用来显示,并不能作为值来取。但实际上大家习惯用这个属性当作选中的值。 +* tm-drawer 优化了显示方式,修复可能在低版本ios下显示异常的bug +* tm-pagination组件因历史遗留兼容,后期未跟进uni更新bug修复,导致点击事件重复,跳页异常。 +* tm-button,修复因为我的类重名安卓系统下的hack某类功能,导致所有按钮组件在安卓小程序下点击时有浅青蓝背景。 +* tm-tabbar 【修复】手动模式切换下,连续点击当前选中项会失去焦点。 +* tm-keyborad 新增decimal:是否显示数字键盘时的小数点。【修复】键盘change没有被触发。同时优化,添加了按下的效果显示。【修复】当外部改变数据时,键盘标题未跟随变化。 + 同时增加了showInputContent是否显示输入内容在键盘顶部。 +* tm-checkbox,tm-radio添加了属性:custom,用于隐藏默认的选中状态,只显示插槽。 +* 修复tm-popover在安卓上无法弹出(上个版本更新语法时未更改到。) +* tm-forme-item属性required设置为true,验证时,标题前面自动加上红*前缀。 + +## 3.0.78(2022-8-8) +* 【这是一个元气满满的版本,所有动画性能和相关组件进行了优化,生产必更新的版本!】 +* tm-drawer 上个版本遗留的问题,确认和取消回调异常。 +* tm-picker 修复因默认值忘记处理,导致提供默认值,无法初始选中。 +* tm-cell 修复在vue页面下,右边文本如果过长会断行的问题。【nvue不受此影响】 +* tm-translate修改了动画类型。 +* tm-collapse-item优化了样式 +* tm-tabs现在优化了左右滑动的动画和性能,目前采用渲染左右两列。其它的不渲染【非swiper封装,因此你可以大胆的放入任意组件】 +* tm-button增加了unit单位【社区 Tycoon Song 提供】 +* 【新增数据表格组件】tm-data-table 【社区 Tycoon Song 提供并维护】,注意:该组件使用了动态slot,因此在小程序上目前不支持使用该组件。 +* tm-modal调整了防抖。 +* tm-carousel修复上个版本遗留的问题,计数器失效。以及在真机上圆角失效问题。 +* 修复在QQ小程序上报错,无法使用的问题 +* tm-calendar,tm-calendar-view新增隐藏头部工具栏和底部按钮的属性。 +* tm-calendar,新增弹层的圆角round属性。 +* 修复弹层组件,在部分手机弹出时,键盘未收起,引起计算弹层的高度问题。 +* 修复tm-model closeable失效的问题 +* 大量优化动画性能的流畅度。 +* 更改了大量代码适配支付宝,QQ小程序的兼容。 +* tm-slide-switch优化滑动性能,现在看起来更为流畅了。 +* tm-translate,tm-modeal等弹层或者动画组件全部优化了动画性能,现在更为流畅。 +* tm-divider添加了字体大小属性 +* tm-tabs的list结构体中新增了dot,dotColor,tm-tabs-pane相应增加了相关属性。用以在标题上显示角标红点。 +## 3.0.77(2022-8-2) +* 【非常重要的功能】新增路由守卫。凡是本版本号以下的应用升级到3.0.77将会直接报错。请一定按照要求在src(或者hbx项目根目录)下[创建相关路由前置文件见文档](https://tmui.design/doc/JSTool/router.html) +* 修复tm-alert高度计算有误。 +* 修复tm-comment组件authorColor属性失效 +* 修改了tm-tabs,日志见文档,主要增加了底部导航线条动画,强化类型提示。 +* tm-stepper更改特性见文档 +* utils.ts修改了类型提示,增加了routerTo跳转方法,同时增加了更新了ts类型提示 +* tm-action-menu修改一些问题,及更新了样式。 +* tm-overlay修改了一些问题 +* tm-badge修改了在vue页面的问题,见gitee +* tm-calendar,tm-time-picker等弹层组件,修改了ref方法引入方式,正式采用了vue3推荐的方法,去除了原先的proxy方式。后续组件将逐步淘汰使用proxy方案。而是采用vue3 ts推荐方案,这样ref方法可以得到ts类型推导的提示,同时消除了红波浪线。 +* tm-collapse,tm-collapse-item增强了功能,具体见文档修改说明。 +* tm-drawer修改了防抖,修改了一些其它代码问题 +* tm-tabaar修复了跳转方法问题 +* tm-upload增加插槽icon,用来自定义上传图标的上传提示 +* utils.ts中的getWindow方法更新了计算方案。现在可以在任意位置使用了。不需要在onMounted中使用。 +* tm-navbar添加了back挂载事件beforeBack,可以在返回前做异步/同步方法。同时增加了hideBack,可以隐藏自带的返回图标。 +* tm-result增加了整个组件的点击事件,以及是否禁用此事件的属性。 +* tm-modal修复在vue页面,第二个按钮异常的情况。 +* tm-drawer增加了标题插槽title +* tm-tabbar增强,新增了属性active,和事件change。可以通过双向绑定v-model:active来控制选中的项。 +* fetch请求中request中的beforeFun会预执行,如果返回为false,将中止请求。 +* 修复了许多代码细节(微信群,和gitee上提到的)问题,因这次没有记录详细的组件修改日志,具体有些修改细节体现在文档中了。 +## 3.0.75(2022-7-23) +* tm-app【重要更新】删除了自带的tabr属性。从这个版本开始,本框架将自动读取你的pages.json下的tabBar下配置的相关设置:比如选中色,背景色等,如果未设置将启用框架自带的配置色。 +* tm-tabs 【重要功能】新增了swiper属性,可开启内容左右滑动切换tabs,兼容全平台,不用担心兼容问题,组件内部非swiper组件。 +* 【重要】现在你输入uni.$tm将会有全局提示本库的所有方法以及参数类型,省得看文档或者肓猜了~ +* tm-switch修复间距没对齐的问题,优化点击切换区域为整个组件区域。 +* tm-coupon[优化]按钮大小。 +* tm-app【修复】在app端默认为一屏时出现多余的滚动间距。 +* tm-overflay【修复】在app端弹层时,高度计算有误,导致底部按钮被安全区遮挡。 +* tm-modal,修复可能在安卓真机上触发ok事件造成穿透触发两次,修复在sdk 3.5.0以上时,加载时由于uni的问题造成字体偏移,帮加强了下使用行高控制。 +* jstool工具新增:toast,getWindow(统一各平台返回安全区高度和宽度,大家可能都知道如果使用uni自带的返回的高度,需要自己进行繁锁的计算和加减,这里我抹平了差异) +* tm-drawer新增了一个unit属性,仅支持px,rpx,新增了zIndex层级 +* tm-icon修改了行高的配置,默认为字号大小为行高,解决可能在不同平台出现的对齐问题。 +* tm-dropdown【修复】在安卓上的类型异常,以box裁切问题。 +* tm-segtab【修复】在安卓端nvue页面时,计算精度超长了一定小数点位时,安卓侧计算出现了紊乱。 +* 【新增组件】tm-scrollx 横向滚动条,用于兼容全平台时使用,显示自定的导航滚动样式色彩 +* tm-picker【修复】字段dataKey失效。 +* tm-grid【修复】设置的宽度无效。 +* tm-sheet【优化】调整了默认的上下间距,为常用的12间距,横向间距不变。 +* tm-stepper【修复】点按时,如果设置最小值,还能继续。优化后,如果超过最大或者小于最小值,继续点按将会被重置为最小或者最大值。 +* tm-button【修复】round为0时无法取消圆角,现在规定设置为-1时,即为0圆角。 +* tm-action-menu【修复】圆角问题。同时去除了半磨砂效果,原因在h5端会出现线缝,影响美观。 +* tabbar【修复】在MP小程序端,如果手机出现安全区域时,内容居中,而不上往上对齐,导致凸起的按钮偏下。同时删除tabbar 的click事件,因为事件穿透问题导致混乱故去除,不影响整体功能。 +* tm-table【重要更新】请认真阅读文档使用。新的功能增特性有:单元格可定制样式,定制横向样式,和纵向列样式,纵向列头,增加排序功能(只对纯数字或者纯字母有效排列),单元格数据类型新加:按钮和文本两种 +* tm-translate,tm-message,tm-drawer等全系动画优化在微信小程序下的表现。 +* tm-col【修复】在vue页面对齐失效。NVUE页面不受此影响。 +* tm-cell,新增rightTextSize右边文字大小。 +* tm-watermark水印修复兼容问题---[来自社区Tycoon Song维护] +* tm-collapse【修复】在vue页面中多次嵌套后内容展现异常,NVUE页面不受此影响 +* 优化了tm-picker,tm-city-picker,tm-time-picker系列弹层组件高度和代码。 +* 文档的更正 +* 官网已经公布赞助者名单,并不断更新,如果对你的项目有帮助请支持赞助我吧! +## 3.0.74(2022-7-18) +* tm-picker-view 【优化】当项目文字超过7个时,自动把文字缩小,以免挤满单元格。 +* tm-button 【优化】新增small尺寸,现在有:mini,small,normal,large,block可选。同时修改了一些默认的样式尺寸属性。 +* tm-app【优化】添加了属性:darkColor,用来设定自定义的暗黑下的背景色值(只能设置为颜色值,而不是主题 。) +* tm-dropdown优化了属性类型设置错误 +* 一些代码上的优化。 +## 3.0.73(2022-7-15) +* tm-icon增加了unit单位属性【社区 :tycool Song 贡献】 +* tm-text增加了unit单位属性【社区 :tycool Song 贡献】 +* tm-sheet【修复】计算宽度问题【社区 :tycool Song 贡献】 +* tm-image【修复】计算宽度问题【社区 :tycool Song 贡献】 +* tm-navbar【增加了unit】单位属性,方便宽屏使用时,字号过大时,通过此属性设计单位【社区 :tycool Song 贡献】 +* fetch请求工具,【修复变更重名问题】。 +* tm-overlay【修复】导航设置为全屏时,判断出错,调用了top导致内容往下掉了44px.请大家及时 更新(如果用到了全屏页面) +* tm-sign-board【修复】在h5端失效的问题,【修复因sdk 3.5.1更新了canvas的event的返回参数与之前版本不一致,导致本组件在nvue上失效!!!无奈】 +* tm-form【严重】【修复】校验问题。 +* tm-grid【修复】showBorder,不起作用的bug问题。 +* 【新增组件】tm-watermark ,由【社区 :tycool Song 贡献】,但目前作者本人未对其审核适配到全平台,目前仅web/h5可用。 +* tm-roll-notice【修复】在小程序端断行的bug +* tm-segtab【优化】对齐相差1px像素的问题。 +* 其它代码优化 + +## 3.0.72(2022-7-9) +* 因sdk351导致tm-dropdown报错现已修复。并优化,美化了该组件,现在更为美观了。 +* tm-tabbar-item【修复】公共属性缺失,导致投影,渐变失效的bug,现在凸起按钮,可以设置渐变了。 +* tm-modal优化了样式细节 +* tm-float-button主按钮添加了一个默认的插槽,用于自定义主按钮内容。 +* 核心主题计算参数调整。 +## 3.0.71(2022-7-8) +* uniapp官方已发布3.5.1,将及时根据更新日志更新本组件一些新特性。 +* movable-area在sdk 3.5.1版本新增了一个属性动态disable,我立即更新了tm-slide-witch组件的问题,现在你用力往左拉将会动态阻止你向左偏移过多距离的问题。 +* 因新的sdk支持在h5中使用hover-class。将使得pc web操作变得可有指向性。我也跟进更新。 +* 新的sdk修复了ref的bug,支付宝,百度们可试下本组件pcker是否正常了,建议大家及时更新版本sdk. +* 因sdk3.5.1更新了IOS端nvue bindingx等,导致tm-switch开关动画异常。现已修复。 +* tm-icon去除默认行高,否则导致排版偏上。 +* tm-tabbar修复在安卓上出现裁剪的情况 +* 【新增组件】tm-barcode 条形码,用于产品,打印场景。支持的码制众多,有需要的同学可以使用。 +* tm-roll-notice删除一个小问题 +* tm-form-item,新增:showError控制(在验证失败时是否显示错误信息提示),同时新增rules属性规则支持数据校验对象。旧版本升级后,请检查tm-form校验是否有问题,如果有问题请按照新文档使用。 + 理论上tm-form是向下兼容了的。 +* 其它一些问题的修改 + +## 3.0.7(2022-7-5) +* tm-tag新增fontColor属性,默认为空即自动配色。 +* 框架内部增加了小程序分享 +* tm-tabar增强了类型错误提示。 +* tm-tabbar-item增加了属性:data,自定绑定数据到项目上。方便在beforeClick函数体内调用当前自定义数据。 +* tm-input type="texarea"时同步了官方的一些属性。同时在demo示例了添加了文本域换行的例子。同时修复因uniapp自身的输入框bug(出现password属性即可显示)导致安卓端无法换行 +* tm-alert,新增showDot属性,默认为false,是否显示底部序号数字。 +* 【新增组件】tm-sign-borad,签名板,使用见文档。 +* tm-divider,新增属性realColor,是否使用原始色值 +* tm-image新增close事件,当关闭图片时触发。请注意与delete事件的区别。 +* tm-qrcode新增ref方法save,保存当前二维码图片 +* 【新增组件】tm-roll-notice,滚动消息通知,使用见文档。 +* tm-form【优化】表单在重置时,在小程序平台,可能造成概率性未重置到默认初始值。而是被清除至空。 +* tm-float-button 【修复】主按钮在微信小程序下图标颜色和文字颜色未跟随主题适配颜色。 +* tm-collapse 【优化增强】,新增iconPos属性,展开的图标位置,可选left,right +* tm-collapse-item 【优化增强】,新增leftIcon,leftIconColor标题前图标。现在标题不限制长度和行数。 +* tm-button,增加了fontColor属性,默认为空,自动配色 +* 【新增组件】tm-coupon,优惠券,使用见文档。 +* tm-tabs一个兼容性问题 +* tm-tabbar兼容了appvue页面 +* cssTool文档错误更正 +* cssTool新增类:flex-row-center-between 上下居中,两边对齐。 +* jsTool增加了fecth网络请求工具。 +## 3.0.62(2022-6-28) +* 因uniapp 3.5.0.20220623-alpha sdk版本起渲染调整,在安卓端elevation属性将失效。然后同步所有平台的投影属性为box-shadow写法。导致布局错乱,特紧急发布新版本跟随新的sdk更新,支持新的特性。 +## 3.0.61(2022-6-23) +* tm-input 优化校验逻辑 +* tm-app 修复在nvue下,设定主题时,可能会发生概率性报错的问题。 +* 紧急修复一个逻辑问题,请大家及时更新新版本。如果是已安装应用请先卸载再安装。如果是调试应用,请也卸载再重新编译到基座(就是老的基座和老应用要删除重新安装。 + 包括小程序的所有平台,需要先清除本地应用数据再重新启动。) +* 非常抱歉! +## 3.0.6(2022-6-23) +* tm-button 【修复】在表单组件中,如果当button为loading时,还能触发提交表单事件。 +* tm-countdown 【修复】当初始时插槽中未能正确返回当前是否完成的数据。 +* tm-input 【修复】上个版本未能加上focus属性。 +* tm-message 【修复】3.0.5版本引出的关闭问题。 +* tm-checkbox,默认插槽名称default已删除(不是删除这个插槽)。因为uniapp的bug。不能在插槽中写入数据和写默认的name="default",否则不兼容微信 小程序。 +* 【uniapp bug】修复兼容pinia因为uniapp的vue页面bug,导致在nvue和vue页面混用或者纯vue页面时,会造成白屏,或者其它出现pinia未引入的问题。 +* 【uniapp bug】修复兼容uniapp的uni.getSystemSync()函数在nvue页面调用时,如果出现在weex调试时,会造成获取不到系统信息时,造成页面崩溃。 +* tm-form-item 优化 +* 其它的小问题修复。 +* 文档的修正和完善。 +## 3.0.5(2022-6-20) +* tm-more 【优化修复】在pc端显示异常的样式问题。 +* tm-button 优化样式,修复文字不居中的问题。 +* tm-upload 【优化】添加了常用操作的ref函数方法,比如手动调用:上传,停止上传,清除文件列表等等。 +* tm-time-picker ,tm-picker 等选择器组件已经兼容暗黑模式。 +* tm-message 【修复】在原生nvue页面弹出时,概率性出现重复播放动画的问题。(其它平台正常)。 + [优化]在TS语法上的提示,已经为参数添加了interface类型提示。以增强代码书写的严谨性。 +* tm-picker 【修复】confirm事件第一次触发时未返回索引的bug. +* tm-radio 【修复】允许value为true. +* tm-skeleton-line 【优化】自定骨架屏组件,添加了个圆角属性round。 +* tm-avatr 【修复】在web端开启trigger时,鼠标移上去未出现手形手势。 +* tm-input 【优化】添加了foucs属性,以便初始使用时自动获得焦点。 +* tm-notification 【优化修复】当label为空时,默认不显示。更新内容时自动显示,或者手动调用显示。 +* 【核心】主题核心驱动参数调整优化,主要调整渐变配色,以及某些色域值过高饱和度时,文字配色过浅,不易于阅读。 +## 3.0.4(2022-6-13) +* 【重磅新增】i18n国际化配置,简便封装,降低配置难度,抹平全平台差异,不破坏原生国际化配置,不管是原生nvue还是小程序,亦是h5平台,统一调取方法,使用更简单。 +* 【重磅新增】这个版本开始,已经可以自动切换主题配色了。相关的组件主色调会跟着全局的主题色切换,而跟随切换。 +* 【重磅新增】这个版本开始,你可以手动在交互中添加主题并应用整个应用,比如让用户自定主题,而不是使用默认的主题,很爽吧!。 +* tm-tabbar-item 【重磅新增load属性】当此值为true时,图标会变为加载中效果。 + 同时如果提供了beforeClick异步函数,再没返回结果前图标同样是处于加载动画,加载中,点击事件效果不起作用。 +* tm-tabbar-item 【修复】修复在安卓上凸起按钮被裁剪的问题。 +* tm-app 【优化】app端,暗黑和亮切换在安卓下底部虚拟按钮区域的颜色与主题适应。 +* tm-calendar 【优化】样式视觉。 +* tm-tabbar 【优化修复】底部安全区域自动适配,只有showSafe为false时,自动适配。showSafe为false时,整体高度未减掉安全区域高度,并调整了整体的高度为60,之前为50. +* tm-keyborad 【优化】底部安全区域高度的适配。 +* tm-form 【优化]输入框组件在输入内容后的校验,通过代码方式主动赋值时再次进行检测校验。 +* tm-message 【修复】在nvue中的一个小错误。 +* tm-upload 【修复】在tm-from校验中错误的逻辑判断。 +* tm-drag-list 【修复】在微信小程序下拖动失效的问题。 +* tm-navbar,tm-sheet 【修复】在ios下磨砂文字色彩问题,当前所有组件应用磨砂效果时,背景色自动 启动text模式。如果想要纯背景色,请关闭磨砂效果。 +* tm-input 【修复】其它值为null时,会通过校验。 +* tm-time-picker 【修复】在h5端(其它平台正常)设置默认值时,显示不正确 +* tm-float-button 【优化】现在主按钮你将不需要填写图标颜色了,将使用主题的推断色,以便于主题切换,暗黑切换时,自动响应更改文字色值。如果提供了:将强制使用你提供的值,那将不能获得响应变化。 +* 完善相关文档教程 +## 3.0.2(2022-6-8) +* tm-overlay 【优化】了背景视觉 +* tm-action-menu 【优化】视觉 +* tm-checkbox 【优化】取消选中时返回false而不是"",虽然相等但是在强===下是不相等的。 +* tm-input 【优化】样式警告信息 +* 【新增】tm-chart图表组件,采用了Echarts 5.3.2最新版本,性能更为强劲。注意如果要在nvue平台显示,请创建vue页面展现图表获得更好的性能。同时兼容PC端。 +* 【新增】tm-navbar 标题导航栏 +* tm-sheet 【优化】兼容vue页面。 +* 【微调优化】了暗黑模式下的对比色,使得暗黑模式更具有质感与精致。 +* 优化各弹层组件在h5,pc端的底部距离,防止被遮住。 +* 【修复】tm-image单独开启预览时,无法预览的bug +* tm-action-menu 【优化】视觉效果,增加磨砂效果 +* tm-input【优化】了样式,补齐了投影和渐变这些属性。 +* tm-skeleton-line暂时关闭了,闪动效果,在ios nvue上会造成卡钝 +* tm-collapse 取消了原有的渐显动画 +* tm-picker增加了open打开,close关闭时事件 +* tm-button 【优化】设置宽和高的便捷性,宽和高可以任意设置一个,不再强制宽度和高必须同时设置,设置任意一个值时,另一个未设置时将取默认的size值。 +* tm-icon 【修复】在定义主题色彩为黑白灰时,切换到暗黑时,未跟随自适应,同时修复一个默认值的bug。 +* tm-image 【修复】动态更改地址时,没有正确匹配。 +* 【新增】tm-tabbar 底部导航栏 +* 【新增】tm-slide-switch 左滑操作栏 +## 3.0.1(2022-05-31) +* tm-indexes 【优化】引导层背景在暗黑模式下的背景使其与背景色区分开来。 +* tm-message 【优化】其在在暗黑和亮色下的边框显示。修复其在切换暗黑和亮色系后,未跟随切换回亮色系的bug。所有平台增加了背景磨砂效果【安卓原生nvue不支持】。修复其在安卓原生nvue下高度有时失效的问题。 +* tm-sheet 【优化】所有平台增加了背景磨砂效果。属性为:blur.设置为true后,自动虚化背景。【安卓原生nvue不支持】,ios原生nvue下是苹果的原生亮系磨砂。其它平台为css渲染的磨砂效果,样式可能有差异。 +* tm-modal 【优化】修改了默认宽度,使其占比稍微大一点。 +* tm-codeinput 【优化】会导致原生页面卡顿。因此去掉了原生的闪动动画, +* tm-progress 【修复】进度条在绘制圆形或者半圆型时丢失了背景色。 +* tm-keyborad [优化]顶部输入文字的大小和背景色。 +* tm-calendar 【优化】在暗模式下,周选择的同层背景色。优化了位置样式。 +## 3.0.0(2022-05-28) +* 发布第一个3.0.0版本为公测版本 +* 如果有遇到问题请提交bug至[Gitee](https://gitee.com/LYTB/tm-vuetify-for-vue3) + diff --git a/src/uni_modules/tmui/components.d.ts b/src/uni_modules/tmui/components.d.ts new file mode 100644 index 0000000..63d8e9d --- /dev/null +++ b/src/uni_modules/tmui/components.d.ts @@ -0,0 +1,115 @@ +// generated by unplugin-vue-components +// We suggest you to commit this file into source control +// Read more: https://github.com/vuejs/vue-next/pull/3399 + +declare module 'vue' { + export interface GlobalComponents { + + TmActionMenu: typeof import('./components/tm-action-menu/tm-action-menu.vue')['default'] + TmAlert: typeof import('./components/tm-alert/tm-alert.vue')['default'] + TmApp: typeof import('./components/tm-app/tm-app.vue')['default'] + TmAvatar: typeof import('./components/tm-avatar/tm-avatar.vue')['default'] + TmBadge: typeof import('./components/tm-badge/tm-badge.vue')['default'] + TmBarcode: typeof import('./components/tm-barcode/tm-barcode.vue')['default'] + TmButton: typeof import('./components/tm-button/tm-button.vue')['default'] + TmCalendar: typeof import('./components/tm-calendar/tm-calendar.vue')['default'] + TmCalendarView: typeof import('./components/tm-calendar-view/tm-calendar-view.vue')['default'] + TmCard: typeof import('./components/tm-card/tm-card.vue')['default'] + TmCarousel: typeof import('./components/tm-carousel/tm-carousel.vue')['default'] + TmCascader: typeof import('./components/tm-cascader/tm-cascader.vue')['default'] + TmCell: typeof import('./components/tm-cell/tm-cell.vue')['default'] + TmChart: typeof import('./components/tm-chart/tm-chart.vue')['default'] + TmCheckbox: typeof import('./components/tm-checkbox/tm-checkbox.vue')['default'] + TmCheckboxGroup: typeof import('./components/tm-checkbox-group/tm-checkbox-group.vue')['default'] + TmCityCascader: typeof import('./components/tm-city-cascader/tm-city-cascader.vue')['default'] + TmCityPicker: typeof import('./components/tm-city-picker/tm-city-picker.vue')['default'] + TmCodeinput: typeof import('./components/tm-codeinput/tm-codeinput.vue')['default'] + TmCol: typeof import('./components/tm-col/tm-col.vue')['default'] + TmCollapse: typeof import('./components/tm-collapse/tm-collapse.vue')['default'] + TmCollapseItem: typeof import('./components/tm-collapse-item/tm-collapse-item.vue')['default'] + TmComment: typeof import('./components/tm-comment/tm-comment.vue')['default'] + TmCountdown: typeof import('./components/tm-countdown/tm-countdown.vue')['default'] + TmCoupon: typeof import('./components/tm-coupon/tm-coupon.vue')['default'] + TmCropimg: typeof import('./components/tm-cropimg/tm-cropimg.vue')['default'] + TmDataTable: typeof import('./components/tm-data-table/tm-data-table.vue')['default'] + TmDescriptions: typeof import('./components/tm-descriptions/tm-descriptions.vue')['default'] + TmDescriptionsItem: typeof import('./components/tm-descriptions-item/tm-descriptions-item.vue')['default'] + TmDivider: typeof import('./components/tm-divider/tm-divider.vue')['default'] + TmDragList: typeof import('./components/tm-drag-list/tm-drag-list.vue')['default'] + TmDrawer: typeof import('./components/tm-drawer/tm-drawer.vue')['default'] + TmDropdown: typeof import('./components/tm-dropdown/tm-dropdown.vue')['default'] + TmFloatButton: typeof import('./components/tm-float-button/tm-float-button.vue')['default'] + TmForm: typeof import('./components/tm-form/tm-form.vue')['default'] + TmFormItem: typeof import('./components/tm-form-item/tm-form-item.vue')['default'] + TmGrid: typeof import('./components/tm-grid/tm-grid.vue')['default'] + TmGridItem: typeof import('./components/tm-grid-item/tm-grid-item.vue')['default'] + TmIcon: typeof import('./components/tm-icon/tm-icon.vue')['default'] + TmImage: typeof import('./components/tm-image/tm-image.vue')['default'] + TmImageGroup: typeof import('./components/tm-image-group/tm-image-group.vue')['default'] + TmIndexes: typeof import('./components/tm-indexes/tm-indexes.vue')['default'] + TmIndexesItem: typeof import('./components/tm-indexes-item/tm-indexes-item.vue')['default'] + TmInput: typeof import('./components/tm-input/tm-input.vue')['default'] + TmKeyborad: typeof import('./components/tm-keyborad/tm-keyborad.vue')['default'] + TmMessage: typeof import('./components/tm-message/tm-message.vue')['default'] + TmModal: typeof import('./components/tm-modal/tm-modal.vue')['default'] + TmMore: typeof import('./components/tm-more/tm-more.vue')['default'] + TmNavbar: typeof import('./components/tm-navbar/tm-navbar.vue')['default'] + TmNotification: typeof import('./components/tm-notification/tm-notification.vue')['default'] + TmOverlay: typeof import('./components/tm-overlay/tm-overlay.vue')['default'] + TmPagination: typeof import('./components/tm-pagination/tm-pagination.vue')['default'] + TmPaper: typeof import('./components/tm-paper/tm-paper.vue')['default'] + TmPicker: typeof import('./components/tm-picker/tm-picker.vue')['default'] + TmPickerView: typeof import('./components/tm-picker-view/tm-picker-view.vue')['default'] + TmPopover: typeof import('./components/tm-popover/tm-popover.vue')['default'] + TmProgress: typeof import('./components/tm-progress/tm-progress.vue')['default'] + TmQrcode: typeof import('./components/tm-qrcode/tm-qrcode.vue')['default'] + TmRadio: typeof import('./components/tm-radio/tm-radio.vue')['default'] + TmRadioGroup: typeof import('./components/tm-radio-group/tm-radio-group.vue')['default'] + TmRate: typeof import('./components/tm-rate/tm-rate.vue')['default'] + TmRender: typeof import('./components/tm-render/tm-render.vue')['default'] + TmResult: typeof import('./components/tm-result/tm-result.vue')['default'] + TmRollNotice: typeof import('./components/tm-roll-notice/tm-roll-notice.vue')['default'] + TmRow: typeof import('./components/tm-row/tm-row.vue')['default'] + TmScrollx: typeof import('./components/tm-scrollx/tm-scrollx.vue')['default'] + TmScrolly: typeof import('./components/tm-scrolly/tm-scrolly.vue')['default'] + TmHtml: typeof import('./components/tm-html/tm-html.vue')['default'] + TmFilterMenu: typeof import('./components/tm-filterMenu/tm-filterMenu.vue')['default'] + TmFilterMenuItem: typeof import('./components/tm-filterMenu-item/tm-filterMenu-item.vue')['default'] + TmSegtab: typeof import('./components/tm-segtab/tm-segtab.vue')['default'] + TmSheet: typeof import('./components/tm-sheet/tm-sheet.vue')['default'] + TmSignBoard: typeof import('./components/tm-sign-board/tm-sign-board.vue')['default'] + TmSkeleton: typeof import('./components/tm-skeleton/tm-skeleton.vue')['default'] + TmSkeletonLine: typeof import('./components/tm-skeleton-line/tm-skeleton-line.vue')['default'] + TmSlideSwitch: typeof import('./components/tm-slide-switch/tm-slide-switch.vue')['default'] + TmSlider: typeof import('./components/tm-slider/tm-slider.vue')['default'] + TmSpin: typeof import('./components/tm-spin/tm-spin.vue')['default'] + TmStatistic: typeof import('./components/tm-statistic/tm-statistic.vue')['default'] + TmStepper: typeof import('./components/tm-stepper/tm-stepper.vue')['default'] + TmSteps: typeof import('./components/tm-steps/tm-steps.vue')['default'] + TmStepsItem: typeof import('./components/tm-steps-item/tm-steps-item.vue')['default'] + TmSticky: typeof import('./components/tm-sticky/tm-sticky.vue')['default'] + TmSwitch: typeof import('./components/tm-switch/tm-switch.vue')['default'] + TmTabbar: typeof import('./components/tm-tabbar/tm-tabbar.vue')['default'] + TmTabbarItem: typeof import('./components/tm-tabbar-item/tm-tabbar-item.vue')['default'] + TmTable: typeof import('./components/tm-table/tm-table.vue')['default'] + TmTabs: typeof import('./components/tm-tabs/tm-tabs.vue')['default'] + TmTabsPane: typeof import('./components/tm-tabs-pane/tm-tabs-pane.vue')['default'] + TmTag: typeof import('./components/tm-tag/tm-tag.vue')['default'] + TmText: typeof import('./components/tm-text/tm-text.vue')['default'] + TmTimePicker: typeof import('./components/tm-time-picker/tm-time-picker.vue')['default'] + TmTimeView: typeof import('./components/tm-time-view/tm-time-view.vue')['default'] + TmTimeline: typeof import('./components/tm-timeline/tm-timeline.vue')['default'] + TmTimelineItem: typeof import('./components/tm-timeline-item/tm-timeline-item.vue')['default'] + TmTranslate: typeof import('./components/tm-translate/tm-translate.vue')['default'] + TmTree: typeof import('./components/tm-tree/tm-tree.vue')['default'] + TmUpload: typeof import('./components/tm-upload/tm-upload.vue')['default'] + TmVirtualList: typeof import('./components/tm-virtual-list/tm-virtual-list.vue')['default'] + TmWaterfall: typeof import('./components/tm-waterfall/tm-waterfall.vue')['default'] + TmWaterfallItem: typeof import('./components/tm-waterfall-item/tm-waterfall-item.vue')['default'] + TmWatermark: typeof import('./components/tm-watermark/tm-watermark.vue')['default'] + TmWeekbar: typeof import('./components/tm-weekbar/tm-weekbar.vue')['default'] + + } +} + +export { } diff --git a/src/uni_modules/tmui/components/tm-action-menu/tm-action-menu.vue b/src/uni_modules/tmui/components/tm-action-menu/tm-action-menu.vue new file mode 100644 index 0000000..05eca4b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-action-menu/tm-action-menu.vue @@ -0,0 +1,224 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-adsorb/tm-adsorb.vue b/src/uni_modules/tmui/components/tm-adsorb/tm-adsorb.vue new file mode 100644 index 0000000..01f5451 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-adsorb/tm-adsorb.vue @@ -0,0 +1,190 @@ + + + + + + + diff --git a/src/uni_modules/tmui/components/tm-adsorb/touch.wxs b/src/uni_modules/tmui/components/tm-adsorb/touch.wxs new file mode 100644 index 0000000..d78326f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-adsorb/touch.wxs @@ -0,0 +1,64 @@ +var state; +var startX = 0; +var startY = 0; +var left = 0; +var top = 0; +var prop; + +var startDrag = function (event, ownerInstance) { + //getState(ownerInstance); + //ownerInstance.callMethod('gettest',333) + // ownerInstance.selectComponent("#adsorb") + prop = event.currentTarget.dataset.prop; + + var touch = event.touches[0] || event.changedTouches[0] + var rect = ownerInstance.selectComponent("#adsorb").getBoundingClientRect(); + left = rect.x; + top = rect.y; + + startX = touch.clientX + startY = touch.clientY +}; +var onDrag = function (event, ownerInstance) { + if (event.preventDefault) { + event.preventDefault() + } + var touch = event.touches[0] || event.changedTouches[0] + ownerInstance.selectComponent("#adsorb").setStyle({ + left: left + touch.clientX - startX + 'px', + top: top + touch.clientY - startY + 'px', + '-webkit-transition': 'none', + }) +}; +var endDrag = function (event, ownerInstance) { + var touch = event.touches[0] || event.changedTouches[0] + var rect = ownerInstance.selectComponent("#adsorb").getBoundingClientRect(); + left = rect.x; + top = rect.y; + if (prop.adsorb) { + + if (Math.abs((rect.x + rect.width / 2)) <= prop.sys.width / 2) { + left = - prop.adsorbX + } else { + left = prop.sys.width - rect.width + prop.adsorbX + } + if (top >= prop.sys.height - rect.height) { + top = prop.sys.height + prop.sys.top - rect.height + } + if (top <= 0) { + top = 0 + } + ownerInstance.selectComponent("#adsorb").setStyle({ + left: left + 'px', + top: top + 'px', + '-webkit-transition': 'all ' + prop.duration + 'ms cubic-bezier(0.18, 0.89, 0.32, 1)', + }) + } +}; +var change = function (newval, oldval) { +} +module.exports = { + startDrag: startDrag, + onDrag: onDrag, + endDrag: endDrag +}; diff --git a/src/uni_modules/tmui/components/tm-alert/tm-alert.vue b/src/uni_modules/tmui/components/tm-alert/tm-alert.vue new file mode 100644 index 0000000..13bd3b1 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-alert/tm-alert.vue @@ -0,0 +1,205 @@ + + + diff --git a/src/uni_modules/tmui/components/tm-app/tm-app.vue b/src/uni_modules/tmui/components/tm-app/tm-app.vue new file mode 100644 index 0000000..b77fa46 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-app/tm-app.vue @@ -0,0 +1,380 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-avatar/tm-avatar.vue b/src/uni_modules/tmui/components/tm-avatar/tm-avatar.vue new file mode 100644 index 0000000..937b6fa --- /dev/null +++ b/src/uni_modules/tmui/components/tm-avatar/tm-avatar.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-badge/tm-badge.vue b/src/uni_modules/tmui/components/tm-badge/tm-badge.vue new file mode 100644 index 0000000..4ff4b88 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-badge/tm-badge.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-barcode/drawing.ts b/src/uni_modules/tmui/components/tm-barcode/drawing.ts new file mode 100644 index 0000000..b30223b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/drawing.ts @@ -0,0 +1,149 @@ +/** + * 条形码绘制 + * 移植自:https://github.com/lindell/JsBarcode/ + * @auth tmzdy | tmui + */ +import JsBarcodeOptions from "./jsbarcode/options/defaults.js" +export interface Baroptions { + width: number,//线条的宽度 + height: number,//线条的高度。 + format: string, //条码类型 + displayValue?: boolean, //是否显示下方文本 + fontOptions?: string, + font?: string, + text?: string, + textAlign?: string, + textPosition?: string, + textMargin: number,//文本与条码的间距 + fontSize: number, + background?: string, + lineColor?: string, + margin?: number,//间距 + marginTop: number, + marginBottom?: number, + marginLeft?: number, + marginRight?: number, + valid?: Function +} +export interface BarcodeObjType { + text: string, + data: string, + options: Baroptions +} +let isAndroid = false +// #ifdef APP-NVUE +isAndroid = uni.getSystemInfoSync().osName == 'android'; +// #endif +var ctx: CanvasRenderingContext2D; +function drawCanvasBarcode(options: Baroptions = JsBarcodeOptions, encoding: BarcodeObjType, is2d = false, canvasWidth = 300) { + var binary = encoding.data; + var yFrom; + var height = options.height - 60 + if (options.textPosition == "top") { + yFrom = options.marginTop + options.fontSize + options.textMargin; + } + else { + yFrom = options.marginTop; + } + if (is2d) { + ctx.fillStyle = options.lineColor; + } else { + ctx.setFillStyle(options.lineColor); + } + let MAR = (canvasWidth - binary.length * options.width) / 2 + + for (var b = 0; b < binary.length; b++) { + var x = b * options.width + Math.floor(MAR); + if (binary[b] === "1") { + ctx.fillRect(x, yFrom, options.width, options.height); + } + else if (binary[b]) { + ctx.fillRect(x, yFrom, options.width, options.height * Number(binary[b])); + } + } + if (!is2d) { + ctx.draw() + } + +} + +function drawCanvasText(options: Baroptions = JsBarcodeOptions, encoding: BarcodeObjType, is2d = false, canvasWidth = 300) { + ctx.clearRect(0, 0, canvasWidth, options.height + 40) + var font = "" + // #ifdef APP-NVUE + if (isAndroid) { + font = ((options.fontSize)) + "px " + options.font; + } else { + font = ((options.fontSize) * uni.getSystemInfoSync().pixelRatio) + "px " + options.font; + } + // #endif + // #ifndef APP-NVUE + font = (options.fontSize) + "px " + options.font; + // #endif + if (options.displayValue) { + var x, y; + + if (options.textPosition == "top") { + y = options.marginTop + options.fontSize - options.textMargin; + } + else { + y = options.height + options.textMargin + options.marginTop + options.fontSize; + } + ctx.font = font; + // let textWidth = ctx.measureText(encoding.text+' ').width||0 + if (options.textAlign == "left") { + x = 1; + ctx.textAlign = 'left'; + } + else if (options.textAlign == "right") { + x = canvasWidth - 1; + ctx.textAlign = 'right'; + } + else { + x = (canvasWidth) / 2; + ctx.textAlign = 'center'; + } + + ctx.fillText(encoding.text, x, y); + + } +} + +function drawBarCode(context: CanvasRenderingContext2D, options: Baroptions = JsBarcodeOptions, encoding: BarcodeObjType, is2d = false, canvasWidth = 300) { + ctx = context; + drawCanvasText(options, encoding, is2d, canvasWidth) + drawCanvasBarcode(options, encoding, is2d, canvasWidth) + // #ifdef APP-NVUE + if (isAndroid) { + // 最新的sdk3.6.0首次需要绘制两次在安卓上才会显示。 + setTimeout(function () { + drawCanvasText(options, encoding, is2d, canvasWidth) + drawCanvasBarcode(options, encoding, is2d, canvasWidth) + }, 50); + } + // #endif +} + + +export { drawBarCode } + + + + + + + + + + + + + + + + + + + + + diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/JsBarcode.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/JsBarcode.js new file mode 100644 index 0000000..ffc7474 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/JsBarcode.js @@ -0,0 +1,205 @@ +// Import all the barcodes +import barcodes from './barcodes'; +// Help functions +import merge from './help/merge.js'; +import linearizeEncodings from './help/linearizeEncodings.js'; +import fixOptions from './help/fixOptions.js'; +import getRenderProperties from './help/getRenderProperties.js'; +import optionsFromStrings from './help/optionsFromStrings.js'; + +// Exceptions +import ErrorHandler from './exceptions/ErrorHandler.js'; +import { InvalidInputException, NoElementException } from './exceptions/exceptions.js'; + +// Default values +import defaults from './options/defaults.js'; + +// The protype of the object returned from the JsBarcode() call +let API = function () { }; + +// The first call of the library API +// Will return an object with all barcodes calls and the data that is used +// by the renderers +let JsBarcode = function (element, text, options) { + var api = new API(); + + if (typeof element === "undefined") { + throw Error("No element to render on was provided."); + } + + // Variables that will be pased through the API calls + api._renderProperties = getRenderProperties(element); + api._encodings = []; + api._options = defaults; + api._errorHandler = new ErrorHandler(api); + + // If text is set, use the simple syntax (render the barcode directly) + if (typeof text !== "undefined") { + options = options || {}; + + if (!options.format || options.format == "auto") { + options.format = autoSelectBarcode(); + } + api.options(options)[options.format](text, options).render(); + } + + return api; +}; + +// To make tests work TODO: remove +JsBarcode.getModule = function (name) { + return barcodes[name]; +}; + +// Register all barcodes +for (var name in barcodes) { + if (barcodes.hasOwnProperty(name)) { // Security check if the propery is a prototype property + registerBarcode(barcodes, name); + } +} +function registerBarcode(barcodes, name) { + API.prototype[name] = + API.prototype[name.toUpperCase()] = + API.prototype[name.toLowerCase()] = + function (text, options) { + var api = this; + return api._errorHandler.wrapBarcodeCall(function () { + // Ensure text is options.text + options.text = typeof options.text === 'undefined' ? undefined : '' + options.text; + + var newOptions = merge(api._options, options); + newOptions = optionsFromStrings(newOptions); + var Encoder = barcodes[name]; + var encoded = encode(text, Encoder, newOptions); + api._encodings.push(encoded); + + return api; + }); + }; +} + +// encode() handles the Encoder call and builds the binary string to be rendered +function encode(text, Encoder, options) { + // Ensure that text is a string + text = "" + text; + + var encoder = new Encoder(text, options); + + // If the input is not valid for the encoder, throw error. + // If the valid callback option is set, call it instead of throwing error + if (!encoder.valid()) { + throw new InvalidInputException(encoder.constructor.name, text); + } + + // Make a request for the binary data (and other infromation) that should be rendered + var encoded = encoder.encode(); + + // Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2] + // Convert to [1-1, 1-2, 2, 3-1, 3-2] + encoded = linearizeEncodings(encoded); + + // Merge + for (let i = 0; i < encoded.length; i++) { + encoded[i].options = merge(options, encoded[i].options); + } + + return encoded; +} + +function autoSelectBarcode() { + // If CODE128 exists. Use it + if (barcodes["CODE128"]) { + return "CODE128"; + } + + // Else, take the first (probably only) barcode + return Object.keys(barcodes)[0]; +} + +// Sets global encoder options +// Added to the api by the JsBarcode function +API.prototype.options = function (options) { + this._options = merge(this._options, options); + return this; +}; + +// Will create a blank space (usually in between barcodes) +API.prototype.blank = function (size) { + const zeroes = new Array(size + 1).join("0"); + this._encodings.push({ data: zeroes }); + return this; +}; + +// Initialize JsBarcode on all HTML elements defined. +API.prototype.init = function () { + // Should do nothing if no elements where found + if (!this._renderProperties) { + return; + } + + // Make sure renderProperies is an array + if (!Array.isArray(this._renderProperties)) { + this._renderProperties = [this._renderProperties]; + } + + var renderProperty; + for (let i in this._renderProperties) { + renderProperty = this._renderProperties[i]; + var options = merge(this._options, renderProperty.options); + + if (options.format == "auto") { + options.format = autoSelectBarcode(); + } + + this._errorHandler.wrapBarcodeCall(function () { + var text = options.value; + var Encoder = barcodes[options.format.toUpperCase()]; + var encoded = encode(text, Encoder, options); + + render(renderProperty, encoded, options); + }); + } +}; + + +// The render API call. Calls the real render function. +API.prototype.render = function () { + if (!this._renderProperties) { + throw new NoElementException(); + } + + if (Array.isArray(this._renderProperties)) { + for (var i = 0; i < this._renderProperties.length; i++) { + render(this._renderProperties[i], this._encodings, this._options); + } + } + else { + render(this._renderProperties, this._encodings, this._options); + } + + return this; +}; + +API.prototype._defaults = defaults; + +// Prepares the encodings and calls the renderer +function render(renderProperties, encodings, options) { + encodings = linearizeEncodings(encodings); + + for (let i = 0; i < encodings.length; i++) { + encodings[i].options = merge(options, encodings[i].options); + fixOptions(encodings[i].options); + } + + fixOptions(options); + + var Renderer = renderProperties.renderer; + var renderer = new Renderer(renderProperties.element, encodings, options); + renderer.render(); + + if (renderProperties.afterRender) { + renderProperties.afterRender(); + } +} + +export { JsBarcode }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/Barcode.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/Barcode.js new file mode 100644 index 0000000..d4e0a61 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/Barcode.js @@ -0,0 +1,9 @@ +class Barcode { + constructor(data, options) { + this.data = data; + this.text = options.text || data; + this.options = options; + } +} + +export default Barcode; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128.js new file mode 100644 index 0000000..717a785 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128.js @@ -0,0 +1,127 @@ +import Barcode from "../Barcode.js"; +import { SHIFT, SET_A, SET_B, MODULO, STOP, FNC1, SET_BY_CODE, SWAP, BARS } from './constants'; + +// This is the master class, +// it does require the start code to be included in the string +class CODE128 extends Barcode { + constructor(data, options) { + super(data.substring(1), options); + + // Get array of ascii codes from data + this.bytes = data.split('') + .map(char => char.charCodeAt(0)); + } + + valid() { + // ASCII value ranges 0-127, 200-211 + return /^[\x00-\x7F\xC8-\xD3]+$/.test(this.data); + } + + // The public encoding function + encode() { + const bytes = this.bytes; + // Remove the start code from the bytes and set its index + const startIndex = bytes.shift() - 105; + // Get start set by index + const startSet = SET_BY_CODE[startIndex]; + + if (startSet === undefined) { + throw new RangeError('The encoding does not start with a start character.'); + } + + if (this.shouldEncodeAsEan128() === true) { + bytes.unshift(FNC1); + } + + // Start encode with the right type + const encodingResult = CODE128.next(bytes, 1, startSet); + + return { + text: + this.text === this.data + ? this.text.replace(/[^\x20-\x7E]/g, '') + : this.text, + data: + // Add the start bits + CODE128.getBar(startIndex) + + // Add the encoded bits + encodingResult.result + + // Add the checksum + CODE128.getBar((encodingResult.checksum + startIndex) % MODULO) + + // Add the end bits + CODE128.getBar(STOP) + }; + } + + // GS1-128/EAN-128 + shouldEncodeAsEan128() { + let isEAN128 = this.options.ean128 || false; + if (typeof isEAN128 === 'string') { + isEAN128 = isEAN128.toLowerCase() === 'true'; + } + return isEAN128; + } + + // Get a bar symbol by index + static getBar(index) { + return BARS[index] ? BARS[index].toString() : ''; + } + + // Correct an index by a set and shift it from the bytes array + static correctIndex(bytes, set) { + if (set === SET_A) { + const charCode = bytes.shift(); + return charCode < 32 ? charCode + 64 : charCode - 32; + } else if (set === SET_B) { + return bytes.shift() - 32; + } else { + return (bytes.shift() - 48) * 10 + bytes.shift() - 48; + } + } + + static next(bytes, pos, set) { + if (!bytes.length) { + return { result: '', checksum: 0 }; + } + + let nextCode, index; + + // Special characters + if (bytes[0] >= 200) { + index = bytes.shift() - 105; + const nextSet = SWAP[index]; + + // Swap to other set + if (nextSet !== undefined) { + nextCode = CODE128.next(bytes, pos + 1, nextSet); + } + // Continue on current set but encode a special character + else { + // Shift + if ((set === SET_A || set === SET_B) && index === SHIFT) { + // Convert the next character so that is encoded correctly + bytes[0] = (set === SET_A) + ? bytes[0] > 95 ? bytes[0] - 96 : bytes[0] + : bytes[0] < 32 ? bytes[0] + 96 : bytes[0]; + } + nextCode = CODE128.next(bytes, pos + 1, set); + } + } + // Continue encoding + else { + index = CODE128.correctIndex(bytes, set); + nextCode = CODE128.next(bytes, pos + 1, set); + } + + // Get the correct binary encoding and calculate the weight + const enc = CODE128.getBar(index); + const weight = index * pos; + + return { + result: enc + nextCode.result, + checksum: weight + nextCode.checksum + }; + } +} + +export default CODE128; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128A.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128A.js new file mode 100644 index 0000000..c8e9af5 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128A.js @@ -0,0 +1,14 @@ +import CODE128 from './CODE128.js'; +import { A_START_CHAR, A_CHARS } from './constants'; + +class CODE128A extends CODE128 { + constructor(string, options) { + super(A_START_CHAR + string, options); + } + + valid() { + return (new RegExp(`^${A_CHARS}+$`)).test(this.data); + } +} + +export default CODE128A; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128B.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128B.js new file mode 100644 index 0000000..0056315 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128B.js @@ -0,0 +1,14 @@ +import CODE128 from './CODE128.js'; +import { B_START_CHAR, B_CHARS } from './constants'; + +class CODE128B extends CODE128 { + constructor(string, options) { + super(B_START_CHAR + string, options); + } + + valid() { + return (new RegExp(`^${B_CHARS}+$`)).test(this.data); + } +} + +export default CODE128B; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128C.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128C.js new file mode 100644 index 0000000..db33269 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128C.js @@ -0,0 +1,14 @@ +import CODE128 from './CODE128.js'; +import { C_START_CHAR, C_CHARS } from './constants'; + +class CODE128C extends CODE128 { + constructor(string, options) { + super(C_START_CHAR + string, options); + } + + valid() { + return (new RegExp(`^${C_CHARS}+$`)).test(this.data); + } +} + +export default CODE128C; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128_AUTO.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128_AUTO.js new file mode 100644 index 0000000..00f9708 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/CODE128_AUTO.js @@ -0,0 +1,15 @@ +import CODE128 from './CODE128'; +import autoSelectModes from './auto'; + +class CODE128AUTO extends CODE128 { + constructor(data, options) { + // ASCII value ranges 0-127, 200-211 + if (/^[\x00-\x7F\xC8-\xD3]+$/.test(data)) { + super(autoSelectModes(data), options); + } else { + super(data, options); + } + } +} + +export default CODE128AUTO; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/auto.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/auto.js new file mode 100644 index 0000000..17cf70a --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/auto.js @@ -0,0 +1,68 @@ +import { A_START_CHAR, B_START_CHAR, C_START_CHAR, A_CHARS, B_CHARS, C_CHARS } from './constants'; + +// Match Set functions +const matchSetALength = (string) => string.match(new RegExp(`^${A_CHARS}*`))[0].length; +const matchSetBLength = (string) => string.match(new RegExp(`^${B_CHARS}*`))[0].length; +const matchSetC = (string) => string.match(new RegExp(`^${C_CHARS}*`))[0]; + +// CODE128A or CODE128B +function autoSelectFromAB(string, isA) { + const ranges = isA ? A_CHARS : B_CHARS; + const untilC = string.match(new RegExp(`^(${ranges}+?)(([0-9]{2}){2,})([^0-9]|$)`)); + + if (untilC) { + return ( + untilC[1] + + String.fromCharCode(204) + + autoSelectFromC(string.substring(untilC[1].length)) + ); + } + + const chars = string.match(new RegExp(`^${ranges}+`))[0]; + + if (chars.length === string.length) { + return string; + } + + return ( + chars + + String.fromCharCode(isA ? 205 : 206) + + autoSelectFromAB(string.substring(chars.length), !isA) + ); +} + +// CODE128C +function autoSelectFromC(string) { + const cMatch = matchSetC(string); + const length = cMatch.length; + + if (length === string.length) { + return string; + } + + string = string.substring(length); + + // Select A/B depending on the longest match + const isA = matchSetALength(string) >= matchSetBLength(string); + return cMatch + String.fromCharCode(isA ? 206 : 205) + autoSelectFromAB(string, isA); +} + +// Detect Code Set (A, B or C) and format the string +export default (string) => { + let newString; + const cLength = matchSetC(string).length; + + // Select 128C if the string start with enough digits + if (cLength >= 2) { + newString = C_START_CHAR + autoSelectFromC(string); + } else { + // Select A/B depending on the longest match + const isA = matchSetALength(string) > matchSetBLength(string); + newString = (isA ? A_START_CHAR : B_START_CHAR) + autoSelectFromAB(string, isA); + } + + return newString.replace( + /[\xCD\xCE]([^])[\xCD\xCE]/, // Any sequence between 205 and 206 characters + (match, char) => String.fromCharCode(203) + char + ); +}; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/constants.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/constants.js new file mode 100644 index 0000000..10846ca --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/constants.js @@ -0,0 +1,71 @@ +// constants for internal usage +export const SET_A = 0; +export const SET_B = 1; +export const SET_C = 2; + +// Special characters +export const SHIFT = 98; +export const START_A = 103; +export const START_B = 104; +export const START_C = 105; +export const MODULO = 103; +export const STOP = 106; +export const FNC1 = 207; + +// Get set by start code +export const SET_BY_CODE = { + [START_A]: SET_A, + [START_B]: SET_B, + [START_C]: SET_C, +}; + +// Get next set by code +export const SWAP = { + 101: SET_A, + 100: SET_B, + 99: SET_C, +}; + +export const A_START_CHAR = String.fromCharCode(208); // START_A + 105 +export const B_START_CHAR = String.fromCharCode(209); // START_B + 105 +export const C_START_CHAR = String.fromCharCode(210); // START_C + 105 + +// 128A (Code Set A) +// ASCII characters 00 to 95 (0–9, A–Z and control codes), special characters, and FNC 1–4 +export const A_CHARS = "[\x00-\x5F\xC8-\xCF]"; + +// 128B (Code Set B) +// ASCII characters 32 to 127 (0–9, A–Z, a–z), special characters, and FNC 1–4 +export const B_CHARS = "[\x20-\x7F\xC8-\xCF]"; + +// 128C (Code Set C) +// 00–99 (encodes two digits with a single code point) and FNC1 +export const C_CHARS = "(\xCF*[0-9]{2}\xCF*)"; + +// CODE128 includes 107 symbols: +// 103 data symbols, 3 start symbols (A, B and C), and 1 stop symbol (the last one) +// Each symbol consist of three black bars (1) and three white spaces (0). +export const BARS = [ + 11011001100, 11001101100, 11001100110, 10010011000, 10010001100, + 10001001100, 10011001000, 10011000100, 10001100100, 11001001000, + 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, + 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, + 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, + 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, + 11011011000, 11011000110, 11000110110, 10100011000, 10001011000, + 10001000110, 10110001000, 10001101000, 10001100010, 11010001000, + 11000101000, 11000100010, 10110111000, 10110001110, 10001101110, + 10111011000, 10111000110, 10001110110, 11101110110, 11010001110, + 11000101110, 11011101000, 11011100010, 11011101110, 11101011000, + 11101000110, 11100010110, 11101101000, 11101100010, 11100011010, + 11101111010, 11001000010, 11110001010, 10100110000, 10100001100, + 10010110000, 10010000110, 10000101100, 10000100110, 10110010000, + 10110000100, 10011010000, 10011000010, 10000110100, 10000110010, + 11000010010, 11001010000, 11110111010, 11000010100, 10001111010, + 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, + 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, + 11011110110, 11110110110, 10101111000, 10100011110, 10001011110, + 10111101000, 10111100010, 11110101000, 11110100010, 10111011110, + 10111101110, 11101011110, 11110101110, 11010000100, 11010010000, + 11010011100, 1100011101011 +]; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/index.js new file mode 100644 index 0000000..9f29291 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE128/index.js @@ -0,0 +1,6 @@ +import CODE128 from './CODE128_AUTO.js'; +import CODE128A from './CODE128A.js'; +import CODE128B from './CODE128B.js'; +import CODE128C from './CODE128C.js'; + +export { CODE128, CODE128A, CODE128B, CODE128C }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE39/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE39/index.js new file mode 100644 index 0000000..361a804 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/CODE39/index.js @@ -0,0 +1,105 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/Code_39#Encoding + +import Barcode from "../Barcode.js"; + +class CODE39 extends Barcode { + constructor(data, options) { + data = data.toUpperCase(); + + // Calculate mod43 checksum if enabled + if (options.mod43) { + data += getCharacter(mod43checksum(data)); + } + + super(data, options); + } + + encode() { + // First character is always a * + var result = getEncoding("*"); + + // Take every character and add the binary representation to the result + for (let i = 0; i < this.data.length; i++) { + result += getEncoding(this.data[i]) + "0"; + } + + // Last character is always a * + result += getEncoding("*"); + + return { + data: result, + text: this.text + }; + } + + valid() { + return this.data.search(/^[0-9A-Z\-\.\ \$\/\+\%]+$/) !== -1; + } +} + + + + + + +// All characters. The position in the array is the (checksum) value +var characters = [ + "0", "1", "2", "3", + "4", "5", "6", "7", + "8", "9", "A", "B", + "C", "D", "E", "F", + "G", "H", "I", "J", + "K", "L", "M", "N", + "O", "P", "Q", "R", + "S", "T", "U", "V", + "W", "X", "Y", "Z", + "-", ".", " ", "$", + "/", "+", "%", "*" +]; + +// The decimal representation of the characters, is converted to the +// corresponding binary with the getEncoding function +var encodings = [ + 20957, 29783, 23639, 30485, + 20951, 29813, 23669, 20855, + 29789, 23645, 29975, 23831, + 30533, 22295, 30149, 24005, + 21623, 29981, 23837, 22301, + 30023, 23879, 30545, 22343, + 30161, 24017, 21959, 30065, + 23921, 22385, 29015, 18263, + 29141, 17879, 29045, 18293, + 17783, 29021, 18269, 17477, + 17489, 17681, 20753, 35770 +]; + +// Get the binary representation of a character by converting the encodings +// from decimal to binary +function getEncoding(character) { + return getBinary(characterValue(character)); +} + +function getBinary(characterValue) { + return encodings[characterValue].toString(2); +} + +function getCharacter(characterValue) { + return characters[characterValue]; +} + +function characterValue(character) { + return characters.indexOf(character); +} + +function mod43checksum(data) { + var checksum = 0; + for (let i = 0; i < data.length; i++) { + checksum += characterValue(data[i]); + } + + checksum = checksum % 43; + return checksum; +} + +export { CODE39 }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN.js new file mode 100644 index 0000000..b6260cf --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN.js @@ -0,0 +1,72 @@ +import { SIDE_BIN, MIDDLE_BIN } from './constants'; +import encode from './encoder'; +import Barcode from '../Barcode'; + +// Base class for EAN8 & EAN13 +class EAN extends Barcode { + + constructor(data, options) { + super(data, options); + + // Make sure the font is not bigger than the space between the guard bars + this.fontSize = !options.flat && options.fontSize > options.width * 10 + ? options.width * 10 + : options.fontSize; + + // Make the guard bars go down half the way of the text + this.guardHeight = options.height + this.fontSize / 2 + options.textMargin; + } + + encode() { + return this.options.flat + ? this.encodeFlat() + : this.encodeGuarded(); + } + + leftText(from, to) { + return this.text.substr(from, to); + } + + leftEncode(data, structure) { + return encode(data, structure); + } + + rightText(from, to) { + return this.text.substr(from, to); + } + + rightEncode(data, structure) { + return encode(data, structure); + } + + encodeGuarded() { + const textOptions = { fontSize: this.fontSize }; + const guardOptions = { height: this.guardHeight }; + + return [ + { data: SIDE_BIN, options: guardOptions }, + { data: this.leftEncode(), text: this.leftText(), options: textOptions }, + { data: MIDDLE_BIN, options: guardOptions }, + { data: this.rightEncode(), text: this.rightText(), options: textOptions }, + { data: SIDE_BIN, options: guardOptions }, + ]; + } + + encodeFlat() { + const data = [ + SIDE_BIN, + this.leftEncode(), + MIDDLE_BIN, + this.rightEncode(), + SIDE_BIN + ]; + + return { + data: data.join(''), + text: this.text + }; + } + +} + +export default EAN; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN13.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN13.js new file mode 100644 index 0000000..dc82dd9 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN13.js @@ -0,0 +1,90 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Binary_encoding_of_data_digits_into_EAN-13_barcode + +import { EAN13_STRUCTURE } from './constants'; +import EAN from './EAN'; + +// Calculate the checksum digit +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit +const checksum = (number) => { + const res = number + .substr(0, 12) + .split('') + .map((n) => +n) + .reduce((sum, a, idx) => ( + idx % 2 ? sum + a * 3 : sum + a + ), 0); + + return (10 - (res % 10)) % 10; +}; + +class EAN13 extends EAN { + + constructor(data, options) { + // Add checksum if it does not exist + if (data.search(/^[0-9]{12}$/) !== -1) { + data += checksum(data); + } + + super(data, options); + + // Adds a last character to the end of the barcode + this.lastChar = options.lastChar; + } + + valid() { + return ( + this.data.search(/^[0-9]{13}$/) !== -1 && + +this.data[12] === checksum(this.data) + ); + } + + leftText() { + return super.leftText(1, 6); + } + + leftEncode() { + const data = this.data.substr(1, 6); + const structure = EAN13_STRUCTURE[this.data[0]]; + return super.leftEncode(data, structure); + } + + rightText() { + return super.rightText(7, 6); + } + + rightEncode() { + const data = this.data.substr(7, 6); + return super.rightEncode(data, 'RRRRRR'); + } + + // The "standard" way of printing EAN13 barcodes with guard bars + encodeGuarded() { + const data = super.encodeGuarded(); + + // Extend data with left digit & last character + if (this.options.displayValue) { + data.unshift({ + data: '000000000000', + text: this.text.substr(0, 1), + options: { textAlign: 'left', fontSize: this.fontSize } + }); + + if (this.options.lastChar) { + data.push({ + data: '00' + }); + data.push({ + data: '00000', + text: this.options.lastChar, + options: { fontSize: this.fontSize } + }); + } + } + + return data; + } + +} + +export default EAN13; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN2.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN2.js new file mode 100644 index 0000000..6b044dd --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN2.js @@ -0,0 +1,30 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/EAN_2#Encoding + +import { EAN2_STRUCTURE } from './constants'; +import encode from './encoder'; +import Barcode from '../Barcode'; + +class EAN2 extends Barcode { + + constructor(data, options) { + super(data, options); + } + + valid() { + return this.data.search(/^[0-9]{2}$/) !== -1; + } + + encode() { + // Choose the structure based on the number mod 4 + const structure = EAN2_STRUCTURE[parseInt(this.data) % 4]; + return { + // Start bits + Encode the two digits with 01 in between + data: '1011' + encode(this.data, structure, '01'), + text: this.text + }; + } + +} + +export default EAN2; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN5.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN5.js new file mode 100644 index 0000000..79b89e5 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN5.js @@ -0,0 +1,40 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/EAN_5#Encoding + +import { EAN5_STRUCTURE } from './constants'; +import encode from './encoder'; +import Barcode from '../Barcode'; + +const checksum = (data) => { + const result = data + .split('') + .map(n => +n) + .reduce((sum, a, idx) => { + return idx % 2 + ? sum + a * 9 + : sum + a * 3; + }, 0); + return result % 10; +}; + +class EAN5 extends Barcode { + + constructor(data, options) { + super(data, options); + } + + valid() { + return this.data.search(/^[0-9]{5}$/) !== -1; + } + + encode() { + const structure = EAN5_STRUCTURE[checksum(this.data)]; + return { + data: '1011' + encode(this.data, structure, '01'), + text: this.text + }; + } + +} + +export default EAN5; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN8.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN8.js new file mode 100644 index 0000000..adf608c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/EAN8.js @@ -0,0 +1,57 @@ +// Encoding documentation: +// http://www.barcodeisland.com/ean8.phtml + +import EAN from './EAN'; + +// Calculate the checksum digit +const checksum = (number) => { + const res = number + .substr(0, 7) + .split('') + .map((n) => +n) + .reduce((sum, a, idx) => ( + idx % 2 ? sum + a : sum + a * 3 + ), 0); + + return (10 - (res % 10)) % 10; +}; + +class EAN8 extends EAN { + + constructor(data, options) { + // Add checksum if it does not exist + if (data.search(/^[0-9]{7}$/) !== -1) { + data += checksum(data); + } + + super(data, options); + } + + valid() { + return ( + this.data.search(/^[0-9]{8}$/) !== -1 && + +this.data[7] === checksum(this.data) + ); + } + + leftText() { + return super.leftText(0, 4); + } + + leftEncode() { + const data = this.data.substr(0, 4); + return super.leftEncode(data, 'LLLL'); + } + + rightText() { + return super.rightText(4, 4); + } + + rightEncode() { + const data = this.data.substr(4, 4); + return super.rightEncode(data, 'RRRR'); + } + +} + +export default EAN8; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPC.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPC.js new file mode 100644 index 0000000..7f9cd8f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPC.js @@ -0,0 +1,132 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding + +import encode from './encoder'; +import Barcode from "../Barcode.js"; + +class UPC extends Barcode { + constructor(data, options) { + // Add checksum if it does not exist + if (data.search(/^[0-9]{11}$/) !== -1) { + data += checksum(data); + } + + super(data, options); + + this.displayValue = options.displayValue; + + // Make sure the font is not bigger than the space between the guard bars + if (options.fontSize > options.width * 10) { + this.fontSize = options.width * 10; + } + else { + this.fontSize = options.fontSize; + } + + // Make the guard bars go down half the way of the text + this.guardHeight = options.height + this.fontSize / 2 + options.textMargin; + } + + valid() { + return this.data.search(/^[0-9]{12}$/) !== -1 && + this.data[11] == checksum(this.data); + } + + encode() { + if (this.options.flat) { + return this.flatEncoding(); + } + else { + return this.guardedEncoding(); + } + } + + flatEncoding() { + var result = ""; + + result += "101"; + result += encode(this.data.substr(0, 6), "LLLLLL"); + result += "01010"; + result += encode(this.data.substr(6, 6), "RRRRRR"); + result += "101"; + + return { + data: result, + text: this.text + }; + } + + guardedEncoding() { + var result = []; + + // Add the first digit + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text.substr(0, 1), + options: { textAlign: "left", fontSize: this.fontSize } + }); + } + + // Add the guard bars + result.push({ + data: "101" + encode(this.data[0], "L"), + options: { height: this.guardHeight } + }); + + // Add the left side + result.push({ + data: encode(this.data.substr(1, 5), "LLLLL"), + text: this.text.substr(1, 5), + options: { fontSize: this.fontSize } + }); + + // Add the middle bits + result.push({ + data: "01010", + options: { height: this.guardHeight } + }); + + // Add the right side + result.push({ + data: encode(this.data.substr(6, 5), "RRRRR"), + text: this.text.substr(6, 5), + options: { fontSize: this.fontSize } + }); + + // Add the end bits + result.push({ + data: encode(this.data[11], "R") + "101", + options: { height: this.guardHeight } + }); + + // Add the last digit + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text.substr(11, 1), + options: { textAlign: "right", fontSize: this.fontSize } + }); + } + + return result; + } +} + +// Calulate the checksum digit +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit +export function checksum(number) { + var result = 0; + + var i; + for (i = 1; i < 11; i += 2) { + result += parseInt(number[i]); + } + for (i = 0; i < 11; i += 2) { + result += parseInt(number[i]) * 3; + } + + return (10 - (result % 10)) % 10; +} + +export default UPC; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPCE.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPCE.js new file mode 100644 index 0000000..78351d2 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/UPCE.js @@ -0,0 +1,177 @@ +// Encoding documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding +// +// UPC-E documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E + +import encode from './encoder'; +import Barcode from "../Barcode.js"; +import { checksum } from './UPC.js'; + +const EXPANSIONS = [ + "XX00000XXX", + "XX10000XXX", + "XX20000XXX", + "XXX00000XX", + "XXXX00000X", + "XXXXX00005", + "XXXXX00006", + "XXXXX00007", + "XXXXX00008", + "XXXXX00009" +]; + +const PARITIES = [ + ["EEEOOO", "OOOEEE"], + ["EEOEOO", "OOEOEE"], + ["EEOOEO", "OOEEOE"], + ["EEOOOE", "OOEEEO"], + ["EOEEOO", "OEOOEE"], + ["EOOEEO", "OEEOOE"], + ["EOOOEE", "OEEEOO"], + ["EOEOEO", "OEOEOE"], + ["EOEOOE", "OEOEEO"], + ["EOOEOE", "OEEOEO"] +]; + +class UPCE extends Barcode { + constructor(data, options) { + // Code may be 6 or 8 digits; + // A 7 digit code is ambiguous as to whether the extra digit + // is a UPC-A check or number system digit. + super(data, options); + this.isValid = false; + if (data.search(/^[0-9]{6}$/) !== -1) { + this.middleDigits = data; + this.upcA = expandToUPCA(data, "0"); + this.text = options.text || + `${this.upcA[0]}${data}${this.upcA[this.upcA.length - 1]}`; + this.isValid = true; + } + else if (data.search(/^[01][0-9]{7}$/) !== -1) { + this.middleDigits = data.substring(1, data.length - 1); + this.upcA = expandToUPCA(this.middleDigits, data[0]); + + if (this.upcA[this.upcA.length - 1] === data[data.length - 1]) { + this.isValid = true; + } + else { + // checksum mismatch + return; + } + } + else { + return; + } + + this.displayValue = options.displayValue; + + // Make sure the font is not bigger than the space between the guard bars + if (options.fontSize > options.width * 10) { + this.fontSize = options.width * 10; + } + else { + this.fontSize = options.fontSize; + } + + // Make the guard bars go down half the way of the text + this.guardHeight = options.height + this.fontSize / 2 + options.textMargin; + } + + valid() { + return this.isValid; + } + + encode() { + if (this.options.flat) { + return this.flatEncoding(); + } + else { + return this.guardedEncoding(); + } + } + + flatEncoding() { + var result = ""; + + result += "101"; + result += this.encodeMiddleDigits(); + result += "010101"; + + return { + data: result, + text: this.text + }; + } + + guardedEncoding() { + var result = []; + + // Add the UPC-A number system digit beneath the quiet zone + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text[0], + options: { textAlign: "left", fontSize: this.fontSize } + }); + } + + // Add the guard bars + result.push({ + data: "101", + options: { height: this.guardHeight } + }); + + // Add the 6 UPC-E digits + result.push({ + data: this.encodeMiddleDigits(), + text: this.text.substring(1, 7), + options: { fontSize: this.fontSize } + }); + + // Add the end bits + result.push({ + data: "010101", + options: { height: this.guardHeight } + }); + + // Add the UPC-A check digit beneath the quiet zone + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text[7], + options: { textAlign: "right", fontSize: this.fontSize } + }); + } + + return result; + } + + encodeMiddleDigits() { + const numberSystem = this.upcA[0]; + const checkDigit = this.upcA[this.upcA.length - 1]; + const parity = PARITIES[parseInt(checkDigit)][parseInt(numberSystem)]; + return encode(this.middleDigits, parity); + } +} + +function expandToUPCA(middleDigits, numberSystem) { + const lastUpcE = parseInt(middleDigits[middleDigits.length - 1]); + const expansion = EXPANSIONS[lastUpcE]; + + let result = ""; + let digitIndex = 0; + for (let i = 0; i < expansion.length; i++) { + let c = expansion[i]; + if (c === 'X') { + result += middleDigits[digitIndex++]; + } else { + result += c; + } + } + + result = `${numberSystem}${result}`; + return `${result}${checksum(result)}`; +} + +export default UPCE; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/constants.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/constants.js new file mode 100644 index 0000000..abbe38f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/constants.js @@ -0,0 +1,41 @@ +// Standard start end and middle bits +export const SIDE_BIN = '101'; +export const MIDDLE_BIN = '01010'; + +export const BINARIES = { + 'L': [ // The L (left) type of encoding + '0001101', '0011001', '0010011', '0111101', '0100011', + '0110001', '0101111', '0111011', '0110111', '0001011' + ], + 'G': [ // The G type of encoding + '0100111', '0110011', '0011011', '0100001', '0011101', + '0111001', '0000101', '0010001', '0001001', '0010111' + ], + 'R': [ // The R (right) type of encoding + '1110010', '1100110', '1101100', '1000010', '1011100', + '1001110', '1010000', '1000100', '1001000', '1110100' + ], + 'O': [ // The O (odd) encoding for UPC-E + '0001101', '0011001', '0010011', '0111101', '0100011', + '0110001', '0101111', '0111011', '0110111', '0001011' + ], + 'E': [ // The E (even) encoding for UPC-E + '0100111', '0110011', '0011011', '0100001', '0011101', + '0111001', '0000101', '0010001', '0001001', '0010111' + ] +}; + +// Define the EAN-2 structure +export const EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG']; + +// Define the EAN-5 structure +export const EAN5_STRUCTURE = [ + 'GGLLL', 'GLGLL', 'GLLGL', 'GLLLG', 'LGGLL', + 'LLGGL', 'LLLGG', 'LGLGL', 'LGLLG', 'LLGLG' +]; + +// Define the EAN-13 structure +export const EAN13_STRUCTURE = [ + 'LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL', 'LGLLGG', + 'LGGLLG', 'LGGGLL', 'LGLGLG', 'LGLGGL', 'LGGLGL' +]; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/encoder.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/encoder.js new file mode 100644 index 0000000..e66a312 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/encoder.js @@ -0,0 +1,20 @@ +import { BINARIES } from './constants'; + +// Encode data string +const encode = (data, structure, separator) => { + let encoded = data + .split('') + .map((val, idx) => BINARIES[structure[idx]]) + .map((val, idx) => val ? val[data[idx]] : ''); + + if (separator) { + const last = data.length - 1; + encoded = encoded.map((val, idx) => ( + idx < last ? val + separator : val + )); + } + + return encoded.join(''); +}; + +export default encode; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/index.js new file mode 100644 index 0000000..8301d6e --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/EAN_UPC/index.js @@ -0,0 +1,8 @@ +import EAN13 from './EAN13.js'; +import EAN8 from './EAN8.js'; +import EAN5 from './EAN5.js'; +import EAN2 from './EAN2.js'; +import UPC from './UPC.js'; +import UPCE from './UPCE.js'; + +export { EAN13, EAN8, EAN5, EAN2, UPC, UPCE }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/GenericBarcode/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/GenericBarcode/index.js new file mode 100644 index 0000000..4bdce68 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/GenericBarcode/index.js @@ -0,0 +1,22 @@ +import Barcode from "../Barcode.js"; + +class GenericBarcode extends Barcode { + constructor(data, options) { + super(data, options); // Sets this.data and this.text + } + + // Return the corresponding binary numbers for the data provided + encode() { + return { + data: "10101010101010101010101010101010101010101", + text: this.text + }; + } + + // Resturn true/false if the string provided is valid for this encoder + valid() { + return true; + } +} + +export { GenericBarcode }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF.js new file mode 100644 index 0000000..14a7cae --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF.js @@ -0,0 +1,37 @@ +import { START_BIN, END_BIN, BINARIES } from './constants'; +import Barcode from '../Barcode'; + +class ITF extends Barcode { + + valid() { + return this.data.search(/^([0-9]{2})+$/) !== -1; + } + + encode() { + // Calculate all the digit pairs + const encoded = this.data + .match(/.{2}/g) + .map(pair => this.encodePair(pair)) + .join(''); + + return { + data: START_BIN + encoded + END_BIN, + text: this.text + }; + } + + // Calculate the data of a number pair + encodePair(pair) { + const second = BINARIES[pair[1]]; + + return BINARIES[pair[0]] + .split('') + .map((first, idx) => ( + (first === '1' ? '111' : '1') + + (second[idx] === '1' ? '000' : '0') + )) + .join(''); + } +} + +export default ITF; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF14.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF14.js new file mode 100644 index 0000000..3ff25ff --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/ITF14.js @@ -0,0 +1,33 @@ +import ITF from './ITF'; + +// Calculate the checksum digit +const checksum = (data) => { + const res = data + .substr(0, 13) + .split('') + .map(num => parseInt(num, 10)) + .reduce((sum, n, idx) => sum + (n * (3 - (idx % 2) * 2)), 0); + + return Math.ceil(res / 10) * 10 - res; +}; + +class ITF14 extends ITF { + + constructor(data, options) { + // Add checksum if it does not exist + if (data.search(/^[0-9]{13}$/) !== -1) { + data += checksum(data); + } + super(data, options); + } + + valid() { + return ( + this.data.search(/^[0-9]{14}$/) !== -1 && + +this.data[13] === checksum(this.data) + ); + } + +} + +export default ITF14; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/constants.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/constants.js new file mode 100644 index 0000000..2a941b0 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/constants.js @@ -0,0 +1,7 @@ +export const START_BIN = '1010'; +export const END_BIN = '11101'; + +export const BINARIES = [ + '00110', '10001', '01001', '11000', '00101', + '10100', '01100', '00011', '10010', '01010', +]; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/index.js new file mode 100644 index 0000000..c832dc2 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/ITF/index.js @@ -0,0 +1,4 @@ +import ITF from './ITF'; +import ITF14 from './ITF14'; + +export { ITF, ITF14 }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI.js new file mode 100644 index 0000000..bf1393b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI.js @@ -0,0 +1,48 @@ +// Encoding documentation +// https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup + +import Barcode from "../Barcode.js"; + +class MSI extends Barcode { + constructor(data, options) { + super(data, options); + } + + encode() { + // Start bits + var ret = "110"; + + for (var i = 0; i < this.data.length; i++) { + // Convert the character to binary (always 4 binary digits) + var digit = parseInt(this.data[i]); + var bin = digit.toString(2); + bin = addZeroes(bin, 4 - bin.length); + + // Add 100 for every zero and 110 for every 1 + for (var b = 0; b < bin.length; b++) { + ret += bin[b] == "0" ? "100" : "110"; + } + } + + // End bits + ret += "1001"; + + return { + data: ret, + text: this.text + }; + } + + valid() { + return this.data.search(/^[0-9]+$/) !== -1; + } +} + +function addZeroes(number, n) { + for (var i = 0; i < n; i++) { + number = "0" + number; + } + return number; +} + +export default MSI; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI10.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI10.js new file mode 100644 index 0000000..4d7dbb9 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI10.js @@ -0,0 +1,10 @@ +import MSI from './MSI.js'; +import { mod10 } from './checksums.js'; + +class MSI10 extends MSI { + constructor(data, options) { + super(data + mod10(data), options); + } +} + +export default MSI10; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1010.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1010.js new file mode 100644 index 0000000..d05002c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1010.js @@ -0,0 +1,12 @@ +import MSI from './MSI.js'; +import { mod10 } from './checksums.js'; + +class MSI1010 extends MSI { + constructor(data, options) { + data += mod10(data); + data += mod10(data); + super(data, options); + } +} + +export default MSI1010; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI11.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI11.js new file mode 100644 index 0000000..d7c9962 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI11.js @@ -0,0 +1,10 @@ +import MSI from './MSI.js'; +import { mod11 } from './checksums.js'; + +class MSI11 extends MSI { + constructor(data, options) { + super(data + mod11(data), options); + } +} + +export default MSI11; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1110.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1110.js new file mode 100644 index 0000000..31b1c3f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/MSI1110.js @@ -0,0 +1,12 @@ +import MSI from './MSI.js'; +import { mod10, mod11 } from './checksums.js'; + +class MSI1110 extends MSI { + constructor(data, options) { + data += mod11(data); + data += mod10(data); + super(data, options); + } +} + +export default MSI1110; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/checksums.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/checksums.js new file mode 100644 index 0000000..1a0ae4c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/checksums.js @@ -0,0 +1,23 @@ +export function mod10(number) { + var sum = 0; + for (var i = 0; i < number.length; i++) { + var n = parseInt(number[i]); + if ((i + number.length) % 2 === 0) { + sum += n; + } + else { + sum += (n * 2) % 10 + Math.floor((n * 2) / 10); + } + } + return (10 - (sum % 10)) % 10; +} + +export function mod11(number) { + var sum = 0; + var weights = [2, 3, 4, 5, 6, 7]; + for (var i = 0; i < number.length; i++) { + var n = parseInt(number[number.length - 1 - i]); + sum += weights[i % weights.length] * n; + } + return (11 - (sum % 11)) % 11; +} diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/index.js new file mode 100644 index 0000000..55b90a7 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/MSI/index.js @@ -0,0 +1,7 @@ +import MSI from './MSI.js'; +import MSI10 from './MSI10.js'; +import MSI11 from './MSI11.js'; +import MSI1010 from './MSI1010.js'; +import MSI1110 from './MSI1110.js'; + +export { MSI, MSI10, MSI11, MSI1010, MSI1110 }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/codabar/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/codabar/index.js new file mode 100644 index 0000000..f67b554 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/codabar/index.js @@ -0,0 +1,63 @@ +// Encoding specification: +// http://www.barcodeisland.com/codabar.phtml + +import Barcode from "../Barcode.js"; + +class codabar extends Barcode { + constructor(data, options) { + if (data.search(/^[0-9\-\$\:\.\+\/]+$/) === 0) { + data = "A" + data + "A"; + } + + super(data.toUpperCase(), options); + + this.text = this.options.text || this.text.replace(/[A-D]/g, ''); + } + + valid() { + return this.data.search(/^[A-D][0-9\-\$\:\.\+\/]+[A-D]$/) !== -1; + } + + encode() { + var result = []; + var encodings = this.getEncodings(); + for (var i = 0; i < this.data.length; i++) { + result.push(encodings[this.data.charAt(i)]); + // for all characters except the last, append a narrow-space ("0") + if (i !== this.data.length - 1) { + result.push("0"); + } + } + return { + text: this.text, + data: result.join('') + }; + } + + getEncodings() { + return { + "0": "101010011", + "1": "101011001", + "2": "101001011", + "3": "110010101", + "4": "101101001", + "5": "110101001", + "6": "100101011", + "7": "100101101", + "8": "100110101", + "9": "110100101", + "-": "101001101", + "$": "101100101", + ":": "1101011011", + "/": "1101101011", + ".": "1101101101", + "+": "1011011011", + "A": "1011001001", + "B": "1001001011", + "C": "1010010011", + "D": "1010011001" + }; + } +} + +export { codabar }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/index.js new file mode 100644 index 0000000..c28d439 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/index.js @@ -0,0 +1,20 @@ +import { CODE39 } from './CODE39'; +import { CODE128, CODE128A, CODE128B, CODE128C } from './CODE128'; +import { EAN13, EAN8, EAN5, EAN2, UPC, UPCE } from './EAN_UPC'; +import { ITF, ITF14 } from './ITF'; +import { MSI, MSI10, MSI11, MSI1010, MSI1110 } from './MSI'; +import { pharmacode } from './pharmacode'; +import { codabar } from './codabar'; +import { GenericBarcode } from './GenericBarcode'; + +export default { + CODE39, + CODE128, CODE128A, CODE128B, CODE128C, + EAN13, EAN8, EAN5, EAN2, UPC, UPCE, + ITF14, + ITF, + MSI, MSI10, MSI11, MSI1010, MSI1110, + pharmacode, + codabar, + GenericBarcode +}; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/pharmacode/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/pharmacode/index.js new file mode 100644 index 0000000..6de9e15 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/barcodes/pharmacode/index.js @@ -0,0 +1,43 @@ +// Encoding documentation +// http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf + +import Barcode from "../Barcode.js"; + +class pharmacode extends Barcode { + constructor(data, options) { + super(data, options); + this.number = parseInt(data, 10); + } + + encode() { + var z = this.number; + var result = ""; + + // http://i.imgur.com/RMm4UDJ.png + // (source: http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf, page: 34) + while (!isNaN(z) && z != 0) { + if (z % 2 === 0) { // Even + result = "11100" + result; + z = (z - 2) / 2; + } + else { // Odd + result = "100" + result; + z = (z - 1) / 2; + } + } + + // Remove the two last zeroes + result = result.slice(0, -2); + + return { + data: result, + text: this.text + }; + } + + valid() { + return this.number >= 3 && this.number <= 131070; + } +} + +export { pharmacode }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/ErrorHandler.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/ErrorHandler.js new file mode 100644 index 0000000..2d7e4e5 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/ErrorHandler.js @@ -0,0 +1,39 @@ +/*eslint no-console: 0 */ + +class ErrorHandler { + constructor(api) { + this.api = api; + } + + handleCatch(e) { + // If babel supported extending of Error in a correct way instanceof would be used here + if (e.name === "InvalidInputException") { + if (this.api._options.valid !== this.api._defaults.valid) { + this.api._options.valid(false); + } + else { + throw e.message; + } + } + else { + throw e; + } + + this.api.render = function () { }; + } + + wrapBarcodeCall(func) { + try { + var result = func(...arguments); + this.api._options.valid(true); + return result; + } + catch (e) { + this.handleCatch(e); + + return this.api; + } + } +} + +export default ErrorHandler; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/exceptions.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/exceptions.js new file mode 100644 index 0000000..ee0aeb2 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/exceptions/exceptions.js @@ -0,0 +1,29 @@ +class InvalidInputException extends Error { + constructor(symbology, input) { + super(); + this.name = "InvalidInputException"; + + this.symbology = symbology; + this.input = input; + + this.message = '"' + this.input + '" is not a valid input for ' + this.symbology; + } +} + +class InvalidElementException extends Error { + constructor() { + super(); + this.name = "InvalidElementException"; + this.message = "Not supported type to render on"; + } +} + +class NoElementException extends Error { + constructor() { + super(); + this.name = "NoElementException"; + this.message = "No element to render on."; + } +} + +export { InvalidInputException, InvalidElementException, NoElementException }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/fixOptions.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/fixOptions.js new file mode 100644 index 0000000..2476c8c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/fixOptions.js @@ -0,0 +1,11 @@ +export default fixOptions; + +function fixOptions(options) { + // Fix the margins + options.marginTop = options.marginTop || options.margin; + options.marginBottom = options.marginBottom || options.margin; + options.marginRight = options.marginRight || options.margin; + options.marginLeft = options.marginLeft || options.margin; + + return options; +} diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getOptionsFromElement.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getOptionsFromElement.js new file mode 100644 index 0000000..892161d --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getOptionsFromElement.js @@ -0,0 +1,28 @@ +import optionsFromStrings from "./optionsFromStrings.js"; +import defaults from "../options/defaults.js"; + +function getOptionsFromElement(element) { + var options = {}; + for (var property in defaults) { + if (defaults.hasOwnProperty(property)) { + // jsbarcode-* + if (element.hasAttribute("jsbarcode-" + property.toLowerCase())) { + options[property] = element.getAttribute("jsbarcode-" + property.toLowerCase()); + } + + // data-* + if (element.hasAttribute("data-" + property.toLowerCase())) { + options[property] = element.getAttribute("data-" + property.toLowerCase()); + } + } + } + + options["value"] = element.getAttribute("jsbarcode-value") || element.getAttribute("data-value"); + + // Since all atributes are string they need to be converted to integers + options = optionsFromStrings(options); + + return options; +} + +export default getOptionsFromElement; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getRenderProperties.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getRenderProperties.js new file mode 100644 index 0000000..416c121 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/getRenderProperties.js @@ -0,0 +1,102 @@ +/* global HTMLImageElement */ +/* global HTMLCanvasElement */ +/* global SVGElement */ + +import getOptionsFromElement from "./getOptionsFromElement.js"; +import renderers from "../renderers"; + +import { InvalidElementException } from "../exceptions/exceptions.js"; + +// Takes an element and returns an object with information about how +// it should be rendered +// This could also return an array with these objects +// { +// element: The element that the renderer should draw on +// renderer: The name of the renderer +// afterRender (optional): If something has to done after the renderer +// completed, calls afterRender (function) +// options (optional): Options that can be defined in the element +// } + +function getRenderProperties(element) { + // If the element is a string, query select call again + if (typeof element === "string") { + return querySelectedRenderProperties(element); + } + // If element is array. Recursivly call with every object in the array + else if (Array.isArray(element)) { + var returnArray = []; + for (let i = 0; i < element.length; i++) { + returnArray.push(getRenderProperties(element[i])); + } + return returnArray; + } + // If element, render on canvas and set the uri as src + else if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLImageElement) { + return newCanvasRenderProperties(element); + } + // If SVG + else if ( + (element && element.nodeName && element.nodeName.toLowerCase() === 'svg') || + (typeof SVGElement !== 'undefined' && element instanceof SVGElement) + ) { + return { + element: element, + options: getOptionsFromElement(element), + renderer: renderers.SVGRenderer + }; + } + // If canvas (in browser) + else if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLCanvasElement) { + return { + element: element, + options: getOptionsFromElement(element), + renderer: renderers.CanvasRenderer + }; + } + // If canvas (in node) + else if (element && element.getContext) { + return { + element: element, + renderer: renderers.CanvasRenderer + }; + } + else if (element && typeof element === 'object' && !element.nodeName) { + return { + element: element, + renderer: renderers.ObjectRenderer + }; + } + else { + throw new InvalidElementException(); + } +} + +function querySelectedRenderProperties(string) { + var selector = document.querySelectorAll(string); + if (selector.length === 0) { + return undefined; + } + else { + let returnArray = []; + for (let i = 0; i < selector.length; i++) { + returnArray.push(getRenderProperties(selector[i])); + } + return returnArray; + } +} + + +function newCanvasRenderProperties(imgElement) { + var canvas = document.createElement('canvas'); + return { + element: canvas, + options: getOptionsFromElement(imgElement), + renderer: renderers.CanvasRenderer, + afterRender: function () { + imgElement.setAttribute("src", canvas.toDataURL()); + } + }; +} + +export default getRenderProperties; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/linearizeEncodings.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/linearizeEncodings.js new file mode 100644 index 0000000..cb7e39f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/linearizeEncodings.js @@ -0,0 +1,22 @@ +export default linearizeEncodings; + +// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2] +// Convert to [1-1, 1-2, 2, 3-1, 3-2] +function linearizeEncodings(encodings) { + var linearEncodings = []; + function nextLevel(encoded) { + if (Array.isArray(encoded)) { + for (let i = 0; i < encoded.length; i++) { + nextLevel(encoded[i]); + } + } + else { + encoded.text = encoded.text || ""; + encoded.data = encoded.data || ""; + linearEncodings.push(encoded); + } + } + nextLevel(encodings); + + return linearEncodings; +} diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/merge.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/merge.js new file mode 100644 index 0000000..88eb19c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/merge.js @@ -0,0 +1 @@ +export default (old, replaceObj) => ({ ...old, ...replaceObj }); diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/optionsFromStrings.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/optionsFromStrings.js new file mode 100644 index 0000000..f167d6c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/help/optionsFromStrings.js @@ -0,0 +1,31 @@ +export default optionsFromStrings; + +// Convert string to integers/booleans where it should be +function optionsFromStrings(options) { + var intOptions = [ + "width", + "height", + "textMargin", + "fontSize", + "margin", + "marginTop", + "marginBottom", + "marginLeft", + "marginRight" + ]; + + for (var intOption in intOptions) { + if (intOptions.hasOwnProperty(intOption)) { + intOption = intOptions[intOption]; + if (typeof options[intOption] === "string") { + options[intOption] = parseInt(options[intOption], 10); + } + } + } + + if (typeof options["displayValue"] === "string") { + options["displayValue"] = (options["displayValue"] != "false"); + } + + return options; +} diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/options/defaults.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/options/defaults.js new file mode 100644 index 0000000..2f7319e --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/options/defaults.js @@ -0,0 +1,25 @@ + +var defaults = { + width: 2, + height: 60, + format: "auto", + displayValue: true, + fontOptions: "", + font: "serif", + text: "123 456 89", + textAlign: "center", + textPosition: "bottom", + textMargin: 2, + fontSize: 20, + background: "#ffffff", + lineColor: "#000000", + margin: 10, + marginTop: undefined, + marginBottom: undefined, + marginLeft: undefined, + marginRight: undefined, + valid: function () { } +}; + + +export default defaults; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/canvas.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/canvas.js new file mode 100644 index 0000000..80779c6 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/canvas.js @@ -0,0 +1,137 @@ +import merge from "../help/merge.js"; +import { calculateEncodingAttributes, getTotalWidthOfEncodings, getMaximumHeightOfEncodings } from "./shared.js"; + +class CanvasRenderer { + constructor(canvas, encodings, options) { + this.canvas = canvas; + this.encodings = encodings; + this.options = options; + } + + render() { + // Abort if the browser does not support HTML5 canvas + if (!this.canvas.getContext) { + throw new Error('The browser does not support canvas.'); + } + + this.prepareCanvas(); + for (let i = 0; i < this.encodings.length; i++) { + var encodingOptions = merge(this.options, this.encodings[i].options); + + this.drawCanvasBarcode(encodingOptions, this.encodings[i]); + this.drawCanvasText(encodingOptions, this.encodings[i]); + + this.moveCanvasDrawing(this.encodings[i]); + } + + this.restoreCanvas(); + } + + prepareCanvas() { + // Get the canvas context + var ctx = this.canvas.getContext("2d"); + + ctx.save(); + + calculateEncodingAttributes(this.encodings, this.options, ctx); + var totalWidth = getTotalWidthOfEncodings(this.encodings); + var maxHeight = getMaximumHeightOfEncodings(this.encodings); + + this.canvas.width = totalWidth + this.options.marginLeft + this.options.marginRight; + + this.canvas.height = maxHeight; + + // Paint the canvas + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + if (this.options.background) { + ctx.fillStyle = this.options.background; + ctx.fillRect(0, 0, this.canvas.width, this.canvas.height); + } + + ctx.translate(this.options.marginLeft, 0); + } + + drawCanvasBarcode(options, encoding) { + // Get the canvas context + var ctx = this.canvas.getContext("2d"); + + var binary = encoding.data; + + // Creates the barcode out of the encoded binary + var yFrom; + if (options.textPosition == "top") { + yFrom = options.marginTop + options.fontSize + options.textMargin; + } + else { + yFrom = options.marginTop; + } + + ctx.fillStyle = options.lineColor; + + for (var b = 0; b < binary.length; b++) { + var x = b * options.width + encoding.barcodePadding; + + if (binary[b] === "1") { + ctx.fillRect(x, yFrom, options.width, options.height); + } + else if (binary[b]) { + ctx.fillRect(x, yFrom, options.width, options.height * binary[b]); + } + } + } + + drawCanvasText(options, encoding) { + // Get the canvas context + var ctx = this.canvas.getContext("2d"); + + var font = options.fontOptions + " " + options.fontSize + "px " + options.font; + + // Draw the text if displayValue is set + if (options.displayValue) { + var x, y; + + if (options.textPosition == "top") { + y = options.marginTop + options.fontSize - options.textMargin; + } + else { + y = options.height + options.textMargin + options.marginTop + options.fontSize; + } + + ctx.font = font; + + // Draw the text in the correct X depending on the textAlign option + if (options.textAlign == "left" || encoding.barcodePadding > 0) { + x = 0; + ctx.textAlign = 'left'; + } + else if (options.textAlign == "right") { + x = encoding.width - 1; + ctx.textAlign = 'right'; + } + // In all other cases, center the text + else { + x = encoding.width / 2; + ctx.textAlign = 'center'; + } + + ctx.fillText(encoding.text, x, y); + } + } + + + + moveCanvasDrawing(encoding) { + var ctx = this.canvas.getContext("2d"); + + ctx.translate(encoding.width, 0); + } + + restoreCanvas() { + // Get the canvas context + var ctx = this.canvas.getContext("2d"); + + ctx.restore(); + } +} + +export default CanvasRenderer; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/index.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/index.js new file mode 100644 index 0000000..8b8aab9 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/index.js @@ -0,0 +1,5 @@ +import CanvasRenderer from './canvas.js'; +import SVGRenderer from './svg.js'; +import ObjectRenderer from './object.js'; + +export default { CanvasRenderer, SVGRenderer, ObjectRenderer }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/object.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/object.js new file mode 100644 index 0000000..fd0b7ca --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/object.js @@ -0,0 +1,14 @@ +class ObjectRenderer { + constructor(object, encodings, options) { + this.object = object; + this.encodings = encodings; + this.options = options; + } + + render() { + this.object.encodings = this.encodings; + } +} + + +export default ObjectRenderer; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/shared.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/shared.js new file mode 100644 index 0000000..fe141d9 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/shared.js @@ -0,0 +1,94 @@ +import merge from "../help/merge.js"; + +function getEncodingHeight(encoding, options) { + return options.height + + ((options.displayValue && encoding.text.length > 0) ? options.fontSize + options.textMargin : 0) + + options.marginTop + + options.marginBottom; +} + +function getBarcodePadding(textWidth, barcodeWidth, options) { + if (options.displayValue && barcodeWidth < textWidth) { + if (options.textAlign == "center") { + return Math.floor((textWidth - barcodeWidth) / 2); + } + else if (options.textAlign == "left") { + return 0; + } + else if (options.textAlign == "right") { + return Math.floor(textWidth - barcodeWidth); + } + } + return 0; +} + +function calculateEncodingAttributes(encodings, barcodeOptions, context) { + for (let i = 0; i < encodings.length; i++) { + var encoding = encodings[i]; + var options = merge(barcodeOptions, encoding.options); + + // Calculate the width of the encoding + var textWidth; + if (options.displayValue) { + textWidth = messureText(encoding.text, options, context); + } + else { + textWidth = 0; + } + + var barcodeWidth = encoding.data.length * options.width; + encoding.width = Math.ceil(Math.max(textWidth, barcodeWidth)); + + encoding.height = getEncodingHeight(encoding, options); + + encoding.barcodePadding = getBarcodePadding(textWidth, barcodeWidth, options); + } +} + +function getTotalWidthOfEncodings(encodings) { + var totalWidth = 0; + for (let i = 0; i < encodings.length; i++) { + totalWidth += encodings[i].width; + } + return totalWidth; +} + +function getMaximumHeightOfEncodings(encodings) { + var maxHeight = 0; + for (let i = 0; i < encodings.length; i++) { + if (encodings[i].height > maxHeight) { + maxHeight = encodings[i].height; + } + } + return maxHeight; +} + +function messureText(string, options, context) { + var ctx; + + if (context) { + ctx = context; + } + else if (typeof document !== "undefined") { + ctx = document.createElement("canvas").getContext("2d"); + } + else { + // If the text cannot be messured we will return 0. + // This will make some barcode with big text render incorrectly + return 0; + } + ctx.font = options.fontOptions + " " + options.fontSize + "px " + options.font; + + // Calculate the width of the encoding + var measureTextResult = ctx.measureText(string); + if (!measureTextResult) { + // Some implementations don't implement measureText and return undefined. + // If the text cannot be measured we will return 0. + // This will make some barcode with big text render incorrectly + return 0; + } + var size = measureTextResult.width; + return size; +} + +export { getMaximumHeightOfEncodings, getEncodingHeight, getBarcodePadding, calculateEncodingAttributes, getTotalWidthOfEncodings }; diff --git a/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/svg.js b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/svg.js new file mode 100644 index 0000000..8ef997d --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/jsbarcode/renderers/svg.js @@ -0,0 +1,171 @@ +import merge from "../help/merge.js"; +import { calculateEncodingAttributes, getTotalWidthOfEncodings, getMaximumHeightOfEncodings } from "./shared.js"; + +var svgns = "http://www.w3.org/2000/svg"; + +class SVGRenderer { + constructor(svg, encodings, options) { + this.svg = svg; + this.encodings = encodings; + this.options = options; + this.document = options.xmlDocument || document; + } + + render() { + var currentX = this.options.marginLeft; + + this.prepareSVG(); + for (let i = 0; i < this.encodings.length; i++) { + var encoding = this.encodings[i]; + var encodingOptions = merge(this.options, encoding.options); + + var group = this.createGroup(currentX, encodingOptions.marginTop, this.svg); + + this.setGroupOptions(group, encodingOptions); + + this.drawSvgBarcode(group, encodingOptions, encoding); + this.drawSVGText(group, encodingOptions, encoding); + + currentX += encoding.width; + } + } + + prepareSVG() { + // Clear the SVG + while (this.svg.firstChild) { + this.svg.removeChild(this.svg.firstChild); + } + + calculateEncodingAttributes(this.encodings, this.options); + var totalWidth = getTotalWidthOfEncodings(this.encodings); + var maxHeight = getMaximumHeightOfEncodings(this.encodings); + + var width = totalWidth + this.options.marginLeft + this.options.marginRight; + this.setSvgAttributes(width, maxHeight); + + if (this.options.background) { + this.drawRect(0, 0, width, maxHeight, this.svg).setAttribute( + "style", "fill:" + this.options.background + ";" + ); + } + } + + drawSvgBarcode(parent, options, encoding) { + var binary = encoding.data; + + // Creates the barcode out of the encoded binary + var yFrom; + if (options.textPosition == "top") { + yFrom = options.fontSize + options.textMargin; + } + else { + yFrom = 0; + } + + var barWidth = 0; + var x = 0; + for (var b = 0; b < binary.length; b++) { + x = b * options.width + encoding.barcodePadding; + + if (binary[b] === "1") { + barWidth++; + } + else if (barWidth > 0) { + this.drawRect(x - options.width * barWidth, yFrom, options.width * barWidth, options.height, parent); + barWidth = 0; + } + } + + // Last draw is needed since the barcode ends with 1 + if (barWidth > 0) { + this.drawRect(x - options.width * (barWidth - 1), yFrom, options.width * barWidth, options.height, parent); + } + } + + drawSVGText(parent, options, encoding) { + var textElem = this.document.createElementNS(svgns, 'text'); + + // Draw the text if displayValue is set + if (options.displayValue) { + var x, y; + + textElem.setAttribute("style", + "font:" + options.fontOptions + " " + options.fontSize + "px " + options.font + ); + + if (options.textPosition == "top") { + y = options.fontSize - options.textMargin; + } + else { + y = options.height + options.textMargin + options.fontSize; + } + + // Draw the text in the correct X depending on the textAlign option + if (options.textAlign == "left" || encoding.barcodePadding > 0) { + x = 0; + textElem.setAttribute("text-anchor", "start"); + } + else if (options.textAlign == "right") { + x = encoding.width - 1; + textElem.setAttribute("text-anchor", "end"); + } + // In all other cases, center the text + else { + x = encoding.width / 2; + textElem.setAttribute("text-anchor", "middle"); + } + + textElem.setAttribute("x", x); + textElem.setAttribute("y", y); + + textElem.appendChild(this.document.createTextNode(encoding.text)); + + parent.appendChild(textElem); + } + } + + + setSvgAttributes(width, height) { + var svg = this.svg; + svg.setAttribute("width", width + "px"); + svg.setAttribute("height", height + "px"); + svg.setAttribute("x", "0px"); + svg.setAttribute("y", "0px"); + svg.setAttribute("viewBox", "0 0 " + width + " " + height); + + svg.setAttribute("xmlns", svgns); + svg.setAttribute("version", "1.1"); + + svg.setAttribute("style", "transform: translate(0,0)"); + } + + createGroup(x, y, parent) { + var group = this.document.createElementNS(svgns, 'g'); + group.setAttribute("transform", "translate(" + x + ", " + y + ")"); + + parent.appendChild(group); + + return group; + } + + setGroupOptions(group, options) { + group.setAttribute("style", + "fill:" + options.lineColor + ";" + ); + } + + drawRect(x, y, width, height, parent) { + var rect = this.document.createElementNS(svgns, 'rect'); + + rect.setAttribute("x", x); + rect.setAttribute("y", y); + rect.setAttribute("width", width); + rect.setAttribute("height", height); + + parent.appendChild(rect); + + return rect; + } +} + +export default SVGRenderer; diff --git a/src/uni_modules/tmui/components/tm-barcode/tm-barcode.vue b/src/uni_modules/tmui/components/tm-barcode/tm-barcode.vue new file mode 100644 index 0000000..f966f4d --- /dev/null +++ b/src/uni_modules/tmui/components/tm-barcode/tm-barcode.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-button/interface.ts b/src/uni_modules/tmui/components/tm-button/interface.ts new file mode 100644 index 0000000..5c7953f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-button/interface.ts @@ -0,0 +1 @@ +export type btnSize = "block" | "small" | "mini" | "normal" | "middle" | "large" diff --git a/src/uni_modules/tmui/components/tm-button/tm-button.vue b/src/uni_modules/tmui/components/tm-button/tm-button.vue new file mode 100644 index 0000000..9477251 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-button/tm-button.vue @@ -0,0 +1,527 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/interface.ts b/src/uni_modules/tmui/components/tm-calendar-view/interface.ts new file mode 100644 index 0000000..723a45e --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/interface.ts @@ -0,0 +1,40 @@ +export interface monthDayItem { + dateStr: string,//日期 + date: number | string,//当前的日。 + day: number,//星期几。 + week: number,//当前在年中的第几周。 + isNowIn: boolean,//是否是本月。 + disabled: boolean,//是否被禁用。 + extra: dateItemStyle +} +export interface dateItemStyle { + date?: string,//日期 + text?: boolean,//浅色背景。 + color?: string,//主题色. + extra?: string,//额外的内容,在日期下方显示的文本。 +} + +export interface monthYearItem { + dateStr: string,//日期 + month: number,//月份 + isVaild: boolean,//是否在允许选中范围内。 + dateStr2?: string, + year?: string | number + +} + +export interface weekItem { + week: number,//周次 + dateStr: string,//日期 + dateStr2?: string, + date: number | string, + day: number,//星期几。 + isNowIn: boolean,//是否是本月。 + isVaild: boolean,//是否在允许选中范围内。 +} + +export interface yearItem { + dateStr: string,//日期 + year: number,//月份 + isVaild: boolean,//是否在允许选中范围内。 +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-calendar-view/month-day.vue b/src/uni_modules/tmui/components/tm-calendar-view/month-day.vue new file mode 100644 index 0000000..a86f0c8 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/month-day.vue @@ -0,0 +1,435 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/month-quarter.vue b/src/uni_modules/tmui/components/tm-calendar-view/month-quarter.vue new file mode 100644 index 0000000..2664c57 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/month-quarter.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/month-year.vue b/src/uni_modules/tmui/components/tm-calendar-view/month-year.vue new file mode 100644 index 0000000..2ae8294 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/month-year.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/range-day.vue b/src/uni_modules/tmui/components/tm-calendar-view/range-day.vue new file mode 100644 index 0000000..d7f4a18 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/range-day.vue @@ -0,0 +1,479 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/tm-calendar-view.vue b/src/uni_modules/tmui/components/tm-calendar-view/tm-calendar-view.vue new file mode 100644 index 0000000..02b9d28 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/tm-calendar-view.vue @@ -0,0 +1,336 @@ + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/week-day.vue b/src/uni_modules/tmui/components/tm-calendar-view/week-day.vue new file mode 100644 index 0000000..9839437 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/week-day.vue @@ -0,0 +1,405 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar-view/year-du.vue b/src/uni_modules/tmui/components/tm-calendar-view/year-du.vue new file mode 100644 index 0000000..697bcfc --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar-view/year-du.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-calendar/tm-calendar.vue b/src/uni_modules/tmui/components/tm-calendar/tm-calendar.vue new file mode 100644 index 0000000..36ea83b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-calendar/tm-calendar.vue @@ -0,0 +1,254 @@ + + diff --git a/src/uni_modules/tmui/components/tm-card/tm-card.vue b/src/uni_modules/tmui/components/tm-card/tm-card.vue new file mode 100644 index 0000000..a9b5fb1 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-card/tm-card.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-carousel/interface.ts b/src/uni_modules/tmui/components/tm-carousel/interface.ts new file mode 100644 index 0000000..995c414 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-carousel/interface.ts @@ -0,0 +1,13 @@ +export interface listItem { + url?: string, + type?: listItemType, + //视频封面图片。 + img?: string, + text?:string, + [key: string]: any +} +export type listItemTypeStr = "url" | "type" | "img" +export enum listItemType { + img = "img", + video = "video" +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-carousel/tm-carousel.vue b/src/uni_modules/tmui/components/tm-carousel/tm-carousel.vue new file mode 100644 index 0000000..a391cd9 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-carousel/tm-carousel.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-cascader/base-cascader.vue b/src/uni_modules/tmui/components/tm-cascader/base-cascader.vue new file mode 100644 index 0000000..a5d02af --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cascader/base-cascader.vue @@ -0,0 +1,97 @@ + + diff --git a/src/uni_modules/tmui/components/tm-cascader/interface.ts b/src/uni_modules/tmui/components/tm-cascader/interface.ts new file mode 100644 index 0000000..93af811 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cascader/interface.ts @@ -0,0 +1,6 @@ +export interface childrenData { + id: number | string, + text: string, + disabled?: boolean, + children?: Array +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-cascader/node-cell.vue b/src/uni_modules/tmui/components/tm-cascader/node-cell.vue new file mode 100644 index 0000000..eafd221 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cascader/node-cell.vue @@ -0,0 +1,91 @@ + + diff --git a/src/uni_modules/tmui/components/tm-cascader/tm-cascader.vue b/src/uni_modules/tmui/components/tm-cascader/tm-cascader.vue new file mode 100644 index 0000000..1d043f0 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cascader/tm-cascader.vue @@ -0,0 +1,296 @@ + + diff --git a/src/uni_modules/tmui/components/tm-cascader/util.ts b/src/uni_modules/tmui/components/tm-cascader/util.ts new file mode 100644 index 0000000..ed74c0b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cascader/util.ts @@ -0,0 +1,109 @@ +//返回 一个节点从父到子的路径数据组。 +export const getNodeRouterData = function (list: Array, id = '', prentId = [], idmap = 'id') { + let p = []; + if (typeof prentId == 'undefined') { + prentId = []; + } + if (!Array.isArray(id)) { + id = [id] + } + let arr = Array.from(prentId) + for (let i = 0, len = list.length; i < len; i++) { + arr.push(list[i]) + if (list[i].id === id[0]) { + return arr + } + let children = list[i].children + if (children && children.length) { + let result = getNodeRouter(children, id, arr, idmap = 'id') + if (result) return result + } + arr.pop() + } + return null +} + + +interface Item { + id: string; + text: string; + children: Item[]; +} +export function getNodeRouterCustomStr(itemList: any, idList: string[], strKey = "text"): Item[] { + if (!itemList) return [] + const result: Item[] = []; + for (const item of itemList) { + if (idList.includes(item.id)) { + result.push(item); + } + result.push(...getNodeRouterCustomStr(item.children, idList, strKey)); + } + return result; +} +//返回 一个节点从父到子的路径id组。 +export const getNodeRouter = function (list = [], id = '', prentId = [], idmap = 'id'): string { + let p = []; + if (typeof prentId == 'undefined') { + prentId = []; + } + if (!Array.isArray(id)) { + id = [id] + } + let arr = Array.from(prentId) + for (let i = 0, len = list.length; i < len; i++) { + arr.push(list[i][idmap]) + if (list[i].id === id[0]) { + return arr + } + let children = list[i].children + if (children && children.length) { + let result = getNodeRouter(children, id, arr, idmap = 'id') + if (result) return result + } + arr.pop() + } + return "" +} +//平铺它所有的节点id为一维数组。 +export const treeFlat = function (arr = [], idmap = 'id') { + let res = [] + arr.forEach((item) => { + res.push(item[idmap]) + if (item.children) { + res.push(...treeFlat(item.children, idmap = 'id')) + } + }) + return res +} + +//检查 一个节点是否是否父节点,并返回它下面的所有子节点。 +export const queryNodeIsParent = function (arr: Array = [], id = "", idmap = 'id'): Array { + + let res = null; + for (let i = 0, len = arr.length; i < len; i++) { + let item = arr[i] + + if (item[idmap] == id && item.children) { + res = item; + break; + } else if (item.children) { + let rulst = queryNodeIsParent(item.children, id, idmap = 'id'); + if (rulst) { + res = rulst; + } + } + } + return res +} +//找出所有父节点id,返回数据 +export const queryParentNode = function (arr = [], idmap = 'id'): Array { + let res = []; + for (let i = 0, len = arr.length; i < len; i++) { + let item = arr[i] + if (item.children) { + res.push(item[idmap]) + res.push(...queryParentNode(item.children)) + } + } + return res +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-cell/tm-cell.vue b/src/uni_modules/tmui/components/tm-cell/tm-cell.vue new file mode 100644 index 0000000..a4915c1 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cell/tm-cell.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-chart/canvasinit.ts b/src/uni_modules/tmui/components/tm-chart/canvasinit.ts new file mode 100644 index 0000000..c43e3e5 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-chart/canvasinit.ts @@ -0,0 +1,107 @@ +export default class WxCanvas { + constructor(ctx, canvasId, isNew, canvasNode) { + this.ctx = ctx; + this.canvasId = canvasId; + this.chart = null; + this.isNew = isNew + if (isNew) { + this.canvasNode = canvasNode; + } + else { + this._initStyle(ctx); + } + + // this._initCanvas(zrender, ctx); + + this._initEvent(); + } + + getContext(contextType) { + if (contextType === '2d') { + return this.ctx; + } + } + + // canvasToTempFilePath(opt) { + // if (!opt.canvasId) { + // opt.canvasId = this.canvasId; + // } + // return wx.canvasToTempFilePath(opt, this); + // } + + setChart(chart) { + this.chart = chart; + } + + attachEvent() { + // noop + } + + detachEvent() { + // noop + } + + _initCanvas(zrender, ctx) { + zrender.util.getContext = function () { + return ctx; + }; + + zrender.util.$override('measureText', function (text, font) { + ctx.font = font || '12px sans-serif'; + return ctx.measureText(text); + }); + } + + _initStyle(ctx) { + ctx.createRadialGradient = () => { + return ctx.createCircularGradient(arguments); + }; + } + + _initEvent() { + this.event = {}; + const eventNames = [{ + wxName: 'touchStart', + ecName: 'mousedown' + }, { + wxName: 'touchMove', + ecName: 'mousemove' + }, { + wxName: 'touchEnd', + ecName: 'mouseup' + }, { + wxName: 'touchEnd', + ecName: 'click' + }]; + + eventNames.forEach(name => { + this.event[name.wxName] = e => { + const touch = e.touches[0]; + this.chart.getZr().handler.dispatch(name.ecName, { + zrX: name.wxName === 'tap' ? touch.clientX : touch.x, + zrY: name.wxName === 'tap' ? touch.clientY : touch.y + }); + }; + }); + } + addEventListener(el, name, handler, opt) { + // el?.addEventListener(name, handler, opt); + } + set width(w) { + if (this.canvasNode) this.canvasNode.width = w + } + set height(h) { + if (this.canvasNode) this.canvasNode.height = h + } + + get width() { + if (this.canvasNode) + return this.canvasNode.width + return 0 + } + get height() { + if (this.canvasNode) + return this.canvasNode.height + return 0 + } +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-chart/nvuechart.ts b/src/uni_modules/tmui/components/tm-chart/nvuechart.ts new file mode 100644 index 0000000..bb74145 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-chart/nvuechart.ts @@ -0,0 +1,64 @@ +import { EChartsCoreOption, EChartsOption } from "echarts"; + +class mytmcharts { + web = null; + width = 0; + height = 0; + optionNow: EChartsOption | null = null; + constructor(c: any, w = 0, h = 0) { + this.web = c; + this.width = w; + this.height = h; + } + setOption(option: EChartsOption, opts: any = {}) { + if (!this.web) return; + + // 处理echart配置参数,若有函数则将其toString + const optionString = JSON.stringify(option, (key, value) => { + if (typeof value === 'function') { + return JSON.stringify( + { + type:'echartCbFn', + fnString: value.toString() + } + ) + } + return value; + }); + + + this.optionNow = option; + this.web.evalJs(`echart_setOption(${optionString},${JSON.stringify(opts)})`) + } + getWidth() { + return this.width; + } + getHeight() { + return this.height; + } + getDom() { + return this.web; + } + getOption() { + return this.optionNow; + } + resize() { + if (!this.web) return; + this.web.evalJs(`mychart.resize()`) + } + showLoading(opts: any) { + if (!this.web) return; + this.web.evalJs(`mychart.showLoading(${JSON.stringify(opts)})`) + } + hideLoading() { + if (!this.web) return; + this.web.evalJs(`mychart.hideLoading()`) + } + getDataURL() { + //暂不实现。 + } +} + + + +export default mytmcharts \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-chart/option.ts b/src/uni_modules/tmui/components/tm-chart/option.ts new file mode 100644 index 0000000..6edcd52 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-chart/option.ts @@ -0,0 +1,98 @@ +export var optionChartTest = { + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + }, + confine: true + }, + legend: { + data: ['热度', '正面', '负面'] + }, + grid: { + left: 20, + right: 20, + bottom: 15, + top: 40, + containLabel: true + }, + xAxis: [ + { + type: 'value', + axisLine: { + lineStyle: { + color: '#999' + } + }, + axisLabel: { + color: '#666' + } + } + ], + yAxis: [ + { + type: 'category', + axisTick: { show: false }, + data: ['汽车之家', '今日头条', '百度贴吧', '一点资讯', '微信', '微博', '知乎'], + axisLine: { + lineStyle: { + color: '#999' + } + }, + axisLabel: { + color: '#666' + } + } + ], + series: [ + { + name: '热度', + type: 'bar', + label: { + normal: { + show: true, + position: 'inside' + } + }, + data: [300, 270, 340, 344, 300, 320, 310], + itemStyle: { + // emphasis: { + // color: '#37a2da' + // } + } + }, + { + name: '正面', + type: 'bar', + stack: '总量', + label: { + normal: { + show: true + } + }, + data: [120, 102, 141, 174, 190, 250, 220], + itemStyle: { + // emphasis: { + // color: '#32c5e9' + // } + } + }, + { + name: '负面', + type: 'bar', + stack: '总量', + label: { + normal: { + show: true, + position: 'left' + } + }, + data: [-20, -32, -21, -34, -90, -130, -110], + itemStyle: { + // emphasis: { + // color: '#67e0e3' + // } + } + } + ] +}; diff --git a/src/uni_modules/tmui/components/tm-chart/simple.js b/src/uni_modules/tmui/components/tm-chart/simple.js new file mode 100644 index 0000000..f15ef59 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-chart/simple.js @@ -0,0 +1,12 @@ +import { use } from 'echarts/lib/extension.js'; +export * from 'echarts/lib/export/core.js'; +import { install as CanvasRenderer } from 'echarts/lib/renderer/installCanvasRenderer.js'; +import { install as LineChart } from 'echarts/lib/chart/line/install.js'; +import { install as BarChart } from 'echarts/lib/chart/bar/install.js'; +import { install as PieChart } from 'echarts/lib/chart/pie/install.js'; +import { install as GridSimpleComponent } from 'echarts/lib/component/grid/installSimple.js'; +import { install as AriaComponent } from 'echarts/lib/component/aria/install.js'; +import { install as DatasetComponent } from 'echarts/lib/component/dataset/install.js'; +use([CanvasRenderer]); +use([LineChart, BarChart, PieChart]); +use([GridSimpleComponent, AriaComponent, DatasetComponent]); \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-chart/tm-chart.vue b/src/uni_modules/tmui/components/tm-chart/tm-chart.vue new file mode 100644 index 0000000..0af3a5a --- /dev/null +++ b/src/uni_modules/tmui/components/tm-chart/tm-chart.vue @@ -0,0 +1,461 @@ + + diff --git a/src/uni_modules/tmui/components/tm-checkbox-group/tm-checkbox-group.vue b/src/uni_modules/tmui/components/tm-checkbox-group/tm-checkbox-group.vue new file mode 100644 index 0000000..3c1f1b3 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-checkbox-group/tm-checkbox-group.vue @@ -0,0 +1,102 @@ + + diff --git a/src/uni_modules/tmui/components/tm-checkbox/tm-checkbox.vue b/src/uni_modules/tmui/components/tm-checkbox/tm-checkbox.vue new file mode 100644 index 0000000..29da533 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-checkbox/tm-checkbox.vue @@ -0,0 +1,273 @@ + + diff --git a/src/uni_modules/tmui/components/tm-city-cascader/interface.ts b/src/uni_modules/tmui/components/tm-city-cascader/interface.ts new file mode 100644 index 0000000..1064976 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-city-cascader/interface.ts @@ -0,0 +1,8 @@ +export interface childrenData { + id: number | string, + label?: string, + value?: string, + text: string, + disabled?: boolean, + children?: Array +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-city-cascader/tm-city-cascader.vue b/src/uni_modules/tmui/components/tm-city-cascader/tm-city-cascader.vue new file mode 100644 index 0000000..797b6b4 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-city-cascader/tm-city-cascader.vue @@ -0,0 +1,127 @@ + + diff --git a/src/uni_modules/tmui/components/tm-city-picker/interface.ts b/src/uni_modules/tmui/components/tm-city-picker/interface.ts new file mode 100644 index 0000000..1064976 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-city-picker/interface.ts @@ -0,0 +1,8 @@ +export interface childrenData { + id: number | string, + label?: string, + value?: string, + text: string, + disabled?: boolean, + children?: Array +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-city-picker/tm-city-picker.vue b/src/uni_modules/tmui/components/tm-city-picker/tm-city-picker.vue new file mode 100644 index 0000000..db43898 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-city-picker/tm-city-picker.vue @@ -0,0 +1,329 @@ + + \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-codeinput/inputinit.vue b/src/uni_modules/tmui/components/tm-codeinput/inputinit.vue new file mode 100644 index 0000000..10d8068 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-codeinput/inputinit.vue @@ -0,0 +1,69 @@ + + diff --git a/src/uni_modules/tmui/components/tm-codeinput/tm-codeinput.vue b/src/uni_modules/tmui/components/tm-codeinput/tm-codeinput.vue new file mode 100644 index 0000000..d553e6f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-codeinput/tm-codeinput.vue @@ -0,0 +1,176 @@ + + + diff --git a/src/uni_modules/tmui/components/tm-col/tm-col.vue b/src/uni_modules/tmui/components/tm-col/tm-col.vue new file mode 100644 index 0000000..493a934 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-col/tm-col.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-collapse-item/tm-collapse-item.vue b/src/uni_modules/tmui/components/tm-collapse-item/tm-collapse-item.vue new file mode 100644 index 0000000..bbecec0 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-collapse-item/tm-collapse-item.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-collapse/tm-collapse.vue b/src/uni_modules/tmui/components/tm-collapse/tm-collapse.vue new file mode 100644 index 0000000..0b12a67 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-collapse/tm-collapse.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-color-view/colorTouch.wxs b/src/uni_modules/tmui/components/tm-color-view/colorTouch.wxs new file mode 100644 index 0000000..8e5135a --- /dev/null +++ b/src/uni_modules/tmui/components/tm-color-view/colorTouch.wxs @@ -0,0 +1,127 @@ +var THRESHOLD = 0.3; +var MIN_DISTANCE = 10; +var owner; +var state; + +var getState = function (ownerInstance) { + owner = ownerInstance; + state = owner.getState(); +}; + +var resetTouchStatus = function () { + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +}; + + +var swipeMove = function (x, y) { + var transform = 'translate3d(' + x + 'px, ' + y + 'px, 0)'; + var transition = state.dragging ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)'; + owner.selectComponent('#wrapper').setStyle({ + '-webkit-transform': transform, + '-webkit-transition': transition, + transform: transform, + transition: transition, + }); + +}; +var swipeMove2 = function (x, y) { + var transform = 'translate3d(' + x + 'px, ' + y + 'px, 0)'; + var transition = state.dragging ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)'; + owner.selectComponent('#wrapper2').setStyle({ + '-webkit-transform': transform, + '-webkit-transition': transition, + transform: transform, + transition: transition, + }); + +}; +var startDrag = function (event, ownerInstance) { + getState(ownerInstance) + var touchPoint = event.touches[0]; + if (!state.startX) { + state.startX = touchPoint.clientX; + state.startY = touchPoint.clientY; + } +}; + +var onDrag = function (event, ownerInstance) { + var touchPoint = event.touches[0]; + state.deltaX = touchPoint.clientX - state.startX; + state.deltaY = touchPoint.clientY - state.startY; + if (state.deltaX != 0) { + state.deltaX = 0; + } + if (state.deltaY <= -15) { + state.deltaY = -15; + } + if (state.deltaY > 182) { + state.deltaY = 182; + } + + + state.dragging = true; + swipeMove(state.deltaX, state.deltaY); + owner.callMethod('wxsCallPos', state.deltaX, state.deltaY); + + if (event.stopPropagation) { + event.stopPropagation() + } + if (event.preventDefault) { + event.preventDefault() + } +}; + +var endDrag = function (event, ownerInstance) { + var touchPoint = event.touches[0]; + state.dragging = false; + +}; +var startDrag2 = function (event, ownerInstance) { + getState(ownerInstance) + var touchPoint = event.touches[0]; + if (!state.startX2) { + state.startX2 = touchPoint.clientX; + state.startY2 = touchPoint.clientY; + } +}; + +var onDrag2 = function (event, ownerInstance) { + var touchPoint = event.touches[0]; + state.deltaX2 = touchPoint.clientX - state.startX2; + state.deltaY2 = touchPoint.clientY - state.startY2; + state.dragging = true; + + if (state.deltaX2 > 5) { + state.deltaX2 = 5; + } + if (state.deltaX2 < -182) { + state.deltaX2 = -182; + } + if (state.deltaY2 <= -2) { + state.deltaY2 = -2; + } + if (state.deltaY2 > 185) { + state.deltaY2 = 185; + } + + swipeMove2(state.deltaX2, state.deltaY2); + owner.callMethod('wxsCallPos', state.deltaX2, state.deltaY2); +}; + +var endDrag2 = function (event, ownerInstance) { + var touchPoint = event.touches[0]; + state.dragging = false; + +}; +module.exports = { + startDrag: startDrag, + onDrag: onDrag, + endDrag: endDrag, + startDrag2: startDrag2, + onDrag2: onDrag2, + endDrag2: endDrag2 +}; diff --git a/src/uni_modules/tmui/components/tm-color-view/tm-color-view.vue b/src/uni_modules/tmui/components/tm-color-view/tm-color-view.vue new file mode 100644 index 0000000..ec9504f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-color-view/tm-color-view.vue @@ -0,0 +1,558 @@ + + + + + + + + diff --git a/src/uni_modules/tmui/components/tm-comment/tm-comment.vue b/src/uni_modules/tmui/components/tm-comment/tm-comment.vue new file mode 100644 index 0000000..59b8bb6 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-comment/tm-comment.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-countdown/tm-countdown.vue b/src/uni_modules/tmui/components/tm-countdown/tm-countdown.vue new file mode 100644 index 0000000..897a821 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-countdown/tm-countdown.vue @@ -0,0 +1,162 @@ + + diff --git a/src/uni_modules/tmui/components/tm-coupon/interface.ts b/src/uni_modules/tmui/components/tm-coupon/interface.ts new file mode 100644 index 0000000..bb0fc5b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-coupon/interface.ts @@ -0,0 +1,12 @@ +export interface surplice { + price: number | string,//价格金额 + suffix: string,//后缀文本 + prefix: string,//前缀文本 + subtext: string//小文本 +} + +export interface rightSurplice { + title: number | string,//标题 + subtitle: string,//副标题 + time: string,//有效期时间文本 +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-coupon/tm-coupon.vue b/src/uni_modules/tmui/components/tm-coupon/tm-coupon.vue new file mode 100644 index 0000000..2682e1b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-coupon/tm-coupon.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-cropimg/tm-cropimg.vue b/src/uni_modules/tmui/components/tm-cropimg/tm-cropimg.vue new file mode 100644 index 0000000..87aba9b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-cropimg/tm-cropimg.vue @@ -0,0 +1,461 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-data-table/interface.ts b/src/uni_modules/tmui/components/tm-data-table/interface.ts new file mode 100644 index 0000000..12ee274 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-data-table/interface.ts @@ -0,0 +1,58 @@ + +export interface DataTableColumn { + title: string,//列表的标题。默认为:"" + key: string,//这个key需要和tabdata中的key相同,表示同一列。 + width: number,//列表宽 + align: string,//对齐方向,start左,center中,end右,默认center + sort?: boolean,//是否显示排序,默认false + bgColor: string,//当前头的背景色。默认grey + cellColor: string,//当前列的背景色。,如果为"",则使用行数据的背景,如果行背景也没有提供,使用white. + light: boolean,//背景色是否是浅色 + sortType: string,//desc降序,升序asce,none,无排序 + unit: string,//单位 + headerFontSize: number, // 头部字体大小 + fontSize: number, // 内容字体大小 + headerProps: tSheetProps, // 头部tSheet props + cellProps: tSheetProps, // 内容 tSheet props + _headerProps?: _tSheetProps, + _cellProps?: _tSheetProps, + minWidth: number, + ellipsis: boolean, //文本超出隐藏 + slot?: string +} +export interface tSheetProps { + parenClass: string, + contStyle: string, + height: number, + width: number, + color: string, + transprent: boolean | string, + border: number | string, + margin: any, + padding: any, + unit: string, + hoverClass: string, + darkBgColor: string, + noLevel: boolean, + blur: boolean, + _style: object | string, + _class: object | string, + followTheme: boolean | string, + dark: boolean | string, + followDark: boolean | string, + round: number, + shadow: number, + outlined: boolean, + borderStyle: string, + borderDirection: string, + text: boolean | string, + linear: string, + linearDeep: string, + isDisabledRoundAndriod: boolean | string, +} + +export interface _tSheetProps { + width: number, + height: number, + fontSize: number +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-data-table/tm-data-table.vue b/src/uni_modules/tmui/components/tm-data-table/tm-data-table.vue new file mode 100644 index 0000000..ed45943 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-data-table/tm-data-table.vue @@ -0,0 +1,415 @@ + + + diff --git a/src/uni_modules/tmui/components/tm-descriptions-item/tm-descriptions-item.vue b/src/uni_modules/tmui/components/tm-descriptions-item/tm-descriptions-item.vue new file mode 100644 index 0000000..84c2c07 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-descriptions-item/tm-descriptions-item.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-descriptions/tm-descriptions.vue b/src/uni_modules/tmui/components/tm-descriptions/tm-descriptions.vue new file mode 100644 index 0000000..727835b --- /dev/null +++ b/src/uni_modules/tmui/components/tm-descriptions/tm-descriptions.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-divider/tm-divider.vue b/src/uni_modules/tmui/components/tm-divider/tm-divider.vue new file mode 100644 index 0000000..492e297 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-divider/tm-divider.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-drag-list/interface.ts b/src/uni_modules/tmui/components/tm-drag-list/interface.ts new file mode 100644 index 0000000..03b9f05 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-drag-list/interface.ts @@ -0,0 +1,9 @@ +export interface itemList { + _id?: number | string,//内部标识 + top?: number | string, + i?: number | string, + text?: number | string,//项目文字 + icon?: string,//项目图标,左边 + color?: string,//文字颜色 + [prop: string]: any +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-drag-list/tm-drag-list.vue b/src/uni_modules/tmui/components/tm-drag-list/tm-drag-list.vue new file mode 100644 index 0000000..515733c --- /dev/null +++ b/src/uni_modules/tmui/components/tm-drag-list/tm-drag-list.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-drawer/tm-drawer.vue b/src/uni_modules/tmui/components/tm-drawer/tm-drawer.vue new file mode 100644 index 0000000..11e0357 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-drawer/tm-drawer.vue @@ -0,0 +1,570 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-dropdown/interface.ts b/src/uni_modules/tmui/components/tm-dropdown/interface.ts new file mode 100644 index 0000000..4b0b2f2 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-dropdown/interface.ts @@ -0,0 +1,6 @@ +export interface itemList { + text: string, + iconColor?: string, + icon?: string, + [prop: string]: any +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-dropdown/tm-dropdown.vue b/src/uni_modules/tmui/components/tm-dropdown/tm-dropdown.vue new file mode 100644 index 0000000..c6fccf7 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-dropdown/tm-dropdown.vue @@ -0,0 +1,553 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-filterMenu-item/tm-filterMenu-item.vue b/src/uni_modules/tmui/components/tm-filterMenu-item/tm-filterMenu-item.vue new file mode 100644 index 0000000..90c2cbd --- /dev/null +++ b/src/uni_modules/tmui/components/tm-filterMenu-item/tm-filterMenu-item.vue @@ -0,0 +1,245 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-filterMenu/interface.ts b/src/uni_modules/tmui/components/tm-filterMenu/interface.ts new file mode 100644 index 0000000..42b1109 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-filterMenu/interface.ts @@ -0,0 +1,13 @@ +export interface FilterMenuType { + id: string | number, + text: string, + height: number, + unit: string, + icon: string, + unIcon: string, + fontSize: number, + fontColor: string, + unFontColor: string, + isButton: Boolean, + uuid: String | Number +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-filterMenu/tm-filterMenu.vue b/src/uni_modules/tmui/components/tm-filterMenu/tm-filterMenu.vue new file mode 100644 index 0000000..4b2afb7 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-filterMenu/tm-filterMenu.vue @@ -0,0 +1,363 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-float-button/interface.ts b/src/uni_modules/tmui/components/tm-float-button/interface.ts new file mode 100644 index 0000000..c731b81 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-float-button/interface.ts @@ -0,0 +1,31 @@ +import { linearDeep, linearDirection } from "../../tool/lib/interface" +//按钮的位置 +export enum positionType { + tl = 'tl', + tc = 'tc', + tr = 'tr', + bl = 'bl', + bc = 'bc', + br = 'br', +} +//子菜单弹出的位置 +export enum popDir { + l = 'left', + t = 'top', + b = 'bottom', + r = 'right' +} + +export interface actionsItem { + icon: string, + label?: string, + iconSize?: number, + fontSize?: number, + color?: string,//背景 + fontColor?: string, + linear?: string, + linearDeep?: string + openType?:string, + callback?:Function, + [key: string]: any +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-float-button/tm-float-button.vue b/src/uni_modules/tmui/components/tm-float-button/tm-float-button.vue new file mode 100644 index 0000000..aa5bac4 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-float-button/tm-float-button.vue @@ -0,0 +1,663 @@ + + + diff --git a/src/uni_modules/tmui/components/tm-fly-view/parabola.ts b/src/uni_modules/tmui/components/tm-fly-view/parabola.ts new file mode 100644 index 0000000..07aef1a --- /dev/null +++ b/src/uni_modules/tmui/components/tm-fly-view/parabola.ts @@ -0,0 +1,18 @@ +export function findXOnQuadraticBezierCurve(startX: number, startY: number, control1X: number, control1Y: number, control2X: number, control2Y: number, endX: number, endY: number, targetY: number): number { + let tMin = 0; + let tMax = 1; + const epsilon = 1e-6; + + while (tMax - tMin > epsilon) { + const tMid = (tMin + tMax) / 2; + const yMid = Math.pow(1 - tMid, 3) * startY + 3 * Math.pow(1 - tMid, 2) * tMid * control1Y + 3 * (1 - tMid) * Math.pow(tMid, 2) * control2Y + Math.pow(tMid, 3) * endY; + + if (yMid < targetY) { + tMin = tMid; + } else { + tMax = tMid; + } + } + + return Math.pow(1 - tMax, 3) * startX + 3 * Math.pow(1 - tMax, 2) * tMax * control1X + 3 * (1 - tMax) * Math.pow(tMax, 2) * control2X + Math.pow(tMax, 3) * endX; +} diff --git a/src/uni_modules/tmui/components/tm-fly-view/tm-fly-view.vue b/src/uni_modules/tmui/components/tm-fly-view/tm-fly-view.vue new file mode 100644 index 0000000..94e5c2d --- /dev/null +++ b/src/uni_modules/tmui/components/tm-fly-view/tm-fly-view.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/uni_modules/tmui/components/tm-form-item/interface.ts b/src/uni_modules/tmui/components/tm-form-item/interface.ts new file mode 100644 index 0000000..0942ef3 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-form-item/interface.ts @@ -0,0 +1,13 @@ +export interface rulesItem { + validator?: Function | boolean,//检验函数。可以是异步回调。 + required?: boolean,//是否必填。 + message?: string,//检验不合格时的文本 + type?: string,//校验类型. +} +export interface inputPushItem { + value: any, + isRequiredError: boolean,//true,错误,false正常 检验状态 + componentsName: string,//表单组件类型。 + message: string,//检验信息提示语。 + +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-form-item/tm-form-item.vue b/src/uni_modules/tmui/components/tm-form-item/tm-form-item.vue new file mode 100644 index 0000000..9670688 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-form-item/tm-form-item.vue @@ -0,0 +1,434 @@ + + + + diff --git a/src/uni_modules/tmui/components/tm-form-item/validateFunCall.ts b/src/uni_modules/tmui/components/tm-form-item/validateFunCall.ts new file mode 100644 index 0000000..6cb5470 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-form-item/validateFunCall.ts @@ -0,0 +1,76 @@ +import type { rulesItem } from "./interface" +import type { formItem } from "../tm-form/interface"; +export function validateFunCall(rules: Array, value: any) { + rules = rules.map((el) => { + if (typeof el.validator === "function" && el.required === true) { + return el; + } else if (typeof el.validator === "boolean" && el.required === true) { + return { + ...el, + validator: (val: any) => { + if (val === null || val === "" || typeof val == "undefined") return false; + if (typeof val === "object") { + if (Array.isArray(val)) { + if (val.length == 0) return false; + } else if (Object.keys(val).length === 0 && val.constructor === Object) { + return false; + } + } + if (typeof val === "boolean") { + return val; + } + if (typeof val === "number") { + if (isNaN(val)) return false; + if (Number(val) < 0) return false; + } + if (typeof val === "string") { + if (val.trim().length == 0) return false; + } + return true; + }, + }; + } else { + return { + ...el, + validator: (val: string | number) => { + return true; + }, + }; + } + }); + let rules_filter: Array = rules.filter((el) => { + return typeof el.validator === "function" && el.required === true; + }); + let rules_fun: Array = rules_filter.map((el) => { + let validator = true; + if (typeof el.validator === "function") { + let vr = el.validator(value); + if (vr) { + validator = true; + } else { + validator = false; + } + } else { + validator = true; + } + + return { + message: String(el.message), + validator: validator, + } + }); + + return rules_fun; +}; + + + +export function getObjectVal(obj: any, field = "") { + if (field == "") return obj; + var arr = field.split("."); + while (arr.length > 1) { + let key = String(arr.shift()); + obj = obj[key]; + } + return obj[arr[0]]; +} diff --git a/src/uni_modules/tmui/components/tm-form/interface.ts b/src/uni_modules/tmui/components/tm-form/interface.ts new file mode 100644 index 0000000..dfd7c6f --- /dev/null +++ b/src/uni_modules/tmui/components/tm-form/interface.ts @@ -0,0 +1,24 @@ + +interface rulesItem { + validator?: Function | boolean,//检验函数。可以是异步回调。 + required?: boolean,//是否必填。 + message?: string,//检验不合格时的文本 + type?: string,//校验类型. +} +export interface formItem { + label: string,//标签名称。 + field: string,//字段名称key. + value: any, + isRequiredError: boolean,//true,错误,false正常 检验状态 + message: string,//检验信息提示语。 + id: number | string,//表单唯一标识id + componentsName: string,//表单组件类型。 + rules: rulesItem[] +} + +export interface validateResultListType { + message: string, + validator: boolean, //通过为true,失败为false + field: string,//字段名称key. + [key: string]: any +} \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-form/tm-form.vue b/src/uni_modules/tmui/components/tm-form/tm-form.vue new file mode 100644 index 0000000..93f29df --- /dev/null +++ b/src/uni_modules/tmui/components/tm-form/tm-form.vue @@ -0,0 +1,290 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/tmui/components/tm-grid-item/tm-grid-item.vue b/src/uni_modules/tmui/components/tm-grid-item/tm-grid-item.vue new file mode 100644 index 0000000..725c126 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-grid-item/tm-grid-item.vue @@ -0,0 +1,187 @@ + + diff --git a/src/uni_modules/tmui/components/tm-grid/tm-grid.vue b/src/uni_modules/tmui/components/tm-grid/tm-grid.vue new file mode 100644 index 0000000..2bed0c5 --- /dev/null +++ b/src/uni_modules/tmui/components/tm-grid/tm-grid.vue @@ -0,0 +1,128 @@ + + diff --git a/src/uni_modules/tmui/components/tm-html/node/node.vue b/src/uni_modules/tmui/components/tm-html/node/node.vue new file mode 100644 index 0000000..1d2cbcb --- /dev/null +++ b/src/uni_modules/tmui/components/tm-html/node/node.vue @@ -0,0 +1,574 @@ +