commit 40665dda672aa61583d4964256f3be125bb3f0b6 Author: ISFP_T <68358856@qq.com> Date: Thu Feb 26 09:25:47 2026 +0800 first commit diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json new file mode 100644 index 0000000..25f42a8 --- /dev/null +++ b/.eslintrc-auto-import.json @@ -0,0 +1,117 @@ +{ + "globals": { + "Component": true, + "ComponentPublicInstance": true, + "ComputedRef": true, + "DirectiveBinding": true, + "EffectScope": true, + "ExtractDefaultPropTypes": true, + "ExtractPropTypes": true, + "ExtractPublicPropTypes": true, + "InjectionKey": true, + "MaybeRef": true, + "MaybeRefOrGetter": true, + "PropType": true, + "Ref": true, + "VNode": true, + "WritableComputedRef": true, + "acceptHMRUpdate": true, + "computed": true, + "createApp": true, + "createPinia": true, + "customRef": true, + "defineAsyncComponent": true, + "defineComponent": true, + "defineStore": true, + "effectScope": true, + "getActivePinia": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "inject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "mapActions": true, + "mapGetters": true, + "mapState": true, + "mapStores": true, + "mapWritableState": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onAddToFavorites": true, + "onBackPress": true, + "onBeforeMount": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onDeactivated": true, + "onError": true, + "onErrorCaptured": true, + "onHide": true, + "onLaunch": true, + "onLoad": true, + "onMounted": true, + "onNavigationBarButtonTap": true, + "onNavigationBarSearchInputChanged": true, + "onNavigationBarSearchInputClicked": true, + "onNavigationBarSearchInputConfirmed": true, + "onNavigationBarSearchInputFocusChanged": true, + "onPageNotFound": true, + "onPageScroll": true, + "onPullDownRefresh": true, + "onReachBottom": true, + "onReady": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onResize": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onShareAppMessage": true, + "onShareTimeline": true, + "onShow": true, + "onTabItemTap": true, + "onThemeChange": true, + "onUnhandledRejection": true, + "onUnload": true, + "onUnmounted": true, + "onUpdated": true, + "onWatcherCleanup": true, + "provide": true, + "reactive": true, + "readonly": true, + "ref": true, + "resolveComponent": true, + "setActivePinia": true, + "setMapStoreSuffix": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "storeToRefs": true, + "toRaw": true, + "toRef": true, + "toRefs": true, + "toValue": true, + "triggerRef": true, + "unref": true, + "useAreaCode": true, + "useAttrs": true, + "useCssModule": true, + "useCssVars": true, + "useEventEmit": true, + "useGetMsgCode": true, + "useI18n": true, + "useId": true, + "useModel": true, + "useNetworkStatusChange": true, + "usePage": true, + "useScrollThreshold": true, + "useSlots": true, + "useTemplateRef": true, + "watch": true, + "watchEffect": true, + "watchPostEffect": true, + "watchSyncEffect": true + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5365a76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +distMap +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +/unpackage/ +docs \ No newline at end of file diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..984bd57 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,25 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "app-plus" : { + "launchtype" : "local" + }, + "default" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "customPlaygroundType" : "local", + "playground" : "standard", + "type" : "uni-app:app-android" + }, + { + "playground" : "custom", + "type" : "uni-app:app-ios" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..10b8c3c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,21 @@ +{ + "i18n-ally.localesPaths": [ + "src/locale", + ], + "i18n-ally.keystyle": "nested", + "i18n-ally.sortKeys": true, + "i18n-ally.namespace": true, + "i18n-ally.enabledParsers": [ + "json" + ], + "i18n-ally.sourceLanguage": "zh-Hans", + "i18n-ally.displayLanguage": "zh-Hans", + "i18n-ally.translate.engines": [ + "google-cn", + "google", + "deepl" + ], + "i18n-ally.enabledFrameworks": [ + "vue", + ], +} diff --git a/CustomStoryboard.zip b/CustomStoryboard.zip new file mode 100644 index 0000000..bc5cef6 Binary files /dev/null and b/CustomStoryboard.zip differ diff --git a/DirectoryV3.xml b/DirectoryV3.xml new file mode 100644 index 0000000..0f7e0b5 --- /dev/null +++ b/DirectoryV3.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/env/.env b/env/.env new file mode 100644 index 0000000..0751e0f --- /dev/null +++ b/env/.env @@ -0,0 +1,8 @@ +VITE_APP_TITLE=ChefLinkStore +VITE_APP_PORT=8091 +# h5是否需要配置代理 +VITE_APP_PROXY=true +VITE_APP_PROXY_PREFIX=/api +# 默认语言 +VITE_FALLBACK_LOCALE='zh-Hans' + diff --git a/env/.env.development b/env/.env.development new file mode 100644 index 0000000..0817bf7 --- /dev/null +++ b/env/.env.development @@ -0,0 +1,11 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV=development +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE=false + +#本地环境 +#VITE_SERVER_BASEURL=http://liuyao.nat100.top/meiguowaimai +VITE_SERVER_BASEURL=http://192.168.5.23:8889 +#VITE_SERVER_BASEURL=https://howhowfresh.com/prod-api +#VITE_SERVER_BASEURL=http://192.168.1.8:8811 +#VITE_SERVER_BASEURL=http://mifengchuantou.natapp1.cc/meiguowaimai diff --git a/env/.env.production b/env/.env.production new file mode 100644 index 0000000..4839794 --- /dev/null +++ b/env/.env.production @@ -0,0 +1,10 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV=production +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE=true + + +#正式环境 +VITE_SERVER_BASEURL=https://howhowfresh.com/prod-api +#VITE_SERVER_BASEURL=http://liuyao.nat100.top/meiguowaimai + diff --git a/env/.env.test b/env/.env.test new file mode 100644 index 0000000..0f42556 --- /dev/null +++ b/env/.env.test @@ -0,0 +1,5 @@ +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV = 'development' +# 是否去除console 和 debugger +VITE_DELETE_CONSOLE = false + diff --git a/index.html b/index.html new file mode 100644 index 0000000..f8a54cb --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/openapi-ts-request.config.ts b/openapi-ts-request.config.ts new file mode 100644 index 0000000..2a75abc --- /dev/null +++ b/openapi-ts-request.config.ts @@ -0,0 +1,32 @@ +import type {GenerateServiceProps} from 'openapi-ts-request' + +// 将路径转换为大驼峰命名 +function pathToCamelCase(path: string): string { + return path + .split('/') + .filter(segment => segment && segment !== '') + .map(segment => segment.charAt(0).toUpperCase() + segment.slice(1)) + .join('') +} + +export default [ + { + schemaPath: 'http://127.0.0.1:4523/export/openapi/4?version=3.0', + serversPath: './src/service', + requestLibPath: `import request from '@/http/vue-query';\n import type { CustomRequestOptions } from '@/http/types'`, + requestOptionsType: 'CustomRequestOptions', + isGenReactQuery: false, + reactQueryMode: 'vue', + isGenJavaScript: false, + hook: { + // 自定义接口名称生成规则 + customFunctionName: (data: any) => { + const {path, method} = data + // 将路径转换为大驼峰,然后加上请求方法 + const camelCasePath = pathToCamelCase(path) + const methodSuffix = method.charAt(0).toUpperCase() + method.slice(1).toLowerCase() + return `${camelCasePath}${methodSuffix}` + } + } + }, +] as GenerateServiceProps[] diff --git a/package.json b/package.json new file mode 100644 index 0000000..5fc230c --- /dev/null +++ b/package.json @@ -0,0 +1,114 @@ +{ + "name": "uni-preset-vue", + "version": "0.0.0", + "scripts": { + "openapi": "openapi-ts", + "dev:custom": "uni -p", + "dev": "uni", + "dev:h5": "uni", + "dev:h5:ssr": "uni --ssr", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-xhs": "uni -p mp-xhs", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build:custom": "uni build -p", + "build:h5": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-weixin": "uni build -p mp-weixin", + "build:mp-xhs": "uni build -p mp-xhs", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union", + "type-check": "vue-tsc --noEmit" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-4050620250312001", + "@dcloudio/uni-app-harmony": "3.0.0-4050620250312001", + "@dcloudio/uni-app-plus": "3.0.0-4050620250312001", + "@dcloudio/uni-components": "3.0.0-4050620250312001", + "@dcloudio/uni-h5": "3.0.0-4050620250312001", + "@dcloudio/uni-i18n": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-alipay": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-baidu": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-jd": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-lark": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-qq": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-toutiao": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-weixin": "3.0.0-4050620250312001", + "@dcloudio/uni-mp-xhs": "3.0.0-4050620250312001", + "@dcloudio/uni-quickapp-webview": "3.0.0-4050620250312001", + "@googlemaps/js-api-loader": "1.16.8", + "@iconify-json/fluent": "1.2.14", + "@stripe/stripe-js": "^7.3.0", + "big.js": "6.2.2", + "crypto-js": "4.2.0", + "dayjs": "1.11.10", + "fuse.js": "^7.1.0", + "gsap": "^3.13.0", + "image-tools": "1.4.0", + "js-base64": "3.7.7", + "nanoid": "^5.1.5", + "pinia": "2.0.36", + "pinia-plugin-persistedstate": "3.2.1", + "qs": "6.5.3", + "ramda": "0.30.1", + "rxjs": "^7.8.2", + "throttle-debounce": "5.0.2", + "vue": "3.4.21", + "vue-i18n": "9.1.9", + "wot-design-uni": "1.9.1", + "zod": "3.24.2" + }, + "devDependencies": { + "@dcloudio/types": "3.4.14", + "@dcloudio/uni-automator": "3.0.0-4050620250312001", + "@dcloudio/uni-cli-shared": "3.0.0-4050620250312001", + "@dcloudio/uni-stacktracey": "3.0.0-4050620250312001", + "@dcloudio/vite-plugin-uni": "3.0.0-4050620250312001", + "@iconify-json/carbon": "^1.2.8", + "@types/big.js": "6.2.2", + "@types/crypto-js": "4.2.2", + "@types/node": "20.17.19", + "@types/qs": "6.9.18", + "@types/ramda": "0.30.2", + "@types/throttle-debounce": "5.0.2", + "@types/wechat-miniprogram": "3.4.8", + "@uni-helper/vite-plugin-uni-layouts": "0.1.10", + "@vue/runtime-core": "3.5.13", + "@vue/tsconfig": "0.1.3", + "openapi-ts-request": "^1.6.6", + "sass": "1.78.0", + "typescript": "4.9.5", + "unocss": "0.58.0", + "unocss-applet": "0.7.8", + "unocss-preset-animations": "^1.1.1", + "unplugin-auto-import": "0.17.8", + "vite": "5.4.14", + "vite-plugin-restart": "0.4.2", + "vite-plugin-vue-devtools": "7.7.2", + "vue-tsc": "1.8.27" + }, + "engines": { + "node": ">=18.12.0", + "pnpm": ">=9.11.0" + }, + "volta": { + "node": "20.18.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..945af7e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,10717 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dcloudio/uni-app': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(@dcloudio/types@3.4.14)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-app-harmony': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-app-plus': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-components': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-h5': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001 + '@dcloudio/uni-mp-alipay': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-baidu': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(@dcloudio/types@3.4.14)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-jd': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-kuaishou': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-lark': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-qq': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-toutiao': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-weixin': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-xhs': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-quickapp-webview': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@googlemaps/js-api-loader': + specifier: 1.16.8 + version: 1.16.8 + '@iconify-json/fluent': + specifier: 1.2.14 + version: 1.2.14 + '@stripe/stripe-js': + specifier: ^7.3.0 + version: 7.9.0 + big.js: + specifier: 6.2.2 + version: 6.2.2 + crypto-js: + specifier: 4.2.0 + version: 4.2.0 + dayjs: + specifier: 1.11.10 + version: 1.11.10 + fuse.js: + specifier: ^7.1.0 + version: 7.1.0 + gsap: + specifier: ^3.13.0 + version: 3.14.2 + image-tools: + specifier: 1.4.0 + version: 1.4.0 + js-base64: + specifier: 3.7.7 + version: 3.7.7 + nanoid: + specifier: ^5.1.5 + version: 5.1.6 + pinia: + specifier: 2.0.36 + version: 2.0.36(typescript@4.9.5)(vue@3.4.21(typescript@4.9.5)) + pinia-plugin-persistedstate: + specifier: 3.2.1 + version: 3.2.1(pinia@2.0.36(typescript@4.9.5)(vue@3.4.21(typescript@4.9.5))) + qs: + specifier: 6.5.3 + version: 6.5.3 + ramda: + specifier: 0.30.1 + version: 0.30.1 + rxjs: + specifier: ^7.8.2 + version: 7.8.2 + throttle-debounce: + specifier: 5.0.2 + version: 5.0.2 + vue: + specifier: 3.4.21 + version: 3.4.21(typescript@4.9.5) + vue-i18n: + specifier: 9.1.9 + version: 9.1.9(vue@3.4.21(typescript@4.9.5)) + wot-design-uni: + specifier: 1.9.1 + version: 1.9.1(vue@3.4.21(typescript@4.9.5)) + zod: + specifier: 3.24.2 + version: 3.24.2 + devDependencies: + '@dcloudio/types': + specifier: 3.4.14 + version: 3.4.14 + '@dcloudio/uni-automator': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-cli-shared': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-stacktracey': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001 + '@dcloudio/vite-plugin-uni': + specifier: 3.0.0-4050620250312001 + version: 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@iconify-json/carbon': + specifier: ^1.2.8 + version: 1.2.18 + '@types/big.js': + specifier: 6.2.2 + version: 6.2.2 + '@types/crypto-js': + specifier: 4.2.2 + version: 4.2.2 + '@types/node': + specifier: 20.17.19 + version: 20.17.19 + '@types/qs': + specifier: 6.9.18 + version: 6.9.18 + '@types/ramda': + specifier: 0.30.2 + version: 0.30.2 + '@types/throttle-debounce': + specifier: 5.0.2 + version: 5.0.2 + '@types/wechat-miniprogram': + specifier: 3.4.8 + version: 3.4.8 + '@uni-helper/vite-plugin-uni-layouts': + specifier: 0.1.10 + version: 0.1.10(rollup@4.57.1) + '@vue/runtime-core': + specifier: 3.5.13 + version: 3.5.13 + '@vue/tsconfig': + specifier: 0.1.3 + version: 0.1.3(@types/node@20.17.19) + openapi-ts-request: + specifier: ^1.6.6 + version: 1.12.5(@types/node@20.17.19)(@vue/compiler-sfc@3.5.27)(chokidar@3.6.0)(typescript@4.9.5) + sass: + specifier: 1.78.0 + version: 1.78.0 + typescript: + specifier: 4.9.5 + version: 4.9.5 + unocss: + specifier: 0.58.0 + version: 0.58.0(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + unocss-applet: + specifier: 0.7.8 + version: 0.7.8 + unocss-preset-animations: + specifier: ^1.1.1 + version: 1.3.0(unocss@0.58.0(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))) + unplugin-auto-import: + specifier: 0.17.8 + version: 0.17.8(rollup@4.57.1) + vite: + specifier: 5.4.14 + version: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + vite-plugin-restart: + specifier: 0.4.2 + version: 0.4.2(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + vite-plugin-vue-devtools: + specifier: 7.7.2 + version: 7.7.2(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + vue-tsc: + specifier: 1.8.27 + version: 1.8.27(typescript@4.9.5) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.6': + resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.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-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + 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.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + 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.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + 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.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.0': + resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.0': + resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.0': + resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==} + 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.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + + '@dcloudio/types@3.4.14': + resolution: {integrity: sha512-VolQeZfTh8pQFsr2IlfIVX93blfvGTuBoJuZUc7iWOqtHV8gDrq6fXLhzsVlgZyuhhRZLOxlo33rkEqnY+ucAw==} + + '@dcloudio/uni-app-harmony@3.0.0-4050620250312001': + resolution: {integrity: sha512-2XvCk0NO8bJjeHv50tZXCGZfEizVAX281B2B7uwbVib+qwzqXw5z1pi/POyMe5gTAXCSjE1+bOBFmH8HSKku8g==} + + '@dcloudio/uni-app-plus@3.0.0-4050620250312001': + resolution: {integrity: sha512-DN4dxknm5ER9KITzYk69IFT6cJmzdaSVwLe17hJOm+TgoDx/azI6BwwxFGuPaRZOqAWmUybkwJ2up2ZV0UpXhQ==} + + '@dcloudio/uni-app-uts@3.0.0-4050620250312001': + resolution: {integrity: sha512-HMrejJhes474A6NHgb+wvrJDgP62cX8MjGW0svXe7ZJ5fpnuRWKVhgGtyq3ORNIkcuJYY431/0K4STKLPq3O6A==} + + '@dcloudio/uni-app-vite@3.0.0-4050620250312001': + resolution: {integrity: sha512-yhHDDgdFZZ67BVPtbfg+SGvF36rNEkCld6Kc6ixtnHNMgsR/5e5ha2pV4jPm2t1rTZSHDivcYNXyfCYJFglHOA==} + + '@dcloudio/uni-app-vue@3.0.0-4050620250312001': + resolution: {integrity: sha512-FvY9uWhp85efkk9z2ehie0B8k4JUQCcZvKXg+B+EOl6fZlpyed/E/VfNvQfvbvTrApTIwpBpA58jufo33T2mRQ==} + + '@dcloudio/uni-app@3.0.0-4050620250312001': + resolution: {integrity: sha512-s6SjMaUliXQZwlqdLFM7RKaraINO8Wuilzpni0qZJikPUh3S4CFmeystswY5u3PV1ubw1usj0efFXIv4M2nFFw==} + peerDependencies: + '@dcloudio/types': ^3.4.14 + + '@dcloudio/uni-automator@3.0.0-4050620250312001': + resolution: {integrity: sha512-ohF3tymLypd8dZJU3K0Cd7zX8UNKkKnJB5IbcLzurOMMkrXN9YU1KCEATtPOpbjR5dzdoRV9c6dWq7iLpqnFGg==} + peerDependencies: + jest: 27.0.4 + jest-environment-node: 27.5.1 + + '@dcloudio/uni-cli-shared@3.0.0-4050620250312001': + resolution: {integrity: sha512-AxPYMZv4caeGbl1vh4dGcdlzrD0okdVOIUGVtszGhlKkVlL7ciB/69Dz6/eNaknmeh6IDFc75pnqMlRK8OElqw==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@dcloudio/uni-cloud@3.0.0-4050620250312001': + resolution: {integrity: sha512-YN1jtp7VbJ/1JjgP/zx5aftEnbGewOogwf9ggqtOhRs3NznpPgxtrXjTYLcC0f1GSAYLvLY/dn7oehL+QFoMiQ==} + + '@dcloudio/uni-components@3.0.0-4050620250312001': + resolution: {integrity: sha512-Oy2jWZfMn3MwVOWalzMcSoUzuE53tEZzyNcwKu9Yj34xaoZJO3NnzkPUrdBWZGRFvGeICl15G+M3anOm0qpAfA==} + + '@dcloudio/uni-console@3.0.0-4050620250312001': + resolution: {integrity: sha512-r6fttwcb5MvJRBltJB5m49GG7PX6rWoTioIvBWhlpFYhs1+ilr8xXIu42kQ4FUGhPfE/B6nj1s7b3J3kpre4XA==} + + '@dcloudio/uni-h5-vite@3.0.0-4050620250312001': + resolution: {integrity: sha512-Z8L6NQnzYYyrN/+aDLJreN3MnHfE8j38dHWB5ryt9/efvAdsIFgqCIl3z8fjFGH+GBwF3oG8IkbQJrqq77CeJA==} + + '@dcloudio/uni-h5-vue@3.0.0-4050620250312001': + resolution: {integrity: sha512-VS6NRSfp5ufB1bec6etJVqM+sbzHyuLbsNbCDzxMgZ3UXrYKyIRnvzV5AIcO/yykXr6uD9Y4QSuVfjnIEOI3Ng==} + + '@dcloudio/uni-h5@3.0.0-4050620250312001': + resolution: {integrity: sha512-M6iWQdD1wIAUNPTKK4FgPF3dXpmvnl2pDH6vJ0NlBXgybroSBSc0niifTeUniM2QTyAlcxDvCdcSUyx0LEk/pQ==} + + '@dcloudio/uni-i18n@3.0.0-4050620250312001': + resolution: {integrity: sha512-6g7zlC/sn46dqPBJfy+JXKs2VkKJH33m9c4eUCaA0hIN3csqZGZxn/ga5E66H/qANm4Hla2spwZUPwD+4mEGvw==} + + '@dcloudio/uni-mp-alipay@3.0.0-4050620250312001': + resolution: {integrity: sha512-nZOAPFg0Piw1ybSeVKweJfvoa2SndHN4lG6mQUsvaJ8z79v+RJ2JnPnPHtLIWYV3dYQo2nLIAMcTbu/dfNNHbw==} + + '@dcloudio/uni-mp-baidu@3.0.0-4050620250312001': + resolution: {integrity: sha512-p2UyNVwQwgKfM73tySruA2h3RGLry5RD75eqxTraSSa2zVq0v0t0bIFMs6E0iCCYJye00Zhh28JLSp6lNUWzjQ==} + + '@dcloudio/uni-mp-compiler@3.0.0-4050620250312001': + resolution: {integrity: sha512-hEovrahT1m3IZPi11JxnTNbjny10HNjJuZ5AQJw3JbXCm7WojSsikMqDlJtOzONILTT7zGhubYS8iyoJ6SfGWw==} + + '@dcloudio/uni-mp-jd@3.0.0-4050620250312001': + resolution: {integrity: sha512-/FLQSjQDBIe4PGQjXIXmsEcYkPzehPtgbAWlFD6gwdJId9mI3uTR2Woh9d03GUp+RDsU58cwHG11WSBB1f8GRQ==} + + '@dcloudio/uni-mp-kuaishou@3.0.0-4050620250312001': + resolution: {integrity: sha512-8kBCszGCyW7wV3xZpxOk9KOb+c21/yIwN7P2xiO9oxMMwS5e2wSyhqrL+hIcCe2FxAJ5LI/9v+6A7JpZqZ41rA==} + + '@dcloudio/uni-mp-lark@3.0.0-4050620250312001': + resolution: {integrity: sha512-O1iLt6nh0TY8HQkSKW6ONAgsDSIDGrjU5c+b/ne2HhTGq6asdWzGbyxOdcD66yigGZ7bVvyHriIxjTaI1EJU5A==} + + '@dcloudio/uni-mp-qq@3.0.0-4050620250312001': + resolution: {integrity: sha512-3aQikujAaetXKcES7xnB6YbG/z4Yf7pcJRtNKRrRJLh2qe0sGrlQbIyiqfN7s/sMFBJuSk+QPmIj4nA6iWshtw==} + + '@dcloudio/uni-mp-toutiao@3.0.0-4050620250312001': + resolution: {integrity: sha512-gY+C36urlcozIKAa+S3PvydQUG0ORo+q6RQqvEZhe1V6HV0gBdLpKe5rn0hLVqO43vvTza4WwrsBCyA5bFLI1g==} + + '@dcloudio/uni-mp-vite@3.0.0-4050620250312001': + resolution: {integrity: sha512-kF9bxLObfw50Bs6dk9aD3wy+jOeHHmBaUa3u9ruylQBEVvFjWrzneIjhfYjYhZjUlFgq/e9eieW4atO6SxVuyA==} + + '@dcloudio/uni-mp-vue@3.0.0-4050620250312001': + resolution: {integrity: sha512-Ms+/xlszSCudJVH/4OJRy0iLAP8VCfyMH9h4lfndgndy4wsqDfZ87za4PC6ydsw1dwsRJR3JaccJa7NguFqHSg==} + + '@dcloudio/uni-mp-weixin@3.0.0-4050620250312001': + resolution: {integrity: sha512-W+2H7W1yA65ZUK1FD50V1ZDhQSBfInIIKv1dV0q4AMlRFBKYp/qNZsqNzANz5hALRO3mClw78ykwzxT0W0Lw+Q==} + + '@dcloudio/uni-mp-xhs@3.0.0-4050620250312001': + resolution: {integrity: sha512-Etw8XIoOZmkNs8R1eI5JTmor+LwrzfiVa8rHa/lOcLzptQuqqWJsxh7h7NtV1SYXBX5miAiX1xza10vomG2grg==} + + '@dcloudio/uni-nvue-styler@3.0.0-4050620250312001': + resolution: {integrity: sha512-N5LOs8V9f7GDXctqEbcuCy71cWwsKWNv/q3yZB7MyeWtQlce1+8YzWyckKJk1+Q9H829zJzy+HTxbRKAHKJeWA==} + + '@dcloudio/uni-push@3.0.0-4050620250312001': + resolution: {integrity: sha512-xfDJr/oiFXzDwmpV6SvGU2zPjnuQfI7AsferCdHH+Pw/J1W8uZIGB5LDXdGDSaw+/zhZfBE/Qbr3Y1K8QP9JzA==} + + '@dcloudio/uni-quickapp-webview@3.0.0-4050620250312001': + resolution: {integrity: sha512-sSWufcIsAm2u2n0Nl4AdsrL+MqE5iHUQm2aZ2ZObyNjyNhZ+MxHz+A3hMTHZgVSWPK2QvJxPSoFsiSv/gVTs0A==} + + '@dcloudio/uni-shared@3.0.0-4050620250312001': + resolution: {integrity: sha512-86teN7kBIUpk6K7qQr7OmgfCmR9c7+RxZI9b0I4BP6WdWKjQNGUGmq3KNms0Rr0NYhpj5CN1bf0se3TCuXJDqg==} + + '@dcloudio/uni-stacktracey@3.0.0-4050620250312001': + resolution: {integrity: sha512-C1Oai9BrcXOySa6qSfgeIGGuuVxYVNEJq3RHB5uuML+mA4+tYwtH8dOc3eGRrvsS9dSTCB/d3O1JfJRAKzYUbw==} + + '@dcloudio/uni-stat@3.0.0-4050620250312001': + resolution: {integrity: sha512-ck6xiym3wyg1ZEpxIxHV5PhVs6PiCZ5a6mIMGsmOds9nbeWeLhlAg31Bjtg31eSVI0dbP2qN7CPP9VuWL+ap5w==} + + '@dcloudio/vite-plugin-uni@3.0.0-4050620250312001': + resolution: {integrity: sha512-JlXe59qaAHFWA1DZJrqFuXDCs2jLQ3fmbQLYKwrQkmuWHFljiRjFrTp8iCl5PTRHGUiBhhbuJBtQeHarTOTajA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + vite: ^5.2.8 + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + 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/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + 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/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + 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/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + 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-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + 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-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + 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] + + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@googlemaps/js-api-loader@1.16.8': + resolution: {integrity: sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==} + + '@iconify-json/carbon@1.2.18': + resolution: {integrity: sha512-Grb13E6r/RqTEV4Sqd/BQR2FUt57U2WLuticJ5H8JbTdHLop1LmdePu3EJJA3Xi8DcWRbD6OnC133hKfOwlgtg==} + + '@iconify-json/fluent@1.2.14': + resolution: {integrity: sha512-0t+EzHn8wqWG7ZbbWlMBBNM1hcGyaEJqBbneTk98uUR03akf3JAvIsXuMYpGrPnK5LNQ0qZfcc2axnxj2TwQAA==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@intlify/core-base@9.1.9': + resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} + engines: {node: '>= 10'} + + '@intlify/devtools-if@9.1.9': + resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==} + engines: {node: '>= 10'} + + '@intlify/message-compiler@9.1.9': + resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==} + engines: {node: '>= 10'} + + '@intlify/message-resolver@9.1.9': + resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==} + engines: {node: '>= 10'} + + '@intlify/runtime@9.1.9': + resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==} + engines: {node: '>= 10'} + + '@intlify/shared@9.1.9': + resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==} + engines: {node: '>= 10'} + + '@intlify/vue-devtools@9.1.9': + resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==} + engines: {node: '>= 10'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jimp/bmp@0.10.3': + resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/core@0.10.3': + resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} + + '@jimp/custom@0.10.3': + resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} + + '@jimp/gif@0.10.3': + resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/jpeg@0.10.3': + resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blit@0.10.3': + resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-blur@0.10.3': + resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-circle@0.10.3': + resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-color@0.10.3': + resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-contain@0.10.3': + resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-cover@0.10.3': + resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + + '@jimp/plugin-crop@0.10.3': + resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-displace@0.10.3': + resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-dither@0.10.3': + resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-fisheye@0.10.3': + resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-flip@0.10.3': + resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + + '@jimp/plugin-gaussian@0.10.3': + resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-invert@0.10.3': + resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-mask@0.10.3': + resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-normalize@0.10.3': + resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-print@0.10.3': + resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + + '@jimp/plugin-resize@0.10.3': + resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/plugin-rotate@0.10.3': + resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-scale@0.10.3': + resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-shadow@0.10.3': + resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + + '@jimp/plugin-threshold@0.10.3': + resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + + '@jimp/plugins@0.10.3': + resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/png@0.10.3': + resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/tiff@0.10.3': + resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/types@0.10.3': + resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + + '@jimp/utils@0.10.3': + resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@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'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@prettier/sync@0.6.1': + resolution: {integrity: sha512-yF9G8vK/LYUTF3Cijd7VC9La3b20F20/J/fgoR4H0B8JGOWnZVZX6+I6+vODPosjmMcpdlUV+gUqJQZp3kLOcw==} + peerDependencies: + prettier: '*' + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + 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.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@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==} + + '@stripe/stripe-js@7.9.0': + resolution: {integrity: sha512-ggs5k+/0FUJcIgNY08aZTqpBTtbExkJMYMLSMwyucrhtWexVOEY1KJmhBsxf+E/Q15f5rbwBpj+t0t2AW2oCsQ==} + engines: {node: '>=12.16'} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@trivago/prettier-plugin-sort-imports@5.2.2': + resolution: {integrity: sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==} + engines: {node: '>18.12'} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + prettier-plugin-svelte: 3.x + svelte: 4.x || 5.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + prettier-plugin-svelte: + optional: true + svelte: + optional: true + + '@ts-morph/common@0.26.1': + resolution: {integrity: sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/big.js@6.2.2': + resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + + '@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/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/node@20.17.19': + resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/ramda@0.30.2': + resolution: {integrity: sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/throttle-debounce@5.0.2': + resolution: {integrity: sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==} + + '@types/wechat-miniprogram@3.4.8': + resolution: {integrity: sha512-lOqddA707X3SZxVhlZNBZPzYzj7lG/ED2fF30k+aE2oT6R4wfw0Wiup2k2hGrmzYUFyJXfGs01sDCuJMhQMAdg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.11': + resolution: {integrity: sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==} + + '@uni-helper/uni-env@0.1.8': + resolution: {integrity: sha512-oZQisgM5sFarGrswKHJvS5S7xNMXLjcBcPTKp2gzLMon+chdHiKua1+Hlqe/NX79Re35W4A6/QHDrw9cZ5AVGQ==} + + '@uni-helper/vite-plugin-uni-layouts@0.1.10': + resolution: {integrity: sha512-RJdGmJjZtpKNVfShiKYZrualMxdi+i8uh7zpPG+X3lzf6wyKSJgWwVAj3GUdqeE/QUEncNPmj2sqwuyeLXPxbA==} + + '@unocss-applet/preset-applet@0.7.8': + resolution: {integrity: sha512-KWzYD88eRf7hMa0SZv8X19eT1X1fwkInM47cjNZ36i/2brt77DSnZF3y61F1zxzdf28SRH/wzgkm2e0I7JepCQ==} + + '@unocss-applet/preset-rem-rpx@0.7.8': + resolution: {integrity: sha512-H+7CbzfNOglGlTW0qurlpfPdSsaLkxwG4qSyxufaMCX6T26Mss6Xy9ENIaGps1m0Sk4NXJYO01h9yWGzaeCZXg==} + + '@unocss-applet/transformer-applet@0.5.5': + resolution: {integrity: sha512-GDzZt0S+Jbr7yiD+cmkIQdnEroAzSiCPajXaTWbmkk8dio+7dW9cWPEGaFKa3laJI6yxDR3jJX44m82LhHdEpg==} + + '@unocss-applet/transformer-attributify@0.7.8': + resolution: {integrity: sha512-YiBe5wFMEDdAuIwXPBFs6nA7i1Igskx1oLIl/xHXb6jEBqWGqTj1P/nx0XsrS0hu1YW7T7JsTCtSoLAdPmAPuA==} + + '@unocss/astro@0.58.0': + resolution: {integrity: sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.58.0': + resolution: {integrity: sha512-rhsrDBxAVueygMcAbMkbuvsHbBL2rG6N96LllYwHn16FLgOE3Sf4JW1/LlNjQje3BtwMMtbSCCAeu2SryFhzbw==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.58.0': + resolution: {integrity: sha512-WQD29gCZ7cajnMzezD1PRW0qQSxo/C6PX9ktygwhdinFx9nXuLZnKFOz65TiI8y48e53g1i7ivvgY3m4Sq5mIg==} + engines: {node: '>=14'} + + '@unocss/core@0.56.5': + resolution: {integrity: sha512-fx5VhOjSHn0HdV2D34pEwFMAHJcJQRTCp1xEE4GzxY1irXzaa+m2aYf5PZjmDxehiOC16IH7TO9FOWANXk1E0w==} + + '@unocss/core@0.58.0': + resolution: {integrity: sha512-KhABQXGE2AgtO9vE28d+HnciuyGDcuygsnQdUwlzUuR4K05OSw2kRE9emRN4HaMycD+gA/zDbQrJxTXb6mQUiA==} + + '@unocss/extractor-arbitrary-variants@0.56.5': + resolution: {integrity: sha512-p2pyzz/ONvc5CGcaB9OZvWE8qkRSgyuhaQqFQLdBFeUhveHC0CGP0iSnXwBgAFHWM7DJo4/JpWeZ+mBt0ogVLA==} + + '@unocss/extractor-arbitrary-variants@0.58.0': + resolution: {integrity: sha512-s9wK2UugJM0WK1HpgPz2kTbpeyQc46zais+nauN/ykVX6NMq8PtGzSWszzf+0aIbtWAQGiqAfiYNTpf09tJHfg==} + + '@unocss/inspector@0.58.0': + resolution: {integrity: sha512-ZC4QauFGdh3/VkzW/FqkO2R03JEbzGNuX0DK03pwas8/jFIGh8pPldesj8GEKm1YWr1emx9cw7JUnhR8XSUBlA==} + + '@unocss/postcss@0.58.0': + resolution: {integrity: sha512-2hAwLbfUFqysi8FN1cn3xkHy5GhLMlYy6W4NrAZ2ws7F2MKpsCT2xCj7dT5cI2tW8ulD2YoVbKH15dBhNsMNUA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.58.0': + resolution: {integrity: sha512-Ew78noYes12K9gk4dF36MkjpiIqTi1XVqcniiAzxCkzuctxN4B57vW3LVTwjInGmWNNKWN3UNR4q1o0VxH4xJg==} + + '@unocss/preset-icons@0.58.0': + resolution: {integrity: sha512-niT32avw+8l+L40LGhrmX6qDV9Z8/gOn4xjjRhLZZouKni3CJOpz9taILyF4xp1nak5nxGT4wa0tuC/htvOF5A==} + + '@unocss/preset-mini@0.56.5': + resolution: {integrity: sha512-/KhlThhs1ilauM7MwRSpahLbIPZ5VGeGvaUsU8+ZlNT3sis4yoVYkPtR14tL2IT6jhOU05N/uu3aBj+1bP8GjQ==} + + '@unocss/preset-mini@0.58.0': + resolution: {integrity: sha512-oMliJZVTN3ecAvf52yN+MyJszaJOZoKwMMbUAFqVis62MaqRzZ8mSw12QFLFyX2pltulDFpMBTAKro+hP0wXEg==} + + '@unocss/preset-tagify@0.58.0': + resolution: {integrity: sha512-I+dzfs/bofiGb2AUxkhcTDhB+r2+/3SO81PFwf3Ae7afnzhA2SLsKAkEqO8YN3M3mwZL7IfXn6vpsWeEAlk/yw==} + + '@unocss/preset-typography@0.58.0': + resolution: {integrity: sha512-8qo+Z1CJtXFMDbAvtizUTRLuLxCIzytgYU0GmuRkfc2iwASSDNDsvh8nAYQfWpyAEOV7QEHtS9c9xL4b0c89FA==} + + '@unocss/preset-uno@0.56.5': + resolution: {integrity: sha512-3hzE0X1oxMbHLvWyTj/4BrJQ7OAL428BpzEJos0RsxifM04vOJX4GC4khIbmTl8KIMECMtATK3ren3JqzD2bFw==} + + '@unocss/preset-uno@0.58.0': + resolution: {integrity: sha512-DpgfjtvSgsWeyZH+jQHc1k5IReiZNb7oGpHVnfF6SlHETTnMHSeNetxkPQWYrqJLPI6llNLPTdTa5j47NtmOiA==} + + '@unocss/preset-web-fonts@0.58.0': + resolution: {integrity: sha512-QarDDEUlexQ2IIn23pE1eHDskG2Tz+JjCe+FAN0DoNLLhvUUWSB4cQIMFWP6dSMJ047Blj9IpgAl9dERICW1qQ==} + + '@unocss/preset-wind@0.56.5': + resolution: {integrity: sha512-iyMPvCEZkrGLHFXXlcqxDo/UcSK7KWw4x7/QUz7irrvc78cxYVuPm98QZgpCRcCwKerKVyFLjGOtwQ0kmVSVsQ==} + + '@unocss/preset-wind@0.58.0': + resolution: {integrity: sha512-2zgaIy9RAGie9CsUYCkYRDSERBi8kG6Q/mQLgNfP9HMz5IThlnDHFWF/hLAVD51xQUg9gH8qWBR9kN/1ioT5Tw==} + + '@unocss/reset@0.58.0': + resolution: {integrity: sha512-UVZ5kz37JGbwAA06k/gjKYcekcTwi6oIhev1EpTtCvHLL6XYcYqcwb/u4Wjzprd3L3lxDGYXvGdjREGm2u7vbQ==} + + '@unocss/rule-utils@0.56.5': + resolution: {integrity: sha512-CXIGHCIC9B8WUl9KbbFMSZHcsIgfmI/+X0bjBv6xrgBVC1EQ2Acq4PYnJIbaRGBRAhl9wYjNL7Zq2UWOdowHAw==} + engines: {node: '>=14'} + + '@unocss/rule-utils@0.58.0': + resolution: {integrity: sha512-LBJ9dJ/j5UIMzJF7pmIig55MtJAYtG+tn/zQRveZuPRVahzP+KqwlyB7u3uCUnQhdgo/MJODMcqyr0jl6+kTuA==} + engines: {node: '>=14'} + + '@unocss/scope@0.58.0': + resolution: {integrity: sha512-XgUXZJvbxWSRC/DNOWI5DYdR6Nd6IZxsE5ls3AFA5msgtk5OH4YNQELLMabQw7xbRbU/fftlRJa3vncSfOyl6w==} + + '@unocss/transformer-attributify-jsx-babel@0.58.0': + resolution: {integrity: sha512-ckDq/q476x2yikjS8usmSUGuakqMQrg2pm8sdBINTPdJxGc7kJRvI5UDnzRw4W9hE5IH+E4gg0XfCtFad0O3eg==} + + '@unocss/transformer-attributify-jsx@0.58.0': + resolution: {integrity: sha512-QDdBEFDE7ntfCH7+8zHRW72MIQ9NH3uYGUE7lYgr5Ap8qzBHCxMT1kUrY6gwuoo3U4dMu2wruglYRHD88hvGkw==} + + '@unocss/transformer-compile-class@0.58.0': + resolution: {integrity: sha512-/BysfTg2q9sGPfiRHqWw/bT60/gjpBGBRVkIFsG4WVT2pgf3BfQUPu5FumSvZSRd0rA/pR57Lp6ZREAdj6+q+A==} + + '@unocss/transformer-directives@0.58.0': + resolution: {integrity: sha512-sU2U/aIykRkGGbA4Qo9Z5XE/KqWf7KhBwC1m8pUoqjawsZex4aVnQgXzDPfcjtmy6pElwK0z2U5DnO+OK9vCgQ==} + + '@unocss/transformer-variant-group@0.58.0': + resolution: {integrity: sha512-O2n8uVIpNic57rrkaaQ8jnC1WJ9N6FkoqxatRDXZ368aJ1CJNya0ZcVUL6lGGND0bOLXen4WmEN62ZxEWTqdkA==} + + '@unocss/vite@0.58.0': + resolution: {integrity: sha512-OCUOLMSOBEtXOEyBbAvMI3/xdR175BWRzmvV9Wc34ANZclEvCdVH8+WU725ibjY4VT0gVIuX68b13fhXdHV41A==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@vitejs/plugin-legacy@5.3.2': + resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.1.0': + resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@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==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.21': + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + + '@vue/compiler-core@3.5.27': + resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} + + '@vue/compiler-dom@3.4.21': + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + + '@vue/compiler-dom@3.5.27': + resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} + + '@vue/compiler-sfc@3.4.21': + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + + '@vue/compiler-sfc@3.5.27': + resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} + + '@vue/compiler-ssr@3.4.21': + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + + '@vue/compiler-ssr@3.5.27': + resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} + + '@vue/consolidate@1.0.0': + resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} + engines: {node: '>= 0.12.0'} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-core@7.7.9': + resolution: {integrity: sha512-48jrBSwG4GVQRvVeeXn9p9+dlx+ISgasM7SxZZKczseohB0cBz+ITKr4YbLWjmJdy45UHL7UMPlR4Y0CWTRcSQ==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.4.21': + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.4.21': + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.4.21': + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + + '@vue/server-renderer@3.4.21': + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + + '@vue/shared@3.4.21': + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vue/shared@3.5.27': + resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} + + '@vue/tsconfig@0.1.3': + resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + a-sync-waterfall@1.0.1: + resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + 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.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@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.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + ast-kit@0.11.3: + resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} + engines: {node: '>=16.14.0'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.24: + resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.13.5: + resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + + 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.15: + resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.0: + resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.6: + resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bing-translate-api@4.2.0: + resolution: {integrity: sha512-7a9yo1NbGcHPS8zXTdz8tCOymHZp2pvCuYOChCaXKjOX8EIwdV3SLd4D7RGIqZt1UhffypYBUcAV2gDcTgK0rA==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + 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-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c12@1.11.2: + resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cac@6.7.9: + resolution: {integrity: sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==} + engines: {node: '>=8'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + + centra@2.7.0: + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + 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'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + 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.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + 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.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + + core-js@3.48.0: + resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} + + cosmiconfig-typescript-loader@6.2.0: + resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + 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.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + 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.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + 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 + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + error-stack-parser-es@0.1.5: + resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@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 + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + 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'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + + 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.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} + engines: {node: '>= 0.10.0'} + + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@3.0.4: + resolution: {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} + engines: {node: '>= 6'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + engines: {node: '>=14.14'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + fuse.js@7.1.0: + resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} + engines: {node: '>=10'} + + 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-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + 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@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gsap@3.14.2: + resolution: {integrity: sha512-P8/mMxVLU7o4+55+1TCnQrPmgjPKnwkzkXOK1asnR9Jg2lna4tEY5qBJjMmAaOBDDZWtlRjBXjLa0w53G/uBLA==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + 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==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.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==} + + image-tools@1.4.0: + resolution: {integrity: sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + 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.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + 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-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-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.0.4: + resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + 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@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + licia@1.48.0: + resolution: {integrity: sha512-bBWiT5CSdEtwuAHiYTJ74yItCjIFdHi4xiFk6BRDfKa+sdCpkUHp69YKb5udNOJlHDzFjNjcMgNZ/+wQIHrB8A==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-bmfont@1.4.2: + resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + 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.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-synchronized@0.8.0: + resolution: {integrity: sha512-DZu4lwc0ffoFz581BSQa/BJl+1ZqIkoRQ+VejMlH0VrP4E86StAODnZujZ4sepumQj8rcP7wUnUBGM8Gu+zKUA==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + 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'} + + memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + 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==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mockjs@1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + + module-alias@2.3.4: + resolution: {integrity: sha512-bOclZt8hkpuGgSSoG07PKmvzTizROilUTvLNyrMqvlC9snhs7y7GzjNWAVbISIOlhCP1T14rH1PDAV9iNyBq/w==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + 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'} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nunjucks@3.2.4: + resolution: {integrity: sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==} + engines: {node: '>= 6.9.0'} + hasBin: true + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} + + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@1.1.6: + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + + openapi-ts-request@1.12.5: + resolution: {integrity: sha512-VYnlmodVdgVZ5Wekkg6t1+1ZDpYocsPw55ExdqTHTaEQ+U4kwblMXgnXtwIya14SCTVJSleMTN7Fe4qD25uVhA==} + engines: {node: '>=18.0.0', pnpm: '>=9'} + hasBin: true + + os-locale-s-fix@1.0.8-fix-1: + resolution: {integrity: sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==} + engines: {node: '>=10', yarn: ^1.22.4} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-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-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + + parse-css-font@4.0.0: + resolution: {integrity: sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==} + + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + 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-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + phin@3.7.1: + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} + engines: {node: '>= 8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia-plugin-persistedstate@3.2.1: + resolution: {integrity: sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==} + peerDependencies: + pinia: ^2.0.0 + + pinia@2.0.36: + resolution: {integrity: sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + 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.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + 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.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + ramda@0.30.1: + resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + + 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'} + + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + reserved-words@0.1.2: + resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-area-insets@1.4.1: + resolution: {integrity: sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.78.0: + resolution: {integrity: sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} + + 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.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + 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.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + 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@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + 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'} + + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + 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==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tiny-pinyin@1.3.2: + resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + ts-morph@25.0.1: + resolution: {integrity: sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==} + + ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + types-ramda@0.30.1: + resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + unconfig@0.3.13: + resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unimport@3.14.6: + resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} + + 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.7.8: + resolution: {integrity: sha512-wseTfy7nU8kjTOxdF6iJGiFCHOmaSwdSba8J2XAsb3jhuchVrb/7/iey7Z2ph6W0Qf3k2Tm0d1au9AfiPj5E3Q==} + + unocss-preset-animations@1.3.0: + resolution: {integrity: sha512-NLsBzPB98Jc8b6+t8nwLItI12ZE/48IZVccZ2uA2owLoeAvhRaDoRvs6eLcJfIUZfRycL25xxOeQoOBMo1p/aw==} + peerDependencies: + '@unocss/preset-wind3': '>=0.56.0 < 101' + unocss: '>=0.56.0 < 101' + peerDependenciesMeta: + '@unocss/preset-wind3': + optional: true + + unocss@0.58.0: + resolution: {integrity: sha512-MSPRHxBqWN+1AHGV+J5uUy4//e6ZBK6O+ISzD0qrXcCD/GNtxk1+lYjOK2ltkUiKX539+/KF91vNxzhhwEf+xA==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.0 + 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.17.8: + resolution: {integrity: sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-auto-import@0.18.6: + resolution: {integrity: sha512-LMFzX5DtkTj/3wZuyG5bgKBoJ7WSgzqSGJ8ppDRdlvPh45mx6t6w3OcbExQi53n3xF5MYkNGPNR/HYOL95KL2A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-hot-client@2.1.0: + resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + + vite-plugin-inspect@0.8.9: + resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-restart@0.4.2: + resolution: {integrity: sha512-9aWN2ScJ8hbT7aC8SDeZnsbWapnslz1vhNq6Vgf2GU9WdN4NExlrWhtnu7pmtOUG3Guj8y6lPcUZ+ls7SVP33w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + + vite-plugin-vue-devtools@7.7.2: + resolution: {integrity: sha512-5V0UijQWiSBj32blkyPEqIbzc6HO9c1bwnBhx+ay2dzU0FakH+qMdNUT8nF9BvDE+i6I1U8CqCuJiO20vKEdQw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 + + vite-plugin-vue-inspector@5.3.2: + resolution: {integrity: sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + + vite@5.4.14: + resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} + 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: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + 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.1.9: + resolution: {integrity: sha512-JeRdNVxS2OGp1E+pye5XB6+M6BBkHwAv9C80Q7+kzoMdUDGRna06tjC0vCB/jDX9aWrl5swxOMFcyAr7or8XTA==} + engines: {node: '>= 10'} + peerDependencies: + vue: ^3.0.0 + + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} + peerDependencies: + vue: ^3.5.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.21: + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wot-design-uni@1.9.1: + resolution: {integrity: sha512-bZBt6xt5HfvmHBm76BZWBrvthHKeK7cbR//bbmv2ICjPRLXvD9KKHGZDZrq6C/j+DXHzA4UbcGer3iE8XcuVkw==} + engines: {HBuilderX: ^3.8.7} + peerDependencies: + vue: '>=3.2.47' + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + 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.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + 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 + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + + 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==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + + '@antfu/utils@0.7.10': {} + + '@antfu/utils@8.1.1': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-env@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 + esutils: 2.0.3 + + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.28.6': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@bcoe/v8-coverage@0.2.3': {} + + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@dcloudio/types@3.4.14': {} + + '@dcloudio/uni-app-harmony@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-app-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + debug: 4.4.3 + fs-extra: 10.1.0 + licia: 1.48.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-plus@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-app-uts': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-app-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-app-vue': 3.0.0-4050620250312001 + debug: 4.4.3 + fs-extra: 10.1.0 + licia: 1.48.0 + postcss-selector-parser: 6.1.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-uts@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-console': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-nvue-styler': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/consolidate': 1.0.0 + '@vue/shared': 3.4.21 + debug: 4.4.3 + es-module-lexer: 1.7.0 + estree-walker: 2.0.2 + fs-extra: 10.1.0 + magic-string: 0.30.21 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unimport: 3.14.6(rollup@4.57.1) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-app-vite@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-nvue-styler': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@vitejs/plugin-vue': 5.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + debug: 4.4.3 + fs-extra: 10.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vite + - vue + + '@dcloudio/uni-app-vue@3.0.0-4050620250312001': {} + + '@dcloudio/uni-app@3.0.0-4050620250312001(@dcloudio/types@3.4.14)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/types': 3.4.14 + '@dcloudio/uni-cloud': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-components': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-console': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-push': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@dcloudio/uni-stat': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-automator@3.0.0-4050620250312001(jest-environment-node@27.5.1)(jest@27.0.4)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + address: 1.2.2 + cross-env: 7.0.3 + debug: 4.4.3 + 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.48.0 + merge: 2.1.1 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.19.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-cli-shared@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@4.9.5)) + '@vue/shared': 3.4.21 + adm-zip: 0.5.16 + autoprefixer: 10.4.24(postcss@8.5.6) + base64url: 3.0.1 + chokidar: 3.6.0 + compare-versions: 3.6.0 + debug: 4.4.3 + es-module-lexer: 1.7.0 + esbuild: 0.20.2 + estree-walker: 2.0.2 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + isbinaryfile: 5.0.7 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.4 + magic-string: 0.30.21 + merge: 2.1.1 + mime: 3.0.0 + module-alias: 2.3.4 + os-locale-s-fix: 1.0.8-fix-1 + picocolors: 1.1.1 + postcss-import: 14.1.0(postcss@8.5.6) + postcss-load-config: 3.1.4(postcss@8.5.6) + postcss-modules: 4.3.1(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.11 + source-map-js: 1.2.1 + tapable: 2.3.0 + unplugin-auto-import: 0.18.6(rollup@4.57.1) + xregexp: 3.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-cloud@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + fast-glob: 3.3.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-components@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cloud': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-h5': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-console@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vite@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@4.9.5)) + '@vue/shared': 3.4.21 + debug: 4.4.3 + fs-extra: 10.1.0 + mime: 3.0.0 + module-alias: 2.3.4 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-h5-vue@3.0.0-4050620250312001(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@4.9.5)) + transitivePeerDependencies: + - vue + + '@dcloudio/uni-h5@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-h5-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-h5-vue': 3.0.0-4050620250312001(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@4.9.5)) + '@vue/shared': 3.4.21 + debug: 4.4.3 + localstorage-polyfill: 1.0.1 + postcss-selector-parser: 6.1.2 + safe-area-insets: 1.4.1 + vue-router: 4.6.4(vue@3.4.21(typescript@4.9.5)) + xmlhttprequest: 1.8.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-i18n@3.0.0-4050620250312001': {} + + '@dcloudio/uni-mp-alipay@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-baidu@3.0.0-4050620250312001(@dcloudio/types@3.4.14)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-app': 3.0.0-4050620250312001(@dcloudio/types@3.4.14)(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-mp-weixin': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.48.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.19.0 + transitivePeerDependencies: + - '@dcloudio/types' + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-compiler@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-jd@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-kuaishou@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-mp-weixin': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-lark@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-toutiao': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-qq@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + fs-extra: 10.1.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-toutiao@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vite@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-i18n': 3.0.0-4050620250312001 + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + debug: 4.4.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-mp-vue@3.0.0-4050620250312001': + dependencies: + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + + '@dcloudio/uni-mp-weixin@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + jimp: 0.10.3 + licia: 1.48.0 + qrcode-reader: 1.0.4 + qrcode-terminal: 0.12.0 + ws: 8.19.0 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - bufferutil + - debug + - postcss + - rollup + - supports-color + - ts-node + - utf-8-validate + - vue + + '@dcloudio/uni-mp-xhs@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-compiler': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-nvue-styler@3.0.0-4050620250312001': + dependencies: + parse-css-font: 4.0.0 + postcss: 8.5.6 + + '@dcloudio/uni-push@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-quickapp-webview@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vite': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-mp-vue': 3.0.0-4050620250312001 + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@vue/shared': 3.4.21 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/uni-shared@3.0.0-4050620250312001': + dependencies: + '@vue/shared': 3.4.21 + + '@dcloudio/uni-stacktracey@3.0.0-4050620250312001': {} + + '@dcloudio/uni-stat@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + debug: 4.4.3 + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@dcloudio/vite-plugin-uni@3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@dcloudio/uni-cli-shared': 3.0.0-4050620250312001(postcss@8.5.6)(rollup@4.57.1)(vue@3.4.21(typescript@4.9.5)) + '@dcloudio/uni-shared': 3.0.0-4050620250312001 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@vitejs/plugin-legacy': 5.3.2(terser@5.46.0)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + '@vitejs/plugin-vue': 5.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/shared': 3.4.21 + cac: 6.7.9 + debug: 4.4.3 + estree-walker: 2.0.2 + express: 4.22.1 + fast-glob: 3.3.3 + fs-extra: 10.1.0 + hash-sum: 2.0.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + picocolors: 1.1.1 + terser: 5.46.0 + unplugin-auto-import: 0.18.6(rollup@4.57.1) + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@vueuse/core' + - postcss + - rollup + - supports-color + - ts-node + - vue + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@exodus/schemasafe@1.3.0': {} + + '@googlemaps/js-api-loader@1.16.8': {} + + '@iconify-json/carbon@1.2.18': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/fluent@1.2.14': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.3 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.8.0 + transitivePeerDependencies: + - supports-color + + '@intlify/core-base@9.1.9': + dependencies: + '@intlify/devtools-if': 9.1.9 + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + + '@intlify/devtools-if@9.1.9': + dependencies: + '@intlify/shared': 9.1.9 + + '@intlify/message-compiler@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + source-map: 0.6.1 + + '@intlify/message-resolver@9.1.9': {} + + '@intlify/runtime@9.1.9': + dependencies: + '@intlify/message-compiler': 9.1.9 + '@intlify/message-resolver': 9.1.9 + '@intlify/shared': 9.1.9 + + '@intlify/shared@9.1.9': {} + + '@intlify/vue-devtools@9.1.9': + dependencies: + '@intlify/message-resolver': 9.1.9 + '@intlify/runtime': 9.1.9 + '@intlify/shared': 9.1.9 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.17.19 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.17.19 + 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.17.19 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + 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.2.0 + 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.3 + + '@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.29.0 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.17.19 + '@types/yargs': 16.0.11 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.48.0 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.48.0 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.2 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + transitivePeerDependencies: + - debug + + '@jimp/custom@0.10.3': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/core': 0.10.3 + core-js: 3.48.0 + transitivePeerDependencies: + - debug + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + load-bmfont: 1.4.2 + transitivePeerDependencies: + - debug + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + timm: 1.7.1 + transitivePeerDependencies: + - debug + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.48.0 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@jimp/custom': 0.10.3 + core-js: 3.48.0 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.28.6 + '@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.48.0 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.28.6 + core-js: 3.48.0 + regenerator-runtime: 0.13.11 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.29': {} + + '@prettier/sync@0.6.1(prettier@3.8.1)': + dependencies: + make-synchronized: 0.8.0 + prettier: 3.8.1 + + '@rollup/pluginutils@5.3.0(rollup@4.57.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.57.1 + + '@rollup/rollup-android-arm-eabi@4.57.1': + optional: true + + '@rollup/rollup-android-arm64@4.57.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.57.1': + optional: true + + '@rollup/rollup-darwin-x64@4.57.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.57.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.57.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.57.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.57.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.57.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.57.1': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@stripe/stripe-js@7.9.0': {} + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@tootallnate/once@1.1.2': {} + + '@trivago/prettier-plugin-sort-imports@5.2.2(@vue/compiler-sfc@3.5.27)(prettier@3.8.1)': + dependencies: + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.23 + prettier: 3.8.1 + optionalDependencies: + '@vue/compiler-sfc': 3.5.27 + transitivePeerDependencies: + - supports-color + + '@ts-morph/common@0.26.1': + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + path-browserify: 1.0.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/big.js@6.2.2': {} + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.2.0 + '@types/keyv': 3.1.4 + '@types/node': 20.17.19 + '@types/responselike': 1.0.3 + + '@types/crypto-js@4.2.2': {} + + '@types/estree@1.0.8': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 20.17.19 + + '@types/http-cache-semantics@4.2.0': {} + + '@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/keyv@3.1.4': + dependencies: + '@types/node': 20.17.19 + + '@types/node@20.17.19': + dependencies: + undici-types: 6.19.8 + + '@types/prettier@2.7.3': {} + + '@types/qs@6.9.18': {} + + '@types/ramda@0.30.2': + dependencies: + types-ramda: 0.30.1 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.17.19 + + '@types/stack-utils@2.0.3': {} + + '@types/throttle-debounce@5.0.2': {} + + '@types/wechat-miniprogram@3.4.8': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.11': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@uni-helper/uni-env@0.1.8': + dependencies: + std-env: 3.10.0 + + '@uni-helper/vite-plugin-uni-layouts@0.1.10(rollup@4.57.1)': + dependencies: + '@babel/types': 7.29.0 + '@uni-helper/uni-env': 0.1.8 + '@vue/compiler-core': 3.5.27 + '@vue/compiler-sfc': 3.5.27 + ast-kit: 0.11.3(rollup@4.57.1) + c12: 1.11.2 + chokidar: 3.6.0 + fast-glob: 3.3.3 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + scule: 1.3.0 + transitivePeerDependencies: + - magicast + - rollup + + '@unocss-applet/preset-applet@0.7.8': + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/preset-uno': 0.56.5 + + '@unocss-applet/preset-rem-rpx@0.7.8': {} + + '@unocss-applet/transformer-applet@0.5.5': {} + + '@unocss-applet/transformer-attributify@0.7.8': {} + + '@unocss/astro@0.58.0(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/reset': 0.58.0 + '@unocss/vite': 0.58.0(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + optionalDependencies: + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.58.0(rollup@4.57.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@unocss/config': 0.58.0 + '@unocss/core': 0.58.0 + '@unocss/preset-uno': 0.58.0 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + fast-glob: 3.3.3 + magic-string: 0.30.21 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + unconfig: 0.3.13 + + '@unocss/core@0.56.5': {} + + '@unocss/core@0.58.0': {} + + '@unocss/extractor-arbitrary-variants@0.56.5': + dependencies: + '@unocss/core': 0.56.5 + + '@unocss/extractor-arbitrary-variants@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/inspector@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/rule-utils': 0.58.0 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/postcss@0.58.0(postcss@8.5.6)': + dependencies: + '@unocss/config': 0.58.0 + '@unocss/core': 0.58.0 + '@unocss/rule-utils': 0.58.0 + css-tree: 2.3.1 + fast-glob: 3.3.3 + magic-string: 0.30.21 + postcss: 8.5.6 + + '@unocss/preset-attributify@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/preset-icons@0.58.0': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 0.58.0 + ofetch: 1.5.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.56.5': + dependencies: + '@unocss/core': 0.56.5 + '@unocss/extractor-arbitrary-variants': 0.56.5 + '@unocss/rule-utils': 0.56.5 + + '@unocss/preset-mini@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/extractor-arbitrary-variants': 0.58.0 + '@unocss/rule-utils': 0.58.0 + + '@unocss/preset-tagify@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/preset-typography@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/preset-mini': 0.58.0 + + '@unocss/preset-uno@0.56.5': + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/preset-wind': 0.56.5 + '@unocss/rule-utils': 0.56.5 + + '@unocss/preset-uno@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/preset-mini': 0.58.0 + '@unocss/preset-wind': 0.58.0 + '@unocss/rule-utils': 0.58.0 + + '@unocss/preset-web-fonts@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + ofetch: 1.5.1 + + '@unocss/preset-wind@0.56.5': + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/rule-utils': 0.56.5 + + '@unocss/preset-wind@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/preset-mini': 0.58.0 + '@unocss/rule-utils': 0.58.0 + + '@unocss/reset@0.58.0': {} + + '@unocss/rule-utils@0.56.5': + dependencies: + '@unocss/core': 0.56.5 + + '@unocss/rule-utils@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + magic-string: 0.30.21 + + '@unocss/scope@0.58.0': {} + + '@unocss/transformer-attributify-jsx-babel@0.58.0': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@unocss/core': 0.58.0 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-attributify-jsx@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/transformer-compile-class@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/transformer-directives@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + '@unocss/rule-utils': 0.58.0 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.58.0': + dependencies: + '@unocss/core': 0.58.0 + + '@unocss/vite@0.58.0(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@unocss/config': 0.58.0 + '@unocss/core': 0.58.0 + '@unocss/inspector': 0.58.0 + '@unocss/scope': 0.58.0 + '@unocss/transformer-directives': 0.58.0 + chokidar: 3.6.0 + fast-glob: 3.3.3 + magic-string: 0.30.21 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - rollup + + '@vitejs/plugin-legacy@5.3.2(terser@5.46.0)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))': + dependencies: + '@babel/core': 7.29.0 + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + browserslist: 4.28.1 + browserslist-to-esbuild: 2.1.1(browserslist@4.28.1) + core-js: 3.48.0 + magic-string: 0.30.21 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.46.0 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + vue: 3.4.21(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + vue: 3.4.21(typescript@4.9.5) + + '@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 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.0)': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.0) + '@vue/shared': 3.5.27 + optionalDependencies: + '@babel/core': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.0)': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.29.0 + '@vue/compiler-sfc': 3.5.27 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.21': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.27': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.27 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.4.21': + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-dom@3.5.27': + dependencies: + '@vue/compiler-core': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/compiler-sfc@3.4.21': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.27': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.27 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.4.21': + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/compiler-ssr@3.5.27': + dependencies: + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/consolidate@1.0.0': {} + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-core@7.7.9(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@vue/devtools-kit': 7.7.9 + '@vue/devtools-shared': 7.7.9 + mitt: 3.0.1 + nanoid: 5.1.6 + pathe: 2.0.3 + vite-hot-client: 2.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + vue: 3.4.21(typescript@4.9.5) + transitivePeerDependencies: + - vite + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/language-core@1.8.27(typescript@4.9.5)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 + 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: 4.9.5 + + '@vue/reactivity@3.4.21': + dependencies: + '@vue/shared': 3.4.21 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.4.21': + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.4.21': + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.2.3 + + '@vue/server-renderer@3.4.21(vue@3.4.21(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@4.9.5) + + '@vue/shared@3.4.21': {} + + '@vue/shared@3.5.13': {} + + '@vue/shared@3.5.27': {} + + '@vue/tsconfig@0.1.3(@types/node@20.17.19)': + optionalDependencies: + '@types/node': 20.17.19 + + a-sync-waterfall@1.0.1: {} + + 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.15.0: {} + + address@1.2.2: {} + + adm-zip@0.5.16: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.3: {} + + 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 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + asap@2.0.6: {} + + ast-kit@0.11.3(rollup@4.57.1): + dependencies: + '@babel/parser': 7.29.0 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + asynckit@0.4.0: {} + + autoprefixer@10.4.24(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001769 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + axios@1.13.5: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-jest@27.5.1(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.29.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.28.6 + '@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.28.6 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-jest@27.5.1(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + baseline-browser-mapping@2.9.19: {} + + big.js@6.2.2: {} + + binary-extensions@2.3.0: {} + + bing-translate-api@4.2.0: + dependencies: + got: 11.8.6 + + birpc@2.9.0: {} + + bmp-js@0.1.0: {} + + body-parser@1.20.4: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.14.1 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist-to-esbuild@2.1.1(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + meow: 13.2.0 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + 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-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + bytes@3.1.2: {} + + c12@1.11.2: + dependencies: + chokidar: 3.6.0 + confbox: 0.1.8 + defu: 6.1.4 + dotenv: 16.6.1 + giget: 1.2.5 + jiti: 1.21.7 + mlly: 1.8.0 + ohash: 1.1.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + cac@6.7.14: {} + + cac@6.7.9: {} + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + call-me-maybe@1.0.2: {} + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001769: {} + + centra@2.7.0: + dependencies: + follow-redirects: 1.15.11 + transitivePeerDependencies: + - debug + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.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 + + chownr@2.0.0: {} + + ci-info@3.9.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + + cjs-module-lexer@1.4.3: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + co@4.6.0: {} + + code-block-writer@13.0.3: {} + + collect-v8-coverage@1.0.3: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@5.1.0: {} + + compare-versions@3.6.0: {} + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + consola@3.4.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.7: {} + + cookie@0.7.2: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + core-js-compat@3.48.0: + dependencies: + browserslist: 4.28.1 + + core-js@3.48.0: {} + + cosmiconfig-typescript-loader@6.2.0(@types/node@20.17.19)(cosmiconfig@9.0.0(typescript@4.9.5))(typescript@4.9.5): + dependencies: + '@types/node': 20.17.19 + cosmiconfig: 9.0.0(typescript@4.9.5) + jiti: 2.6.1 + typescript: 4.9.5 + + cosmiconfig@9.0.0(typescript@4.9.5): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 4.9.5 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + 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.1 + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.2.3: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + dayjs@1.11.10: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@0.7.0: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defer-to-connect@2.0.1: {} + + define-lazy-prop@3.0.0: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@27.5.1: {} + + dom-walk@0.1.2: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + dotenv@16.6.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.286: {} + + emittery@0.8.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + entities@4.5.0: {} + + entities@7.0.1: {} + + env-paths@2.2.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser-es@0.1.5: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-promise@3.3.1: {} + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + esbuild@0.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 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + 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 + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + + 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.22.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.4 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.14.1 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.8: {} + + ext@1.7.0: + dependencies: + type: 2.7.3 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-safe-stringify@2.1.1: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-type@9.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.11: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@3.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@11.3.3: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + fuse.js@7.1.0: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + + get-stream@6.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + giget@1.2.5: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.5.4 + pathe: 2.0.3 + tar: 6.2.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + 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.2 + process: 0.11.10 + + globals@15.15.0: {} + + gopd@1.2.0: {} + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + gsap@3.14.2: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-sum@2.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hookable@5.5.3: {} + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-escaper@2.0.2: {} + + http-cache-semantics@4.2.0: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http2-client@1.3.5: {} + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@8.0.1: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + ieee754@1.2.1: {} + + image-tools@1.4.0: {} + + immutable@4.3.7: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + 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.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-promise@2.2.2: {} + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-typedarray@1.0.0: {} + + is-unicode-supported@2.1.0: {} + + is-what@5.5.0: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isbinaryfile@5.0.7: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-natural-sort@0.7.1: {} + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.29.0 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.17.19 + 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.17.19 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.29.0 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + + 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.11 + 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.17.19 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.3 + 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.17.19 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.28.0 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.17.19 + 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.17.19 + 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.17.19 + 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.28.6 + '@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.48.0 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - debug + + jiti@1.21.7: {} + + jiti@2.6.1: {} + + jpeg-js@0.3.7: {} + + js-base64@3.7.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.6.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.4 + 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.23 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + kolorist@1.8.0: {} + + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + + leven@3.1.0: {} + + licia@1.48.0: {} + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + 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 + + loader-utils@3.3.1: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.8.0 + pkg-types: 1.3.1 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + 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.23: {} + + lowercase-keys@2.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-queue@0.1.0: + dependencies: + es5-ext: 0.10.64 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@4.0.0: + dependencies: + semver: 7.7.4 + + make-synchronized@0.8.0: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + math-intrinsics@1.1.0: {} + + mdn-data@2.0.30: {} + + media-typer@0.3.0: {} + + memoizee@0.4.17: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.8 + + meow@13.2.0: {} + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mitt@3.0.1: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + mockjs@1.1.0: + dependencies: + commander: 12.1.0 + + module-alias@2.3.4: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.3.1: {} + + nanoid@3.3.11: {} + + nanoid@5.1.6: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + next-tick@1.1.0: {} + + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + + node-releases@2.0.27: {} + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nunjucks@3.2.4(chokidar@3.6.0): + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + commander: 5.1.0 + optionalDependencies: + chokidar: 3.6.0 + + nwsapi@2.2.23: {} + + nypm@0.5.4: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 1.3.1 + tinyexec: 0.3.2 + ufo: 1.6.3 + + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + + object-inspect@1.13.4: {} + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.3 + + ohash@1.1.6: {} + + omggif@1.0.10: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + + openapi-ts-request@1.12.5(@types/node@20.17.19)(@vue/compiler-sfc@3.5.27)(chokidar@3.6.0)(typescript@4.9.5): + dependencies: + '@clack/prompts': 0.11.0 + '@prettier/sync': 0.6.1(prettier@3.8.1) + '@trivago/prettier-plugin-sort-imports': 5.2.2(@vue/compiler-sfc@3.5.27)(prettier@3.8.1) + axios: 1.13.5 + bing-translate-api: 4.2.0 + chalk: 4.1.2 + commander: 12.1.0 + cosmiconfig: 9.0.0(typescript@4.9.5) + cosmiconfig-typescript-loader: 6.2.0(@types/node@20.17.19)(cosmiconfig@9.0.0(typescript@4.9.5))(typescript@4.9.5) + glob: 10.4.5 + js-yaml: 4.1.1 + lodash: 4.17.23 + memoizee: 0.4.17 + minimatch: 9.0.5 + mockjs: 1.1.0 + nunjucks: 3.2.4(chokidar@3.6.0) + prettier: 3.8.1 + reserved-words: 0.1.2 + rimraf: 5.0.10 + swagger2openapi: 7.0.8 + tiny-pinyin: 1.3.2 + ts-morph: 25.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + - '@vue/compiler-sfc' + - chokidar + - debug + - encoding + - prettier-plugin-svelte + - supports-color + - svelte + - typescript + + os-locale-s-fix@1.0.8-fix-1: + dependencies: + lcid: 3.1.1 + + p-cancelable@2.1.1: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.6.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + + parse-css-font@4.0.0: + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-list-helpers: 2.0.0 + css-system-font-keywords: 1.0.0 + unquote: 1.1.1 + + parse-headers@2.0.6: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + 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-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + phin@2.9.3: {} + + phin@3.7.1: + dependencies: + centra: 2.7.0 + transitivePeerDependencies: + - debug + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pify@2.3.0: {} + + pinia-plugin-persistedstate@3.2.1(pinia@2.0.36(typescript@4.9.5)(vue@3.4.21(typescript@4.9.5))): + dependencies: + pinia: 2.0.36(typescript@4.9.5)(vue@3.4.21(typescript@4.9.5)) + + pinia@2.0.36(typescript@4.9.5)(vue@3.4.21(typescript@4.9.5)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@4.9.5) + vue-demi: 0.14.10(vue@3.4.21(typescript@4.9.5)) + optionalDependencies: + typescript: 4.9.5 + + pirates@4.0.7: {} + + pixelmatch@4.0.2: + dependencies: + pngjs: 3.4.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + + pngjs@3.4.0: {} + + postcss-import@14.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.11 + + postcss-load-config@3.1.4(postcss@8.5.6): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.6 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + + postcss-modules-values@4.0.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-modules@4.3.1(postcss@8.5.6): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + string-hash: 1.1.3 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prettier@3.8.1: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode@2.3.1: {} + + qrcode-reader@1.0.4: {} + + qrcode-terminal@0.12.0: {} + + qs@6.14.1: + dependencies: + side-channel: 1.1.0 + + qs@6.5.3: {} + + quansync@0.2.11: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + ramda@0.30.1: {} + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + + react-is@17.0.2: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reftools@1.1.9: {} + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.0: + dependencies: + jsesc: 3.1.0 + + require-directory@2.1.1: {} + + requires-port@1.0.0: {} + + reserved-words@0.1.2: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rollup@4.57.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-area-insets@1.4.1: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass@1.78.0: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + + sax@1.4.4: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + speakingurl@14.0.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.2: {} + + std-env@3.10.0: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + 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: {} + + swagger2openapi@7.0.8: + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + + symbol-tree@3.2.4: {} + + systemjs@6.15.1: {} + + tapable@2.3.0: {} + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.46.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + throat@6.0.2: {} + + throttle-debounce@5.0.2: {} + + timers-ext@0.1.8: + dependencies: + es5-ext: 0.10.64 + next-tick: 1.1.0 + + timm@1.7.1: {} + + tiny-pinyin@1.3.2: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.2: {} + + tmpl@1.0.5: {} + + 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.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + ts-morph@25.0.1: + dependencies: + '@ts-morph/common': 0.26.1 + code-block-writer: 13.0.3 + + ts-toolbelt@9.6.0: {} + + tslib@2.8.1: {} + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type@2.7.3: {} + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + types-ramda@0.30.1: + dependencies: + ts-toolbelt: 9.6.0 + + typescript@4.9.5: {} + + ufo@1.6.3: {} + + unconfig@0.3.13: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + jiti: 1.21.7 + + undici-types@6.19.8: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unicorn-magic@0.3.0: {} + + unimport@3.14.6(rollup@4.57.1): + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + acorn: 8.15.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.0 + pathe: 2.0.3 + picomatch: 4.0.3 + pkg-types: 1.3.1 + scule: 1.3.0 + strip-literal: 2.1.1 + unplugin: 1.16.1 + transitivePeerDependencies: + - rollup + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unocss-applet@0.7.8: + dependencies: + '@unocss-applet/preset-applet': 0.7.8 + '@unocss-applet/preset-rem-rpx': 0.7.8 + '@unocss-applet/transformer-applet': 0.5.5 + '@unocss-applet/transformer-attributify': 0.7.8 + '@unocss/preset-uno': 0.56.5 + + unocss-preset-animations@1.3.0(unocss@0.58.0(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))): + dependencies: + unocss: 0.58.0(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + + unocss@0.58.0(postcss@8.5.6)(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)): + dependencies: + '@unocss/astro': 0.58.0(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + '@unocss/cli': 0.58.0(rollup@4.57.1) + '@unocss/core': 0.58.0 + '@unocss/extractor-arbitrary-variants': 0.58.0 + '@unocss/postcss': 0.58.0(postcss@8.5.6) + '@unocss/preset-attributify': 0.58.0 + '@unocss/preset-icons': 0.58.0 + '@unocss/preset-mini': 0.58.0 + '@unocss/preset-tagify': 0.58.0 + '@unocss/preset-typography': 0.58.0 + '@unocss/preset-uno': 0.58.0 + '@unocss/preset-web-fonts': 0.58.0 + '@unocss/preset-wind': 0.58.0 + '@unocss/reset': 0.58.0 + '@unocss/transformer-attributify-jsx': 0.58.0 + '@unocss/transformer-attributify-jsx-babel': 0.58.0 + '@unocss/transformer-compile-class': 0.58.0 + '@unocss/transformer-directives': 0.58.0 + '@unocss/transformer-variant-group': 0.58.0 + '@unocss/vite': 0.58.0(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + optionalDependencies: + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unpipe@1.0.0: {} + + unplugin-auto-import@0.17.8(rollup@4.57.1): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + fast-glob: 3.3.3 + local-pkg: 0.5.1 + magic-string: 0.30.21 + minimatch: 9.0.5 + unimport: 3.14.6(rollup@4.57.1) + unplugin: 1.16.1 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.18.6(rollup@4.57.1): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + fast-glob: 3.3.3 + local-pkg: 0.5.1 + magic-string: 0.30.21 + minimatch: 9.0.5 + unimport: 3.14.6(rollup@4.57.1) + unplugin: 1.16.1 + transitivePeerDependencies: + - rollup + + unplugin@1.16.1: + dependencies: + acorn: 8.15.0 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.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.6 + + vary@1.1.2: {} + + vite-hot-client@2.1.0(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)): + dependencies: + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + + vite-plugin-inspect@0.8.9(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + debug: 4.4.3 + error-stack-parser-es: 0.1.5 + fs-extra: 11.3.3 + open: 10.2.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + sirv: 3.0.2 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-restart@0.4.2(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)): + dependencies: + micromatch: 4.0.8 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + + vite-plugin-vue-devtools@7.7.2(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)): + dependencies: + '@vue/devtools-core': 7.7.9(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0))(vue@3.4.21(typescript@4.9.5)) + '@vue/devtools-kit': 7.7.9 + '@vue/devtools-shared': 7.7.9 + execa: 9.6.1 + sirv: 3.0.2 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + vite-plugin-inspect: 0.8.9(rollup@4.57.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + vite-plugin-vue-inspector: 5.3.2(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)) + transitivePeerDependencies: + - '@nuxt/kit' + - rollup + - supports-color + - vue + + vite-plugin-vue-inspector@5.3.2(vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0)): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) + '@vue/compiler-dom': 3.5.27 + kolorist: 1.8.0 + magic-string: 0.30.21 + vite: 5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0) + transitivePeerDependencies: + - supports-color + + vite@5.4.14(@types/node@20.17.19)(sass@1.78.0)(terser@5.46.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.57.1 + optionalDependencies: + '@types/node': 20.17.19 + fsevents: 2.3.3 + sass: 1.78.0 + terser: 5.46.0 + + vue-demi@0.14.10(vue@3.4.21(typescript@4.9.5)): + dependencies: + vue: 3.4.21(typescript@4.9.5) + + vue-i18n@9.1.9(vue@3.4.21(typescript@4.9.5)): + dependencies: + '@intlify/core-base': 9.1.9 + '@intlify/shared': 9.1.9 + '@intlify/vue-devtools': 9.1.9 + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@4.9.5) + + vue-router@4.6.4(vue@3.4.21(typescript@4.9.5)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.21(typescript@4.9.5) + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@4.9.5): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@4.9.5) + semver: 7.7.4 + typescript: 4.9.5 + + vue@3.4.21(typescript@4.9.5): + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21(typescript@4.9.5)) + '@vue/shared': 3.4.21 + optionalDependencies: + typescript: 4.9.5 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@3.0.1: {} + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-mimetype@2.3.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.23 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wot-design-uni@1.9.1(vue@3.4.21(typescript@4.9.5)): + dependencies: + vue: 3.4.21(typescript@4.9.5) + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + 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.19.0: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.6 + xtend: 4.0.2 + + xml-name-validator@3.0.0: {} + + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.4 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest@1.8.0: {} + + xregexp@3.1.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yoctocolors@2.1.2: {} + + zod@3.24.2: {} diff --git a/shims-uni.d.ts b/shims-uni.d.ts new file mode 100644 index 0000000..ed4adcf --- /dev/null +++ b/shims-uni.d.ts @@ -0,0 +1,10 @@ +/// +import 'vue' + +declare module '@vue/runtime-core' { + type Hooks = App.AppInstance & Page.PageInstance; + + interface ComponentCustomOptions extends Hooks { + + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..41110f3 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,103 @@ + + diff --git a/src/components/area-code/area-code.vue b/src/components/area-code/area-code.vue new file mode 100644 index 0000000..0fb6f58 --- /dev/null +++ b/src/components/area-code/area-code.vue @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/src/components/ca-switch/ca-switch.vue b/src/components/ca-switch/ca-switch.vue new file mode 100644 index 0000000..01fa091 --- /dev/null +++ b/src/components/ca-switch/ca-switch.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/src/components/ca-switch/props.js b/src/components/ca-switch/props.js new file mode 100644 index 0000000..a6da5f6 --- /dev/null +++ b/src/components/ca-switch/props.js @@ -0,0 +1,125 @@ +export default { + // 双向绑定的值 + modelValue: { + type: [String, Number, Boolean], + default: false + }, + space: { + type: [Number, String], + default: 4 + }, + // 开关尺寸,默认单位是rpx + size: { + type: [Number, String], + default: 56 + }, + textSize: { + type: [String, Number], + default: 26 + }, + // 选中的值 + onVal: { + type: [String, Number, Boolean], + default: true + }, + // 未选中的值 + offVal: { + type: [String, Number, Boolean], + default: false + }, + // 开启展示的值 + onText: { + type: String, + default: '' + }, + // 关闭展示的值 + offText: { + type: String, + default: '' + }, + textStyle: { + type: [String, Object], + default: '' + }, + // 字体颜色 + textColor: { + type: String, + default: '#666' + }, + // 选中时字体颜色 + textSelColor: { + type: String, + default: '#fff' + }, + // 文字常显 + textDisplay: { + type: Boolean, + default: false + }, + // 滑槽阴影,同css的box-shadow + chuteShadow: { + type: String, + default: '-2rpx 2rpx 4rpx 0 rgba(0,0,0,.25)' + }, + // 开关底座颜色(可以是渐变色), 球的轨道 + chuteColor: { + type: String, + default: '#eee' + }, + // 开关底座选中颜色, 球的轨道 + chuteSelColor: { + type: String, + default: '#007aff' + }, + // 只读 + readonly: { + type: Boolean, + default: false + }, + // 禁止滑动 + disabled: { + type: Boolean, + default: false + }, + // 禁止滑动的提示 + disabledText: { + type: String, + default: '' + }, + // 滑动球颜色 + slideColor: { + type: String, + default: '#fff' + }, + // 开关开启后滑动球颜色 + slideSelColor: { + type: String, + default: '#fff' + }, + // 形状 + shape: { + type: String, + values: ['circle', 'square'], + default: 'circle' + }, + // 异步关闭 + async: { + type: Boolean, + default: false + }, + // loading大小,默认单位rpx + loadingSize: { + type: [String, Number], + default: 40 + }, + // 加载状态 + loading: { + type: Boolean, + default: false + }, + // loading转圈颜色 + loadingColor: { + type: String, + default: '' + } +} diff --git a/src/components/cc-comment/cc-comment.vue b/src/components/cc-comment/cc-comment.vue new file mode 100644 index 0000000..c719cdf --- /dev/null +++ b/src/components/cc-comment/cc-comment.vue @@ -0,0 +1,486 @@ + + + + + diff --git a/src/components/cc-comment/componets/common.vue b/src/components/cc-comment/componets/common.vue new file mode 100644 index 0000000..f78628b --- /dev/null +++ b/src/components/cc-comment/componets/common.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/components/cc-comment/project.config.json b/src/components/cc-comment/project.config.json new file mode 100644 index 0000000..54b4cfc --- /dev/null +++ b/src/components/cc-comment/project.config.json @@ -0,0 +1,29 @@ +{ + "compileType": "miniprogram", + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "ignoreUploadUnusedFiles": true + }, + "condition": {}, + "editorSetting": { + "tabIndent": "tab", + "tabSize": 2 + }, + "libVersion": "3.6.3", + "packOptions": { + "ignore": [], + "include": [] + }, + "appid": "" +} \ No newline at end of file diff --git a/src/components/cc-comment/project.private.config.json b/src/components/cc-comment/project.private.config.json new file mode 100644 index 0000000..bbda810 --- /dev/null +++ b/src/components/cc-comment/project.private.config.json @@ -0,0 +1,7 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "cc-comment", + "setting": { + "compileHotReLoad": true + } +} \ No newline at end of file diff --git a/src/components/choose-date/choose-date.vue b/src/components/choose-date/choose-date.vue new file mode 100644 index 0000000..a8be8ea --- /dev/null +++ b/src/components/choose-date/choose-date.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/components/choose-image/choose-image.vue b/src/components/choose-image/choose-image.vue new file mode 100644 index 0000000..1a985f0 --- /dev/null +++ b/src/components/choose-image/choose-image.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/components/collection/index.vue b/src/components/collection/index.vue new file mode 100644 index 0000000..0c28f01 --- /dev/null +++ b/src/components/collection/index.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/components/fixed-bottom-large-btn/fixed-bottom-large-btn.vue b/src/components/fixed-bottom-large-btn/fixed-bottom-large-btn.vue new file mode 100644 index 0000000..f50ebd7 --- /dev/null +++ b/src/components/fixed-bottom-large-btn/fixed-bottom-large-btn.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/components/header-search/header-search.vue b/src/components/header-search/header-search.vue new file mode 100644 index 0000000..6eaedaa --- /dev/null +++ b/src/components/header-search/header-search.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/components/loader/loader.vue b/src/components/loader/loader.vue new file mode 100644 index 0000000..b310be9 --- /dev/null +++ b/src/components/loader/loader.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/components/navbar/navbar.vue b/src/components/navbar/navbar.vue new file mode 100644 index 0000000..6d363e2 --- /dev/null +++ b/src/components/navbar/navbar.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/order-item/order-item.vue b/src/components/order-item/order-item.vue new file mode 100644 index 0000000..c2ff495 --- /dev/null +++ b/src/components/order-item/order-item.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/src/components/password-container/password-container.vue b/src/components/password-container/password-container.vue new file mode 100644 index 0000000..e48e25b --- /dev/null +++ b/src/components/password-container/password-container.vue @@ -0,0 +1,55 @@ + + + + + \ No newline at end of file diff --git a/src/components/password-input/password-input.vue b/src/components/password-input/password-input.vue new file mode 100644 index 0000000..9fceaf7 --- /dev/null +++ b/src/components/password-input/password-input.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/components/payment-method/payment-method.vue b/src/components/payment-method/payment-method.vue new file mode 100644 index 0000000..50f973a --- /dev/null +++ b/src/components/payment-method/payment-method.vue @@ -0,0 +1,198 @@ + + + + diff --git a/src/components/reservation-item/reservation-item.vue b/src/components/reservation-item/reservation-item.vue new file mode 100644 index 0000000..32a2ed6 --- /dev/null +++ b/src/components/reservation-item/reservation-item.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/src/components/security-code/security-code.vue b/src/components/security-code/security-code.vue new file mode 100644 index 0000000..da86947 --- /dev/null +++ b/src/components/security-code/security-code.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/components/set-password/set-password.vue b/src/components/set-password/set-password.vue new file mode 100644 index 0000000..db141d1 --- /dev/null +++ b/src/components/set-password/set-password.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/components/status-bar/status-bar.vue b/src/components/status-bar/status-bar.vue new file mode 100644 index 0000000..43e307e --- /dev/null +++ b/src/components/status-bar/status-bar.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/title-store/title-store.vue b/src/components/title-store/title-store.vue new file mode 100644 index 0000000..0eca3b2 --- /dev/null +++ b/src/components/title-store/title-store.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/src/components/use-code/use-code.vue b/src/components/use-code/use-code.vue new file mode 100644 index 0000000..058e9a4 --- /dev/null +++ b/src/components/use-code/use-code.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/config/index.ts b/src/config/index.ts new file mode 100644 index 0000000..a8a2ad3 --- /dev/null +++ b/src/config/index.ts @@ -0,0 +1,52 @@ +const Config = { + appName: "CHEFLINK Merchant", + googleMapKey: "AIzaSyDvTA1j9_hPPg7kev4fzf6RlGpf_yYhdoo", + // stripeKey: + // "pk_test_51RcyzCQVf8HI8x55xHQ11F0ydksiLEscmWuut6o0eCHV8fCYOWI9F9VrddMlKarnux65EjSIQmFb8rTwrrjrRzgG00CyQVpyRQ", + stripeKey: + "pk_live_51Rcyz0HqArf2IYTZTxK8mXrmUoxLJuC6QpNYgG76CEGSD6D3pUi48QkIwuyEAtqklEwaLC6cHGP5vntuiAFWB7cY000m2o2AU1", + defaultLanguage: "en", + timezone: "Asia/Shanghai", + debounceLongTime: 1000, + debounceShortTime: 500, + throttleTime: 1000, + throttleShortTime: 500, + iosId: "6615065357", + weixinServiceUrl: `https://chatbot.weixin.qq.com/webapp/BunZ9sgxnZPgogWooE5vth0H1IY0Xk?robotName=Nail%20Lover`, + weixinServiceName: "Nail Lover", + // 登录页 + loginPath: "/pages-login/pages/index", + // 首页 + indexPath: "/pages/home/index", + // 引导页 + guidePath: "/pages/guide-page/index", + shareLink: "http://47.84.53.93/h5/#/", + // 手机区号数组 + phoneCodeList: [ + "+86", "+886", "+852", "+853", "+93", "+355", "+213", "+684", "+376", "+244", + "+1264", "+672", "+1268", "+54", "+374", "+297", "+61", "+43", "+994", "+973", + "+880", "+1246", "+375", "+32", "+501", "+229", "+1441", "+975", "+591", "+387", + "+267", "+55", "+1284", "+673", "+359", "+226", "+95", "+257", "+855", "+237", + "+1", "+238", "+1345", "+236", "+235", "+56", "+61", "+61", "+57", "+269", "+243", + "+242", "+682", "+506", "+225", "+385", "+53", "+357", "+420", "+45", "+253", + "+1767", "+1809", "+593", "+20", "+503", "+240", "+291", "+372", "+251", "+500", + "+298", "+679", "+358", "+33", "+594", "+689", "+241", "+995", "+49", "+233", + "+350", "+30", "+299", "+1473", "+590", "+1671", "+502", "+1481", "+224", "+245", + "+592", "+509", "+379", "+504", "+36", "+354", "+91", "+62", "+98", "+964", "+353", + "+972", "+39", "+1876", "+81", "+962", "+73", "+254", "+686", "+850", "+82", "+965", + "+996", "+856", "+371", "+961", "+266", "+231", "+218", "+423", "+370", "+352", + "+389", "+261", "+265", "+60", "+960", "+223", "+356", "+692", "+596", "+222", + "+230", "+269", "+52", "+691", "+373", "+377", "+976", "+1664", "+212", "+258", + "+264", "+674", "+977", "+31", "+599", "+687", "+64", "+505", "+227", "+234", + "+683", "+6723", "+1", "+47", "+968", "+92", "+680", "+507", "+675", "+595", + "+51", "+63", "+48", "+351", "+1809", "+974", "+262", "+40", "+7", "+250", "+290", + "+1869", "+1758", "+508", "+1784", "+685", "+378", "+239", "+966", "+221", "+381", + "+248", "+232", "+65", "+421", "+386", "+677", "+252", "+27", "+34", "+94", "+249", + "+597", "+47", "+268", "+46", "+41", "+963", "+992", "+255", "+66", "+1242", "+220", + "+228", "+690", "+676", "+1868", "+216", "+90", "+993", "+1649", "+688", "+256", + "+380", "+971", "+44", "+1", "+598", "+998", "+678", "+58", "+84", "+1340", "+681", + "+967", "+260", "+263" + ] +}; + +export default Config; diff --git a/src/constant/enums.ts b/src/constant/enums.ts new file mode 100644 index 0000000..a2a04bd --- /dev/null +++ b/src/constant/enums.ts @@ -0,0 +1,175 @@ +/** 协议 */ +export enum Agreement { + /** 用户须知及使用协议- */ + USER_AGREEMENT = "chef_user_agreement", + /** 隐私政策 */ + PRIVACY_POLICY = "chef_mer_privacy_policy", + /** 关于我们 */ + ABOUT_US = "ABOUT_US", + /** 收益说明 */ + CHEF_BENEFIT_DESCRIPTION = "chef_benefit_description", + /** 会员说明 */ + CHEF_WITHDRAWAL_AGREEMENT = "chef_withdrawal_agreement", + /** 兑换码发布协议 */ + CHEF_M_CODE_AGREEMENT = "chef_m_code_agreement", + /** 支付说明 */ + DEPOSIT_EXPLANATION = "DEPOSIT_EXPLANATION", + /** GST说明 */ + GST_EXPLANATION = "GST_EXPLANATION", +} + +/** 短信验证码类型 */ +export enum SmsType { + /** 绑定手机号 */ + USER_BIND_PHONE_NUMBER = 1, + /** 邮箱注册 */ + USER_EMAIL_REGISTER = 2, + /** 忘记密码 */ + USER_FORGET_PASSWORD = 3, + /** 忘记支付密码 */ + USER_FORGET_PAYMENT_PASSWORD = 4, + /** 设置支付密码 */ + USER_SET_PAYMENT_PASSWORD = 5 +} + + +/** 登录类型 */ +export enum LoginType { + /** 邮箱登录 */ + EMAIL = 1, + /** 苹果登录 */ + APPLE = 2, + /** 脸书登录 */ + FACEBOOK = 3, + /** 谷歌登录 */ + GOOGLE = 4, + /** 账号密码登录 */ + ACCOUNT = 5, +} + + +/** 字典 */ +export enum DictType { + /** 订单相关 */ + ABOUT_ORDER = "about_order", + /** 平台相关 */ + ABOUT_PLATFORM = "about_platform", + /** 价格范围 */ + PRICE_RANGE = "price_range", + /** 购买须知 */ + PURCHASE_NOTES = "purchase_notes", + /** 活动说明 */ + ACTIVITY_DESCRIPTION = "activity_description", + /** 预约提示 */ + APPOINTMENT_REMINDER = "appointment_reminder", +} + +/** 字典 */ +export enum DictValue { + /** 待付款订单取消时间 */ + PENDING_PAYMENT_ORDER_CANCEL_TIME = "pending_payment_order_cancel_time", + /** 退款订单自动审核时间 */ + REFUND_ORDER_AUTO_AUDIT_TIME = "refund_order_auto_audit_time", + /** 平台联系方式 */ + CONTACT_METHOD = "contact_method", + + /** 多人预约折扣提示 */ + GROUP_DISCOUNT_EN = "group_discount_en", + /** 多人预约折扣提示 */ + GROUP_DISCOUNT_ZH = "group_discount_zh", + /** + 卸甲预约、补甲预约免费时长提示 */ + FREE_REMOVAL_SERVICE_AVAILABLE_EN = "free_removal_service_available_en", + /** + 卸甲预约、补甲预约免费时长提示 */ + FREE_REMOVAL_SERVICE_AVAILABLE_ZH = "free_removal_service_available_zh" +} + + +/** 自定义事件 */ +export enum EventEnum { + /** 裁剪头像 */ + CROPPER_AVATAR = "CROPPER_AVATAR", + /** 更新提现账号 */ + UPDATE_WITHDRAWAL_ACCOUNT = "update-withdrawal-account", + /** 选择提现账号 */ + CHOOSE_WITHDRAWAL_ACCOUNT = "choose-withdrawal-account", + /** 更新地址信息 */ + UPDATE_ADDRESS = "UPDATE_ADDRESS", + /** 获取平台默认门店信息 */ + PLATFORM_DEFAULT_STORE_INFO = "PLATFORM_DEFAULT_STORE_INFO", + /** 选择门店 */ + CHOOSE_ADDRESS = "CHOOSE_ADDRESS", + /** 选择店铺类型 */ + CHOOSE_STORE_TYPE = "CHOOSE_STORE_TYPE", + /** 选择菜单时间 */ + CHOOSE_MENU_TIME = "CHOOSE_MENU_TIME", + /** 选择支付方式 */ + CHOOSE_PAYMENT_METHOD = "CHOOSE_PAYMENT_METHOD", +} + +// 订单状态 +export enum OrderStatus { + /** 已退款 */ + REFUNDED = -2, + /** 已取消 */ + CANCELLED = -1, + /** 待付款 */ + PENDING_PAYMENT = 1, + /** 已付款 */ + HAS_PENDING_PAYMENT = 2, + /** 商家已接单 */ + MERCHANT_ACCEPTED = 3, + /** 配送中 */ + DELIVERING = 4, + /** 已核销(已送达) */ + COMPLETED = 5, + /** 商家拒绝接单 */ + MERCHANT_REJECTED = 6, +} + +// 订单取消状态 +export enum OrderCancelStatus { + /** + * 申请退款 + */ + APPLIED = 1, + /** + * 商家同意 + */ + APPROVED = 2, + /** + * 商家拒绝 + */ + REJECTED = 3, +} + +/** 消息类型 */ +export enum MessageTypeEnum { + /** 有人评论了你 */ + COMMENTED = 1, + /** 有人回复了你 */ + REPLIED = 2, + /** 用户下单 */ + ORDER_CREATED = 3, + /** 商家接单 */ + MERCHANT_ACCEPTED = 4, + /** 商家同意退款 */ + REFUND_AGREED = 5, + /** 商家拒绝退款 */ + REFUND_REJECTED = 6, + /** 商家开始配送 */ + DELIVERY_STARTED = 7, + /** 商家已送达 */ + DELIVERY_ARRIVED = 8, + /** 订单已核销 */ + ORDER_WRITTEN_OFF = 9, + /** 商家入驻审核通过 */ + SETTLEMENT_APPROVED = 10, + /** 商家入驻审核未通过 */ + SETTLEMENT_REJECTED = 11, + /** 评论审核通过 */ + COMMENT_APPROVED = 13, + /** 评论审核未通过 */ + COMMENT_REJECTED = 14, +} \ No newline at end of file diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..69b7c86 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,29 @@ +/// + +declare module '*.vue' { + import { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component +} + +interface ImportMetaEnv { + /** 网站标题,应用名称 */ + readonly VITE_APP_TITLE: string + /** 服务端口号 */ + readonly VITE_SERVER_PORT: string + /** 后台接口地址 */ + readonly VITE_SERVER_BASEURL: string + /** H5是否需要代理 */ + readonly VITE_APP_PROXY: 'true' | 'false' + /** H5是否需要代理,需要的话有个前缀 */ + readonly VITE_APP_PROXY_PREFIX: string // 一般是/api + /** 是否清除console */ + readonly VITE_DELETE_CONSOLE: string + /** 是否是开发环境 */ + readonly DEV: boolean +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/src/hooks/useAreaCode.ts b/src/hooks/useAreaCode.ts new file mode 100644 index 0000000..ac0d830 --- /dev/null +++ b/src/hooks/useAreaCode.ts @@ -0,0 +1,18 @@ +import type AreaCode from "@/components/area-code/area-code.vue"; + +export default function useAreaCode() { + const areaCodeRef = ref>() + + const defaultAreaCode = ref("+1") + + + function handlePageClick() { + areaCodeRef.value?.close() + } + + return { + areaCodeRef, + defaultAreaCode, + handlePageClick + } +} \ No newline at end of file diff --git a/src/hooks/useEventEmit.ts b/src/hooks/useEventEmit.ts new file mode 100644 index 0000000..3ba53f7 --- /dev/null +++ b/src/hooks/useEventEmit.ts @@ -0,0 +1,6 @@ +export default function useEventEmit(eventName: string, callback: (result: any) => void) { + + onLoad(() => uni.$on(eventName, callback)) + + onUnload(() => uni.$off(eventName)) +} \ No newline at end of file diff --git a/src/hooks/useGetMsgCode.ts b/src/hooks/useGetMsgCode.ts new file mode 100644 index 0000000..9f110fc --- /dev/null +++ b/src/hooks/useGetMsgCode.ts @@ -0,0 +1,41 @@ +import {appSmsSendPost} from "@/service"; + +// 获取短信验证码的自定义 Hook +export default function useGetMsgCode() { + const {t} = useI18n() + const isSend = ref(0) + + async function getMsgCode({ + type, phone, areaCode + }: { + type: string | number; + phone: string | number, + areaCode: string | number, + + }) { + const res = await appSmsSendPost({ + body: { + areaCode, + phone, + // 1 :用户端绑定手机号 2 :用户端邮箱注册 3 :用户端忘记密码 4 :用户端忘记支付密码 5 :用户端设置支付密码 + type, + } + }) + if (res) { + await uni.showToast({title: t('common.verification-code-sent-successfully'), icon: 'none'}) + isSend.value = 60 + const timer = setInterval(() => { + if (isSend.value === 0) { + clearInterval(timer) + } else { + isSend.value -= 1 + } + }, 1000) + } + } + + return { + isSend, + getMsgCode + } +} diff --git a/src/hooks/useNetworkStatusChange.ts b/src/hooks/useNetworkStatusChange.ts new file mode 100644 index 0000000..1d064d9 --- /dev/null +++ b/src/hooks/useNetworkStatusChange.ts @@ -0,0 +1,20 @@ + +// 监听网络状态变化的自定义 Hook +export default function useNetworkStatusChange(callback: () => void) { + + const OnNetworkStatusChange = (res: any) => { + console.log('=>(useNetworkStatusChange)', res) + + if (res.isConnected) { + callback && callback() + } + } + + onLoad(() => { + uni.onNetworkStatusChange(OnNetworkStatusChange) + }) + + onUnload(() => { + uni.offNetworkStatusChange(OnNetworkStatusChange) + }) +} diff --git a/src/hooks/usePage.ts b/src/hooks/usePage.ts new file mode 100644 index 0000000..8d2e276 --- /dev/null +++ b/src/hooks/usePage.ts @@ -0,0 +1,42 @@ +// 自定义分页 Hook +export default function usePage( + queryFun: (pageNum: number, pageSize: number) => Promise>, + callback?: (params?: any) => void, +) { + const paging = ref | null>(null) + const loading = ref(true) + const firstLoaded = ref(false) + const dataList = ref([]) + const totalRows = ref(0) + + async function queryList(pageNum: number, pageSize: number) { + try { + const res = await queryFun(pageNum, pageSize) + console.log('接口响应', res) + await paging.value?.complete(res?.rows || []) + totalRows.value = res?.total + firstLoaded.value = true + setTimeout(() => { + callback && callback({...res, pageNum, pageSize}) + }, 100) + } catch (error) { + await paging.value?.complete(false) + setTimeout(() => { + callback && callback({pageNum, pageSize}) + }, 100) + } finally { + setTimeout(() => { + loading.value = false + }, 100) + } + } + + return { + paging, + firstLoaded, + loading, + dataList, + totalRows, + queryList, + } +} diff --git a/src/hooks/useScrollThreshold.ts b/src/hooks/useScrollThreshold.ts new file mode 100644 index 0000000..2444cc1 --- /dev/null +++ b/src/hooks/useScrollThreshold.ts @@ -0,0 +1,32 @@ +import { ref, onMounted, onUnmounted } from 'vue' +import { throttle } from 'throttle-debounce' + +export function useScrollThreshold(threshold = 250, delay = 150) { + const isThresholdReached = ref(false) + + // 创建节流处理函数 (使用箭头函数保持this指向) + const throttledHandler = throttle(delay, (scrollTop: number) => { + const newState = scrollTop > threshold + // 仅当状态变化时更新 + if (isThresholdReached.value !== newState) { + isThresholdReached.value = newState + console.log("阈值状态更新:", newState, "| 滚动位置:", scrollTop) + } + }) + + const handleScroll = (e: any) => { + // 传递滚动位置给节流函数 + throttledHandler(e.scrollTop) + } + + onMounted(() => { + uni.$on('page-scroll', handleScroll) + }) + + onUnmounted(() => { + uni.$off('page-scroll', handleScroll) + throttledHandler.cancel() // 清除节流函数残留任务 + }) + + return isThresholdReached +} \ No newline at end of file diff --git a/src/http/http.ts b/src/http/http.ts new file mode 100644 index 0000000..7882e3b --- /dev/null +++ b/src/http/http.ts @@ -0,0 +1,50 @@ +import type { CustomRequestOptions } from '@/http/types' +import {http as httpUtils} from "@/utils/http"; + +export function http(options: CustomRequestOptions) { + // 1. 返回 Promise 对象 + return httpUtils(options) +} + +/** + * GET 请求 + * @param url 后台地址 + * @param query 请求query参数 + * @param header 请求头,默认为json格式 + * @returns + */ +export function httpGet(url: string, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + query, + method: 'GET', + header, + ...options, + }) +} + +/** + * POST 请求 + * @param url 后台地址 + * @param data 请求body参数 + * @param query 请求query参数,post请求也支持query,很多微信接口都需要 + * @param header 请求头,默认为json格式 + * @returns + */ +export function httpPost(url: string, data?: Record, query?: Record, header?: Record, options?: Partial) { + return http({ + url, + query, + data, + method: 'POST', + header, + ...options, + }) +} + +http.get = httpGet +http.post = httpPost + +// 支持与 alovaJS 类似的API调用 +http.Get = httpGet +http.Post = httpPost diff --git a/src/http/types.ts b/src/http/types.ts new file mode 100644 index 0000000..33f2016 --- /dev/null +++ b/src/http/types.ts @@ -0,0 +1,33 @@ + +/** + * 在 uniapp 的 RequestOptions 和 IUniUploadFileOptions 基础上,添加自定义参数 + */ + +export interface CustomRequestOptions extends UniApp.RequestOptions { + query?: Record + /** 出错时是否隐藏错误提示 */ + hideErrorToast?: boolean +} + +// 通用响应格式 +export interface IResponse { + code: number | string + data: T + message: string + status: string | number +} + +// 分页请求参数 +export interface PageParams { + page: number + pageSize: number + [key: string]: any +} + +// 分页响应数据 +export interface PageResult { + list: T[] + total: number + page: number + pageSize: number +} diff --git a/src/http/vue-query.ts b/src/http/vue-query.ts new file mode 100644 index 0000000..a309355 --- /dev/null +++ b/src/http/vue-query.ts @@ -0,0 +1,30 @@ +import type { CustomRequestOptions } from '@/http/types' +import { http } from './http' + +/* + * openapi-ts-request 工具的 request 跨客户端适配方法 + */ +export default function request( + url: string, + options: Omit & { + params?: Record + headers?: Record + }, +) { + const requestOptions = { + url, + ...options, + } + + if (options.params) { + requestOptions.query = requestOptions.params + delete requestOptions.params + } + + if (options.headers) { + requestOptions.header = options.headers + delete requestOptions.headers + } + + return http(requestOptions) +} diff --git a/src/interceptor/index.ts b/src/interceptor/index.ts new file mode 100644 index 0000000..391d5e5 --- /dev/null +++ b/src/interceptor/index.ts @@ -0,0 +1,2 @@ +export { routeInterceptor } from './route' +export { requestInterceptor } from './request' \ No newline at end of file diff --git a/src/interceptor/request.ts b/src/interceptor/request.ts new file mode 100644 index 0000000..4d9d089 --- /dev/null +++ b/src/interceptor/request.ts @@ -0,0 +1,79 @@ +import qs from 'qs' +import {useUserStore} from '@/store' +import {platform} from '@/utils/platform' + +export type CustomRequestOptions = UniApp.RequestOptions & { + query?: Record + /** 出错时是否隐藏错误提示 */ + hideErrorToast?: boolean +} + +// 请求基准地址 +const baseUrl = import.meta.env.VITE_SERVER_BASEURL +const proxyPrefix = import.meta.env.VITE_APP_PROXY_PREFIX + + +// 拦截器配置 +const httpInterceptor = { + // 拦截前触发 + invoke(options: CustomRequestOptions) { + // 接口请求支持通过 query 参数配置 queryString + if (options.query) { + const queryStr = qs.stringify(options.query) + if (options.url.includes('?')) { + options.url += `&${queryStr}` + } else { + options.url += `?${queryStr}` + } + } + // 非 http 开头需拼接地址 + if (!options.url.startsWith('http')) { + // #ifdef H5 + // console.log(__VITE_APP_PROXY__) + if (JSON.parse(__VITE_APP_PROXY__)) { + // 啥都不需要做 + options.url = proxyPrefix + options.url + } else { + options.url = baseUrl + options.url + } + // #endif + // 非H5正常拼接 + // #ifndef H5 + options.url = baseUrl + options.url + // #endif + // TIPS: 如果需要对接多个后端服务,也可以在这里处理,拼接成所需要的地址 + } + // 1. 请求超时 + options.timeout = 10000 // 10s + // 2. (可选)添加小程序端请求头标识 + const localeLanguages = uni.getLocale() + console.log(localeLanguages) + options.header = { + platform, // 可选,与 uniapp 定义的平台一致,告诉后台来源 + 'content-language': localeLanguages === 'zh-Hans' ? 'zh_CN' : 'en_US', + ...options.header, + } + + // console.log(options) + // 3. 添加 token 请求头标识 + const userStore = useUserStore() + if (userStore.token) { + // options.header.Authorization = `Bearer ${userStore.token}` + options.header.token = userStore.token + } + + // 4. 添加当前商户的TOKEN + if (userStore.currentMerchantToken) { + options.header['merchantToken'] = userStore.currentMerchantToken + } + }, +} + +export const requestInterceptor = { + install() { + // 拦截 request 请求 + uni.addInterceptor('request', httpInterceptor) + // 拦截 uploadFile 文件上传 + uni.addInterceptor('uploadFile', httpInterceptor) + }, +} diff --git a/src/interceptor/route.ts b/src/interceptor/route.ts new file mode 100644 index 0000000..484e47f --- /dev/null +++ b/src/interceptor/route.ts @@ -0,0 +1,51 @@ +import {useUserStore} from '@/store' +import Config from '@/config' + + +let loginPathPattern = ['/pages-user', '/pages/order', '/pages/invite', '/pages/scan-code'] +let tabbarPaths = ['pages/index/index'] +let prevPath = '' + +let isDev = import.meta.env.MODE !== 'development' + +// 黑登录拦截器 - (适用于大部分页面不需要登录,少部分页面需要登录) +const navigateToInterceptor = { + // 注意,这里的url是 '/' 开头的,如 '/pages/index/index',跟 'pages.json' 里面的 path 不同 + invoke(result: any) { + console.log('navigateToInterceptor', result) + + // if (url === prevPath) { + // return false + // } + // prevPath = url + // setTimeout(() => { + // prevPath = '' + // }, 500) + // + // const path = url.split('?')[0] + // console.log('path', path) + // + // const userStore = useUserStore() + // + // console.log(isDev) + // if (loginPathPattern.some((item) => path.includes(item))) { + // return userStore.checkLogin() + // } + + // return true + }, +} + +const navigateBackInterceptor = { + invoke(result: any) { + console.log('navigateBackInterceptor', result) + return true + }, +} +export const routeInterceptor = { + install() { + uni.addInterceptor('navigateTo', navigateToInterceptor) + uni.addInterceptor('redirectTo', navigateToInterceptor) + uni.addInterceptor('navigateBack', navigateBackInterceptor) + }, +} diff --git a/src/layouts/default.vue b/src/layouts/default.vue new file mode 100644 index 0000000..7eced98 --- /dev/null +++ b/src/layouts/default.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/locale/en.json b/src/locale/en.json new file mode 100644 index 0000000..595ec83 --- /dev/null +++ b/src/locale/en.json @@ -0,0 +1,692 @@ +{ + "agreement": { + "codeAgreement": "Redemption Code Release Agreement", + "platformAgreement": "Platform Agreement", + "privacy-policy": "Privacy Policy", + "user-terms-conditions": "User Terms and Conditions", + "withdrawalAgreement": "Withdrawal Agreement" + }, + "common": { + "add": "Add", + "agree": "Agree", + "stock": "Stock", + "app-marketplace": "Application Market", + "appleLoginFailed": "Apple sign-in failed. Please try again.", + "auditStatus": { + "pass": "Review passed", + "reject": "Review rejection", + "submitted": "Under review" + }, + "balance": "Balance", + "cancel": "Cancel", + "close": "Close", + "comment": "Comment", + "confirm": "Confirm", + "continue": "Continue", + "cuttingImage": "Crop pictures", + "delete": "Delete", + "details": "Details", + "edit": "Edit", + "email": "Email", + "enter": "Enter", + "enterPassword": "Enter Password", + "go-to-settings": "To Settings", + "google-map": "Google Maps", + "googleLoginFailed": "Google sign-in failed. Please try again.", + "gotIt": "Got it", + "inquiry": "Instant inquiry", + "instructions": "Instructions", + "item": "items", + "itemNum": "Total", + "loading": "Loading", + "menus": "Menus", + "minutes": "Minutes", + "no": "No", + "obtain": "Get", + "operation-success": "Operation successful", + "or": "OR", + "photograph": "photo", + "redeemCode": "Redeem Code", + "coupon": "Coupon", + "distributing": "Distributing", + "ended": "Ended", + "placeholder": { + "pleaseEnter": "Please enter", + "pleaseEnterName": "Please enter a name", + "pleaseEnterPhone": "Please enter your phone number", + "pleaseSelect": "Please select" + }, + "please-enter-your-payment-password": "Please enter your payment password", + "prompt": { + "download-failed": "Download failed", + "not-setup-payment-password": "You haven't set a payment password yet?", + "picture-wrong-please-try-again": "Please select a file and try again", + "please-carefully-read-and-agree": "Please read carefully and agree", + "replication-successful": "Copy successful", + "request-failed-please-try-again-later": "Network or server error please wait.", + "request-incorrect": "Request failed", + "system-prompt": "System prompts", + "system-prompt-delete": "Are you sure to delete it?", + "system-prompt-reject": "Should we reject the order?", + "up-failed": "Upload timed out, please try again later", + "update-failed": "Update failed", + "update-successfully": "Update successful", + "phone-number-empty": "Phone number is empty" + }, + "reEdit": "Re Edit", + "reject": "Reject", + "remove": "Remove", + "reply": "Reply", + "save": "Save", + "saveSuccess": "Save Success", + "select": "Select", + "select-from-album": "Select from mobile phone album", + "select-maps-app": "Select a map application", + "send": "Send", + "skip": "Skip", + "stores": "Stores", + "submit": "Submit", + "uploading": "Uploading", + "yes": "Yes" + }, + "navbar-change-payment-password": "Modify payment password", + "navbar-forget-payment-password": "Forgot your payment password", + "navbar-future-order": "Future Order", + "navbar-month-order": "This Month's Order", + "navbar-refund-order": "Refund order", + "navbar-reservation": "Today's ordered dishes", + "navbar-set-payment-password": "Set a payment password", + "navbar-settings": "Settings", + "navbar-today-order": "Today's Order", + "navbar-yesterday-order": "Yesterday's Order", + "navbar-forget-password": "Forgot password", + "pages": { + "home": { + "bookDishesToday": "Book a dish", + "card-desc": "Self developed vegetable stir fry machine on the platform, your life helper by your side.", + "card-title": "CHEFLINK stir fry machine", + "commonTools": "Common tools", + "coupons": "Coupons", + "createStore": "Create a store", + "dataStatistics": "Data statistics", + "futureOrders": "Booking order", + "monthAmount": "The monthly income", + "monthOrder": "Orders for this month", + "myIncome": "My profits", + "recipes": "menu", + "refundOrders": "Refund order", + "scanCode": "Scan", + "todayAmount": "Today's earnings", + "todayOrder": "Order today", + "totalAmount": "Total revenue", + "view": "View details", + "yesterdayOrder": "Yesterday's order" + }, + "menu": { + "add": "New Items", + "addMenu": "New Menu", + "introduction": "Introduction", + "items": "Items", + "menu": "Menu", + "menuHours": "Menu hours", + "menus": "Menus", + "overview": "Overview", + "tipsDesc": "They help customers choose what to order.To add photos,go to items and choose menu item", + "tipsTitle": "Photos of menu items can increase sales", + "title": "Items" + }, + "mine": { + "complaintsSuggestions": "Complaints And Suggestions", + "language": "Language", + "log-out-successfully": "Logout successful", + "logOut": "Log Out", + "login-out-tip": "Are you sure you are logging out?", + "loginTips": "Please log in", + "set": "Set", + "storeAuth": "Store Authentication", + "storeManage": "Store Management" + }, + "order": { + "ACPT": "ACPT", + "CONF": "CONF", + "DCOMP": "DCOMP", + "DEL": "DEL", + "OTW": "OTW", + "PU": "PU", + "cancel": "Cancelled", + "refund": "Refunded", + "subtotal": "Subtotal", + "taxesAndFees": "Taxes and other fees", + "total": "Total" + }, + "search": { + } + }, + "pages-login": { + "and": "and", + "choose-language": { + "confirm": "Confirm language", + "success": "Language set successfully", + "tip": "You can change this setting later in the 'My' section of the app", + "title": "Hello, welcome to log in" + }, + "continuing-agree": "I have read it carefully and agreed", + "forget-password": { + "description": "Set a new password for Sign In", + "newPassword": "New password" + }, + "guide-page": { + "welcome": { + "description": "Account created successfully.", + "next": "Next", + "title": "Hello" + } + }, + "index": { + "apple-login": "Continue with Apple", + "description": "Create an account or log in to book and manage your appointments", + "facebook-login": "Continue with Facebook", + "google-login": "Continue with Google", + "input-placeholder": "Email Address/Phone", + "prompt": { + "email-address": "Please enter email address", + "email-address-verify": "Please enter the correct email address" + }, + "title": "Log in or sign up", + "wechat-login": "Continue with Wechat" + }, + "login": { + "description": "Enter password to Sign In", + "forgotPassword": "Forgot password", + "title": "Sign In" + }, + "login-successfully": "Login successful", + "prompt": { + "confirm-email": "Please enter your confirmation email address", + "email": "Please enter your email address", + "email-verify": "Please enter the correct email address", + "first-name": "Please enter a name", + "last-name": "Please enter your last name", + "password": "Please enter your password", + "password-verify": "Please enter a 6-20 digit password", + "phone-number": "Please enter your mobile phone number", + "phone-number-verify": "Please enter the correct mobile phone number", + "reset-success": "Reset successfully" + }, + "sign-up": { + "confirm-email": "Confirm email", + "first-name": "First name", + "last-name": "Last name", + "password": "Password", + "phone-number": "Phone number", + "register-success": "Sign Up Successful", + "title": "Sign Up" + }, + "verify-code": { + "changeOne": "Change one", + "description": "For security reasons, please type characters to continue", + "title": "verification code" + } + }, + "pages-user": { + "card": { + "add": "+ Add", + "desc": "After binding the card, payment can be made quickly and directly.", + "listCard": "Credit card list", + "title": "Bind the card first and make the payment later" + }, + "choosePaymethod": { + "creditCard": "Credit card payment", + "replace": "replace", + "title": "Choose a payment method", + "wallet": "Balance payment" + }, + "complaints": { + "contact-information": "Contact information", + "contact-information-tip": "Your contact information helps us communicate and solve problems, only visible to staff", + "description": "You are welcome to give us feedback on the use of our products and suggestions.", + "feedback-content": "Feedback content", + "feedback-content-placeholder": "Please fill in the feedback content", + "image": "Image", + "title": "Complaints and suggestions", + "validation": { + "contact-phone-invalid": "Please fill in the correct contact phone", + "contact-phone-required": "Please fill in the contact phone", + "content-max-length": "Feedback content cannot exceed 500 characters", + "content-min-length": "Feedback content must be at least 10 characters", + "content-required": "Please fill in the feedback content" + } + }, + "coupons": { + "addCoupon": "Add Coupon", + "addForFree": "Add for Free", + "agreeText": "I have read it carefully and agreed", + "andReceiveDiscount": "and receive a discount of", + "copyCode": "Copy", + "couponAgreement": "Coupon Publishing Agreement", + "dateFilter": "Date Filter", + "days": "Days", + "discount": "Discount", + "discountRatio": "Discount Ratio", + "fullDiscount": "Full Discount", + "name": "Coupon Name", + "paidPublishing": "Paid Publishing", + "payMethods": "Payment Methods", + "publishNow": "Publish Now", + "selectValidEndDate": "Select Expiry Date", + "selectValidStartDate": "Select Effective Date", + "spendOver": "Spend over", + "title": "Coupons", + "totalQuantity": "Distribution quantity", + "type": "Type", + "validEnd": "Time of failure", + "validDays": "Validity Days", + "validStart": "Effective time", + "validityDays": "Validity Days", + "validation": { + "agreeAgreementFirst": "Please agree to the redemption code publishing agreement first", + "createSuccess": "Created successfully", + "discountValueDecimal": "Discount value can have at most 2 decimal places", + "discountValueInvalid": "Please enter a valid discount value (0-1, max 2 decimal places)", + "discountValueRange": "Please enter an integer between 1-100", + "discountValueRequired": "Discount value is required", + "minAmountRequired": "Please enter the minimum spending threshold", + "nameRequired": "Coupon name is required", + "startDateCannotLaterThanEndDate": "Effective date cannot be later than expiry date", + "totalQuantityPositive": "Distribution quantity must be a positive integer", + "totalQuantityRequired": "Total quantity is required", + "validDaysPositive": "Validity days must be a positive integer", + "validDaysRequired": "Please enter validity days", + "validEndRequired": "Expiry time is required", + "validStartRequired": "Effective time is required" + } + }, + "food": { + "add-food": { + "active": "Active", + "add": "Add", + "addMenu": "Add Menu", + "addPicture": "Add Picture", + "description": "Description", + "descriptionTip": "Manually add detailed dish descriptions to help customers decide what to order", + "discountPriceError": "Discount price cannot be higher than original price", + "discountedPrice": "Actual selling price:", + "enterPlaceholder": "Enter", + "frequentlyBoughtTogether": "Frequently Bought Together", + "itemActiveDesc": "Customers can view and order this dish", + "itemIsActive": "Item is Active", + "itemIsNot": "The dish is not activated", + "menu": "Menu:", + "name": "Name:", + "pictures": "Pictures:", + "pound": "lb", + "price": "Price:", + "schema": { + "dishDescription": "Dish description cannot be empty", + "dishImage": "Please upload at least one dish image", + "dishName": "Dish name cannot be empty", + "discountPriceRequired": "Please enter discount price", + "discountPricePositive": "Discount price must be greater than 0", + "menuId": "Please select a menu", + "originalPrice": "Please enter original price" + }, + "taxRate": "Tax Rate:", + "tips": "Please add a menu first before adding dishes", + "title": "Add Dish", + "weight": "Weight:", + "stock": "Stock Quantity:", + "stockPlaceholder": "Enter stock quantity", + "stockRequired": "Please enter stock quantity", + "stockMustBeInteger": "Stock quantity must be an integer", + "stockMustBeNonNegative": "Stock quantity must be greater than or equal to 0" + }, + "add-item": { + "add": "Add", + "addSideDishes": "+ Add Side Dishes", + "enterPlaceholder": "Enter", + "isRequired": "Is Required", + "name": "Name", + "price": "Price($)", + "sideDish": "Side Dish", + "sideDishesFlavorValue": "Side Dishes/Flavor Value:", + "title": "Add Side Dish", + "typeOfSideDishes": "Type of Side Dishes/Flavor:", + "validation": { + "addAtLeastOne": "Please add at least one side dish", + "completeAllFields": "Please complete all fields for side dish {index}", + "enterSideDishName": "Please enter side dish name for item {index}", + "submittedSuccessfully": "Submitted successfully" + }, + "value": "Value" + } + }, + "income": { + "index": { + "accountToReceive": "Account to receive:", + "accumulatedIncome": "Accumulated income:", + "addBankCard": "Add bank card", + "auditFailureReason": "Audit Failure Reason:", + "availableWithdrawalAmount": "Available withdrawal amount:", + "detailedList": "Detailed List", + "handlingFee": "Handling Fee:", + "paymentVoucher": "Payment Voucher:", + "thisMonth": "This month's:", + "toBeCredited": "To be credited:", + "today": "Today's:", + "walletBalance": "Wallet balance", + "withdrawal": "Withdrawal", + "withdrawalAccount": "Withdrawal Account:", + "withdrawalAmount": "Withdrawal Amount", + "withdrawalAmountLabel": "Withdrawal Amount:", + "withdrawalFee": "Withdrawal fee:", + "withdrawalRecords": "Withdrawal Records", + "withdrawalTime": "Withdrawal Time:", + "yesterday": "Yesterday's:" + }, + "title": "My income", + "toast": { + "pleaseSelectACard": "Please select an arrival card" + }, + "withdraw": { + "addCard": "Add Bank Card", + "bankName": "Bank Name", + "bankNameTips": "Please enter bank name", + "card": "Bank Card Number", + "cardListTitle": "Bank card list", + "cardTips": "Please enter bank card number", + "name": "Payee Name", + "nameTips": "Please enter payee name", + "phone": "Contact Information", + "phoneTips": "Please enter contact information", + "title": "Withdraw", + "withdrawImmediately": "Withdraw immediately" + } + }, + "member": { + "creditCard": "Add a credit card" + }, + "menu": { + "add": "Add", + "addMenu": "Add Menu", + "customersCanOverview": "Customers can overview and order from this menu", + "detail": { + "addTimeSlot": "+ Add Time Slot", + "dateFilter": "Date Filter", + "endTime": "End Time:", + "endTimeError": "End time cannot be earlier than start time", + "open24Hours": "Open 24 Hours", + "pleaseSelectDays": "Please select days for time slot", + "pleaseSetTime": "Please set start and end time for time slot", + "selectDaysAndHours": "Select days and hours:", + "startTime": "Start Time:" + }, + "editMenu": "Edit Menu", + "enterPlaceholder": "Enter", + "menuHours": "Menu hours", + "menuIsActive": "Menu is active", + "menuIsNotActive": "Menu is not active", + "name": "name:", + "nameRequired": "Name is required", + "setDefaultDays": "Set the default days and times this menu will be available", + "submit": "submit" + }, + "message": { + "readAll": "One-click read", + "title": "Message" + }, + "order": { + "agree": "Agreed", + "agreeRefund": "You have agreed to the user's refund application", + "balancePayment": "Balance Payment", + "cancelOrder": "User has applied to cancel the order", + "checkout": { + "priceDetail": { + "desc": "These fees are only due to factors such as the number of shopping carts, and are used to pay for expenses related to your order, including platform services and delivery services.", + "memberDiscount": "Member discount", + "serviceFees": "Service fees and other expenses", + "taxation": "Taxation", + "title": "What content is included" + } + }, + "collapse": "Collapse", + "copies": "Copies", + "createTime": "Create Time", + "creditCardPayment": "Credit Card Payment", + "delivered": "Delivered", + "deliveredOrder": { + "uploadPhoto": "Please upload delivery photo" + }, + "deliveredTips": "Take and upload delivery photos", + "deliveryAddress": "Delivery Address:", + "deliveryTime": "Delivery Time:", + "details": "Details", + "enterReply": "Enter reply text", + "expand": "Expand", + "items": "items", + "mapNavigation": "Map Navigation", + "mealPickupTime:": "Meal pickup time", + "noReview": "No review yet", + "orderInfo": "Order Information:", + "orderNumber": "Order Number", + "payMethod": "Payment Method", + "payTime": "Payment Time", + "pending": "Pending", + "phoneContact": "Phone Contact", + "pickUp": "Pick Up", + "pleaseEnterReply": "Please enter reply content", + "processed": "Processed", + "productInfo": "Product Information:", + "receiving": "Receiving", + "refundReason": "Reason for refund", + "refuseReason": "Reason for rejection", + "refuseRefund": "You have rejected the user's refund application", + "reject": "Rejected", + "remark": "Remark:", + "reply": "Reply:", + "replySuccess": "Reply successful", + "score": " points", + "share": "Share", + "startDelivery": "Start delivery", + "startDeliveryForm": { + "deliveryAvatar": "Delivery Avatar", + "deliveryFirstName": "Delivery First Name", + "deliveryPhone": "Delivery Phone", + "deliverySurname": "Delivery Surname", + "title": "Add Delivery Person", + "validation": { + "deliveryAvatarRequired": "Please upload delivery avatar", + "deliveryFirstNameRequired": "Please enter delivery first name", + "deliveryPhoneRequired": "Please enter delivery phone number", + "deliverySurnameRequired": "Please enter delivery surname", + "orderIdRequired": "Please enter order ID" + } + }, + "status": { + "completed": "Completed", + "completedDesc": "Order completed", + "delivering": "Delivering", + "deliveringDesc": "Waiting for merchant delivery...", + "merchantAccepted": "Order Accepted", + "merchantAcceptedDesc": "Merchant has accepted the order", + "merchantRejected": "Rejected", + "merchantRejectedDesc": "The merchant has rejected the order", + "pendingPayment": "Pending Order", + "waitingForOrder": "Waiting for order..." + }, + "toast": { + "receiveSuccess": "Order successfully accepted", + "refuseReasonRequired": "Please enter a reason for rejection", + "refuseSuccess": "Order successfully rejected" + }, + "total": "Total", + "viewReview": "View Review", + "writeOff": "Write off" + }, + "pay-password": { + "change-payment-password-successfully": "Modify payment password successfully", + "enter-6-digit-password": "Please enter a 6-digit password", + "forget-payment-password-successfully": "Forgot your payment password successfully", + "input-placeholder": { + "enter-new-password": "Please enter a new password", + "enter-new-password-again": "Please enter the new password again", + "enter-old-password": "Please enter the original password", + "enter-phone-number": "Please enter your mobile phone number", + "enter-verification-code": "Please enter the verification code" + }, + "set-payment-password-successfully": "Setting the payment password successfully", + "two-passwords-inconsistent": "The password is inconsistent when entered twice" + }, + "recipe": { + "addPicture": "Add Picture", + "addRecipe": "Add Recipe", + "collapseReply": "Collapse reply content", + "detail": { + "title": "Recipe Details" + }, + "dragTip": "Default first image as cover", + "editRecipe": "Edit recipes", + "enterPlaceholder": "Enter", + "expandReply": "Expand reply", + "index": { + "add": "Add", + "delete": "Delete", + "edit": "Edit", + "title": "Recipe Management" + }, + "ingredientsPreparation": "Ingredients preparation:", + "recipeClassification": "Recipe Classification:", + "recipeImage": "Recipe Image:", + "recipeName": "Recipe Name:", + "replyTo": "Reply to", + "schema": { + "ingredients": "Ingredients preparation is required", + "recipeCategory": "Please select recipe category", + "recipeImage": "Please upload at least one recipe image", + "recipeName": "Recipe name is required" + } + }, + "sales-record": { + "amt": "Amt", + "dateFilter": "Date Filter", + "dishAmount": "Dish Amount", + "dishQuantity": "Dish Quantity", + "portion": " portions", + "qty": "Qty", + "title": "Sales Record" + }, + "setting": { + "language": "Language Switching", + "logOff": "Log out of account", + "logOffConfirm": "Still need to be cancelled", + "logOffDesc": "Clear all user information on this platform, including but not limited to personal information, consumption information, etc. The above information is deleted, and it is unrecoverable, unrecoverable, unrecoverable, unrecoverable, unrecoverable, unrecoverable.", + "logOffRisk": "There are the following risks when canceling the account", + "modification": "Modify password", + "payPwd": "Payment password" + }, + "store-management": { + "index": { + "addPicture": "Add Picture", + "businessHours": "Business Hours:", + "deliveryAmount": "Delivery Amount:", + "deliveryFee": "Delivery Fee:", + "deliveryTime": "Delivery Time:", + "hours": { + "businessHours": "Business Hours", + "days": { + "friday": "Fri.", + "monday": "Mon.", + "saturday": "Sat.", + "sunday": "Sun.", + "thursday": "Thu.", + "tuesday": "Tue.", + "wednesday": "Wed." + }, + "endTime": "End Time", + "pleaseSelectAtLeastOneDay": "Please select at least one day", + "pleaseSelectStartAndEndTime": "Please select start and end time", + "selectDayPrompt": "Please select the day of the week to start and end.", + "startTime": "Start Time", + "startTimeCannotLaterThanEndTime": "Start time cannot be later than end time" + }, + "isDelivery": "Whether to deliver or not?", + "isSelfPickup": "Is it self pickup?", + "logo": "LOGO:", + "logoSizeHint": "(Suggested size 1:1)", + "mainBusinessScope": "Main Business Scope:", + "mealPickupTime": "Meal Pickup Time:", + "off": "OFF", + "on": "ON", + "prompt": { + "businessHours": "Please select business hours", + "deliveryFee": "Please enter delivery fee", + "deliveryTime": "Please enter delivery time", + "logo": "Please upload store LOGO", + "merchantAddress": "Please select store location", + "merchantCategoryIds": "Please select main business scope", + "merchantName": "Please enter store name", + "minOrderPrice": "Please enter minimum order amount", + "minOrderPriceTip": "The starting amount must be a number greater than 0 at most two decimal places", + "phone": "Please enter contact phone", + "pickupTime": "Please enter pickup time", + "shopImages": "Please upload recommended dishes pictures" + }, + "recommendedDishPictures": "Recommended Dish Pictures:", + "save": "Save", + "shopLocation": "Shop Location:", + "shopNames": "Shop Names:", + "shopPhone": "Shop Phone:", + "shopState": "Shop State", + "title": "Store Management" + } + }, + "store-settle-in": { + "address": "Address", + "audit": { + "pass": "Successful review", + "passDesc": "Congratulations on your successful entry into the platform!", + "passDesc1": "Come and upload your product information to start your money-making journey", + "reject": "Review failed", + "rejectDesc": "Reasons for failure", + "submitted": "Under review", + "submittedDesc": "The platform is under review. Please wait patiently..." + }, + "businessLicense": "Business license", + "category": "Type", + "desc": "Just fill in the information and start your money-making journey now", + "detailedAddress": "Detailed address", + "idCardFront": "Picture of ID card", + "introduction": "Introduction", + "schema": { + "address": "Please select the address", + "businessLicense": "Please upload your food handling license", + "category": "Please select your type", + "detailedAddress": "Please enter the detailed address", + "idCardBack": "Please upload your passport", + "idCardFront": "Please upload your ID", + "introduction": "Please enter the introduction", + "storeName": "Please enter the store name" + }, + "storeName": "Shop name", + "title": "Shop entry" + } + }, + "tabBar": { + "browse": "Browse", + "global": "Global Shopping", + "home": "Home", + "menu": "Menu", + "mine": "Profile", + "order": "History" + }, + "toast": { + "commentSuccess": "Comment successful", + "deleteSuccess": "Delete successfully", + "orderWriteOffSuccess": "Order verification successfully", + "pleasePhone": "Please pay attention to answering the phone.", + "pleaseSelectStore": "select a store", + "rejectSuccess": "Rejection successful", + "selectScope": "Please select a store type", + "submitSuccess": "Submission successful", + "submitSuccessTip": "Submission is successful, please wait for review" + } +} diff --git a/src/locale/index.ts b/src/locale/index.ts new file mode 100644 index 0000000..0e703ce --- /dev/null +++ b/src/locale/index.ts @@ -0,0 +1,18 @@ +import {createI18n} from 'vue-i18n'// v9.x +import en from './en.json' +import zhHans from './zh-Hans.json' +import Config from "@/config"; + +const localeLanguage = uni.getLocale() || Config.defaultLanguage + +const i18n = createI18n({ + legacy: false, + locale: localeLanguage,// 获取已设置的语言 + fallbackLocale: Config.defaultLanguage, + messages:{ + en, + 'zh-Hans': zhHans, + } +}) + +export {i18n} diff --git a/src/locale/zh-Hans.json b/src/locale/zh-Hans.json new file mode 100644 index 0000000..07e8b44 --- /dev/null +++ b/src/locale/zh-Hans.json @@ -0,0 +1,692 @@ +{ + "agreement": { + "codeAgreement": "兑换码发布协议", + "platformAgreement": "平台协议", + "privacy-policy": "隐私政策", + "user-terms-conditions": "用户须知及使用协议", + "withdrawalAgreement": "提现协议" + }, + "common": { + "add": "添加", + "agree": "同意", + "app-marketplace": "应用市场", + "stock": "库存", + "auditStatus": { + "pass": "审核通过", + "reject": "审核拒绝", + "submitted": "审核中" + }, + "balance": "余额", + "cancel": "取消", + "close": "关闭", + "comment": "评论", + "confirm": "确认", + "continue": "继续", + "cuttingImage": "裁剪图片", + "delete": "删除", + "details": "详情", + "edit": "编辑", + "email": "邮箱", + "enter": "输入", + "enterPassword": "输入密码", + "go-to-settings": "去设置", + "google-map": "谷歌地图", + "gotIt": "知道了", + "inquiry": "立即申请", + "instructions": "描述", + "loading": "加载中", + "menus": "菜单", + "minutes": "分钟", + "no": "否", + "obtain": "获取", + "or": "或", + "photograph": "拍照", + "itemNum": "共", + "item": "件", + "googleLoginFailed": "谷歌登录授权失败,请重试", + "appleLoginFailed": "苹果登录授权失败,请重试", + "redeemCode": "兑换码", + "coupon": "优惠券", + "distributing": "分发中", + "ended": "已过期", + "placeholder": { + "pleaseEnter": "请输入", + "pleaseEnterName": "请输入姓名", + "pleaseEnterPhone": "请输入电话", + "pleaseSelect": "请选择" + }, + "please-enter-your-payment-password": "请输入支付密码", + "prompt": { + "not-setup-payment-password": "您尚未设置支付密码?", + "please-carefully-read-and-agree": "请仔细阅读并同意", + "replication-successful": "复制成功", + "system-prompt": "系统提示", + "system-prompt-delete": "是否确认删除?", + "system-prompt-reject": "是否拒绝订单?", + "picture-wrong-please-try-again": "请选择一个文件后重试", + "request-incorrect": "请求失败", + "up-failed": "上传超时,请稍后重试", + "request-failed-please-try-again-later": "网络或服务器错误请稍后", + "update-successfully": "更新成功", + "download-failed": "下载失败", + "update-failed": "更新失败", + "phone-number-empty": "手机号码为空" + }, + "operation-success": "操作成功", + "reEdit": "重新编辑", + "reject": "拒绝", + "remove": "删除", + "reply": "回复", + "save": "保存", + "saveSuccess": "保存成功", + "select": "选择", + "select-from-album": "从相册选择", + "select-maps-app": "选择地图应用", + "send": "发送", + "skip": "跳过", + "stores": "店铺", + "submit": "提交", + "uploading": "上传中", + "yes": "是" + }, + "navbar-change-payment-password": "修改支付密码", + "navbar-forget-payment-password": "忘记支付密码", + "navbar-future-order": "未来订单", + "navbar-month-order": "本月订单", + "navbar-refund-order": "退款订单", + "navbar-reservation": "今日预定菜品统计", + "navbar-set-payment-password": "设置支付密码", + "navbar-settings": "设置", + "navbar-today-order": "今日订单", + "navbar-yesterday-order": "昨日订单", + "navbar-forget-password": "忘记密码", + "pages": { + "home": { + "bookDishesToday": "预订菜品", + "commonTools": "常用工具", + "coupons": "优惠券", + "createStore": "创建店铺", + "dataStatistics": "数据统计", + "futureOrders": "预定单", + "monthAmount": "本月收益", + "monthOrder": "本月订单", + "myIncome": "我的收益", + "recipes": "菜谱", + "refundOrders": "退款订单", + "scanCode": "扫一扫", + "todayAmount": "今日收益", + "todayOrder": "今日订单", + "totalAmount": "总收益", + "yesterdayOrder": "昨日订单", + "card-title": "CHEFLINK 炒菜机", + "card-desc": "平台自主研发的蔬菜炒菜机,您生活中的好帮手。", + "view": "查看详情" + }, + "menu": { + "add": "添加菜品", + "addMenu": "添加菜单", + "introduction": "简介", + "items": "菜品", + "menu": "菜单", + "menuHours": "菜单营业时间", + "menus": "菜单", + "overview": "总览", + "tipsDesc": "他们帮助顾客选择要点什么。要添加照片,请转到项目并选择菜单项", + "tipsTitle": "菜单上的照片可以增加销量", + "title": "菜品" + }, + "mine": { + "complaintsSuggestions": "投诉建议", + "language": "语言切换", + "log-out-successfully": "退出登录成功", + "logOut": "退出登录", + "login-out-tip": "确定退出登录吗?", + "loginTips": "请登录", + "set": "设置", + "storeAuth": "店铺认证", + "storeManage": "店铺管理" + }, + "order": { + "ACPT": "已接单", + "CONF": "待接单", + "DCOMP": "已完成", + "DEL": "配送", + "OTW": "配送中", + "PU": "自取", + "cancel": "已取消", + "refund": "已退款", + "subtotal": "小计", + "taxesAndFees": "税费和其他费用", + "total": "总计" + }, + "search": { + } + }, + "pages-login": { + "and": "和", + "continuing-agree": "我已认真阅读并同意", + "forget-password": { + "description": "设置新密码", + "newPassword": "新密码" + }, + "guide-page": { + "welcome": { + "description": "账户创建成功。", + "next": "下一步", + "title": "你好" + } + }, + "index": { + "apple-login": "苹果登录", + "description": "创建账户或登录以预订和管理您的预约", + "facebook-login": "Facebook登录", + "google-login": "Google登录", + "input-placeholder": "邮箱地址/手机号", + "prompt": { + "email-address": "请输入邮箱地址", + "email-address-verify": "请输入正确的邮箱地址" + }, + "title": "登录或注册", + "wechat-login": "微信登录" + }, + "login": { + "description": "输入密码以继续", + "forgotPassword": "忘记密码", + "title": "登录" + }, + "login-successfully": "登录成功", + "prompt": { + "confirm-email": "请输入确认邮箱", + "email": "请输入邮箱", + "email-verify": "请输入正确的邮箱", + "first-name": "请输入名", + "last-name": "请输入姓", + "password": "请输入密码", + "password-verify": "请输入6-20位密码", + "phone-number": "请输入手机号", + "phone-number-verify": "请输入正确的手机号", + "reset-success": "重置成功" + }, + "sign-up": { + "confirm-email": "确认邮箱", + "first-name": "名", + "last-name": "姓", + "password": "密码", + "phone-number": "手机号", + "register-success": "注册成功", + "title": "注册" + }, + "verify-code": { + "changeOne": "换一个", + "description": "出于安全原因,请键入验证码继续", + "title": "验证码" + }, + "choose-language": { + "success": "语言设置成功", + "title": "您好,欢迎登录", + "tip": "您可以在应用程序的'我的'部分稍后更改此设置", + "confirm": "确认语言" + } + }, + "pages-user": { + "card": { + "add": "添加信用卡", + "desc": "卡绑定后,可以快速直接付款", + "listCard": "信用卡列表", + "title": "先绑定卡,再付款" + }, + "choosePaymethod": { + "creditCard": "信用卡支付", + "replace": "替换", + "title": "选择支付方式", + "wallet": "余额支付" + }, + "complaints": { + "contact-information": "联系电话", + "contact-information-tip": "您的联系方式有助于我们沟通解决问题,仅工作人员可见", + "description": "您好,欢迎您给我们反馈产品的使用感受和建议。", + "feedback-content": "反馈内容", + "feedback-content-placeholder": "请填写意见反馈内容", + "image": "图片", + "title": "投诉建议", + "validation": { + "contact-phone-invalid": "请填写正确的联系电话", + "contact-phone-required": "请填写联系电话", + "content-max-length": "反馈内容不能超过500个字符", + "content-min-length": "反馈内容至少需要10个字符", + "content-required": "请填写反馈内容" + } + }, + "coupons": { + "addCoupon": "添加优惠券", + "addForFree": "免费添加", + "agreeText": "我已认真阅读并同意", + "andReceiveDiscount": "减免金额", + "copyCode": "复制兑换码", + "couponAgreement": "优惠券发布协议", + "dateFilter": "日期筛选", + "days": "天", + "discount": "折扣券", + "discountRatio": "折扣比例", + "fullDiscount": "满减券", + "name": "优惠券名称", + "paidPublishing": "付费发布", + "payMethods": "支付方式", + "publishNow": "立即发布", + "selectValidEndDate": "选择失效日期", + "selectValidStartDate": "选择生效日期", + "spendOver": "满减门槛", + "title": "优惠券", + "totalQuantity": "发放数量", + "type": "类型", + "validEnd": "失效时间", + "validDays": "有效天数", + "validStart": "生效时间", + "validityDays": "有效天数", + "validation": { + "agreeAgreementFirst": "请先同意兑换码发布协议", + "createSuccess": "创建成功", + "discountValueRequired": "优惠值不能为空", + "discountValueRange": "请输入1-100之间的整数", + "discountValueDecimal": "折扣值最多保留两位小数", + "discountValueInvalid": "请输入有效的折扣值(0-1之间,最多两位小数)", + "minAmountRequired": "请输入满减门槛", + "nameRequired": "优惠券名称不能为空", + "startDateCannotLaterThanEndDate": "生效日期不能晚于失效日期", + "totalQuantityPositive": "发放数量必须为大于0的整数", + "totalQuantityRequired": "总数量不能为空", + "validDaysPositive": "有效天数必须为大于0的整数", + "validDaysRequired": "请输入有效期天数", + "validEndRequired": "失效时间不能为空", + "validStartRequired": "生效时间不能为空" + } + }, + "food": { + "add-food": { + "active": "激活", + "add": "添加", + "addMenu": "添加菜单", + "addPicture": "添加图片", + "description": "描述", + "descriptionTip": "手动添加详细的菜品描述,帮助客户决定订购什么", + "discountPriceError": "折扣价不能高于原价", + "discountedPrice": "实际销售价格:", + "enterPlaceholder": "输入", + "frequentlyBoughtTogether": "经常一起购买", + "itemActiveDesc": "客户可以查看并订购此菜品", + "itemIsActive": "菜品已激活", + "itemIsNot": "菜品未激活", + "menu": "菜单:", + "name": "名称:", + "pictures": "图片:", + "pound": "磅", + "price": "价格:", + "schema": { + "dishDescription": "菜品描述不能为空", + "dishImage": "请至少上传一张菜品图片", + "dishName": "菜品名称不能为空", + "discountPriceRequired": "请输入折扣价", + "discountPricePositive": "折扣价必须大于0", + "menuId": "请选择菜单", + "originalPrice": "请输入原价" + }, + "taxRate": "税率:", + "tips": "请先添加菜单之后再添加菜品", + "title": "添加菜品", + "weight": "重量:", + "stock": "库存数量:", + "stockPlaceholder": "请输入库存数量", + "stockRequired": "请输入库存数量", + "stockMustBeInteger": "库存数量必须为整数", + "stockMustBeNonNegative": "库存数量必须大于等于0" + }, + "add-item": { + "add": "添加", + "addSideDishes": "+ 添加配菜", + "enterPlaceholder": "输入", + "isRequired": "是否必选", + "name": "名称", + "price": "价格($)", + "sideDish": "配菜", + "sideDishesFlavorValue": "配菜/口味值:", + "title": "添加配菜", + "typeOfSideDishes": "配菜类型/口味:", + "validation": { + "addAtLeastOne": "请至少添加一个配菜", + "completeAllFields": "请完成配菜 {index} 的所有字段", + "enterSideDishName": "请输入配菜 {index} 的配菜名称", + "submittedSuccessfully": "提交成功" + }, + "value": "值" + } + }, + "income": { + "index": { + "accountToReceive": "到账账户:", + "accumulatedIncome": "累计收入:", + "addBankCard": "添加银行卡", + "auditFailureReason": "审核失败原因:", + "availableWithdrawalAmount": "可提现金额:", + "detailedList": "明细列表", + "handlingFee": "手续费:", + "paymentVoucher": "打款凭证:", + "thisMonth": "本月:", + "toBeCredited": "待入账:", + "today": "今日:", + "walletBalance": "钱包余额", + "withdrawal": "提现", + "withdrawalAccount": "提现账户:", + "withdrawalAmount": "提现金额", + "withdrawalAmountLabel": "提现金额:", + "withdrawalFee": "提现手续费:", + "withdrawalRecords": "提现记录", + "withdrawalTime": "提现时间:", + "yesterday": "昨日:" + }, + "title": "我的收益", + "toast": { + "pleaseSelectACard": "请选择一张到账卡" + }, + "withdraw": { + "addCard": "新增银行卡", + "bankName": "开户行", + "bankNameTips": "请输入开户行", + "card": "银行卡号", + "cardListTitle": "银行卡列表", + "cardTips": "请输入银行卡号", + "name": "收款人姓名", + "nameTips": "请输入收款人姓名", + "phone": "联系方式", + "phoneTips": "请输入联系方式", + "title": "提现", + "withdrawImmediately": "立即提现" + } + }, + "member": { + "creditCard": "添加信用卡" + }, + "menu": { + "add": "添加", + "addMenu": "添加菜单", + "customersCanOverview": "顾客可以查看并从此菜单订购", + "detail": { + "addTimeSlot": "+ 添加时间段", + "dateFilter": "日期筛选", + "endTime": "结束时间:", + "endTimeError": "结束时间不能早于开始时间", + "open24Hours": "24小时营业", + "pleaseSelectDays": "请为时间段选择天数", + "pleaseSetTime": "请为时间段设置开始和结束时间", + "selectDaysAndHours": "选择天数和时间:", + "startTime": "开始时间:" + }, + "editMenu": "编辑菜单", + "enterPlaceholder": "请输入", + "menuHours": "菜单时间", + "menuIsActive": "菜单已激活", + "menuIsNotActive": "菜单未激活", + "name": "名称:", + "nameRequired": "名称不能为空", + "setDefaultDays": "设置此菜单可用的默认天数和时间", + "submit": "提交" + }, + "message": { + "readAll": "一键已读", + "title": "消息" + }, + "order": { + "agree": "已同意", + "agreeRefund": "您已同意用户的退款申请", + "balancePayment": "余额支付", + "cancelOrder": "用户已申请取消订单", + "checkout": { + "priceDetail": { + "desc": "这些费用仅基于购物车数量等因素,并用于支付与您的订单相关的费用,包括平台服务和配送服务。", + "memberDiscount": "会员折扣", + "serviceFees": "服务费及其他费用", + "taxation": "税收", + "title": "包含哪些内容" + } + }, + "collapse": "收起", + "copies": "预定份数", + "createTime": "创建时间", + "creditCardPayment": "信用卡支付", + "delivered": "确认送达", + "deliveredOrder": { + "uploadPhoto": "请上传配送照片" + }, + "deliveredTips": "拍摄并上传送货照片", + "deliveryAddress": "配送地址:", + "deliveryTime": "送达时间:", + "details": "详情", + "enterReply": "输入回复文字", + "expand": "展开", + "items": "个", + "mapNavigation": "地图导航", + "mealPickupTime:": "取餐时间", + "orderInfo": "订单信息:", + "orderNumber": "订单编号", + "payMethod": "支付方式", + "payTime": "付款时间", + "pending": "待处理", + "phoneContact": "电话联系", + "pickUp": "自取信息", + "pleaseEnterReply": "请输入回复内容", + "processed": "已处理", + "productInfo": "商品信息:", + "receiving": "接单", + "refundReason": "退款原因", + "refuseReason": "拒绝原因", + "refuseRefund": "您已拒绝用户的退款申请", + "reject": "已拒绝", + "remark": "备注:", + "reply": "回复:", + "replySuccess": "回复成功", + "score": "分", + "share": "份", + "startDelivery": "开始配送", + "startDeliveryForm": { + "deliveryAvatar": "配送员头像", + "deliveryFirstName": "配送员名字", + "deliveryPhone": "配送员手机号", + "deliverySurname": "配送员姓", + "title": "添加配送员", + "validation": { + "deliveryAvatarRequired": "请上传配送员头像", + "deliveryFirstNameRequired": "请输入配送员名字", + "deliveryPhoneRequired": "请输入配送员手机号", + "deliverySurnameRequired": "请输入配送员姓氏", + "orderIdRequired": "请输入订单ID" + } + }, + "status": { + "completed": "已完成", + "completedDesc": "订单已完成", + "delivering": "配送中", + "deliveringDesc": "等待商家配送中...", + "merchantAccepted": "已接单", + "merchantAcceptedDesc": "商家已接单", + "pendingPayment": "待接单", + "waitingForOrder": "等待接单中...", + "merchantRejected": "已拒绝", + "merchantRejectedDesc": "商家已拒绝接单" + }, + "toast": { + "receiveSuccess": "接单成功", + "refuseReasonRequired": "请输入拒绝原因", + "refuseSuccess": "拒绝成功" + }, + "total": "共", + "viewReview": "查看评价", + "noReview": "暂无评价", + "writeOff": "核销" + }, + "pay-password": { + "change-payment-password-successfully": "修改支付密码成功", + "enter-6-digit-password": "请输入6位密码", + "forget-payment-password-successfully": "忘记支付密码成功", + "input-placeholder": { + "enter-new-password": "请输入新密码", + "enter-new-password-again": "请再次输入新密码", + "enter-old-password": "请输入原密码", + "enter-phone-number": "请输入手机号", + "enter-verification-code": "请输入验证码" + }, + "set-payment-password-successfully": "设置支付密码成功", + "two-passwords-inconsistent": "两次输入的密码不一致" + }, + "recipe": { + "addPicture": "添加图片", + "addRecipe": "添加菜谱", + "collapseReply": "收起回复内容", + "detail": { + "title": "菜谱详情" + }, + "dragTip": "默认第一张图片为封面", + "editRecipe": "编辑菜谱", + "enterPlaceholder": "请输入", + "expandReply": "展开回复", + "index": { + "add": "新增", + "delete": "删除", + "edit": "修改", + "title": "菜谱管理" + }, + "ingredientsPreparation": "食材准备:", + "recipeClassification": "菜谱分类:", + "recipeImage": "菜谱图片:", + "recipeName": "菜谱名称:", + "replyTo": "回复给", + "schema": { + "ingredients": "食材准备不能为空", + "recipeCategory": "请选择菜谱分类", + "recipeImage": "请至少上传一张菜谱图片", + "recipeName": "菜谱名称不能为空" + } + }, + "sales-record": { + "amt": "金额", + "dateFilter": "日期筛选", + "dishAmount": "菜品金额", + "dishQuantity": "菜品份数", + "portion": "份", + "qty": "数量", + "title": "销售记录" + }, + "setting": { + "language": "语言切换", + "logOff": "注销账号", + "logOffConfirm": "仍要注销", + "logOffDesc": "清空用户在该平台所有信息,包括但不限于个人资料、消费信息等,以上信息均被删除,不可恢复不可恢复不可恢复不可恢复。", + "logOffRisk": "注销账号存在以下风险", + "modification": "修改密码", + "payPwd": "支付密码" + }, + "store-management": { + "index": { + "addPicture": "添加图片", + "businessHours": "营业时间:", + "deliveryAmount": "起送金额:", + "deliveryFee": "配送费:", + "deliveryTime": "配送时间:", + "hours": { + "businessHours": "营业时间", + "days": { + "friday": "周五", + "monday": "周一", + "saturday": "周六", + "sunday": "周日", + "thursday": "周四", + "tuesday": "周二", + "wednesday": "周三" + }, + "endTime": "结束时间", + "pleaseSelectAtLeastOneDay": "请选择至少一天", + "pleaseSelectStartAndEndTime": "请选择开始时间和结束时间", + "selectDayPrompt": "请选择开始和结束的星期几。", + "startTime": "开始时间", + "startTimeCannotLaterThanEndTime": "开始时间不能晚于结束时间" + }, + "isDelivery": "是否配送?", + "isSelfPickup": "是否支持自取?", + "logo": "LOGO:", + "logoSizeHint": "(建议尺寸1:1)", + "mainBusinessScope": "主营业务范围:", + "mealPickupTime": "取餐时间:", + "off": "关闭", + "on": "开启", + "prompt": { + "businessHours": "请选择营业时间", + "deliveryFee": "请输入配送费", + "deliveryTime": "请输入配送时长", + "logo": "请上传店铺LOGO", + "merchantAddress": "请选择店铺位置", + "merchantCategoryIds": "请选择主营业务范围", + "merchantName": "请输入店铺名称", + "minOrderPrice": "请输入最小订单金额", + "minOrderPriceTip": "起送金额必须为大于0的数字最多两位小数", + "phone": "请输入联系电话", + "pickupTime": "请输入自取时长", + "shopImages": "请上传推荐菜品图片" + }, + "recommendedDishPictures": "推荐菜品图片:", + "save": "保存", + "shopLocation": "店铺位置:", + "shopNames": "店铺名称:", + "shopPhone": "联系电话:", + "title": "店铺管理", + "shopState": "所在州" + } + }, + "store-settle-in": { + "address": "地址", + "audit": { + "pass": "审核成功", + "passDesc": "恭喜您成功入驻平台!", + "passDesc1": "快来上传商品信息,开启赚钱之旅吧~", + "reject": "审核失败", + "rejectDesc": "失败原因", + "submitted": "审核中", + "submittedDesc": "平台审核中,耐心等待..." + }, + "businessLicense": "食品操作处理证", + "category": "所属类型", + "desc": "简单填写信息,快来开启赚钱之旅", + "detailedAddress": "详细地址", + "idCardFront": "ID/护照", + "introduction": "介绍", + "schema": { + "address": "请选择地址", + "businessLicense": "请上传食品操作处理证", + "category": "请选择所属类型", + "detailedAddress": "请输入详细地址", + "idCardBack": "请上传护照", + "idCardFront": "请上传ID", + "introduction": "请输入介绍", + "storeName": "请输入店铺名称" + }, + "storeName": "店铺名称", + "title": "店铺入驻" + } + }, + "tabBar": { + "browse": "浏览", + "global": "全球购", + "home": "首页", + "menu": "菜单", + "mine": "我的", + "order": "订单" + }, + "toast": { + "commentSuccess": "评论成功", + "deleteSuccess": "删除成功", + "orderWriteOffSuccess": "订单核销成功", + "pleasePhone": "请注意接听电话。", + "pleaseSelectStore": "请选择店铺", + "selectScope": "请选择店铺类型", + "submitSuccess": "提交成功", + "submitSuccessTip": "提交成功,请等待审核", + "rejectSuccess": "拒绝成功" + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..5837d97 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,24 @@ +import {createSSRApp} from "vue"; +import App from "./App.vue"; +import {Pinia, store} from '@/store' +import {installAppPlugins} from '@/plugin' +import {requestInterceptor, routeInterceptor} from "@/interceptor"; +import {i18n} from "@/locale"; + + +// #ifndef APP-NVUE +import 'virtual:uno.css' +// #endif + +export function createApp() { + const app = createSSRApp(App); + app.use(store) + app.use(requestInterceptor) + app.use(routeInterceptor) + app.use(i18n) + installAppPlugins(app) + return { + app, + Pinia, + }; +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..d4f8ea1 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,187 @@ +{ + "name" : "CHEFLINK Merchant", + "appid" : "__UNI__BB8E3C9", + "description" : "美国外卖商户端", + "versionName" : "1.0.13", + "versionCode" : 113, + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "Merchant", + "compilerVersion" : 3, + "checkPermissionDenied" : true, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : false, + "autoclose" : true, + "delay" : 0 + }, + "safearea" : { + "background" : "#fff", + "bottom" : { + "offset" : "auto" + } + }, + "optimization" : { + "subPackages" : true + }, + "runmode" : "liberate", + // 开启分包优化后,必须配置资源释放模式 + "compatible" : { + "ignoreVersion" : true + }, + "screenOrientation" : [ "portrait-primary", "landscape-primary" ], + /* 模块配置 */ + "modules" : { + "Camera" : {}, + "OAuth" : {}, + "Barcode" : {} + }, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "" + ], + "minSdkVersion" : 28, + "targetSdkVersion" : 35, + "schemes" : "cheflinkmerchant", + "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ], + "excludePermissions" : [ + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : { + "urltypes" : "cheflinkmerchant", + "idfa" : false, + "dSYMs" : false, + "privacyDescription" : { + "NSPhotoLibraryUsageDescription" : "上传用户头像等", + "NSPhotoLibraryAddUsageDescription" : "保存图片", + "NSCameraUsageDescription" : "核销用户订单" + } + }, + /* SDK配置 */ + "sdkConfigs" : { + "geolocation" : { + "system" : { + "__platform__" : [ "ios", "android" ] + } + }, + "maps" : {}, + "payment" : {}, + "ad" : {}, + "oauth" : { + "apple" : {}, + "google" : { + "clientid" : "455840300142-2d46cgso94qgb41o9feo0njq2dgne9p6.apps.googleusercontent.com" + } + }, + "share" : {} + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + }, + "splashscreen" : { + "androidStyle" : "default", + "iosStyle" : "storyboard", + "ios" : { + "storyboard" : "CustomStoryboard.zip" + }, + "android" : { + "hdpi" : "starter/drawable-hdpi/outline.9.png", + "xhdpi" : "starter/drawable-xhdpi/outline.9.png", + "xxhdpi" : "starter/drawable-xxhdpi/outline.9.png" + } + } + }, + "locales" : { + "en" : { + // 英文 + "ios" : { + "privacyDescription" : { + "NSCameraUsageDescription" : "Allow access to your camera to upload your avatar and verify user orders.", + "NSPhotoLibraryUsageDescription" : "Allow access to your photo library to select or save images.", + "NSPhotoLibraryAddUsageDescription" : "Allow saving images to your photo library, such as invitation posters." + } + } + }, + "zh" : { + // 中文(简体) + "ios" : { + "privacyDescription" : { + "NSCameraUsageDescription" : "允许访问相机以上传头像。核销用户订单", + "NSPhotoLibraryUsageDescription" : "允许访问相册以选择或保存图片。", + "NSPhotoLibraryAddUsageDescription" : "允许保存图片到相册,例如邀请海报。" + } + } + } + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3", + "locale" : "en" +} +// 中文(简体) + diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..40c4815 --- /dev/null +++ b/src/package.json @@ -0,0 +1,20 @@ +{ + "id": "ca-switch", + "name": "CaSwitch开关组件,支持个性化定义", + "displayName": "CaSwitch开关组件,支持个性化定义", + "version": "1.0.0", + "description": "能够支持文字配置,联网切换,渐变颜色切换,滑块大小。", + "keywords": [ + "switch", + "滑块", + "开关", + "滑动开关", + "切换开关" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + } +} \ No newline at end of file diff --git a/src/pages-login/components/verification-code.vue b/src/pages-login/components/verification-code.vue new file mode 100644 index 0000000..238d4ff --- /dev/null +++ b/src/pages-login/components/verification-code.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/pages-login/pages/choose-language/index.vue b/src/pages-login/pages/choose-language/index.vue new file mode 100644 index 0000000..12810da --- /dev/null +++ b/src/pages-login/pages/choose-language/index.vue @@ -0,0 +1,242 @@ + + + + + + diff --git a/src/pages-login/pages/forget-password/index.vue b/src/pages-login/pages/forget-password/index.vue new file mode 100644 index 0000000..53767a2 --- /dev/null +++ b/src/pages-login/pages/forget-password/index.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/pages-login/pages/guide-page/welcome.vue b/src/pages-login/pages/guide-page/welcome.vue new file mode 100644 index 0000000..0f640f7 --- /dev/null +++ b/src/pages-login/pages/guide-page/welcome.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/pages-login/pages/index.vue b/src/pages-login/pages/index.vue new file mode 100644 index 0000000..85d0bb4 --- /dev/null +++ b/src/pages-login/pages/index.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/pages-login/pages/login/index.vue b/src/pages-login/pages/login/index.vue new file mode 100644 index 0000000..79addeb --- /dev/null +++ b/src/pages-login/pages/login/index.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/pages-login/pages/sign-up/index.vue b/src/pages-login/pages/sign-up/index.vue new file mode 100644 index 0000000..ba1610d --- /dev/null +++ b/src/pages-login/pages/sign-up/index.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/src/pages-login/service/index-data.d.ts b/src/pages-login/service/index-data.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/pages-login/service/index.ts b/src/pages-login/service/index.ts new file mode 100644 index 0000000..2f01b5d --- /dev/null +++ b/src/pages-login/service/index.ts @@ -0,0 +1,12 @@ +import {http} from '@/utils/http' + + +// 获取图片验证码 +export const getCaptcha = () => http.get>('/auth/code') + +// 登录 +export const login = (data: Record) => + http.post<{ + token: string + }>('/app/login', data) + diff --git a/src/pages-login/static/images/100.png b/src/pages-login/static/images/100.png new file mode 100644 index 0000000..bc5db7d Binary files /dev/null and b/src/pages-login/static/images/100.png differ diff --git a/src/pages-login/static/images/100204.png b/src/pages-login/static/images/100204.png new file mode 100644 index 0000000..133ad6a Binary files /dev/null and b/src/pages-login/static/images/100204.png differ diff --git a/src/pages-login/static/images/100207.png b/src/pages-login/static/images/100207.png new file mode 100644 index 0000000..9df6191 Binary files /dev/null and b/src/pages-login/static/images/100207.png differ diff --git a/src/pages-login/static/images/100208.png b/src/pages-login/static/images/100208.png new file mode 100644 index 0000000..84fe491 Binary files /dev/null and b/src/pages-login/static/images/100208.png differ diff --git a/src/pages-login/static/images/100209.png b/src/pages-login/static/images/100209.png new file mode 100644 index 0000000..fc70d18 Binary files /dev/null and b/src/pages-login/static/images/100209.png differ diff --git a/src/pages-login/static/images/100220.png b/src/pages-login/static/images/100220.png new file mode 100644 index 0000000..1c8095e Binary files /dev/null and b/src/pages-login/static/images/100220.png differ diff --git a/src/pages-login/static/images/101.png b/src/pages-login/static/images/101.png new file mode 100644 index 0000000..93baf66 Binary files /dev/null and b/src/pages-login/static/images/101.png differ diff --git a/src/pages-login/static/images/102.png b/src/pages-login/static/images/102.png new file mode 100644 index 0000000..b19377d Binary files /dev/null and b/src/pages-login/static/images/102.png differ diff --git a/src/pages-login/static/images/103.png b/src/pages-login/static/images/103.png new file mode 100644 index 0000000..8ff8d3a Binary files /dev/null and b/src/pages-login/static/images/103.png differ diff --git a/src/pages-login/store/index.ts b/src/pages-login/store/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/pages-login/store/module/logic.ts b/src/pages-login/store/module/logic.ts new file mode 100644 index 0000000..fc7256c --- /dev/null +++ b/src/pages-login/store/module/logic.ts @@ -0,0 +1,313 @@ +import {defineStore} from "pinia"; +import {login} from "@/pages-login/service"; +import {useUserStore} from "@/store"; +import * as R from "ramda"; +import Config from "@/config"; +import {LoginType} from "@/constant/enums"; + + +export const useLogicStore = defineStore('login-logic', () => { + const {defaultAreaCode} = useAreaCode() + const registerForm = ref({ + type: "", + email: '', + confirmEmail: '', + firstName: '', + surname: '', + phone: '', + loginPwd: '', + areaCode: defaultAreaCode.value, + captcha: "", + }) + + const loginForm = ref({ + type: "", + email: '', + areaCode: defaultAreaCode.value, + phone: '', + code: '', + password: '', + tripartiteLoginIdentify: '', + }) + + const forgetPasswordForm = ref({ + email: '', + loginPwd: '', + captcha: "", + phone: '', + areaCode: defaultAreaCode.value, + }) + + function navigateTo(url: string) { + uni.navigateTo({ + url, + }) + } + + function reset() { + registerForm.value = { + type: "", + email: '', + confirmEmail: '', + firstName: '', + surname: '', + phone: '', + loginPwd: '', + areaCode: defaultAreaCode.value, + captcha: "", + } + loginForm.value = { + type: "", + email: '', + areaCode: defaultAreaCode.value, + phone: '', + code: '', + password: '', + tripartiteLoginIdentify: '', + } + forgetPasswordForm.value = { + email: '', + loginPwd: '', + captcha: "", + phone: '', + areaCode: defaultAreaCode.value, + } + } + + function resetRegisterForm() { + registerForm.value = { + type: "", + email: '', + confirmEmail: '', + firstName: '', + surname: '', + phone: '', + loginPwd: '', + areaCode: defaultAreaCode.value, + captcha: "", + } + } + + const userStore = useUserStore() + const {t} = useI18n() + + function appleLogin() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'apple', + success: (res) => { + uni.getUserInfo({ + provider: 'apple', + success: async (info) => { + // 获取用户信息成功, info.authResult保存用户信息 + console.log('info', info) + const params = { + type: LoginType.APPLE, + email: info.userInfo?.email || '', + tripartiteLoginIdentify: info?.userInfo?.openId ?? '', + } + + try { + const loginRes = await login(params) + console.log('loginRes', loginRes) + userStore.token = loginRes.data.token + nextTick(() => { + userStore.getUserInfo(); + }) + await uni.showToast({title: t('pages-login.login-successfully'), icon: "none"}); + const pages = getCurrentPages() + setTimeout(R.ifElse(() => pages.length > 1, () => uni.navigateBack({delta: 1}), () => uni.switchTab( + { + url: Config.indexPath + } + )), 1000); + resolve(true) + } catch (err: any) { + console.log('err', err) + if (R.equals(+err.code, 711)) { + registerForm.value = { + email: info.userInfo?.email || '', + areaCode: '', + phone: '', + code: '', + password: '', + type: LoginType.APPLE, + tripartiteLoginIdentify: info?.userInfo?.openId ?? '', + } + navigateTo('/pages-login/pages/sign-up/index') + } + } + }, + fail: (err: any) => { + console.log('err', err) + + }, + }) + }, + fail: (err: any) => { + console.log('err', err) + // 登录授权失败 + uni.showToast({title: t('common.appleLoginFailed'), icon: 'none'}) + }, + }) + }) + } + + function facebookLogin() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'apple', + success: (res) => { + uni.getUserInfo({ + provider: 'apple', + success: async (info) => { + // 获取用户信息成功, info.authResult保存用户信息 + console.log('info', info) + const params = { + userType: 1, + // 1 验证码 2 密码 3 一键登录 4 微信登录 5 小程序登录 6 苹果登录 + type: 6, + openid: info?.userInfo?.openId ?? '', + } + try { + const loginRes = await login(params) + console.log('loginRes', loginRes) + userStore.token = loginRes.data.token + resolve(true) + } catch (err: any) { + console.log('err', err) + } + }, + fail: (err: any) => { + console.log('err', err) + + }, + }) + }, + fail: (err: any) => { + console.log('err', err) + // 登录授权失败 + uni.showToast({title: '登录授权失败', icon: 'none'}) + }, + }) + }) + } + + function googleLogin() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'google', + success: (res) => { + uni.getUserInfo({ + provider: 'google', + success: async (info) => { + // 获取用户信息成功, info.authResult保存用户信息 + console.log('info', info) + const params = { + userPort: 2, + type: LoginType.GOOGLE, + email: info.userInfo.email, + tripartiteLoginIdentify: info.userInfo.openid, + } + try { + const loginRes = await login(params) + console.log('loginRes', loginRes) + userStore.token = loginRes.data.token + + nextTick(() => { + userStore.getUserInfo(); + }) + await uni.showToast({title: t('pages-login.login-successfully'), icon: "none"}); + const pages = getCurrentPages() + setTimeout(R.ifElse(() => pages.length > 1, () => uni.navigateBack({delta: 1}), () => uni.switchTab( + { + url: Config.indexPath + } + )), 1000); + + resolve(true) + } catch (err: any) { + if (R.equals(+err.code, 711)) { + registerForm.value = { + email: info.userInfo.email, + areaCode: '+1', + phone: '', + code: '', + password: '', + type: LoginType.GOOGLE, + tripartiteLoginIdentify: info.userInfo.openid, + userPort: 2, + } + navigateTo('/pages-login/pages/sign-up/index') + } + } + }, + fail: (err: any) => { + console.log('err', err) + }, + }) + }, + fail: (err: any) => { + console.log('err', err) + // 登录授权失败 + uni.showToast({title: t('common.googleLoginFailed'), icon: 'none'}) + } + }) + }) + } + + function wechatLogin() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'weixin', + success: (res) => { + const {code} = res + uni.getUserInfo({ + provider: 'weixin', + success: async (info) => { + // 获取用户信息成功, info.authResult保存用户信息 + console.log('info', info) + const params = { + userType: 1, + // 1 验证码 2 密码 3 一键登录 4 微信登录 5 小程序登录 6 苹果登录 + type: 6, + openid: info?.userInfo?.openId ?? '', + } + try { + const loginRes = await login(params) + console.log('loginRes', loginRes) + userStore.token = loginRes.data.token + resolve(true) + } catch (err: any) { + console.log('err', err) + } + }, + fail: (err: any) => { + console.log('err', err) + + }, + }) + }, + fail: (err: any) => { + console.log('err', err) + // 登录授权失败 + uni.showToast({title: '微信登录授权失败', icon: 'none'}) + } + }) + }) + } + + return { + registerForm, + loginForm, + forgetPasswordForm, + reset, + appleLogin, + facebookLogin, + googleLogin, + wechatLogin, + resetRegisterForm, + } + + } +) diff --git a/src/pages-user/pages/add-card/index.vue b/src/pages-user/pages/add-card/index.vue new file mode 100644 index 0000000..4aa6389 --- /dev/null +++ b/src/pages-user/pages/add-card/index.vue @@ -0,0 +1,166 @@ + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/choose-paymethod/index.vue b/src/pages-user/pages/choose-paymethod/index.vue new file mode 100644 index 0000000..56fc87a --- /dev/null +++ b/src/pages-user/pages/choose-paymethod/index.vue @@ -0,0 +1,143 @@ + + + \ No newline at end of file diff --git a/src/pages-user/pages/complaints/index.vue b/src/pages-user/pages/complaints/index.vue new file mode 100644 index 0000000..55f7b05 --- /dev/null +++ b/src/pages-user/pages/complaints/index.vue @@ -0,0 +1,168 @@ + + + \ No newline at end of file diff --git a/src/pages-user/pages/cooking-machine/components/application.vue b/src/pages-user/pages/cooking-machine/components/application.vue new file mode 100644 index 0000000..0a025f6 --- /dev/null +++ b/src/pages-user/pages/cooking-machine/components/application.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/cooking-machine/components/cooking-machine-skeleton.vue b/src/pages-user/pages/cooking-machine/components/cooking-machine-skeleton.vue new file mode 100644 index 0000000..324f034 --- /dev/null +++ b/src/pages-user/pages/cooking-machine/components/cooking-machine-skeleton.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/cooking-machine/components/tip-popup.vue b/src/pages-user/pages/cooking-machine/components/tip-popup.vue new file mode 100644 index 0000000..1f7eaa0 --- /dev/null +++ b/src/pages-user/pages/cooking-machine/components/tip-popup.vue @@ -0,0 +1,45 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/cooking-machine/index.vue b/src/pages-user/pages/cooking-machine/index.vue new file mode 100644 index 0000000..10967d7 --- /dev/null +++ b/src/pages-user/pages/cooking-machine/index.vue @@ -0,0 +1,139 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/coupons/add-coupons.vue b/src/pages-user/pages/coupons/add-coupons.vue new file mode 100644 index 0000000..4ab2a6e --- /dev/null +++ b/src/pages-user/pages/coupons/add-coupons.vue @@ -0,0 +1,399 @@ + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/coupons/add-new-coupons.vue b/src/pages-user/pages/coupons/add-new-coupons.vue new file mode 100644 index 0000000..1d476e8 --- /dev/null +++ b/src/pages-user/pages/coupons/add-new-coupons.vue @@ -0,0 +1,335 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/coupons/index.vue b/src/pages-user/pages/coupons/index.vue new file mode 100644 index 0000000..1a8d016 --- /dev/null +++ b/src/pages-user/pages/coupons/index.vue @@ -0,0 +1,237 @@ + + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/food/add-food.vue b/src/pages-user/pages/food/add-food.vue new file mode 100644 index 0000000..63664ce --- /dev/null +++ b/src/pages-user/pages/food/add-food.vue @@ -0,0 +1,636 @@ + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/food/add-item.vue b/src/pages-user/pages/food/add-item.vue new file mode 100644 index 0000000..b5bc793 --- /dev/null +++ b/src/pages-user/pages/food/add-item.vue @@ -0,0 +1,301 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/future.vue b/src/pages-user/pages/home-order/future.vue new file mode 100644 index 0000000..fc7d644 --- /dev/null +++ b/src/pages-user/pages/home-order/future.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/month-order.vue b/src/pages-user/pages/home-order/month-order.vue new file mode 100644 index 0000000..8f231ef --- /dev/null +++ b/src/pages-user/pages/home-order/month-order.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/refund-order.vue b/src/pages-user/pages/home-order/refund-order.vue new file mode 100644 index 0000000..0c755b5 --- /dev/null +++ b/src/pages-user/pages/home-order/refund-order.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/reservation.vue b/src/pages-user/pages/home-order/reservation.vue new file mode 100644 index 0000000..152c5cc --- /dev/null +++ b/src/pages-user/pages/home-order/reservation.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/today.vue b/src/pages-user/pages/home-order/today.vue new file mode 100644 index 0000000..232df6e --- /dev/null +++ b/src/pages-user/pages/home-order/today.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/home-order/yesterday.vue b/src/pages-user/pages/home-order/yesterday.vue new file mode 100644 index 0000000..01a20cb --- /dev/null +++ b/src/pages-user/pages/home-order/yesterday.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/income/add-bank.vue b/src/pages-user/pages/income/add-bank.vue new file mode 100644 index 0000000..ab41cf8 --- /dev/null +++ b/src/pages-user/pages/income/add-bank.vue @@ -0,0 +1,107 @@ + + + \ No newline at end of file diff --git a/src/pages-user/pages/income/bank-list.vue b/src/pages-user/pages/income/bank-list.vue new file mode 100644 index 0000000..d69e31d --- /dev/null +++ b/src/pages-user/pages/income/bank-list.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/pages-user/pages/income/index.vue b/src/pages-user/pages/income/index.vue new file mode 100644 index 0000000..69e477c --- /dev/null +++ b/src/pages-user/pages/income/index.vue @@ -0,0 +1,223 @@ + + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/income/record-detail.vue b/src/pages-user/pages/income/record-detail.vue new file mode 100644 index 0000000..3dd9eec --- /dev/null +++ b/src/pages-user/pages/income/record-detail.vue @@ -0,0 +1,88 @@ + + + \ No newline at end of file diff --git a/src/pages-user/pages/income/withdraw.vue b/src/pages-user/pages/income/withdraw.vue new file mode 100644 index 0000000..c1d42ea --- /dev/null +++ b/src/pages-user/pages/income/withdraw.vue @@ -0,0 +1,216 @@ + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/menu/add-detail.vue b/src/pages-user/pages/menu/add-detail.vue new file mode 100644 index 0000000..ccb48eb --- /dev/null +++ b/src/pages-user/pages/menu/add-detail.vue @@ -0,0 +1,425 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/menu/index.vue b/src/pages-user/pages/menu/index.vue new file mode 100644 index 0000000..c13c033 --- /dev/null +++ b/src/pages-user/pages/menu/index.vue @@ -0,0 +1,200 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/message/index.vue b/src/pages-user/pages/message/index.vue new file mode 100644 index 0000000..780bcad --- /dev/null +++ b/src/pages-user/pages/message/index.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/components/order-skeleton.vue b/src/pages-user/pages/order/components/order-skeleton.vue new file mode 100644 index 0000000..8f0f9a5 --- /dev/null +++ b/src/pages-user/pages/order/components/order-skeleton.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/components/price-detail/price-detail.vue b/src/pages-user/pages/order/components/price-detail/price-detail.vue new file mode 100644 index 0000000..c97dfc4 --- /dev/null +++ b/src/pages-user/pages/order/components/price-detail/price-detail.vue @@ -0,0 +1,69 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/components/refuse-popup/refuse-popup.vue b/src/pages-user/pages/order/components/refuse-popup/refuse-popup.vue new file mode 100644 index 0000000..d3a2f22 --- /dev/null +++ b/src/pages-user/pages/order/components/refuse-popup/refuse-popup.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/components/star-rating/star-rating.vue b/src/pages-user/pages/order/components/star-rating/star-rating.vue new file mode 100644 index 0000000..a3ff4cd --- /dev/null +++ b/src/pages-user/pages/order/components/star-rating/star-rating.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/components/start-delivery/start-delivery.vue b/src/pages-user/pages/order/components/start-delivery/start-delivery.vue new file mode 100644 index 0000000..71d6be1 --- /dev/null +++ b/src/pages-user/pages/order/components/start-delivery/start-delivery.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/delivered-order.vue b/src/pages-user/pages/order/delivered-order.vue new file mode 100644 index 0000000..e9fbf47 --- /dev/null +++ b/src/pages-user/pages/order/delivered-order.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/index.vue b/src/pages-user/pages/order/index.vue new file mode 100644 index 0000000..0da7100 --- /dev/null +++ b/src/pages-user/pages/order/index.vue @@ -0,0 +1,701 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/order/order-reviews.vue b/src/pages-user/pages/order/order-reviews.vue new file mode 100644 index 0000000..6f73b12 --- /dev/null +++ b/src/pages-user/pages/order/order-reviews.vue @@ -0,0 +1,125 @@ + + + + \ No newline at end of file diff --git a/src/pages-user/pages/pay-password/change/index.vue b/src/pages-user/pages/pay-password/change/index.vue new file mode 100644 index 0000000..4b05229 --- /dev/null +++ b/src/pages-user/pages/pay-password/change/index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/pages-user/pages/pay-password/forget/index.vue b/src/pages-user/pages/pay-password/forget/index.vue new file mode 100644 index 0000000..107444b --- /dev/null +++ b/src/pages-user/pages/pay-password/forget/index.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/pages-user/pages/pay-password/set/index.vue b/src/pages-user/pages/pay-password/set/index.vue new file mode 100644 index 0000000..5ab7cc6 --- /dev/null +++ b/src/pages-user/pages/pay-password/set/index.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/pages-user/pages/recipe/add-recipe.vue b/src/pages-user/pages/recipe/add-recipe.vue new file mode 100644 index 0000000..17cf709 --- /dev/null +++ b/src/pages-user/pages/recipe/add-recipe.vue @@ -0,0 +1,286 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/recipe/components/recipe-skeleton.vue b/src/pages-user/pages/recipe/components/recipe-skeleton.vue new file mode 100644 index 0000000..d47ccd0 --- /dev/null +++ b/src/pages-user/pages/recipe/components/recipe-skeleton.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/recipe/components/tabs-type.vue b/src/pages-user/pages/recipe/components/tabs-type.vue new file mode 100644 index 0000000..42ed8e9 --- /dev/null +++ b/src/pages-user/pages/recipe/components/tabs-type.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/pages-user/pages/recipe/detail.vue b/src/pages-user/pages/recipe/detail.vue new file mode 100644 index 0000000..c847c18 --- /dev/null +++ b/src/pages-user/pages/recipe/detail.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/src/pages-user/pages/recipe/index.vue b/src/pages-user/pages/recipe/index.vue new file mode 100644 index 0000000..fa36098 --- /dev/null +++ b/src/pages-user/pages/recipe/index.vue @@ -0,0 +1,167 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/sales-record/index.vue b/src/pages-user/pages/sales-record/index.vue new file mode 100644 index 0000000..a818ed0 --- /dev/null +++ b/src/pages-user/pages/sales-record/index.vue @@ -0,0 +1,194 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/scan-code/index.vue b/src/pages-user/pages/scan-code/index.vue new file mode 100644 index 0000000..00c9821 --- /dev/null +++ b/src/pages-user/pages/scan-code/index.vue @@ -0,0 +1,119 @@ + + + + diff --git a/src/pages-user/pages/search-address/index.vue b/src/pages-user/pages/search-address/index.vue new file mode 100644 index 0000000..283e27f --- /dev/null +++ b/src/pages-user/pages/search-address/index.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/src/pages-user/pages/select-credit-card/index.vue b/src/pages-user/pages/select-credit-card/index.vue new file mode 100644 index 0000000..dc4ab1f --- /dev/null +++ b/src/pages-user/pages/select-credit-card/index.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/pages-user/pages/setting/index.vue b/src/pages-user/pages/setting/index.vue new file mode 100644 index 0000000..92135d0 --- /dev/null +++ b/src/pages-user/pages/setting/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/pages-user/pages/store-management/components/hours.vue b/src/pages-user/pages/store-management/components/hours.vue new file mode 100644 index 0000000..6ffd734 --- /dev/null +++ b/src/pages-user/pages/store-management/components/hours.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/store-management/cropper-avatar.vue b/src/pages-user/pages/store-management/cropper-avatar.vue new file mode 100644 index 0000000..94c4407 --- /dev/null +++ b/src/pages-user/pages/store-management/cropper-avatar.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/pages-user/pages/store-management/index.vue b/src/pages-user/pages/store-management/index.vue new file mode 100644 index 0000000..1a8967e --- /dev/null +++ b/src/pages-user/pages/store-management/index.vue @@ -0,0 +1,682 @@ + + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/store-management/list.vue b/src/pages-user/pages/store-management/list.vue new file mode 100644 index 0000000..05fe2c9 --- /dev/null +++ b/src/pages-user/pages/store-management/list.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/store-management/scope.vue b/src/pages-user/pages/store-management/scope.vue new file mode 100644 index 0000000..1074600 --- /dev/null +++ b/src/pages-user/pages/store-management/scope.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/pages/store-settle-in/index.vue b/src/pages-user/pages/store-settle-in/index.vue new file mode 100644 index 0000000..992f151 --- /dev/null +++ b/src/pages-user/pages/store-settle-in/index.vue @@ -0,0 +1,638 @@ + + + diff --git a/src/pages-user/pages/store-settle-in/list.vue b/src/pages-user/pages/store-settle-in/list.vue new file mode 100644 index 0000000..f2c5788 --- /dev/null +++ b/src/pages-user/pages/store-settle-in/list.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/pages-user/service/index.ts b/src/pages-user/service/index.ts new file mode 100644 index 0000000..a68e787 --- /dev/null +++ b/src/pages-user/service/index.ts @@ -0,0 +1,17 @@ +import {http} from '@/utils/http' + + +// 获取州列表 +export const getStateListApi = () => http.post>('/app/continent/list') + +// 拒绝用户订单 +export const rejectUserOrderApi = (data: { + orderId: string +}) => http.post>('/app/merchantOrder/rejectOrder', data) + +// 获取字典列表信息 +export const getDictFineList = (data: Record) => + http.post('/app/dict/findList', data); + +// 删除优惠券 +export const deleteCouponApi = (id: string) => http.delete>(`/app/coupon/deleteCoupon/${id}`) diff --git a/src/pages-user/store/logic.ts b/src/pages-user/store/logic.ts new file mode 100644 index 0000000..e0378c1 --- /dev/null +++ b/src/pages-user/store/logic.ts @@ -0,0 +1,26 @@ +import { defineStore } from "pinia"; + +export const useLogicStore = defineStore('store-list-logic', () => { + const placesList = ref([]) + + const searchLoading = ref(false) + + const setPlacesList = (list: any) => { + if (Array.isArray(list)) { + placesList.value = list + } else { + console.error('setPlacesList: Expected an array, but received:', list); + } + } + + function clearPlacesList() { + placesList.value = [] + } + + return { + placesList, + searchLoading, + setPlacesList, + clearPlacesList, + } +}) diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..d87ed72 --- /dev/null +++ b/src/pages.json @@ -0,0 +1,217 @@ +{ + "easycom": { + "autoscan": true, + "custom": { + "^wd-(.*)": "wot-design-uni/components/wd-$1/wd-$1.vue" + } + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "", + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#ffffff", + "backgroundColor": "#F6F6F6", + "animationType": "fade-in", + "animationDuration": 100, + "app-plus": { + "scrollIndicator": "none" + } + }, + "tabBar": { + "color": "#999999", + "selectedColor": "#000000", + "backgroundColor": "#ffffff", + "borderStyle": "white", + "list": [ + { + "pagePath": "pages/home/index", + "text": "" + }, + { + "pagePath": "pages/order/index", + "text": "" + } + ] + }, + "pages": [ + { + "path": "pages/home/index", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/agreement/index", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom" + } + } + ], + "subPackages": [ + { + "root": "pages-login", + "pages": [ + { + "path": "pages/index" + }, + { + "path": "pages/sign-up/index" + }, + { + "path": "pages/login/index" + }, + { + "path": "pages/forget-password/index" + }, + { + "path": "pages/guide-page/welcome" + }, + { + "path": "pages/choose-language/index" + } + ] + }, + { + "root": "pages-user", + "pages": [ + { + "path": "pages/cooking-machine/index" + }, + { + "path": "pages/setting/index" + }, + { + "path": "pages/home-order/future" + }, + { + "path": "pages/home-order/today" + }, + { + "path": "pages/home-order/reservation" + }, + { + "path": "pages/home-order/yesterday" + }, + { + "path": "pages/home-order/month-order" + }, + { + "path": "pages/home-order/refund-order" + }, + { + "path": "pages/store-management/index" + }, + { + "path": "pages/store-management/list" + }, + { + "path": "pages/store-management/cropper-avatar" + }, + { + "path": "pages/store-management/scope" + }, + { + "path": "pages/store-settle-in/index" + }, + { + "path": "pages/store-settle-in/list" + }, + { + "path": "pages/complaints/index" + }, + { + "path": "pages/income/index" + }, + { + "path": "pages/income/record-detail" + }, + { + "path": "pages/income/withdraw" + }, + { + "path": "pages/income/add-bank" + }, + { + "path": "pages/income/bank-list" + }, + { + "path": "pages/sales-record/index" + }, + { + "path": "pages/recipe/index" + }, + { + "path": "pages/recipe/add-recipe" + }, + { + "path": "pages/recipe/detail", + "style": { + "app-plus": { + "softinputMode": "adjustResize" + } + } + }, + { + "path": "pages/coupons/index" + }, + { + "path": "pages/coupons/add-coupons" + }, + { + "path": "pages/coupons/add-new-coupons" + }, + { + "path": "pages/food/add-food" + }, + { + "path": "pages/food/add-item" + }, + { + "path": "pages/menu/index" + }, + { + "path": "pages/menu/add-detail" + }, + { + "path": "pages/order/index" + }, + { + "path": "pages/order/delivered-order" + }, + { + "path": "pages/order/order-reviews" + }, + { + "path": "pages/message/index" + }, + { + "path": "pages/scan-code/index" + }, + { + "layout": "none", + "path": "pages/search-address/index" + }, + { + "path": "pages/pay-password/set/index" + }, + { + "path": "pages/pay-password/change/index" + }, + { + "path": "pages/pay-password/forget/index" + }, + { + "path": "pages/select-credit-card/index" + }, + { + "layout": "none", + "path": "pages/add-card/index" + }, + { + "path": "pages/choose-paymethod/index" + } + ] + } + ] +} diff --git a/src/pages/agreement/index.vue b/src/pages/agreement/index.vue new file mode 100644 index 0000000..8a3a04f --- /dev/null +++ b/src/pages/agreement/index.vue @@ -0,0 +1,54 @@ + + + + + + diff --git a/src/pages/home/components/tabbar-home/components/home-skeleton.vue b/src/pages/home/components/tabbar-home/components/home-skeleton.vue new file mode 100644 index 0000000..31c4731 --- /dev/null +++ b/src/pages/home/components/tabbar-home/components/home-skeleton.vue @@ -0,0 +1,101 @@ + + + + + \ No newline at end of file diff --git a/src/pages/home/components/tabbar-home/components/store.vue b/src/pages/home/components/tabbar-home/components/store.vue new file mode 100644 index 0000000..5079138 --- /dev/null +++ b/src/pages/home/components/tabbar-home/components/store.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/src/pages/home/components/tabbar-home/tabbar-home.vue b/src/pages/home/components/tabbar-home/tabbar-home.vue new file mode 100644 index 0000000..b67bc16 --- /dev/null +++ b/src/pages/home/components/tabbar-home/tabbar-home.vue @@ -0,0 +1,423 @@ + + + + + diff --git a/src/pages/home/components/tabbar-menu/components/menu-swiper-list/menu-swiper-list.vue b/src/pages/home/components/tabbar-menu/components/menu-swiper-list/menu-swiper-list.vue new file mode 100644 index 0000000..b8b4ed7 --- /dev/null +++ b/src/pages/home/components/tabbar-menu/components/menu-swiper-list/menu-swiper-list.vue @@ -0,0 +1,483 @@ + + + + + \ No newline at end of file diff --git a/src/pages/home/components/tabbar-menu/components/menu.vue b/src/pages/home/components/tabbar-menu/components/menu.vue new file mode 100644 index 0000000..2b493eb --- /dev/null +++ b/src/pages/home/components/tabbar-menu/components/menu.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/src/pages/home/components/tabbar-menu/tabbar-menu.vue b/src/pages/home/components/tabbar-menu/tabbar-menu.vue new file mode 100644 index 0000000..054e809 --- /dev/null +++ b/src/pages/home/components/tabbar-menu/tabbar-menu.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/pages/home/components/tabbar-mine/components/choose-language/choose-language.vue b/src/pages/home/components/tabbar-mine/components/choose-language/choose-language.vue new file mode 100644 index 0000000..164eb73 --- /dev/null +++ b/src/pages/home/components/tabbar-mine/components/choose-language/choose-language.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/pages/home/components/tabbar-mine/components/log-out/log-out.vue b/src/pages/home/components/tabbar-mine/components/log-out/log-out.vue new file mode 100644 index 0000000..d4b4a42 --- /dev/null +++ b/src/pages/home/components/tabbar-mine/components/log-out/log-out.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/pages/home/components/tabbar-mine/tabbar-mine.vue b/src/pages/home/components/tabbar-mine/tabbar-mine.vue new file mode 100644 index 0000000..a7c55af --- /dev/null +++ b/src/pages/home/components/tabbar-mine/tabbar-mine.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/pages/home/components/tabbar-order/components/order-swiper-list/order-swiper-list.vue b/src/pages/home/components/tabbar-order/components/order-swiper-list/order-swiper-list.vue new file mode 100644 index 0000000..0bc2bf5 --- /dev/null +++ b/src/pages/home/components/tabbar-order/components/order-swiper-list/order-swiper-list.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/pages/home/components/tabbar-order/tabbar-order.vue b/src/pages/home/components/tabbar-order/tabbar-order.vue new file mode 100644 index 0000000..e179045 --- /dev/null +++ b/src/pages/home/components/tabbar-order/tabbar-order.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/pages/home/index.vue b/src/pages/home/index.vue new file mode 100644 index 0000000..22dcee8 --- /dev/null +++ b/src/pages/home/index.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/src/plugin/index.ts b/src/plugin/index.ts new file mode 100644 index 0000000..b8d5d56 --- /dev/null +++ b/src/plugin/index.ts @@ -0,0 +1,57 @@ +import dayjs from 'dayjs' +import customParseFormat from 'dayjs/plugin/customParseFormat' +import isSameOrAfter from 'dayjs/plugin/isSameOrAfter' +import localeData from 'dayjs/plugin/localeData' +import duration from 'dayjs/plugin/duration' +import isBetween from 'dayjs/plugin/isBetween' +import weekday from 'dayjs/plugin/weekday' +import updateLocale from 'dayjs/plugin/updateLocale' +import En from 'dayjs/locale/en' +import ZhCn from 'dayjs/locale/zh-cn' + +// 引入英文语言包 +import {Locale} from 'wot-design-uni' +import enUS from 'wot-design-uni/locale/lang/en-US' +import zhCN from 'wot-design-uni/locale/lang/zh-CN' + +import type {App} from 'vue' + +dayjs.extend(customParseFormat) +dayjs.extend(isSameOrAfter) +dayjs.extend(localeData) +dayjs.extend(duration) +dayjs.extend(isBetween) +dayjs.extend(weekday) +dayjs.extend(updateLocale) + + +dayjs.updateLocale('en', { + weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] +}) + + +dayjs.updateLocale('zh-cn', { + weekdaysShort: ["日", "一", "二", "三", "四", "五", "六"], + weekdays: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] +}); + + +export function setWotDesignLocale() { + const localeLanguages = uni.getLocale() + localeLanguages === 'zh-Hans' && Locale.use('zh-CN', zhCN) + localeLanguages === 'en' && Locale.use('en-US', enUS) +} + +export function setDayjsLocale() { + const localeLanguages = uni.getLocale() + console.log('localeLanguages', localeLanguages) + localeLanguages === 'zh-Hans' && dayjs.locale(ZhCn) + localeLanguages === 'en' && dayjs.locale(En) +} + +export function installAppPlugins(app: App) { + app.provide('dayjs', dayjs) +} + +export {dayjs} diff --git a/src/service/agreement.ts b/src/service/agreement.ts new file mode 100644 index 0000000..a2facee --- /dev/null +++ b/src/service/agreement.ts @@ -0,0 +1,60 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 获取协议内容 GET /app/agreement/getAgreement/${param0} */ +export async function appAgreementGetAgreementCodeGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppAgreementGetAgreementcodeGetParams; + options?: CustomRequestOptions; +}) { + const { code: param0, ...queryParams } = params; + + return request(`/app/agreement/getAgreement/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 获取协议 POST /app/agreement/getByCode */ +export async function appAgreementGetByCodePost({ + body, + options, +}: { + body: API.GetAgreementBo; + options?: CustomRequestOptions; +}) { + return request('/app/agreement/getByCode', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取协议内容 POST /app/agreement/getContentByCode */ +export async function appAgreementGetContentByCodePost({ + body, + options, +}: { + body: API.GetAgreementBo; + options?: CustomRequestOptions; +}) { + return request('/app/agreement/getContentByCode', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/appointmentTime.ts b/src/service/appointmentTime.ts new file mode 100644 index 0000000..aecafe1 --- /dev/null +++ b/src/service/appointmentTime.ts @@ -0,0 +1,153 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询用户的预约时间 POST /app/appointmentTime/queryAppointmentTime */ +export async function appAppointmentTimeQueryAppointmentTimePost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request( + '/app/appointmentTime/queryAppointmentTime', + { + method: 'POST', + ...(options || {}), + } + ); +} + +/** 修改用户的预约时间 POST /app/appointmentTime/updateAppointmentTime */ +export async function appAppointmentTimeUpdateAppointmentTimePost({ + body, + options, +}: { + body: API.AppointmentTimeBo; + options?: CustomRequestOptions; +}) { + return request('/app/appointmentTime/updateAppointmentTime', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改用户预约时间 PUT /xjpmj/appointmentTime */ +export async function xjpmjAppointmentTimePut({ + body, + options, +}: { + body: API.AppointmentTimeBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/appointmentTime', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增用户预约时间 POST /xjpmj/appointmentTime */ +export async function xjpmjAppointmentTimePost({ + body, + options, +}: { + body: API.AppointmentTimeBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/appointmentTime', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取用户预约时间详细信息 GET /xjpmj/appointmentTime/${param0} */ +export async function xjpmjAppointmentTimeIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAppointmentTimeidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/appointmentTime/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除用户预约时间 DELETE /xjpmj/appointmentTime/${param0} */ +export async function xjpmjAppointmentTimeIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAppointmentTimeidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/appointmentTime/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出用户预约时间列表 POST /xjpmj/appointmentTime/export */ +export async function xjpmjAppointmentTimeExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAppointmentTimeExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/appointmentTime/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询用户预约时间列表 GET /xjpmj/appointmentTime/list */ +export async function xjpmjAppointmentTimeListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAppointmentTimeListGetParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/appointmentTime/list', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/src/service/automaticCookingMachine.ts b/src/service/automaticCookingMachine.ts new file mode 100644 index 0000000..c871e83 --- /dev/null +++ b/src/service/automaticCookingMachine.ts @@ -0,0 +1,72 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询炒菜机详情 GET /app/automaticCookingMachine/detail */ +export async function appAutomaticCookingMachineDetailGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request( + '/app/automaticCookingMachine/detail', + { + method: 'GET', + ...(options || {}), + } + ); +} + +/** 炒菜机报名 POST /app/automaticCookingMachine/registration */ +export async function appAutomaticCookingMachineRegistrationPost({ + body, + options, +}: { + body: API.AutomaticCookingMachineRegistrationBo; + options?: CustomRequestOptions; +}) { + return request('/app/automaticCookingMachine/registration', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改炒菜机 PUT /xjpmj/automaticCookingMachine */ +export async function xjpmjAutomaticCookingMachinePut({ + body, + options, +}: { + body: API.AutomaticCookingMachineBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/automaticCookingMachine', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取炒菜机详细信息 GET /xjpmj/automaticCookingMachine/getInfo */ +export async function xjpmjAutomaticCookingMachineGetInfoGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/automaticCookingMachine/getInfo', + { + method: 'GET', + ...(options || {}), + } + ); +} diff --git a/src/service/automaticCookingMachineRegistration.ts b/src/service/automaticCookingMachineRegistration.ts new file mode 100644 index 0000000..3e4a1ef --- /dev/null +++ b/src/service/automaticCookingMachineRegistration.ts @@ -0,0 +1,93 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改炒菜机报名 PUT /xjpmj/automaticCookingMachineRegistration */ +export async function xjpmjAutomaticCookingMachineRegistrationPut({ + body, + options, +}: { + body: API.AutomaticCookingMachineRegistrationBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/automaticCookingMachineRegistration', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取炒菜机报名详细信息 GET /xjpmj/automaticCookingMachineRegistration/${param0} */ +export async function xjpmjAutomaticCookingMachineRegistrationIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAutomaticCookingMachineRegistrationidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request( + `/xjpmj/automaticCookingMachineRegistration/${param0}`, + { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + } + ); +} + +/** 删除炒菜机报名 DELETE /xjpmj/automaticCookingMachineRegistration/${param0} */ +export async function xjpmjAutomaticCookingMachineRegistrationIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAutomaticCookingMachineRegistrationidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request( + `/xjpmj/automaticCookingMachineRegistration/${param0}`, + { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + } + ); +} + +/** 查询炒菜机报名列表 POST /xjpmj/automaticCookingMachineRegistration/list */ +export async function xjpmjAutomaticCookingMachineRegistrationListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjAutomaticCookingMachineRegistrationListPostParams; + body: API.AutomaticCookingMachineRegistrationBo; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/automaticCookingMachineRegistration/list', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/collect.ts b/src/service/collect.ts new file mode 100644 index 0000000..2863b6b --- /dev/null +++ b/src/service/collect.ts @@ -0,0 +1,48 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 收藏 POST /app/collect/collect */ +export async function appCollectCollectPost({ + body, + options, +}: { + body: API.UserCollectBo; + options?: CustomRequestOptions; +}) { + return request('/app/collect/collect', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 收藏列表 POST /app/collect/list */ +export async function appCollectListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCollectListPostParams; + body: API.UserCollectBo; + options?: CustomRequestOptions; +}) { + return request('/app/collect/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/comment.ts b/src/service/comment.ts new file mode 100644 index 0000000..7b6a9d5 --- /dev/null +++ b/src/service/comment.ts @@ -0,0 +1,90 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 评论列表 POST /app/comment/commentList */ +export async function appCommentCommentListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCommentCommentListPostParams; + body: API.CommentPageBo; + options?: CustomRequestOptions; +}) { + return request('/app/comment/commentList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} + +/** 删除评论 DELETE /app/comment/deleteComment/${param0} */ +export async function appCommentDeleteCommentIdDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCommentDeleteCommentidDeleteParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/app/comment/deleteComment/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 发布评论/回复 POST /app/comment/publishComment */ +export async function appCommentPublishCommentPost({ + body, + options, +}: { + body: API.CommentBo; + options?: CustomRequestOptions; +}) { + return request('/app/comment/publishComment', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 回复列表 POST /app/comment/replyList */ +export async function appCommentReplyListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCommentReplyListPostParams; + body: API.ReplyPageBo; + options?: CustomRequestOptions; +}) { + return request('/app/comment/replyList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/coupon.ts b/src/service/coupon.ts new file mode 100644 index 0000000..7a2f7f6 --- /dev/null +++ b/src/service/coupon.ts @@ -0,0 +1,222 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type {CustomRequestOptions} from '@/http/types'; + +import * as API from './types'; + +/** 新增优惠券 POST /app/coupon/addCoupon */ +export async function appCouponAddCouponPost({ + body, + options, + }: { + body: API.CouponBo; + options?: CustomRequestOptions; +}) { + return request('/app/coupon/addCoupon', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 复制兑换码(指定数量) POST /app/coupon/copyCouponCode */ +export async function appCouponCopyCouponCodePost({ + body, + options, + }: { + body: API.CouponBo; + options?: CustomRequestOptions; +}) { + return request('/app/coupon/copyCouponCode', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 创建优惠券需付款金额 如果为0 则免费添加 POST /app/coupon/couponCost */ +export async function appCouponCouponCostPost({ + options, + }: { + options?: CustomRequestOptions; +}) { + return request('/app/coupon/couponCost', { + method: 'POST', + ...(options || {}), + }); +} + +/** 删除优惠券 DELETE /app/coupon/deleteCoupon/${param0} */ +export async function appCouponDeleteCouponIdDelete({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCouponDeleteCouponidDeleteParams; + options?: CustomRequestOptions; +}) { + const {id: param0, ...queryParams} = params; + + return request(`/app/coupon/deleteCoupon/${param0}`, { + method: 'DELETE', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 兑换码生成优惠券 POST /app/coupon/exchangeCoupon */ +export async function appCouponExchangeCouponPost({ + body, + options, + }: { + body: API.CouponCodeBo; + options?: CustomRequestOptions; +}) { + return request('/app/coupon/exchangeCoupon', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 商家优惠券列表 POST /app/coupon/merchantCouponList */ +export async function appCouponMerchantCouponListPost({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCouponMerchantCouponListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/coupon/merchantCouponList', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 用户优惠券列表 POST /app/coupon/userCouponList */ +export async function appCouponUserCouponListPost({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppCouponUserCouponListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/coupon/userCouponList', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 新增优惠券主 POST /xjpmj/coupon */ +export async function xjpmjCouponPost({ + body, + options, + }: { + body: API.CouponBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/coupon', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取优惠券主详细信息 GET /xjpmj/coupon/${param0} */ +export async function xjpmjCouponIdGet({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjCouponidGetParams; + options?: CustomRequestOptions; +}) { + const {id: param0, ...queryParams} = params; + + return request(`/xjpmj/coupon/${param0}`, { + method: 'GET', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 删除优惠券主 DELETE /xjpmj/coupon/${param0} */ +export async function xjpmjCouponIdsDelete({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjCouponidsDeleteParams; + options?: CustomRequestOptions; +}) { + const {ids: param0, ...queryParams} = params; + + return request(`/xjpmj/coupon/${param0}`, { + method: 'DELETE', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 复制兑换码(指定数量) POST /xjpmj/coupon/copyCouponCode */ +export async function xjpmjCouponCopyCouponCodePost({ + body, + options, + }: { + body: API.CouponBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/coupon/copyCouponCode', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询优惠券主列表 POST /xjpmj/coupon/list */ +export async function xjpmjCouponListPost({ + params, + body, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjCouponListPostParams; + body: API.CouponBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/coupon/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/customerService.ts b/src/service/customerService.ts new file mode 100644 index 0000000..2b47649 --- /dev/null +++ b/src/service/customerService.ts @@ -0,0 +1,48 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 获取筛选条件 GET /app/customerService/getInfo */ +export async function appCustomerServiceGetInfoGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/customerService/getInfo', { + method: 'GET', + ...(options || {}), + }); +} + +/** 修改客服中心 PUT /xjpmj/customerService */ +export async function xjpmjCustomerServicePut({ + body, + options, +}: { + body: API.CustomerServiceBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/customerService', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取客服中心详细信息 GET /xjpmj/customerService/getInfo */ +export async function xjpmjCustomerServiceGetInfoGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/xjpmj/customerService/getInfo', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/displayEnumLabel.ts b/src/service/displayEnumLabel.ts new file mode 100644 index 0000000..76f196a --- /dev/null +++ b/src/service/displayEnumLabel.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +// @ts-ignore +import * as API from './types'; + +export function displayTypeEnum(field: API.TypeEnum) { + return {}[field]; +} + +export function displayTypeEnum2(field: API.TypeEnum2) { + return {}[field]; +} diff --git a/src/service/featuredMerchant.ts b/src/service/featuredMerchant.ts new file mode 100644 index 0000000..2e77632 --- /dev/null +++ b/src/service/featuredMerchant.ts @@ -0,0 +1,105 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改精选商家 PUT /xjpmj/featuredMerchant */ +export async function xjpmjFeaturedMerchantPut({ + body, + options, +}: { + body: API.FeaturedMerchantBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/featuredMerchant', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增精选商家 POST /xjpmj/featuredMerchant */ +export async function xjpmjFeaturedMerchantPost({ + body, + options, +}: { + body: API.FeaturedMerchantBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/featuredMerchant', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取精选商家详细信息 GET /xjpmj/featuredMerchant/${param0} */ +export async function xjpmjFeaturedMerchantIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeaturedMerchantidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/featuredMerchant/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除精选商家 DELETE /xjpmj/featuredMerchant/${param0} */ +export async function xjpmjFeaturedMerchantIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeaturedMerchantidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/featuredMerchant/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 查询精选商家列表 POST /xjpmj/featuredMerchant/list */ +export async function xjpmjFeaturedMerchantListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeaturedMerchantListPostParams; + body: API.FeaturedMerchantBo; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/featuredMerchant/list', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/feedback.ts b/src/service/feedback.ts new file mode 100644 index 0000000..1f0014b --- /dev/null +++ b/src/service/feedback.ts @@ -0,0 +1,78 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 添加意见反馈 POST /app/feedback/add */ +export async function appFeedbackAddPost({ + body, + options, +}: { + body: API.FeedbackBo; + options?: CustomRequestOptions; +}) { + return request('/app/feedback/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取意见反馈详细信息 GET /xjpmj/feedback/${param0} */ +export async function xjpmjFeedbackIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeedbackidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/feedback/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除意见反馈 DELETE /xjpmj/feedback/${param0} */ +export async function xjpmjFeedbackIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeedbackidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/feedback/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 查询意见反馈列表 GET /xjpmj/feedback/list */ +export async function xjpmjFeedbackListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjFeedbackListGetParams; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/feedback/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/src/service/filtersConfig.ts b/src/service/filtersConfig.ts new file mode 100644 index 0000000..c97b87f --- /dev/null +++ b/src/service/filtersConfig.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 获取筛选条件 GET /app/filtersConfig/getFilters */ +export async function appFiltersConfigGetFiltersGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/filtersConfig/getFilters', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/helpCenter.ts b/src/service/helpCenter.ts new file mode 100644 index 0000000..0097475 --- /dev/null +++ b/src/service/helpCenter.ts @@ -0,0 +1,108 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 帮助中心列表 GET /app/helpCenter/list */ +export async function appHelpCenterListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/helpCenter/list', { + method: 'GET', + ...(options || {}), + }); +} + +/** 修改帮助中心 PUT /xjpmj/helpCenter */ +export async function xjpmjHelpCenterPut({ + body, + options, +}: { + body: API.HelpCenterBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/helpCenter', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增帮助中心 POST /xjpmj/helpCenter */ +export async function xjpmjHelpCenterPost({ + body, + options, +}: { + body: API.HelpCenterBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/helpCenter', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取帮助中心详细信息 GET /xjpmj/helpCenter/${param0} */ +export async function xjpmjHelpCenterIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjHelpCenteridGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/helpCenter/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除帮助中心 DELETE /xjpmj/helpCenter/${param0} */ +export async function xjpmjHelpCenterIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjHelpCenteridsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/helpCenter/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 查询帮助中心列表 GET /xjpmj/helpCenter/list */ +export async function xjpmjHelpCenterListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjHelpCenterListGetParams; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/helpCenter/list', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/src/service/hotSearchWord.ts b/src/service/hotSearchWord.ts new file mode 100644 index 0000000..fd28351 --- /dev/null +++ b/src/service/hotSearchWord.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询热门搜索词列表 POST /app/hotSearchWord/list */ +export async function appHotSearchWordListPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/hotSearchWord/list', { + method: 'POST', + ...(options || {}), + }); +} diff --git a/src/service/index.ts b/src/service/index.ts new file mode 100644 index 0000000..eb3b872 --- /dev/null +++ b/src/service/index.ts @@ -0,0 +1,44 @@ +/* eslint-disable */ +// @ts-ignore +export * from './types'; +export * from './displayEnumLabel'; + +export * from './filtersConfig'; +export * from './merchant'; +export * from './agreement'; +export * from './version'; +export * from './preference'; +export * from './message'; +export * from './user'; +export * from './merchantCategory'; +export * from './merchantLabel'; +export * from './login'; +export * from './hotSearchWord'; +export * from './comment'; +export * from './collect'; +export * from './helpCenter'; +export * from './shopSettlement'; +export * from './appointmentTime'; +export * from './recipeCategory'; +export * from './merchantRecipe'; +export * from './merchantDish'; +export * from './merchantMenu'; +export * from './membership'; +export * from './merchantCart'; +export * from './coupon'; +export * from './search'; +export * from './merchantOrder'; +export * from './featuredMerchant'; +export * from './feedback'; +export * from './membershipConfig'; +export * from './customerService'; +export * from './userBalanceDetail'; +export * from './withdrawalRecord'; +export * from './index'; +export * from './sms'; +export * from './userAddress'; +export * from './automaticCookingMachineRegistration'; +export * from './automaticCookingMachine'; +export * from './userCoupon'; +export * from './marketingActivity'; +export * from './marketActivity'; diff --git a/src/service/login.ts b/src/service/login.ts new file mode 100644 index 0000000..64f2b82 --- /dev/null +++ b/src/service/login.ts @@ -0,0 +1,24 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 登录 POST /app/login */ +export async function appLoginPost({ + body, + options, +}: { + body: API.LoginBo; + options?: CustomRequestOptions; +}) { + return request('/app/login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/marketActivity.ts b/src/service/marketActivity.ts new file mode 100644 index 0000000..14fa9af --- /dev/null +++ b/src/service/marketActivity.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 获取列表 POST /app/marketActivity/list */ +export async function appMarketActivityListPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/marketActivity/list', { + method: 'POST', + ...(options || {}), + }); +} diff --git a/src/service/marketingActivity.ts b/src/service/marketingActivity.ts new file mode 100644 index 0000000..c7b9678 --- /dev/null +++ b/src/service/marketingActivity.ts @@ -0,0 +1,123 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改营销活动 PUT /xjpmj/marketingActivity */ +export async function xjpmjMarketingActivityPut({ + body, + options, +}: { + body: API.MarketingActivityBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/marketingActivity', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增营销活动 POST /xjpmj/marketingActivity */ +export async function xjpmjMarketingActivityPost({ + body, + options, +}: { + body: API.MarketingActivityBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/marketingActivity', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取营销活动详细信息 GET /xjpmj/marketingActivity/${param0} */ +export async function xjpmjMarketingActivityIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMarketingActivityidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request( + `/xjpmj/marketingActivity/${param0}`, + { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + } + ); +} + +/** 删除营销活动 DELETE /xjpmj/marketingActivity/${param0} */ +export async function xjpmjMarketingActivityIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMarketingActivityidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/marketingActivity/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出营销活动列表 POST /xjpmj/marketingActivity/export */ +export async function xjpmjMarketingActivityExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMarketingActivityExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/marketingActivity/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询营销活动列表 GET /xjpmj/marketingActivity/list */ +export async function xjpmjMarketingActivityListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMarketingActivityListGetParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/marketingActivity/list', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/src/service/membership.ts b/src/service/membership.ts new file mode 100644 index 0000000..4d3bb62 --- /dev/null +++ b/src/service/membership.ts @@ -0,0 +1,51 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询会员配置项 GET /app/membership/config */ +export async function appMembershipConfigGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/membership/config', { + method: 'GET', + ...(options || {}), + }); +} + +/** 充值会员 POST /app/membership/recharge */ +export async function appMembershipRechargePost({ + body, + options, +}: { + body: API.RechargeBo; + options?: CustomRequestOptions; +}) { + return request('/app/membership/recharge', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询会员充值项 GET /app/membership/rechargeItem */ +export async function appMembershipRechargeItemGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request( + '/app/membership/rechargeItem', + { + method: 'GET', + ...(options || {}), + } + ); +} diff --git a/src/service/membershipConfig.ts b/src/service/membershipConfig.ts new file mode 100644 index 0000000..4925b92 --- /dev/null +++ b/src/service/membershipConfig.ts @@ -0,0 +1,36 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改会员配置 PUT /xjpmj/membershipConfig */ +export async function xjpmjMembershipConfigPut({ + body, + options, +}: { + body: API.MembershipConfigBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/membershipConfig', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取会员配置详细信息 GET /xjpmj/membershipConfig/getInfo */ +export async function xjpmjMembershipConfigGetInfoGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/xjpmj/membershipConfig/getInfo', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/merchant.ts b/src/service/merchant.ts new file mode 100644 index 0000000..3101328 --- /dev/null +++ b/src/service/merchant.ts @@ -0,0 +1,345 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type {CustomRequestOptions} from '@/http/types'; + +import * as API from './types'; + +/** 查询商家详情 GET /app/merchant/detail/${param0} */ +export async function appMerchantDetailMerchantIdGet({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantDetailmerchantIdGetParams; + options?: CustomRequestOptions; +}) { + const {merchantId: param0, ...queryParams} = params; + + return request(`/app/merchant/detail/${param0}`, { + method: 'GET', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 商户编辑个人信息 POST /app/merchant/edit */ +export async function appMerchantEditPost({ + body, + options, + }: { + body: API.MerchantBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/edit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询精选商家列表(首页) POST /app/merchant/featuredList */ +export async function appMerchantFeaturedListPost({ + body, + options, + }: { + body: API.LatLogBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/featuredList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询商户用户的第一个入驻信息 GET /app/merchant/getFirstShopSettled */ +export async function appMerchantGetFirstShopSettledGet({ + options, + }: { + options?: CustomRequestOptions; +}) { + return request('/app/merchant/getFirstShopSettled', { + method: 'GET', + ...(options || {}), + }); +} + +/** 获取切换商户信息 GET /app/merchant/getLoginMerchant */ +export async function appMerchantGetLoginMerchantGet({ + options, + }: { + options?: CustomRequestOptions; +}) { + return request('/app/merchant/getLoginMerchant', { + method: 'GET', + ...(options || {}), + }); +} + +/** 查询商户首页数据 GET /app/merchant/indexData */ +export async function appMerchantIndexDataGet({ + body, + options, + }: { + body: API.TimeZoneBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/indexData', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询商户首页数据 POST /app/merchant/indexData */ +export async function appMerchantIndexDataPost({ + body, + options, + }: { + body: API.TimeZoneBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/indexData', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询附近商家列表(首页) POST /app/merchant/nearbyList */ +export async function appMerchantNearbyListPost({ + body, + options, + }: { + body: API.LatLogBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/nearbyList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询推荐商家列表(首页) POST /app/merchant/recommendList */ +export async function appMerchantRecommendListPost({ + params, + body, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantRecommendListPostParams; + body: API.RecommendMerchantBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchant/recommendList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} + +/** 切换商户 GET /app/merchant/switch/${param0} */ +export async function appMerchantSwitchMerchantIdGet({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantSwitchmerchantIdGetParams; + options?: CustomRequestOptions; +}) { + const {merchantId: param0, ...queryParams} = params; + + return request(`/app/merchant/switch/${param0}`, { + method: 'GET', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 查询当前用户可切换的商户 GET /app/merchant/switch/list */ +export async function appMerchantSwitchListGet({ + options, + }: { + options?: CustomRequestOptions; +}) { + return request('/app/merchant/switch/list', { + method: 'GET', + ...(options || {}), + }); +} + +/** 修改商家 PUT /xjpmj/merchant */ +export async function xjpmjMerchantPut({ + body, + options, + }: { + body: API.MerchantBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchant', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增商家 POST /xjpmj/merchant */ +export async function xjpmjMerchantPost({ + body, + options, + }: { + body: API.MerchantBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchant', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取商家详细信息 GET /xjpmj/merchant/${param0} */ +export async function xjpmjMerchantIdGet({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantidGetParams; + options?: CustomRequestOptions; +}) { + const {id: param0, ...queryParams} = params; + + return request(`/xjpmj/merchant/${param0}`, { + method: 'GET', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 删除商家 DELETE /xjpmj/merchant/${param0} */ +export async function xjpmjMerchantIdsDelete({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantidsDeleteParams; + options?: CustomRequestOptions; +}) { + const {ids: param0, ...queryParams} = params; + + return request(`/xjpmj/merchant/${param0}`, { + method: 'DELETE', + params: {...queryParams}, + ...(options || {}), + }); +} + +/** 导出商家列表 POST /xjpmj/merchant/export */ +export async function xjpmjMerchantExportPost({ + params, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchant/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询商家列表 POST /xjpmj/merchant/list */ +export async function xjpmjMerchantListPost({ + params, + body, + options, + }: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantListPostParams; + body: API.MerchantListBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchant/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} + +/** 设置商家标签 POST /xjpmj/merchant/setMerchantLabel */ +export async function xjpmjMerchantSetMerchantLabelPost({ + body, + options, + }: { + body: API.MerchantBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchant/setMerchantLabel', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改用户余额 POST /xjpmj/merchant/updateBalance */ +export async function xjpmjMerchantUpdateBalancePost({ + body, + options, + }: { + body: API.UpdateUserAmount; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchant/updateBalance', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/merchantCart.ts b/src/service/merchantCart.ts new file mode 100644 index 0000000..cee5cee --- /dev/null +++ b/src/service/merchantCart.ts @@ -0,0 +1,132 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 加入购物车 POST /app/merchantCart/addCart */ +export async function appMerchantCartAddCartPost({ + body, + options, +}: { + body: API.MerchantCartBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantCart/addCart', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 加入购物车 POST /app/merchantCart/addCartById */ +export async function appMerchantCartAddCartByIdPost({ + body, + options, +}: { + body: API.MerchantCartBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantCart/addCartById', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 计算购物车内会员可以节省多少费用 POST /app/merchantCart/calculateSavings */ +export async function appMerchantCartCalculateSavingsPost({ + body, + options, +}: { + body: API.AppMerchantCartCalculateSavingsPostBody; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantCart/calculateSavings', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** 删除某个商户的购物车 POST /app/merchantCart/deleteByMerchantId */ +export async function appMerchantCartDeleteByMerchantIdPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantCartDeleteByMerchantIdPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantCart/deleteByMerchantId', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 删除购物车 POST /app/merchantCart/deleteCart */ +export async function appMerchantCartDeleteCartPost({ + body, + options, +}: { + body: API.DeleteCartBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantCart/deleteCart', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询某个商户下的购物车列表 POST /app/merchantCart/listByMerchantId */ +export async function appMerchantCartListByMerchantIdPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantCartListByMerchantIdPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantCart/listByMerchantId', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询购物车的商户列表 根据最新的一个购物车加入时间来排序 POST /app/merchantCart/listMerchant */ +export async function appMerchantCartListMerchantPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/merchantCart/listMerchant', { + method: 'POST', + ...(options || {}), + }); +} diff --git a/src/service/merchantCategory.ts b/src/service/merchantCategory.ts new file mode 100644 index 0000000..f3990a0 --- /dev/null +++ b/src/service/merchantCategory.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询所有商家分类数据 GET /app/merchantCategory/list */ +export async function appMerchantCategoryListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/merchantCategory/list', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/merchantDish.ts b/src/service/merchantDish.ts new file mode 100644 index 0000000..a3c1155 --- /dev/null +++ b/src/service/merchantDish.ts @@ -0,0 +1,264 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 新增菜品 POST /app/merchantDish/addDish */ +export async function appMerchantDishAddDishPost({ + body, + options, +}: { + body: API.MerchantDishBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/addDish', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 增加菜品浏览量 POST /app/merchantDish/addViewCount */ +export async function appMerchantDishAddViewCountPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantDishAddViewCountPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/addViewCount', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 菜品详情 GET /app/merchantDish/detail */ +export async function appMerchantDishDetailGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantDishDetailGetParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 编辑菜品 POST /app/merchantDish/editDish */ +export async function appMerchantDishEditDishPost({ + body, + options, +}: { + body: API.MerchantDishBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/editDish', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改排序 POST /app/merchantDish/editSort */ +export async function appMerchantDishEditSortPost({ + body, + options, +}: { + body: API.AppMerchantDishEditSortPostBody; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/editSort', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 商家查询自己的菜品列表 POST /app/merchantDish/list */ +export async function appMerchantDishListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantDishListPostParams; + body: API.MerchantDishBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} + +/** 查询附近菜品列表 POST /app/merchantDish/nearbyList */ +export async function appMerchantDishNearbyListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantDishNearbyListPostParams; + body: API.LatLogBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantDish/nearbyList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} + +/** 批量删除菜品 POST /app/merchantDish/remove */ +export async function appMerchantDishRemovePost({ + body, + options, +}: { + body: API.AppMerchantDishRemovePostBody; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/remove', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询菜品销售记录 POST /app/merchantDish/saleRecord */ +export async function appMerchantDishSaleRecordPost({ + body, + options, +}: { + body: API.TimeSearchBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantDish/saleRecord', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取商家菜品详细信息 GET /xjpmj/merchantDish/${param0} */ +export async function xjpmjMerchantDishIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantDishidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantDish/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除商家菜品 DELETE /xjpmj/merchantDish/${param0} */ +export async function xjpmjMerchantDishIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantDishidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantDish/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出商家菜品列表 POST /xjpmj/merchantDish/export */ +export async function xjpmjMerchantDishExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantDishExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchantDish/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询商家菜品列表 POST /xjpmj/merchantDish/list */ +export async function xjpmjMerchantDishListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantDishListPostParams; + body: API.MerchantDishBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchantDish/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/merchantLabel.ts b/src/service/merchantLabel.ts new file mode 100644 index 0000000..31b50ae --- /dev/null +++ b/src/service/merchantLabel.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询所有商家分类数据 GET /app/merchantLabel/list */ +export async function appMerchantLabelListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/merchantLabel/list', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/merchantMenu.ts b/src/service/merchantMenu.ts new file mode 100644 index 0000000..e45fa63 --- /dev/null +++ b/src/service/merchantMenu.ts @@ -0,0 +1,153 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 新增菜谱 POST /app/merchantMenu/add */ +export async function appMerchantMenuAddPost({ + body, + options, +}: { + body: API.MerchantMenuBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改排序 POST /app/merchantMenu/editSort */ +export async function appMerchantMenuEditSortPost({ + body, + options, +}: { + body: API.AppMerchantMenuEditSortPostBody; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/editSort', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询菜单详情 POST /app/merchantMenu/menuDetail */ +export async function appMerchantMenuMenuDetailPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantMenuMenuDetailPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/menuDetail', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 商家查询菜单列表 POST /app/merchantMenu/menuListByMerchant */ +export async function appMerchantMenuMenuListByMerchantPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantMenuMenuListByMerchantPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantMenu/menuListByMerchant', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 用户查询菜单列表 POST /app/merchantMenu/menuListByUser */ +export async function appMerchantMenuMenuListByUserPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantMenuMenuListByUserPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/menuListByUser', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 查询菜单详情 POST /app/merchantMenu/recipeDetail */ +export async function appMerchantMenuRecipeDetailPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantMenuRecipeDetailPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/recipeDetail', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 批量删除菜单 POST /app/merchantMenu/remove */ +export async function appMerchantMenuRemovePost({ + body, + options, +}: { + body: API.AppMerchantMenuRemovePostBody; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/remove', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改菜单 POST /app/merchantMenu/update */ +export async function appMerchantMenuUpdatePost({ + body, + options, +}: { + body: API.MerchantMenuBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantMenu/update', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/merchantOrder.ts b/src/service/merchantOrder.ts new file mode 100644 index 0000000..bc77080 --- /dev/null +++ b/src/service/merchantOrder.ts @@ -0,0 +1,465 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 商家同意退款 POST /app/merchantOrder/agreeRefund */ +export async function appMerchantOrderAgreeRefundPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderAgreeRefundPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/agreeRefund', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 商家点击已送达 POST /app/merchantOrder/arrivedOrder */ +export async function appMerchantOrderArrivedOrderPost({ + body, + options, +}: { + body: API.ArrivedOrderBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/arrivedOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 购物车下单 - 计算价格 POST /app/merchantOrder/calculatePriceCart */ +export async function appMerchantOrderCalculatePriceCartPost({ + body, + options, +}: { + body: API.CalculatePriceCartBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantOrder/calculatePriceCart', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** 商品下单 - 计算价格 POST /app/merchantOrder/calculatePriceDish */ +export async function appMerchantOrderCalculatePriceDishPost({ + body, + options, +}: { + body: API.CalculatePriceDishBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantOrder/calculatePriceDish', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** 用户取消订单(用户申请退款) POST /app/merchantOrder/cancelOrder */ +export async function appMerchantOrderCancelOrderPost({ + body, + options, +}: { + body: API.CancelOrderBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/cancelOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询可用优惠券 GET /app/merchantOrder/canUseCouponList/${param0} */ +export async function appMerchantOrderCanUseCouponListMerchantIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderCanUseCouponListmerchantIdGetParams; + options?: CustomRequestOptions; +}) { + const { merchantId: param0, ...queryParams } = params; + + return request( + `/app/merchantOrder/canUseCouponList/${param0}`, + { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + } + ); +} + +/** 购物车下单 POST /app/merchantOrder/createOrderCart */ +export async function appMerchantOrderCreateOrderCartPost({ + body, + options, +}: { + body: API.CreateOrderCartBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/createOrderCart', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 菜品下单 POST /app/merchantOrder/createOrderDish */ +export async function appMerchantOrderCreateOrderDishPost({ + body, + options, +}: { + body: API.CreateOrderDishBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/createOrderDish', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 商家点击配送订单 POST /app/merchantOrder/deliverOrder */ +export async function appMerchantOrderDeliverOrderPost({ + body, + options, +}: { + body: API.DeliverOrderBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/deliverOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询商家最新配送订单的五个配送员信息,根据创建时间排序排列 POST /app/merchantOrder/deliveryList */ +export async function appMerchantOrderDeliveryListPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/deliveryList', { + method: 'POST', + ...(options || {}), + }); +} + +/** 订单详情 POST /app/merchantOrder/detail */ +export async function appMerchantOrderDetailPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderDetailPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/detail', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 菜品列表(根据预约时间查询) POST /app/merchantOrder/dishList */ +export async function appMerchantOrderDishListPost({ + body, + options, +}: { + body: API.TimeSearchBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantOrder/dishList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** 评价订单 POST /app/merchantOrder/evaluateOrder */ +export async function appMerchantOrderEvaluateOrderPost({ + body, + options, +}: { + body: API.EvaluateOrderBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/evaluateOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 订单列表 POST /app/merchantOrder/orderList */ +export async function appMerchantOrderOrderListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderOrderListPostParams; + body: API.MerchantOrderListBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantOrder/orderList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} + +/** 订单付款 POST /app/merchantOrder/payOrder */ +export async function appMerchantOrderPayOrderPost({ + body, + options, +}: { + body: API.PayOrderBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/payOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 商家接单 POST /app/merchantOrder/receiveOrder */ +export async function appMerchantOrderReceiveOrderPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderReceiveOrderPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/receiveOrder', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 商家拒绝退款 POST /app/merchantOrder/rejectRefund */ +export async function appMerchantOrderRejectRefundPost({ + body, + options, +}: { + body: API.RejectRefundBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/rejectRefund', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 用户自取时,商家核销订单 POST /app/merchantOrder/writeOff */ +export async function appMerchantOrderWriteOffPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantOrderWriteOffPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantOrder/writeOff', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 修改商家订单 PUT /xjpmj/merchantOrder */ +export async function xjpmjMerchantOrderPut({ + body, + options, +}: { + body: API.MerchantOrderBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchantOrder', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增商家订单 POST /xjpmj/merchantOrder */ +export async function xjpmjMerchantOrderPost({ + body, + options, +}: { + body: API.MerchantOrderBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/merchantOrder', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取商家订单详细信息 GET /xjpmj/merchantOrder/${param0} */ +export async function xjpmjMerchantOrderIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantOrderidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantOrder/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除商家订单 DELETE /xjpmj/merchantOrder/${param0} */ +export async function xjpmjMerchantOrderIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantOrderidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantOrder/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出商家订单列表 POST /xjpmj/merchantOrder/export */ +export async function xjpmjMerchantOrderExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantOrderExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchantOrder/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询商家订单列表 POST /xjpmj/merchantOrder/list */ +export async function xjpmjMerchantOrderListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantOrderListPostParams; + body: API.MerchantOrderListBackendBo; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchantOrder/list', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/merchantRecipe.ts b/src/service/merchantRecipe.ts new file mode 100644 index 0000000..40aad89 --- /dev/null +++ b/src/service/merchantRecipe.ts @@ -0,0 +1,234 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 新增菜谱 POST /app/merchantRecipe/add */ +export async function appMerchantRecipeAddPost({ + body, + options, +}: { + body: API.MerchantRecipeBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantRecipe/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 增加菜谱浏览量 POST /app/merchantRecipe/addViewCount */ +export async function appMerchantRecipeAddViewCountPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantRecipeAddViewCountPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantRecipe/addViewCount', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 查询菜谱详情 POST /app/merchantRecipe/recipeDetail */ +export async function appMerchantRecipeRecipeDetailPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantRecipeRecipeDetailPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/merchantRecipe/recipeDetail', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 商家查询菜谱列表 POST /app/merchantRecipe/recipeList */ +export async function appMerchantRecipeRecipeListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantRecipeRecipeListPostParams; + body: API.SearchRecipeBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantRecipe/recipeList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} + +/** 批量删除菜谱 POST /app/merchantRecipe/remove */ +export async function appMerchantRecipeRemovePost({ + body, + options, +}: { + body: API.AppMerchantRecipeRemovePostBody; + options?: CustomRequestOptions; +}) { + return request('/app/merchantRecipe/remove', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 用户端搜索菜谱 POST /app/merchantRecipe/searchRecipe */ +export async function appMerchantRecipeSearchRecipePost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMerchantRecipeSearchRecipePostParams; + body: API.SearchRecipeBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/merchantRecipe/searchRecipe', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} + +/** 修改菜谱 POST /app/merchantRecipe/update */ +export async function appMerchantRecipeUpdatePost({ + body, + options, +}: { + body: API.MerchantRecipeBo; + options?: CustomRequestOptions; +}) { + return request('/app/merchantRecipe/update', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取商家菜谱详细信息 GET /xjpmj/merchantRecipe/${param0} */ +export async function xjpmjMerchantRecipeIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantRecipeidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantRecipe/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除商家菜谱 DELETE /xjpmj/merchantRecipe/${param0} */ +export async function xjpmjMerchantRecipeIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantRecipeidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/merchantRecipe/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出商家菜谱列表 POST /xjpmj/merchantRecipe/export */ +export async function xjpmjMerchantRecipeExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantRecipeExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchantRecipe/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询商家菜谱列表 POST /xjpmj/merchantRecipe/list */ +export async function xjpmjMerchantRecipeListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjMerchantRecipeListPostParams; + body: API.MerchantRecipeBo; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/merchantRecipe/list', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/message.ts b/src/service/message.ts new file mode 100644 index 0000000..bf01c6a --- /dev/null +++ b/src/service/message.ts @@ -0,0 +1,66 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 消息列表 POST /app/message/list */ +export async function appMessageListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppMessageListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/message/list', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 消息设置为已读 POST /app/message/read */ +export async function appMessageReadPost({ + body, + options, +}: { + body: API.AppMessageReadPostBody; + options?: CustomRequestOptions; +}) { + return request('/app/message/read', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 消息全部设置为已读 POST /app/message/readAll */ +export async function appMessageReadAllPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/message/readAll', { + method: 'POST', + ...(options || {}), + }); +} + +/** 获取未读消息数量 POST /app/message/unreadCount */ +export async function appMessageUnreadCountPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/message/unreadCount', { + method: 'POST', + ...(options || {}), + }); +} diff --git a/src/service/preference.ts b/src/service/preference.ts new file mode 100644 index 0000000..4951015 --- /dev/null +++ b/src/service/preference.ts @@ -0,0 +1,36 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 用户选择喜好 POST /app/preference/choose */ +export async function appPreferenceChoosePost({ + body, + options, +}: { + body: API.AppPreferenceChoosePostBody; + options?: CustomRequestOptions; +}) { + return request('/app/preference/choose', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询喜好列表 GET /app/preference/list */ +export async function appPreferenceListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/preference/list', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/service/recipeCategory.ts b/src/service/recipeCategory.ts new file mode 100644 index 0000000..eea6d8c --- /dev/null +++ b/src/service/recipeCategory.ts @@ -0,0 +1,147 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询所有菜谱分类数据 GET /app/recipeCategory/list */ +export async function appRecipeCategoryListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/recipeCategory/list', { + method: 'GET', + ...(options || {}), + }); +} + +/** 商家查询自己有菜谱数据的分类 GET /app/recipeCategory/listOnHasRecipe */ +export async function appRecipeCategoryListOnHasRecipeGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request( + '/app/recipeCategory/listOnHasRecipe', + { + method: 'GET', + ...(options || {}), + } + ); +} + +/** 修改菜谱分类 PUT /xjpmj/recipeCategory */ +export async function xjpmjRecipeCategoryPut({ + body, + options, +}: { + body: API.RecipeCategoryBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/recipeCategory', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增菜谱分类 POST /xjpmj/recipeCategory */ +export async function xjpmjRecipeCategoryPost({ + body, + options, +}: { + body: API.RecipeCategoryBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/recipeCategory', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取菜谱分类详细信息 GET /xjpmj/recipeCategory/${param0} */ +export async function xjpmjRecipeCategoryIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjRecipeCategoryidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/recipeCategory/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除菜谱分类 DELETE /xjpmj/recipeCategory/${param0} */ +export async function xjpmjRecipeCategoryIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjRecipeCategoryidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/recipeCategory/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出菜谱分类列表 POST /xjpmj/recipeCategory/export */ +export async function xjpmjRecipeCategoryExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjRecipeCategoryExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/recipeCategory/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询菜谱分类列表 GET /xjpmj/recipeCategory/list */ +export async function xjpmjRecipeCategoryListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjRecipeCategoryListGetParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/recipeCategory/list', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/src/service/search.ts b/src/service/search.ts new file mode 100644 index 0000000..a091b80 --- /dev/null +++ b/src/service/search.ts @@ -0,0 +1,96 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 商家内搜索菜品 POST /app/search/dishInMerchant */ +export async function appSearchDishInMerchantPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppSearchDishInMerchantPostParams; + body: API.SearchMerchantDishBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/search/dishInMerchant', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} + +/** 查询热门搜索词列表 POST /app/search/list */ +export async function appSearchListPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/search/list', { + method: 'POST', + ...(options || {}), + }); +} + +/** 搜索美食 POST /app/search/merchantByDish */ +export async function appSearchMerchantByDishPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppSearchMerchantByDishPostParams; + body: API.RecommendMerchantBo; + options?: CustomRequestOptions; +}) { + return request('/app/search/merchantByDish', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} + +/** 搜索菜谱 POST /app/search/searchRecipe */ +export async function appSearchSearchRecipePost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppSearchSearchRecipePostParams; + body: API.SearchRecipeBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/search/searchRecipe', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/shopSettlement.ts b/src/service/shopSettlement.ts new file mode 100644 index 0000000..5eda3fd --- /dev/null +++ b/src/service/shopSettlement.ts @@ -0,0 +1,138 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 申请入驻店铺 POST /app/shopSettlement/apply */ +export async function appShopSettlementApplyPost({ + body, + options, +}: { + body: API.ShopSettlementBo; + options?: CustomRequestOptions; +}) { + return request('/app/shopSettlement/apply', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询入驻详情 GET /app/shopSettlement/detail */ +export async function appShopSettlementDetailGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppShopSettlementDetailGetParams; + options?: CustomRequestOptions; +}) { + return request('/app/shopSettlement/detail', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 查询入驻列表 GET /app/shopSettlement/list */ +export async function appShopSettlementListGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/shopSettlement/list', { + method: 'GET', + ...(options || {}), + }); +} + +/** 获取店铺入驻详细信息 GET /xjpmj/shopSettlement/${param0} */ +export async function xjpmjShopSettlementIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjShopSettlementidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/shopSettlement/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 审核店铺入驻结果 POST /xjpmj/shopSettlement/audit */ +export async function xjpmjShopSettlementAuditPost({ + body, + options, +}: { + body: API.ShopSettlementBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/shopSettlement/audit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 导出店铺入驻列表 POST /xjpmj/shopSettlement/export */ +export async function xjpmjShopSettlementExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjShopSettlementExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/shopSettlement/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询店铺入驻列表 POST /xjpmj/shopSettlement/list */ +export async function xjpmjShopSettlementListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjShopSettlementListPostParams; + body: API.ShopSettlementBo; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/shopSettlement/list', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + } + ); +} diff --git a/src/service/sms.ts b/src/service/sms.ts new file mode 100644 index 0000000..bd2d4d6 --- /dev/null +++ b/src/service/sms.ts @@ -0,0 +1,24 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 发送验证码 POST /app/sms/send */ +export async function appSmsSendPost({ + body, + options, +}: { + body: API.SendSmsBo; + options?: CustomRequestOptions; +}) { + return request('/app/sms/send', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/types.ts b/src/service/types.ts new file mode 100644 index 0000000..1629bc8 --- /dev/null +++ b/src/service/types.ts @@ -0,0 +1,7456 @@ +/* eslint-disable */ +// @ts-ignore + +export type AddBankBo = + { + /** 银行名称 */ + 'bankName'?: string; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type AgreementVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 协议标题 */ + 'title'?: string; + /** 协议内容 */ + 'content'?: string; + /** 协议内容(中) */ + 'contentZh'?: string; + /** 协议内容(英) */ + 'contentEn'?: string; + /** 协议编码值 */ + 'code'?: string; + 'delFlag'?: number; + } + + +export type AmountStatisticsItemVo = + { + /** 累计 金额/收益 */ + 'cumulativeAmount'?: number; + /** 今日金额 */ + 'todayAmount'?: number; + /** 昨日金额 */ + 'yesterdayAmount'?: number; + /** 本月 收益/提现金额 */ + 'monthAmount'?: number; + /** 上月 收益/提现金额 */ + 'lastMonthAmount'?: number; + /** 环比 */ + 'annulus'?: number; + } + + +export type AmountStatisticsVo = + { + /** 用户订单支付金额统计 */ + 'merchantOrderAmountStatistics'?: AmountStatisticsItemVo; + /** 用户订单支付金额统计 */ + 'merchantIncomeAmountStatistics'?: AmountStatisticsItemVo; + /** 用户订单支付金额统计 */ + 'platformServiceFeeAmountStatistics'?: AmountStatisticsItemVo; + /** 用户订单支付金额统计 */ + 'payoutsAmountStatistics'?: AmountStatisticsItemVo; + /** 待审核的商家入驻数量 */ + 'shopAuditNumber'?: number; + } + + +export type AppAgreementGetAgreementcodeGetParams = + { + 'code': string; + } + + +export type AppCollectListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppCommentCommentListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppCommentDeleteCommentidDeleteParams = + { + 'id': number; + } + + +export type AppCommentReplyListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppCouponDeleteCouponidDeleteParams = + { + 'id': number; + } + + +export type AppCouponMerchantCouponListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppCouponUserCouponListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type ApplyWithdrawalBo = + { + /** 提现金额 */ + 'withdrawalAmount'?: number; + /** 银行卡 id */ + 'bankId'?: number; + /** 提现手续费, 将计算的手续费结果传过来, 校验手续费是否发生变化 */ + 'withdrawalFee'?: number; + /** 提现密码 */ + 'pwd'?: string; + } + + +export type AppMerchantCartCalculateSavingsPostBody = number[]; + +export type AppMerchantCartDeleteByMerchantIdPostParams = + { + 'merchantId': number; + } + + +export type AppMerchantCartListByMerchantIdPostParams = + { + 'merchantId': number; + } + + +export type AppMerchantDetailmerchantIdGetParams = + { + 'merchantId': number; + } + + +export type AppMerchantDishAddViewCountPostParams = + { + 'dishId': number; + } + + +export type AppMerchantDishDetailGetParams = + { + 'dishId': number; + } + + +export type AppMerchantDishEditSortPostBody = MerchantDishBo[]; + +export type AppMerchantDishListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantDishNearbyListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantDishRemovePostBody = number[]; + +export type AppMerchantMenuEditSortPostBody = MerchantMenuBo[]; + +export type AppMerchantMenuMenuDetailPostParams = + { + 'recipeId': number; + } + + +export type AppMerchantMenuMenuListByMerchantPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantMenuMenuListByUserPostParams = + { + 'merchantId': number; + } + + +export type AppMerchantMenuRecipeDetailPostParams = + { + 'recipeId': number; + } + + +export type AppMerchantMenuRemovePostBody = number[]; + +export type AppMerchantOrderAgreeRefundPostParams = + { + 'orderId'?: number; + } + + +export type AppMerchantOrderCanUseCouponListmerchantIdGetParams = + { + 'merchantId': number; + } + + +export type AppMerchantOrderDetailPostParams = + { + 'orderId'?: number; + } + + +export type AppMerchantOrderOrderListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantOrderReceiveOrderPostParams = + { + 'orderId'?: number; + } + + +export type AppMerchantOrderWriteOffPostParams = + { + 'orderNo'?: string; + } + + +export type AppMerchantRecipeAddViewCountPostParams = + { + 'recipeId': number; + } + + +export type AppMerchantRecipeRecipeDetailPostParams = + { + 'recipeId': number; + } + + +export type AppMerchantRecipeRecipeListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantRecipeRemovePostBody = number[]; + +export type AppMerchantRecipeSearchRecipePostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantRecommendListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMerchantSwitchmerchantIdGetParams = + { + 'merchantId': string; + } + + +export type AppMessageListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppMessageReadPostBody = number[]; + +export type AppointmentTimeBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 预约开始时间 */ + 'startTime'?: string; + /** 预约结束时间 */ + 'endTime'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type AppointmentTimeBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId': number; + /** 用户类型 */ + 'userPort': number; + /** 预约开始时间 */ + 'startTime': string; + /** 预约结束时间 */ + 'endTime': string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type AppointmentTimeBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 用户ID */ + 'userId': number; + /** 用户类型 */ + 'userPort': number; + /** 预约开始时间 */ + 'startTime': string; + /** 预约结束时间 */ + 'endTime': string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type AppointmentTimeVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 预约开始时间 */ + 'startTime'?: string; + /** 预约结束时间 */ + 'endTime'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type AppPreferenceChoosePostBody = number[]; + +export type AppSearchDishInMerchantPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppSearchMerchantByDishPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppSearchSearchRecipePostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppShopSettlementDetailGetParams = + { + 'id'?: number; + } + + +export type AppUserAddressListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppUserAddressRemovePostBody = number[]; + +export type AppUserBankListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppUserBo = + { + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + 'sex'?: string; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机验证码 */ + 'captcha'?: string; + /** 用户端口:1-用户端(默认值) 2-门店端 */ + 'userPort'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 新支付密码 */ + 'newPayPwd'?: string; + /** 旧支付密码 */ + 'oldPayPwd'?: string; + /** 新登录密码 */ + 'newLoginPwd'?: string; + /** 旧登录密码 */ + 'oldLoginPwd'?: string; + /** 用户昵称 */ + 'nickName'?: string; + /** 头像 */ + 'avatar'?: string; + /** 邀请码 */ + 'invitationCode'?: string; + /** cid */ + 'cid'?: string; + /** 谷歌id */ + 'googleId'?: string; + /** uuid */ + 'uuid'?: string; + } + + +export type AppUserCardBo = + { + /** 卡号 */ + 'cardNumber'?: string; + /** 卡号唯一标识 */ + 'cardId'?: string; + /** 是否默认:1-是 2-否 */ + 'isDefault'?: number; + /** 删除卡时必传 */ + 'id'?: number; + } + + +export type AppUserCardListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppUserUserBalanceDetailBalanceDetailListPostParams = + { + /** 用户 id */ + 'userId'?: number; + /** 开始时间 */ + 'createBeginTime'?: number; + /** 结束时间 */ + 'createEndTime'?: number; + /** 收入类型 1-增加金额 2-减少金额 */ + 'changeType'?: number; + /** 明细类型 */ + 'balanceTypeList'?: string; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppUserUserInviteInviteListPostParams = + { + 'type': number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppUserWithdrawalListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type AppVersionVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 版本号 */ + 'versionNo'?: string; + /** 是否强制:1-强制 2-不强制 */ + 'isForce'?: number; + /** 版本地址 */ + 'url'?: string; + /** 设备类型:1-安卓 2-ios */ + 'appType'?: number; + /** 更新内容 */ + 'content'?: string; + /** 标题 */ + 'title'?: string; + /** 1 用户端 2 门店端 */ + 'port'?: number; + } + + +export type ArrivedOrderBo = + { + /** 订单id */ + 'orderId'?: number; + /** 送达图片 */ + 'deliveryPhotos'?: string; + } + + +export type AuditBo = + { + /** 1-审核中 2-审核成功 3-审核失败 */ + 'status'?: number; + /** 失败原因 */ + 'failReason'?: string; + /** 打款凭证 */ + 'images'?: string; + /** 审核id */ + 'id'?: number; + } + + +export type AutomaticCookingMachineBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 租户号 */ + 'id': number; + /** 删除标识;1 正常 2 删除 3 禁用 */ + 'delFlag'?: number; + /** 展示图 */ + 'showImage'?: string; + /** 标题 */ + 'titleZh'?: string; + /** 标题 */ + 'titleEn'?: string; + /** 详情 */ + 'detailZh'?: string; + /** 详情 */ + 'detailEn'?: string; + /** 介绍 */ + 'instructionsZh'?: string; + /** 介绍 */ + 'instructionsEn'?: string; + /** 销量 */ + 'sales'?: number; + } + + +export type AutomaticCookingMachineRegistrationBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 租户号 */ + 'id'?: number; + /** 删除标识;1 正常 2 删除 3 禁用 */ + 'delFlag'?: number; + /** 炒菜机id */ + 'automaticCookingMachineId'?: number; + 'userId'?: number; + 'userPort'?: number; + /** 姓名 */ + 'name'?: string; + /** 手机号 */ + 'phone'?: string; + /** 备注 */ + 'remark'?: string; + /** 是否已联系 1 否 2 是 */ + 'hasContact'?: number; + } + + +export type AutomaticCookingMachineRegistrationBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 租户号 */ + 'id': number; + /** 删除标识;1 正常 2 删除 3 禁用 */ + 'delFlag'?: number; + /** 炒菜机id */ + 'automaticCookingMachineId'?: number; + 'userId'?: number; + 'userPort'?: number; + /** 姓名 */ + 'name'?: string; + /** 手机号 */ + 'phone'?: string; + /** 备注 */ + 'remark'?: string; + /** 是否已联系 1 否 2 是 */ + 'hasContact'?: number; + } + + +export type AutomaticCookingMachineRegistrationVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 租户号 */ + 'id'?: number; + /** 删除标识;1 正常 2 删除 3 禁用 */ + 'delFlag'?: number; + /** 炒菜机id */ + 'automaticCookingMachineId'?: number; + 'userId'?: number; + 'userPort'?: number; + /** 姓名 */ + 'name'?: string; + /** 手机号 */ + 'phone'?: string; + /** 备注 */ + 'remark'?: string; + /** 是否已联系 1 否 2 是 */ + 'hasContact'?: number; + } + + +export type AutomaticCookingMachineVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 租户号 */ + 'id'?: number; + /** 删除标识;1 正常 2 删除 3 禁用 */ + 'delFlag'?: number; + /** 展示图 */ + 'showImage'?: string; + /** 展示图Url */ + 'showImageUrl'?: string; + /** 标题 */ + 'titleZh'?: string; + /** 标题 */ + 'titleEn'?: string; + /** 详情 */ + 'detailZh'?: string; + /** 详情 */ + 'detailEn'?: string; + /** 介绍 */ + 'instructionsZh'?: string; + /** 介绍 */ + 'instructionsEn'?: string; + /** 销量 */ + 'sales'?: number; + } + + +export type BankVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 银行名称 */ + 'bankName'?: string; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type BindEmailBo = + { + /** 新手机号 */ + 'newEmail'?: string; + /** 旧手机号 */ + 'oldEmail'?: string; + /** 验证码 */ + 'code'?: string; + } + + +export type BindPhoneBo = + { + /** 新手机号 */ + 'newPhone'?: string; + /** 旧手机号 */ + 'oldPhone'?: string; + /** 验证码 */ + 'code'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 用户类型 */ + 'userPort'?: number; + } + + +export type BlockBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键id */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 发起拉黑动作的用户id */ + 'userId'?: number; + /** 被拉黑的用户id */ + 'beingBlockUserId'?: number; + } + + +export type CalculatePriceCartBo = + { + /** 购物车id列表 */ + 'cartIds'?: number[]; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 优惠券id */ + 'couponId'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type CalculatePriceCartVo = + { + /** 小费金额 */ + 'tip'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: number; + /** 配送费 */ + 'deliveryFee'?: number; + /** 税费 */ + 'tax'?: number; + /** 菜品原价 */ + 'originalAmount'?: number; + /** 按照商家的折扣,菜品实际价格 */ + 'actualAmountByMerchant'?: number; + /** 菜品实际应支付价 */ + 'actualAmount'?: number; + /** 最终用户实付金额 */ + 'paidAmount'?: number; + /** 优惠券id */ + 'couponId'?: number; + /** 优惠券优惠金额 */ + 'couponDiscount'?: number; + /** 总重量(磅) */ + 'totalWeight'?: number; + /** 菜品重量(不包含配菜) */ + 'dishWeight'?: number; + /** 配菜重量 */ + 'sideDishWeight'?: number; + /** 打包盒重量 */ + 'packagingWeight'?: number; + /** 是否满足最低起送价价 */ + 'isMeetMinPrice'?: boolean; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + /** 购物车列表 */ + 'merchantCartVoList'?: null; + } + + +export type CalculatePriceDishBo = + { + /** 菜品id */ + 'dishId'?: number; + /** 配菜id */ + 'sideDishId'?: number; + /** 购买数量 */ + 'buyNum'?: number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 优惠券id */ + 'couponId'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + } + + +export type CalculatePriceDishVo = + { + 'merchantDishVo'?: MerchantDishVo; + /** 菜品实付价格(包括主菜和配菜) */ + 'actualPrice'?: number; + /** 菜品会员价格(包括主菜和配菜) */ + 'memberPrice'?: number; + /** 配菜信息 */ + 'merchantSideDishVo'?: MerchantSideDishVo; + /** 小费金额 */ + 'tip'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: number; + /** 税费 */ + 'tax'?: number; + /** 菜品实际应支付价 */ + 'actualAmount'?: number; + /** 按照商家的折扣,菜品实际价格 */ + 'actualAmountByMerchant'?: number; + /** 最终实付金额 */ + 'paidAmount'?: number; + /** 配送费 */ + 'deliveryFee'?: number; + /** 优惠券优惠金额 */ + 'couponDiscount'?: number; + /** 优惠券id */ + 'couponId'?: number; + /** 商品原价 */ + 'originalAmount'?: number; + /** 是否满足最低起拍价 */ + 'isMeetMinPrice'?: boolean; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + /** 总重量(磅) */ + 'totalWeight'?: number; + /** 菜品重量(不包含配菜) */ + 'dishWeight'?: number; + /** 配菜重量 */ + 'sideDishWeight'?: number; + /** 打包盒重量 */ + 'packagingWeight'?: number; + } + + +export type CalculateSavingsVo = + { + /** 节省费用 */ + 'savings'?: number; + /** 总费用 */ + 'totalPayPrice'?: number; + /** 购物车总数量 */ + 'totalQuantity'?: number; + } + + +export type CancelOrderBo = + { + /** 订单id */ + 'orderId'?: number; + /** 取消原因 */ + 'cancelReason'?: string; + /** 来源 非传参,请忽略 1 app调用 2 定时器调用 */ + 'source'?: number; + } + + +export type CommentBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 评论用户ID */ + 'userId'?: number; + /** 评论用户类型(1-普通用户 2-商家用户) */ + 'userPort'?: number; + /** 评论对象ID */ + 'targetId'?: number; + /** 评论对象类型(1-菜谱 2-菜品 3-配菜) */ + 'targetType'?: number; + /** 顶级评论ID(对主体的直接评论) */ + 'topId'?: number; + /** 上级评论ID */ + 'parentId'?: number; + /** 上级评论用户ID */ + 'parentUserId'?: number; + /** 上级评论用户类型(1-普通用户 2-商家用户) */ + 'parentUserPort'?: number; + /** 评论内容 */ + 'content'?: string; + /** 图片URL(多图用逗号分隔) */ + 'images'?: string; + /** 点赞数 */ + 'likeCount'?: number; + /** 回复数量 */ + 'commentCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type CommentPageBo = + { + /** 评论对象id */ + 'targetId'?: number; + /** 评论对象类型 */ + 'targetType'?: string; + } + + +export type CommentVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 评论用户ID */ + 'userId'?: number; + /** 评论用户类型(1-普通用户 2-商家用户) */ + 'userPort'?: number; + /** 评论对象ID */ + 'targetId'?: number; + /** 评论对象类型(1-菜谱 2-菜品 3-配菜) */ + 'targetType'?: number; + /** 顶级评论ID(对主体的直接评论) */ + 'topId'?: number; + /** 上级评论ID */ + 'parentId'?: number; + /** 上级评论用户ID */ + 'parentUserId'?: number; + /** 上级评论用户类型(1-普通用户 2-商家用户) */ + 'parentUserPort'?: number; + /** 评论内容 */ + 'content'?: string; + /** 图片URL(多图用逗号分隔) */ + 'images'?: string; + /** 点赞数 */ + 'likeCount'?: number; + /** 回复数量 */ + 'commentCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 上级用户信息 */ + 'userVo'?: UserVo; + /** 上级用户信息 */ + 'parentUserVo'?: UserVo; + /** childList 中使用 是否是回复 1 不是 2 是 */ + 'isReply'?: number; + /** 是否自己发布的评论 */ + 'isSelf'?: boolean; + 'childList'?: CommentVo[]; + } + + +export type ComputeAmountFeeBo = + { + /** 提现金额 */ + 'withdrawalAmount'?: number; + } + + +export type ComputeAmountFeeVo = + { + /** 到账金额 */ + 'receiveAmount'?: number; + /** 提现手续费 */ + 'withdrawalFee'?: number; + } + + +export type CouponBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + 'id'?: number; + /** 中文名称 */ + 'nameZh'?: string; + /** 英文名称 */ + 'nameEn'?: string; + /** 1-折扣券, 2-满减券 */ + 'couponType'?: number; + /** 优惠值 */ + 'discountValue'?: number; + /** 最低消费额度 */ + 'minAmount'?: number; + /** 1-平台发放, 2-商家发放 */ + 'issuerType'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 1-直接领取, 2-兑换码 */ + 'distributionType'?: number; + /** 有效期开始时间 */ + 'validStart'?: number; + /** 有效期结束时间 */ + 'validEnd'?: number; + /** 总数量 */ + 'totalQuantity'?: number; + /** 是否有效 1否 2 是 免费优惠券创建即有效;付费优惠券支付后有效 */ + 'isValid'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 充值金额 */ + 'cardId'?: string; + /** 支付方式 1 stripe支付 2 余额支付 */ + 'payMethod'?: number; + /** 支付密码 */ + 'payPassword'?: string; + } + + +export type CouponBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + 'id'?: number; + /** 中文名称 */ + 'nameZh': string; + /** 英文名称 */ + 'nameEn'?: string; + /** 1-折扣券, 2-满减券 */ + 'couponType': number; + /** 优惠值 */ + 'discountValue': number; + /** 最低消费额度 */ + 'minAmount': number; + /** 1-平台发放, 2-商家发放 */ + 'issuerType': number; + /** 商家ID */ + 'merchantId'?: number; + /** 1-直接领取, 2-兑换码 */ + 'distributionType': number; + /** 有效期开始时间 */ + 'validStart'?: number; + /** 有效期结束时间 */ + 'validEnd'?: number; + /** 总数量 */ + 'totalQuantity': number; + /** 是否有效 1否 2 是 免费优惠券创建即有效;付费优惠券支付后有效 */ + 'isValid'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 支付方式 1 stripe支付 2 余额支付 */ + 'payMethod'?: number; + /** 支付密码 */ + 'payPassword'?: string; + } + + +export type CouponCodeBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + 'id'?: number; + /** 优惠券ID */ + 'couponId'?: number; + /** 兑换码值 */ + 'couponCode'?: string; + /** 是否已兑换 1 否 2 是 */ + 'hasUse'?: number; + /** 兑换用户 */ + 'userId'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type CouponVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + 'id'?: number; + /** 中文名称 */ + 'nameZh'?: string; + /** 英文名称 */ + 'nameEn'?: string; + /** 名称 */ + 'name'?: string; + /** 1-折扣券, 2-满减券 */ + 'couponType'?: number; + /** 优惠值 */ + 'discountValue'?: number; + /** 最低消费额度 */ + 'minAmount'?: number; + /** 1-平台发放, 2-商家发放 */ + 'issuerType'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 1-直接领取, 2-兑换码 */ + 'distributionType'?: number; + /** 有效期开始时间 */ + 'validStart'?: number; + /** 有效期结束时间 */ + 'validEnd'?: number; + /** 总数量 */ + 'totalQuantity'?: number; + /** 是否有效 1否 2 是 免费优惠券创建即有效;付费优惠券支付后有效 */ + 'isValid'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 已兑换兑换码数量 */ + 'exchangedQuantity'?: number; + /** 已使用数量 */ + 'usedQuantity'?: number; + } + + +export type CreateOrderCartBo = + { + /** 购物车id列表 */ + 'cartIds'?: number[]; + /** 预约时间- 开始 */ + 'startScheduledTime'?: number; + /** 预约时间- 结束 */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType'?: number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 优惠券id */ + 'couponId'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 配送地址id */ + 'addressId'?: number; + /** 订单备注 */ + 'orderRemark'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type CreateOrderDishBo = + { + /** 菜品id */ + 'dishId'?: number; + /** 配菜id */ + 'sideDishId'?: number; + /** 购买数量 */ + 'buyNum'?: number; + /** 预约时间- 开始 */ + 'startScheduledTime'?: number; + /** 预约时间- 结束 */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType'?: number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 优惠券id */ + 'couponId'?: number; + /** 小费比例 */ + 'tipDiscount'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 配送地址id */ + 'addressId'?: number; + /** 订单备注 */ + 'orderRemark'?: string; + } + + +export type CustomerServiceBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 客服电话 */ + 'servicePhone': string; + /** 工作时间(中文) */ + 'workingHoursZh': string; + /** 工作时间(英文) */ + 'workingHoursEn': string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type CustomerServiceVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 客服电话 */ + 'servicePhone'?: string; + /** 工作时间(中文) */ + 'workingHoursZh'?: string; + /** 工作时间(英文) */ + 'workingHoursEn'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type DeleteCartBo = + { + /** 购物车id */ + 'id'?: number; + /** 删除数量 */ + 'count'?: number; + } + + +export type DeliverOrderBo = + { + /** 订单id */ + 'orderId'?: number; + /** 配送员手机号 */ + 'deliveryPhone'?: string; + /** 配送员头像 */ + 'deliveryAvatar'?: string; + /** '配送员姓' */ + 'deliverySurname'?: string; + /** '配送员名' */ + 'deliveryFirstName'?: string; + } + + +export type DeliveryReview = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 评价ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 商家订单ID */ + 'merchantOrderId'?: number; + /** 用户ID */ + 'userId'?: number; + /** 评价标签(多个用逗号分隔) */ + 'tags'?: string; + /** 评分(1-5分) */ + 'rating'?: number; + /** 评价内容 */ + 'content'?: string; + /** 评价配图(存储图片URL数组) */ + 'images'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type DishRecordVo = + { + 'dishName'?: string; + 'num'?: number; + 'price'?: number; + } + + +export type EvaluateOrderBo = + { + /** 订单id */ + 'orderId'?: number; + /** 配送员评价表 */ + 'deliveryReview'?: DeliveryReview; + /** 菜品评价表 */ + 'merchantDishReviewList'?: MerchantDishReview[]; + } + + +export type FeaturedMerchantBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type FeaturedMerchantBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId': number; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type FeaturedMerchantBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 商家ID */ + 'merchantId': number; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type FeaturedMerchantVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + } + + +export type FeedbackBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 反馈内容 */ + 'content'?: string; + /** 图片URL列表(JSON数组) */ + 'images'?: string; + /** 联系电话 */ + 'contactPhone'?: string; + /** 1-待处理 2-处理中 3-已处理 */ + 'status'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type FeedbackVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家id */ + 'merchantId'?: number; + /** 反馈内容 */ + 'content'?: string; + /** 图片URL列表(JSON数组) */ + 'images'?: string; + /** 联系电话 */ + 'contactPhone'?: string; + /** 1-待处理 2-处理中 3-已处理 */ + 'status'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type GetAgreementBo = + { + /** 协议编码值 */ + 'code'?: string; + } + + +export type HelpCenterBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 1 用户 2 商家 */ + 'userPort': number; + /** 问题 */ + 'question': string; + /** 回答(富文本格式) */ + 'answer': string; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type HelpCenterBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 1 用户 2 商家 */ + 'userPort': number; + /** 问题 */ + 'question': string; + /** 回答(富文本格式) */ + 'answer': string; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type HelpCenterVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1 用户 2 商家 */ + 'userPort'?: number; + /** 问题 */ + 'question'?: string; + /** 回答(富文本格式) */ + 'answer'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type HotSearchWordVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 图片 */ + 'logoUrl'?: string; + /** 中文搜索词 */ + 'nameZh'?: string; + /** 英文搜索词 */ + 'nameEn'?: string; + /** 搜索词 */ + 'name'?: string; + /** 排序值(越小越靠前) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type IsUpdateVersionBo = + { + /** 设备类型:1-安卓(默认) 2-ios */ + 'appType'?: number; + /** 1-用户端(默认) 2-商家端 */ + 'port'?: number; + } + + +export type Key1 = + {} + + +export type Key237 = + {} + + +export type KeyAddGroup = + {} + + +export type KeyEditGroup = + {} + + +export type LatLogBo = + { + /** 纬度 */ + 'lat'?: string; + /** 经度 */ + 'lng'?: string; + } + + +export type LoginBo = + { + /** 登录类型

EMAIL_LOGIN(1, "邮箱登录"),

APPLE_LOGIN(2, "苹果登录"),

FACEBOOK_LOGIN(3, "脸书登录"),

GOOGLE_LOGIN(4, "谷歌登录"),

ACCOUNT_LOGIN(5, "账号密码登录"),

MOBILE_CODE_LOGIN(6, "手机号验证码登录"); */ + 'type'?: number; + /** 邮箱 */ + 'email'?: string; + /** 密码 */ + 'password'?: string; + /** 用户端口:1-用户端(默认值) */ + 'userPort'?: number; + /** 三方登录标识 */ + 'tripartiteLoginIdentify'?: string; + /** 手机号 */ + 'phone'?: string; + /** 手机验证码 */ + 'code'?: string; + /** 手机区号 */ + 'areaCode'?: string; + /** 邀请码 */ + 'invitationCode'?: string; + /** cid */ + 'cid'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 用户昵称 */ + 'nickName'?: string; + /** 头像 */ + 'avatar'?: string; + } + + +export type MapListFilterConfigVo = + { + 'key'?: Key1[]; + } + + +export type MapObject = + { + 'key'?: Key237; + } + + +export type MapObjectAddGroup = + { + 'key'?: KeyAddGroup; + } + + +export type MapObjectEditGroup = + { + 'key'?: KeyEditGroup; + } + + +export type MarketingActivityBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 活动名称 */ + 'activityName': string; + /** 活动图片URL */ + 'activityImage'?: string; + /** 活动内容(富文本) */ + 'activityContent': string; + /** 活动排序(从小到大) */ + 'sort': number; + /** 活动开始时间(时间戳) */ + 'startTime': number; + /** 活动结束时间(时间戳) */ + 'endTime': number; + /** 活动类型(1-新人首单 2-活动日指定菜品折扣) */ + 'activityType': number; + /** 指定菜品id集合,逗号分隔,如果为空,则所有菜品都有折扣 */ + 'dishIds'?: string; + /** 折扣 */ + 'discount': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MarketingActivityBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 活动名称 */ + 'activityName': string; + /** 活动图片URL */ + 'activityImage'?: string; + /** 活动内容(富文本) */ + 'activityContent': string; + /** 活动排序(从小到大) */ + 'sort': number; + /** 活动开始时间(时间戳) */ + 'startTime': number; + /** 活动结束时间(时间戳) */ + 'endTime': number; + /** 活动类型(1-新人首单 2-活动日指定菜品折扣) */ + 'activityType': number; + /** 指定菜品id集合,逗号分隔,如果为空,则所有菜品都有折扣 */ + 'dishIds'?: string; + /** 折扣 */ + 'discount': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MarketingActivityVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 活动名称 */ + 'activityName'?: string; + /** 活动图片URL */ + 'activityImage'?: string; + /** 活动图片URLUrl */ + 'activityImageUrl'?: string; + /** 活动内容(富文本) */ + 'activityContent'?: string; + /** 活动排序(从小到大) */ + 'sort'?: number; + /** 活动开始时间(时间戳) */ + 'startTime'?: number; + /** 活动结束时间(时间戳) */ + 'endTime'?: number; + /** 活动类型(1-新人首单 2-活动日指定菜品折扣) */ + 'activityType'?: number; + /** 指定菜品id集合,如果为空,则所有菜品都有折扣 */ + 'dishIds'?: string; + /** 折扣 */ + 'discount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 菜品列表 */ + 'merchantDishVoList'?: MerchantDishVo[]; + } + + +export type MembershipConfigBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 会员中心上图片URL */ + 'centerTopImage': string; + /** 会员中心下图片URL */ + 'centerBottomImage': string; + /** 会员购买页图片URL */ + 'purchasePageImage': string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MembershipConfigVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 会员中心上图片URL */ + 'centerTopImage'?: string; + /** 会员中心上图片URLUrl */ + 'centerTopImageUrl'?: string; + /** 会员中心下图片URL */ + 'centerBottomImage'?: string; + /** 会员中心下图片URLUrl */ + 'centerBottomImageUrl'?: string; + /** 会员购买页图片URL */ + 'purchasePageImage'?: string; + /** 会员购买页图片URLUrl */ + 'purchasePageImageUrl'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MembershipRechargeItemVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 名称 */ + 'name'?: string; + /** 中文图片URL */ + 'imageZh'?: string; + /** 英文图片URL */ + 'imageEn'?: string; + /** 是否试用(1-是 2-否) */ + 'trialFlag'?: number; + /** 试用时长(天) */ + 'trialDays'?: number; + /** 免费试用周数(展示用) */ + 'trialWeeksDisplay'?: number; + /** 充值会员类型(1-月会员 2-年会员) */ + 'membershipType'?: number; + /** 充值金额 */ + 'rechargeAmount'?: number; + /** 描述内容({}中内容不可修改) */ + 'description'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MembershipRenewalBo = + { + /** 用户id */ + 'userId'?: number; + /** 截止时间 */ + 'renewalTime'?: number; + } + + +export type MerchantBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家logo URL */ + 'logo'?: string; + /** 商家名称 */ + 'merchantName'?: string; + /** 商家位置(具体地址) */ + 'merchantAddress'?: string; + /** 商家经度 */ + 'longitude'?: number; + /** 商家纬度 */ + 'latitude'?: number; + /** 营业时间(多时段分号分隔 格式: MONDAY/TUESDAY/WEDNESDAY 09:00-18:00;THURSDAY/FRIDAY/SATURDAY/SUNDAY 10:00-20:00;) */ + 'businessHours'?: string; + /** 最低起配价 */ + 'minOrderPrice'?: number; + /** 是否支持自取(1-支持 2-不支持) */ + 'selfPickup'?: number; + /** 自取时长(如"30分钟") */ + 'pickupTime'?: string; + /** 是否支持配送(1-支持 2-不支持) */ + 'deliveryService'?: number; + /** 配送时长(如"30分钟") */ + 'deliveryTime'?: string; + /** 配送费 */ + 'deliveryFee'?: number; + /** 店铺图片URL(多张逗号分隔) */ + 'shopImages'?: string; + /** 店铺余额 */ + 'balance'?: number; + /** 店铺总收益 */ + 'totalIncome'?: number; + /** 店铺评分(0-5分) */ + 'rating'?: number; + /** 店铺评论数 */ + 'commentCount'?: number; + /** 菜品均价 */ + 'avgPrice'?: number; + /** 商家分类ID 首页中间 主要经营范围 */ + 'merchantCategoryIds'?: string; + /** 商家标签分类ID 首页上面 */ + 'merchantLabelIds'?: string; + /** 店铺收藏量 */ + 'collectCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 客户 id */ + 'customerId'?: string; + /** 打包盒重量 */ + 'packingBoxWeight'?: number; + /** 手机号 */ + 'phone'?: string; + } + + +export type MerchantBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId': number; + /** 商家logo URL */ + 'logo'?: string; + /** 商家名称 */ + 'merchantName': string; + /** 商家位置(具体地址) */ + 'merchantAddress': string; + /** 商家经度 */ + 'longitude': number; + /** 商家纬度 */ + 'latitude': number; + /** 营业时间(多时段分号分隔 格式: MONDAY/TUESDAY/WEDNESDAY 09:00-18:00;THURSDAY/FRIDAY/SATURDAY/SUNDAY 10:00-20:00;) */ + 'businessHours': string; + /** 最低起配价 */ + 'minOrderPrice': number; + /** 是否支持自取(1-支持 2-不支持) */ + 'selfPickup': number; + /** 自取时长(如"30分钟") */ + 'pickupTime'?: string; + /** 是否支持配送(1-支持 2-不支持) */ + 'deliveryService': number; + /** 配送时长(如"30分钟") */ + 'deliveryTime'?: string; + /** 配送费 */ + 'deliveryFee': number; + /** 店铺图片URL(多张逗号分隔) */ + 'shopImages'?: string; + /** 店铺余额 */ + 'balance': number; + /** 店铺总收益 */ + 'totalIncome': number; + /** 店铺评分(0-5分) */ + 'rating'?: number; + /** 店铺评论数 */ + 'commentCount'?: number; + /** 菜品均价 */ + 'avgPrice'?: number; + /** 商家分类ID 首页中间 主要经营范围 */ + 'merchantCategoryIds'?: string; + /** 商家标签分类ID 首页上面 */ + 'merchantLabelIds'?: string; + /** 店铺收藏量 */ + 'collectCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 客户 id */ + 'customerId'?: string; + /** 打包盒重量 */ + 'packingBoxWeight'?: number; + } + + +export type MerchantBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 用户ID */ + 'userId': number; + /** 商家logo URL */ + 'logo'?: string; + /** 商家名称 */ + 'merchantName': string; + /** 商家位置(具体地址) */ + 'merchantAddress': string; + /** 商家经度 */ + 'longitude': number; + /** 商家纬度 */ + 'latitude': number; + /** 营业时间(多时段分号分隔 格式: MONDAY/TUESDAY/WEDNESDAY 09:00-18:00;THURSDAY/FRIDAY/SATURDAY/SUNDAY 10:00-20:00;) */ + 'businessHours': string; + /** 最低起配价 */ + 'minOrderPrice': number; + /** 是否支持自取(1-支持 2-不支持) */ + 'selfPickup': number; + /** 自取时长(如"30分钟") */ + 'pickupTime'?: string; + /** 是否支持配送(1-支持 2-不支持) */ + 'deliveryService': number; + /** 配送时长(如"30分钟") */ + 'deliveryTime'?: string; + /** 配送费 */ + 'deliveryFee': number; + /** 店铺图片URL(多张逗号分隔) */ + 'shopImages'?: string; + /** 店铺余额 */ + 'balance': number; + /** 店铺总收益 */ + 'totalIncome': number; + /** 店铺评分(0-5分) */ + 'rating'?: number; + /** 店铺评论数 */ + 'commentCount'?: number; + /** 菜品均价 */ + 'avgPrice'?: number; + /** 商家分类ID 首页中间 主要经营范围 */ + 'merchantCategoryIds'?: string; + /** 商家标签分类ID 首页上面 */ + 'merchantLabelIds'?: string; + /** 店铺收藏量 */ + 'collectCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 客户 id */ + 'customerId'?: string; + /** 打包盒重量 */ + 'packingBoxWeight'?: number; + } + + +export type MerchantCartBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 用户ID */ + 'userId'?: number; + /** 菜品ID */ + 'dishId'?: number; + /** 数量 */ + 'count'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 配菜列表 */ + 'merchantCartSideDishBoList'?: MerchantCartSideDishBo[]; + } + + +export type MerchantCartSideDishBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 购物车id */ + 'merchantCartId'?: number; + /** 配菜ID */ + 'sideDishId'?: number; + /** 配菜子项ID */ + 'sideDishItemId'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MerchantCartSideDishVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 购物车id */ + 'merchantCartId'?: number; + /** 配菜ID */ + 'sideDishId'?: number; + /** 配菜子项ID */ + 'sideDishItemId'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 配菜信息 */ + 'merchantSideDishVo'?: MerchantSideDishVo; + /** 购物车或者下单时选择的单个配菜 */ + 'merchantSideDishItemVo'?: MerchantSideDishItemVo; + } + + +export type MerchantCartVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 用户ID */ + 'userId'?: number; + /** 菜品ID */ + 'dishId'?: number; + /** 数量 */ + 'count'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + 'merchantDishVo'?: MerchantDishVo; + /** 原价 */ + 'originalPrice'?: number; + /** 折扣价 */ + 'discountPrice'?: number; + /** 会员价 */ + 'memberPrice'?: number; + /** 实付价 */ + 'actualPrice'?: number; + /** 按照商家折扣 商品实际价格 */ + 'actualPriceByMerchantDiscount'?: number; + /** 税费比例 */ + 'taxRate'?: number; + /** 税费 */ + 'taxAmount'?: number; + /** 配菜列表字段 */ + 'sideDishList'?: MerchantCartSideDishVo[]; + } + + +export type MerchantDishBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜单ID */ + 'menuId'?: number; + /** 菜品名称 */ + 'dishName'?: string; + /** 菜品描述 */ + 'dishDescription'?: string; + /** 菜品图片URL */ + 'dishImage'?: string; + /** 原价 */ + 'originalPrice'?: number; + /** 折扣价 */ + 'discountPrice'?: number; + /** 重量(磅) */ + 'weight'?: number; + /** 税费 */ + 'tax'?: number; + /** 总销量 */ + 'salesCount'?: number; + /** 收藏数量 */ + 'collectCount'?: number; + /** 评论数量 */ + 'commentCount'?: number; + /** 浏览数量 */ + 'viewCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分词 逗号分隔 */ + 'words'?: string; + /** 排序 */ + 'sort'?: number; + /** 配菜列表 */ + 'merchantSideDishBoList'?: MerchantSideDishBo[]; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type MerchantDishReview = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 评价ID */ + 'id'?: number; + /** 菜品ID */ + 'dishId'?: number; + /** 配菜ID */ + 'sideDishId'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 商家订单ID */ + 'merchantOrderId'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家订单关联菜品ID */ + 'merchantOrderDishId'?: number; + /** 评分(1-5分) */ + 'rating'?: number; + /** 评价内容 */ + 'content'?: string; + /** 评价配图(存储图片URL数组) */ + 'images'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MerchantDishVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜单ID */ + 'menuId'?: number; + /** 菜品名称 */ + 'dishName'?: string; + /** 菜品描述 */ + 'dishDescription'?: string; + /** 菜品图片URL */ + 'dishImage'?: string; + /** 菜品图片URLUrl */ + 'dishImageUrl'?: string; + /** 原价 */ + 'originalPrice'?: number; + /** 折扣价 */ + 'discountPrice'?: number; + /** 重量(磅) */ + 'weight'?: number; + /** 税费 */ + 'tax'?: number; + /** 总销量 */ + 'salesCount'?: number; + /** 收藏数量 */ + 'collectCount'?: number; + /** 评论数量 */ + 'commentCount'?: null; + /** 浏览数量 */ + 'viewCount'?: null; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: null; + /** 分词 逗号分隔 */ + 'words'?: null; + /** 排序 */ + 'sort'?: null; + /** 是否收藏 */ + 'isCollect'?: null; + /** 会员价 */ + 'memberPrice'?: null; + /** 配菜列表 */ + 'merchantSideDishVoList'?: null; + /** 商户信息 */ + 'merchantVo'?: null; + /** 份数 */ + 'copies'?: null; + } + + +export type MerchantIncomeLeaderboardVo = + { + /** 商家名称 */ + 'merchantName'?: string; + /** logo */ + 'logo'?: string; + /** 收益金额 */ + 'amount'?: number; + } + + +export type MerchantIndexDataVO = + { + /** 今日订单数 */ + 'todayOrderNum'?: number; + /** 昨日订单数 */ + 'yesterdayOrderNum'?: number; + /** 本月订单数 */ + 'monthOrderNum'?: number; + /** 今日收益 */ + 'todayIncome'?: number; + /** 昨日收益 */ + 'yesterdayIncome'?: number; + /** 本月收益 */ + 'monthIncome'?: number; + /** 总收益 */ + 'totalIncome'?: number; + /** 待处理的退款订单数量 */ + 'refundOrderNum'?: number; + /** 待入账 */ + 'waitIncome'?: number; + } + + +export type MerchantListBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type MerchantMenuBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 菜单名称 */ + 'menuName'?: string; + /** 菜单时间段(多时段用分号分隔) */ + 'scheduleTimes'?: string; + /** 收藏数量 */ + 'collectCount'?: number; + /** 评论数量 */ + 'commentCount'?: number; + /** 浏览数量 */ + 'viewCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 排序 */ + 'sort'?: number; + } + + +export type MerchantMenuVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 菜单名称 */ + 'menuName'?: string; + /** 菜单时间段(多时段用分号分隔) */ + 'scheduleTimes'?: string; + /** 收藏数量 */ + 'collectCount'?: number; + /** 评论数量 */ + 'commentCount'?: number; + /** 浏览数量 */ + 'viewCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 排序 */ + 'sort'?: number; + /** 菜品列表 */ + 'dishList'?: MerchantDishVo[]; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + } + + +export type MerchantOrderBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId': number; + /** 商家ID */ + 'merchantId': number; + /** 订单号 */ + 'orderNo': string; + /** 菜品原价 */ + 'originalPrice': number; + /** 菜品实际应支付价 */ + 'actualPrice': number; + /** 优惠券抵扣价格 */ + 'couponDiscount'?: number; + /** 优惠券ID */ + 'userCouponId'?: number; + /** 税费 */ + 'tax': number; + /** 平台手续费 */ + 'platformFee': number; + /** 小费 */ + 'tip'?: number; + /** 小费折扣 */ + 'tipDiscount'?: number; + /** 配送费 */ + 'deliveryFee': number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: number; + /** 实付金额 */ + 'paidAmount': number; + /** 商家实际到账金额 */ + 'merchantReceiveAmount': number; + /** 总重量(磅) */ + 'totalWeight': number; + /** 菜品重量(不包含配菜) */ + 'dishWeight': number; + /** 配菜重量 */ + 'sideDishWeight'?: number; + /** 打包盒重量 */ + 'packagingWeight'?: number; + /** 订单状态 */ + 'orderStatus': number; + /** 退款状态 */ + 'refundStatus'?: number; + /** 用户取消原因 */ + 'cancelReason'?: string; + /** 取消时间 */ + 'cancelTime'?: number; + /** 商家拒绝原因 */ + 'rejectReason'?: string; + /** 支付状态:1-支付中 2-支付成功 3-支付失败 */ + 'payStatus'?: number; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付卡号 */ + 'cardNumber'?: string; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 三方支付退款参数 */ + 'refundParam'?: string; + /** 是否已捕获(1-未捕获 2-已捕获) */ + 'capturedFlag'?: number; + /** 配送员手机号 */ + 'deliveryPhone'?: string; + /** 配送员头像URL */ + 'deliveryAvatar'?: string; + /** 配送员姓 */ + 'deliverySurname'?: string; + /** 配送员名 */ + 'deliveryFirstName'?: string; + /** 预约时间(开始时间) */ + 'startScheduledTime'?: number; + /** 预约时间(结束时间) */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType': number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod': number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 订单备注 */ + 'orderRemark'?: string; + /** 支付时间 */ + 'payTime'?: number; + /** 接单时间 */ + 'receiveTime'?: number; + /** 开始配送时间 */ + 'startDeliveryTime'?: number; + /** 送达时间 */ + 'deliveryTime'?: number; + /** 送达图片 */ + 'deliveryPhotos'?: string; + /** 邀请分佣 */ + 'inviteFee'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type MerchantOrderBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 用户ID */ + 'userId': number; + /** 商家ID */ + 'merchantId': number; + /** 订单号 */ + 'orderNo': string; + /** 菜品原价 */ + 'originalPrice': number; + /** 菜品实际应支付价 */ + 'actualPrice': number; + /** 优惠券抵扣价格 */ + 'couponDiscount'?: number; + /** 优惠券ID */ + 'userCouponId'?: number; + /** 税费 */ + 'tax': number; + /** 平台手续费 */ + 'platformFee': number; + /** 小费 */ + 'tip'?: number; + /** 小费折扣 */ + 'tipDiscount'?: number; + /** 配送费 */ + 'deliveryFee': number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: number; + /** 实付金额 */ + 'paidAmount': number; + /** 商家实际到账金额 */ + 'merchantReceiveAmount': number; + /** 总重量(磅) */ + 'totalWeight': number; + /** 菜品重量(不包含配菜) */ + 'dishWeight': number; + /** 配菜重量 */ + 'sideDishWeight'?: number; + /** 打包盒重量 */ + 'packagingWeight'?: number; + /** 订单状态 */ + 'orderStatus': number; + /** 退款状态 */ + 'refundStatus'?: number; + /** 用户取消原因 */ + 'cancelReason'?: string; + /** 取消时间 */ + 'cancelTime'?: number; + /** 商家拒绝原因 */ + 'rejectReason'?: string; + /** 支付状态:1-支付中 2-支付成功 3-支付失败 */ + 'payStatus'?: number; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付卡号 */ + 'cardNumber'?: string; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 三方支付退款参数 */ + 'refundParam'?: string; + /** 是否已捕获(1-未捕获 2-已捕获) */ + 'capturedFlag'?: number; + /** 配送员手机号 */ + 'deliveryPhone'?: string; + /** 配送员头像URL */ + 'deliveryAvatar'?: string; + /** 配送员姓 */ + 'deliverySurname'?: string; + /** 配送员名 */ + 'deliveryFirstName'?: string; + /** 预约时间(开始时间) */ + 'startScheduledTime'?: number; + /** 预约时间(结束时间) */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType': number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod': number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 订单备注 */ + 'orderRemark'?: string; + /** 支付时间 */ + 'payTime'?: number; + /** 接单时间 */ + 'receiveTime'?: number; + /** 开始配送时间 */ + 'startDeliveryTime'?: number; + /** 送达时间 */ + 'deliveryTime'?: number; + /** 送达图片 */ + 'deliveryPhotos'?: string; + /** 邀请分佣 */ + 'inviteFee'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type MerchantOrderListBackendBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + /** 订单号 */ + 'orderNo'?: string; + /** 订单状态 */ + 'orderStatusList'?: number[]; + /** 用户手机号 */ + 'userPhone'?: string; + /** 用户姓名 */ + 'userName'?: string; + } + + +export type MerchantOrderListBo = + { + /** 用户类型 1用户 2 商家 */ + 'userPort'?: number; + /** 订单状态 */ + 'orderStatusList'?: number[]; + /** 退款状态 */ + 'refundStatusList'?: number[]; + /** 开始时间 */ + 'createBeginTime'?: number; + /** 结束时间 */ + 'createEndTime'?: number; + } + + +export type MerchantOrderVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 订单号 */ + 'orderNo'?: string; + /** 菜品原价 */ + 'originalPrice'?: number; + /** 菜品实际应支付价 */ + 'actualPrice'?: number; + /** 优惠券抵扣价格 */ + 'couponDiscount'?: number; + /** 优惠券ID */ + 'userCouponId'?: number; + /** 税费 */ + 'tax'?: number; + /** 平台手续费 */ + 'platformFee'?: number; + /** 小费 */ + 'tip'?: number; + /** 小费折扣 */ + 'tipDiscount'?: number; + /** 配送费 */ + 'deliveryFee'?: number; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: number; + /** 实付金额 */ + 'paidAmount'?: number; + /** 商家实际到账金额 */ + 'merchantReceiveAmount'?: number; + /** 总重量(磅) */ + 'totalWeight'?: number; + /** 菜品重量(不包含配菜) */ + 'dishWeight'?: number; + /** 配菜重量 */ + 'sideDishWeight'?: number; + /** 打包盒重量 */ + 'packagingWeight'?: number; + /** 订单状态 */ + 'orderStatus'?: number; + /** 退款状态 */ + 'refundStatus'?: number; + /** 用户取消原因 */ + 'cancelReason'?: string; + /** 取消时间 */ + 'cancelTime'?: number; + /** 商家拒绝原因 */ + 'rejectReason'?: string; + /** 支付状态:1-支付中 2-支付成功 3-支付失败 */ + 'payStatus'?: number; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付卡号 */ + 'cardNumber'?: string; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 三方支付退款参数 */ + 'refundParam'?: string; + /** 是否已捕获(1-未捕获 2-已捕获) */ + 'capturedFlag'?: number; + /** 配送员手机号 */ + 'deliveryPhone'?: string; + /** 配送员头像URL */ + 'deliveryAvatar'?: string; + /** 配送员姓 */ + 'deliverySurname'?: string; + /** 配送员名 */ + 'deliveryFirstName'?: string; + /** 预约时间(开始时间) */ + 'startScheduledTime'?: number; + /** 预约时间(结束时间) */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType'?: number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 订单备注 */ + 'orderRemark'?: string; + /** 支付时间 */ + 'payTime'?: number; + /** 接单时间 */ + 'receiveTime'?: number; + /** 开始配送时间 */ + 'startDeliveryTime'?: number; + /** 送达时间 */ + 'deliveryTime'?: number; + /** 送达图片 */ + 'deliveryPhotos'?: string; + /** 邀请分佣 */ + 'inviteFee'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 上级用户信息 */ + 'userVo'?: UserVo; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + /** 订单菜品信息 */ + 'merchantOrderDishVoList'?: null; + /** 评价信息 - 配送员 */ + 'deliveryReviewVo'?: null; + /** 评价信息 - 菜品 */ + 'dishReviewVoList'?: null; + /** 收货地址信息 */ + 'merchantOrderUserAddressVo'?: null; + } + + +export type MerchantRecipeBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 菜谱名称 */ + 'recipeName'?: string; + /** 食材描述 */ + 'ingredients'?: string; + /** 菜谱分类ID */ + 'recipeCategoryId'?: number; + /** 菜谱图片URL */ + 'recipeImage'?: string; + /** 收藏量 */ + 'collectCount'?: number; + /** 浏览量 */ + 'viewCount'?: number; + /** 点赞量 */ + 'likeCount'?: number; + /** 评论量 */ + 'commentCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: number[]; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: number[]; + } + + +export type MerchantRecipeVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 菜谱名称 */ + 'recipeName'?: string; + /** 食材描述 */ + 'ingredients'?: string; + /** 菜谱分类ID */ + 'recipeCategoryId'?: number; + /** 菜谱图片URL */ + 'recipeImage'?: string; + /** 菜谱图片URLUrl */ + 'recipeImageUrl'?: string; + /** 收藏量 */ + 'collectCount'?: number; + /** 浏览量 */ + 'viewCount'?: number; + /** 点赞量 */ + 'likeCount'?: number; + /** 评论量 */ + 'commentCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 是否收藏 */ + 'isCollect'?: boolean; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + /** 菜谱分类名称 */ + 'recipeCategoryNameZh'?: null; + /** 菜谱分类名称 */ + 'recipeCategoryName'?: null; + /** 收藏的用户头像列表 */ + 'collectUserAvatarList'?: null; + } + + +export type MerchantSideDishBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜品ID */ + 'dishId'?: number; + /** 配菜名称 */ + 'sideDishName'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 是否必填 1 是 2 否 */ + 'isRequired'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 配菜子项列表 */ + 'merchantSideDishItemBoList'?: MerchantSideDishItemBo[]; + } + + +export type MerchantSideDishItemBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜品ID */ + 'dishId'?: number; + /** 配菜ID */ + 'merchantSideDishId'?: number; + /** 子项名称 */ + 'name'?: string; + /** 子项值 */ + 'value'?: string; + /** 价格 */ + 'price'?: number; + /** 重量(磅) */ + 'weight'?: number; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type MerchantSideDishItemVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜品ID */ + 'dishId'?: number; + /** 配菜ID */ + 'merchantSideDishId'?: number; + /** 子项名称 */ + 'name'?: string; + /** 子项值 */ + 'value'?: string; + /** 价格 */ + 'price'?: number; + /** 重量(磅) */ + 'weight'?: number; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 会员价 */ + 'memberPrice'?: number; + } + + +export type MerchantSideDishVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜品ID */ + 'dishId'?: number; + /** 配菜名称 */ + 'sideDishName'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 是否必填 1 是 2 否 */ + 'isRequired'?: number; + /** 购物车或者下单时选择的单个配菜 */ + 'merchantSideDishItemVo'?: MerchantSideDishItemVo; + /** 配菜子项列表 */ + 'merchantSideDishItemVoList'?: MerchantSideDishItemVo[]; + } + + +export type MerchantVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家logo URL */ + 'logo'?: string; + /** 商家名称 */ + 'merchantName'?: string; + /** 商家位置(具体地址) */ + 'merchantAddress'?: string; + /** 商家经度 */ + 'longitude'?: number; + /** 商家纬度 */ + 'latitude'?: number; + /** 营业时间(多时段分号分隔 格式: MONDAY/TUESDAY/WEDNESDAY 09:00-18:00;THURSDAY/FRIDAY/SATURDAY/SUNDAY 10:00-20:00;) */ + 'businessHours'?: string; + /** 最低起配价 */ + 'minOrderPrice'?: number; + /** 是否支持自取(1-支持 2-不支持) */ + 'selfPickup'?: number; + /** 自取时长(如"30分钟") */ + 'pickupTime'?: string; + /** 是否支持配送(1-支持 2-不支持) */ + 'deliveryService'?: number; + /** 配送时长(如"30分钟") */ + 'deliveryTime'?: string; + /** 配送费 */ + 'deliveryFee'?: number; + /** 店铺图片URL(多张逗号分隔) */ + 'shopImages'?: string; + /** 店铺余额 */ + 'balance'?: number; + /** 店铺总收益 */ + 'totalIncome'?: number; + /** 店铺评分(0-5分) */ + 'rating'?: number; + /** 店铺评论数 */ + 'commentCount'?: number; + /** 菜品均价 */ + 'avgPrice'?: number; + /** 商家分类ID */ + 'merchantCategoryIds'?: string; + /** 商家标签分类ID */ + 'merchantLabelIds'?: string; + /** 客户 id */ + 'customerId'?: string; + /** 店铺收藏量 */ + 'collectCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 打包盒重量 */ + 'packingBoxWeight'?: number; + /** 是否收藏 */ + 'isCollect'?: boolean; + /** 购物车 */ + 'merchantCartVoList'?: MerchantCartVo[]; + /** 最新加入购物车时间 */ + 'latestCartTime'?: number; + /** 总单量 */ + 'totalOrderCount'?: number; + /** 商家分类名称 */ + 'merchantCategoryNamesZh'?: string[]; + /** 商家分类名称 */ + 'merchantCategoryNamesEn'?: string[]; + /** 商家标签名称 */ + 'merchantLabelNamesZh'?: string[]; + /** 商家标签名称 */ + 'merchantLabelNamesEn'?: string[]; + /** 菜单、菜品 */ + 'merchantMenuVoList'?: MerchantMenuVo[]; + /** 复购人数 */ + 'reorderedCount'?: null; + /** 购物车实付金额 */ + 'cartTotalPrice'?: null; + /** 手机号 */ + 'phone'?: null; + } + + +export type MessageVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键id */ + 'id'?: number; + /** 会话id */ + 'sessionId'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户id */ + 'userId'?: number; + 'userPort'?: number; + /** 消息类型 */ + 'messageType'?: number; + /** 关联对象id, */ + 'objectId'?: number; + /** 标题 */ + 'titleZh'?: string; + /** 标题 */ + 'titleEn'?: string; + /** 留言内容 */ + 'contentZh'?: string; + /** 留言内容 */ + 'contentEn'?: string; + /** 读状态(1-已读 2-未读) */ + 'readStatus'?: number; + } + + +export type NumberStatisticsItemVo = + { + /** 累计数量 */ + 'cumulativeNumber'?: number; + /** 今日数量 */ + 'todayNumber'?: number; + /** 昨日数量 */ + 'yesterdayNumber'?: number; + /** 环比 */ + 'annulus'?: number; + } + + +export type NumberStatisticsVo = + { + /** 用户数量统计 */ + 'userNumberStatistics'?: NumberStatisticsItemVo; + /** 用户数量统计 */ + 'merchantNumberStatistics'?: NumberStatisticsItemVo; + /** 用户数量统计 */ + 'merchantOrderNumberStatistics'?: NumberStatisticsItemVo; + } + + +export type OnlyIdBo = + { + /** 银行账户 id */ + 'id'?: number; + } + + +export type OrderAmountStatisticsBo = + { + /** 时区 */ + 'timeZoneId'?: string; + /** 时间类型:1-近一年 2-近一月 3-时间自定义 */ + 'timeType'?: number; + /** 开始时间戳 timeType=3时必传 */ + 'startTimestamp'?: number; + /** 结束时间戳 timeType=3时必传 */ + 'endTimestamp'?: number; + } + + +export type OrderAmountStatisticsVo = + { + /** 时间戳 */ + 'timestamp'?: number; + /** 订单支付金额 */ + 'merchantOrderAmount'?: number; + /** 乘客订单数量 */ + 'merchantOrderNumber'?: number; + } + + +export type PayOrderBo = + { + /** 订单id */ + 'orderId'?: number; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付密码 */ + 'payPassword'?: string; + } + + +export type PreferenceVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 喜好ID */ + 'id'?: number; + /** 中文名称 */ + 'nameZh'?: string; + /** 英文名称 */ + 'nameEn'?: string; + 'name'?: string; + /** 图片URL */ + 'imageUrl'?: string; + /** 排序值 */ + 'sortOrder'?: number; + /** 标签(多个用逗号分隔) */ + 'tags'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type R = + { + 'code'?: number; + 'msg'?: string; + 'data'?: Record; + 'systemTime'?: number; + } + + +export type R2 = + { + 'code'?: number; + 'msg'?: string; + 'data'?: null; + 'systemTime'?: number; + } + + +export type RAgreementVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: AgreementVo; + 'systemTime'?: number; + } + + +export type RAmountStatisticsVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: AmountStatisticsVo; + 'systemTime'?: number; + } + + +export type RAppointmentTimeVo = + { + 'code'?: number; + 'msg'?: string; + /** 用户预约时间视图对象 t_appointment_time */ + 'data'?: AppointmentTimeVo; + 'systemTime'?: number; + } + + +export type RAppVersionVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: AppVersionVo; + 'systemTime'?: number; + } + + +export type RAutomaticCookingMachineRegistrationVo = + { + 'code'?: number; + 'msg'?: string; + /** 炒菜机报名视图对象 t_automatic_cooking_machine_registration */ + 'data'?: AutomaticCookingMachineRegistrationVo; + 'systemTime'?: number; + } + + +export type RAutomaticCookingMachineVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: AutomaticCookingMachineVo; + 'systemTime'?: number; + } + + +export type RBankVo = + { + 'code'?: number; + 'msg'?: string; + /** 银行账户视图对象 t_bank */ + 'data'?: BankVo; + 'systemTime'?: number; + } + + +export type RBigDecimal = + { + 'code'?: number; + 'msg'?: string; + 'data'?: number; + 'systemTime'?: number; + } + + +export type RBoolean = + { + 'code'?: number; + 'msg'?: string; + 'data'?: boolean; + 'systemTime'?: number; + } + + +export type RCalculatePriceCartVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: CalculatePriceCartVo; + 'systemTime'?: null; + } + + +export type RCalculatePriceDishVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: CalculatePriceDishVo; + 'systemTime'?: number; + } + + +export type RCalculateSavingsVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: CalculateSavingsVo; + 'systemTime'?: number; + } + + +export type RComputeAmountFeeVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: ComputeAmountFeeVo; + 'systemTime'?: number; + } + + +export type RCouponVo = + { + 'code'?: number; + 'msg'?: string; + /** 优惠券主视图对象 t_coupon */ + 'data'?: CouponVo; + 'systemTime'?: number; + } + + +export type RCustomerServiceVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: CustomerServiceVo; + 'systemTime'?: number; + } + + +export type RechargeBo = + { + /** 会员充值项id */ + 'rechargeItemId'?: number; + /** 充值金额 */ + 'cardId'?: string; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付密码 */ + 'payPassword'?: string; + } + + +export type RecipeCategoryBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 菜谱分类名称 */ + 'categoryNameZh'?: string; + /** 菜谱分类名称 */ + 'categoryNameEn'?: string; + /** 菜谱分类名称 */ + 'categoryName': string; + /** 分类图片URL */ + 'categoryImage'?: string; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type RecipeCategoryBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 菜谱分类名称 */ + 'categoryNameZh'?: string; + /** 菜谱分类名称 */ + 'categoryNameEn'?: string; + /** 菜谱分类名称 */ + 'categoryName': string; + /** 分类图片URL */ + 'categoryImage'?: string; + /** 排序值(从小到大) */ + 'sort': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type RecipeCategoryVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 菜谱分类名称 */ + 'categoryNameZh'?: string; + /** 菜谱分类名称 */ + 'categoryNameEn'?: string; + /** 菜谱分类名称 */ + 'categoryName'?: string; + /** 分类图片URL */ + 'categoryImage'?: string; + /** 分类图片URLUrl */ + 'categoryImageUrl'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type RecommendMerchantBo = + { + /** 纬度 */ + 'lat'?: string; + /** 经度 */ + 'lng'?: string; + /** 商家ID */ + 'merchantId'?: number; + /** 商家分类id集合(首页中间) */ + 'merchantCategoryIds'?: number[]; + /** 商家标签id集合(首页上面) */ + 'merchantLabelIds'?: number[]; + /** 是否支持自取 1是 2 否 */ + 'selfPickup'?: number; + /** 是否有折扣 1是 2 否 */ + 'discount'?: number; + /** 评分范围 比如 3-4 */ + 'scoreRange'?: string; + /** 价格范围 比如 10-30 */ + 'priceRange'?: string; + /** 排序方式 1系统推荐(按照喜好) 2 距离排序 3 评分排序 */ + 'sortType'?: number; + /** 关键词 */ + 'keyword'?: string; + } + + +export type RejectRefundBo = + { + /** 订单id */ + 'orderId'?: number; + /** 拒绝原因 */ + 'rejectReason'?: string; + } + + +export type ReplyPageBo = + { + /** 上级评论id */ + 'parentId'?: number; + } + + +export type ResetPasswordBo = + { + /** 用户 id */ + 'id'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + } + + +export type RFeaturedMerchantVo = + { + 'code'?: number; + 'msg'?: string; + /** 精选商家视图对象 t_featured_merchant */ + 'data'?: FeaturedMerchantVo; + 'systemTime'?: number; + } + + +export type RFeedbackVo = + { + 'code'?: number; + 'msg'?: string; + /** 意见反馈视图对象 t_feedback */ + 'data'?: FeedbackVo; + 'systemTime'?: number; + } + + +export type RHelpCenterVo = + { + 'code'?: number; + 'msg'?: string; + /** 帮助中心视图对象 t_help_center */ + 'data'?: HelpCenterVo; + 'systemTime'?: number; + } + + +export type RListHelpCenterVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: HelpCenterVo[]; + 'systemTime'?: number; + } + + +export type RListHotSearchWordVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: HotSearchWordVo[]; + 'systemTime'?: number; + } + + +export type RListMarketingActivityVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MarketingActivityVo[]; + 'systemTime'?: number; + } + + +export type RListMembershipRechargeItemVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MembershipRechargeItemVo[]; + 'systemTime'?: number; + } + + +export type RListMerchantCartVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantCartVo[]; + 'systemTime'?: number; + } + + +export type RListMerchantIncomeLeaderboardVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantIncomeLeaderboardVo[]; + 'systemTime'?: number; + } + + +export type RListMerchantMenuVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantMenuVo[]; + 'systemTime'?: number; + } + + +export type RListMerchantOrderVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantOrderVo[]; + 'systemTime'?: null; + } + + +export type RListMerchantVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantVo[]; + 'systemTime'?: null; + } + + +export type RListOrderAmountStatisticsVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: OrderAmountStatisticsVo[]; + 'systemTime'?: number; + } + + +export type RListPreferenceVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: PreferenceVo[]; + 'systemTime'?: number; + } + + +export type RListRecipeCategoryVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: RecipeCategoryVo[]; + 'systemTime'?: number; + } + + +export type RListShopSettlementVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: ShopSettlementVo[]; + 'systemTime'?: number; + } + + +export type RListString = + { + 'code'?: number; + 'msg'?: string; + 'data'?: string[]; + 'systemTime'?: number; + } + + +export type RListUserCouponVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: UserCouponVo[]; + 'systemTime'?: number; + } + + +export type RLong = + { + 'code'?: number; + 'msg'?: string; + 'data'?: number; + 'systemTime'?: number; + } + + +export type RMapListFilterConfigVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MapListFilterConfigVo; + 'systemTime'?: number; + } + + +export type RMapObject = + { + 'code'?: number; + 'msg'?: string; + /** 请求参数 */ + 'data'?: MapObject; + 'systemTime'?: number; + } + + +export type RMarketingActivityVo = + { + 'code'?: number; + 'msg'?: string; + /** 营销活动视图对象 t_marketing_activity */ + 'data'?: MarketingActivityVo; + 'systemTime'?: number; + } + + +export type RMembershipConfigVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MembershipConfigVo; + 'systemTime'?: number; + } + + +export type RMerchantDishVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantDishVo; + 'systemTime'?: null; + } + + +export type RMerchantIndexDataVO = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantIndexDataVO; + 'systemTime'?: number; + } + + +export type RMerchantMenuVo = + { + 'code'?: number; + 'msg'?: string; + /** 商家菜单视图对象 t_merchant_menu */ + 'data'?: MerchantMenuVo; + 'systemTime'?: number; + } + + +export type RMerchantOrderVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: MerchantOrderVo; + 'systemTime'?: null; + } + + +export type RMerchantRecipeVo = + { + 'code'?: number; + 'msg'?: string; + /** --------------以下非数据库字段--------------- */ + 'data'?: MerchantRecipeVo; + 'systemTime'?: null; + } + + +export type RMerchantVo = + { + 'code'?: number; + 'msg'?: string; + /** 商家视图对象 t_merchant */ + 'data'?: MerchantVo; + 'systemTime'?: null; + } + + +export type RNumberStatisticsVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: NumberStatisticsVo; + 'systemTime'?: number; + } + + +export type RRecipeCategoryVo = + { + 'code'?: number; + 'msg'?: string; + /** 菜谱分类视图对象 t_recipe_category */ + 'data'?: RecipeCategoryVo; + 'systemTime'?: number; + } + + +export type RSaleRecordVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: SaleRecordVo; + 'systemTime'?: number; + } + + +export type RShopSettlementVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: ShopSettlementVo; + 'systemTime'?: number; + } + + +export type RString = + { + 'code'?: number; + 'msg'?: string; + 'data'?: string; + 'systemTime'?: number; + } + + +export type RUser = + { + 'code'?: number; + 'msg'?: string; + 'data'?: User; + 'systemTime'?: number; + } + + +export type RUserCardVo = + { + 'code'?: number; + 'msg'?: string; + 'data'?: UserCardVo; + 'systemTime'?: number; + } + + +export type RUserCouponVo = + { + 'code'?: number; + 'msg'?: string; + /** 用户优惠券关联视图对象 t_user_coupon */ + 'data'?: UserCouponVo; + 'systemTime'?: null; + } + + +export type RUserVo = + { + 'code'?: number; + 'msg'?: string; + /** 上级用户信息 */ + 'data'?: UserVo; + 'systemTime'?: number; + } + + +export type RVoid = + { + 'code'?: number; + 'msg'?: string; + 'data'?: null; + 'systemTime'?: number; + } + + +export type RWithdrawalRecordVo = + { + 'code'?: number; + 'msg'?: string; + /** 钱包提现记录视图对象 t_withdrawal_record */ + 'data'?: WithdrawalRecordVo; + 'systemTime'?: null; + } + + +export type SaleRecordVo = + { + /** 菜品份数 */ + 'num'?: number; + /** 菜品金额 */ + 'price'?: number; + /** 记录 */ + 'dishRecordVos'?: DishRecordVo[]; + } + + +export type SearchMerchantDishBo = + { + /** 纬度 */ + 'lat'?: string; + /** 经度 */ + 'lng'?: string; + /** 商家ID */ + 'merchantId'?: number; + /** 关键字 */ + 'keyword'?: string; + /** 价格范围 比如 10-30 */ + 'priceRange'?: string; + } + + +export type SearchRecipeBo = + { + /** 关键字 */ + 'keyword'?: string; + /** 分类id */ + 'recipeCategoryId'?: number; + /** 排序方式 1时间倒序 2 评论倒序 3 收藏量倒序 */ + 'sortType'?: string; + } + + +export type SendSmsBo = + { + /** 短信类型USER_BIND_PHONE(1, "用户端绑定手机号"),USER_EMAIL_REGISTER(2, "用户端邮箱注册"),USER_FORGET_PASSWORD(3, "用户端忘记密码"),USER_FORGET_PAY_PASSWORD(4, "用户端忘记支付密码"),USER_SET_PAY_PASSWORD(5, "用户端设置支付密码"),USER_PHONE_LOGIN(6, "手机号验证码登录"),CHECK_OLD_PHONE(7, "验证旧手机号"),CHECK_NEW_PHONE(8, "验证新手机号"),; */ + 'type'?: number; + /** 手机号 */ + 'phone'?: string; + /** 手机区号 */ + 'areaCode'?: string; + } + + +export type ShopSettlementBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 店铺名称 */ + 'shopName'?: string; + /** 所属类型(关联店铺类型表) */ + 'shopTypeId'?: number; + /** 街道 */ + 'street'?: string; + /** 市 */ + 'city'?: string; + /** 州 */ + 'state'?: string; + /** 邮编 */ + 'postcode'?: string; + /** 详细地址 */ + 'detailAddress'?: string; + /** 店铺介绍(500字限制) */ + 'description'?: string; + /** 法人身份证照片URL */ + 'legalIdImage'?: string; + /** 营业执照照片URL */ + 'businessLicenseImage'?: string; + /** 审核状态(1-待审核 2-通过 3-拒绝) */ + 'auditStatus'?: number; + /** 拒绝原因 */ + 'rejectReason'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 身份证照片URL */ + 'idCardImage'?: string; + /** 护照照片URL */ + 'passportImage'?: string; + /** 食品操作处理证照片URL */ + 'foodOperationCertificateImage'?: string; + /** 用户手机号 */ + 'userPhone'?: string; + /** 用户名 */ + 'userName'?: string; + } + + +export type ShopSettlementVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 店铺名称 */ + 'shopName'?: string; + /** 所属类型(关联店铺类型表) */ + 'shopTypeId'?: number; + /** 街道 */ + 'street'?: string; + /** 市 */ + 'city'?: string; + /** 州 */ + 'state'?: string; + /** 邮编 */ + 'postcode'?: string; + /** 详细地址 */ + 'detailAddress'?: string; + /** 店铺介绍(500字限制) */ + 'description'?: string; + /** 法人身份证照片URL */ + 'legalIdImage'?: string; + /** 法人身份证照片URLUrl */ + 'legalIdImageUrl'?: string; + /** 营业执照照片URL */ + 'businessLicenseImage'?: string; + /** 营业执照照片URLUrl */ + 'businessLicenseImageUrl'?: string; + /** 审核状态(1-待审核 2-通过 3-拒绝) */ + 'auditStatus'?: number; + /** 拒绝原因 */ + 'rejectReason'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 身份证照片URL */ + 'idCardImage'?: string; + /** 护照照片URL */ + 'passportImage'?: string; + /** 食品操作处理证照片URL */ + 'foodOperationCertificateImage'?: string; + /** 上级用户信息 */ + 'userVo'?: UserVo; + /** 经营范围 */ + 'shopTypeNameZh'?: string; + /** 经营范围 */ + 'shopTypeNameEn'?: string; + } + + +export type TableDataInfo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserAddressVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoAppointmentTimeVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: AppointmentTimeVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoAutomaticCookingMachineRegistrationVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: AutomaticCookingMachineRegistrationVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoBankVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: BankVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoCommentVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: CommentVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoCouponVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: CouponVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoFeaturedMerchantVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: FeaturedMerchantVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoFeedbackVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: FeedbackVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoHelpCenterVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: HelpCenterVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoMarketingActivityVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MarketingActivityVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoMerchantDishVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MerchantDishVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoMerchantMenuVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MerchantMenuVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoMerchantOrderVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MerchantOrderVo[]; + /** 消息状态码 */ + 'code'?: null; + /** 消息内容 */ + 'msg'?: null; + } + + +export type TableDataInfoMerchantRecipeVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MerchantRecipeVo[]; + /** 消息状态码 */ + 'code'?: null; + /** 消息内容 */ + 'msg'?: null; + } + + +export type TableDataInfoMerchantVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MerchantVo[]; + /** 消息状态码 */ + 'code'?: null; + /** 消息内容 */ + 'msg'?: null; + } + + +export type TableDataInfoMessageVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: MessageVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoRecipeCategoryVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: RecipeCategoryVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoShopSettlementVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: ShopSettlementVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoUserBalanceDetailVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserBalanceDetailVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoUserCardVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserCardVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoUserCollectVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserCollectVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoUserCouponVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserCouponVo[]; + /** 消息状态码 */ + 'code'?: null; + /** 消息内容 */ + 'msg'?: null; + } + + +export type TableDataInfoUserInviteVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserInviteVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoUserVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: UserVo[]; + /** 消息状态码 */ + 'code'?: number; + /** 消息内容 */ + 'msg'?: string; + } + + +export type TableDataInfoWithdrawalRecordVo = + { + /** 总记录数 */ + 'total'?: number; + /** 列表数据 */ + 'rows'?: WithdrawalRecordVo[]; + /** 消息状态码 */ + 'code'?: null; + /** 消息内容 */ + 'msg'?: null; + } + + +export type TimeSearchBo = + { + /** 开始时间 */ + 'createBeginTime'?: number; + /** 结束时间 */ + 'createEndTime'?: number; + } + + +export type TimeZoneBo = + { + /** 时区 */ + 'timeZoneId'?: string; + } + + +export enum TypeEnum {}; + +export type ITypeEnum = keyof typeof TypeEnum + +export enum TypeEnum2 {}; + +export type ITypeEnum2 = keyof typeof TypeEnum2 + +export type UpdateBankBo = + { + /** 银行账户 id */ + 'id'?: number; + /** 银行名称 */ + 'bankName'?: string; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type UpdateUserAmount = + { + /** 用户 id */ + 'id'?: number; + /** 增减的余额 增为正数 减为负数 */ + 'amount'?: number; + } + + +export type User = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + 'sex'?: string; + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 头像 */ + 'avatar'?: string; + /** 苹果唯一标识 */ + 'appleId'?: string; + /** Facebook唯一标识 */ + 'facebookId'?: string; + /** Google唯一标识 */ + 'googleId'?: string; + /** 余额 */ + 'balance'?: number; + /** 积分 */ + 'points'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 账号注销时间 */ + 'logoutTime'?: number; + /** 邀请码 */ + 'invitationCode'?: string; + /** 门店id */ + 'storeId'?: number; + /** 用户昵称 */ + 'nickName'?: string; + /** 用户端口:1-用户端 2-商家 */ + 'userPort'?: number; + /** 用户角色 */ + 'userRole'?: string; + /** 订单邮箱 */ + 'orderEmail'?: string; + /** 客户 id */ + 'customerId'?: string; + /** 是否认证成车主 1 否 2 是 */ + 'isCarOwner'?: number; + /** 车主认证状态 1待审核 2 审核通过 3 审核拒绝 */ + 'carOwnerStatus'?: number; + /** 信用分 */ + 'creditScore'?: number; + /** 评分 */ + 'star'?: number; + /** 是否已经弹窗提示过新人优惠券 1否 2 是 */ + 'hasPop'?: number; + /** 车主接单数量 */ + 'receiveOrderNum'?: number; + 'cid'?: string; + /** 周配送到期时间 */ + 'weeklyDeliveryExpire'?: number; + } + + +export type UserAddressBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 地址类型(house,apartment,office,hotel,other) */ + 'type'?: string; + /** 用户ID */ + 'userId'?: number; + /** 配送类型 */ + 'deliveryType'?: string; + /** 配送说明 */ + 'deliveryRemark'?: string; + /** 配送图片URL */ + 'deliveryImage'?: string; + /** 门牌号(住宅专用) */ + 'houseNumber'?: string; + /** 其他信息(住宅专用) */ + 'houseExtra'?: string; + /** 楼宇名称(公寓专用) */ + 'buildingName'?: string; + /** 公寓单元楼层(公寓专用) */ + 'apartmentUnitFloor'?: string; + /** 入口代码(公寓专用) */ + 'entranceCodeApartment'?: string; + /** 公司名称(公司专用) */ + 'companyName'?: string; + /** 办公楼楼层(公司专用) */ + 'officeFloor'?: string; + /** 酒店名称(酒店专用) */ + 'hotelName'?: string; + /** 酒店房间号(酒店专用) */ + 'hotelRoom'?: string; + /** 入口代码(酒店专用) */ + 'entranceCodeHotel'?: string; + /** 公寓/套房/楼层(其他专用) */ + 'otherLocation'?: string; + /** 公司/楼宇名称(其他专用) */ + 'otherBuilding'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 经度 */ + 'longitude'?: string; + /** 纬度 */ + 'latitude'?: string; + } + + +export type UserAddressVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 地址类型(house,apartment,office,hotel,other) */ + 'type'?: string; + /** 用户ID */ + 'userId'?: number; + /** 配送类型 */ + 'deliveryType'?: string; + /** 配送说明 */ + 'deliveryRemark'?: string; + /** 配送图片URL */ + 'deliveryImage'?: string; + /** 配送图片URLUrl */ + 'deliveryImageUrl'?: string; + /** 门牌号(住宅专用) */ + 'houseNumber'?: string; + /** 其他信息(住宅专用) */ + 'houseExtra'?: string; + /** 楼宇名称(公寓专用) */ + 'buildingName'?: string; + /** 公寓单元楼层(公寓专用) */ + 'apartmentUnitFloor'?: string; + /** 入口代码(公寓专用) */ + 'entranceCodeApartment'?: string; + /** 公司名称(公司专用) */ + 'companyName'?: string; + /** 办公楼楼层(公司专用) */ + 'officeFloor'?: string; + /** 酒店名称(酒店专用) */ + 'hotelName'?: string; + /** 酒店房间号(酒店专用) */ + 'hotelRoom'?: string; + /** 入口代码(酒店专用) */ + 'entranceCodeHotel'?: string; + /** 公寓/套房/楼层(其他专用) */ + 'otherLocation'?: string; + /** 公司/楼宇名称(其他专用) */ + 'otherBuilding'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 经度 */ + 'longitude'?: string; + /** 纬度 */ + 'latitude'?: string; + } + + +export type UserBalanceDetailVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 余额类型 */ + 'balanceType'?: number; + /** 变动金额 */ + 'changeAmount'?: number; + /** 变动后金额 */ + 'afterChangeAmount'?: number; + /** 变动类型:1-增加金额 2-减少金额 */ + 'changeType'?: number; + /** 余额类型说明 */ + 'balanceTypeSpec'?: string; + /** 上级用户信息 */ + 'userVo'?: UserVo; + } + + +export type UserBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 头像 */ + 'avatar'?: string; + /** 苹果唯一标识 */ + 'appleId'?: string; + /** Facebook唯一标识 */ + 'facebookId'?: string; + /** Google唯一标识 */ + 'googleId'?: string; + /** 余额 */ + 'balance'?: number; + /** 积分 */ + 'points'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 账号注销时间 */ + 'logoutTime'?: number; + /** 邀请码 */ + 'invitationCode'?: string; + /** 门店id */ + 'storeId'?: number; + /** 用户昵称 */ + 'nickName'?: string; + /** 用户端口:1-用户端 2-门店端 */ + 'userPort'?: number; + } + + +export type UserBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 头像 */ + 'avatar'?: string; + /** 苹果唯一标识 */ + 'appleId'?: string; + /** Facebook唯一标识 */ + 'facebookId'?: string; + /** Google唯一标识 */ + 'googleId'?: string; + /** 余额 */ + 'balance'?: number; + /** 积分 */ + 'points'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 账号注销时间 */ + 'logoutTime'?: number; + /** 邀请码 */ + 'invitationCode'?: string; + /** 门店id */ + 'storeId'?: number; + /** 用户昵称 */ + 'nickName'?: string; + /** 用户端口:1-用户端 2-门店端 */ + 'userPort'?: number; + } + + +export type UserCardVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 卡号 */ + 'cardNumber'?: string; + /** 卡号唯一标识 */ + 'cardId'?: string; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 是否默认:1-是 2-否 */ + 'isDefault'?: number; + } + + +export type UserCollectBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 收藏对象ID */ + 'targetId'?: number; + /** 收藏对象类型(1-菜谱 2-菜品 3-配菜) */ + 'targetType'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type UserCollectVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 收藏对象ID */ + 'targetId'?: number; + /** 收藏对象类型(1-菜谱 2-菜品 3-配菜) */ + 'targetType'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** --------------以下非数据库字段--------------- */ + 'merchantRecipeVo'?: MerchantRecipeVo; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + 'merchantDishVo'?: MerchantDishVo; + } + + +export type UserCouponBo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 优惠券ID */ + 'couponId'?: number; + /** 兑换码ID */ + 'couponCodeId'?: number; + /** 优惠券中文名称快照 */ + 'snapshotNameZh'?: string; + /** 优惠券英文名称快照 */ + 'snapshotNameEn'?: string; + /** 1-未使用, 2-已使用 */ + 'status'?: number; + /** 领取时间 */ + 'receivedAt'?: number; + /** 使用时间 */ + 'usedAt'?: number; + /** 使用订单ID */ + 'orderId'?: number; + /** 使用订单类型 */ + 'orderType'?: number; + /** 券类型快照 */ + 'snapshotType'?: number; + /** 优惠值快照 */ + 'snapshotDiscount'?: number; + /** 最低消费额度快照 */ + 'snapshotMinAmount'?: number; + /** 商家ID快照 */ + 'snapshotMerchantId'?: number; + /** 有效期开始时间快照 */ + 'snapshotValidStart'?: number; + /** 有效期结束时间快照 */ + 'snapshotValidEnd'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type UserCouponBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + 'id'?: number; + /** 用户ID */ + 'userId': number; + /** 优惠券ID */ + 'couponId': number; + /** 兑换码ID */ + 'couponCodeId'?: number; + /** 优惠券中文名称快照 */ + 'snapshotNameZh': string; + /** 优惠券英文名称快照 */ + 'snapshotNameEn'?: string; + /** 1-未使用, 2-已使用 */ + 'status': number; + /** 领取时间 */ + 'receivedAt'?: number; + /** 使用时间 */ + 'usedAt'?: number; + /** 使用订单ID */ + 'orderId'?: number; + /** 使用订单类型 */ + 'orderType'?: number; + /** 券类型快照 */ + 'snapshotType': number; + /** 优惠值快照 */ + 'snapshotDiscount': number; + /** 最低消费额度快照 */ + 'snapshotMinAmount': number; + /** 商家ID快照 */ + 'snapshotMerchantId'?: number; + /** 有效期开始时间快照 */ + 'snapshotValidStart'?: number; + /** 有效期结束时间快照 */ + 'snapshotValidEnd'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type UserCouponBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + 'id': number; + /** 用户ID */ + 'userId': number; + /** 优惠券ID */ + 'couponId': number; + /** 兑换码ID */ + 'couponCodeId'?: number; + /** 优惠券中文名称快照 */ + 'snapshotNameZh': string; + /** 优惠券英文名称快照 */ + 'snapshotNameEn'?: string; + /** 1-未使用, 2-已使用 */ + 'status': number; + /** 领取时间 */ + 'receivedAt'?: number; + /** 使用时间 */ + 'usedAt'?: number; + /** 使用订单ID */ + 'orderId'?: number; + /** 使用订单类型 */ + 'orderType'?: number; + /** 券类型快照 */ + 'snapshotType': number; + /** 优惠值快照 */ + 'snapshotDiscount': number; + /** 最低消费额度快照 */ + 'snapshotMinAmount': number; + /** 商家ID快照 */ + 'snapshotMerchantId'?: number; + /** 有效期开始时间快照 */ + 'snapshotValidStart'?: number; + /** 有效期结束时间快照 */ + 'snapshotValidEnd'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type UserCouponVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 优惠券ID */ + 'couponId'?: number; + /** 兑换码ID */ + 'couponCodeId'?: number; + /** 优惠券中文名称快照 */ + 'snapshotNameZh'?: string; + /** 优惠券英文名称快照 */ + 'snapshotNameEn'?: string; + /** 优惠券名称快照 */ + 'snapshotName'?: string; + /** 1-未使用, 2-已使用, 3-过期 */ + 'status'?: number; + /** 领取时间 */ + 'receivedAt'?: number; + /** 使用时间 */ + 'usedAt'?: number; + /** 使用订单ID */ + 'orderId'?: number; + /** 使用订单类型 */ + 'orderType'?: number; + /** 券类型快照 */ + 'snapshotType'?: number; + /** 优惠值快照 */ + 'snapshotDiscount'?: number; + /** 最低消费额度快照 */ + 'snapshotMinAmount'?: number; + /** 商家ID快照 */ + 'snapshotMerchantId'?: number; + /** 有效期开始时间快照 */ + 'snapshotValidStart'?: number; + /** 有效期结束时间快照 */ + 'snapshotValidEnd'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + /** 兑换用户信息 */ + 'userVo'?: null; + /** 兑换码 */ + 'couponCodeVo'?: null; + } + + +export type UserInviteVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 父级用户id */ + 'userId'?: number; + /** 被邀请用户id */ + 'inviteUserId'?: number; + /** 是否已赠送上级优惠券 1 否 2 是 */ + 'isSendCoupon'?: number; + 'firstName'?: string; + 'surname'?: string; + 'avatar'?: string; + 'phone'?: string; + 'couponAmount'?: number; + /** 上级用户信息 */ + 'user'?: UserVo; + /** 上级用户信息 */ + 'parentUserVo'?: UserVo; + } + + +export type UserMembershipVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 会员到期时间(时间戳毫秒) */ + 'expireTime'?: number; + /** 用户是否已使用试用会员资格 1是 2 否 */ + 'hasUseFree'?: number; + /** 1-正常 2-删除 */ + 'delFlag'?: number; + } + + +export type UserVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 头像 */ + 'avatar'?: string; + /** 苹果唯一标识 */ + 'appleId'?: string; + /** Facebook唯一标识 */ + 'facebookId'?: string; + /** Google唯一标识 */ + 'googleId'?: string; + /** 余额 */ + 'balance'?: number; + /** 积分 */ + 'points'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 账号注销时间 */ + 'logoutTime'?: number; + /** 邀请码 */ + 'invitationCode'?: string; + /** 订单邮箱 */ + 'orderEmail'?: string; + /** 门店id */ + 'storeId'?: number; + /** 用户昵称 */ + 'nickName'?: string; + /** 用户端口:1-用户端 2-门店端 */ + 'userPort'?: number; + /** 用户角色 */ + 'userRole'?: string; + /** 客户 id */ + 'customerId'?: string; + /** 上级用户信息 */ + 'parentUserVo'?: UserVo; + /** 邀请用户数量 */ + 'inviteUserNumber'?: number; + /** 是否认证成车主 1 否 2 是 */ + 'isCarOwner'?: number; + /** 车主认证状态 1待审核 2 审核通过 3 审核拒绝 */ + 'carOwnerStatus'?: number; + /** 信用分 */ + 'creditScore'?: number; + /** 评分 */ + 'star'?: number; + /** 是否已经弹窗提示过新人优惠券 1否 2 是 */ + 'hasPop'?: number; + /** 车主接单数量 */ + 'receiveOrderNum'?: number; + /** 周配送到期时间 */ + 'weeklyDeliveryExpire'?: number; + 'cid'?: string; + /** 可用优惠券数量 */ + 'canUseCouponNum'?: number; + /** 上级用户信息 */ + 'parentUser'?: UserVo; + /** 车主等级 */ + 'carOwnerLevel'?: string; + /** 已完成的订单数量 */ + 'completedOrderNum'?: number; + /** 已完成的总距离 */ + 'completedDistance'?: number; + /** 会员信息 */ + 'userMembershipVo'?: UserMembershipVo; + /** 收藏数量 */ + 'collectNum'?: number; + /** 订单数量 */ + 'orderNum'?: number; + } + + +export type WithdrawalRecordBoAddGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectAddGroup; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 1-审核中 2-审核成功 3-审核失败 */ + 'status'?: number; + /** 失败原因 */ + 'failReason'?: string; + /** 提现申请时间 */ + 'applyTime'?: number; + /** 提现处理时间 */ + 'handlerTime'?: number; + /** 打款凭证 */ + 'images'?: string; + } + + +export type WithdrawalRecordBoEditGroup = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObjectEditGroup; + /** 主键ID */ + 'id': number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 1-审核中 2-审核成功 3-审核失败 */ + 'status'?: number; + /** 失败原因 */ + 'failReason'?: string; + /** 提现申请时间 */ + 'applyTime'?: number; + /** 提现处理时间 */ + 'handlerTime'?: number; + /** 打款凭证 */ + 'images'?: string; + } + + +export type WithdrawalRecordVo = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + /** 请求参数 */ + 'params'?: MapObject; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 1-审核中 2-审核成功 3-审核失败 */ + 'status'?: number; + /** 失败原因 */ + 'failReason'?: string; + /** 提现申请时间 */ + 'applyTime'?: number; + /** 提现处理时间 */ + 'handlerTime'?: number; + /** 打款凭证 */ + 'images'?: string; + /** 银行名称 */ + 'bankName'?: string; + /** 提现金额 */ + 'withdrawalAmount'?: number; + /** 到账金额 */ + 'receiveAmount'?: number; + /** 提现手续费 */ + 'withdrawalFee'?: number; + /** 上级用户信息 */ + 'userVo'?: UserVo; + /** 商家视图对象 t_merchant */ + 'merchantVo'?: MerchantVo; + } + + +export type XjpmjAppointmentTimeExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 预约开始时间 */ + 'startTime'?: string; + /** 预约结束时间 */ + 'endTime'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type XjpmjAppointmentTimeExportPostResponse = Record; + +export type XjpmjAppointmentTimeidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjAppointmentTimeidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjAppointmentTimeListGetParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 预约开始时间 */ + 'startTime'?: string; + /** 预约结束时间 */ + 'endTime'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjAutomaticCookingMachineRegistrationidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjAutomaticCookingMachineRegistrationidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjAutomaticCookingMachineRegistrationListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjCouponidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjCouponidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjCouponListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjFeaturedMerchantidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjFeaturedMerchantidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjFeaturedMerchantListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjFeedbackidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjFeedbackidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjFeedbackListGetParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家id */ + 'merchantId'?: number; + /** 反馈内容 */ + 'content'?: string; + /** 图片URL列表(JSON数组) */ + 'images'?: string; + /** 联系电话 */ + 'contactPhone'?: string; + /** 1-待处理 2-处理中 3-已处理 */ + 'status'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjHelpCenteridGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjHelpCenteridsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjHelpCenterListGetParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 1 用户 2 商家 */ + 'userPort'?: number; + /** 问题 */ + 'question'?: string; + /** 回答(富文本格式) */ + 'answer'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjMarketingActivityExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 活动名称 */ + 'activityName'?: string; + /** 活动图片URL */ + 'activityImage'?: string; + /** 活动内容(富文本) */ + 'activityContent'?: string; + /** 活动排序(从小到大) */ + 'sort'?: number; + /** 活动开始时间(时间戳) */ + 'startTime'?: number; + /** 活动结束时间(时间戳) */ + 'endTime'?: number; + /** 活动类型(1-新人首单 2-活动日指定菜品折扣) */ + 'activityType'?: number; + /** 指定菜品id集合,逗号分隔,如果为空,则所有菜品都有折扣 */ + 'dishIds'?: string; + /** 折扣 */ + 'discount'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type XjpmjMarketingActivityExportPostResponse = Record; + +export type XjpmjMarketingActivityidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjMarketingActivityidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjMarketingActivityListGetParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 活动名称 */ + 'activityName'?: string; + /** 活动图片URL */ + 'activityImage'?: string; + /** 活动内容(富文本) */ + 'activityContent'?: string; + /** 活动排序(从小到大) */ + 'sort'?: number; + /** 活动开始时间(时间戳) */ + 'startTime'?: number; + /** 活动结束时间(时间戳) */ + 'endTime'?: number; + /** 活动类型(1-新人首单 2-活动日指定菜品折扣) */ + 'activityType'?: number; + /** 指定菜品id集合,逗号分隔,如果为空,则所有菜品都有折扣 */ + 'dishIds'?: string; + /** 折扣 */ + 'discount'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjMerchantDishExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 所属菜单ID */ + 'menuId'?: number; + /** 菜品名称 */ + 'dishName'?: string; + /** 菜品描述 */ + 'dishDescription'?: string; + /** 菜品图片URL */ + 'dishImage'?: string; + /** 原价 */ + 'originalPrice'?: string; + /** 折扣价 */ + 'discountPrice'?: string; + /** 重量(磅) */ + 'weight'?: string; + /** 税费 */ + 'tax'?: string; + /** 总销量 */ + 'salesCount'?: number; + /** 收藏数量 */ + 'collectCount'?: number; + /** 评论数量 */ + 'commentCount'?: number; + /** 浏览数量 */ + 'viewCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分词 逗号分隔 */ + 'words'?: string; + /** 排序 */ + 'sort'?: number; + 'merchantSideDishBoList[0].createBeginTime'?: number; + 'merchantSideDishBoList[0].createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'merchantSideDishBoList[0].filterDisable'?: boolean; + /** 创建者 */ + 'merchantSideDishBoList[0].createBy'?: number; + /** 创建时间 */ + 'merchantSideDishBoList[0].createTime'?: number; + /** 更新者 */ + 'merchantSideDishBoList[0].updateBy'?: number; + /** 更新时间 */ + 'merchantSideDishBoList[0].updateTime'?: number; + 'merchantSideDishBoList[0].params.key.key'?: unknown; + /** 主键ID */ + 'merchantSideDishBoList[0].id'?: number; + /** 商家ID */ + 'merchantSideDishBoList[0].merchantId'?: number; + /** 所属菜品ID */ + 'merchantSideDishBoList[0].dishId'?: number; + /** 配菜名称 */ + 'merchantSideDishBoList[0].sideDishName'?: string; + /** 价格 */ + 'merchantSideDishBoList[0].price'?: string; + /** 重量(磅) */ + 'merchantSideDishBoList[0].weight'?: string; + /** 排序值(从小到大) */ + 'merchantSideDishBoList[0].sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'merchantSideDishBoList[0].delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: string; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: string; + } + + +export type XjpmjMerchantDishExportPostResponse = Record; + +export type XjpmjMerchantDishidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjMerchantDishidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjMerchantDishListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjMerchantExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家logo URL */ + 'logo'?: string; + /** 商家名称 */ + 'merchantName'?: string; + /** 商家位置(具体地址) */ + 'merchantAddress'?: string; + /** 商家经度 */ + 'longitude'?: string; + /** 商家纬度 */ + 'latitude'?: string; + /** 营业时间(多时段分号分隔 格式: MONDAY/TUESDAY/WEDNESDAY 09:00-18:00;THURSDAY/FRIDAY/SATURDAY/SUNDAY 10:00-20:00;) */ + 'businessHours'?: string; + /** 最低起配价 */ + 'minOrderPrice'?: string; + /** 是否支持自取(1-支持 2-不支持) */ + 'selfPickup'?: number; + /** 自取时长(如"30分钟") */ + 'pickupTime'?: string; + /** 是否支持配送(1-支持 2-不支持) */ + 'deliveryService'?: number; + /** 配送时长(如"30分钟") */ + 'deliveryTime'?: string; + /** 配送费 */ + 'deliveryFee'?: string; + /** 店铺图片URL(多张逗号分隔) */ + 'shopImages'?: string; + /** 店铺余额 */ + 'balance'?: string; + /** 店铺总收益 */ + 'totalIncome'?: string; + /** 店铺评分(0-5分) */ + 'rating'?: string; + /** 店铺评论数 */ + 'commentCount'?: number; + /** 菜品均价 */ + 'avgPrice'?: string; + /** 商家分类ID 首页中间 主要经营范围 */ + 'merchantCategoryIds'?: string; + /** 商家标签分类ID 首页上面 */ + 'merchantLabelIds'?: string; + /** 店铺收藏量 */ + 'collectCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 客户 id */ + 'customerId'?: string; + /** 打包盒重量 */ + 'packingBoxWeight'?: string; + } + + +export type XjpmjMerchantExportPostResponse = Record; + +export type XjpmjMerchantidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjMerchantidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjMerchantListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjMerchantOrderExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 订单号 */ + 'orderNo'?: string; + /** 菜品原价 */ + 'originalPrice'?: string; + /** 菜品实际应支付价 */ + 'actualPrice'?: string; + /** 优惠券抵扣价格 */ + 'couponDiscount'?: string; + /** 优惠券ID */ + 'userCouponId'?: number; + /** 税费 */ + 'tax'?: string; + /** 平台手续费 */ + 'platformFee'?: string; + /** 小费 */ + 'tip'?: string; + /** 小费折扣 */ + 'tipDiscount'?: string; + /** 配送费 */ + 'deliveryFee'?: string; + /** 是否支付周配送费(1-是 2-否) */ + 'weeklyDeliveryFee'?: number; + /** 周配送费 */ + 'weeklyDeliveryFeeAmount'?: string; + /** 实付金额 */ + 'paidAmount'?: string; + /** 商家实际到账金额 */ + 'merchantReceiveAmount'?: string; + /** 总重量(磅) */ + 'totalWeight'?: string; + /** 菜品重量(不包含配菜) */ + 'dishWeight'?: string; + /** 配菜重量 */ + 'sideDishWeight'?: string; + /** 打包盒重量 */ + 'packagingWeight'?: string; + /** 订单状态 */ + 'orderStatus'?: number; + /** 退款状态 */ + 'refundStatus'?: number; + /** 用户取消原因 */ + 'cancelReason'?: string; + /** 取消时间 */ + 'cancelTime'?: number; + /** 商家拒绝原因 */ + 'rejectReason'?: string; + /** 支付状态:1-支付中 2-支付成功 3-支付失败 */ + 'payStatus'?: number; + /** 支付方式 */ + 'payMethod'?: number; + /** 支付卡号 */ + 'cardNumber'?: string; + /** 支付卡三方标识 */ + 'cardId'?: string; + /** 三方支付退款参数 */ + 'refundParam'?: string; + /** 是否已捕获(1-未捕获 2-已捕获) */ + 'capturedFlag'?: number; + /** 配送员手机号 */ + 'deliveryPhone'?: string; + /** 配送员头像URL */ + 'deliveryAvatar'?: string; + /** 配送员姓 */ + 'deliverySurname'?: string; + /** 配送员名 */ + 'deliveryFirstName'?: string; + /** 预约时间(开始时间) */ + 'startScheduledTime'?: number; + /** 预约时间(结束时间) */ + 'endScheduledTime'?: number; + /** 交付时间类型(1-立即交付 2-预约交付) */ + 'deliveryType'?: number; + /** 收货方式(1-派送 2-自取) */ + 'receiveMethod'?: number; + /** 派送方式(如放门口或者交到顾客手中) */ + 'deliveryMethod'?: string; + /** 订单备注 */ + 'orderRemark'?: string; + /** 支付时间 */ + 'payTime'?: number; + /** 接单时间 */ + 'receiveTime'?: number; + /** 开始配送时间 */ + 'startDeliveryTime'?: number; + /** 送达时间 */ + 'deliveryTime'?: number; + /** 送达图片 */ + 'deliveryPhotos'?: string; + /** 邀请分佣 */ + 'inviteFee'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + } + + +export type XjpmjMerchantOrderExportPostResponse = Record; + +export type XjpmjMerchantOrderidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjMerchantOrderidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjMerchantOrderListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjMerchantRecipeExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 商家ID */ + 'merchantId'?: number; + /** 菜谱名称 */ + 'recipeName'?: string; + /** 食材描述 */ + 'ingredients'?: string; + /** 菜谱分类ID */ + 'recipeCategoryId'?: number; + /** 菜谱图片URL */ + 'recipeImage'?: string; + /** 收藏量 */ + 'collectCount'?: number; + /** 浏览量 */ + 'viewCount'?: number; + /** 点赞量 */ + 'likeCount'?: number; + /** 评论量 */ + 'commentCount'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 商户名称 */ + 'merchantName'?: string; + /** 商家分类id集合 */ + 'merchantCategoryIdList'?: string; + /** 商家分类标签id集合 */ + 'merchantLabelIdList'?: string; + } + + +export type XjpmjMerchantRecipeExportPostResponse = Record; + +export type XjpmjMerchantRecipeidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjMerchantRecipeidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjMerchantRecipeListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjRecipeCategoryExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 菜谱分类名称 */ + 'categoryNameZh'?: string; + /** 菜谱分类名称 */ + 'categoryNameEn'?: string; + /** 菜谱分类名称 */ + 'categoryName'?: string; + /** 分类图片URL */ + 'categoryImage'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type XjpmjRecipeCategoryExportPostResponse = Record; + +export type XjpmjRecipeCategoryidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjRecipeCategoryidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjRecipeCategoryListGetParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 菜谱分类名称 */ + 'categoryNameZh'?: string; + /** 菜谱分类名称 */ + 'categoryNameEn'?: string; + /** 菜谱分类名称 */ + 'categoryName'?: string; + /** 分类图片URL */ + 'categoryImage'?: string; + /** 排序值(从小到大) */ + 'sort'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjShopSettlementExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 店铺名称 */ + 'shopName'?: string; + /** 所属类型(关联店铺类型表) */ + 'shopTypeId'?: number; + /** 街道 */ + 'street'?: string; + /** 市 */ + 'city'?: string; + /** 州 */ + 'state'?: string; + /** 邮编 */ + 'postcode'?: string; + /** 详细地址 */ + 'detailAddress'?: string; + /** 店铺介绍(500字限制) */ + 'description'?: string; + /** 法人身份证照片URL */ + 'legalIdImage'?: string; + /** 营业执照照片URL */ + 'businessLicenseImage'?: string; + /** 审核状态(1-待审核 2-通过 3-拒绝) */ + 'auditStatus'?: number; + /** 拒绝原因 */ + 'rejectReason'?: string; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户手机号 */ + 'userPhone'?: string; + /** 用户名 */ + 'userName'?: string; + } + + +export type XjpmjShopSettlementExportPostResponse = Record; + +export type XjpmjShopSettlementidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjShopSettlementListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjUserBalanceDetailListGetParams = + { + /** 用户 id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 开始时间 */ + 'createBeginTime'?: number; + /** 结束时间 */ + 'createEndTime'?: number; + /** 收入类型 1-增加金额 2-减少金额 */ + 'changeType'?: number; + /** 明细类型 */ + 'balanceTypeList'?: string; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjUserCouponExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + 'id'?: number; + /** 用户ID */ + 'userId'?: number; + /** 优惠券ID */ + 'couponId'?: number; + /** 兑换码ID */ + 'couponCodeId'?: number; + /** 优惠券中文名称快照 */ + 'snapshotNameZh'?: string; + /** 优惠券英文名称快照 */ + 'snapshotNameEn'?: string; + /** 1-未使用, 2-已使用 */ + 'status'?: number; + /** 领取时间 */ + 'receivedAt'?: number; + /** 使用时间 */ + 'usedAt'?: number; + /** 使用订单ID */ + 'orderId'?: number; + /** 使用订单类型 */ + 'orderType'?: number; + /** 券类型快照 */ + 'snapshotType'?: number; + /** 优惠值快照 */ + 'snapshotDiscount'?: string; + /** 最低消费额度快照 */ + 'snapshotMinAmount'?: string; + /** 商家ID快照 */ + 'snapshotMerchantId'?: number; + /** 有效期开始时间快照 */ + 'snapshotValidStart'?: number; + /** 有效期结束时间快照 */ + 'snapshotValidEnd'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + } + + +export type XjpmjUserCouponExportPostResponse = Record; + +export type XjpmjUserCouponidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjUserCouponidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjUserCouponListPostParams = + { + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjUserExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 登录密码 */ + 'loginPwd'?: string; + /** 手机号 */ + 'phone'?: string; + /** 区号 */ + 'areaCode'?: string; + /** 邮箱 */ + 'email'?: string; + 'firstName'?: string; + 'surname'?: string; + /** 头像 */ + 'avatar'?: string; + /** 苹果唯一标识 */ + 'appleId'?: string; + /** Facebook唯一标识 */ + 'facebookId'?: string; + /** Google唯一标识 */ + 'googleId'?: string; + /** 余额 */ + 'balance'?: string; + /** 积分 */ + 'points'?: number; + /** 支付密码 */ + 'payPwd'?: string; + /** 账号注销时间 */ + 'logoutTime'?: number; + /** 邀请码 */ + 'invitationCode'?: string; + /** 门店id */ + 'storeId'?: number; + /** 用户昵称 */ + 'nickName'?: string; + /** 用户端口:1-用户端 2-门店端 */ + 'userPort'?: number; + } + + +export type XjpmjUserExportPostResponse = Record; + +export type XjpmjUseridGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjUseridsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjUserListGetParams = + { + /** 名字 */ + 'firstName'?: string; + /** 姓氏 */ + 'surname'?: string; + /** 姓名(用于展示) */ + 'name'?: string; + /** 手机号/登录账号 */ + 'phone'?: string; + /** 会员等级, null 或 "" 表示查询全部 */ + 'memberLevel'?: string; + /** 查询入口:1-用户列表 */ + 'selectEntry'?: number; + /** selectEntry=3 时传 */ + 'userId'?: number; + /** selectEntry=4,5 时传 */ + 'storeId'?: number; + /** 昵称 */ + 'nickName'?: string; + /** 邀请人手机号 */ + 'parentPhone'?: string; + /** 是否会员 1 是 2 否 */ + 'isMember'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + +export type XjpmjWithdrawalRecordExportPostParams = + { + 'createBeginTime'?: number; + 'createEndTime'?: number; + /** 查询列表是否过滤掉禁用状态, 默认不过滤 */ + 'filterDisable'?: boolean; + /** 创建者 */ + 'createBy'?: number; + /** 创建时间 */ + 'createTime'?: number; + /** 更新者 */ + 'updateBy'?: number; + /** 更新时间 */ + 'updateTime'?: number; + 'params.key.key'?: unknown; + /** 主键ID */ + 'id'?: number; + /** 1-正常 2-删除 3-禁用 */ + 'delFlag'?: number; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 银行卡号 */ + 'card'?: string; + /** 姓 */ + 'surname'?: string; + /** 名 */ + 'name'?: string; + /** 1-审核中 2-审核成功 3-审核失败 */ + 'status'?: number; + /** 失败原因 */ + 'failReason'?: string; + /** 提现申请时间 */ + 'applyTime'?: number; + /** 提现处理时间 */ + 'handlerTime'?: number; + /** 打款凭证 */ + 'images'?: string; + } + + +export type XjpmjWithdrawalRecordExportPostResponse = Record; + +export type XjpmjWithdrawalRecordidGetParams = + { + /** 主键 */ + 'id': number; + } + + +export type XjpmjWithdrawalRecordidsDeleteParams = + { + /** 主键串 */ + 'ids': number[]; + } + + +export type XjpmjWithdrawalRecordListGetParams = + { + /** 提现开始时间 */ + 'createBeginTime'?: number; + /** 提现结束时间 */ + 'createEndTime'?: number; + /** 处理时间-开始 */ + 'handlerStartTime'?: number; + /** 处理时间-结束 */ + 'handlerEndTime'?: number; + /** 车主手机号 */ + 'phone'?: string; + /** 车主姓 */ + 'firstName'?: string; + /** 车主名 */ + 'surname'?: string; + /** 姓名(仅用于展示) */ + 'name'?: string; + /** 用户id */ + 'userId'?: number; + /** 用户类型 */ + 'userPort'?: number; + /** 分页大小 */ + 'pageSize'?: number; + /** 当前页数 */ + 'pageNum'?: number; + /** 排序列 */ + 'orderByColumn'?: string; + /** 排序的方向desc或者asc */ + 'isAsc'?: string; + } + + \ No newline at end of file diff --git a/src/service/user.ts b/src/service/user.ts new file mode 100644 index 0000000..b2a987f --- /dev/null +++ b/src/service/user.ts @@ -0,0 +1,843 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 加入黑名单 POST /app/user/addBlackList */ +export async function appUserAddBlackListPost({ + body, + options, +}: { + body: API.BlockBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/addBlackList', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增银行账户 POST /app/user/bank/add */ +export async function appUserBankAddPost({ + body, + options, +}: { + body: API.AddBankBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bank/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除银行账户 POST /app/user/bank/delete */ +export async function appUserBankDeletePost({ + body, + options, +}: { + body: API.OnlyIdBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bank/delete', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取银行账户详细信息 POST /app/user/bank/detail */ +export async function appUserBankDetailPost({ + body, + options, +}: { + body: API.OnlyIdBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bank/detail', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询银行账户列表 POST /app/user/bank/list */ +export async function appUserBankListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserBankListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/user/bank/list', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 修改银行账户 POST /app/user/bank/update */ +export async function appUserBankUpdatePost({ + body, + options, +}: { + body: API.UpdateBankBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bank/update', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 绑定新邮箱 POST /app/user/bindNewEmail */ +export async function appUserBindNewEmailPost({ + body, + options, +}: { + body: API.BindEmailBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bindNewEmail', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 绑定新手机号 POST /app/user/bindNewPhone */ +export async function appUserBindNewPhonePost({ + body, + options, +}: { + body: API.BindPhoneBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/bindNewPhone', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除用户卡 POST /app/user/card/delete */ +export async function appUserCardDeletePost({ + body, + options, +}: { + body: API.AppUserCardBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/card/delete', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 用户卡列表 POST /app/user/card/list */ +export async function appUserCardListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserCardListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/user/card/list', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 新增用户卡 POST /app/user/card/save */ +export async function appUserCardSavePost({ + body, + options, +}: { + body: API.AppUserCardBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/card/save', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 查询默认 POST /app/user/card/selectDefault */ +export async function appUserCardSelectDefaultPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/user/card/selectDefault', { + method: 'POST', + ...(options || {}), + }); +} + +/** 修改默认 POST /app/user/card/updateDefault */ +export async function appUserCardUpdateDefaultPost({ + body, + options, +}: { + body: API.AppUserCardBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/card/updateDefault', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 校验邮箱是否被使用 POST /app/user/checkEmailUnique */ +export async function appUserCheckEmailUniquePost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/checkEmailUnique', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 校验旧邮箱(绑定邮箱) POST /app/user/checkOldEmail */ +export async function appUserCheckOldEmailPost({ + body, + options, +}: { + body: API.BindEmailBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/checkOldEmail', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 校验旧手机号(绑定新手机号) POST /app/user/checkOldPhone */ +export async function appUserCheckOldPhonePost({ + body, + options, +}: { + body: API.BindPhoneBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/checkOldPhone', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 校验手机号是否被使用 POST /app/user/checkPhoneUnique */ +export async function appUserCheckPhoneUniquePost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/checkPhoneUnique', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改登录密码 POST /app/user/editLoginPwd */ +export async function appUserEditLoginPwdPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/editLoginPwd', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改支付密码 POST /app/user/editPayPwd */ +export async function appUserEditPayPwdPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/editPayPwd', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改用户信息 POST /app/user/editUserInfo */ +export async function appUserEditUserInfoPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/editUserInfo', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 忘记支付密码 POST /app/user/forgetPayPwd */ +export async function appUserForgetPayPwdPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/forgetPayPwd', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 忘记密码/可不传邮箱 POST /app/user/forgetPwd */ +export async function appUserForgetPwdPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/forgetPwd', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 忘记密码/可不传邮箱(未登录之前) POST /app/user/forgetPwdNotLogin */ +export async function appUserForgetPwdNotLoginPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/forgetPwdNotLogin', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据邮箱查询用户信息 POST /app/user/getByEmail */ +export async function appUserGetByEmailPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/getByEmail', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据手机号查询用户信息 POST /app/user/getByPhone */ +export async function appUserGetByPhonePost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/getByPhone', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取登录用户信息 GET /app/user/getLoginUser */ +export async function appUserGetLoginUserGet({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/user/getLoginUser', { + method: 'GET', + ...(options || {}), + }); +} + +/** 注销账号 POST /app/user/logOff */ +export async function appUserLogOffPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/logOff', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 退出登录 POST /app/user/logout */ +export async function appUserLogoutPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/user/logout', { + method: 'POST', + ...(options || {}), + }); +} + +/** 谷歌换绑 POST /app/user/rebindGoogle */ +export async function appUserRebindGooglePost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/rebindGoogle', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 邮箱/手机号注册, 手机号注册不传邮箱即可, 手机号校验类型都一样,不用改 POST /app/user/register */ +export async function appUserRegisterPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/register', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 记录新人优惠券弹窗已经弹过了 POST /app/user/setHasPop */ +export async function appUserSetHasPopPost({ + options, +}: { + options?: CustomRequestOptions; +}) { + return request('/app/user/setHasPop', { + method: 'POST', + ...(options || {}), + }); +} + +/** 设置支付密码 POST /app/user/setPayPwd */ +export async function appUserSetPayPwdPost({ + body, + options, +}: { + body: API.AppUserBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/setPayPwd', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 余额明细列表 POST /app/user/userBalanceDetail/balanceDetailList */ +export async function appUserUserBalanceDetailBalanceDetailListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserUserBalanceDetailBalanceDetailListPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/app/user/userBalanceDetail/balanceDetailList', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 我的邀请列表 type 1:invited 2:completed 3:expired POST /app/user/userInvite/inviteList */ +export async function appUserUserInviteInviteListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserUserInviteInviteListPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/app/user/userInvite/inviteList', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 申请提现 POST /app/user/withdrawal/applyWithdrawal */ +export async function appUserWithdrawalApplyWithdrawalPost({ + body, + options, +}: { + body: API.ApplyWithdrawalBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/withdrawal/applyWithdrawal', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 实时计算到账金额和手续费 POST /app/user/withdrawal/computeAmountFee */ +export async function appUserWithdrawalComputeAmountFeePost({ + body, + options, +}: { + body: API.ComputeAmountFeeBo; + options?: CustomRequestOptions; +}) { + return request( + '/app/user/withdrawal/computeAmountFee', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** 提现记录详细信息 POST /app/user/withdrawal/detail */ +export async function appUserWithdrawalDetailPost({ + body, + options, +}: { + body: API.OnlyIdBo; + options?: CustomRequestOptions; +}) { + return request('/app/user/withdrawal/detail', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 提现记录列表 POST /app/user/withdrawal/list */ +export async function appUserWithdrawalListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserWithdrawalListPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/app/user/withdrawal/list', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 修改用户 PUT /xjpmj/user */ +export async function xjpmjUserPut({ + body, + options, +}: { + body: API.UserBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增用户 POST /xjpmj/user */ +export async function xjpmjUserPost({ + body, + options, +}: { + body: API.UserBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取用户详细信息 GET /xjpmj/user/${param0} */ +export async function xjpmjUserIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUseridGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/user/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除用户 DELETE /xjpmj/user/${param0} */ +export async function xjpmjUserIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUseridsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/user/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出用户列表 POST /xjpmj/user/export */ +export async function xjpmjUserExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserExportPostParams; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user/export', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 查询用户列表 GET /xjpmj/user/list */ +export async function xjpmjUserListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserListGetParams; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user/list', { + method: 'GET', + params: { + // selectEntry has a default value: 1 + selectEntry: '1', + + ...params, + }, + ...(options || {}), + }); +} + +/** 会员续期 POST /xjpmj/user/membershipRenewal */ +export async function xjpmjUserMembershipRenewalPost({ + body, + options, +}: { + body: API.MembershipRenewalBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user/membershipRenewal', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 重置密码 POST /xjpmj/user/resetPassword */ +export async function xjpmjUserResetPasswordPost({ + body, + options, +}: { + body: API.ResetPasswordBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user/resetPassword', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改用户余额 POST /xjpmj/user/updateBalance */ +export async function xjpmjUserUpdateBalancePost({ + body, + options, +}: { + body: API.UpdateUserAmount; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/user/updateBalance', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/userAddress.ts b/src/service/userAddress.ts new file mode 100644 index 0000000..7ad7ff8 --- /dev/null +++ b/src/service/userAddress.ts @@ -0,0 +1,78 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 新增用户地址 POST /app/userAddress/add */ +export async function appUserAddressAddPost({ + body, + options, +}: { + body: API.UserAddressBo; + options?: CustomRequestOptions; +}) { + return request('/app/userAddress/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 编辑用户地址 POST /app/userAddress/edit */ +export async function appUserAddressEditPost({ + body, + options, +}: { + body: API.UserAddressBo; + options?: CustomRequestOptions; +}) { + return request('/app/userAddress/edit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 用户地址列表 POST /app/userAddress/list */ +export async function appUserAddressListPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.AppUserAddressListPostParams; + options?: CustomRequestOptions; +}) { + return request('/app/userAddress/list', { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 批量删除用户地址 POST /app/userAddress/remove */ +export async function appUserAddressRemovePost({ + body, + options, +}: { + body: API.AppUserAddressRemovePostBody; + options?: CustomRequestOptions; +}) { + return request('/app/userAddress/remove', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/userBalanceDetail.ts b/src/service/userBalanceDetail.ts new file mode 100644 index 0000000..44c63a5 --- /dev/null +++ b/src/service/userBalanceDetail.ts @@ -0,0 +1,27 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 查询用户余额明细列表 GET /xjpmj/userBalanceDetail/list */ +export async function xjpmjUserBalanceDetailListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserBalanceDetailListGetParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/userBalanceDetail/list', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/src/service/userCoupon.ts b/src/service/userCoupon.ts new file mode 100644 index 0000000..825eba5 --- /dev/null +++ b/src/service/userCoupon.ts @@ -0,0 +1,123 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改用户优惠券关联 PUT /xjpmj/userCoupon */ +export async function xjpmjUserCouponPut({ + body, + options, +}: { + body: API.UserCouponBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/userCoupon', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增用户优惠券关联 POST /xjpmj/userCoupon */ +export async function xjpmjUserCouponPost({ + body, + options, +}: { + body: API.UserCouponBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/userCoupon', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取用户优惠券关联详细信息 GET /xjpmj/userCoupon/${param0} */ +export async function xjpmjUserCouponIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserCouponidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/userCoupon/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除用户优惠券关联 DELETE /xjpmj/userCoupon/${param0} */ +export async function xjpmjUserCouponIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserCouponidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/userCoupon/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 导出用户优惠券关联列表 POST /xjpmj/userCoupon/export */ +export async function xjpmjUserCouponExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserCouponExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/userCoupon/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询用户优惠券关联列表 POST /xjpmj/userCoupon/list */ +export async function xjpmjUserCouponListPost({ + params, + body, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjUserCouponListPostParams; + body: API.UserCouponBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/userCoupon/list', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + params: { + ...params, + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/version.ts b/src/service/version.ts new file mode 100644 index 0000000..05c080e --- /dev/null +++ b/src/service/version.ts @@ -0,0 +1,24 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 版本更新 POST /app/version/isUpdateVersion */ +export async function appVersionIsUpdateVersionPost({ + body, + options, +}: { + body: API.IsUpdateVersionBo; + options?: CustomRequestOptions; +}) { + return request('/app/version/isUpdateVersion', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/service/withdrawalRecord.ts b/src/service/withdrawalRecord.ts new file mode 100644 index 0000000..1183264 --- /dev/null +++ b/src/service/withdrawalRecord.ts @@ -0,0 +1,138 @@ +/* eslint-disable */ +// @ts-ignore +import request from '@/http/vue-query'; +import type { CustomRequestOptions } from '@/http/types'; + +import * as API from './types'; + +/** 修改钱包提现记录 PUT /xjpmj/withdrawalRecord */ +export async function xjpmjWithdrawalRecordPut({ + body, + options, +}: { + body: API.WithdrawalRecordBoEditGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/withdrawalRecord', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 新增钱包提现记录 POST /xjpmj/withdrawalRecord */ +export async function xjpmjWithdrawalRecordPost({ + body, + options, +}: { + body: API.WithdrawalRecordBoAddGroup; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/withdrawalRecord', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取钱包提现记录详细信息 GET /xjpmj/withdrawalRecord/${param0} */ +export async function xjpmjWithdrawalRecordIdGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjWithdrawalRecordidGetParams; + options?: CustomRequestOptions; +}) { + const { id: param0, ...queryParams } = params; + + return request(`/xjpmj/withdrawalRecord/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 删除钱包提现记录 DELETE /xjpmj/withdrawalRecord/${param0} */ +export async function xjpmjWithdrawalRecordIdsDelete({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjWithdrawalRecordidsDeleteParams; + options?: CustomRequestOptions; +}) { + const { ids: param0, ...queryParams } = params; + + return request(`/xjpmj/withdrawalRecord/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** 提现审核 POST /xjpmj/withdrawalRecord/audit */ +export async function xjpmjWithdrawalRecordAuditPost({ + body, + options, +}: { + body: API.AuditBo; + options?: CustomRequestOptions; +}) { + return request('/xjpmj/withdrawalRecord/audit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 导出钱包提现记录列表 POST /xjpmj/withdrawalRecord/export */ +export async function xjpmjWithdrawalRecordExportPost({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjWithdrawalRecordExportPostParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/withdrawalRecord/export', + { + method: 'POST', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 查询钱包提现记录列表 GET /xjpmj/withdrawalRecord/list */ +export async function xjpmjWithdrawalRecordListGet({ + params, + options, +}: { + // 叠加生成的Param类型 (非body参数openapi默认没有生成对象) + params: API.XjpmjWithdrawalRecordListGetParams; + options?: CustomRequestOptions; +}) { + return request( + '/xjpmj/withdrawalRecord/list', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/src/shime-uni.d.ts b/src/shime-uni.d.ts new file mode 100644 index 0000000..31b41ca --- /dev/null +++ b/src/shime-uni.d.ts @@ -0,0 +1,14 @@ +import 'vue' +import type {AttributifyAttributes} from '@unocss/preset-attributify' + +declare module '@vue/runtime-core' { + type Hooks = App.AppInstance & Page.PageInstance + + interface ComponentCustomOptions extends Hooks { + } +} + +declare module '@vue/runtime-dom' { + interface HTMLAttributes extends AttributifyAttributes { + } +} \ No newline at end of file diff --git a/src/static/app/images/100204.png b/src/static/app/images/100204.png new file mode 100644 index 0000000..133ad6a Binary files /dev/null and b/src/static/app/images/100204.png differ diff --git a/src/static/app/images/100207.png b/src/static/app/images/100207.png new file mode 100644 index 0000000..9df6191 Binary files /dev/null and b/src/static/app/images/100207.png differ diff --git a/src/static/app/images/100208.png b/src/static/app/images/100208.png new file mode 100644 index 0000000..84fe491 Binary files /dev/null and b/src/static/app/images/100208.png differ diff --git a/src/static/app/images/100209.png b/src/static/app/images/100209.png new file mode 100644 index 0000000..fc70d18 Binary files /dev/null and b/src/static/app/images/100209.png differ diff --git a/src/static/app/js/updateView.ts b/src/static/app/js/updateView.ts new file mode 100644 index 0000000..57c7a1c --- /dev/null +++ b/src/static/app/js/updateView.ts @@ -0,0 +1,352 @@ +import {installApp} from '@/utils/update' +import {useConfigStore} from '@/store' +import Config from "@/config"; +import {i18n} from "@/locale"; + +type UpdateView = { + mask: PlusNativeObjView | null + view: PlusNativeObjView | null + viewHotFixInit: () => void + viewHotFixUpdate: (progress: number) => void + viewHotFixHide: () => void +} + +type TipView = { + mask: PlusNativeObjView | null + view: PlusNativeObjView | null + viewHotFixInit: (versionInfo: any, platform: any) => void + viewHotFixHide: () => void +} + +const updateView: UpdateView = { + mask: null, + view: null, + viewHotFixInit() { + if (!this.mask && plus.nativeObj.View) { + this.mask = new plus.nativeObj.View('viewHotFixMask', { + bottom: '0px', + left: '0px', + top: '0px', + width: '100%', + // position: 'dock' + }) + } + + this.mask?.drawRect({ + color: 'rgba(0, 0, 0, 0.4)', + // color: 'rgba(255, 255, 255, 0.0)'// 有颜色 + }) + this.mask?.addEventListener( + 'click', + () => { + console.log('--------------->view touchend') + }, + false, + ) + this.mask?.show() + + if (!this.view && plus.nativeObj.View) { + this.view = new plus.nativeObj.View( + 'viewHotFixView', + { + top: '45%', + left: '5%', + width: '90%', + height: '80px', + position: 'dock', + }, + [ + { + tag: 'rect', + id: 'processGB', + position: { + bottom: '35px', + left: '5%', + width: '90%', + height: '9px', + }, + rectStyles: { + color: '#E5E5E5', + radius: '12px', + }, + }, + { + tag: 'rect', + id: 'processFR', + position: { + bottom: '35px', + left: '5%', + width: '0', + height: '9px', + }, + rectStyles: { + color: '#2D2D2D', + radius: '12px', + }, + }, + { + tag: 'font', + id: 'process', + text: '0%', + position: { + bottom: '50px', + left: '0px', + width: '100%', + height: '30px', + }, + textStyles: { + align: 'center', + color: '#fff', + size: '15px', + }, + }, + ], + ) + } + this.view?.show() + }, + viewHotFixUpdate(progress) { + this.view?.drawText( + `${progress}%`, + { + bottom: '50px', + left: '0px', + width: '100%', + height: '30px', + }, + { + align: 'center', + color: '#fff', + size: '15px', + }, + 'process', + ) + + this.view?.drawRect( + { + color: '#333', + radius: '12px', + }, + { + bottom: '35px', + left: '5%', + width: progress * 0.9 + '%', + height: '9px', + }, + 'processFR', + ) + }, + viewHotFixHide() { + this.view && this.view.hide() + this.mask && this.mask.hide() + }, +} + +const tipView: TipView = { + mask: null, + view: null, + viewHotFixInit(versionInfo, platform) { + const configStore = useConfigStore() + if (!this.mask && plus.nativeObj.View) { + this.mask = new plus.nativeObj.View('viewHotTipFixMask', { + bottom: '0px', + left: '0px', + top: '0px', + width: '100%', + // position: 'dock' + }) + } + + this.mask?.drawRect({ + color: 'rgba(0, 0, 0, 0.4)', + }) + if (this.mask?.isVisible()) { + this.mask?.hide() + } + this.mask?.show() + const screenWidth = configStore.screenWidth + + const maskWidth = screenWidth * 0.9 + console.log('maskWidth', maskWidth) + if (!this.view && plus.nativeObj.View) { + this.view = new plus.nativeObj.View( + 'viewHotTipView', + { + top: '36%', + left: '5%', + width: maskWidth + 'px', + height: '200px', + position: 'dock', + }, + + [ + { + tag: 'rect', + id: 'container', + position: { + bottom: '0', + left: '0', + width: '100%', + height: '100%', + }, + rectStyles: { + color: '#f5f5f5', + radius: '14px', + }, + }, + { + tag: 'font', + id: 'icon', + text: versionInfo.versionNo + ' ' + versionInfo.title, + position: { + top: '16px', + left: '0', + width: '100%', + height: '16px', + }, + textStyles: { + align: 'center', + color: '#2D2D2D', + size: '15px', + weight: 'bold', + }, + }, + + { + tag: 'font', + id: 'content', + text: versionInfo.content, + position: { + top: '42px', + left: '20px', + width: maskWidth - 40 + 'px', + height: '102px', + }, + textStyles: { + align: 'left', + color: '#2D2D2D', + size: '13px', + whiteSpace: 'normal', + // @ts-ignore + overflow: 'ellipsis', + }, + }, + + { + tag: 'rect', + id: 'btnLeft', + position: { + bottom: '15px', + left: '36px', + width: '84px', + height: '25px', + }, + rectStyles: { + color: '#E5E5E5', + radius: '14px', + }, + }, + { + tag: 'font', + id: 'btnLeftText', + text: i18n.global.t('common.cancel'), + position: { + bottom: '15px', + left: '36px', + width: '84px', + height: '25px', + }, + textStyles: { + align: 'center', + color: '#2D2D2D', + size: '14px', + }, + }, + { + tag: 'rect', + id: 'btnRight', + position: { + bottom: '15px', + left: maskWidth - 120 + 'px', + width: '84px', + height: '25px', + }, + rectStyles: { + color: '#333', + radius: '14px', + }, + }, + { + tag: 'font', + id: 'btnRightText', + text: i18n.global.t('common.confirm'), + position: { + bottom: '15px', + left: maskWidth - 120 + 'px', + width: '84px', + height: '25px', + }, + textStyles: { + align: 'center', + color: '#fff', + size: '14px', + }, + }, + ], + ) + } + if (this.view?.isVisible()) { + this.view?.hide() + } + this.view?.show() + + this.view?.setTouchEventRect([ + { + top: '155px', + left: '36px', + width: '84px', + height: '25px', + }, + { + top: '155px', + left: maskWidth - 120 + 'px', + width: '84px', + height: '25px', + }, + ]) + + this.view?.addEventListener('click', (event) => { + console.log('=>(updateView.js:326) cancelBtn', event) + const {screenY, clientY, clientX} = event + if (screenY - clientX - clientY > 50) { + this.viewHotFixHide() + } + }) + + this.view?.addEventListener('click', (event) => { + console.log('=>(updateView.js:326) confirmBtn', event) + const {screenY, clientY, clientX} = event + if (screenY - clientX - clientY < 120) { + this.viewHotFixHide() + installApp(versionInfo.url) + // if (platform === 'Android') { + // } else { + // plus.runtime.launchApplication( + // { + // action: `itms-apps://itunes.apple.com/cn/app/id${Config.iosId}?mt=8`, + // }, + // function (e) { + // console.log('e', e) + // }, + // ) + // } + } + }) + }, + viewHotFixHide() { + this.view && this.view.hide() + this.mask && this.mask.hide() + }, +} + +export {updateView, tipView} diff --git a/src/static/fonts/UberMoveBold.otf b/src/static/fonts/UberMoveBold.otf new file mode 100644 index 0000000..b1a878d Binary files /dev/null and b/src/static/fonts/UberMoveBold.otf differ diff --git a/src/static/fonts/UberMoveMedium.otf b/src/static/fonts/UberMoveMedium.otf new file mode 100644 index 0000000..689e060 Binary files /dev/null and b/src/static/fonts/UberMoveMedium.otf differ diff --git a/src/static/fonts/UberMoveRegular.ttf b/src/static/fonts/UberMoveRegular.ttf new file mode 100644 index 0000000..ed5b03a Binary files /dev/null and b/src/static/fonts/UberMoveRegular.ttf differ diff --git a/src/static/images/16033@2x.png b/src/static/images/16033@2x.png new file mode 100644 index 0000000..3b671b0 Binary files /dev/null and b/src/static/images/16033@2x.png differ diff --git a/src/static/images/50@2x.png b/src/static/images/50@2x.png new file mode 100644 index 0000000..0a22ffa Binary files /dev/null and b/src/static/images/50@2x.png differ diff --git a/src/static/images/chef/1.png b/src/static/images/chef/1.png new file mode 100644 index 0000000..e0ed183 Binary files /dev/null and b/src/static/images/chef/1.png differ diff --git a/src/static/images/chef/100.png b/src/static/images/chef/100.png new file mode 100644 index 0000000..2e62134 Binary files /dev/null and b/src/static/images/chef/100.png differ diff --git a/src/static/images/chef/100190.png b/src/static/images/chef/100190.png new file mode 100644 index 0000000..8f6fa9d Binary files /dev/null and b/src/static/images/chef/100190.png differ diff --git a/src/static/images/chef/100191.png b/src/static/images/chef/100191.png new file mode 100644 index 0000000..cc6c19a Binary files /dev/null and b/src/static/images/chef/100191.png differ diff --git a/src/static/images/chef/100192.png b/src/static/images/chef/100192.png new file mode 100644 index 0000000..9c571fe Binary files /dev/null and b/src/static/images/chef/100192.png differ diff --git a/src/static/images/chef/100193.png b/src/static/images/chef/100193.png new file mode 100644 index 0000000..bca2f10 Binary files /dev/null and b/src/static/images/chef/100193.png differ diff --git a/src/static/images/chef/100194.png b/src/static/images/chef/100194.png new file mode 100644 index 0000000..5018b5c Binary files /dev/null and b/src/static/images/chef/100194.png differ diff --git a/src/static/images/chef/100202.png b/src/static/images/chef/100202.png new file mode 100644 index 0000000..bc12f55 Binary files /dev/null and b/src/static/images/chef/100202.png differ diff --git a/src/static/images/chef/100404.png b/src/static/images/chef/100404.png new file mode 100644 index 0000000..57687ea Binary files /dev/null and b/src/static/images/chef/100404.png differ diff --git a/src/static/images/chef/100414@2x.png b/src/static/images/chef/100414@2x.png new file mode 100644 index 0000000..d5dd52d Binary files /dev/null and b/src/static/images/chef/100414@2x.png differ diff --git a/src/static/images/chef/100415@2x.png b/src/static/images/chef/100415@2x.png new file mode 100644 index 0000000..9d6fed5 Binary files /dev/null and b/src/static/images/chef/100415@2x.png differ diff --git a/src/static/images/chef/100417@2x.png b/src/static/images/chef/100417@2x.png new file mode 100644 index 0000000..3a93afd Binary files /dev/null and b/src/static/images/chef/100417@2x.png differ diff --git a/src/static/images/chef/100418@2x.png b/src/static/images/chef/100418@2x.png new file mode 100644 index 0000000..14105c9 Binary files /dev/null and b/src/static/images/chef/100418@2x.png differ diff --git a/src/static/images/chef/100419@2x.png b/src/static/images/chef/100419@2x.png new file mode 100644 index 0000000..ed5eaf4 Binary files /dev/null and b/src/static/images/chef/100419@2x.png differ diff --git a/src/static/images/chef/101.png b/src/static/images/chef/101.png new file mode 100644 index 0000000..290b8df Binary files /dev/null and b/src/static/images/chef/101.png differ diff --git a/src/static/images/chef/102.png b/src/static/images/chef/102.png new file mode 100644 index 0000000..11dd4ca Binary files /dev/null and b/src/static/images/chef/102.png differ diff --git a/src/static/images/chef/103.png b/src/static/images/chef/103.png new file mode 100644 index 0000000..b185d0b Binary files /dev/null and b/src/static/images/chef/103.png differ diff --git a/src/static/images/chef/104.png b/src/static/images/chef/104.png new file mode 100644 index 0000000..87985c9 Binary files /dev/null and b/src/static/images/chef/104.png differ diff --git a/src/static/images/chef/105.png b/src/static/images/chef/105.png new file mode 100644 index 0000000..07917dc Binary files /dev/null and b/src/static/images/chef/105.png differ diff --git a/src/static/images/chef/106.png b/src/static/images/chef/106.png new file mode 100644 index 0000000..fbae426 Binary files /dev/null and b/src/static/images/chef/106.png differ diff --git a/src/static/images/chef/107.png b/src/static/images/chef/107.png new file mode 100644 index 0000000..d5972de Binary files /dev/null and b/src/static/images/chef/107.png differ diff --git a/src/static/images/chef/108.png b/src/static/images/chef/108.png new file mode 100644 index 0000000..6a3833e Binary files /dev/null and b/src/static/images/chef/108.png differ diff --git a/src/static/images/chef/109.png b/src/static/images/chef/109.png new file mode 100644 index 0000000..3ec8765 Binary files /dev/null and b/src/static/images/chef/109.png differ diff --git a/src/static/images/chef/110.png b/src/static/images/chef/110.png new file mode 100644 index 0000000..a8114b9 Binary files /dev/null and b/src/static/images/chef/110.png differ diff --git a/src/static/images/chef/1108.png b/src/static/images/chef/1108.png new file mode 100644 index 0000000..5f9fc4d Binary files /dev/null and b/src/static/images/chef/1108.png differ diff --git a/src/static/images/chef/1109.png b/src/static/images/chef/1109.png new file mode 100644 index 0000000..678921f Binary files /dev/null and b/src/static/images/chef/1109.png differ diff --git a/src/static/images/chef/111.png b/src/static/images/chef/111.png new file mode 100644 index 0000000..7bf23d5 Binary files /dev/null and b/src/static/images/chef/111.png differ diff --git a/src/static/images/chef/1110.png b/src/static/images/chef/1110.png new file mode 100644 index 0000000..0aabea4 Binary files /dev/null and b/src/static/images/chef/1110.png differ diff --git a/src/static/images/chef/112.png b/src/static/images/chef/112.png new file mode 100644 index 0000000..93d1866 Binary files /dev/null and b/src/static/images/chef/112.png differ diff --git a/src/static/images/chef/113.png b/src/static/images/chef/113.png new file mode 100644 index 0000000..2324319 Binary files /dev/null and b/src/static/images/chef/113.png differ diff --git a/src/static/images/chef/114.png b/src/static/images/chef/114.png new file mode 100644 index 0000000..2828ab6 Binary files /dev/null and b/src/static/images/chef/114.png differ diff --git a/src/static/images/chef/115.png b/src/static/images/chef/115.png new file mode 100644 index 0000000..247ff63 Binary files /dev/null and b/src/static/images/chef/115.png differ diff --git a/src/static/images/chef/116.png b/src/static/images/chef/116.png new file mode 100644 index 0000000..8f54788 Binary files /dev/null and b/src/static/images/chef/116.png differ diff --git a/src/static/images/chef/117.png b/src/static/images/chef/117.png new file mode 100644 index 0000000..a583a98 Binary files /dev/null and b/src/static/images/chef/117.png differ diff --git a/src/static/images/chef/118.png b/src/static/images/chef/118.png new file mode 100644 index 0000000..98325a9 Binary files /dev/null and b/src/static/images/chef/118.png differ diff --git a/src/static/images/chef/119.png b/src/static/images/chef/119.png new file mode 100644 index 0000000..88b0593 Binary files /dev/null and b/src/static/images/chef/119.png differ diff --git a/src/static/images/chef/120.png b/src/static/images/chef/120.png new file mode 100644 index 0000000..b281f76 Binary files /dev/null and b/src/static/images/chef/120.png differ diff --git a/src/static/images/chef/121.png b/src/static/images/chef/121.png new file mode 100644 index 0000000..b24ebfc Binary files /dev/null and b/src/static/images/chef/121.png differ diff --git a/src/static/images/chef/132.png b/src/static/images/chef/132.png new file mode 100644 index 0000000..d3af473 Binary files /dev/null and b/src/static/images/chef/132.png differ diff --git a/src/static/images/chef/1325.png b/src/static/images/chef/1325.png new file mode 100644 index 0000000..b695095 Binary files /dev/null and b/src/static/images/chef/1325.png differ diff --git a/src/static/images/chef/1326.png b/src/static/images/chef/1326.png new file mode 100644 index 0000000..5da0aea Binary files /dev/null and b/src/static/images/chef/1326.png differ diff --git a/src/static/images/chef/1327.png b/src/static/images/chef/1327.png new file mode 100644 index 0000000..e7a7972 Binary files /dev/null and b/src/static/images/chef/1327.png differ diff --git a/src/static/images/chef/1328.png b/src/static/images/chef/1328.png new file mode 100644 index 0000000..52ca0cd Binary files /dev/null and b/src/static/images/chef/1328.png differ diff --git a/src/static/images/chef/133.png b/src/static/images/chef/133.png new file mode 100644 index 0000000..7ddfc27 Binary files /dev/null and b/src/static/images/chef/133.png differ diff --git a/src/static/images/chef/1330.png b/src/static/images/chef/1330.png new file mode 100644 index 0000000..c06e50d Binary files /dev/null and b/src/static/images/chef/1330.png differ diff --git a/src/static/images/chef/1332.png b/src/static/images/chef/1332.png new file mode 100644 index 0000000..be5c4b5 Binary files /dev/null and b/src/static/images/chef/1332.png differ diff --git a/src/static/images/chef/134.png b/src/static/images/chef/134.png new file mode 100644 index 0000000..e002004 Binary files /dev/null and b/src/static/images/chef/134.png differ diff --git a/src/static/images/chef/1340.png b/src/static/images/chef/1340.png new file mode 100644 index 0000000..676c1d4 Binary files /dev/null and b/src/static/images/chef/1340.png differ diff --git a/src/static/images/chef/138.png b/src/static/images/chef/138.png new file mode 100644 index 0000000..acf52a8 Binary files /dev/null and b/src/static/images/chef/138.png differ diff --git a/src/static/images/chef/140.png b/src/static/images/chef/140.png new file mode 100644 index 0000000..823d18a Binary files /dev/null and b/src/static/images/chef/140.png differ diff --git a/src/static/images/chef/141.png b/src/static/images/chef/141.png new file mode 100644 index 0000000..48689b6 Binary files /dev/null and b/src/static/images/chef/141.png differ diff --git a/src/static/images/chef/142.png b/src/static/images/chef/142.png new file mode 100644 index 0000000..c52e3c3 Binary files /dev/null and b/src/static/images/chef/142.png differ diff --git a/src/static/images/chef/152.png b/src/static/images/chef/152.png new file mode 100644 index 0000000..36671e7 Binary files /dev/null and b/src/static/images/chef/152.png differ diff --git a/src/static/images/chef/153.png b/src/static/images/chef/153.png new file mode 100644 index 0000000..6baeaf3 Binary files /dev/null and b/src/static/images/chef/153.png differ diff --git a/src/static/images/chef/154.png b/src/static/images/chef/154.png new file mode 100644 index 0000000..fa3c184 Binary files /dev/null and b/src/static/images/chef/154.png differ diff --git a/src/static/images/chef/155.png b/src/static/images/chef/155.png new file mode 100644 index 0000000..ac0eff3 Binary files /dev/null and b/src/static/images/chef/155.png differ diff --git a/src/static/images/chef/156.png b/src/static/images/chef/156.png new file mode 100644 index 0000000..966a1d5 Binary files /dev/null and b/src/static/images/chef/156.png differ diff --git a/src/static/images/chef/16033@2x.png b/src/static/images/chef/16033@2x.png new file mode 100644 index 0000000..3b671b0 Binary files /dev/null and b/src/static/images/chef/16033@2x.png differ diff --git a/src/static/images/chef/190.png b/src/static/images/chef/190.png new file mode 100644 index 0000000..30f7b58 Binary files /dev/null and b/src/static/images/chef/190.png differ diff --git a/src/static/images/chef/191.png b/src/static/images/chef/191.png new file mode 100644 index 0000000..2737a68 Binary files /dev/null and b/src/static/images/chef/191.png differ diff --git a/src/static/images/chef/192.png b/src/static/images/chef/192.png new file mode 100644 index 0000000..1226091 Binary files /dev/null and b/src/static/images/chef/192.png differ diff --git a/src/static/images/chef/193.png b/src/static/images/chef/193.png new file mode 100644 index 0000000..ca98098 Binary files /dev/null and b/src/static/images/chef/193.png differ diff --git a/src/static/images/chef/194.png b/src/static/images/chef/194.png new file mode 100644 index 0000000..085c158 Binary files /dev/null and b/src/static/images/chef/194.png differ diff --git a/src/static/images/chef/195.png b/src/static/images/chef/195.png new file mode 100644 index 0000000..98d98d5 Binary files /dev/null and b/src/static/images/chef/195.png differ diff --git a/src/static/images/chef/196.png b/src/static/images/chef/196.png new file mode 100644 index 0000000..ce861cd Binary files /dev/null and b/src/static/images/chef/196.png differ diff --git a/src/static/images/chef/197.png b/src/static/images/chef/197.png new file mode 100644 index 0000000..9a53163 Binary files /dev/null and b/src/static/images/chef/197.png differ diff --git a/src/static/images/chef/198.png b/src/static/images/chef/198.png new file mode 100644 index 0000000..21ff1cd Binary files /dev/null and b/src/static/images/chef/198.png differ diff --git a/src/static/images/chef/199.png b/src/static/images/chef/199.png new file mode 100644 index 0000000..44ceb18 Binary files /dev/null and b/src/static/images/chef/199.png differ diff --git a/src/static/images/chef/2.png b/src/static/images/chef/2.png new file mode 100644 index 0000000..19af852 Binary files /dev/null and b/src/static/images/chef/2.png differ diff --git a/src/static/images/chef/200.png b/src/static/images/chef/200.png new file mode 100644 index 0000000..e4989d2 Binary files /dev/null and b/src/static/images/chef/200.png differ diff --git a/src/static/images/chef/201.png b/src/static/images/chef/201.png new file mode 100644 index 0000000..c92cdd3 Binary files /dev/null and b/src/static/images/chef/201.png differ diff --git a/src/static/images/chef/202.png b/src/static/images/chef/202.png new file mode 100644 index 0000000..d822859 Binary files /dev/null and b/src/static/images/chef/202.png differ diff --git a/src/static/images/chef/203.png b/src/static/images/chef/203.png new file mode 100644 index 0000000..fbe3b49 Binary files /dev/null and b/src/static/images/chef/203.png differ diff --git a/src/static/images/chef/204.png b/src/static/images/chef/204.png new file mode 100644 index 0000000..4e12420 Binary files /dev/null and b/src/static/images/chef/204.png differ diff --git a/src/static/images/chef/205.png b/src/static/images/chef/205.png new file mode 100644 index 0000000..e0e3fc0 Binary files /dev/null and b/src/static/images/chef/205.png differ diff --git a/src/static/images/chef/206.png b/src/static/images/chef/206.png new file mode 100644 index 0000000..af4a82c Binary files /dev/null and b/src/static/images/chef/206.png differ diff --git a/src/static/images/chef/207.png b/src/static/images/chef/207.png new file mode 100644 index 0000000..3f0ef49 Binary files /dev/null and b/src/static/images/chef/207.png differ diff --git a/src/static/images/chef/208.png b/src/static/images/chef/208.png new file mode 100644 index 0000000..374cafd Binary files /dev/null and b/src/static/images/chef/208.png differ diff --git a/src/static/images/chef/209.png b/src/static/images/chef/209.png new file mode 100644 index 0000000..2f28e4c Binary files /dev/null and b/src/static/images/chef/209.png differ diff --git a/src/static/images/chef/210.png b/src/static/images/chef/210.png new file mode 100644 index 0000000..27aa021 Binary files /dev/null and b/src/static/images/chef/210.png differ diff --git a/src/static/images/chef/avatar.png b/src/static/images/chef/avatar.png new file mode 100644 index 0000000..e11c134 Binary files /dev/null and b/src/static/images/chef/avatar.png differ diff --git a/src/static/images/chef/default_avatar.png b/src/static/images/chef/default_avatar.png new file mode 100644 index 0000000..31e9d71 Binary files /dev/null and b/src/static/images/chef/default_avatar.png differ diff --git a/src/static/images/logo.png b/src/static/images/logo.png new file mode 100644 index 0000000..f35297f Binary files /dev/null and b/src/static/images/logo.png differ diff --git a/src/static/logo.png b/src/static/logo.png new file mode 100644 index 0000000..e51ae16 Binary files /dev/null and b/src/static/logo.png differ diff --git a/src/static/tabbar/home.png b/src/static/tabbar/home.png new file mode 100644 index 0000000..e8be7b3 Binary files /dev/null and b/src/static/tabbar/home.png differ diff --git a/src/static/tabbar/homeHL.png b/src/static/tabbar/homeHL.png new file mode 100644 index 0000000..497d6e1 Binary files /dev/null and b/src/static/tabbar/homeHL.png differ diff --git a/src/static/tabbar/menu.png b/src/static/tabbar/menu.png new file mode 100644 index 0000000..f381d6e Binary files /dev/null and b/src/static/tabbar/menu.png differ diff --git a/src/static/tabbar/menuHL.png b/src/static/tabbar/menuHL.png new file mode 100644 index 0000000..901ad71 Binary files /dev/null and b/src/static/tabbar/menuHL.png differ diff --git a/src/static/tabbar/order.png b/src/static/tabbar/order.png new file mode 100644 index 0000000..760feac Binary files /dev/null and b/src/static/tabbar/order.png differ diff --git a/src/static/tabbar/orderHL.png b/src/static/tabbar/orderHL.png new file mode 100644 index 0000000..7b8c160 Binary files /dev/null and b/src/static/tabbar/orderHL.png differ diff --git a/src/static/tabbar/user.png b/src/static/tabbar/user.png new file mode 100644 index 0000000..7b36b27 Binary files /dev/null and b/src/static/tabbar/user.png differ diff --git a/src/static/tabbar/userHL.png b/src/static/tabbar/userHL.png new file mode 100644 index 0000000..004d218 Binary files /dev/null and b/src/static/tabbar/userHL.png differ diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..44cee9e --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,19 @@ +import * as Pinia from 'pinia' +import { createPersistedState } from 'pinia-plugin-persistedstate' // 数据持久化 + +const store = Pinia.createPinia() +store.use( + createPersistedState({ + storage: { + getItem: uni.getStorageSync, + setItem: uni.setStorageSync, + }, + }), +) + +export { Pinia, store } + +// 模块统一导出 +export * from './module/user' +export * from './module/search' +export * from './module/config' diff --git a/src/store/module/config.ts b/src/store/module/config.ts new file mode 100644 index 0000000..60204c2 --- /dev/null +++ b/src/store/module/config.ts @@ -0,0 +1,119 @@ +import {defineStore} from 'pinia' +import {computed, ref} from 'vue' +// import {dictFineOne} from "@/service"; + +export const useConfigStore = defineStore( + 'config', + () => { + + // 显示网络服务 + const showNetworkAnomaly = ref(false) + + // 当前时间 + const serverTime = ref('') + + // 待付款订单取消时间,单位分钟 + const orderCancelTime = ref('') + // 待付款订单取消时间,单位分钟 + const refundOrderAutoAuditTime = ref('') + // 设备 id + const deviceId = ref('') + + // 运行平台 app | web | mp-weixin + const uniPlatform = ref('') + + // 系统名称 + const osName = ref('') + + // 系统版本 + const osVersion = ref('') + + // app版本 + const appVersion = ref('') + + // 状态栏高度 + const statusBarHeight = ref(0) + + // 窗口高度 + const windowHeight = ref(0) + + // 窗口宽度 + const windowWidth = ref(0) + + // 屏幕宽度 + const screenWidth = ref(0) + + // 屏幕高度 + const screenHeight = ref(0) + + // tabbar索引 + const tabbarIndex = ref(null) + + // 是否显示引导页 + const isShowedGuidePage = ref(false) + + // 是否展示过语言选择页面 + const isShowedLanguageSelectPage = ref(false) + + // 安全距离 + const safeAreaInsets = ref<{ + bottom: number + top: number + }>({ + bottom: 0, + top: 0, + }) + // 是否是App + const isApp = computed(() => { + return uniPlatform.value === 'app' + }) + + // 是否是ios + const isIos = computed(() => { + return osName.value === 'ios' + }) + + // 是否是android + const isAndroid = computed(() => { + return osName.value === 'android' + }) + + // ios底部安全区占位 + const iosSafeBottomPlaceholder = computed(() => { + if (isIos.value) { + return { + paddingBottom: safeAreaInsets.value.bottom + 'px', + } + } + return {} + }) + + return { + showNetworkAnomaly, + isApp, + isIos, + isAndroid, + appVersion, + osName, + osVersion, + uniPlatform, + statusBarHeight, + windowHeight, + windowWidth, + screenWidth, + screenHeight, + safeAreaInsets, + deviceId, + iosSafeBottomPlaceholder, + serverTime, + tabbarIndex, + orderCancelTime, + refundOrderAutoAuditTime, + isShowedGuidePage, + isShowedLanguageSelectPage, + } + }, + { + persist: true, + }, +) diff --git a/src/store/module/search.ts b/src/store/module/search.ts new file mode 100644 index 0000000..3b6a200 --- /dev/null +++ b/src/store/module/search.ts @@ -0,0 +1,46 @@ +import {defineStore} from 'pinia' + +type historyListType = { + text: string + time: number +} + +export const useSearchStore = defineStore( + 'searchStore', + () => { + const historyList = ref([]) + + function setHistoryList(keyword: string) { + const historyListCopy = [...historyList.value] + let index = historyListCopy.findIndex((item) => item.text === keyword) + + if (index === 0) { + return + } + + if (index > 0) { + historyListCopy.splice(index, 1) + historyListCopy.unshift({ + text: keyword, + time: new Date().getTime(), + }) + } else { + historyListCopy.unshift({ + text: keyword, + time: new Date().getTime(), + }) + } + + historyList.value = historyListCopy + } + + + return { + historyList, + setHistoryList, + } + }, + { + persist: true, + }, +) diff --git a/src/store/module/user.ts b/src/store/module/user.ts new file mode 100644 index 0000000..d360fc3 --- /dev/null +++ b/src/store/module/user.ts @@ -0,0 +1,177 @@ +import {defineStore} from 'pinia' +import {ref} from 'vue' +import { + appMerchantGetFirstShopSettledGet, + appMerchantGetLoginMerchantGet, + appMerchantSwitchListGet, + appMerchantSwitchMerchantIdGet, + appUserGetLoginUserGet +} from '@/service' +import Config from '@/config' + +export const useUserStore = defineStore( + 'user', + () => { + + // 登录邀请码 + const invitationCode = ref('') + + // 登录token + const token = ref('') + + // 当前所处商户的TOKEN + const currentMerchantToken = ref('') + + // 店铺信息 + const currenMerchantInfo = ref({}) + + // 是否登录 + const isLogin = ref(false) + + // 用户信息 + const userInfo = ref>({}) + + // 店铺列表 + const merchants = ref([]) + + // 店铺认证信息 + const firstShopSettled = ref(null) + + // 未读消息数量 + const unreadMessageCount = ref(0) + + // 当前选中菜单的索引ID + const currentMenuID = ref(null) + + // 位置 + const location = ref<{ + location: string; + longitude: string | number; + latitude: string | number; + }>({ + location: '', + longitude: "", + latitude: "", + }) + + + watch( + token, + (newVal) => { + isLogin.value = !!newVal + }, + { + immediate: true, + }, + ) + + + const checkLogin = (): boolean => { + console.log('isLogin.value', isLogin.value) + if (!isLogin.value) { + uni.navigateTo({ + url: Config.loginPath, + }) + } + + return isLogin.value + } + + const clear = () => { + userInfo.value = {} + token.value = '' + isLogin.value = false + invitationCode.value = '' + currentMerchantToken.value = '' + currenMerchantInfo.value = {} + merchants.value = [] + firstShopSettled.value = null + currentMenuID.value = null + } + + const getUserInfo = async () => { + if (!isLogin.value) return + try { + const res = await appUserGetLoginUserGet({}) + userInfo.value = res.data || {} + } catch (e) { + } + } + + // 查询当前用户可切换的商户 + const getSwitchableMerchants = async (callBack?: () => void) => { + if (!isLogin.value) return + try { + const res = await appMerchantSwitchListGet({ + options: {} + }) + console.log('查询当前用户可切换的商户', res) + merchants.value = res.data || [] + callBack?.() + } catch (e) { + } + } + // 获取切换商户信息信息 + const getSwitchableMerchantInfo = async () => { + if (!isLogin.value) return + if (!currentMerchantToken.value) return + try { + const res = await appMerchantGetLoginMerchantGet({ + options: {} + }) + console.log('获取切换商户信息信息', res.data) + currenMerchantInfo.value = res.data || {} + console.log('获取切换商户信息信息', currenMerchantInfo.value) + } catch (e) { + } + } + + // 切换商户 /app/merchant/switch/{merchantId} + const switchMerchant = async (merchantId: string) => { + if (!isLogin.value) return + try { + const res = await appMerchantSwitchMerchantIdGet({ + merchantId, + options: {} + }) + console.log('切换商户', res) + } catch (e) { + } + } + + // 查询商户用户的第一个入驻信息 + const getFirstShopSettled = async () => { + if (!isLogin.value) return + try { + const res = await appMerchantGetFirstShopSettledGet({}) + console.log('查询商户用户的第一个入驻信息', res) + firstShopSettled.value = res.data || null + } catch (e) { + } + } + + return { + invitationCode, + token, + currentMerchantToken, + isLogin, + userInfo, + location, + firstShopSettled, + currenMerchantInfo, + unreadMessageCount, + currentMenuID, + getUserInfo, + checkLogin, + clear, + merchants, + getSwitchableMerchants, + getSwitchableMerchantInfo, + switchMerchant, + getFirstShopSettled, + } + }, + { + persist: true, + }, +) diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..95c55e6 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,149 @@ +/* #ifndef APP-NVUE */ +page { + height: 100%; + background-color: #F6F6F6; + font-family: 'UberMove', sans-serif; +} + +.poynter-oldstyle-text { + font-family: 'UberMove', sans-serif; +} + + +.helvetica-now-text { + font-family: 'UberMove', sans-serif; +} + + +.border-custom, .border-bottom, .border-top, .border-left, .border-right { + position: relative; + border: none; +} + +.border-custom::after { + content: ''; + position: absolute; + z-index: 0; + top: 0; + left: 0; + border: 1px solid #DFDFDF; + box-sizing: border-box; + width: 200%; + height: 200%; + transform: scale(0.5); + transform-origin: left top; +} + + +.border-top::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + background-color: #DFDFDF; + height: 1px; + transform: scaleY(0.5); + transform-origin: 0 0; +} + +.border-left::before { + content: ''; + position: absolute; + top: 0; + left: 0; + bottom: 0; + background-color: #DFDFDF; + width: 1px; + transform: scaleX(0.5); + transform-origin: 0 0; +} + +.border-bottom::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + background-color: #DFDFDF; + height: 1px; + transform: scaleY(0.5); + transform-origin: 0 0; +} + + +.border-right::after { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + background-color: #DFDFDF; + width: 1px; + transform: scaleX(0.5); + transform-origin: 0 0; +} + +::-webkit-scrollbar { + display: none; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; + color: transparent; +} + +.wd-navbar__title { + font-family: 'PoynterOldstyleText', sans-serif; +} + +/* #endif */ + + +/* 解决H5滚动条的问题 */ +/* #ifdef H5 */ +uni-scroll-view .uni-scroll-view::-webkit-scrollbar { + /* 隐藏滚动条,但依旧具备可以滚动的功能 */ + display: none; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; + color: transparent; +} + +/* #endif */ + +.wd-popup, .wd-overlay { + z-index: 99 !important; +} + +.wd-message-box__actions { + flex-direction: row-reverse; + + & .wd-button { + margin: 0 !important; + + &:first-child { + margin-left: 32rpx !important; + } + } +} + +// 通用骨架屏样式 +.skeleton-item { + background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); + background-size: 200% 100%; + animation: shimmer 1.5s infinite; + border-radius: 8rpx; +} + +// 闪烁动画 +@keyframes shimmer { + 0% { + background-position: -200% 0; + } + 100% { + background-position: 200% 0; + } +} \ No newline at end of file diff --git a/src/types/auto-import.d.ts b/src/types/auto-import.d.ts new file mode 100644 index 0000000..b3f2c2f --- /dev/null +++ b/src/types/auto-import.d.ts @@ -0,0 +1,219 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const createPinia: typeof import('pinia')['createPinia'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const defineStore: typeof import('pinia')['defineStore'] + const effectScope: typeof import('vue')['effectScope'] + const getActivePinia: typeof import('pinia')['getActivePinia'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const mapActions: typeof import('pinia')['mapActions'] + const mapGetters: typeof import('pinia')['mapGetters'] + const mapState: typeof import('pinia')['mapState'] + const mapStores: typeof import('pinia')['mapStores'] + const mapWritableState: typeof import('pinia')['mapWritableState'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onAddToFavorites: typeof import('@dcloudio/uni-app')['onAddToFavorites'] + const onBackPress: typeof import('@dcloudio/uni-app')['onBackPress'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onError: typeof import('@dcloudio/uni-app')['onError'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onHide: typeof import('@dcloudio/uni-app')['onHide'] + const onLaunch: typeof import('@dcloudio/uni-app')['onLaunch'] + const onLoad: typeof import('@dcloudio/uni-app')['onLoad'] + const onMounted: typeof import('vue')['onMounted'] + const onNavigationBarButtonTap: typeof import('@dcloudio/uni-app')['onNavigationBarButtonTap'] + const onNavigationBarSearchInputChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputChanged'] + const onNavigationBarSearchInputClicked: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputClicked'] + const onNavigationBarSearchInputConfirmed: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputConfirmed'] + const onNavigationBarSearchInputFocusChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputFocusChanged'] + const onPageNotFound: typeof import('@dcloudio/uni-app')['onPageNotFound'] + const onPageScroll: typeof import('@dcloudio/uni-app')['onPageScroll'] + const onPullDownRefresh: typeof import('@dcloudio/uni-app')['onPullDownRefresh'] + const onReachBottom: typeof import('@dcloudio/uni-app')['onReachBottom'] + const onReady: typeof import('@dcloudio/uni-app')['onReady'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onResize: typeof import('@dcloudio/uni-app')['onResize'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onShareAppMessage: typeof import('@dcloudio/uni-app')['onShareAppMessage'] + const onShareTimeline: typeof import('@dcloudio/uni-app')['onShareTimeline'] + const onShow: typeof import('@dcloudio/uni-app')['onShow'] + const onTabItemTap: typeof import('@dcloudio/uni-app')['onTabItemTap'] + const onThemeChange: typeof import('@dcloudio/uni-app')['onThemeChange'] + const onUnhandledRejection: typeof import('@dcloudio/uni-app')['onUnhandledRejection'] + const onUnload: typeof import('@dcloudio/uni-app')['onUnload'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const setActivePinia: typeof import('pinia')['setActivePinia'] + const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const storeToRefs: typeof import('pinia')['storeToRefs'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAreaCode: typeof import('../hooks/useAreaCode')['default'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useEventEmit: typeof import('../hooks/useEventEmit')['default'] + const useGetMsgCode: typeof import('../hooks/useGetMsgCode')['default'] + const useI18n: typeof import('vue-i18n')['useI18n'] + const useId: typeof import('vue')['useId'] + const useModel: typeof import('vue')['useModel'] + const useNetworkStatusChange: typeof import('../hooks/useNetworkStatusChange')['default'] + const usePage: typeof import('../hooks/usePage')['default'] + const useScrollThreshold: typeof import('../hooks/useScrollThreshold')['useScrollThreshold'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} +// for vue template auto import +import { UnwrapRef } from 'vue' +declare module 'vue' { + interface GlobalComponents {} + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef + readonly acceptHMRUpdate: UnwrapRef + readonly computed: UnwrapRef + readonly createApp: UnwrapRef + readonly createPinia: UnwrapRef + readonly customRef: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly defineStore: UnwrapRef + readonly effectScope: UnwrapRef + readonly getActivePinia: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly h: UnwrapRef + readonly inject: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly mapActions: UnwrapRef + readonly mapGetters: UnwrapRef + readonly mapState: UnwrapRef + readonly mapStores: UnwrapRef + readonly mapWritableState: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onAddToFavorites: UnwrapRef + readonly onBackPress: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onError: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onHide: UnwrapRef + readonly onLaunch: UnwrapRef + readonly onLoad: UnwrapRef + readonly onMounted: UnwrapRef + readonly onNavigationBarButtonTap: UnwrapRef + readonly onNavigationBarSearchInputChanged: UnwrapRef + readonly onNavigationBarSearchInputClicked: UnwrapRef + readonly onNavigationBarSearchInputConfirmed: UnwrapRef + readonly onNavigationBarSearchInputFocusChanged: UnwrapRef + readonly onPageNotFound: UnwrapRef + readonly onPageScroll: UnwrapRef + readonly onPullDownRefresh: UnwrapRef + readonly onReachBottom: UnwrapRef + readonly onReady: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onResize: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onShareAppMessage: UnwrapRef + readonly onShareTimeline: UnwrapRef + readonly onShow: UnwrapRef + readonly onTabItemTap: UnwrapRef + readonly onThemeChange: UnwrapRef + readonly onUnhandledRejection: UnwrapRef + readonly onUnload: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly onWatcherCleanup: UnwrapRef + readonly provide: UnwrapRef + readonly reactive: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly setActivePinia: UnwrapRef + readonly setMapStoreSuffix: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly storeToRefs: UnwrapRef + readonly toRaw: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly unref: UnwrapRef + readonly useAreaCode: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useEventEmit: UnwrapRef + readonly useGetMsgCode: UnwrapRef + readonly useI18n: UnwrapRef + readonly useId: UnwrapRef + readonly useModel: UnwrapRef + readonly useNetworkStatusChange: UnwrapRef + readonly usePage: UnwrapRef + readonly useScrollThreshold: UnwrapRef + readonly useSlots: UnwrapRef + readonly useTemplateRef: UnwrapRef + readonly watch: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + } +} diff --git a/src/types/global.d.ts b/src/types/global.d.ts new file mode 100644 index 0000000..f062ac1 --- /dev/null +++ b/src/types/global.d.ts @@ -0,0 +1,19 @@ +declare const __UNI_PLATFORM__: + | 'h5' + | 'app' + | 'mp-alipay' + | 'mp-baidu' + | 'mp-jd' + | 'mp-kuaishou' + | 'mp-lark' + | 'mp-qq' + | 'mp-toutiao' + | 'mp-weixin' + | 'quickapp-webview' + | 'quickapp-webview-huawei' + | 'quickapp-webview-union' + +declare const __VITE_APP_PROXY__: 'true' | 'false' + +declare const process: NodeJS.Process + diff --git a/src/types/index.d.ts b/src/types/index.d.ts new file mode 100644 index 0000000..5210b21 --- /dev/null +++ b/src/types/index.d.ts @@ -0,0 +1,168 @@ +/** 接口返回数据类型 */ +type IResData = { + code?: number + msg?: string + data: T + encryptAesKeys?: string + systemTime?: string + rows: T[] + total: number +} + + +/** 分页查询参数类型 */ +type PageQuery = { + pageNum: number + pageSize?: number +} + +/** 字典类型 */ +type Dict = { + searchValue?: any + createBy: string + createTime?: any + updateBy?: any + updateTime?: any + remark: string + dictCode: number + dictSort: number + dictLabel: string + dictValue: string + dictType: string + cssClass?: any + listClass?: any + isDefault: string + status: string + code?: any + images?: any + default: boolean +} + +/** APP版本类型 */ +type AppVersion = { + // 版本号 + version: string + versionNo: string + // 是否强制更新 0-否 1-是 + isForce: string + // 更新地址 + url: string + // 版本更新说明 + content: string +} + +/** 协议类型 */ +type Agreement = { + searchValue?: any + createBy: string + createTime: string + updateBy: string + updateTime: string + remark?: any + id: string + delFlag: number + title: string + content: string + code: string +} + +/** 消息 */ +type Message = { + createBeginTime?: any; + createEndTime?: any; + filterDisable: boolean; + createBy?: any; + createTime?: any; + updateBy?: any; + updateTime?: any; + id: string; + titleZh: string; + titleEn: string; + title: string; + sketchZh: string; + sketchEn: string; + sketch: string; + contentZh?: any; + contentEn?: any; + content?: any; + type: number; + userId: string; + objectId: string; + isRead: number; +} + + +/** 地址 */ +interface Address { + createBy: string; + createTime: string; + updateBy: string; + updateTime: string; + id: string; + delFlag: number; + contacts: string; + phone: string; + areaCode: string; + postcode: string; + addressLine: string; + block: string; + unit: string; + isDefault: number; + userId: string; +} + +interface MemberRechargeRecord { + createBy: string; + createTime: string; + updateBy?: any; + updateTime: string; + id: string; + delFlag: number; + userId: string; + rechargeAmount: string; + memberLevel: string; + memberDays: number; + discountAmount: string; + sort?: any; + redeemCode: string; + isRedeem: number; + rechargeType: number; + byUserId?: any; + voucher: string; + auditStatus: number; + failReason?: any; + payTaxAmount: string; + payAmount: string; + backgroundImage?: any; + memberExpireTime: string; + paynowQrCode?: any; +} + +/** 用户信息类型 */ +interface IUserInfo { + createBy?: any; + createTime: string; + updateBy?: any; + updateTime?: any; + id: string; + delFlag: number; + loginPwd: string; + phone: string; + areaCode: string; + email: string; + firstName: string; + surname: string; + avatar: string; + appleId?: any; + facebookId?: any; + googleId?: any; + balance: string; + points: string; + payPwd?: any; + logoutTime?: any; + invitationCode: string; + storeId?: any; + nickName?: any; + userPort: number; + memberRechargeRecord: MemberRechargeRecord; +} \ No newline at end of file diff --git a/src/uni.scss b/src/uni.scss new file mode 100644 index 0000000..0513996 --- /dev/null +++ b/src/uni.scss @@ -0,0 +1,22 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + diff --git a/src/uni_modules/Sansnn-uQRCode/LICENSE.md b/src/uni_modules/Sansnn-uQRCode/LICENSE.md new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/uni_modules/Sansnn-uQRCode/README.md b/src/uni_modules/Sansnn-uQRCode/README.md new file mode 100644 index 0000000..77d7925 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/README.md @@ -0,0 +1,392 @@ +# 介绍 + +`uQRCode`是一款基于`Javascript`环境开发的二维码生成插件,适用所有`Javascript`运行环境的前端应用和`Node.js`应用。 + +`uQRCode`可扩展性高,它支持自定义渲染二维码,可通过`uQRCode API`得到二维码绘制关键信息后,使用`canvas`、`svg`或`js`操作`dom`的方式绘制二维码图案。还可自定义二维码样式,如随机颜色、圆点、方块、块与块之间的间距等。 + +欢迎加入群聊【uQRCode交流群】:[695070434](https://jq.qq.com/?_wv=1027&k=JRjzDqiw)。 + +# 设计器 + +uQRCode发布了配套的可视化设计器,可根据自己喜好在设计器中设计二维码样式,一键生成配置代码复制到项目中,详情请在微信小程序搜索“柚子二维码”,或扫描下方小程序码体验。 + +![uQRCode设计器](https://uqrcode.cn/mp_weixin_code.jpg) + +## 设计器模板示例 + +![uQRCode设计器](https://uqrcode.cn/yz_1.png) +![uQRCode设计器](https://uqrcode.cn/yz_2.png) +![uQRCode设计器](https://uqrcode.cn/yz_3.png) +![uQRCode设计器](https://uqrcode.cn/yz_4.png) +![uQRCode设计器](https://uqrcode.cn/yz_5.png) +![uQRCode设计器](https://uqrcode.cn/yz_6.png) +![uQRCode设计器](https://uqrcode.cn/yz_7.png) +![uQRCode设计器](https://uqrcode.cn/yz_8.png) +![uQRCode设计器](https://uqrcode.cn/yz_9.png) + +# 快速上手 + +> 在`uni-app`中,我们更推荐使用组件方式来生成二维码,组件方式大大提高了页面的可读性以及避开了一些平台容易出问题的地方,当组件无法满足需求的时候,再考虑切换成原生方式。 + +官方文档:[https://uqrcode.cn/doc](https://uqrcode.cn/doc)。 + +github地址:[https://github.com/Sansnn/uQRCode](https://github.com/Sansnn/uQRCode)。 + +npm地址:[https://www.npmjs.com/package/uqrcodejs](https://www.npmjs.com/package/uqrcodejs)。 + +uni-app插件市场地址:[https://ext.dcloud.net.cn/plugin?id=1287](https://ext.dcloud.net.cn/plugin?id=1287)。 + +## 原生方式 + +原生方式仅需要获取`uqrcode.js`文件便可使用。详细配置请移步到:文档 > [原生](https://uqrcode.cn/doc/document/native.html)。 + +### 安装 + +1. 通过`npm`安装,成功后即可使用`import`或`require`进行引用。 +``` bash +# npm安装 +npm install uqrcodejs +# 或者 +npm install @uqrcode/js +``` + +2. 通过项目开源地址获取`uqrcode.js`,下载`uqrcode.js`后,将其复制到您项目指定目录,在页面中引入`uqrcode.js`文件即可开始使用。 + +### 引入 + +- 通过`import`引入。 +``` javascript +// npm安装 +import UQRCode from 'uqrcodejs'; // npm install uqrcodejs +// 或者 +import UQRCode from '@uqrcode/js'; // npm install @uqrcode/js +``` + +- `Node.js`通过`require`引入。 +``` javascript +// npm安装 +const UQRCode = require('uqrcodejs'); // npm install uqrcodejs +// 或者 +const UQRCode = require('@uqrcode/js'); // npm install @uqrcode/js +``` + +- 原生浏览器环境,在js脚本加载时添加到`window`。 +``` html + + +``` + +### 简单用法 + +`uQRCode`基于`Canvas API`封装了一套方法,建议开发者使用`canvas`生成,一键调用,非常方便。以下是示例: + +- HTML示例 + - DOM部分 + ``` html + + ``` + + - JS部分 + ``` javascript + // 获取uQRCode实例 + var qr = new UQRCode(); + // 设置二维码内容 + qr.data = "https://uqrcode.cn/doc"; + // 设置二维码大小,必须与canvas设置的宽高一致 + qr.size = 200; + // 调用制作二维码方法 + qr.make(); + // 获取canvas元素 + var canvas = document.getElementById("qrcode"); + // 获取canvas上下文 + var canvasContext = canvas.getContext("2d"); + // 设置uQRCode实例的canvas上下文 + qr.canvasContext = canvasContext; + // 调用绘制方法将二维码图案绘制到canvas上 + qr.drawCanvas(); + ``` + +- uni-app示例 + - Template部分 + ``` html + + ``` + + - JS部分 + ``` javascript + onReady() { + // 获取uQRCode实例 + var qr = new UQRCode(); + // 设置二维码内容 + qr.data = "https://uqrcode.cn/doc"; + // 设置二维码大小,必须与canvas设置的宽高一致 + qr.size = 200; + // 调用制作二维码方法 + qr.make(); + // 获取canvas上下文 + var canvasContext = uni.createCanvasContext('qrcode', this); // 如果是组件,this必须传入 + // 设置uQRCode实例的canvas上下文 + qr.canvasContext = canvasContext; + // 调用绘制方法将二维码图案绘制到canvas上 + qr.drawCanvas(); + } + ``` + +- 微信小程序,推荐使用Canvas 2D,关于Canvas 2D的使用请参考微信开放文档。 + +### 高级用法 + +考虑到部分平台可能不支持`canvas`,所以`uQRCode`并没有强制要求和`canvas`一起使用,您还可以选择其他方式来生成二维码,例如使用`js`操作`dom`进行绘制或是使用`svg`绘制等。以下是示例: + +- uni-app v-for+view + +```html + + + +``` + +- js操作dom + +``` html + + + + + uQRCode二维码生成 + + +

+ + + + +``` + +- svg +``` html + + + + + uQRCode二维码生成 + + + + + + + +``` + +> 更多用法大家自行探索咯,期待分享哟~ + +### 导出临时文件路径 + +原生方式基于`Canvas`的,请自行参阅各平台`Canvas`的导出方式。以下是部分示例: + +- uni-app +```javascript +// 通过uni.createCanvasContext方式创建绘制上下文的,对应导出API为uni.canvasToTempFilePath +// 调用完ctx.draw()方法后不能第一时间导出,否则会异常,需要有一定的延时 +setTimeout(() => { + uni.canvasToTempFilePath( + { + canvasId: this.canvasId, + fileType: this.fileType, + width: this.canvasWidth, + height: this.canvasHeight, + success: res => { + console.log(res); + }, + fail: err => { + console.log(err); + } + }, + // this // 组件内使用必传当前实例 + ); +}, 300); +``` + +- Canvas2D +```javascript +// 得到base64 +console.log(canvas.toDataURL()); +// 得到buffer +console.log(canvas.toBuffer()); +``` + +### 保存二维码到本地相册 + +必须在导出临时文件路径成功后再执行保存。uni-app通用保存方式(H5除外): +```javascript +uni.saveImageToPhotosAlbum({ + filePath: tempFilePath, + success: res => { + console.log(res); + }, + fail: err => { + console.log(err); + } +}); +``` + +H5可以通过设置``标签`href`属性的方式进行保存: +```javascript +const aEle = document.createElement('a'); +aEle.download = 'uQRCode'; // 设置下载的文件名,默认是'下载' +aEle.href = tempFilePath; +document.body.appendChild(aEle); +aEle.click(); +aEle.remove(); // 下载之后把创建的元素删除 +``` +经过测试,PC端浏览器可以下载,部分安卓自带或第三方浏览器可以下载,安卓微信浏览器不适用,移动端iOS所有浏览器均不适用,差异较大,还是推荐各位导出文件给图片组件显示,然后提示用户通过长按图片进行保存这种方式。 + +## uni-app组件方式 + +### 安装 + +通过uni-app插件市场地址安装:[https://ext.dcloud.net.cn/plugin?id=1287](https://ext.dcloud.net.cn/plugin?id=1287)。详细配置请移步到:文档 > [uni-app组件](https://uqrcode.cn/doc/document/uni-app.html)。 + +### 引入 + +uni-app默认为easycom模式,可直接键入``标签。 + +### 简单用法 + +安装`uqrcode`组件后,在`template`中键入``。设置`ref`属性可使用组件内部方法,`canvas-id`属性为组件内部的canvas组件标识,`value`属性为二维码生成对应内容,`options`为配置选项,可配置二维码样式,绘制Logo等,详见:[options](https://uqrcode.cn/doc/document/uni-app.html#options) 。 + +``` html + +``` + +### 导出临时文件路径 + +为了保证方法调用成功,请在 [complete](https://uqrcode.cn/doc/document/uni-app.html#complete) 事件返回`success=true`后调用。 + +```javascript +// uqrcode为组件的ref名称 +this.$refs.uqrcode.toTempFilePath({ + success: res => { + console.log(res); + } +}); +``` + +### 保存二维码到本地相册 + +为了保证方法调用成功,请在 [complete](https://uqrcode.cn/doc/document/uni-app.html#complete) 事件返回`success=true`后调用。 + +```javascript +// uqrcode为组件的ref名称 +this.$refs.uqrcode.save({ + success: () => { + uni.showToast({ + icon: 'success', + title: '保存成功' + }); + } +}); +``` + +## 更多使用说明请前往官方文档查看:[https://uqrcode.cn/doc](https://uqrcode.cn/doc)。 \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/changelog.md b/src/uni_modules/Sansnn-uQRCode/changelog.md new file mode 100644 index 0000000..74a6e4c --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/changelog.md @@ -0,0 +1,12 @@ +## 4.0.6(2022-12-12) +修复`getDrawModules`,第一次获取结果正常,后续获取`tile`模块不存在的问题; +修复安卓type:normal因Canvas API使用了小数或为0的参数导致生成异常的问题(注:安卓非2d Canvas部分API参数不支持携带小数,部分API参数必须大于0)。 +## 4.0.1(2022-11-28) +优化组件loading属性的表现; +新增组件type选项normal,以便于在某些条件编译初始为type=2d时还可以选择使用非2d组件类型; +修复组件条件编译在其他编辑器语法提示报错; +修复原生对es5的支持。 +## 4.0.0(2022-11-21) +v4版本源代码全面开放,开源地址:[https://github.com/Sansnn/uQRCode](https://github.com/Sansnn/uQRCode); + +升级说明:v4为大版本更新,虽然已尽可能兼容上一代版本,但不可避免的还是存在一些细节差异,若更新后出现问题,请参考对照[v3 文档](https://uqrcode.cn/doc/v3),[v4 文档](https://uqrcode.cn/doc)进行修改。 diff --git a/src/uni_modules/Sansnn-uQRCode/common/cache.js b/src/uni_modules/Sansnn-uQRCode/common/cache.js new file mode 100644 index 0000000..d897d26 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/common/cache.js @@ -0,0 +1 @@ +export const cacheImageList = []; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/common/queue.js b/src/uni_modules/Sansnn-uQRCode/common/queue.js new file mode 100644 index 0000000..be6b1d2 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/common/queue.js @@ -0,0 +1,41 @@ +function Queue() { + let waitingQueue = this.waitingQueue = []; + let isRunning = this.isRunning = false; // 记录是否有未完成的任务 + + function execute(task, resolve, reject) { + task() + .then((data) => { + resolve(data); + }) + .catch((e) => { + reject(e); + }) + .finally(() => { + // 等待任务队列中如果有任务,则触发它;否则设置isRunning = false,表示无任务状态 + if (waitingQueue.length) { + const next = waitingQueue.shift(); + execute(next.task, next.resolve, next.reject); + } else { + isRunning = false; + } + }); + } + this.exec = function(task) { + return new Promise((resolve, reject) => { + if (isRunning) { + waitingQueue.push({ + task, + resolve, + reject + }); + } else { + isRunning = true; + execute(task, resolve, reject); + } + }); + } +} + +/* 队列实例,某些平台一起使用多个组件时需要通过队列逐一绘制,否则部分绘制方法异常,nvue端的iOS gcanvas尤其明显,在不通过队列绘制时会出现图片丢失的情况 */ +export const queueDraw = new Queue(); +export const queueLoadImage = new Queue(); \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/common/types/cache.d.ts b/src/uni_modules/Sansnn-uQRCode/common/types/cache.d.ts new file mode 100644 index 0000000..9b6c3ce --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/common/types/cache.d.ts @@ -0,0 +1,3 @@ +declare module '*/common/cache' { + export const cacheImageList: Array; +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/common/types/queue.d.ts b/src/uni_modules/Sansnn-uQRCode/common/types/queue.d.ts new file mode 100644 index 0000000..f81ab97 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/common/types/queue.d.ts @@ -0,0 +1,4 @@ +declare module '*/common/queue' { + export const queueDraw: any; + export const queueLoadImage: any; +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/components/u-qrcode/u-qrcode.vue b/src/uni_modules/Sansnn-uQRCode/components/u-qrcode/u-qrcode.vue new file mode 100644 index 0000000..4fefaac --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/components/u-qrcode/u-qrcode.vue @@ -0,0 +1,1131 @@ + + + + + diff --git a/src/uni_modules/Sansnn-uQRCode/components/uqrcode/uqrcode.vue b/src/uni_modules/Sansnn-uQRCode/components/uqrcode/uqrcode.vue new file mode 100644 index 0000000..4fefaac --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/components/uqrcode/uqrcode.vue @@ -0,0 +1,1131 @@ + + + + + diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/bridge/bridge-weex.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/bridge/bridge-weex.js new file mode 100644 index 0000000..27086ec --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/bridge/bridge-weex.js @@ -0,0 +1,241 @@ +const isWeex = typeof WXEnvironment !== 'undefined'; +const isWeexIOS = isWeex && /ios/i.test(WXEnvironment.platform); +const isWeexAndroid = isWeex && !isWeexIOS; + +import GLmethod from '../context-webgl/GLmethod'; + +const GCanvasModule = + (typeof weex !== 'undefined' && weex.requireModule) ? (weex.requireModule('gcanvas')) : + (typeof __weex_require__ !== 'undefined') ? (__weex_require__('@weex-module/gcanvas')) : {}; + +let isDebugging = false; + +let isComboDisabled = false; + +const logCommand = (function () { + const methodQuery = []; + Object.keys(GLmethod).forEach(key => { + methodQuery[GLmethod[key]] = key; + }) + const queryMethod = (id) => { + return methodQuery[parseInt(id)] || 'NotFoundMethod'; + } + const logCommand = (id, cmds) => { + const mId = cmds.split(',')[0]; + const mName = queryMethod(mId); + console.log(`=== callNative - componentId:${id}; method: ${mName}; cmds: ${cmds}`); + } + return logCommand; +})(); + +function joinArray(arr, sep) { + let res = ''; + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res += sep; + } + res += arr[i]; + } + return res; +} + +const commandsCache = {} + +const GBridge = { + + callEnable: (ref, configArray) => { + + commandsCache[ref] = []; + + return GCanvasModule.enable({ + componentId: ref, + config: configArray + }); + }, + + callEnableDebug: () => { + isDebugging = true; + }, + + callEnableDisableCombo: () => { + isComboDisabled = true; + }, + + callSetContextType: function (componentId, context_type) { + GCanvasModule.setContextType(context_type, componentId); + }, + + callReset: function(id){ + GCanvasModule.resetComponent && canvasModule.resetComponent(componentId); + }, + + render: isWeexIOS ? function (componentId) { + return GCanvasModule.extendCallNative({ + contextId: componentId, + type: 0x60000001 + }); + } : function (componentId) { + return callGCanvasLinkNative(componentId, 0x60000001, 'render'); + }, + + render2d: isWeexIOS ? function (componentId, commands, callback) { + + if (isDebugging) { + console.log('>>> >>> render2d ==='); + console.log('>>> commands: ' + commands); + } + + GCanvasModule.render([commands, callback?true:false], componentId, callback); + + } : function (componentId, commands,callback) { + + if (isDebugging) { + console.log('>>> >>> render2d ==='); + console.log('>>> commands: ' + commands); + } + + callGCanvasLinkNative(componentId, 0x20000001, commands); + if(callback){ + callback(); + } + }, + + callExtendCallNative: isWeexIOS ? function (componentId, cmdArgs) { + + throw 'should not be here anymore ' + cmdArgs; + + } : function (componentId, cmdArgs) { + + throw 'should not be here anymore ' + cmdArgs; + + }, + + + flushNative: isWeexIOS ? function (componentId) { + + const cmdArgs = joinArray(commandsCache[componentId], ';'); + commandsCache[componentId] = []; + + if (isDebugging) { + console.log('>>> >>> flush native ==='); + console.log('>>> commands: ' + cmdArgs); + } + + const result = GCanvasModule.extendCallNative({ + "contextId": componentId, + "type": 0x60000000, + "args": cmdArgs + }); + + const res = result && result.result; + + if (isDebugging) { + console.log('>>> result: ' + res); + } + + return res; + + } : function (componentId) { + + const cmdArgs = joinArray(commandsCache[componentId], ';'); + commandsCache[componentId] = []; + + if (isDebugging) { + console.log('>>> >>> flush native ==='); + console.log('>>> commands: ' + cmdArgs); + } + + const result = callGCanvasLinkNative(componentId, 0x60000000, cmdArgs); + + if (isDebugging) { + console.log('>>> result: ' + result); + } + + return result; + }, + + callNative: function (componentId, cmdArgs, cache) { + + if (isDebugging) { + logCommand(componentId, cmdArgs); + } + + commandsCache[componentId].push(cmdArgs); + + if (!cache || isComboDisabled) { + return GBridge.flushNative(componentId); + } else { + return undefined; + } + }, + + texImage2D(componentId, ...args) { + if (isWeexIOS) { + if (args.length === 6) { + const [target, level, internalformat, format, type, image] = args; + GBridge.callNative( + componentId, + GLmethod.texImage2D + ',' + 6 + ',' + target + ',' + level + ',' + internalformat + ',' + format + ',' + type + ',' + image.src + ) + } else if (args.length === 9) { + const [target, level, internalformat, width, height, border, format, type, image] = args; + GBridge.callNative( + componentId, + GLmethod.texImage2D + ',' + 9 + ',' + target + ',' + level + ',' + internalformat + ',' + width + ',' + height + ',' + border + ',' + + + format + ',' + type + ',' + (image ? image.src : 0) + ) + } + } else if (isWeexAndroid) { + if (args.length === 6) { + const [target, level, internalformat, format, type, image] = args; + GCanvasModule.texImage2D(componentId, target, level, internalformat, format, type, image.src); + } else if (args.length === 9) { + const [target, level, internalformat, width, height, border, format, type, image] = args; + GCanvasModule.texImage2D(componentId, target, level, internalformat, width, height, border, format, type, (image ? image.src : 0)); + } + } + }, + + texSubImage2D(componentId, target, level, xoffset, yoffset, format, type, image) { + if (isWeexIOS) { + if (arguments.length === 8) { + GBridge.callNative( + componentId, + GLmethod.texSubImage2D + ',' + 6 + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset, + ',' + format + ',' + type + ',' + image.src + ) + } + } else if (isWeexAndroid) { + GCanvasModule.texSubImage2D(componentId, target, level, xoffset, yoffset, format, type, image.src); + } + }, + + bindImageTexture(componentId, src, imageId) { + GCanvasModule.bindImageTexture([src, imageId], componentId); + }, + + perloadImage([url, id], callback) { + GCanvasModule.preLoadImage([url, id], function (image) { + image.url = url; + image.id = id; + callback(image); + }); + }, + + measureText(text, fontStyle, componentId) { + return GCanvasModule.measureText([text, fontStyle], componentId); + }, + + getImageData (componentId, x, y, w, h, callback) { + GCanvasModule.getImageData([x, y,w,h],componentId,callback); + }, + + putImageData (componentId, data, x, y, w, h, callback) { + GCanvasModule.putImageData([x, y,w,h,data],componentId,callback); + }, + + toTempFilePath(componentId, x, y, width, height, destWidth, destHeight, fileType, quality, callback){ + GCanvasModule.toTempFilePath([x, y, width,height, destWidth, destHeight, fileType, quality], componentId, callback); + } +} + +export default GBridge; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleLinearGradient.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleLinearGradient.js new file mode 100644 index 0000000..3e7f03a --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleLinearGradient.js @@ -0,0 +1,18 @@ +class FillStyleLinearGradient { + + constructor(x0, y0, x1, y1) { + this._start_pos = { _x: x0, _y: y0 }; + this._end_pos = { _x: x1, _y: y1 }; + this._stop_count = 0; + this._stops = [0, 0, 0, 0, 0]; + } + + addColorStop = function (pos, color) { + if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) { + this._stops[this._stop_count] = { _pos: pos, _color: color }; + this._stop_count++; + } + } +} + +export default FillStyleLinearGradient; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStylePattern.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStylePattern.js new file mode 100644 index 0000000..6e4f646 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStylePattern.js @@ -0,0 +1,8 @@ +class FillStylePattern { + constructor(img, pattern) { + this._style = pattern; + this._img = img; + } +} + +export default FillStylePattern; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleRadialGradient.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleRadialGradient.js new file mode 100644 index 0000000..7790596 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/FillStyleRadialGradient.js @@ -0,0 +1,17 @@ +class FillStyleRadialGradient { + constructor(x0, y0, r0, x1, y1, r1) { + this._start_pos = { _x: x0, _y: y0, _r: r0 }; + this._end_pos = { _x: x1, _y: y1, _r: r1 }; + this._stop_count = 0; + this._stops = [0, 0, 0, 0, 0]; + } + + addColorStop(pos, color) { + if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) { + this._stops[this._stop_count] = { _pos: pos, _color: color }; + this._stop_count++; + } + } +} + +export default FillStyleRadialGradient; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/RenderingContext.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/RenderingContext.js new file mode 100644 index 0000000..e6b8f48 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-2d/RenderingContext.js @@ -0,0 +1,666 @@ +import FillStylePattern from './FillStylePattern'; +import FillStyleLinearGradient from './FillStyleLinearGradient'; +import FillStyleRadialGradient from './FillStyleRadialGradient'; +import GImage from '../env/image.js'; +import { + ArrayBufferToBase64, + Base64ToUint8ClampedArray +} from '../env/tool.js'; + +export default class CanvasRenderingContext2D { + + _drawCommands = ''; + + _globalAlpha = 1.0; + + _fillStyle = 'rgb(0,0,0)'; + _strokeStyle = 'rgb(0,0,0)'; + + _lineWidth = 1; + _lineCap = 'butt'; + _lineJoin = 'miter'; + + _miterLimit = 10; + + _globalCompositeOperation = 'source-over'; + + _textAlign = 'start'; + _textBaseline = 'alphabetic'; + + _font = '10px sans-serif'; + + _savedGlobalAlpha = []; + + timer = null; + componentId = null; + + _notCommitDrawImageCache = []; + _needRedrawImageCache = []; + _redrawCommands = ''; + _autoSaveContext = true; + // _imageMap = new GHashMap(); + // _textureMap = new GHashMap(); + + constructor() { + this.className = 'CanvasRenderingContext2D'; + //this.save() + } + + setFillStyle(value) { + this.fillStyle = value; + } + + set fillStyle(value) { + this._fillStyle = value; + + if (typeof(value) == 'string') { + this._drawCommands = this._drawCommands.concat("F" + value + ";"); + } else if (value instanceof FillStylePattern) { + const image = value._img; + if (!image.complete) { + image.onload = () => { + var index = this._needRedrawImageCache.indexOf(image); + if (index > -1) { + this._needRedrawImageCache.splice(index, 1); + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._redrawflush(true); + } + } + this._notCommitDrawImageCache.push(image); + } else { + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + } + + //CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._drawCommands = this._drawCommands.concat("G" + image._id + "," + value._style + ";"); + } else if (value instanceof FillStyleLinearGradient) { + var command = "D" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + + value._stop_count; + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } else if (value instanceof FillStyleRadialGradient) { + var command = "H" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + value._start_pos._r + .toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + value._end_pos._r.toFixed(2) + "," + + value._stop_count; + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } + } + + get fillStyle() { + return this._fillStyle; + } + + get globalAlpha() { + return this._globalAlpha; + } + + setGlobalAlpha(value) { + this.globalAlpha = value; + } + + set globalAlpha(value) { + this._globalAlpha = value; + this._drawCommands = this._drawCommands.concat("a" + value.toFixed(2) + ";"); + } + + + get strokeStyle() { + return this._strokeStyle; + } + + setStrokeStyle(value) { + this.strokeStyle = value; + } + + set strokeStyle(value) { + + this._strokeStyle = value; + + if (typeof(value) == 'string') { + this._drawCommands = this._drawCommands.concat("S" + value + ";"); + } else if (value instanceof FillStylePattern) { + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._drawCommands = this._drawCommands.concat("G" + image._id + "," + value._style + ";"); + } else if (value instanceof FillStyleLinearGradient) { + var command = "D" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + + value._stop_count; + + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } else if (value instanceof FillStyleRadialGradient) { + var command = "H" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + value._start_pos._r + .toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y + ",".toFixed(2) + value._end_pos._r.toFixed(2) + "," + + value._stop_count; + + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } + } + + get lineWidth() { + return this._lineWidth; + } + + setLineWidth(value) { + this.lineWidth = value; + } + + set lineWidth(value) { + this._lineWidth = value; + this._drawCommands = this._drawCommands.concat("W" + value + ";"); + } + + get lineCap() { + return this._lineCap; + } + + setLineCap(value) { + this.lineCap = value; + } + + set lineCap(value) { + this._lineCap = value; + this._drawCommands = this._drawCommands.concat("C" + value + ";"); + } + + get lineJoin() { + return this._lineJoin; + } + + setLineJoin(value) { + this.lineJoin = value + } + + set lineJoin(value) { + this._lineJoin = value; + this._drawCommands = this._drawCommands.concat("J" + value + ";"); + } + + get miterLimit() { + return this._miterLimit; + } + + setMiterLimit(value) { + this.miterLimit = value + } + + set miterLimit(value) { + this._miterLimit = value; + this._drawCommands = this._drawCommands.concat("M" + value + ";"); + } + + get globalCompositeOperation() { + return this._globalCompositeOperation; + } + + set globalCompositeOperation(value) { + + this._globalCompositeOperation = value; + let mode = 0; + switch (value) { + case "source-over": + mode = 0; + break; + case "source-atop": + mode = 5; + break; + case "source-in": + mode = 0; + break; + case "source-out": + mode = 2; + break; + case "destination-over": + mode = 4; + break; + case "destination-atop": + mode = 4; + break; + case "destination-in": + mode = 4; + break; + case "destination-out": + mode = 3; + break; + case "lighter": + mode = 1; + break; + case "copy": + mode = 2; + break; + case "xor": + mode = 6; + break; + default: + mode = 0; + } + + this._drawCommands = this._drawCommands.concat("B" + mode + ";"); + } + + get textAlign() { + return this._textAlign; + } + + setTextAlign(value) { + this.textAlign = value + } + + set textAlign(value) { + + this._textAlign = value; + let Align = 0; + switch (value) { + case "start": + Align = 0; + break; + case "end": + Align = 1; + break; + case "left": + Align = 2; + break; + case "center": + Align = 3; + break; + case "right": + Align = 4; + break; + default: + Align = 0; + } + + this._drawCommands = this._drawCommands.concat("A" + Align + ";"); + } + + get textBaseline() { + return this._textBaseline; + } + + setTextBaseline(value) { + this.textBaseline = value + } + + set textBaseline(value) { + this._textBaseline = value; + let baseline = 0; + switch (value) { + case "alphabetic": + baseline = 0; + break; + case "middle": + baseline = 1; + break; + case "top": + baseline = 2; + break; + case "hanging": + baseline = 3; + break; + case "bottom": + baseline = 4; + break; + case "ideographic": + baseline = 5; + break; + default: + baseline = 0; + break; + } + + this._drawCommands = this._drawCommands.concat("E" + baseline + ";"); + } + + get font() { + return this._font; + } + + setFontSize(size) { + var str = this._font; + var strs = str.trim().split(/\s+/); + for (var i = 0; i < strs.length; i++) { + var values = ["normal", "italic", "oblique", "normal", "small-caps", "normal", "bold", + "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", + "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" + ]; + + if (-1 == values.indexOf(strs[i].trim())) { + if (typeof size === 'string') { + strs[i] = size; + } else if (typeof size === 'number') { + strs[i] = String(size) + 'px'; + } + break; + } + } + this.font = strs.join(" "); + } + + set font(value) { + this._font = value; + this._drawCommands = this._drawCommands.concat("j" + value + ";"); + } + + setTransform(a, b, c, d, tx, ty) { + this._drawCommands = this._drawCommands.concat("t" + + (a === 1 ? "1" : a.toFixed(2)) + "," + + (b === 0 ? "0" : b.toFixed(2)) + "," + + (c === 0 ? "0" : c.toFixed(2)) + "," + + (d === 1 ? "1" : d.toFixed(2)) + "," + tx.toFixed(2) + "," + ty.toFixed(2) + ";"); + } + + transform(a, b, c, d, tx, ty) { + this._drawCommands = this._drawCommands.concat("f" + + (a === 1 ? "1" : a.toFixed(2)) + "," + + (b === 0 ? "0" : b.toFixed(2)) + "," + + (c === 0 ? "0" : c.toFixed(2)) + "," + + (d === 1 ? "1" : d.toFixed(2)) + "," + tx + "," + ty + ";"); + } + + resetTransform() { + this._drawCommands = this._drawCommands.concat("m;"); + } + + scale(a, d) { + this._drawCommands = this._drawCommands.concat("k" + a.toFixed(2) + "," + + d.toFixed(2) + ";"); + } + + rotate(angle) { + this._drawCommands = this._drawCommands + .concat("r" + angle.toFixed(6) + ";"); + } + + translate(tx, ty) { + this._drawCommands = this._drawCommands.concat("l" + tx.toFixed(2) + "," + ty.toFixed(2) + ";"); + } + + save() { + this._savedGlobalAlpha.push(this._globalAlpha); + this._drawCommands = this._drawCommands.concat("v;"); + } + + restore() { + this._drawCommands = this._drawCommands.concat("e;"); + this._globalAlpha = this._savedGlobalAlpha.pop(); + } + + createPattern(img, pattern) { + if (typeof img === 'string') { + var imgObj = new GImage(); + imgObj.src = img; + img = imgObj; + } + return new FillStylePattern(img, pattern); + } + + createLinearGradient(x0, y0, x1, y1) { + return new FillStyleLinearGradient(x0, y0, x1, y1); + } + + createRadialGradient = function(x0, y0, r0, x1, y1, r1) { + return new FillStyleRadialGradient(x0, y0, r0, x1, y1, r1); + }; + + createCircularGradient = function(x0, y0, r0) { + return new FillStyleRadialGradient(x0, y0, 0, x0, y0, r0); + }; + + strokeRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("s" + x + "," + y + "," + w + "," + h + ";"); + } + + + clearRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("c" + x + "," + y + "," + w + + "," + h + ";"); + } + + clip() { + this._drawCommands = this._drawCommands.concat("p;"); + } + + resetClip() { + this._drawCommands = this._drawCommands.concat("q;"); + } + + closePath() { + this._drawCommands = this._drawCommands.concat("o;"); + } + + moveTo(x, y) { + this._drawCommands = this._drawCommands.concat("g" + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + lineTo(x, y) { + this._drawCommands = this._drawCommands.concat("i" + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + quadraticCurveTo = function(cpx, cpy, x, y) { + this._drawCommands = this._drawCommands.concat("u" + cpx + "," + cpy + "," + x + "," + y + ";"); + } + + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y, ) { + this._drawCommands = this._drawCommands.concat( + "z" + cp1x.toFixed(2) + "," + cp1y.toFixed(2) + "," + cp2x.toFixed(2) + "," + cp2y.toFixed(2) + "," + + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + arcTo(x1, y1, x2, y2, radius) { + this._drawCommands = this._drawCommands.concat("h" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + radius + ";"); + } + + beginPath() { + this._drawCommands = this._drawCommands.concat("b;"); + } + + + fillRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("n" + x + "," + y + "," + w + + "," + h + ";"); + } + + rect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("w" + x + "," + y + "," + w + "," + h + ";"); + } + + fill() { + this._drawCommands = this._drawCommands.concat("L;"); + } + + stroke(path) { + this._drawCommands = this._drawCommands.concat("x;"); + } + + arc(x, y, radius, startAngle, endAngle, anticlockwise) { + + let ianticlockwise = 0; + if (anticlockwise) { + ianticlockwise = 1; + } + + this._drawCommands = this._drawCommands.concat( + "y" + x.toFixed(2) + "," + y.toFixed(2) + "," + + radius.toFixed(2) + "," + startAngle + "," + endAngle + "," + ianticlockwise + + ";" + ); + } + + fillText(text, x, y) { + let tmptext = text.replace(/!/g, "!!"); + tmptext = tmptext.replace(/,/g, "!,"); + tmptext = tmptext.replace(/;/g, "!;"); + this._drawCommands = this._drawCommands.concat("T" + tmptext + "," + x + "," + y + ",0.0;"); + } + + strokeText = function(text, x, y) { + let tmptext = text.replace(/!/g, "!!"); + tmptext = tmptext.replace(/,/g, "!,"); + tmptext = tmptext.replace(/;/g, "!;"); + this._drawCommands = this._drawCommands.concat("U" + tmptext + "," + x + "," + y + ",0.0;"); + } + + measureText(text) { + return CanvasRenderingContext2D.GBridge.measureText(text, this.font, this.componentId); + } + + isPointInPath = function(x, y) { + throw new Error('GCanvas not supported yet'); + } + + drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) { + if (typeof image === 'string') { + var imgObj = new GImage(); + imgObj.src = image; + image = imgObj; + } + if (image instanceof GImage) { + if (!image.complete) { + imgObj.onload = () => { + var index = this._needRedrawImageCache.indexOf(image); + if (index > -1) { + this._needRedrawImageCache.splice(index, 1); + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._redrawflush(true); + } + } + this._notCommitDrawImageCache.push(image); + } else { + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + } + var srcArgs = [image, sx, sy, sw, sh, dx, dy, dw, dh]; + var args = []; + for (var arg in srcArgs) { + if (typeof(srcArgs[arg]) != 'undefined') { + args.push(srcArgs[arg]); + } + } + this.__drawImage.apply(this, args); + //this.__drawImage(image,sx, sy, sw, sh, dx, dy, dw, dh); + } + } + + __drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) { + const numArgs = arguments.length; + + function drawImageCommands() { + + if (numArgs === 3) { + const x = parseFloat(sx) || 0.0; + const y = parseFloat(sy) || 0.0; + + return ("d" + image._id + ",0,0," + + image.width + "," + image.height + "," + + x + "," + y + "," + image.width + "," + image.height + ";"); + } else if (numArgs === 5) { + const x = parseFloat(sx) || 0.0; + const y = parseFloat(sy) || 0.0; + const width = parseInt(sw) || image.width; + const height = parseInt(sh) || image.height; + + return ("d" + image._id + ",0,0," + + image.width + "," + image.height + "," + + x + "," + y + "," + width + "," + height + ";"); + } else if (numArgs === 9) { + sx = parseFloat(sx) || 0.0; + sy = parseFloat(sy) || 0.0; + sw = parseInt(sw) || image.width; + sh = parseInt(sh) || image.height; + dx = parseFloat(dx) || 0.0; + dy = parseFloat(dy) || 0.0; + dw = parseInt(dw) || image.width; + dh = parseInt(dh) || image.height; + + return ("d" + image._id + "," + + sx + "," + sy + "," + sw + "," + sh + "," + + dx + "," + dy + "," + dw + "," + dh + ";"); + } + } + this._drawCommands += drawImageCommands(); + } + + _flush(reserve, callback) { + const commands = this._drawCommands; + this._drawCommands = ''; + CanvasRenderingContext2D.GBridge.render2d(this.componentId, commands, callback); + this._needRender = false; + } + + _redrawflush(reserve, callback) { + const commands = this._redrawCommands; + CanvasRenderingContext2D.GBridge.render2d(this.componentId, commands, callback); + if (this._needRedrawImageCache.length == 0) { + this._redrawCommands = ''; + } + } + + draw(reserve, callback) { + if (!reserve) { + this._globalAlpha = this._savedGlobalAlpha.pop(); + this._savedGlobalAlpha.push(this._globalAlpha); + this._redrawCommands = this._drawCommands; + this._needRedrawImageCache = this._notCommitDrawImageCache; + if (this._autoSaveContext) { + this._drawCommands = ("v;" + this._drawCommands); + this._autoSaveContext = false; + } else { + this._drawCommands = ("e;X;v;" + this._drawCommands); + } + } else { + this._needRedrawImageCache = this._needRedrawImageCache.concat(this._notCommitDrawImageCache); + this._redrawCommands += this._drawCommands; + if (this._autoSaveContext) { + this._drawCommands = ("v;" + this._drawCommands); + this._autoSaveContext = false; + } + } + this._notCommitDrawImageCache = []; + if (this._flush) { + this._flush(reserve, callback); + } + } + + getImageData(x, y, w, h, callback) { + CanvasRenderingContext2D.GBridge.getImageData(this.componentId, x, y, w, h, function(res) { + res.data = Base64ToUint8ClampedArray(res.data); + if (typeof(callback) == 'function') { + callback(res); + } + }); + } + + putImageData(data, x, y, w, h, callback) { + if (data instanceof Uint8ClampedArray) { + data = ArrayBufferToBase64(data); + CanvasRenderingContext2D.GBridge.putImageData(this.componentId, data, x, y, w, h, function(res) { + if (typeof(callback) == 'function') { + callback(res); + } + }); + } + } + + toTempFilePath(x, y, width, height, destWidth, destHeight, fileType, quality, callback) { + CanvasRenderingContext2D.GBridge.toTempFilePath(this.componentId, x, y, width, height, destWidth, destHeight, + fileType, quality, + function(res) { + if (typeof(callback) == 'function') { + callback(res); + } + }); + } +} diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ActiveInfo.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ActiveInfo.js new file mode 100644 index 0000000..b495129 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ActiveInfo.js @@ -0,0 +1,11 @@ +export default class WebGLActiveInfo { + className = 'WebGLActiveInfo'; + + constructor({ + type, name, size + }) { + this.type = type; + this.name = name; + this.size = size; + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Buffer.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Buffer.js new file mode 100644 index 0000000..4800f67 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Buffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLBuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Framebuffer.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Framebuffer.js new file mode 100644 index 0000000..28b46d3 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Framebuffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLFrameBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLFramebuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLenum.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLenum.js new file mode 100644 index 0000000..ac5544d --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLenum.js @@ -0,0 +1,298 @@ +export default { + "DEPTH_BUFFER_BIT": 256, + "STENCIL_BUFFER_BIT": 1024, + "COLOR_BUFFER_BIT": 16384, + "POINTS": 0, + "LINES": 1, + "LINE_LOOP": 2, + "LINE_STRIP": 3, + "TRIANGLES": 4, + "TRIANGLE_STRIP": 5, + "TRIANGLE_FAN": 6, + "ZERO": 0, + "ONE": 1, + "SRC_COLOR": 768, + "ONE_MINUS_SRC_COLOR": 769, + "SRC_ALPHA": 770, + "ONE_MINUS_SRC_ALPHA": 771, + "DST_ALPHA": 772, + "ONE_MINUS_DST_ALPHA": 773, + "DST_COLOR": 774, + "ONE_MINUS_DST_COLOR": 775, + "SRC_ALPHA_SATURATE": 776, + "FUNC_ADD": 32774, + "BLEND_EQUATION": 32777, + "BLEND_EQUATION_RGB": 32777, + "BLEND_EQUATION_ALPHA": 34877, + "FUNC_SUBTRACT": 32778, + "FUNC_REVERSE_SUBTRACT": 32779, + "BLEND_DST_RGB": 32968, + "BLEND_SRC_RGB": 32969, + "BLEND_DST_ALPHA": 32970, + "BLEND_SRC_ALPHA": 32971, + "CONSTANT_COLOR": 32769, + "ONE_MINUS_CONSTANT_COLOR": 32770, + "CONSTANT_ALPHA": 32771, + "ONE_MINUS_CONSTANT_ALPHA": 32772, + "BLEND_COLOR": 32773, + "ARRAY_BUFFER": 34962, + "ELEMENT_ARRAY_BUFFER": 34963, + "ARRAY_BUFFER_BINDING": 34964, + "ELEMENT_ARRAY_BUFFER_BINDING": 34965, + "STREAM_DRAW": 35040, + "STATIC_DRAW": 35044, + "DYNAMIC_DRAW": 35048, + "BUFFER_SIZE": 34660, + "BUFFER_USAGE": 34661, + "CURRENT_VERTEX_ATTRIB": 34342, + "FRONT": 1028, + "BACK": 1029, + "FRONT_AND_BACK": 1032, + "TEXTURE_2D": 3553, + "CULL_FACE": 2884, + "BLEND": 3042, + "DITHER": 3024, + "STENCIL_TEST": 2960, + "DEPTH_TEST": 2929, + "SCISSOR_TEST": 3089, + "POLYGON_OFFSET_FILL": 32823, + "SAMPLE_ALPHA_TO_COVERAGE": 32926, + "SAMPLE_COVERAGE": 32928, + "NO_ERROR": 0, + "INVALID_ENUM": 1280, + "INVALID_VALUE": 1281, + "INVALID_OPERATION": 1282, + "OUT_OF_MEMORY": 1285, + "CW": 2304, + "CCW": 2305, + "LINE_WIDTH": 2849, + "ALIASED_POINT_SIZE_RANGE": 33901, + "ALIASED_LINE_WIDTH_RANGE": 33902, + "CULL_FACE_MODE": 2885, + "FRONT_FACE": 2886, + "DEPTH_RANGE": 2928, + "DEPTH_WRITEMASK": 2930, + "DEPTH_CLEAR_VALUE": 2931, + "DEPTH_FUNC": 2932, + "STENCIL_CLEAR_VALUE": 2961, + "STENCIL_FUNC": 2962, + "STENCIL_FAIL": 2964, + "STENCIL_PASS_DEPTH_FAIL": 2965, + "STENCIL_PASS_DEPTH_PASS": 2966, + "STENCIL_REF": 2967, + "STENCIL_VALUE_MASK": 2963, + "STENCIL_WRITEMASK": 2968, + "STENCIL_BACK_FUNC": 34816, + "STENCIL_BACK_FAIL": 34817, + "STENCIL_BACK_PASS_DEPTH_FAIL": 34818, + "STENCIL_BACK_PASS_DEPTH_PASS": 34819, + "STENCIL_BACK_REF": 36003, + "STENCIL_BACK_VALUE_MASK": 36004, + "STENCIL_BACK_WRITEMASK": 36005, + "VIEWPORT": 2978, + "SCISSOR_BOX": 3088, + "COLOR_CLEAR_VALUE": 3106, + "COLOR_WRITEMASK": 3107, + "UNPACK_ALIGNMENT": 3317, + "PACK_ALIGNMENT": 3333, + "MAX_TEXTURE_SIZE": 3379, + "MAX_VIEWPORT_DIMS": 3386, + "SUBPIXEL_BITS": 3408, + "RED_BITS": 3410, + "GREEN_BITS": 3411, + "BLUE_BITS": 3412, + "ALPHA_BITS": 3413, + "DEPTH_BITS": 3414, + "STENCIL_BITS": 3415, + "POLYGON_OFFSET_UNITS": 10752, + "POLYGON_OFFSET_FACTOR": 32824, + "TEXTURE_BINDING_2D": 32873, + "SAMPLE_BUFFERS": 32936, + "SAMPLES": 32937, + "SAMPLE_COVERAGE_VALUE": 32938, + "SAMPLE_COVERAGE_INVERT": 32939, + "COMPRESSED_TEXTURE_FORMATS": 34467, + "DONT_CARE": 4352, + "FASTEST": 4353, + "NICEST": 4354, + "GENERATE_MIPMAP_HINT": 33170, + "BYTE": 5120, + "UNSIGNED_BYTE": 5121, + "SHORT": 5122, + "UNSIGNED_SHORT": 5123, + "INT": 5124, + "UNSIGNED_INT": 5125, + "FLOAT": 5126, + "DEPTH_COMPONENT": 6402, + "ALPHA": 6406, + "RGB": 6407, + "RGBA": 6408, + "LUMINANCE": 6409, + "LUMINANCE_ALPHA": 6410, + "UNSIGNED_SHORT_4_4_4_4": 32819, + "UNSIGNED_SHORT_5_5_5_1": 32820, + "UNSIGNED_SHORT_5_6_5": 33635, + "FRAGMENT_SHADER": 35632, + "VERTEX_SHADER": 35633, + "MAX_VERTEX_ATTRIBS": 34921, + "MAX_VERTEX_UNIFORM_VECTORS": 36347, + "MAX_VARYING_VECTORS": 36348, + "MAX_COMBINED_TEXTURE_IMAGE_UNITS": 35661, + "MAX_VERTEX_TEXTURE_IMAGE_UNITS": 35660, + "MAX_TEXTURE_IMAGE_UNITS": 34930, + "MAX_FRAGMENT_UNIFORM_VECTORS": 36349, + "SHADER_TYPE": 35663, + "DELETE_STATUS": 35712, + "LINK_STATUS": 35714, + "VALIDATE_STATUS": 35715, + "ATTACHED_SHADERS": 35717, + "ACTIVE_UNIFORMS": 35718, + "ACTIVE_ATTRIBUTES": 35721, + "SHADING_LANGUAGE_VERSION": 35724, + "CURRENT_PROGRAM": 35725, + "NEVER": 512, + "LESS": 513, + "EQUAL": 514, + "LEQUAL": 515, + "GREATER": 516, + "NOTEQUAL": 517, + "GEQUAL": 518, + "ALWAYS": 519, + "KEEP": 7680, + "REPLACE": 7681, + "INCR": 7682, + "DECR": 7683, + "INVERT": 5386, + "INCR_WRAP": 34055, + "DECR_WRAP": 34056, + "VENDOR": 7936, + "RENDERER": 7937, + "VERSION": 7938, + "NEAREST": 9728, + "LINEAR": 9729, + "NEAREST_MIPMAP_NEAREST": 9984, + "LINEAR_MIPMAP_NEAREST": 9985, + "NEAREST_MIPMAP_LINEAR": 9986, + "LINEAR_MIPMAP_LINEAR": 9987, + "TEXTURE_MAG_FILTER": 10240, + "TEXTURE_MIN_FILTER": 10241, + "TEXTURE_WRAP_S": 10242, + "TEXTURE_WRAP_T": 10243, + "TEXTURE": 5890, + "TEXTURE_CUBE_MAP": 34067, + "TEXTURE_BINDING_CUBE_MAP": 34068, + "TEXTURE_CUBE_MAP_POSITIVE_X": 34069, + "TEXTURE_CUBE_MAP_NEGATIVE_X": 34070, + "TEXTURE_CUBE_MAP_POSITIVE_Y": 34071, + "TEXTURE_CUBE_MAP_NEGATIVE_Y": 34072, + "TEXTURE_CUBE_MAP_POSITIVE_Z": 34073, + "TEXTURE_CUBE_MAP_NEGATIVE_Z": 34074, + "MAX_CUBE_MAP_TEXTURE_SIZE": 34076, + "TEXTURE0": 33984, + "TEXTURE1": 33985, + "TEXTURE2": 33986, + "TEXTURE3": 33987, + "TEXTURE4": 33988, + "TEXTURE5": 33989, + "TEXTURE6": 33990, + "TEXTURE7": 33991, + "TEXTURE8": 33992, + "TEXTURE9": 33993, + "TEXTURE10": 33994, + "TEXTURE11": 33995, + "TEXTURE12": 33996, + "TEXTURE13": 33997, + "TEXTURE14": 33998, + "TEXTURE15": 33999, + "TEXTURE16": 34000, + "TEXTURE17": 34001, + "TEXTURE18": 34002, + "TEXTURE19": 34003, + "TEXTURE20": 34004, + "TEXTURE21": 34005, + "TEXTURE22": 34006, + "TEXTURE23": 34007, + "TEXTURE24": 34008, + "TEXTURE25": 34009, + "TEXTURE26": 34010, + "TEXTURE27": 34011, + "TEXTURE28": 34012, + "TEXTURE29": 34013, + "TEXTURE30": 34014, + "TEXTURE31": 34015, + "ACTIVE_TEXTURE": 34016, + "REPEAT": 10497, + "CLAMP_TO_EDGE": 33071, + "MIRRORED_REPEAT": 33648, + "FLOAT_VEC2": 35664, + "FLOAT_VEC3": 35665, + "FLOAT_VEC4": 35666, + "INT_VEC2": 35667, + "INT_VEC3": 35668, + "INT_VEC4": 35669, + "BOOL": 35670, + "BOOL_VEC2": 35671, + "BOOL_VEC3": 35672, + "BOOL_VEC4": 35673, + "FLOAT_MAT2": 35674, + "FLOAT_MAT3": 35675, + "FLOAT_MAT4": 35676, + "SAMPLER_2D": 35678, + "SAMPLER_CUBE": 35680, + "VERTEX_ATTRIB_ARRAY_ENABLED": 34338, + "VERTEX_ATTRIB_ARRAY_SIZE": 34339, + "VERTEX_ATTRIB_ARRAY_STRIDE": 34340, + "VERTEX_ATTRIB_ARRAY_TYPE": 34341, + "VERTEX_ATTRIB_ARRAY_NORMALIZED": 34922, + "VERTEX_ATTRIB_ARRAY_POINTER": 34373, + "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 34975, + "IMPLEMENTATION_COLOR_READ_TYPE": 35738, + "IMPLEMENTATION_COLOR_READ_FORMAT": 35739, + "COMPILE_STATUS": 35713, + "LOW_FLOAT": 36336, + "MEDIUM_FLOAT": 36337, + "HIGH_FLOAT": 36338, + "LOW_INT": 36339, + "MEDIUM_INT": 36340, + "HIGH_INT": 36341, + "FRAMEBUFFER": 36160, + "RENDERBUFFER": 36161, + "RGBA4": 32854, + "RGB5_A1": 32855, + "RGB565": 36194, + "DEPTH_COMPONENT16": 33189, + "STENCIL_INDEX8": 36168, + "DEPTH_STENCIL": 34041, + "RENDERBUFFER_WIDTH": 36162, + "RENDERBUFFER_HEIGHT": 36163, + "RENDERBUFFER_INTERNAL_FORMAT": 36164, + "RENDERBUFFER_RED_SIZE": 36176, + "RENDERBUFFER_GREEN_SIZE": 36177, + "RENDERBUFFER_BLUE_SIZE": 36178, + "RENDERBUFFER_ALPHA_SIZE": 36179, + "RENDERBUFFER_DEPTH_SIZE": 36180, + "RENDERBUFFER_STENCIL_SIZE": 36181, + "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE": 36048, + "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME": 36049, + "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL": 36050, + "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE": 36051, + "COLOR_ATTACHMENT0": 36064, + "DEPTH_ATTACHMENT": 36096, + "STENCIL_ATTACHMENT": 36128, + "DEPTH_STENCIL_ATTACHMENT": 33306, + "NONE": 0, + "FRAMEBUFFER_COMPLETE": 36053, + "FRAMEBUFFER_INCOMPLETE_ATTACHMENT": 36054, + "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT": 36055, + "FRAMEBUFFER_INCOMPLETE_DIMENSIONS": 36057, + "FRAMEBUFFER_UNSUPPORTED": 36061, + "FRAMEBUFFER_BINDING": 36006, + "RENDERBUFFER_BINDING": 36007, + "MAX_RENDERBUFFER_SIZE": 34024, + "INVALID_FRAMEBUFFER_OPERATION": 1286, + "UNPACK_FLIP_Y_WEBGL": 37440, + "UNPACK_PREMULTIPLY_ALPHA_WEBGL": 37441, + "CONTEXT_LOST_WEBGL": 37442, + "UNPACK_COLORSPACE_CONVERSION_WEBGL": 37443, + "BROWSER_DEFAULT_WEBGL": 37444 +}; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLmethod.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLmethod.js new file mode 100644 index 0000000..f2659be --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLmethod.js @@ -0,0 +1,142 @@ +let i = 1; + +const GLmethod = {}; + +GLmethod.activeTexture = i++; //1 +GLmethod.attachShader = i++; +GLmethod.bindAttribLocation = i++; +GLmethod.bindBuffer = i++; +GLmethod.bindFramebuffer = i++; +GLmethod.bindRenderbuffer = i++; +GLmethod.bindTexture = i++; +GLmethod.blendColor = i++; +GLmethod.blendEquation = i++; +GLmethod.blendEquationSeparate = i++; //10 +GLmethod.blendFunc = i++; +GLmethod.blendFuncSeparate = i++; +GLmethod.bufferData = i++; +GLmethod.bufferSubData = i++; +GLmethod.checkFramebufferStatus = i++; +GLmethod.clear = i++; +GLmethod.clearColor = i++; +GLmethod.clearDepth = i++; +GLmethod.clearStencil = i++; +GLmethod.colorMask = i++; //20 +GLmethod.compileShader = i++; +GLmethod.compressedTexImage2D = i++; +GLmethod.compressedTexSubImage2D = i++; +GLmethod.copyTexImage2D = i++; +GLmethod.copyTexSubImage2D = i++; +GLmethod.createBuffer = i++; +GLmethod.createFramebuffer = i++; +GLmethod.createProgram = i++; +GLmethod.createRenderbuffer = i++; +GLmethod.createShader = i++; //30 +GLmethod.createTexture = i++; +GLmethod.cullFace = i++; +GLmethod.deleteBuffer = i++; +GLmethod.deleteFramebuffer = i++; +GLmethod.deleteProgram = i++; +GLmethod.deleteRenderbuffer = i++; +GLmethod.deleteShader = i++; +GLmethod.deleteTexture = i++; +GLmethod.depthFunc = i++; +GLmethod.depthMask = i++; //40 +GLmethod.depthRange = i++; +GLmethod.detachShader = i++; +GLmethod.disable = i++; +GLmethod.disableVertexAttribArray = i++; +GLmethod.drawArrays = i++; +GLmethod.drawArraysInstancedANGLE = i++; +GLmethod.drawElements = i++; +GLmethod.drawElementsInstancedANGLE = i++; +GLmethod.enable = i++; +GLmethod.enableVertexAttribArray = i++; //50 +GLmethod.flush = i++; +GLmethod.framebufferRenderbuffer = i++; +GLmethod.framebufferTexture2D = i++; +GLmethod.frontFace = i++; +GLmethod.generateMipmap = i++; +GLmethod.getActiveAttrib = i++; +GLmethod.getActiveUniform = i++; +GLmethod.getAttachedShaders = i++; +GLmethod.getAttribLocation = i++; +GLmethod.getBufferParameter = i++; //60 +GLmethod.getContextAttributes = i++; +GLmethod.getError = i++; +GLmethod.getExtension = i++; +GLmethod.getFramebufferAttachmentParameter = i++; +GLmethod.getParameter = i++; +GLmethod.getProgramInfoLog = i++; +GLmethod.getProgramParameter = i++; +GLmethod.getRenderbufferParameter = i++; +GLmethod.getShaderInfoLog = i++; +GLmethod.getShaderParameter = i++; //70 +GLmethod.getShaderPrecisionFormat = i++; +GLmethod.getShaderSource = i++; +GLmethod.getSupportedExtensions = i++; +GLmethod.getTexParameter = i++; +GLmethod.getUniform = i++; +GLmethod.getUniformLocation = i++; +GLmethod.getVertexAttrib = i++; +GLmethod.getVertexAttribOffset = i++; +GLmethod.isBuffer = i++; +GLmethod.isContextLost = i++; //80 +GLmethod.isEnabled = i++; +GLmethod.isFramebuffer = i++; +GLmethod.isProgram = i++; +GLmethod.isRenderbuffer = i++; +GLmethod.isShader = i++; +GLmethod.isTexture = i++; +GLmethod.lineWidth = i++; +GLmethod.linkProgram = i++; +GLmethod.pixelStorei = i++; +GLmethod.polygonOffset = i++; //90 +GLmethod.readPixels = i++; +GLmethod.renderbufferStorage = i++; +GLmethod.sampleCoverage = i++; +GLmethod.scissor = i++; +GLmethod.shaderSource = i++; +GLmethod.stencilFunc = i++; +GLmethod.stencilFuncSeparate = i++; +GLmethod.stencilMask = i++; +GLmethod.stencilMaskSeparate = i++; +GLmethod.stencilOp = i++; //100 +GLmethod.stencilOpSeparate = i++; +GLmethod.texImage2D = i++; +GLmethod.texParameterf = i++; +GLmethod.texParameteri = i++; +GLmethod.texSubImage2D = i++; +GLmethod.uniform1f = i++; +GLmethod.uniform1fv = i++; +GLmethod.uniform1i = i++; +GLmethod.uniform1iv = i++; +GLmethod.uniform2f = i++; //110 +GLmethod.uniform2fv = i++; +GLmethod.uniform2i = i++; +GLmethod.uniform2iv = i++; +GLmethod.uniform3f = i++; +GLmethod.uniform3fv = i++; +GLmethod.uniform3i = i++; +GLmethod.uniform3iv = i++; +GLmethod.uniform4f = i++; +GLmethod.uniform4fv = i++; +GLmethod.uniform4i = i++; //120 +GLmethod.uniform4iv = i++; +GLmethod.uniformMatrix2fv = i++; +GLmethod.uniformMatrix3fv = i++; +GLmethod.uniformMatrix4fv = i++; +GLmethod.useProgram = i++; +GLmethod.validateProgram = i++; +GLmethod.vertexAttrib1f = i++; //new +GLmethod.vertexAttrib2f = i++; //new +GLmethod.vertexAttrib3f = i++; //new +GLmethod.vertexAttrib4f = i++; //new //130 +GLmethod.vertexAttrib1fv = i++; //new +GLmethod.vertexAttrib2fv = i++; //new +GLmethod.vertexAttrib3fv = i++; //new +GLmethod.vertexAttrib4fv = i++; //new +GLmethod.vertexAttribPointer = i++; +GLmethod.viewport = i++; + +export default GLmethod; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLtype.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLtype.js new file mode 100644 index 0000000..695abcb --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/GLtype.js @@ -0,0 +1,23 @@ +const GLtype = {}; + +[ + "GLbitfield", + "GLboolean", + "GLbyte", + "GLclampf", + "GLenum", + "GLfloat", + "GLint", + "GLintptr", + "GLsizei", + "GLsizeiptr", + "GLshort", + "GLubyte", + "GLuint", + "GLushort" +].sort().map((typeName, i) => GLtype[typeName] = 1 >> (i + 1)); + +export default GLtype; + + + diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Program.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Program.js new file mode 100644 index 0000000..6f5691c --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Program.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLProgram'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLProgram { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Renderbuffer.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Renderbuffer.js new file mode 100644 index 0000000..d3182ae --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Renderbuffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLRenderBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLRenderbuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/RenderingContext.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/RenderingContext.js new file mode 100644 index 0000000..5f9608f --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/RenderingContext.js @@ -0,0 +1,1191 @@ +import GLenum from './GLenum'; +import ActiveInfo from './ActiveInfo'; +import Buffer from './Buffer'; +import Framebuffer from './Framebuffer'; +import Renderbuffer from './Renderbuffer'; +import Texture from './Texture'; +import Program from './Program'; +import Shader from './Shader'; +import ShaderPrecisionFormat from './ShaderPrecisionFormat'; +import UniformLocation from './UniformLocation'; +import GLmethod from './GLmethod'; + +const processArray = (array, checkArrayType = false) => { + + function joinArray(arr, sep) { + let res = ''; + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res += sep; + } + res += arr[i]; + } + return res; + } + + let type = 'Float32Array'; + if (checkArrayType) { + if (array instanceof Uint8Array) { + type = 'Uint8Array' + } else if (array instanceof Uint16Array) { + type = 'Uint16Array'; + } else if (array instanceof Uint32Array) { + type = 'Uint32Array'; + } else if (array instanceof Float32Array) { + type = 'Float32Array'; + } else { + throw new Error('Check array type failed. Array type is ' + typeof array); + } + } + + const ArrayTypes = { + Uint8Array: 1, + Uint16Array: 2, + Uint32Array: 4, + Float32Array: 14 + }; + return ArrayTypes[type] + ',' + btoa(joinArray(array, ',')) +} + +export default class WebGLRenderingContext { + + // static GBridge = null; + + className = 'WebGLRenderingContext'; + + constructor(canvas, type, attrs) { + this._canvas = canvas; + this._type = type; + this._version = 'WebGL 1.0'; + this._attrs = attrs; + this._map = new Map(); + + Object.keys(GLenum) + .forEach(name => Object.defineProperty(this, name, { + value: GLenum[name] + })); + } + + get canvas() { + return this._canvas; + } + + activeTexture = function (textureUnit) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.activeTexture + ',' + textureUnit, + true + ); + } + + attachShader = function (progarm, shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.attachShader + ',' + progarm.id + ',' + shader.id, + true + ); + } + + bindAttribLocation = function (program, index, name) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindAttribLocation + ',' + program.id + ',' + index + ',' + name, + true + ) + } + + bindBuffer = function (target, buffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindBuffer + ',' + target + ',' + (buffer ? buffer.id : 0), + true + ); + } + + bindFramebuffer = function (target, framebuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindFramebuffer + ',' + target + ',' + (framebuffer ? framebuffer.id : 0), + true + ) + } + + bindRenderbuffer = function (target, renderBuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindRenderbuffer + ',' + target + ',' + (renderBuffer ? renderBuffer.id : 0), + true + ) + } + + bindTexture = function (target, texture) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindTexture + ',' + target + ',' + (texture ? texture.id : 0), + true + ) + } + + blendColor = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendColor + ',' + target + ',' + r + ',' + g + ',' + b + ',' + a, + true + ) + } + + blendEquation = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendEquation + ',' + mode, + true + ) + } + + blendEquationSeparate = function (modeRGB, modeAlpha) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendEquationSeparate + ',' + modeRGB + ',' + modeAlpha, + true + ) + } + + + blendFunc = function (sfactor, dfactor) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendFunc + ',' + sfactor + ',' + dfactor, + true + ); + } + + blendFuncSeparate = function (srcRGB, dstRGB, srcAlpha, dstAlpha) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendFuncSeparate + ',' + srcRGB + ',' + dstRGB + ',' + srcAlpha + ',' + dstAlpha, + true + ); + } + + bufferData = function (target, data, usage) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bufferData + ',' + target + ',' + processArray(data, true) + ',' + usage, + true + ) + } + + bufferSubData = function (target, offset, data) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bufferSubData + ',' + target + ',' + offset + ',' + processArray(data, true), + true + ) + } + + checkFramebufferStatus = function (target) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.checkFramebufferStatus + ',' + target + ); + return Number(result); + } + + clear = function (mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clear + ',' + mask + ); + this._canvas._needRender = true; + } + + clearColor = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearColor + ',' + r + ',' + g + ',' + b, + true + ) + } + + clearDepth = function (depth) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearDepth + ',' + depth, + true + ) + } + + clearStencil = function (s) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearStencil + ',' + s + ); + } + + colorMask = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.colorMask + ',' + r + ',' + g + ',' + b + ',' + a + ) + } + + compileShader = function (shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compileShader + ',' + shader.id, + true + ) + } + + compressedTexImage2D = function (target, level, internalformat, width, height, border, pixels) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compressedTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' + + width + ',' + height + ',' + border + ',' + processArray(pixels), + true + ) + } + + compressedTexSubImage2D = function (target, level, xoffset, yoffset, width, height, format, pixels) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compressedTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' + + width + ',' + height + ',' + format + ',' + processArray(pixels), + true + ) + } + + + copyTexImage2D = function (target, level, internalformat, x, y, width, height, border) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.copyTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' + x + ',' + y + ',' + + width + ',' + height + ',' + border, + true + ); + } + + copyTexSubImage2D = function (target, level, xoffset, yoffset, x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.copyTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' + x + ',' + y + ',' + + width + ',' + height + ); + } + + createBuffer = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createBuffer + '' + ); + const buffer = new Buffer(result); + this._map.set(buffer.uuid(), buffer); + return buffer; + } + + createFramebuffer = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createFramebuffer + '' + ); + const framebuffer = new Framebuffer(result); + this._map.set(framebuffer.uuid(), framebuffer); + return framebuffer; + } + + + createProgram = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createProgram + '' + ); + const program = new Program(id); + this._map.set(program.uuid(), program); + return program; + } + + createRenderbuffer = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createRenderbuffer + '' + ) + const renderBuffer = new Renderbuffer(id); + this._map.set(renderBuffer.uuid(), renderBuffer); + return renderBuffer; + } + + createShader = function (type) { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createShader + ',' + type + ) + const shader = new Shader(id, type); + this._map.set(shader.uuid(), shader); + return shader; + } + + createTexture = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createTexture + '' + ); + const texture = new Texture(id); + this._map.set(texture.uuid(), texture); + return texture; + } + + cullFace = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.cullFace + ',' + mode, + true + ) + } + + + deleteBuffer = function (buffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteBuffer + ',' + buffer.id, + true + ) + } + + deleteFramebuffer = function (framebuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteFramebuffer + ',' + framebuffer.id, + true + ) + } + + deleteProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteProgram + ',' + program.id, + true + ) + } + + deleteRenderbuffer = function (renderbuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteRenderbuffer + ',' + renderbuffer.id, + true + ) + } + + deleteShader = function (shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteShader + ',' + shader.id, + true + ) + } + + deleteTexture = function (texture) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteTexture + ',' + texture.id, + true + ) + } + + depthFunc = function (func) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthFunc + ',' + func + ) + } + + depthMask = function (flag) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthMask + ',' + Number(flag), + true + ) + } + + depthRange = function (zNear, zFar) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthRange + ',' + zNear + ',' + zFar, + true + ) + } + + detachShader = function (program, shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.detachShader + ',' + program.id + ',' + shader.id, + true + ) + } + + disable = function (cap) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.disable + ',' + cap, + true + ) + } + + disableVertexAttribArray = function (index) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.disableVertexAttribArray + ',' + index, + true + ); + } + + drawArrays = function (mode, first, count) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.drawArrays + ',' + mode + ',' + first + ',' + count + ) + this._canvas._needRender = true; + } + + drawElements = function (mode, count, type, offset) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.drawElements + ',' + mode + ',' + count + ',' + type + ',' + offset + ';' + ); + this._canvas._needRender = true; + } + + enable = function (cap) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.enable + ',' + cap, + true + ); + } + + enableVertexAttribArray = function (index) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.enableVertexAttribArray + ',' + index, + true + ) + } + + + flush = function () { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.flush + '' + ) + } + + framebufferRenderbuffer = function (target, attachment, textarget, texture, level) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.framebufferRenderbuffer + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level, + true + ) + } + + framebufferTexture2D = function (target, attachment, textarget, texture, level) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.framebufferTexture2D + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level, + true + ) + } + + frontFace = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.frontFace + ',' + mode, + true + ) + } + + generateMipmap = function (target) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.generateMipmap + ',' + target, + true + ) + } + + getActiveAttrib = function (progarm, index) { + const resultString = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getActiveAttrib + ',' + progarm.id + ',' + index + ) + const [type, size, name] = resultString.split(','); + return new ActiveInfo({ + type: Number(type), + size: Number(size), + name + }); + } + + getActiveUniform = function (progarm, index) { + const resultString = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getActiveUniform + ',' + progarm.id + ',' + index + ); + const [type, size, name] = resultString.split(','); + return new ActiveInfo({ + type: Number(type), + size: Number(size), + name + }) + } + + getAttachedShaders = function (progarm) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getAttachedShaders + ',' + progarm.id + ); + const [type, ...ids] = result; + return ids.map(id => this._map.get(Shader.uuid(id))); + } + + getAttribLocation = function (progarm, name) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getAttribLocation + ',' + progarm.id + ',' + name + ) + } + + getBufferParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getBufferParameter + ',' + target + ',' + pname + ); + const [type, res] = getBufferParameter; + return res; + } + + getError = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getError + '' + ) + return result; + } + + getExtension = function (name) { + return null; + } + + getFramebufferAttachmentParameter = function (target, attachment, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getFramebufferAttachmentParameter + ',' + target + ',' + attachment + ',' + pname + ) + switch (pname) { + case GLenum.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: + return this._map.get(Renderbuffer.uuid(result)) || this._map.get(Texture.uuid(result)) || null; + default: + return result; + } + } + + getParameter = function (pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getParameter + ',' + pname + ) + switch (pname) { + case GLenum.VERSION: + return this._version; + case GLenum.ARRAY_BUFFER_BINDING: // buffer + case GLenum.ELEMENT_ARRAY_BUFFER_BINDING: // buffer + return this._map.get(Buffer.uuid(result)) || null; + case GLenum.CURRENT_PROGRAM: // program + return this._map.get(Program.uuid(result)) || null; + case GLenum.FRAMEBUFFER_BINDING: // framebuffer + return this._map.get(Framebuffer.uuid(result)) || null; + case GLenum.RENDERBUFFER_BINDING: // renderbuffer + return this._map.get(Renderbuffer.uuid(result)) || null; + case GLenum.TEXTURE_BINDING_2D: // texture + case GLenum.TEXTURE_BINDING_CUBE_MAP: // texture + return this._map.get(Texture.uuid(result)) || null; + case GLenum.ALIASED_LINE_WIDTH_RANGE: // Float32Array + case GLenum.ALIASED_POINT_SIZE_RANGE: // Float32Array + case GLenum.BLEND_COLOR: // Float32Array + case GLenum.COLOR_CLEAR_VALUE: // Float32Array + case GLenum.DEPTH_RANGE: // Float32Array + case GLenum.MAX_VIEWPORT_DIMS: // Int32Array + case GLenum.SCISSOR_BOX: // Int32Array + case GLenum.VIEWPORT: // Int32Array + case GLenum.COMPRESSED_TEXTURE_FORMATS: // Uint32Array + default: + const [type, ...res] = result.split(','); + if (res.length === 1) { + return Number(res[0]); + } else { + return res.map(Number); + } + } + } + + getProgramInfoLog = function (progarm) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getProgramInfoLog + ',' + progarm.id + ) + } + + getProgramParameter = function (program, pname) { + const res = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getProgramParameter + ',' + program.id + ',' + pname + ); + + const [type, result] = res.split(',').map(i => parseInt(i)); + + if (type === 1) { + return Boolean(result); + } else if (type === 2) { + return result; + } else { + throw new Error('Unrecongized program paramater ' + res + ', type: ' + typeof res); + } + } + + + getRenderbufferParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getRenderbufferParameter + ',' + target + ',' + pname + ) + return result; + } + + + getShaderInfoLog = function (shader) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderInfoLog + ',' + shader.id + ); + } + + getShaderParameter = function (shader, pname) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderParameter + ',' + shader.id + ',' + pname + ) + } + + getShaderPrecisionFormat = function (shaderType, precisionType) { + const [rangeMin, rangeMax, precision] = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderPrecisionFormat + ',' + shaderType + ',' + precisionType + ); + const shaderPrecisionFormat = new ShaderPrecisionFormat({ + rangeMin: Number(rangeMin), + rangeMax: Number(rangeMax), + precision: Number(precision) + }); + return shaderPrecisionFormat; + } + + getShaderSource = function (shader) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderSource + ',' + shader.id + ); + return result; + } + + getSupportedExtensions = function () { + return Object.keys({}); + } + + getTexParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getTexParameter + ',' + target + ',' + pname + ) + return result; + } + + getUniformLocation = function (program, name) { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getUniformLocation + ',' + program.id + ',' + name + ); + if (id === -1) { + return null; + } else { + return new UniformLocation(Number(id)); + } + } + + getVertexAttrib = function (index, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getVertexAttrib + ',' + index + ',' + pname + ); + switch (pname) { + case GLenum.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: + return this._map.get(Buffer.uuid(result)) || null; + case GLenum.CURRENT_VERTEX_ATTRIB: // Float32Array + default: + return result; + } + } + + getVertexAttribOffset = function (index, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getVertexAttribOffset + ',' + index + ',' + pname + ) + return Number(result); + } + + isBuffer = function (buffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isBuffer + ',' + buffer.id + ) + return Boolean(result); + } + + isContextLost = function () { + return false; + } + + isEnabled = function (cap) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isEnabled + ',' + cap + ) + return Boolean(result); + } + + isFramebuffer = function (framebuffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isFramebuffer + ',' + framebuffer.id + ) + return Boolean(result); + } + + isProgram = function (program) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isProgram + ',' + program.id + ) + return Boolean(result); + } + + isRenderbuffer = function (renderBuffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isRenderbuffer + ',' + renderbuffer.id + ) + return Boolean(result); + } + + isShader = function (shader) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isShader + ',' + shader.id + ) + return Boolean(result); + } + + isTexture = function (texture) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isTexture + ',' + texture.id + ); + return Boolean(result); + } + + lineWidth = function (width) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.lineWidth + ',' + width, + true + ) + } + + linkProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.linkProgram + ',' + program.id, + true + ); + } + + + pixelStorei = function (pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.pixelStorei + ',' + pname + ',' + Number(param) + ) + } + + polygonOffset = function (factor, units) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.polygonOffset + ',' + factor + ',' + units + ) + } + + readPixels = function (x, y, width, height, format, type, pixels) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.readPixels + ',' + x + ',' + y + ',' + width + ',' + height + ',' + format + ',' + type + ) + return result; + } + + renderbufferStorage = function (target, internalFormat, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.renderbufferStorage + ',' + target + ',' + internalFormat + ',' + width + ',' + height, + true + ) + } + + sampleCoverage = function (value, invert) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.sampleCoverage + ',' + value + ',' + Number(invert), + true + ) + } + + scissor = function (x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.scissor + ',' + x + ',' + y + ',' + width + ',' + height, + true + ) + } + + shaderSource = function (shader, source) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.shaderSource + ',' + shader.id + ',' + source + ) + } + + stencilFunc = function (func, ref, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilFunc + ',' + func + ',' + ref + ',' + mask, + true + ) + } + + stencilFuncSeparate = function (face, func, ref, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilFuncSeparate + ',' + face + ',' + func + ',' + ref + ',' + mask, + true + ) + } + + stencilMask = function (mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilMask + ',' + mask, + true + ) + } + + stencilMaskSeparate = function (face, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilMaskSeparate + ',' + face + ',' + mask, + true + ) + } + + stencilOp = function (fail, zfail, zpass) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilOp + ',' + fail + ',' + zfail + ',' + zpass + ) + } + + stencilOpSeparate = function (face, fail, zfail, zpass) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilOp + ',' + face + ',' + fail + ',' + zfail + ',' + zpass, + true + ) + } + + texImage2D = function (...args) { + WebGLRenderingContext.GBridge.texImage2D(this._canvas.id, ...args); + } + + + texParameterf = function (target, pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.texParameterf + ',' + target + ',' + pname + ',' + param, + true + ) + } + + texParameteri = function (target, pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.texParameteri + ',' + target + ',' + pname + ',' + param + ) + } + + texSubImage2D = function (...args) { + WebGLRenderingContext.GBridge.texSubImage2D(this._canvas.id, ...args); + } + + uniform1f = function (location, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1f + ',' + location.id + ',' + v0 + ) + } + + uniform1fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform1i = function (location, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1i + ',' + location.id + ',' + v0, + // true + ) + } + + uniform1iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform2f = function (location, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2f + ',' + location.id + ',' + v0 + ',' + v1, + true + ) + } + + uniform2fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform2i = function (location, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2i + ',' + location.id + ',' + v0 + ',' + v1, + true + ) + } + + uniform2iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform3f = function (location, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + uniform3fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform3i = function (location, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + uniform3iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform4f = function (location, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + uniform4fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform4i = function (location, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + uniform4iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4iv + ',' + location.id + ',' + processArray(value, true), + true + ) + } + + uniformMatrix2fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix2fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ) + } + + uniformMatrix3fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix3fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ) + } + + uniformMatrix4fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix4fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ); + } + + useProgram = function (progarm) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.useProgram + ',' + progarm.id + '', + true + ) + } + + + validateProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.validateProgram + ',' + program.id, + true + ) + } + + vertexAttrib1f = function (index, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib1f + ',' + index + ',' + v0, + true + ) + } + + vertexAttrib2f = function (index, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib2f + ',' + index + ',' + v0 + ',' + v1, + true + ) + } + + vertexAttrib3f = function (index, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib3f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + vertexAttrib4f = function (index, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib4f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + vertexAttrib1fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib1fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib2fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib2fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib3fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib3fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib4fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib4fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttribPointer = function (index, size, type, normalized, stride, offset) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttribPointer + ',' + index + ',' + size + ',' + type + ',' + Number(normalized) + ',' + stride + ',' + offset, + true + ) + } + + viewport = function (x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.viewport + ',' + x + ',' + y + ',' + width + ',' + height, + true + ) + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Shader.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Shader.js new file mode 100644 index 0000000..a763886 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Shader.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLShader'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLShader { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ShaderPrecisionFormat.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ShaderPrecisionFormat.js new file mode 100644 index 0000000..208d6c1 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/ShaderPrecisionFormat.js @@ -0,0 +1,11 @@ +export default class WebGLShaderPrecisionFormat { + className = 'WebGLShaderPrecisionFormat'; + + constructor({ + rangeMin, rangeMax, precision + }) { + this.rangeMin = rangeMin; + this.rangeMax = rangeMax; + this.precision = precision; + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Texture.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Texture.js new file mode 100644 index 0000000..de4d806 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/Texture.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLTexture'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLTexture { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/UniformLocation.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/UniformLocation.js new file mode 100644 index 0000000..f5e99dc --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/UniformLocation.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLUniformLocation'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLUniformLocation { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/classUtils.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/classUtils.js new file mode 100644 index 0000000..88716be --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/context-webgl/classUtils.js @@ -0,0 +1,3 @@ +export function getTransferedObjectUUID(name, id) { + return `${name.toLowerCase()}-${id}`; +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/canvas.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/canvas.js new file mode 100644 index 0000000..a8d9bb9 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/canvas.js @@ -0,0 +1,74 @@ +import GContext2D from '../context-2d/RenderingContext'; +import GContextWebGL from '../context-webgl/RenderingContext'; + +export default class GCanvas { + + // static GBridge = null; + + id = null; + + _needRender = true; + + constructor(id, { disableAutoSwap }) { + this.id = id; + + this._disableAutoSwap = disableAutoSwap; + if (disableAutoSwap) { + this._swapBuffers = () => { + GCanvas.GBridge.render(this.id); + } + } + } + + getContext(type) { + + let context = null; + + if (type.match(/webgl/i)) { + context = new GContextWebGL(this); + + context.componentId = this.id; + + if (!this._disableAutoSwap) { + const render = () => { + if (this._needRender) { + GCanvas.GBridge.render(this.id); + this._needRender = false; + } + } + setInterval(render, 16); + } + + GCanvas.GBridge.callSetContextType(this.id, 1); // 0 for 2d; 1 for webgl + } else if (type.match(/2d/i)) { + context = new GContext2D(this); + + context.componentId = this.id; + +// const render = ( callback ) => { +// +// const commands = context._drawCommands; +// context._drawCommands = ''; +// +// GCanvas.GBridge.render2d(this.id, commands, callback); +// this._needRender = false; +// } +// //draw方法触发 +// context._flush = render; +// //setInterval(render, 16); + + GCanvas.GBridge.callSetContextType(this.id, 0); + } else { + throw new Error('not supported context ' + type); + } + + return context; + + } + + reset() { + GCanvas.GBridge.callReset(this.id); + } + + +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/image.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/image.js new file mode 100644 index 0000000..9499a51 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/image.js @@ -0,0 +1,96 @@ +let incId = 1; + +const noop = function () { }; + +class GImage { + + static GBridge = null; + + constructor() { + this._id = incId++; + this._width = 0; + this._height = 0; + this._src = undefined; + this._onload = noop; + this._onerror = noop; + this.complete = false; + } + + get width() { + return this._width; + } + set width(v) { + this._width = v; + } + + get height() { + return this._height; + } + + set height(v) { + this._height = v; + } + + get src() { + return this._src; + } + + set src(v) { + + if (v.startsWith('//')) { + v = 'http:' + v; + } + + this._src = v; + + GImage.GBridge.perloadImage([this._src, this._id], (data) => { + if (typeof data === 'string') { + data = JSON.parse(data); + } + if (data.error) { + var evt = { type: 'error', target: this }; + this.onerror(evt); + } else { + this.complete = true; + this.width = typeof data.width === 'number' ? data.width : 0; + this.height = typeof data.height === 'number' ? data.height : 0; + var evt = { type: 'load', target: this }; + this.onload(evt); + } + }); + } + + addEventListener(name, listener) { + if (name === 'load') { + this.onload = listener; + } else if (name === 'error') { + this.onerror = listener; + } + } + + removeEventListener(name, listener) { + if (name === 'load') { + this.onload = noop; + } else if (name === 'error') { + this.onerror = noop; + } + } + + get onload() { + return this._onload; + } + + set onload(v) { + this._onload = v; + } + + get onerror() { + return this._onerror; + } + + set onerror(v) { + this._onerror = v; + } +} + +export default GImage; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/tool.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/tool.js new file mode 100644 index 0000000..d3fb398 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/env/tool.js @@ -0,0 +1,24 @@ + +export function ArrayBufferToBase64 (buffer) { + var binary = ''; + var bytes = new Uint8ClampedArray(buffer); + for (var len = bytes.byteLength, i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return btoa(binary); +} + +export function Base64ToUint8ClampedArray(base64String) { + const padding = '='.repeat((4 - base64String.length % 4) % 4); + const base64 = (base64String + padding) + .replace(/\-/g, '+') + .replace(/_/g, '/'); + + const rawData = atob(base64); + const outputArray = new Uint8ClampedArray(rawData.length); + + for (let i = 0; i < rawData.length; ++i) { + outputArray[i] = rawData.charCodeAt(i); + } + return outputArray; +} \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/index.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/index.js new file mode 100644 index 0000000..a34ad58 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/gcanvas/index.js @@ -0,0 +1,39 @@ +import GCanvas from './env/canvas'; +import GImage from './env/image'; + +import GWebGLRenderingContext from './context-webgl/RenderingContext'; +import GContext2D from './context-2d/RenderingContext'; + +import GBridgeWeex from './bridge/bridge-weex'; + +export let Image = GImage; + +export let WeexBridge = GBridgeWeex; + +export function enable(el, { bridge, debug, disableAutoSwap, disableComboCommands } = {}) { + + const GBridge = GImage.GBridge = GCanvas.GBridge = GWebGLRenderingContext.GBridge = GContext2D.GBridge = bridge; + + GBridge.callEnable(el.ref, [ + 0, // renderMode: 0--RENDERMODE_WHEN_DIRTY, 1--RENDERMODE_CONTINUOUSLY + -1, // hybridLayerType: 0--LAYER_TYPE_NONE 1--LAYER_TYPE_SOFTWARE 2--LAYER_TYPE_HARDWARE + false, // supportScroll + false, // newCanvasMode + 1, // compatible + 'white',// clearColor + false // sameLevel: newCanvasMode = true && true => GCanvasView and Webview is same level + ]); + + if (debug === true) { + GBridge.callEnableDebug(); + } + if (disableComboCommands) { + GBridge.callEnableDisableCombo(); + } + + var canvas = new GCanvas(el.ref, { disableAutoSwap }); + canvas.width = el.style.width; + canvas.height = el.style.height; + + return canvas; +}; \ No newline at end of file diff --git a/src/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js b/src/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js new file mode 100644 index 0000000..2290ab3 --- /dev/null +++ b/src/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------- +// uQRCode二维码生成插件 v4.0.6 +// +// uQRCode是一款基于Javascript环境开发的二维码生成插件,适用所有Javascript运行环境的前端应用和Node.js。 +// +// Copyright (c) Sansnn uQRCode All rights reserved. +// +// Licensed under the Apache License, Version 2.0. +// http://www.apache.org/licenses/LICENSE-2.0 +// +// github地址: +// https://github.com/Sansnn/uQRCode +// +// npm地址: +// https://www.npmjs.com/package/uqrcodejs +// +// uni-app插件市场地址: +// https://ext.dcloud.net.cn/plugin?id=1287 +// +// 复制使用请保留本段注释,感谢支持开源! +// +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- +// 当前文件格式为 es,将 bundle 保留为 ES 模块文件,适用于其他打包工具以及支持 + + \ No newline at end of file diff --git a/src/uni_modules/lime-color/index.ts b/src/uni_modules/lime-color/index.ts new file mode 100644 index 0000000..eab5e00 --- /dev/null +++ b/src/uni_modules/lime-color/index.ts @@ -0,0 +1,5 @@ +// @ts-nocheck +export * from './common/color' +export * from './common/generate' +export * from './utssdk/interface' +// export {LGenerateOptions} from './utssdk/interface' \ No newline at end of file diff --git a/src/uni_modules/lime-color/interface.uts b/src/uni_modules/lime-color/interface.uts new file mode 100644 index 0000000..2681eb2 --- /dev/null +++ b/src/uni_modules/lime-color/interface.uts @@ -0,0 +1,87 @@ +export type RGB = { + r : number; + g : number; + b : number; +} +export type RGBA = { + r : number; + g : number; + b : number; + a : number; +} +export type RGBAString = { + r : string; + g : string; + b : string; + a : number; +} +export type HSL = { + h : number; + s : number; + l : number; +} + +export type HSLA = { + h : number; + s : number; + l : number; + a : number; +} +export type HSV = { + h : number; + s : number; + v : number; +} + +export type HSVA = { + h : number; + s : number; + v : number; + a : number; +} + +// 增加部分 +export type HSB = { + h : number; + s : number; + b : number; +} +export type HSBA = { + h : number; + s : number; + b : number; + a : number; +} + +export type LColorInfo = { + ok ?: boolean; + format ?: LColorFormats; + r : number; + g : number; + b : number; + a : number; +} + +export type LColorFormats = + | 'rgb' + | 'prgb' + | 'hex' + | 'hex3' + | 'hex4' + | 'hex6' + | 'hex8' + | 'name' + | 'hsl' + | 'hsb' + | 'hsv'; + +export type LColorOptions = { + format ?: LColorFormats; + gradientType ?: string; +} +export type LColorInput = any //string | number | RGB | RGBA | HSL | HSLA | HSV | HSVA | LimeColor; + +export type LGenerateOptions = { + theme ?: 'dark' | 'default'; + backgroundColor ?: string; +} diff --git a/src/uni_modules/lime-color/package.json b/src/uni_modules/lime-color/package.json new file mode 100644 index 0000000..4cab675 --- /dev/null +++ b/src/uni_modules/lime-color/package.json @@ -0,0 +1,86 @@ +{ + "id": "lime-color", + "displayName": "lime-color tinycolor颜色转换", + "version": "0.0.6", + "description": "lime-color是tinycolor UTS版的小型库,用于颜色操作和转换,内容Ant Design 的颜色等级生成算法", + "keywords": [ + "lime-color", + "TinyColor", + "color", + "颜色转换", + "uts" +], + "repository": "", +"engines": { + }, + "dcloudext": { + "type": "uts", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-android": "y", + "app-ios": "y", + "app-harmony": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "u", + "Edge": "u", + "Firefox": "u", + "Safari": "u" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/lime-color/readme.md b/src/uni_modules/lime-color/readme.md new file mode 100644 index 0000000..0ed8fda --- /dev/null +++ b/src/uni_modules/lime-color/readme.md @@ -0,0 +1,550 @@ +# lime-color +- 颜色转换 + +## 安装 +插件市场导入插件即可 + +## 使用 +```js +import {tinyColor} from '@/uni_modules/lime-color' +``` + +## 接受的字符串输入 + +字符串解析非常宽容。它的目的是使输入颜色尽可能简单。所有的逗号、百分比、括号都是可选的,大多数输入允许使用 0-1、0%-100% 或 0-n(其中 n 取决于值的 100、255 或 360)。 +HSL 和 HSV 都需要 0%-100% 或 0-1 作为 S/L/V 属性。H(色相)可以在 0%-100% 或 0-360 之间取值。 +RGB 输入需要 0-255 或 0%-100%。 +以下是一些字符串输入的示例: + + +### Hex, 8-digit (RGBA) Hex + +```ts +tinyColor('#000'); +tinyColor('000'); +tinyColor('#369C'); +tinyColor('369C'); +tinyColor('#f0f0f6'); +tinyColor('f0f0f6'); +tinyColor('#f0f0f688'); +tinyColor('f0f0f688'); +``` + +### RGB, RGBA + +```ts +tinyColor('rgb (255, 0, 0)'); +tinyColor('rgb 255 0 0'); +tinyColor('rgba (255, 0, 0, .5)'); +tinyColor({ r: 255, g: 0, b: 0 }); +``` + +### HSL, HSLA + +```ts +tinyColor('hsl(0, 100%, 50%)'); +tinyColor('hsla(0, 100%, 50%, .5)'); +tinyColor('hsl(0, 100%, 50%)'); +tinyColor('hsl 0 1.0 0.5'); +tinyColor({ h: 0, s: 1, l: 0.5 }); +``` + +### HSV, HSVA + +```ts +tinyColor('hsv(0, 100%, 100%)'); +tinyColor('hsva(0, 100%, 100%, .5)'); +tinyColor('hsv (0 100% 100%)'); +tinyColor('hsv 0 1 1'); +tinyColor({ h: 0, s: 100, v: 100 }); +``` + +### Named + +```ts +tinyColor('RED'); +tinyColor('blanchedalmond'); +tinyColor('darkblue'); +``` + +### Number +```ts +tinyColor(0x0); +tinyColor(0xaabbcc); +``` + + +## 属性 + +### originalInput +传递到构造函数中用于创建`tinyColor`实例的原始输入。 + +```ts +const color = tinyColor('red'); +color.originalInput; // "red" +const color2 = tinyColor({ r: 255, g: 255, b: 255 }); +color2.originalInput; // "{r: 255, g: 255, b: 255}" +``` + +### format + +返回用于创建`tinyColor`实例的格式 + +```ts +const color = tinyColor('red'); +color.format; // "name" +const color2 = tinyColor({ r: 255, g: 255, b: 255 }); +color2.format; // "rgb" +``` + +### isValid + +一个布尔值,指示颜色是否成功被解析。注意:如果颜色无效,则在与其他方法一起使用时将表现得像“黑色”。 + +```ts +const color1 = tinyColor('red'); +color1.isValid; // true +color1.toHexString(); // "#ff0000" + +const color2 = tinyColor('not a color'); +color2.isValid; // false +color2.toString(); // "#000000" +``` + +## Methods 方法 + +### getBrightness + +返回颜色的感知亮度,范围从 0-255,这是根据 [Web内容无障碍指南(第1版)](http://www.w3.org/TR/AERT#color-contrast) 定义的。 + +```ts +const color1 = tinyColor('#fff'); +color1.getBrightness(); // 255 + +const color2 = tinyColor('#000'); +color2.getBrightness(); // 0 +``` + +### isLight + +返回一个布尔值,指示颜色的感知亮度是否为浅色。 + +```ts +const color1 = tinyColor('#fff'); +color1.isLight(); // true + +const color2 = tinyColor('#000'); +color2.isLight(); // false +``` + +### isDark + +返回一个布尔值,指示颜色的感知亮度是否为深色。 + +```ts +const color1 = tinyColor('#fff'); +color1.isDark(); // false + +const color2 = tinyColor('#000'); +color2.isDark(); // true +``` + +### getLuminance + +返回颜色的感知亮度(luminance),范围从 0-1,这是根据 [Web内容无障碍指南(第2版)](http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef) 定义的。 + +```ts +const color1 = tinyColor('#fff'); +color1.getLuminance(); // 1 + +const color2 = tinyColor('#000'); +color2.getLuminance(); // 0 +``` + +### getAlpha + +返回颜色的`alpha`(透明度)值,范围从 `0-1`。 + +```ts +const color1 = tinyColor('rgba(255, 0, 0, .5)'); +color1.getAlpha(); // 0.5 + +const color2 = tinyColor('rgb(255, 0, 0)'); +color2.getAlpha(); // 1 + +const color3 = tinyColor('transparent'); +color3.getAlpha(); // 0 +``` + +### setAlpha + +在当前颜色上设置`alpha`(透明度)值。接受的范围是 `0-1` 之间。 + +```ts +const color = tinyColor('red'); +color.getAlpha(); // 1 +color.setAlpha(0.5); +color.getAlpha(); // .5 +color.toRgbString(); // "rgba(255, 0, 0, .5)" +``` + +### onBackground + +计算颜色在背景上的显示效果。当颜色完全透明(即 `getAlpha() == 0`)时,结果将是背景颜色。当颜色完全不透明(即 `getAlpha() == 1`)时,结果将是颜色本身。否则,你将得到一个计算结果。 + +```ts +const color = tinyColor('rgba(255, 0, 0, .5)'); +const computedColor = color.onBackground('rgb(0, 0, 255)'); +computedColor.toRgbString(); // "rgb(128, 0, 128)" +``` + +### toHsv + +```ts +const color = tinyColor('red'); +color.toHsv(); // { h: 0, s: 1, v: 1, a: 1 } +``` + +### toHsvString + +```ts +const color = tinyColor('red'); +color.toHsvString(); // "hsv(0, 100%, 100%)" +color.setAlpha(0.5); +color.toHsvString(); // "hsva(0, 100%, 100%, 0.5)" +``` + +### toHsl + +```ts +const color = tinyColor('red'); +color.toHsl(); // { h: 0, s: 1, l: 0.5, a: 1 } +``` + +### toHslString + +```ts +const color = tinyColor('red'); +color.toHslString(); // "hsl(0, 100%, 50%)" +color.setAlpha(0.5); +color.toHslString(); // "hsla(0, 100%, 50%, 0.5)" +``` + +### toNumber +```ts +tinyColor('#aabbcc').toNumber() === 0xaabbcc // true +tinyColor('rgb(1, 1, 1)').toNumber() === (1 << 16) + (1 << 8) + 1 // true +``` + +### toHex + +```ts +const color = tinyColor('red'); +color.toHex(); // "ff0000" +``` + +### toHexString + +```ts +const color = tinyColor('red'); +color.toHexString(); // "#ff0000" +``` + +### toHex8 + +```ts +const color = tinyColor('red'); +color.toHex8(); // "ff0000ff" +``` + +### toHex8String + +```ts +const color = tinyColor('red'); +color.toHex8String(); // "#ff0000ff" +``` + +### toHexShortString +根据颜色的透明度(Alpha值)返回较短的十六进制值,并且值前面带有#符号 +```ts +const color1 = tinyColor('#ff000000'); +color1.toHexShortString(); // "#ff000000" +color1.toHexShortString(true); // "#f000" + +const color2 = tinyColor('#ff0000ff'); +color2.toHexShortString(); // "#ff0000" +color2.toHexShortString(true); // "#f00" +``` + +### toRgb + +```ts +const color = tinyColor('red'); +color.toRgb(); // { r: 255, g: 0, b: 0, a: 1 } +``` + +### toRgbString + +```ts +const color = tinyColor('red'); +color.toRgbString(); // "rgb(255, 0, 0)" +color.setAlpha(0.5); +color.toRgbString(); // "rgba(255, 0, 0, 0.5)" +``` + +### toPercentageRgb +将当前颜色转换为百分比表示的 RGB +```ts +const color = tinyColor('red'); +color.toPercentageRgb(); // { r: "100%", g: "0%", b: "0%", a: 1 } +``` + +### toPercentageRgbString + +```ts +const color = tinyColor('red'); +color.toPercentageRgbString(); // "rgb(100%, 0%, 0%)" +color.setAlpha(0.5); +color.toPercentageRgbString(); // "rgba(100%, 0%, 0%, 0.5)" +``` + +### toName + +```ts +const color = tinyColor('red'); +color.toName(); // "red" +``` + + +### toString + +根据输入格式打印成字符串。你也可以通过向函数中传入以下之一来覆盖这个行为:`"rgb", "prgb", "hex6", "hex3", "hex8", "name", "hsl", "hsv"` + +```ts +const color1 = tinyColor('red'); +color1.toString(); // "red" +color1.toString('hsv'); // "hsv(0, 100%, 100%)" + +const color2 = tinyColor('rgb(255, 0, 0)'); +color2.toString(); // "rgb(255, 0, 0)" +color2.setAlpha(0.5); +color2.toString(); // "rgba(255, 0, 0, 0.5)" +``` + +### 颜色修改 + +这些方法操纵当前颜色,并返回它以进行链式调用。例如: + +```ts +tinyColor('red') + .lighten() + .desaturate() + .toHexString(); // '#f53d3d' +``` + +### lighten + +`lighten: function(amount = 10) -> TinyColor`.根据给定的量(从0到100)调亮颜色。提供100将始终返回白色. + +```ts +tinyColor('#f00').lighten().toString(); // '#ff3333' +tinyColor('#f00').lighten(100).toString(); // '#ffffff' +``` + +### brighten + +`brighten: function(amount = 10) -> TinyColor`. 根据给定的量(从0到100)提高颜色的亮度。 + +```ts +tinyColor('#f00').brighten().toString(); // '#ff1919' +``` + +### darken + +`darken: function(amount = 10) -> TinyColor`. 根据给定的量(从0到100)调暗颜色。提供100将始终返回黑色. + +```ts +tinyColor('#f00').darken().toString(); // '#cc0000' +tinyColor('#f00').darken(100).toString(); // '#000000' +``` + +### tint + +将颜色与纯白色混合,范围从0到100。提供0将不进行任何操作,提供100将始终返回白色. + +```ts +tinyColor('#f00').tint().toString(); // "#ff1a1a" +tinyColor('#f00').tint(100).toString(); // "#ffffff" +``` + +### shade + +将颜色与纯黑色混合,范围从0到100。提供0将不进行任何操作,提供100将始终返回黑色。 + +```ts +tinyColor('#f00').shade().toString(); // "#e60000" +tinyColor('#f00').shade(100).toString(); // "#000000" +``` + +### desaturate + +`desaturate: function(amount = 10) -> TinyColor`. 根据给定的量(从0到100)降低颜色的饱和度。提供100将与调用`greyscale`相同。 + + +```ts +tinyColor('#f00').desaturate().toString(); // "#f20d0d" +tinyColor('#f00').desaturate(100).toString(); // "#808080" +``` + +### saturate + +`saturate: function(amount = 10) -> TinyColor`. 根据给定的量(从0到100)增加颜色的饱和度。 + +```ts +tinyColor('hsl(0, 10%, 50%)').saturate().toString(); // "hsl(0, 20%, 50%)" +``` + +### greyscale + +`greyscale: function() -> TinyColor`. 完全降低颜色的饱和度,使其变为灰度。与调用`desaturate(100)`相同。 + +```ts +tinyColor('#f00').greyscale().toString(); // "#808080" +``` + +### spin + +`spin: function(amount = 0) -> TinyColor`. 根据给定的量(从-360到360)旋转色相。调用时使用0、360或-360将不进行任何操作(因为它将色相设置回原来的值)。 + +```ts +tinyColor('#f00').spin(180).toString(); // "#00ffff" +tinyColor('#f00').spin(-90).toString(); // "#7f00ff" +tinyColor('#f00').spin(90).toString(); // "#80ff00" + +// spin(0) and spin(360) do nothing +tinyColor('#f00').spin(0).toString(); // "#ff0000" +tinyColor('#f00').spin(360).toString(); // "#ff0000" +``` + +### mix + +`mix: function(amount = 50) => TinyColor`. 将当前颜色与另一种颜色按给定量(从0到100)混合。0表示不混合(返回当前颜色)。 + +```ts +let color1 = tinyColor('#f0f'); +let color2 = tinyColor('#0f0'); + +color1.mix(color2).toHexString(); // #808080 +``` + +### 颜色组合 + +组合函数除非特别说明,否则返回一个`TinyColor`对象的数组。 + +### analogous +生成一组与当前颜色相似的颜色。 +`analogous: function(results = 6, slices = 30) -> array`. + +```ts +const colors = tinyColor('#f00').analogous(); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#ff0066", "#ff0033", "#ff0000", "#ff3300", "#ff6600" ] +``` + +### monochromatic +生成一组与当前颜色具有相同色相和饱和度的颜色。 +`monochromatic: function(, results = 6) -> array`. + +```ts +const colors = tinyColor('#f00').monochromatic(); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#2a0000", "#550000", "#800000", "#aa0000", "#d40000" ] +``` + +### splitcomplement +生成当前颜色的分裂补色。 +`splitcomplement: function() -> array`. + +```ts +const colors = tinyColor('#f00').splitcomplement(); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#ccff00", "#0066ff" ] +``` + +### triad +生成当前颜色的三色调。 +`triad: function() -> array`. Alias for `polyad(3)`. + +```ts +const colors = tinyColor('#f00').triad(); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#00ff00", "#0000ff" ] +``` + +### tetrad +生成当前颜色的四色调。 +`tetrad: function() -> array`. Alias for `polyad(4)`. + +```ts +const colors = tinyColor('#f00').tetrad(); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#80ff00", "#00ffff", "#7f00ff" ] +``` + +### polyad +生成当前颜色的 n 色调。 +`polyad: function(number) -> array`. + +```ts +const colors = tinyColor('#f00').polyad(4); +colors.map((t):string => t.toHexString()); // [ "#ff0000", "#80ff00", "#00ffff", "#7f00ff" ] +``` + +### complement +计算当前颜色的补色。 +`complement: function() -> TinyColor`. + +```ts +tinyColor('#f00').complement().toHexString(); // "#00ffff" +``` + +## 颜色工具 + +### equals +判断两色是否相同 + +```ts +let color1 = tinyColor('red'); +let color2 = tinyColor('#f00'); + +color1.equals(color2); // true +``` + + +## 常见操作 + +### clone + +`clone: function() -> TinyColor`. +使用相同的颜色实例化一个新的`TinyColor`对象。对新的对象的任何更改都不会影响旧的对象。 + +```ts +const color1 = tinyColor('#F00'); +const color2 = color1.clone(); +color2.setAlpha(0.5); + +color1.toString(); // "#ff0000" +color2.toString(); // "rgba(255, 0, 0, 0.5)" +``` + +### generate +通过一个主色生成10个等级的颜色数组,使用 Ant Design 的颜色生成算法。 + +```ts +import {generate, LGenerateOptions} from '@/uni_modules/lime-color' +// 第二个参数为选填,如果不填则默认为 'default' +generate('red',{ theme: 'default'|'dark'} as LGenerateOptions) +// ['#2c1113', '#450f11', '#5b0e0e', '#7e0b0b', '#ad0707', '#dc0303', '#e82d27', '#f3594f', '#f88577', '#faaca0'] +``` + + +## 打赏 + +如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。 +![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/alipay.png) +![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/wpay.png) \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/app-android-o/config.json b/src/uni_modules/lime-color/utssdk/app-android-o/config.json new file mode 100644 index 0000000..bf95925 --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/app-android-o/config.json @@ -0,0 +1,3 @@ +{ + "minSdkVersion": "21" +} \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/app-android-o/index.uts b/src/uni_modules/lime-color/utssdk/app-android-o/index.uts new file mode 100644 index 0000000..720ce4f --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/app-android-o/index.uts @@ -0,0 +1,2 @@ +export * from '../../common/color' +export * from '../../common/generate' \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/app-js-o/config.json b/src/uni_modules/lime-color/utssdk/app-js-o/config.json new file mode 100644 index 0000000..721b81e --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/app-js-o/config.json @@ -0,0 +1,3 @@ +{ + "deploymentTarget": "9" +} \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/app-js-o/index.uts b/src/uni_modules/lime-color/utssdk/app-js-o/index.uts new file mode 100644 index 0000000..720ce4f --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/app-js-o/index.uts @@ -0,0 +1,2 @@ +export * from '../../common/color' +export * from '../../common/generate' \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/index-o.uts b/src/uni_modules/lime-color/utssdk/index-o.uts new file mode 100644 index 0000000..053349f --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/index-o.uts @@ -0,0 +1,3 @@ +export * from '../common/color' +export * from '../common/generate' +export * from './interface' \ No newline at end of file diff --git a/src/uni_modules/lime-color/utssdk/interface.uts b/src/uni_modules/lime-color/utssdk/interface.uts new file mode 100644 index 0000000..2681eb2 --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/interface.uts @@ -0,0 +1,87 @@ +export type RGB = { + r : number; + g : number; + b : number; +} +export type RGBA = { + r : number; + g : number; + b : number; + a : number; +} +export type RGBAString = { + r : string; + g : string; + b : string; + a : number; +} +export type HSL = { + h : number; + s : number; + l : number; +} + +export type HSLA = { + h : number; + s : number; + l : number; + a : number; +} +export type HSV = { + h : number; + s : number; + v : number; +} + +export type HSVA = { + h : number; + s : number; + v : number; + a : number; +} + +// 增加部分 +export type HSB = { + h : number; + s : number; + b : number; +} +export type HSBA = { + h : number; + s : number; + b : number; + a : number; +} + +export type LColorInfo = { + ok ?: boolean; + format ?: LColorFormats; + r : number; + g : number; + b : number; + a : number; +} + +export type LColorFormats = + | 'rgb' + | 'prgb' + | 'hex' + | 'hex3' + | 'hex4' + | 'hex6' + | 'hex8' + | 'name' + | 'hsl' + | 'hsb' + | 'hsv'; + +export type LColorOptions = { + format ?: LColorFormats; + gradientType ?: string; +} +export type LColorInput = any //string | number | RGB | RGBA | HSL | HSLA | HSV | HSVA | LimeColor; + +export type LGenerateOptions = { + theme ?: 'dark' | 'default'; + backgroundColor ?: string; +} diff --git a/src/uni_modules/lime-color/utssdk/unierror.uts b/src/uni_modules/lime-color/utssdk/unierror.uts new file mode 100644 index 0000000..e3bab5c --- /dev/null +++ b/src/uni_modules/lime-color/utssdk/unierror.uts @@ -0,0 +1,41 @@ +/* 此规范为 uni 规范,可以按照自己的需要选择是否实现 */ +import { MyApiErrorCode, MyApiFail } from "./interface.uts" +/** + * 错误主题 + * 注意:错误主题一般为插件名称,每个组件不同,需要使用时请更改。 + * [可选实现] + */ +export const UniErrorSubject = 'uts-api'; + + +/** + * 错误信息 + * @UniError + * [可选实现] + */ +export const UniErrors : Map = new Map([ + /** + * 错误码及对应的错误信息 + */ + [9010001, 'custom error mseeage1'], + [9010002, 'custom error mseeage2'], +]); + + +/** + * 错误对象实现 + */ +export class MyApiFailImpl extends UniError implements MyApiFail { + + /** + * 错误对象构造函数 + */ + constructor(errCode : MyApiErrorCode) { + super(); + this.errSubject = UniErrorSubject; + this.errCode = errCode; + this.errMsg = UniErrors[errCode] ?? ""; + } +} + + diff --git a/src/uni_modules/lime-loading/changelog.md b/src/uni_modules/lime-loading/changelog.md new file mode 100644 index 0000000..e527656 --- /dev/null +++ b/src/uni_modules/lime-loading/changelog.md @@ -0,0 +1,36 @@ +## 0.1.8(2025-05-30) +- feat: 重构,针对uniapp x app增加`mode`属性,用于是使用计时器还是元素的animate实现 +## 0.1.7(2025-05-16) +- fix: 修复 uniappx ios 初始化尺寸为0导致不生效的问题 +## 0.1.6(2025-04-21) +- fix: uniappx 鸿蒙next 尺寸从0变化时无法渲染 +## 0.1.5(2025-04-21) +- feat: 兼容uniappx 鸿蒙next +## 0.1.4(2025-04-10) +- feat: 增加暂停 +## 0.1.3(2025-03-12) +- feat: uniappx app使用`requestAnimationFrame` +## 0.1.2(2025-02-13) +- fix: 修复因uniapp x ios监听元素不生效导致不生效问题 +## 0.1.1(2025-02-09) +- chore: 去掉多余console +## 0.1.0(2025-02-09) +- feat: 重构useLoading +## 0.0.9(2025-01-14) +- feat: useLoading 增加color ref +## 0.0.8(2024-12-24) +- feat: 改用监听尺寸方式 +## 0.0.7(2024-12-18) +- fix: 修复vue2 微信小程序不显示加载图标的问题 +## 0.0.6(2024-12-18) +- chore: 更新文档 +## 0.0.5(2024-09-30) +- fix: vue2 app 使用渐变 +## 0.0.4(2024-09-29) +- chore: 非uvue app size使用css变量 +## 0.0.3(2024-09-25) +- fix: useLoading +## 0.0.2(2024-04-05) +- feat: 支持 uniapp x ios(app-js) +## 0.0.1(2023-10-13) +- 首次上传 diff --git a/src/uni_modules/lime-loading/components/l-loading/index-u.scss b/src/uni_modules/lime-loading/components/l-loading/index-u.scss new file mode 100644 index 0000000..5b71a29 --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/index-u.scss @@ -0,0 +1,254 @@ +@import '@/uni_modules/lime-style/index.scss'; + +$loading-color: create-var(loading-color, $primary-color); +$loading-size: create-var(loading-size, 40rpx); +$loading-text-color: create-var(loading-text-color, $text-color-3); +$loading-font-size: create-var(loading-font-size, $font-size); + +/* #ifndef APP-ANDROID || APP-HARMONY || APP-IOS || APP-NVUE */ +/* #ifndef MP-ALIPAY */ +$loading-duration: var(--l-loading-duration, 2s); + +@property --l-loading-start { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-loading-end { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-left { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-loadding-ball-size { + syntax: ' | '; + // initial-value: 1%; + inherits: false; +} + +/* #endif */ +/* #ifdef MP-ALIPAY */ +$loading-duration: var(--l-loading-duration, 1s); +/* #endif */ + + +/* #endif */ + + + +.l-loading { + display: flex; + position: relative; + flex-direction: row; + align-items: center; + // align-self: flex-start; + /* #ifdef APP-ANDROID || APP-HARMONY || APP-IOS */ + border-left-color: $loading-color; + border-left-width: 0; + /* #endif */ + /* #ifndef APP-ANDROID || APP-HARMONY || APP-IOS || APP-NVUE */ + color: $loading-color; + &--ball{ + display: inline-flex; + align-items: center; + + .l-loading { + &__ball { + position: relative; + perspective: calc(var(--l-loadding-ball-size) * 4); + transform-style: preserve-3d; + // border: 1px solid; + + &:before{ + background-color: $primary-color; + left: 0%; + // mix-blend-mode: darken; + animation-name: l-ball-before; + } + &:after{ + right: 0; + background-color: red; + // mix-blend-mode: darken; + animation-name: l-ball-after; + } + &:before,&:after{ + top: 0; + content: ''; + position: absolute; + // width: 100%; + height: 100%; + aspect-ratio: 1/1; + border-radius: 50%; + animation-iteration-count: infinite; + animation-delay: -100ms; + animation-duration: 900ms; + mix-blend-mode: darken; + animation-play-state: var(--l-play-state, running); + } + } + } + } + &--circular { + .l-loading { + &__circular { + display: inline-block; + position: relative; + animation: l-rotate $loading-duration linear infinite; + animation-play-state: var(--l-play-state, running); + vertical-align: middle; + &:before { + content: ''; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + /* #ifndef MP-ALIPAY */ + background: conic-gradient( + transparent 0%, + transparent var(--l-loading-start, 0%), var(--l-loading-color-1, currentColor) var(--l-loading-start, 0%), + var(--l-loading-color-2, currentColor) var(--l-loading-end, 0%), transparent var(--l-loading-end, 0%), + transparent 100%); + /* #endif */ + /* #ifdef MP-ALIPAY */ + background: conic-gradient( + var(--l-loading-color-1, transparent) 0%, + var(--l-loading-color-2, currentColor) 100%); + /* #endif */ + mask: radial-gradient(closest-side, transparent calc(80% - 1px), #fff 80%); + -webkit-mask: radial-gradient(closest-side, transparent calc(80% - 1px), #fff 80%); + animation: l-circular 3s ease-in-out infinite; + animation-play-state: var(--l-play-state, running); + transform: rotate(90deg); + } + } + } + } + &--spinner { + .l-loading { + &__spinner { + position: relative; + box-sizing: border-box; + // width: 100%; + // height: 100%; + // max-width: 100%; + // max-height: 100%; + animation-timing-function: steps(12); + animation: l-rotate 1.5s linear infinite; + animation-play-state: var(--l-play-state, running) + } + &__dot { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + transform: rotate(calc(var(--l-loading-dot, 1) * 30deg)); + opacity: calc(var(--l-loading-dot, 1) / 12); + &::before { + display: block; + width: 5rpx; + height: 25%; + margin: 0 auto; + background-color: currentColor; + border-radius: 40%; + content: ' '; + } + } + } + } + /* #endif */ + /* #ifdef APP-ANDROID || APP-HARMONY || APP-IOS || APP-NVUE */ + &__view{ + // background-color: aqua; + // background-color: #1677ff; + // transition-duration: 1.5s; + // transition-property: transform; + // transition-timing-function: linear; + } + /* #endif */ + &__text { + margin-left: $spacer-xs; + color: $loading-text-color; + font-size: $loading-font-size; + } + + + &.is-vertical { + flex-direction: column; + .l-loading__text { + margin: $spacer-tn 0 0; + } + } + &__ball,&__circular,&__spinner { + width: $loading-size; + height: $loading-size; + } +} + + +/* #ifndef APP-ANDROID || APP-HARMONY || APP-IOS || APP-NVUE */ +@keyframes l-circular { + 0% { + --l-loading-start: 0%; + --l-loading-end: 0%; + } + 50% { + --l-loading-start: 0%; + --l-loading-end: 100%; + } + 100% { + --l-loading-start: 100%; + --l-loading-end: 100%; + } +} +@keyframes l-rotate { + to { + transform: rotate(1turn) + } +} + +@keyframes l-ball-before { + 0%{ + animation-timing-function: ease-in; + } + 25% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2); + transform: translate3d(var(--l-left), 0, var(--l-loadding-ball-size)); + } + 50% { + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%))); + animation-timing-function:ease-in; + transform: translate3d(var(--l-left), 0, 0); + } + 75% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2); + transform: translate3d(var(--l-left), 0, calc(var(--l-loadding-ball-size) * -1)); + } +} +@keyframes l-ball-after { + 0%{ + animation-timing-function: ease-in; + } + 25% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2 * -1); + transform: translate3d(var(--l-left), 0, calc(var(--l-loadding-ball-size) * -1)); + } + 50% { + animation-timing-function:ease-in; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) * -1); + transform: translate3d(var(--l-left), 0, 0); + } + 75% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2 * -1); + transform: translate3d(var(--l-left), 0, var(--l-loadding-ball-size)); + } +} +/* #endif */ \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/index.scss b/src/uni_modules/lime-loading/components/l-loading/index.scss new file mode 100644 index 0000000..612dffd --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/index.scss @@ -0,0 +1,246 @@ +@import '@/uni_modules/lime-style/index.scss'; + +$loading-color: create-var(loading-color, $primary-color); +$loading-size: create-var(loading-size, 40rpx); +$loading-text-color: create-var(loading-text-color, $text-color-3); +$loading-font-size: create-var(loading-font-size, $font-size); + +/* #ifndef MP-ALIPAY */ +$loading-duration: create-var(loading-duration, 2s); +/* #endif */ +/* #ifdef MP-ALIPAY */ +$loading-duration: create-var(loading-duration, 1s); +/* #endif */ + +/* #ifndef APP-NVUE */ + + + +/* #ifndef MP-ALIPAY */ +@property --l-loading-start { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-loading-end { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-left { + syntax: ''; + initial-value: 1%; + inherits: false; +} +@property --l-loadding-ball-size { + syntax: ' | '; + // initial-value: 1%; + inherits: false; +} +/* #endif */ + +:host { + display: inline-flex; +} +/* #endif */ + + +.l-loading { + position: relative; + // color: #c8c9cc; + color: $loading-color; + font-size: 0; + vertical-align: middle; + &--ball{ + display: inline-flex; + align-items: center; + .l-loading { + &__ball { + position: relative; + perspective: calc(var(--l-loadding-ball-size) * 4); + transform-style: preserve-3d; + // border: 1px solid; + + &:before{ + background-color: $primary-color; + left: 0%; + // mix-blend-mode: darken; + animation-name: l-ball-before; + } + &:after{ + right: 0; + background-color: red; + // mix-blend-mode: darken; + animation-name: l-ball-after; + } + &:before,&:after{ + top: 0; + content: ''; + position: absolute; + // width: 100%; + height: 100%; + aspect-ratio: 1/1; + border-radius: 50%; + animation-iteration-count: infinite; + animation-delay: -100ms; + animation-duration: 900ms; + mix-blend-mode: darken; + animation-play-state: var(--l-play-state, running); + } + } + } + } + &--circular { + .l-loading { + &__circular { + display: inline-block; + position: relative; + /* #ifndef APP-NVUE */ + animation: l-rotate $loading-duration linear infinite; + vertical-align: middle; + animation-play-state: var(--l-play-state, running); + &:before { + content: ''; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + /* #ifndef MP-ALIPAY || APP-VUE */ + background-image: conic-gradient( + transparent 0%, + transparent var(--l-loading-start, 0%), var(--l-loading-color-1, currentColor) var(--l-loading-start, 0%), + var(--l-loading-color-2, currentColor) var(--l-loading-end, 0%), transparent var(--l-loading-end, 0%), + transparent 100%); + /* #endif */ + /* #ifdef MP-ALIPAY || APP-VUE */ + background-image: conic-gradient( + var(--l-loading-color-1, transparent) 0%, + var(--l-loading-color-2, currentColor) 100%); + /* #endif */ + mask: radial-gradient(closest-side, transparent calc(80% - 1px), #fff 80%); + -webkit-mask: radial-gradient(closest-side, transparent calc(80% - 1px), #fff 80%); + animation: l-circular 2.5s ease-in-out infinite; + transform: rotate(90deg); + animation-play-state: var(--l-play-state, running); + } + /* #endif */ + } + } + } + &--spinner { + .l-loading { + &__spinner { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + animation-timing-function: steps(12); + animation: l-rotate 0.8s linear infinite; + animation-play-state: var(--l-play-state, running); + } + &__dot { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + transform: rotate(calc(var(--l-loading-dot, 1) * 30deg)); + opacity: calc(var(--l-loading-dot, 1) / 12); + &::before { + display: block; + width: 5rpx; + height: 25%; + margin: 0 auto; + background-color: currentColor; + border-radius: 40%; + content: ' '; + } + } + } + + } + &__text{ + display: inline-block; + margin-left: $spacer-xs; + color: $loading-text-color; + font-size: $loading-font-size; + vertical-align: middle; + } + &.is-vertical { + display: inline-flex; + flex-direction: column; + align-items: center; + + .l-loading__text { + margin: $spacer-tn 0 0; + } + } + &__ball,&__circular,&__spinner { + width: $loading-size; + height: $loading-size; + } +} +/* #ifndef APP-NVUE */ +@keyframes l-circular { + 0% { + --l-loading-start: 0%; + --l-loading-end: 0%; + } + 50% { + --l-loading-start: 0%; + --l-loading-end: 100%; + } + 100% { + --l-loading-start: 100%; + --l-loading-end: 100%; + } +} +@keyframes l-rotate { + to { + transform: rotate(1turn) + } +} + +@keyframes l-ball-before { + 0%{ + animation-timing-function: ease-in; + } + 25% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2); + transform: translate3d(var(--l-left), 0, var(--l-loadding-ball-size)); + } + 50% { + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%))); + animation-timing-function:ease-in; + transform: translate3d(var(--l-left), 0, 0); + } + 75% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2); + transform: translate3d(var(--l-left), 0, calc(var(--l-loadding-ball-size) * -1)); + } +} +@keyframes l-ball-after { + 0%{ + animation-timing-function: ease-in; + } + 25% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2 * -1); + transform: translate3d(var(--l-left), 0, calc(var(--l-loadding-ball-size) * -1)); + } + 50% { + animation-timing-function:ease-in; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) * -1); + transform: translate3d(var(--l-left), 0, 0); + } + 75% { + animation-timing-function: ease-out; + --l-left: calc((var(--l-loadding-ball-size,100%) * 2.1 - var(--l-loadding-ball-size,100%)) / 2 * -1); + transform: translate3d(var(--l-left), 0, var(--l-loadding-ball-size)); + } +} +/* #endif */ \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/l-loading.uvue b/src/uni_modules/lime-loading/components/l-loading/l-loading.uvue new file mode 100644 index 0000000..988ec20 --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/l-loading.uvue @@ -0,0 +1,117 @@ + + + + \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/l-loading.vue b/src/uni_modules/lime-loading/components/l-loading/l-loading.vue new file mode 100644 index 0000000..5e7467e --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/l-loading.vue @@ -0,0 +1,79 @@ + + + + \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/props.ts b/src/uni_modules/lime-loading/components/l-loading/props.ts new file mode 100644 index 0000000..a333e9b --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/props.ts @@ -0,0 +1,26 @@ +// import {PropType} from 'vue' +export default { + color: { + type: String, + // default: '#c9c9c9' + }, + type: { + type: String, //as PropType<'circular'|'spinner'>, + default: 'circular' + }, + size: { + type: String, + // #ifdef APP-NVUE + default: '40rpx' + // #endif + }, + text: String, + textColor: String, + textSize: String, + vertical: Boolean, + inheritColor: Boolean, + animated: { + type: Boolean, + default: true + } +} \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/type.ts b/src/uni_modules/lime-loading/components/l-loading/type.ts new file mode 100644 index 0000000..a19feab --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/type.ts @@ -0,0 +1,59 @@ +// 完整类型定义 +export interface LoadingProps { + color?: string; + type: 'circular' | 'spinner' | 'failed'; + // #ifndef APP + size?: string; + // #endif + // #ifdef APP + size: string; + // #endif + text?: string; + textColor?: string; + textSize?: string; + mode: 'raf' | 'animate'; + vertical: boolean; + animated: boolean; +} + +// defineOptions({ + // name: 'l-loading' + // }) + // const props = defineProps({ + // color: { + // type: String, + // // #ifdef APP + // default: '#1677ff' // '#c9c9c9' + // // #endif + // }, + // type: { + // type: String, + // default: 'circular' + // }, + // size: { + // type: String, + // // #ifdef APP + // default: '40rpx', + // // #endif + // }, + // text: { + // type: String, + // default: '' + // }, + // textColor: { + // type: String, + // default: '' + // }, + // textSize: { + // type: String, + // default: '' + // }, + // vertical: { + // type: Boolean, + // default: false + // }, + // animated: { + // type: Boolean, + // default: true + // } + // }) \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/l-loading/useLoading.uts b/src/uni_modules/lime-loading/components/l-loading/useLoading.uts new file mode 100644 index 0000000..c457934 --- /dev/null +++ b/src/uni_modules/lime-loading/components/l-loading/useLoading.uts @@ -0,0 +1,330 @@ +// type UseLoadingOtions = { +// type: string, +// color: string, +// el: UniElement +// } +import {tinyColor} from '@/uni_modules/lime-color' +function easeInOutCubic(t : number) : number { + return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; +} + +type useLoadingReturnType = { + state : Ref + color : Ref + play: () => void + failed: () => void + clear : () => void + destroy : () => void +} +type Point = { + x1: number + y1: number + x2: number + y2: number +} +export function useLoading( + element : Ref, + type : 'circular' | 'spinner', + strokeColor : string, + ratio : number, + immediate: boolean = false, + ) : useLoadingReturnType { + const state = ref(false) + const color = ref(strokeColor) + let tick = 0 // 0 不绘制 | 1 旋转 | 2 错误 + let init = false + let isDestroy = ref(false) + let width = 0 + let height = 0 + let size = 0 + let x = 0 + let y = 0 + let ctx : DrawableContext | null = null + let timer = -1 + let isClear = false; + let drawing = false; + const updateSize = () => { + if (element.value == null) return + + const rect = element.value!.getBoundingClientRect(); + ctx = element.value!.getDrawableContext()! as DrawableContext + width = rect.width + height = rect.height + size = ratio > 1 ? ratio : Math.floor(Math.min(width, height) * ratio) + x = width / 2 + y = height / 2 + } + const circular = () => { + if (ctx == null) return + let _ctx = ctx! + let startAngle = 0; + let endAngle = 0; + let startSpeed = 0; + let endSpeed = 0; + let rotate = 0; + + // 不使用360的原因是加上rotate后,会导致闪烁 + const ARC_LENGTH = 359.5 + const PI = Math.PI / 180 + const SPEED = 0.018 + const ROTATE_INTERVAL = 0.09 + const center = size / 2 + const lineWidth = size / 10; + + function draw() { + if(isClear) return + _ctx.reset(); + _ctx.beginPath(); + _ctx.arc( + x, + y, + center - lineWidth, + startAngle * PI + rotate, + endAngle * PI + rotate); + _ctx.lineWidth = lineWidth; + _ctx.strokeStyle = color.value; + _ctx.stroke(); + + if (endAngle < ARC_LENGTH && startAngle == 0) { + endSpeed += SPEED + endAngle = Math.min(ARC_LENGTH, easeInOutCubic(endSpeed) * ARC_LENGTH) + } else if (endAngle == ARC_LENGTH && startAngle < ARC_LENGTH) { + startSpeed += SPEED + startAngle = Math.min(ARC_LENGTH, easeInOutCubic(startSpeed) * ARC_LENGTH); + } else if (endAngle >= ARC_LENGTH && startAngle >= ARC_LENGTH) { + endSpeed = 0 + startSpeed = 0 + startAngle = 0; + endAngle = 0; + } + rotate += ROTATE_INTERVAL; + _ctx.update() + // clearTimeout(timer) + + timer = setTimeout(() => draw(), 24) + } + draw() + } + const spinner = () => { + if (ctx == null) return + let _ctx = ctx! + const steps = 12; + let step = 0; + const lineWidth = size / 10; + // 线长度和距离圆心距离 + const length = size / 4 - lineWidth; + const offset = size / 4; + + + function generateColorGradient(hex: string, steps: number):string[]{ + const colors:string[] = [] + const _color = tinyColor(hex) + for (let i = 1; i <= steps; i++) { + _color.setAlpha(i/steps); + colors.push(_color.toRgbString()); + } + return colors + } + let colors = computed(():string[]=> generateColorGradient(color.value, steps)) + + function draw() { + if(tick == 0) return + _ctx.reset(); + for (let i = 0; i < steps; i++) { + const stepAngle = 360 / steps + const angle = stepAngle * i; + const index =(steps + i - (step % steps)) % steps + // 正余弦 + const sin = Math.sin(angle / 180 * Math.PI); + const cos = Math.cos(angle / 180 * Math.PI); + // 开始绘制 + _ctx.lineWidth = lineWidth; + _ctx.lineCap = 'round'; + _ctx.beginPath(); + _ctx.moveTo(size / 2 + offset * cos, size / 2 + offset * sin); + _ctx.lineTo(size / 2 + (offset + length) * cos, size / 2 + (offset + length) * sin); + _ctx.strokeStyle = colors.value[index] + _ctx.stroke(); + } + step += 1 + _ctx.update() + timer = setTimeout(() => draw(), 1000/10) + } + draw() + } + const clear = () => { + clearTimeout(timer) + drawing = false + tick = 0 + if(ctx == null) return + // ctx?.reset() + // ctx?.update() + setTimeout(()=>{ + ctx!.reset() + ctx!.update() + },1000) + + } + const failed = () => { + if(tick == 1) { + drawing = false + } + clearTimeout(timer) + tick = 2 + if (ctx == null || drawing) return + let _ctx = ctx! + const _size = size * 0.61 + const _sizeX = _size * 0.65 + const lineWidth = _size / 6; + const lineLength = Math.ceil(Math.sqrt(Math.pow(_sizeX, 2) * 2)) + + const startX1 = (width - _sizeX) * 0.5 + const startY = (height - _sizeX) * 0.5 + const startX2 = startX1 + _sizeX + + // 添加圆的参数 + const centerX = width / 2; + const centerY = height / 2; + const radius = (_size * Math.sqrt(2)) / 2 + lineWidth / 2; + const totalSteps = 36; + + function generateSteps(stepsCount: number):Point[][] { + + const halfStepsCount = stepsCount / 2; + const step = lineLength / halfStepsCount //Math.floor(lineLength / 18); + const steps:Point[][] = [] + for (let i = 0; i < stepsCount; i++) { + const sub:Point[] = [] + const index = i % 18 + 1 + if(i < halfStepsCount) { + + const x2 = Math.sin(45 * Math.PI / 180) * step * index + startX1 + const y2 = Math.cos(45 * Math.PI / 180) * step * index + startY + + const start1 = { + x1: startX1, + y1: startY, + x2, + y2, + } as Point + + sub.push(start1) + } else { + sub.push(steps[halfStepsCount-1][0]) + const x2 = Math.sin((45 - 90) * Math.PI / 180) * step * index + startX2 + const y2 = Math.cos((45 - 90) * Math.PI / 180) * step * index + startY + + const start2 = { + x1: startX2, + y1: startY, + x2, + y2, + } as Point + sub.push(start2) + } + steps.push(sub) + } + + return steps + } + const steps = generateSteps(36); + function draw(){ + if(steps.length == 0 || tick == 0) { + clearTimeout(timer) + return + } + const drawStep = steps.shift()! + _ctx.reset() + _ctx.lineWidth = lineWidth; + _ctx.strokeStyle = color.value; + + // 绘制逐渐显示的圆 + _ctx.beginPath(); + _ctx.arc(centerX, centerY, radius, 0, (2 * Math.PI) * (totalSteps - steps.length) / totalSteps); + _ctx.lineWidth = lineWidth; + _ctx.strokeStyle = color.value; + _ctx.stroke(); + + // 绘制X + _ctx.beginPath(); + drawStep.forEach(item => { + _ctx.beginPath(); + _ctx.moveTo(item.x1, item.y1) + _ctx.lineTo(item.x2, item.y2) + _ctx.stroke(); + }) + _ctx.update() + timer = setTimeout(() => draw(), 1000/30) + } + draw() + } + const destroy = () => { + isDestroy.value = true; + clear() + } + const play = () => { + if(tick == 2) { + drawing = false + } + if(drawing) return + tick = 1 + if(width == 0 || height == 0) return + if (type == 'circular') { + circular() + } else if (type == 'spinner') { + spinner() + } + drawing = true + } + + const _watch = (v:boolean) => { + if(isDestroy.value) return + if (v) { + play() + } else { + failed() + } + } + const stopWatchState = watch(state, _watch) + + const ob = new UniResizeObserver((entries: UniResizeObserverEntry[])=>{ + if(isDestroy.value) return + entries.forEach(entry => { + if(isDestroy.value) return + const rect = entry.target.getBoundingClientRect(); + if(rect.width > 0 && rect.height > 0) { + updateSize(); + if(tick == 1) { + play() + state.value = true + } else if(tick == 2) { + failed() + state.value = false + } else if(immediate && !init) { + _watch(state.value) + init = true + } + } + }) + }) + + const stopWatchElement = watch(element, (el:UniElement|null) => { + if(el == null || isDestroy.value) return + ob.observe(el) + }) + + onUnmounted(()=>{ + stopWatchState() + stopWatchElement() + clear() + ob.disconnect() + }) + return { + state, + play, + failed, + clear, + color, + destroy + } as useLoadingReturnType +} \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/lime-loading/lime-loading.uvue b/src/uni_modules/lime-loading/components/lime-loading/lime-loading.uvue new file mode 100644 index 0000000..39b6efe --- /dev/null +++ b/src/uni_modules/lime-loading/components/lime-loading/lime-loading.uvue @@ -0,0 +1,125 @@ + + + \ No newline at end of file diff --git a/src/uni_modules/lime-loading/components/lime-loading/lime-loading.vue b/src/uni_modules/lime-loading/components/lime-loading/lime-loading.vue new file mode 100644 index 0000000..5ccceff --- /dev/null +++ b/src/uni_modules/lime-loading/components/lime-loading/lime-loading.vue @@ -0,0 +1,52 @@ + + + \ No newline at end of file diff --git a/src/uni_modules/lime-loading/index.uts b/src/uni_modules/lime-loading/index.uts new file mode 100644 index 0000000..eb02156 --- /dev/null +++ b/src/uni_modules/lime-loading/index.uts @@ -0,0 +1,393 @@ +// 引入颜色处理库 +import { tinyColor } from '@/uni_modules/lime-color'; + + +/** + * 操作类型 + * play: 开始动画 + * failed: 显示失败状态 + * clear: 清除动画 + * destroy: 销毁实例 + */ +export type TickType = 'play' | 'failed' | 'clear' | 'destroy' | 'pause' +/** + * 加载动画类型 + * circular: 环形加载动画 + * spinner: 旋转器加载动画 + * failed: 失败状态动画 + */ +export type LoadingType = 'circular' | 'spinner' | 'failed'; +/** + * 加载组件返回接口 + */ +export type UseLoadingReturn = { + ratio : 1; + type : LoadingType; + mode : 'raf' | 'animate'; // + color : string;//Ref; + play : () => void; + failed : () => void; + clear : () => void; + destroy : () => void; + pause : () => void; +} + + +/** + * 计算圆周上指定角度的点的坐标 + * @param centerX 圆心的 X 坐标 + * @param centerY 圆心的 Y 坐标 + * @param radius 圆的半径 + * @param angleDegrees 角度(以度为单位) + * @returns 包含 X 和 Y 坐标的对象 + */ +function getPointOnCircle( + centerX : number, + centerY : number, + radius : number, + angleDegrees : number +) : number[] { + // 将角度转换为弧度 + const angleRadians = (angleDegrees * Math.PI) / 180; + + // 计算点的 X 和 Y 坐标 + const x = centerX + radius * Math.cos(angleRadians); + const y = centerY + radius * Math.sin(angleRadians); + + return [x, y] +} + +export function useLoading(element : Ref) : UseLoadingReturn { + + const tick = ref('pause') + + const state = reactive({ + color: '#000', + type: 'circular', + ratio: 1, + mode: 'raf', + play: () => { + tick.value = 'play' + }, + failed: () => { + tick.value = 'failed' + }, + clear: () => { + tick.value = 'clear' + }, + destroy: () => { + tick.value = 'destroy' + }, + pause: () => { + tick.value = 'pause' + } + }) + + const context = shallowRef(null); + // let ctx:DrawableContext|null = null + + // let rotation = 0 + let isPlaying = false + let canvasWidth = ref(0) + let canvasHeight = ref(0) + let canvasSize = ref(0) + + let animationFrameId = -1 + let animation : UniAnimation | null = null + + let drawFrame : (() => void) | null = null + const size = computed(() : number => state.ratio > 1 ? state.ratio : canvasSize.value * state.ratio) + // 绘制圆形加载 + const drawCircular = () => { + let startAngle = 0; // 起始角度 + let endAngle = 0; // 结束角度 + let rotate = 0; // 旋转角度 + + // const ctx = context.value! + // 动画参数配置 + const MIN_ANGLE = 5; // 最小保持角度 + const ARC_LENGTH = 359.5 // 最大弧长(避免闭合) + const PI = Math.PI / 180 // 角度转弧度系数 + const SPEED = 0.018 / 4 // 动画速度 + const ROTATE_INTERVAL = 0.09 / 4 // 旋转增量 + + const lineWidth = size.value / 10; // 线宽计算 + const x = canvasWidth.value / 2 // 中心点X + const y = canvasHeight.value / 2 // 中心点Y + const radius = size.value / 2 - lineWidth // 实际绘制半径 + + drawFrame = () => { + if (context.value == null || !isPlaying) return + let ctx = context.value! + + + // console.log('radius', radius, size.value) + ctx.reset(); + + // 绘制圆弧 + ctx.beginPath(); + ctx.arc( + x, + y, + radius, + startAngle * PI + rotate, + endAngle * PI + rotate + ); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = state.color; + ctx.stroke(); + + // 角度更新逻辑 + if (endAngle < ARC_LENGTH) { + endAngle = Math.min(ARC_LENGTH, endAngle + (ARC_LENGTH - MIN_ANGLE) * SPEED); + } else if (startAngle < ARC_LENGTH) { + startAngle = Math.min(ARC_LENGTH, startAngle + (ARC_LENGTH - MIN_ANGLE) * SPEED); + } else { + // 重置时保留最小可见角度 + startAngle = 0; + endAngle = MIN_ANGLE; + } + + ctx.update() + + + + if (state.mode == 'raf') { + rotate = (rotate + ROTATE_INTERVAL) % 360; // 持续旋转并限制范围 + if (isPlaying && drawFrame != null) { + animationFrameId = requestAnimationFrame(drawFrame!) + } + } + } + + } + + let lastTime = Date.now(); + const drawSpinner = () => { + const steps = 12; // 旋转线条数量 + // const size = state.ratio > 1 ? state.ratio : canvasSize.value + const lineWidth = size.value / 10; // 线宽 + const x = canvasWidth.value / 2 // 中心坐标 + const y = canvasHeight.value / 2 + + let step = 0; // 当前步数 + // #ifdef APP-HARMONY + const length = size.value / 3.4 - lineWidth; // 线长 + // #endif + // #ifndef APP-HARMONY + const length = size.value / 3.6 - lineWidth; // 线长 + // #endif + const offset = size.value / 4; // 距中心偏移 + + /** 生成颜色渐变数组 */ + function generateColorGradient(hex : string, steps : number) : string[] { + const colors : string[] = [] + const _color = tinyColor(hex) + + for (let i = 1; i <= steps; i++) { + _color.setAlpha(i / steps); + colors.push(_color.toRgbString()); + } + return colors + } + + // 计算颜色渐变 + let colors = computed(() : string[] => generateColorGradient(state.color, steps)) + + /** 帧绘制函数 */ + drawFrame = () => { + if (context.value == null || !isPlaying) return + const delta = Date.now() - lastTime; + + + if (delta >= 1000 / 10) { + lastTime = Date.now(); + let ctx = context.value! + ctx.reset(); + for (let i = 0; i < steps; i++) { + const stepAngle = 360 / steps; // 单步角度 + const angle = stepAngle * i; // 当前角度 + const index = (steps + i - step) % steps // 颜色索引 + // 计算线段坐标 + const radian = angle * Math.PI / 180; + const cos = Math.cos(radian); + const sin = Math.sin(radian); + + // 绘制线段 + ctx.beginPath(); + ctx.moveTo(x + offset * cos, y + offset * sin); + ctx.lineTo(x + (offset + length) * cos, y + (offset + length) * sin); + ctx.lineWidth = lineWidth; + ctx.lineCap = 'round'; + ctx.strokeStyle = colors.value[index]; + ctx.stroke(); + } + + ctx.update() + if(state.mode == 'raf') { + // step += 1 + step = (step + 1) % steps; // 限制step范围 + } + } + + + if (state.mode == 'raf') { + if (isPlaying && drawFrame != null) { + animationFrameId = requestAnimationFrame(drawFrame!) + } + } + } + } + + const drwaFailed = () => { + if (context.value == null) return + let ctx = context.value! + + // const size = state.ratio > 1 ? state.ratio : canvasSize.value + const innerSize = size.value * 0.8 // 内圈尺寸 + const lineWidth = innerSize / 10; // 线宽 + const lineLength = (size.value - lineWidth) / 2 // X长度 + const centerX = canvasWidth.value / 2; + const centerY = canvasHeight.value / 2; + const radius = (size.value - lineWidth) / 2 + + + + const angleRadians1 = 45 * Math.PI / 180 + const angleRadians2 = (45 - 90) * Math.PI / 180 + + ctx.reset() + ctx.lineWidth = lineWidth; + ctx.strokeStyle = state.color; + + // 绘制逐渐显示的圆 + ctx.beginPath(); + ctx.arc(centerX, centerY, radius, 0, Math.PI * 2); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = state.color; + ctx.stroke(); + + const [startX1, startY] = getPointOnCircle(centerX, centerY, lineLength / 2, 180 + 45) + const [startX2] = getPointOnCircle(centerX, centerY, lineLength / 2, 180 + 90 + 45) + + const x2 = Math.sin(angleRadians1) * lineLength + startX1 + const y2 = Math.cos(angleRadians1) * lineLength + startY + + ctx.beginPath(); + ctx.moveTo(startX1, startY) + ctx.lineTo(x2, y2) + ctx.stroke(); + + const x3 = Math.sin(angleRadians2) * lineLength + startX2 + const y3 = Math.cos(angleRadians2) * lineLength + startY + + ctx.beginPath(); + ctx.moveTo(startX2, startY) + ctx.lineTo(x3, y3) + ctx.stroke(); + + + ctx.update() + } + + let currentType : LoadingType | null = null + const useMode = () => { + if (state.mode != 'raf') { + const keyframes = [{ transform: 'rotate(0)' }, { transform: 'rotate(360)' }] + animation = element.value!.animate(keyframes, { + duration: 80000, + easing: 'linear', + // fill: 'forwards', + iterations: Infinity + }) + } + } + const startAnimation = (type : string) => { + if (context.value == null || element.value == null) return + animation?.pause() + + if (currentType == type) { + isPlaying = true + animation?.play() + drawFrame?.() + return + } + + if (type == 'circular') { + currentType = 'circular' + drawCircular() + useMode() + + } + + if (type == 'spinner') { + currentType = 'spinner' + drawSpinner() + useMode() + } + + isPlaying = true + drawFrame?.() + } + + // 监听元素尺寸 + const resizeObserver : UniResizeObserver = new UniResizeObserver((_entries : UniResizeObserverEntry[]) => { + requestAnimationFrame(()=> { + element.value?.getBoundingClientRectAsync()?.then(rect => { + if (rect.width == 0 || rect.height == 0) return + context.value = element.value!.getDrawableContext() as DrawableContext; + canvasWidth.value = rect.width; + canvasHeight.value = rect.height; + canvasSize.value = Math.min(rect.width, rect.height); + // startAnimation(state.type) + }) + }) + }); + + watchEffect(() => { + if (element.value == null) return + resizeObserver.observe(element.value!); + }) + + watchEffect(() => { + if (context.value == null) return + if (tick.value == 'play') { + startAnimation(state.type) + } + if (tick.value == 'failed') { + clearTimeout(animationFrameId) + animation?.pause() + animation?.cancel() + drwaFailed() + return + } + if (tick.value == 'clear') { + clearTimeout(animationFrameId) + animation?.pause() + animation?.cancel() + context.value?.reset(); + context.value?.update(); + isPlaying = false + return + } + if (tick.value == 'destroy') { + clearTimeout(animationFrameId) + animation?.pause() + animation?.cancel() + context.value?.reset(); + context.value?.update(); + context.value = null + animation = null + isPlaying = false + return + } + if (tick.value == 'pause') { + clearTimeout(animationFrameId) + isPlaying = false + animation?.pause() + return + } + }) + + return state +} \ No newline at end of file diff --git a/src/uni_modules/lime-loading/index_old.uts b/src/uni_modules/lime-loading/index_old.uts new file mode 100644 index 0000000..288c212 --- /dev/null +++ b/src/uni_modules/lime-loading/index_old.uts @@ -0,0 +1,595 @@ +// 引入颜色处理库 +import { tinyColor } from '@/uni_modules/lime-color'; + + +// ===================== 类型定义 ===================== +/** + * 加载动画类型 + * circular: 环形加载动画 + * spinner: 旋转器加载动画 + * failed: 失败状态动画 + */ +export type LoadingType = 'circular' | 'spinner' | 'failed'; + +/** + * 操作类型 + * play: 开始动画 + * failed: 显示失败状态 + * clear: 清除动画 + * destroy: 销毁实例 + */ +export type TickType = 'play' | 'failed' | 'clear' | 'destroy' | 'pause' + +/** + * 加载组件配置选项 + * @property type - 初始动画类型 + * @property strokeColor - 线条颜色 + * @property ratio - 尺寸比例 + * @property immediate - 是否立即启动 + */ +export type UseLoadingOptions = { + type : LoadingType; + strokeColor : string; + ratio : number; + immediate ?: boolean; +}; + +/** + * 加载组件返回接口 + */ +export type UseLoadingReturn = { + // state : Ref; + // setOptions: (options: UseLoadingOptions) => void + ratio : 1; + type : LoadingType; + color : string;//Ref; + play : () => void; + failed : () => void; + clear : () => void; + destroy : () => void; + pause : () => void; +} + +/** + * 画布尺寸信息 + */ +export type Dimensions = { + width : number; + height : number; + size : number +} + +/** + * 线段坐标点 + */ +type Point = { + x1 : number + y1 : number + x2 : number + y2 : number +} + +/** + * 画布上下文信息 + */ +type LoadingCanvasContext = { + ctx : Ref; + dimensions : Ref; + updateDimensions : (el : UniElement) => void; +}; + +/** + * 动画参数配置 + */ +type AnimationParams = { + width : number + height : number + center : number[] // 元组类型,明确表示两个数值的坐标 + color : string // 使用Ref类型包裹字符串 + size : number // 数值类型尺寸 +} + +// ===================== 动画管理器 ===================== +type AnimationFrameHandler = () => boolean; + +/** + * 动画管理类 + * 封装动画的启动/停止逻辑 + */ +export class AnimationManager { + time : number = 1000 / 60 // 默认帧率60fps + private timer : number = -1;// 定时器ID + private isDestroyed : boolean = false; // 销毁状态 + private drawFrame : AnimationFrameHandler// 帧绘制函数 + private lastTime : number = 0; + private isRunning : boolean = false; + type : LoadingType; + constructor(drawFrame : AnimationFrameHandler, type : LoadingType = 'circular') { + this.type = type + this.drawFrame = drawFrame + } + /** 启动动画循环 */ + start() { + if (this.isRunning) return; + this.isRunning = true; + this.lastTime = Date.now(); + let animate : ((task : number) => void) | null = null + + animate = (task : number) => { + if (!this.isRunning) return; + if (this.isDestroyed) return; + const delta = Date.now() - this.lastTime; + if (delta >= this.time || delta < 10) { + const shouldContinue : boolean = this.drawFrame(); + this.lastTime = Date.now() + if (!shouldContinue) { + this.stop(); + return; + } + } + this.timer = requestAnimationFrame(animate!); + }; + + animate(Date.now()); + } + /** 停止动画并清理资源 */ + stop() { + cancelAnimationFrame(this.timer) + this.isDestroyed = true; + } + pause() { + this.isRunning = false; + cancelAnimationFrame(this.timer); + } +} + +// ===================== 工具函数 ===================== +/** + * 缓动函数 - 三次缓入缓出 + * @param t 时间系数 (0-1) + * @returns 计算后的进度值 + */ +function easeInOutCubic(t : number) : number { + return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; +} + +// ===================== 画布管理 ===================== +/** + * 获取画布上下文信息 + * @param element 画布元素引用 + * @returns 包含画布上下文和尺寸信息的对象 + */ +//_element : Ref +export function useCanvas() : LoadingCanvasContext { + const ctx = shallowRef(null); + const dimensions = ref({ + width: 0, + height: 0, + size: 0 + }); + + const updateDimensions = (el : UniElement) => { + // const rect = el.getBoundingClientRect(); + // // 鸿蒙尺寸为0时 再次尺寸变化会不渲染 + // if(rect.width == 0) return + // if(ctx.value == null) { + // ctx.value = el.getDrawableContext() as DrawableContext; + // } + // dimensions.value.width = rect.width; + // dimensions.value.height = rect.height; + // dimensions.value.size = Math.min(rect.width, rect.height); + el.getBoundingClientRectAsync()?.then(rect => { + if (rect.width == 0 || rect.height == 0) return + ctx.value = el.getDrawableContext() as DrawableContext; + dimensions.value.width = rect.width; + dimensions.value.height = rect.height; + dimensions.value.size = Math.min(rect.width, rect.height); + }) + }; + + return { + ctx, + dimensions, + updateDimensions + } as LoadingCanvasContext +} + +// ===================== 动画创建函数 ===================== +/** + * 创建环形加载动画 + * @param ctx 画布上下文 + * @param animationParams 动画参数 + * @returns 动画管理器实例 + */ +function createCircularAnimation(ctx : DrawableContext, animationParams : AnimationParams) : AnimationManager { + const { size, color, width, height } = animationParams + let startAngle = 0; // 起始角度 + let endAngle = 0; // 结束角度 + let rotate = 0; // 旋转角度 + + // 动画参数配置 + const MIN_ANGLE = 5; // 最小保持角度 + const ARC_LENGTH = 359.5 // 最大弧长(避免闭合) + const PI = Math.PI / 180 // 角度转弧度系数 + const SPEED = 0.018 // 动画速度 + const ROTATE_INTERVAL = 0.09 // 旋转增量 + const lineWidth = size / 10; // 线宽计算 + const x = width / 2 // 中心点X + const y = height / 2 // 中心点Y + const radius = size / 2 - lineWidth // 实际绘制半径 + + /** 帧绘制函数 */ + const drawFrame = () : boolean => { + ctx.reset(); + + // 绘制圆弧 + ctx.beginPath(); + ctx.arc( + x, + y, + radius, + startAngle * PI + rotate, + endAngle * PI + rotate + ); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = color; + ctx.stroke(); + + // 角度更新逻辑 + if (endAngle < ARC_LENGTH) { + endAngle = Math.min(ARC_LENGTH, endAngle + (ARC_LENGTH - MIN_ANGLE) * SPEED); + } else if (startAngle < ARC_LENGTH) { + startAngle = Math.min(ARC_LENGTH, startAngle + (ARC_LENGTH - MIN_ANGLE) * SPEED); + } else { + // 重置时保留最小可见角度 + startAngle = 0; + endAngle = MIN_ANGLE; + } + + rotate = (rotate + ROTATE_INTERVAL) % 360; // 持续旋转并限制范围 + ctx.update() + return true + } + + return new AnimationManager(drawFrame) +} + +/** + * 创建旋转器动画 + * @param ctx 画布上下文 + * @param animationParams 动画参数 + * @returns 动画管理器实例 + */ +function createSpinnerAnimation(ctx : DrawableContext, animationParams : AnimationParams) : AnimationManager { + const { size, color, center } = animationParams + const steps = 12; // 旋转线条数量 + let step = 0; // 当前步数 + const lineWidth = size / 10; // 线宽 + // #ifdef APP-HARMONY + const length = size / 3.4 - lineWidth; // 线长 + // #endif + // #ifndef APP-HARMONY + const length = size / 3.6 - lineWidth; // 线长 + // #endif + const offset = size / 4; // 距中心偏移 + const [x, y] = center // 中心坐标 + + /** 生成颜色渐变数组 */ + function generateColorGradient(hex : string, steps : number) : string[] { + const colors : string[] = [] + const _color = tinyColor(hex) + + for (let i = 1; i <= steps; i++) { + _color.setAlpha(i / steps); + colors.push(_color.toRgbString()); + } + return colors + } + + // 计算颜色渐变 + let colors = computed(() : string[] => generateColorGradient(color, steps)) + /** 帧绘制函数 */ + const drawFrame = () : boolean => { + ctx.reset(); + for (let i = 0; i < steps; i++) { + const stepAngle = 360 / steps; // 单步角度 + const angle = stepAngle * i; // 当前角度 + const index = (steps + i - step) % steps // 颜色索引 + // const index = (i + step) % steps; + // console.log('index', index) + // 计算线段坐标 + const radian = angle * Math.PI / 180; + const cos = Math.cos(radian); + const sin = Math.sin(radian); + + // 绘制线段 + ctx.beginPath(); + ctx.moveTo(x + offset * cos, y + offset * sin); + ctx.lineTo(x + (offset + length) * cos, y + (offset + length) * sin); + ctx.lineWidth = lineWidth; + ctx.lineCap = 'round'; + ctx.strokeStyle = colors.value[index]; + ctx.stroke(); + } + // step += 1 + step = (step + 1) % steps; // 限制step范围 + ctx.update() + return true + } + return new AnimationManager(drawFrame) +} + +/** + * 计算圆周上指定角度的点的坐标 + * @param centerX 圆心的 X 坐标 + * @param centerY 圆心的 Y 坐标 + * @param radius 圆的半径 + * @param angleDegrees 角度(以度为单位) + * @returns 包含 X 和 Y 坐标的对象 + */ +function getPointOnCircle( + centerX : number, + centerY : number, + radius : number, + angleDegrees : number +) : number[] { + // 将角度转换为弧度 + const angleRadians = (angleDegrees * Math.PI) / 180; + + // 计算点的 X 和 Y 坐标 + const x = centerX + radius * Math.cos(angleRadians); + const y = centerY + radius * Math.sin(angleRadians); + + return [x, y] +} + +/** + * 创建失败状态动画(包含X图标和外围圆圈) + * @param ctx 画布上下文 + * @param animationParams 动画参数 + * @returns 动画管理器实例 + */ +function createFailedAnimation(ctx : DrawableContext, animationParams : AnimationParams) : AnimationManager { + + const { width, height, size, color } = animationParams + const innerSize = size * 0.8 // 内圈尺寸 + const lineWidth = innerSize / 10; // 线宽 + const lineLength = (size - lineWidth) / 2 // X长度 + const centerX = width / 2; + const centerY = height / 2; + + const [startX1, startY] = getPointOnCircle(centerX, centerY, lineLength / 2, 180 + 45) + const [startX2] = getPointOnCircle(centerX, centerY, lineLength / 2, 180 + 90 + 45) + const angleRadians1 = 45 * Math.PI / 180 + const angleRadians2 = (45 - 90) * Math.PI / 180 + + const radius = (size - lineWidth) / 2 + const totalSteps = 36; // 总动画步数 + + function generateSteps(stepsCount : number) : Point[][] { + + const halfStepsCount = stepsCount / 2; + const step = lineLength / halfStepsCount + const steps : Point[][] = [] + for (let i = 0; i < stepsCount; i++) { + const sub : Point[] = [] + const index = i % 18 + 1 + if (i < halfStepsCount) { + + const x2 = Math.sin(angleRadians1) * step * index + startX1 + const y2 = Math.cos(angleRadians1) * step * index + startY + + const start1 = { + x1: startX1, + y1: startY, + x2, + y2, + } as Point + + sub.push(start1) + } else { + sub.push(steps[halfStepsCount - 1][0]) + const x2 = Math.sin(angleRadians2) * step * index + startX2 + const y2 = Math.cos(angleRadians2) * step * index + startY + + const start2 = { + x1: startX2, + y1: startY, + x2, + y2, + } as Point + sub.push(start2) + } + steps.push(sub) + } + + return steps + } + const steps = generateSteps(totalSteps); + + const drawFrame = () : boolean => { + const drawStep = steps.shift()! + ctx.reset() + ctx.lineWidth = lineWidth; + ctx.strokeStyle = color; + + // 绘制逐渐显示的圆 + ctx.beginPath(); + ctx.arc(centerX, centerY, radius, 0, (2 * Math.PI) * (totalSteps - steps.length) / totalSteps); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = color; + ctx.stroke(); + + // 绘制X + ctx.beginPath(); + drawStep.forEach(item => { + ctx.beginPath(); + ctx.moveTo(item.x1, item.y1) + ctx.lineTo(item.x2, item.y2) + ctx.stroke(); + }) + ctx.update() + return steps.length != 0 + } + return new AnimationManager(drawFrame) +} + + +// ===================== 主Hook函数 ===================== +/** + * 加载动画组合式函数 + * @param element 画布元素引用 + * @returns 加载控制器实例 + */ +export function useLoading( + element : Ref, + // options : UseLoadingOptions +) : UseLoadingReturn { + const ticks = ref([]); + const currentTick = ref('clear'); + const currentAnimation = shallowRef(null); + const state = reactive({ + color: '#000', + type: 'circular', + ratio: 1, + play: () => { + // if (currentTick.value == 'pause' && currentAnimation.value != null) { + // // 从暂停状态恢复时直接启动动画管理器 + // currentAnimation.value?.start() + // } else { + // // 首次播放或类型变化时重新初始化 + // ticks.value.length = 0 + // ticks.value.push('play') + // } + ticks.value.length = 0 + ticks.value.push('play') + }, + failed: () => { + ticks.value.length = 0 + ticks.value.push('failed') + }, + clear: () => { + ticks.value.length = 0 + ticks.value.push('clear') + }, + destroy: () => { + ticks.value.length = 0 + ticks.value.push('destroy') + }, + pause: () => { + ticks.value.push('pause') + } + }) + + + const { ctx, dimensions, updateDimensions } = useCanvas(); + const resizeObserver : UniResizeObserver = new UniResizeObserver((_entries : UniResizeObserverEntry[]) => { + updateDimensions(element.value!) + }); + + + // 计算动画参数 + const animationParams = computed(() : AnimationParams => { + return { + width: dimensions.value.width, + height: dimensions.value.height, + center: [dimensions.value.width / 2, dimensions.value.height / 2], + color: state.color, + size: state.ratio > 1 ? state.ratio : dimensions.value.size * state.ratio + } as AnimationParams + }) + + const startAnimation = (type : LoadingType) => { + currentAnimation.value?.pause(); + if (currentAnimation.value?.type == type) { + currentAnimation.value!.start() + return + } + if (type == 'circular') { + currentAnimation.value = createCircularAnimation(ctx.value!, animationParams.value) + currentAnimation.value!.time = 1000 / 30 + currentAnimation.value!.start() + return + } + if (type == 'spinner') { + currentAnimation.value = createSpinnerAnimation(ctx.value!, animationParams.value) + currentAnimation.value!.time = 1000 / 10 + currentAnimation.value!.start() + return + } + if (type == 'failed') { + currentAnimation.value = createFailedAnimation(ctx.value!, animationParams.value) + currentAnimation.value?.start() + return + } + } + + + const failed = () => { + startAnimation('failed') + } + const play = () => { + startAnimation(state.type) + } + const clear = () => { + currentAnimation.value?.stop(); + ctx.value?.reset(); + ctx.value?.update(); + } + const destroy = () => { + clear(); + resizeObserver.disconnect(); + } + + + watch(animationParams, () => { + if (['clear', 'destroy', 'pause'].includes(currentTick.value)) return + startAnimation(state.type) + }) + + watchEffect(() => { + if (ctx.value == null) return + + const tick = ticks.value.pop() + if (ticks.value.length > 0) { } + if (tick != null) { + currentTick.value = tick + } + if (tick == 'play') { + play() + return + } + if (tick == 'failed') { + failed() + return + } + if (tick == 'clear') { + clear() + return + } + if (tick == 'destroy') { + destroy() + return + } + if (tick == 'pause') { + if (currentAnimation.value == null) { + play() + } + currentAnimation.value?.pause(); + } + }) + + watchEffect(() => { + if (element.value == null) return + resizeObserver.observe(element.value!); + // #ifdef APP-IOS || APP-HARMONY + // APP-HARMONY 在下拉组件中使用居中会影响绘制 故先获取一次 + updateDimensions(element.value!) + // #endif + }) + + onUnmounted(destroy); + + + return state +} \ No newline at end of file diff --git a/src/uni_modules/lime-loading/package.json b/src/uni_modules/lime-loading/package.json new file mode 100644 index 0000000..0d53d1c --- /dev/null +++ b/src/uni_modules/lime-loading/package.json @@ -0,0 +1,90 @@ +{ + "id": "lime-loading", + "displayName": "lime-loading 加载", + "version": "0.1.8", + "description": "lime-loading 全端通用加载插件.用于表示页面或操作的加载状态,给予用户反馈的同时减缓等待的焦虑感。支持uniapp/uniappx", + "keywords": [ + "loading", + "lime-loading", + "加载", + "uvue" +], + "repository": "", +"engines": { + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "lime-shared", + "lime-style", + "lime-color" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-uvue": "y", + "app-harmony": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "u", + "Edge": "u", + "Firefox": "u", + "Safari": "u" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/lime-loading/readme.md b/src/uni_modules/lime-loading/readme.md new file mode 100644 index 0000000..f406b3f --- /dev/null +++ b/src/uni_modules/lime-loading/readme.md @@ -0,0 +1,110 @@ +# lime-loading 加载中 +- 用于表示页面或操作的加载状态,给予用户反馈的同时减缓等待的焦虑感,由一个或一组反馈动效组成。 + +## 文档 +[loading](https://limex.qcoon.cn/components/loading.html) + + +## 安装 +插件市场导入即可,首次导入可以需要重新编译 + +## 代码演示 +### 基础 +通过 `type` 属性可以设置加载图标的类型,默认为 `circular`,可选值为 `spinner`。nvue只有`circular`,因为其使用的是原生组件。 + +```vue + + +``` + +### 横向文字 +通过`text`或`插槽`设置加载文本,uvue建议使用`text` + +```vue +加载中… + +``` + +### 竖向文字 + +```vue +加载中… +``` + +### 尺寸 +通过 `size` 属性设置加载图标的大小,默认单位为 `px`, uvue必须带单位。 + +```vue + + +``` + +### 颜色 +通过 `color` 属性设置加载图标的颜色。 + +```vue + +``` + +### 查看示例 +- 导入后直接使用这个标签查看演示效果 + +```html + + +``` + + + + + +### 插件标签 +- 默认 l-loading 为 component +- 默认 lime-loading 为 demo + + +### 关于vue2的使用方式 +- 插件使用了`composition-api`, 如果你希望在vue2中使用请按官方的教程[vue-composition-api](https://uniapp.dcloud.net.cn/tutorial/vue-composition-api.html)配置 +- 关键代码是: 在main.js中 在vue2部分加上这一段即可. +```js +// vue2 +import Vue from 'vue' +import VueCompositionAPI from '@vue/composition-api' +Vue.use(VueCompositionAPI) +``` + +## API + +### Props + +| 参数 | 说明 | 类型 | 默认值 | +| ---------- | ----------------------------- | ------------------ | ---------- | +| color | 颜色 | _string_ | `` | +| type | 类型,可选值为 `spinner` | _string_ | `circular` | +| size | 加载图标大小,默认单位为 `px`,uvue只支持string | _number \| string_ | `40rpx` | +| text | 加载文本 | _string_ | `-` | +| textColor | 文本颜色 | _string_ | `-` | +| textSize | 文本大小 `px`,uvue只支持string | _number \| string_ | `-` | +| vertical | 是否垂直排列图标和文字内容 | _boolean_ | `false` | +| mode | 动画实现的模式.只针对APP,可选值有:`animate` | _string_ | `raf` | + +### Slots + +| 名称 | 说明 | +| ------- | -------------- | +| default | 加载文案 | + + + +## 主题定制 + +### 样式变量 + +组件提供了下列 CSS 变量,可用于自定义样式。uvue和nvue不支持! + +| 名称 | 默认值 | 描述 | +| ------------------------------ | ------------------------- | ---- | +| --l-loading-color | _#1677ff_ | - | +| --l-loading-text-color | _rgba(0,0,0,0.45)_ | - | +| --l-loading-font-size | _28rpx_ | - | +| --l-loading-duration | _2s_ | - | \ No newline at end of file diff --git a/src/uni_modules/lime-painter/changelog.md b/src/uni_modules/lime-painter/changelog.md new file mode 100644 index 0000000..b988d35 --- /dev/null +++ b/src/uni_modules/lime-painter/changelog.md @@ -0,0 +1,223 @@ +## 1.9.6.5(2024-04-14) +- fix: 修复`nvue`无法生图的问题 +## 1.9.6.4(2024-03-10) +- fix: 修复代理ctx导致H5不能使用ctx.save +## 1.9.6.3(2024-03-08) +- fix: 修复支付宝真机无法使用的问题 +## 1.9.6.2(2024-02-22) +- fix: 修复使用render函数报错的问题 +## 1.9.6.1(2023-12-22) +- fix: 修复字节小程序非2d字体偏移 +- fix: 修复`canvasToTempFilePathSync`会触发两次的问题 +- fix: 修复`parser`图片没有宽度的问题 +## 1.9.6(2023-12-06) +- fix: 修复背景图受padding影响 +- fix: 修复因字节报错改了代理实现导致微信报错 +- 1.9.5.8(2023-11-16) +- fix: 修复margin问题 +- fix: 修复borderWidth问题 +- fix: 修复textBox问题 +- fix: 修复字节开发工具报`could not be cloned.`问题 +## 1.9.5.7(2023-07-27) +- fix: 去掉多余的方法 +- chore: 更新文档,增加自定义字体说明 +## 1.9.5.6(2023-07-21) +- feat: 有限的支持富文本 +- feat: H5和APP 增加 `hidpi` prop,主要用于大尺寸无法生成图片时用 +- fix: 修复 钉钉小程序 缺少 `measureText` 方法 +- chore: 由于微信小程序 pc 端的 canvas 2d 时不时抽风,故不使用canvas 2d +## 1.9.5.5(2023-06-27) +- fix: 修复把`emoji`表情字符拆分成多个字符的情况 +## 1.9.5.4(2023-06-05) +- fix: 修复因`canvasToTempFilePathSync`监听导致重复调用 +## 1.9.5.3(2023-05-23) +- fix: 因isPc错写成了isPC导致小程序PC不能生成图片 +## 1.9.5.2(2023-05-22) +- feat: 删除多余文件 +## 1.9.5.1(2023-05-22) +- fix: 修复 文字行数与`line-clamp`相同但不满一行时也加了省略号的问题 +## 1.9.5(2023-05-14) +- feat: 增加 `text-indent` 和 `calc` 方法 +- feat: 优化 布局时间 +## 1.9.4.4(2023-04-15) +- fix: 修复无法匹配负值 +- fix: 修复 Nvue IOS getImageInfo `useCORS` 为 undefined +## 1.9.4.3(2023-04-01) +- feat: 增加支持文字描边 `text-stroke: '5rpx #fff'` +## 1.9.4.2(2023-03-30) +- fix: 修复 支付宝小程序 isPC 在手机也为true的问题 +- feat: 由 微信开发工具 3060 版 无法获取图片尺寸,现 微信开发工具 3220 版 修复该问题,故还原上一版的获取图片方式。 +## 1.9.4.1(2023-03-28) +- fix: 修复固定高度不正确问题 +## 1.9.4(2023-03-17) +- fix: nvue ios getImageInfo缺少this报错 +- fix: pathType 非2d无效问题 +- fix: 修复 小米9se 可能会存在多次init 导致画面多次放大 +- fix: 修复 border 分开写 width style无效问题 +- fix: 修复 支付宝小程序IOS 再次进入不渲染的问题 +- fix: 修复 支付宝小程序安卓Zindex排序错乱问题 +- fix: 修复 微信开发工具 3060 版 无法获取图片的问题 +- feat: 把 for in 改为 forEach +- feat: 增加 hidden +- feat: 根节点 box-sizing 默认 `border-box` +- feat: 增加支持 `vw` `wh` +- chore: pathType 取消 默认值,因为字节开发工具不能显示 +- chore: 支付宝小程序开发工具不支持 生成图片 请以真机调试为准 +- bug: 企业微信 2.20.3无法使用 +## 1.9.3.5(2022-06-29) +- feat: justifyContent 增加 `space-around`、`space-between` +- feat: canvas 2d 也使用`getImageInfo` +- fix: 修复 `text`的 `text-decoration`错位 +## 1.9.3.4(2022-06-20) +- fix: 修复 因创建节点速度问题导致顺序出错。 +- fix: 修复 微信小程序 PC 无法显示本地图片 +- fix: 修复 flex-box 对齐问题 +- feat: 增加 `text-shadow` +- feat: 重写 `text` 对齐方式 +- chore: 更新文档 +## 1.9.3.3(2022-06-17) +- fix: 修复 支付宝小程序 canvas 2d 存在ctx.draw问题导致报错 +- fix: 修复 支付宝小程序 toDataURL 存在权限问题改用 `toTempFilePath` +- fix: 修复 支付宝小程序 image size 问题导致 `objectFit` 无效 +## 1.9.3.2(2022-06-14) +- fix: 修复 image 设置背景色不生效问题 +- fix: 修复 nvue 环境判断缺少参数问题 +## 1.9.3.1(2022-06-14) +- fix: 修复 bottom 定位不对问题 +- fix: 修复 因小数导致计算出错换行问题 +- feat: 增加 `useCORS` h5端图片跨域 在设置请求头无效果后试一下设置这个值 +- chore: 更新文档 +## 1.9.3(2022-06-13) +- feat: 增加 `zIndex` +- feat: 增加 `flex-box` 该功能处于原始阶段,非常简陋。 +- tips: QQ小程序 vue3 不支持, 为 uni 官方BUG +## 1.9.2.9(2022-06-10) +- fix: 修复`text-align`及`margin`居中问题 +## 1.9.2.8(2022-06-10) +- fix: 修复 Nvue `canvasToTempFilePathSync` 不生效问题 +## 1.9.2.7(2022-06-10) +- fix: 修复 margin及padding的bug +- fix: 修复 Nvue `isCanvasToTempFilePath` 不生效问题 +## 1.9.2.6(2022-06-09) +- fix: 修复 Nvue 不显示 +- feat: 增加支持字体渐变 +```html + +``` +## 1.9.2.5(2022-06-09) +- chore: 更变获取父级宽度的设定 +- chore: `pathType` 在canvas 2d 默认为 `url` +## 1.9.2.4(2022-06-08) +- fix: 修复 `pathType` 不生效问题 +## 1.9.2.3(2022-06-08) +- fix: 修复 `canvasToTempFilePath` 漏写 `success` 参数 +## 1.9.2.2(2022-06-07) +- chore: 更新文档 +## 1.9.2.1(2022-06-07) +- fix: 修复 vue3 赋值给this再传入导致image无法绘制 +- fix: 修复 `canvasToTempFilePathSync` 时机问题 +- feat: canvas 2d 更改图片生成方式 `toDataURL` +## 1.9.2(2022-05-30) +- fix: 修复 `canvasToTempFilePathSync` 在 vue3 下只生成一次 +## 1.9.1.7(2022-05-28) +- fix: 修复 `qrcode`显示不全问题 +## 1.9.1.6(2022-05-28) +- fix: 修复 `canvasToTempFilePathSync` 会重复多次问题 +- fix: 修复 `view` css `backgroundImage` 图片下载失败导致 子节点不渲染 +## 1.9.1.5(2022-05-27) +- fix: 修正支付宝小程序 canvas 2d版本号 2.7.15 +## 1.9.1.4(2022-05-22) +- fix: 修复字节小程序无法使用xml方式 +- fix: 修复字节小程序无法使用base64(非2D情况下工具上无法显示) +- fix: 修复支付宝小程序 `canvasToTempFilePath` 报错 +## 1.9.1.3(2022-04-29) +- fix: 修复vue3打包后uni对象为空后的报错 +## 1.9.1.2(2022-04-25) +- fix: 删除多余文件 +## 1.9.1.1(2022-04-25) +- fix: 修复图片不显示问题 +## 1.9.1(2022-04-12) +- fix: 因四舍五入导致有些机型错位 +- fix: 修复无views报错 +- chore: nvue下因ios无法读取插件内static文件,改由下载方式 +## 1.9.0(2022-03-20) +- fix: 因无法固定尺寸导致生成图片不全 +- fix: 特定情况下text判断无效 +- chore: 本地化APP Nvue webview +## 1.8.9(2022-02-20) +- fix: 修复 小程序下载最多10次并发的问题 +- fix: 修复 APP端无法获取本地图片 +- fix: 修复 APP Nvue端不执行问题 +- chore: 增加图片缓存机制 +## 1.8.8.8(2022-01-27) +- fix: 修复 主动调用尺寸问题 +## 1.8.8.6(2022-01-26) +- fix: 修复 nvue 下无宽度时获取父级宽度 +- fix: 修复 ios app 无法渲染问题 +## 1.8.8(2022-01-23) +- fix: 修复 主动调用时无节点问题 +- fix: 修复 `box-shadow` 颜色问题 +- fix: 修复 `transform:rotate` 角度位置问题 +- feat: 增加 `overflow:hidden` +## 1.8.7(2022-01-07) +- fix: 修复 image 方向为 `right` 时原始宽高问题 +- feat: 支持 view 设置背景图 `background-image: url(xxx)` +- chore: 去掉可选链 +## 1.8.6(2021-11-28) +- feat: 支持`view`对`inline-block`的子集使用`text-align` +## 1.8.5.5(2021-08-17) +- chore: 更新文档,删除 replace +- fix: 修复 text 值为 number时报错 +## 1.8.5.4(2021-08-16) +- fix: 字节小程序兼容 +## 1.8.5.3(2021-08-15) +- fix: 修复线性渐变与css现实效果不一致的问题 +- chore: 更新文档 +## 1.8.5.2(2021-08-13) +- chore: 增加`background-image`、`background-repeat` 能力,主要用于背景纹理的绘制,并不是代替`image`。例如:大面积的重复平铺的水印 +- 注意:这个功能H5暂时无法使用,因为[官方的API有BUG](https://ask.dcloud.net.cn/question/128793),待官方修复!!! +## 1.8.5.1(2021-08-10) +- fix: 修复因`margin`报错问题 +## 1.8.5(2021-08-09) +- chore: 增加margin支持`auto`,以达到居中效果 +## 1.8.4(2021-08-06) +- chore: 增加判断缓存文件条件 +- fix: 修复css 多余空格报错问题 +## 1.8.3(2021-08-04) +- tips: 1.6.x 以下的版本升级到1.8.x后要为每个元素都加上定位:position: 'absolute' +- fix: 修复只有一个view子元素时不计算高度的问题 +## 1.8.2(2021-08-03) +- fix: 修复 path-type 为 `url` 无效问题 +- fix: 修复 qrcode `text` 为空时报错问题 +- fix: 修复 image `src` 动态设置时不生效问题 +- feat: 增加 css 属性 `min-width` `max-width` +## 1.8.1(2021-08-02) +- fix: 修复无法加载本地图片 +## 1.8.0(2021-08-02) +- chore 文档更新 +- 使用旧版的同学不要升级! +## 1.8.0-beta(2021-07-30) +- ## 全新布局方式 不兼容旧版! +- chore: 布局方式变更 +- tips: 微信canvas 2d 不支持真机调试 +## 1.6.6(2021-07-09) +- chore: 统一命名规范,无须主动引入组件 +## 1.6.5(2021-06-08) +- chore: 去掉console +## 1.6.4(2021-06-07) +- fix: 修复 数字 为纯字符串时不转换的BUG +## 1.6.3(2021-06-06) +- fix: 修复 PC 端放大的BUG +## 1.6.2(2021-05-31) +- fix: 修复 报`adaptor is not a function`错误 +- fix: 修复 text 多行高度 +- fix: 优化 默认文字的基准线 +- feat: `@progress`事件,监听绘制进度 +## 1.6.1(2021-02-28) +- 删除多余节点 +## 1.6.0(2021-02-26) +- 调整为uni_modules目录规范 +- 修复:transform的rotate不能为负数问题 +- 新增:`pathType` 指定生成图片返回的路径类型,可选值有 `base64`、`url` diff --git a/src/uni_modules/lime-painter/components/common/relation.js b/src/uni_modules/lime-painter/components/common/relation.js new file mode 100644 index 0000000..6ed37e8 --- /dev/null +++ b/src/uni_modules/lime-painter/components/common/relation.js @@ -0,0 +1,150 @@ +const styles = (v ='') => v.split(';').filter(v => v && !/^[\n\s]+$/.test(v)).map(v => { + const key = v.slice(0, v.indexOf(':')) + const value = v.slice(v.indexOf(':')+1) + return { + [key + .replace(/-([a-z])/g, function() { return arguments[1].toUpperCase()}) + .replace(/\s+/g, '') + ]: value.replace(/^\s+/, '').replace(/\s+$/, '') || '' + } + }) +export function parent(parent) { + return { + provide() { + return { + [parent]: this + } + }, + data() { + return { + el: { + id: null, + css: {}, + views: [] + }, + } + }, + watch: { + css: { + handler(v) { + if(this.canvasId) { + this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {} + this.canvasWidth = this.el.css && this.el.css.width || this.canvasWidth + this.canvasHeight = this.el.css && this.el.css.height || this.canvasHeight + } + }, + immediate: true + } + } + } +} +export function children(parent, options = {}) { + const indexKey = options.indexKey || 'index' + return { + inject: { + [parent]: { + default: null + } + }, + watch: { + el: { + handler(v, o) { + if(JSON.stringify(v) != JSON.stringify(o)) + this.bindRelation() + }, + deep: true, + immediate: true + }, + src: { + handler(v, o) { + if(v != o) + this.bindRelation() + }, + immediate: true + }, + text: { + handler(v, o) { + if(v != o) this.bindRelation() + }, + immediate: true + }, + css: { + handler(v, o) { + if(v != o) + this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {} + }, + immediate: true + }, + replace: { + handler(v, o) { + if(JSON.stringify(v) != JSON.stringify(o)) + this.bindRelation() + }, + deep: true, + immediate: true + } + }, + created() { + if(!this._uid) { + this._uid = this._.uid + } + Object.defineProperty(this, 'parent', { + get: () => this[parent] || [], + }) + Object.defineProperty(this, 'index', { + get: () => { + this.bindRelation(); + const {parent: {el: {views=[]}={}}={}} = this + return views.indexOf(this.el) + }, + }); + this.el.type = this.type + if(this.uid) { + this.el.uid = this.uid + } + this.bindRelation() + }, + // #ifdef VUE3 + beforeUnmount() { + this.removeEl() + }, + // #endif + // #ifdef VUE2 + beforeDestroy() { + this.removeEl() + }, + // #endif + methods: { + removeEl() { + if (this.parent) { + this.parent.el.views = this.parent.el.views.filter( + (item) => item._uid !== this._uid + ); + } + }, + bindRelation() { + if(!this.el._uid) { + this.el._uid = this._uid + } + if(['text','qrcode'].includes(this.type)) { + this.el.text = this.$slots && this.$slots.default && this.$slots.default[0].text || `${this.text || ''}`.replace(/\\n/g, '\n') + } + if(this.type == 'image') { + this.el.src = this.src + } + if (!this.parent) { + return; + } + let views = this.parent.el.views || []; + if(views.indexOf(this.el) !== -1) { + this.parent.el.views = views.map(v => v._uid == this._uid ? this.el : v) + } else { + this.parent.el.views = [...views, this.el]; + } + } + }, + mounted() { + // this.bindRelation() + }, + } +} \ No newline at end of file diff --git a/src/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue b/src/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue new file mode 100644 index 0000000..e24e3aa --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/src/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue b/src/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue new file mode 100644 index 0000000..a73e5ed --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue b/src/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue new file mode 100644 index 0000000..b332b02 --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue b/src/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue new file mode 100644 index 0000000..94596e5 --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/uni_modules/lime-painter/components/l-painter/l-painter.vue b/src/uni_modules/lime-painter/components/l-painter/l-painter.vue new file mode 100644 index 0000000..83926fd --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter/l-painter.vue @@ -0,0 +1,461 @@ + + + + diff --git a/src/uni_modules/lime-painter/components/l-painter/nvue.js b/src/uni_modules/lime-painter/components/l-painter/nvue.js new file mode 100644 index 0000000..25645fb --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter/nvue.js @@ -0,0 +1,214 @@ +// #ifdef APP-NVUE +import { + sleep, + getImageInfo, + isBase64, + networkReg +} from './utils'; +const dom = weex.requireModule('dom') +import { + version +} from '../../package.json' + +export default { + data() { + return { + tempFilePath: [], + isInitFile: false, + osName: uni.getSystemInfoSync().osName + } + }, + methods: { + getParentWeith() { + return new Promise(resolve => { + dom.getComponentRect(this.$refs.limepainter, (res) => { + this.parentWidth = Math.ceil(res.size.width) + this.canvasWidth = this.canvasWidth || this.parentWidth || 300 + this.canvasHeight = res.size.height || this.canvasHeight || 150 + resolve(res.size) + }) + }) + }, + onPageFinish() { + this.webview = this.$refs.webview + this.webview.evalJS(`init(${this.dpr})`) + }, + onMessage(e) { + const res = e.detail.data[0] || null; + if (res.event) { + if (res.event == 'inited') { + this.inited = true + } + if (res.event == 'fail') { + this.$emit('fail', res) + } + if (res.event == 'layoutChange') { + const data = typeof res.data == 'string' ? JSON.parse(res.data) : res.data + this.canvasWidth = Math.ceil(data.width); + this.canvasHeight = Math.ceil(data.height); + } + if (res.event == 'progressChange') { + this.progress = res.data * 1 + } + if (res.event == 'file') { + this.tempFilePath.push(res.data) + if (this.tempFilePath.length > 7) { + this.tempFilePath.shift() + } + return + } + if (res.event == 'success') { + if (res.data) { + this.tempFilePath.push(res.data) + if (this.tempFilePath.length > 8) { + this.tempFilePath.shift() + } + if (this.isCanvasToTempFilePath) { + this.setFilePath(this.tempFilePath.join(''), { + isEmit: true + }) + } + } else { + this.$emit('fail', 'canvas no data') + } + return + } + this.$emit(res.event, JSON.parse(res.data)); + } else if (res.file) { + this.file = res.data; + } else { + console.info(res[0]) + } + }, + getWebViewInited() { + if (this.inited) return Promise.resolve(this.inited); + return new Promise((resolve) => { + this.$watch( + 'inited', + async val => { + if (val) { + resolve(val) + } + }, { + immediate: true + } + ); + }) + }, + getTempFilePath() { + if (this.tempFilePath.length == 8) return Promise.resolve(this.tempFilePath) + return new Promise((resolve) => { + this.$watch( + 'tempFilePath', + async val => { + if (val.length == 8) { + resolve(val.join('')) + } + }, { + deep: true + } + ); + }) + }, + getWebViewDone() { + if (this.progress == 1) return Promise.resolve(this.progress); + return new Promise((resolve) => { + this.$watch( + 'progress', + async val => { + if (val == 1) { + this.$emit('done') + this.done = true + this.runTask() + resolve(val) + } + }, { + immediate: true + } + ); + }) + }, + async render(args) { + try { + await this.getSize(args) + const { + width + } = args.css || args + if (!width && this.parentWidth) { + Object.assign(args, { + width: this.parentWidth + }) + } + const newNode = await this.calcImage(args); + await this.getWebViewInited() + this.webview.evalJS(`source(${JSON.stringify(newNode)})`) + await this.getWebViewDone() + await sleep(this.afterDelay) + if (this.isCanvasToTempFilePath) { + const params = { + fileType: this.fileType, + quality: this.quality + } + this.webview.evalJS(`save(${JSON.stringify(params)})`) + } + return Promise.resolve() + } catch (e) { + this.$emit('fail', e) + } + }, + async calcImage(args) { + let node = JSON.parse(JSON.stringify(args)) + const urlReg = /url\((.+)\)/ + const { + backgroundImage + } = node.css || {} + const isBG = backgroundImage && urlReg.exec(backgroundImage)[1] + const url = node.url || node.src || isBG + if (['text', 'qrcode'].includes(node.type)) { + return node + } + if ((node.type === "image" || isBG) && url && !isBase64(url) && (this.osName == 'ios' || !networkReg + .test(url))) { + let { + path + } = await getImageInfo(url, true) + if (isBG) { + node.css.backgroundImage = `url(${path})` + } else { + node.src = path + } + } else if (node.views && node.views.length) { + for (let i = 0; i < node.views.length; i++) { + node.views[i] = await this.calcImage(node.views[i]) + } + } + return node + }, + async canvasToTempFilePath(args = {}) { + if (!this.inited) { + return this.$emit('fail', 'no init') + } + this.tempFilePath = [] + if (args.fileType == 'jpg') { + args.fileType = 'jpeg' + } + + this.webview.evalJS(`save(${JSON.stringify(args)})`) + try { + let tempFilePath = await this.getTempFilePath() + + tempFilePath = await this.setFilePath(tempFilePath, args) + args.success({ + errMsg: "canvasToTempFilePath:ok", + tempFilePath + }) + } catch (e) { + console.log('e', e) + args.fail({ + error: e + }) + } + } + } +} +// #endif \ No newline at end of file diff --git a/src/uni_modules/lime-painter/components/l-painter/painter.js b/src/uni_modules/lime-painter/components/l-painter/painter.js new file mode 100644 index 0000000..bd42fc9 --- /dev/null +++ b/src/uni_modules/lime-painter/components/l-painter/painter.js @@ -0,0 +1 @@ +var t=function(){return t=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+r,x1:Math.round(e/2)+n,y1:r};if(180===s)return{x0:Math.round(e/2)+n,y0:r,x1:Math.round(e/2)+n,y1:i+r};if(90===s)return{x0:n,y0:Math.round(i/2)+r,x1:e+n,y1:Math.round(i/2)+r};if(270===s)return{x0:e+n,y0:Math.round(i/2)+r,x1:n,y1:Math.round(i/2)+r};var a=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===a)return{x0:n,y0:i+r,x1:e+n,y1:r};if(s===180-a)return{x0:n,y0:r,x1:e+n,y1:i+r};if(s===180+a)return{x0:e+n,y0:r,x1:n,y1:i+r};if(s===360-a)return{x0:e+n,y0:i+r,x1:n,y1:r};var h=0,c=0,f=0,l=0;if(s180-a&&s<180||s>180&&s<180+a||s>360-a){var d=s*Math.PI/180,u=s360-a?i/2:-i/2,p=Math.tan(d)*u,g=s180-a&&s<180?e/2-p:-e/2-p;h=-(f=p+(v=Math.pow(Math.sin(d),2)*g)),c=-(l=u+v/Math.tan(d))}if(s>a&&s<90||s>90&&s<90+a||s>180+a&&s<270||s>270&&s<360-a){var v;d=(90-s)*Math.PI/180,p=s>a&&s<90||s>90&&s<90+a?e/2:-e/2,u=Math.tan(d)*p,g=s>a&&s<90||s>270&&s<360-a?i/2-u:-i/2-u;h=-(f=p+(v=Math.pow(Math.sin(d),2)*g)/Math.tan(d)),c=-(l=u+v)}return h=Math.round(h+e/2)+n,c=Math.round(i/2-c)+r,f=Math.round(f+e/2)+n,l=Math.round(i/2-l)+r,{x0:h,y0:c,x1:f,y1:l}}(r,t,e,i,n),a=s.x0,h=s.y0,c=s.x1,f=s.y1,l=o.createLinearGradient(a,h,c,f),d=r.match(/linear-gradient\((.+)\)/)[1],u=L(d.substring(d.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function C(t){return"number"==typeof t}function H(t){return"auto"===t||null===t}function D(t){return/%$/.test(t)}var Y=p,$=u,U=d,N=g,X=y,_=w,q=m;function G(t){return t.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()}))}function V(t,e){var i,n,o=function(t){var e=t.match(/([a-z]+)/)[1];return[e,G(t.split(e)[1])]}(t),s=o[0],a=o[1],h=e.split(" ");if(a)return(i={})[s+a]=e,i;if(h.length&&!a){var c=h[0],f=h[1],l=h[2],d=h[3];return(n={})[s+r[0]]=c,n[s+r[1]]=f||c,n[s+r[2]]=l||c,n[s+r[3]]=d||f||c,n}}function J(t){t=t.trim();for(var e=new Array,i="+",n="",r=t.length,o=0;o0;)"("===t[a+=1]&&(s+=1),")"===t[a]&&(s-=1);n="".concat(J(t.slice(o+1,a))),o=a}if(isNaN(Number(t[o]))&&"."!==t[o]||o===r-1){var h=parseFloat(n);switch(i){case"+":e.push(h);break;case"-":e.push(-h);break;case"*":e.push(e.pop()*h);break;case"/":e.push(e.pop()/h)}i=t[o],n=""}}for(var c=0;e.length;)c+=e.pop();return c}var Q,Z=0,K=function(){function t(){R(this,"elements",[]),R(this,"afterElements",[]),R(this,"beforeElements",[]),R(this,"ids",[]),R(this,"width",0),R(this,"height",0),R(this,"top",0),R(this,"left",0),R(this,"pre",null),R(this,"offsetX",0),R(this,"offsetY",0),Z++,this.id=Z}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){if(!this.ids.includes(t.id)){this.ids.push(t.id),this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()}},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.includes(t.id)||(this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t))},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this.container[this.key.lineMaxHeight]=this[this.key.height]=i),this[this.key.width]+=this.getWidth(t.offsetSize);var n=Math.min(this.getWidth(this),!this.getWidth(this.container.contentSize)&&1/0);(this.container[this.key.lineMaxWidth]||0)1)return 0;var e=t.style.alignSelf,i=this.getHeight(this.container.contentSize),n=i-this.getHeight(t.offsetSize);return"flex-end"===e?n:"center"===e?n/2:"stretch"===e?(n&&t.name==d&&(t.style[this.key.width]=this.getWidth(t.offsetSize),t.style[this.key.height]=i,delete t.line,delete t.lines,t.getBoxWidthHeight()),0):0},r.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var n=i.elements[e-1],r=i.getOffsetY(t);t.style[i.key.top]=i[i.key.top]+r,t.style[i.key.left]=n?n.offsetSize[i.key.left]+i.getWidth(n.offsetSize):i[i.key.left],t.getBoxPosition()}))},n}(K),nt=p,rt=u,ot=d,st=v,at=y,ht=b,ct=w,ft=m,lt=0,dt={left:null,top:null,width:null,height:null},ut=new Map,pt=function(){function t(t,e,i,n){var o=this;R(this,"id",lt++),R(this,"style",{left:null,top:null,width:null,height:null}),R(this,"computedStyle",{}),R(this,"originStyle",{}),R(this,"children",{}),R(this,"layoutBox",F({},dt)),R(this,"contentSize",F({},dt)),R(this,"clientSize",F({},dt)),R(this,"borderSize",F({},dt)),R(this,"offsetSize",F({},dt)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.type||t.name,this.attributes=this.getAttributes(t);var s=function(t,e){var i,n=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],o=t.type,s=void 0===o?U:o,a=t.styles,h=void 0===a?{}:a,c=(e||{}).computedStyle,f=Object.assign({},S);if([$,Y,N].includes(s)&&!h.display&&(f.display=X),c)for(var l=0;l=0&&l<0,Y=c>=0&&u<0;return i==a[0]&&(this[i].left=t.left+s+v+E+(D?2*-l:0),this[i].top=t.top+c+x+W+(Y?2*-u:0),this[i].width=t.width+(this[i].widthAdd?0:C),this[i].height=t.height+(this[i].heightAdd?0:H),this[i].widthAdd=C,this[i].heightAdd=H),i==a[1]&&(this[i].left=t.left+s+E+(D<0?-l:0),this[i].top=t.top+c+W+(Y?-u:0),this[i].width=t.width+v+w,this[i].height=t.height+x+S),i==a[2]&&(this[i].left=t.left+s+E/2+(D<0?-l:0),this[i].top=t.top+c+W/2+(Y?-u:0),this[i].width=t.width+v+w+E/2+F/2,this[i].height=t.height+x+S+T/2+W/2),i==a[3]&&(this[i].left=t.left+(D<0?-l:0),this[i].top=t.top+(Y?-u:0),this[i].width=t.width+v+w+E+F+s+l,this[i].height=t.height+x+S+T+W+u+c),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var r=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var o=e||{},s=o.border,h=(s=void 0===s?{}:s).borderWidth,c=void 0===h?0:h,f=o.borderTop,l=(f=void 0===f?{}:f).borderTopWidth,d=void 0===l?c:l,u=o.borderBottom,p=(u=void 0===u?{}:u).borderBottomWidth,g=void 0===p?c:p,v=o.borderRight,y=(v=void 0===v?{}:v).borderRightWidth,x=void 0===y?c:y,b=o.borderLeft,w=(b=void 0===b?{}:b).borderLeftWidth,m=void 0===w?c:w,S=o.padding,z=(S=void 0===S?{}:S).paddingTop,I=void 0===z?0:z,M=S.paddingRight,k=void 0===M?0:M,B=S.paddingBottom,W=void 0===B?0:B,P=S.paddingLeft,O=void 0===P?0:P;i||(t.width-=O+k+x+m),1!==i||n||(t.height-=I+W+d+g)}this.layoutBox&&(a.forEach((function(i){return r.layoutBox[i]=r.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,r=void 0===n?0:n,o=t.top,s=void 0===o?0:o,a=F({},this.contentSize,{left:r,top:s}),h=this.contentSize.top-this.offsetSize.top,c=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var f,l=E(this.root.fixedLine.elements);!(f=l()).done;){var d=f.value;d.setPosition(d,this.root.offsetSize),d.getBoxPosition()}}if(e)for(var u,p=E(e.elements);!(u=p()).done;){var g=u.value,v=F({},this.borderSize,{left:r,top:s});g.setPosition(g,v);var y=this.borderSize.top-this.offsetSize.top,x=this.borderSize.left-this.offsetSize.left;g.style.left+=r+x,g.style.top+=s+y,g.getBoxPosition()}if(i)for(var b,w=E(i);!(b=w()).done;){b.value.layout(a.top+h,a.left+c)}return this.layoutBoxUpdate(a,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==st},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==ht},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==ht)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==at},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,r=i.actualBoundingBoxAscent,o=i.actualBoundingBoxDescent;return{ascent:r,descent:o,width:n,fontHeight:r+o||.7*e+1}},e.getParentSize=function(t,e){if(void 0===t&&(t=this),void 0===e&&(e=!1),t&&t.parent){if(t.parent.contentSize.width)return t.parent.contentSize;if(e)return this.getParentSize(t.parent,e)}return null},e.getBoxWidthHeight=function(){var t=this,e=this.name,i=this.computedStyle,n=this.attributes,r=this.parent,o=void 0===r?{}:r,s=this.ctx,a=this.getChildren(),h=i.left,c=void 0===h?0:h,f=i.top,l=void 0===f?0:f,d=i.bottom,u=i.right,p=i.width,g=void 0===p?0:p,v=i.minWidth,y=i.maxWidth,x=i.minHeight,b=i.maxHeight,w=i.height,m=void 0===w?0:w,S=i.fontSize,z=i.fontWeight,I=i.fontFamily,M=i.fontStyle,k=i.position;i.textIndent;var B=i.lineClamp,P=i.lineHeight,O=i.padding,T=void 0===O?{}:O,L=i.margin,R=void 0===L?{}:L,F=i.border,A=(F=void 0===F?{}:F).borderWidth,j=void 0===A?0:A,E=i.borderRight,C=(E=void 0===E?{}:E).borderRightWidth,Y=void 0===C?j:C,$=i.borderLeft,U=($=void 0===$?{}:$).borderLeftWidth,N=void 0===U?j:U,X=o.contentSize&&o.contentSize.width,_=o.contentSize&&o.contentSize.height;if(D(g)&&X&&(g=W(g,X)),D(g)&&!X&&(g=null),D(m)&&_&&(m=W(m,_)),D(m)&&!_&&(m=null),D(v)&&X&&(v=W(v,X)),D(y)&&X&&(y=W(y,X)),D(x)&&_&&(x=W(x,_)),D(b)&&_&&(b=W(b,_)),i.padding&&X)for(var q in i.padding)Object.hasOwnProperty.call(T,q)&&(T[q]=W(T[q],X));var G=T.paddingRight,V=void 0===G?0:G,J=T.paddingLeft,Q=void 0===J?0:J;if(i.margin&&[R.marginLeft,R.marginRight].includes("auto"))if(g){var Z=X&&X-g-V-Q-N-Y||0;R.marginLeft==R.marginRight?R.marginLeft=R.marginRight=Z/2:H(R.marginLeft)?R.marginLeft=Z:R.marginRight=Z}else R.marginLeft=R.marginRight=0;var tt=R.marginRight,et=void 0===tt?0:tt,st=R.marginLeft,at={width:g,height:m,left:0,top:0},ht=Q+V+N+Y+(void 0===st?0:st)+et;if(this.offsetWidth=ht,e==rt&&!this.attributes.widths){var ft=n.text||"";s.save(),s.setFonts({fontFamily:I,fontSize:S,fontWeight:z,fontStyle:M}),ft.length,"\n"==ft&&(ft="",this.isBr=!0),(""+ft).split("\n").map((function(e){var i=Array.from(e).map((function(e){var i=""+(/^[\u4e00-\u9fa5]+$/.test(e)?"cn":e)+I+S+z+M,n=ut.get(i);if(n)return{width:n,text:e};var r=t.measureText(e,S).width;return ut.set(i,r),{width:r,text:e}})),n=t.measureText(e,S),r=n.fontHeight,o=n.ascent,s=n.descent;t.attributes.fontHeight=r,t.attributes.ascent=o,t.attributes.descent=s,t.attributes.widths||(t.attributes.widths=[]),t.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e.width}),0)})})),s.restore()}if(e==nt&&null==g){var lt=n.width,dt=n.height;at.width=this.contrastSize(Math.round(lt*m/dt)||0,v,y),this.layoutBoxUpdate(at,i,0)}if(e==rt&&null==g){var pt=this.attributes.widths,gt=Math.max.apply(Math,pt.map((function(t){return t.total})));if(o&&X>0&&(gt>X||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)gt=X;at.width=this.contrastSize(gt,v,y),this.layoutBoxUpdate(at,i,0)}if(e==rt&&(o.style.flex||!this.attributes.lines)){var vt=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e.width>at.width?(vt++,e.width):t+e.width}),0)})),vt=B&&vt>B?B:vt,this.attributes.lines=vt}if(e==nt&&null==m){var yt=n.width,xt=n.height;n.text,at.height=this.contrastSize(W(at.width*xt/yt)||0,x,b),this.layoutBoxUpdate(at,i,1)}e==rt&&null==m&&(P=W(P,S),at.height=this.contrastSize(W(this.attributes.lines*P),x,b),this.layoutBoxUpdate(at,i,1,!0)),!g&&o&&o.children&&X&&(!this.isFlex(o)||o.isFlexCalc)&&([ot,rt].includes(e)&&this.isFlex()||e==ot&&this.isBlock(this)&&this.isInFlow())&&(at.width=this.contrastSize(X-(o.isFlexCalc?0:ht),v,y),this.layoutBoxUpdate(at,i)),g&&!D(g)&&(at.width=this.contrastSize(g,v,y),this.layoutBoxUpdate(at,i,0)),m&&!D(m)&&(at.height=this.contrastSize(at.height,x,b),this.layoutBoxUpdate(at,i,1));var bt=0;if(a.length){var wt=null,mt=!1;a.forEach((function(e,n){e.getBoxWidthHeight();var r=a[n+1];if(r&&r.isInFlow()&&(e.next=r),!t.line||!t.line.ids.includes(e.id))if(e.isInFlow()&&!e.inFlexBox()){var o=t.getBoxState(wt,e);if(e.isBr)return mt=!0;t.line&&t.line.canIEnter(e)&&!o&&!mt?t.line.add(e):(mt=!1,(new K).bind(e)),wt=e}else e.inFlexBox()?t.line&&(t.line.canIEnter(e)||"nowrap"==i.flexWrap)?t.line.add(e):(new it).bind(e):e.isFixed?t.root.fixedLine?t.root.fixedLine.fixedAdd(e):(new K).fixedBind(e):t.fixedLine?t.fixedLine.fixedAdd(e):(new K).fixedBind(e,1)})),this.lines&&(bt=this.lines.reduce((function(t,e){return t+e.height}),0))}var St=0,zt=0;if(!g&&(this.isAbsolute||this.isFixed)&&X){var It=k==ct?X:this.root.width,Mt=It-(D(c)?W(c,It):c)-(D(u)?W(u,It):u);St=i.left?Mt:this.lineMaxWidth}if(!m&&(null!=l?l:this.isAbsolute||this.isFixed&&_)){var kt=k==ct?_:this.root.height,Bt=kt-(D(l)?W(l,kt):l)-(D(d)?W(d,kt):d);zt=i.top?Bt:0}if(g&&!D(g)||at.width||(at.width=St||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?X||o.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,v,y),this.layoutBoxUpdate(at,i,0)),m||!bt&&!zt||(at.height=zt||this.contrastSize(bt,x,b),this.layoutBoxUpdate(at,i)),i.borderRadius&&this.borderSize&&this.borderSize.width)for(var q in i.borderRadius)Object.hasOwnProperty.call(i.borderRadius,q)&&(i.borderRadius[q]=W(i.borderRadius[q],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.root.contentSize=this.contentSize,this.getBoxPosition(),this.offsetSize},t}(),gt=function(){var t,e,i,n,r,o,s=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],a=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],h=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],c=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],f=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],l=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],d=[],u=[],p=[],g=[],v=[],y=2;function x(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,g[i+=t]=1}function b(t,i){var n;for(p[t+e*i]=1,n=-2;n<2;n++)p[t+n+e*(i-2)]=1,p[t-2+e*(i+n+1)]=1,p[t+2+e*(i+n)]=1,p[t+n+1+e*(i+2)]=1;for(n=0;n<2;n++)x(t-1,i+n),x(t+1,i-n),x(t-n,i-1),x(t+n,i+1)}function w(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var m=[];function S(t,e,i,n){var r,o,s;for(r=0;re&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,g[i+=t]}function I(t){var i,n,r,o;switch(t){case 0:for(n=0;n>1&1,i=0;i=5&&(i+=3+v[e]-5);for(e=3;et||3*v[e-3]>=4*v[e]||3*v[e+3]>=4*v[e])&&(i+=40);return i}function k(){var t,i,n,r,o,s=0,a=0;for(i=0;ie*e;)h-=e*e,c++;for(s+=10*c,t=0;t1)for(P=s[t],B=e-7;;){for(M=e-7;M>P-3&&(b(M,B),!(M6)for(P=a[t-7],W=17,M=0;M<6;M++)for(B=0;B<3;B++,W--)1&(W>11?t>>W-12:P>>W)?(p[5-M+e*(2-B+e-11)]=1,p[2-B+e-11+e*(5-M)]=1):(x(5-M,2-B+e-11),x(2-B+e-11,5-M));for(B=0;B=(M=r*(i+n)+n)-2&&(O=M-2,t>9&&O--),T=O,t>9){for(d[T+2]=0,d[T+3]=0;T--;)P=d[T],d[T+3]|=255&P<<4,d[T+2]=P>>4;d[2]|=255&O<<4,d[1]=O>>4,d[0]=64|O>>12}else{for(d[T+1]=0,d[T+2]=0;T--;)P=d[T],d[T+2]|=255&P<<4,d[T+1]=P>>4;d[1]|=255&O<<4,d[0]=64|O>>4}for(T=O+3-(t<10);T0;L--)m[L]=m[L]?m[L-1]^l[w(f[m[L]]+T)]:m[L-1];m[0]=l[w(f[m[0]]+T)]}for(T=0;T<=o;T++)m[T]=f[m[T]];for(W=M,B=0,T=0;T>=1)1&B&&(p[e-1-W+8*e]=1,W<6?p[8+e*W]=1:p[8+e*(W+1)]=1);for(W=0;W<7;W++,B>>=1)1&B&&(p[8+e*(e-7+W)]=1,W?p[6-W+8*e]=1:p[7+8*e]=1);return p}(v)},utf16to8:function(t){var e,i,n,r;for(e="",n=t.length,i=0;i=1&&r<=127?e+=t.charAt(i):r>2047?(e+=String.fromCharCode(224|r>>12&15),e+=String.fromCharCode(128|r>>6&63),e+=String.fromCharCode(128|r>>0&63)):(e+=String.fromCharCode(192|r>>6&31),e+=String.fromCharCode(128|r>>0&63));return e},draw:function(t,i,n,r,o){i.drawView(n,r);var s=i.ctx,a=n.contentSize,h=a.width,c=a.height,f=a.left,l=a.top;r.borderRadius,r.backgroundColor;var d=r.color,u=void 0===d?"#000000":d;r.border,n.contentSize.left,n.borderSize.left,n.contentSize.top,n.borderSize.top;if(y=o||y,s){s.save(),i.setOpacity(r),i.setTransform(n,r);var p=Math.min(h,c);t=this.utf16to8(t);var g=this.getFrame(t),v=p/e;s.setFillStyle(u);for(var x=0;x=s||n==c&&o=s)&&(a=e.width/i.width);var f=i.width*a,l=i.height*a,d=r||[],u=d[0],p=d[1],g=B(u)?W(u,e.width):(e.width-f)*(P(u)?W(u,1):{left:0,center:.5,right:1}[u||"center"]),v=B(p)?W(p,e.height):(e.height-l)*(P(p)?W(p,1):{top:0,center:.5,bottom:1}[p||"center"]),y=function(t,e){return[(t-g)/a,(e-v)/a]},x=y(0,0),b=x[0],w=x[1],m=y(e.width,e.height),S=m[0],z=m[1],I=Math.max,M=Math.min;return{sx:I(b,0),sy:I(w,0),sw:M(S-b,i.width),sh:M(z-w,i.height),dx:I(g,0),dy:I(v,0),dw:M(f,e.width),dh:M(l,e.height)}}({objectFit:u,objectPosition:v},r.contentSize,t),o=i.sx,s=i.sy,a=i.sh,h=i.sw,c=i.dx,f=i.dy,l=i.dh,d=i.dw;I==n.MP_BAIDU?e.drawImage(t.src,c+m,f+S,d,l,o,s,h,a):e.drawImage(t.src,o,s,h,a,c+m,f+S,d,l)}else e.drawImage(t.src,m,S,b,w)},O=function(){e.restore(),L.drawView(r,o,!1,!0,!1),h(1)},T=function(t){k(t),O()},T(t),[2]}))}))}))];case 1:return h.sent(),[2]}}))}))},r.prototype.drawText=function(t,e,i,n){var r=this,o=this.ctx,s=e.borderSize,a=e.contentSize,h=e.left,c=e.top,f=a.width,l=a.height,d=a.left-s.left||0,u=a.top-s.top||0,p=i.color,g=i.lineHeight,v=i.fontSize,y=i.fontWeight,x=i.fontFamily,b=i.fontStyle,w=i.textIndent,m=void 0===w?0:w,S=i.textAlign,z=i.textStroke,I=i.verticalAlign,M=void 0===I?mt:I,k=i.backgroundColor,P=i.lineClamp,O=i.backgroundClip,T=i.textShadow,L=i.textDecoration;if(m=B(m)?m:0,this.drawView(e,i,O!=yt),g=W(g,v),t){o.save(),h+=d,c+=u;var R=n.fontHeight,F=n.descent,A=void 0===F?0:F,j=n.ascent,E=A+(void 0===j?0:j);switch(o.setFonts({fontFamily:x,fontSize:v,fontWeight:y,fontStyle:b}),o.setTextBaseline(mt),o.setTextAlign(S),O?this.setBackground(k,f,l,h,c):o.setFillStyle(p),S){case zt:break;case It:h+=.5*f;break;case Mt:h+=f}var C=n.lines*g,H=Math.ceil((l-C)/2);switch(H<0&&(H=0),M){case wt:break;case mt:c+=H;break;case St:c+=2*H}var D=(g-R)/2,Y=g/2,$=function(t){var e=o.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,r=e.actualBoundingBoxAscent;return M==wt?{fix:E?void 0===r?0:r:Y-D/2,lineY:E?0:D-D/2}:M==mt?{fix:E?Y+n/4:Y,lineY:E?0:D}:M==St?{fix:E?g-n:Y+D/2,lineY:E?2*D:D+D/2}:{fix:0,height:0,lineY:0}},U=function(t,e,i){var r=t;switch(S){case zt:r+=i;break;case It:r=(t-=i/2)+i;break;case Mt:r=t,t-=i}if(L){o.setLineWidth(v/13),o.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(L)&&(o.moveTo(t,e+n.fontHeight+s),o.lineTo(r,e+n.fontHeight+s)),/\boverline\b/.test(L)&&(o.moveTo(t,e-s),o.lineTo(r,e-s)),/\bline-through\b/.test(L)&&(o.moveTo(t,e+.5*n.fontHeight),o.lineTo(r,e+.5*n.fontHeight)),o.closePath(),o.setStrokeStyle(p),o.stroke()}},N=function(t,e,i){var n=function(){o.setLineWidth(z.width),o.setStrokeStyle(z.color),o.strokeText(t,e,i)},s="outset";z&&z.type!==s?(o.save(),r.setShadow({boxShadow:T}),o.fillText(t,e,i),o.restore(),n()):z&&z.type==s?(o.save(),r.setShadow({boxShadow:T}),n(),o.restore(),o.save(),o.fillText(t,e,i),o.restore()):(r.setShadow({boxShadow:T}),o.fillText(t,e,i))};if(!n.widths||1==n.widths.length&&n.widths[0].total+m<=a.width){var X=$(t),_=X.fix,q=void 0===_?0:_,G=X.lineY;return N(t,h+m,c+q),U(h+m,c+G,n&&n.widths&&n.widths[0].total||n.text),c+=g,o.restore(),void this.setBorder(e,i)}for(var V=c,J=h,Q="",Z=0,K=o.measureText("...").width,tt=n.widths,et=0;eta.width){Z>=P&&(Q+="…"),Z++,nt=0;var ct=$(Q);q=ct.fix,G=ct.lineY;N(Q,J,c+q),U(J,c+G,nt),c+=g,Q=""}else if(rt==it.length-1){et!=tt.length-1&&Z==P&&K+ntV+l||Z>P)break}}o.restore()}},r.prototype.source=function(t){return e(this,void 0,void 0,(function(){var e,n,r,o,s=this;return i(this,(function(i){switch(i.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(t.styles=t.styles||t.css||{},!t.type)for(n in t.type=bt,t)["views","children","type","css","styles"].includes(n)||(t.styles[n]=t[n],delete t[n]);return t.styles.boxSizing||(t.styles.boxSizing="border-box"),[4,this.create(t)];case 1:return(r=i.sent())?(o=r.layout()||{},this.size=o,this.node=r,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),this.performance&&console.log("布局用时:"+(+new Date-e)+"ms"),[2,this.size]):[2,console.warn("no node")]}}))}))},r.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},r.prototype.create=function(n,r){return e(this,void 0,void 0,(function(){function e(i,n,r){void 0===n&&(n={}),void 0===r&&(r=!0);var o=[];return i.forEach((function(i){var s=i.styles,a=void 0===s?{}:s,h=i.css,c=void 0===h?{}:h,f=i.children,l=void 0===f?[]:f,d=i.views,u=void 0===d?[]:d,p=i.text,g=void 0===p?"":p,v=i.type,y=void 0===v?"":v;!l&&u&&(i.children=l=u);var x={};x=t(t(r?t({},n):{},a),c);var b={},w={},m={};Object.keys(x).map((function(t){if(t.includes("padding")||t.includes("margin")){var e=V(t,x[t]);Object.keys(e).map((function(t){t.includes("Left")?w[t]=e[t]:t.includes("Right")?m[t]=e[t]:b[t]=e[t]}))}}));if(x.textIndent&&(w.textIndent=x.textIndent,delete n.textIndent),""!==g){var S=Array.from(g);S.forEach((function(t,e){var i=Object.assign({},x,b);0===e?Object.assign(i,w):e==S.length-1&&Object.assign(i,m),delete i.padding,delete i.margin,o.push({type:"text",text:t,styles:i})}))}if(y==vt||y==xt)o.push(i);else if("block"===a.display&&l.length>0){var z=e(l,x,!1);i.children=z,i.flattened=!0,o.push(i)}else if(l.length>0){z=e(l,x,r);o=o.concat(z)}})),o}var o,s,a,h,c,f,l,d,u,p,g,v,y,b,w,m,S,z,I,M,k,B,W,P;return i(this,(function(i){switch(i.label){case 0:if(!n)return[2];if(n.styles||(n.styles=n.css||{}),o=n.type,s=n.show,a=void 0===s||s,h=o==vt,c=[yt,xt].includes(o),f="textBox"==o,l=n.styles||{},d=l.backgroundImage,u=l.display,h&&!n.src&&!n.url)return[2];if(u==x||!a)return[2];if(c||f){if(p=n.children,g=n.views,!p&&g&&(n.children=p=g),!n.text&&(!p||p&&!p.length))return[2];p&&p.length&&!n.flattened&&(v=e(n.children||n.views),n.type="view",n.children=v)}if(!(h||n.type==bt&&d))return[3,4];y=h?n.src:"",b=/url\(['"]?(.*?)['"]?\)/.exec(d),d&&b&&b[1]&&(y=b[1]||""),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.getImageInfo(y)];case 2:return w=i.sent(),m=w.width,S=w.height,!(z=w.path)&&h?[2]:(z&&(n.attributes=Object.assign(n.attributes||{},{width:m,height:S,path:z,src:z,naturalSrc:y})),[3,4]);case 3:return I=i.sent(),n.type!=bt?[2]:(this.lifecycle("onEffectFail",t(t({},I),{src:y})),[3,4]);case 4:if(this.count+=1,M=new pt(n,r,this.root,this.ctx),!(k=n.children||n.views))return[3,8];B=0,i.label=5;case 5:return B0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+r,x1:Math.round(e/2)+n,y1:r};if(180===s)return{x0:Math.round(e/2)+n,y0:r,x1:Math.round(e/2)+n,y1:i+r};if(90===s)return{x0:n,y0:Math.round(i/2)+r,x1:e+n,y1:Math.round(i/2)+r};if(270===s)return{x0:e+n,y0:Math.round(i/2)+r,x1:n,y1:Math.round(i/2)+r};var h=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===h)return{x0:n,y0:i+r,x1:e+n,y1:r};if(s===180-h)return{x0:n,y0:r,x1:e+n,y1:i+r};if(s===180+h)return{x0:e+n,y0:r,x1:n,y1:i+r};if(s===360-h)return{x0:e+n,y0:i+r,x1:n,y1:r};var a=0,l=0,d=0,c=0;if(s180-h&&s<180||s>180&&s<180+h||s>360-h){var f=s*Math.PI/180,u=s360-h?i/2:-i/2,p=Math.tan(f)*u,g=s180-h&&s<180?e/2-p:-e/2-p;a=-(d=p+(v=Math.pow(Math.sin(f),2)*g)),l=-(c=u+v/Math.tan(f))}if(s>h&&s<90||s>90&&s<90+h||s>180+h&&s<270||s>270&&s<360-h){var v;f=(90-s)*Math.PI/180,p=s>h&&s<90||s>90&&s<90+h?e/2:-e/2,u=Math.tan(f)*p,g=s>h&&s<90||s>270&&s<360-h?i/2-u:-i/2-u;a=-(d=p+(v=Math.pow(Math.sin(f),2)*g)/Math.tan(f)),l=-(c=u+v)}return a=Math.round(a+e/2)+n,l=Math.round(i/2-l)+r,d=Math.round(d+e/2)+n,c=Math.round(i/2-c)+r,{x0:a,y0:l,x1:d,y1:c}}(r,t,e,i,n),h=s.x0,a=s.y0,l=s.x1,d=s.y1,c=o.createLinearGradient(h,a,l,d),f=r.match(/linear-gradient\((.+)\)/)[1],u=L(f.substring(f.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(t){return"number"==typeof t}function C(t){return"auto"===t||null===t}function D(t){return/%$/.test(t)}var Y=p,$=u,U=f,N=g,X=y,_=w,q=m;function G(t){return t.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()}))}function V(t,e){var i,n,o=function(t){var e=t.match(/([a-z]+)/)[1];return[e,G(t.split(e)[1])]}(t),s=o[0],h=o[1],a=e.split(" ");if(h)return(i={})[s+h]=e,i;if(a.length&&!h){var l=a[0],d=a[1],c=a[2],f=a[3];return(n={})[s+r[0]]=l,n[s+r[1]]=d||l,n[s+r[2]]=c||l,n[s+r[3]]=f||d||l,n}}function J(t){t=t.trim();for(var e=new Array,i="+",n="",r=t.length,o=0;o0;)"("===t[h+=1]&&(s+=1),")"===t[h]&&(s-=1);n="".concat(J(t.slice(o+1,h))),o=h}if(isNaN(Number(t[o]))&&"."!==t[o]||o===r-1){var a=parseFloat(n);switch(i){case"+":e.push(a);break;case"-":e.push(-a);break;case"*":e.push(e.pop()*a);break;case"/":e.push(e.pop()/a)}i=t[o],n=""}}for(var l=0;e.length;)l+=e.pop();return l}var Q,Z=0,K=function(){function t(){R(this,"elements",[]),R(this,"afterElements",[]),R(this,"beforeElements",[]),R(this,"ids",[]),R(this,"width",0),R(this,"height",0),R(this,"top",0),R(this,"left",0),R(this,"pre",null),R(this,"offsetX",0),R(this,"offsetY",0),Z++,this.id=Z}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){if(!this.ids.includes(t.id)){this.ids.push(t.id),this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()}},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.includes(t.id)||(this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t))},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this.container[this.key.lineMaxHeight]=this[this.key.height]=i),this[this.key.width]+=this.getWidth(t.offsetSize);var n=Math.min(this.getWidth(this),!this.getWidth(this.container.contentSize)&&1/0);(this.container[this.key.lineMaxWidth]||0)1)return 0;var e=t.style.alignSelf,i=this.getHeight(this.container.contentSize),n=i-this.getHeight(t.offsetSize);return"flex-end"===e?n:"center"===e?n/2:"stretch"===e?(n&&t.name==f&&(t.style[this.key.width]=this.getWidth(t.offsetSize),t.style[this.key.height]=i,delete t.line,delete t.lines,t.getBoxWidthHeight()),0):0},r.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var n=i.elements[e-1],r=i.getOffsetY(t);t.style[i.key.top]=i[i.key.top]+r,t.style[i.key.left]=n?n.offsetSize[i.key.left]+i.getWidth(n.offsetSize):i[i.key.left],t.getBoxPosition()}))},n}(K),nt=p,rt=u,ot=f,st=v,ht=y,at=b,lt=w,dt=m,ct=0,ft={left:null,top:null,width:null,height:null},ut=new Map,pt=function(){function t(t,e,i,n){var o=this;R(this,"id",ct++),R(this,"style",{left:null,top:null,width:null,height:null}),R(this,"computedStyle",{}),R(this,"originStyle",{}),R(this,"children",{}),R(this,"layoutBox",F({},ft)),R(this,"contentSize",F({},ft)),R(this,"clientSize",F({},ft)),R(this,"borderSize",F({},ft)),R(this,"offsetSize",F({},ft)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.type||t.name,this.attributes=this.getAttributes(t);var s=function(t,e){var i,n=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],o=t.type,s=void 0===o?U:o,h=t.styles,a=void 0===h?{}:h,l=(e||{}).computedStyle,d=Object.assign({},S);if([$,Y,N].includes(s)&&!a.display&&(d.display=X),l)for(var c=0;c=0&&c<0,Y=l>=0&&u<0;return i==h[0]&&(this[i].left=t.left+s+v+E+(D?2*-c:0),this[i].top=t.top+l+x+k+(Y?2*-u:0),this[i].width=t.width+(this[i].widthAdd?0:H),this[i].height=t.height+(this[i].heightAdd?0:C),this[i].widthAdd=H,this[i].heightAdd=C),i==h[1]&&(this[i].left=t.left+s+E+(D<0?-c:0),this[i].top=t.top+l+k+(Y?-u:0),this[i].width=t.width+v+w,this[i].height=t.height+x+S),i==h[2]&&(this[i].left=t.left+s+E/2+(D<0?-c:0),this[i].top=t.top+l+k/2+(Y?-u:0),this[i].width=t.width+v+w+E/2+F/2,this[i].height=t.height+x+S+T/2+k/2),i==h[3]&&(this[i].left=t.left+(D<0?-c:0),this[i].top=t.top+(Y?-u:0),this[i].width=t.width+v+w+E+F+s+c,this[i].height=t.height+x+S+T+k+u+l),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var r=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var o=e||{},s=o.border,a=(s=void 0===s?{}:s).borderWidth,l=void 0===a?0:a,d=o.borderTop,c=(d=void 0===d?{}:d).borderTopWidth,f=void 0===c?l:c,u=o.borderBottom,p=(u=void 0===u?{}:u).borderBottomWidth,g=void 0===p?l:p,v=o.borderRight,y=(v=void 0===v?{}:v).borderRightWidth,x=void 0===y?l:y,b=o.borderLeft,w=(b=void 0===b?{}:b).borderLeftWidth,m=void 0===w?l:w,S=o.padding,z=(S=void 0===S?{}:S).paddingTop,I=void 0===z?0:z,M=S.paddingRight,B=void 0===M?0:M,W=S.paddingBottom,k=void 0===W?0:W,P=S.paddingLeft,O=void 0===P?0:P;i||(t.width-=O+B+x+m),1!==i||n||(t.height-=I+k+f+g)}this.layoutBox&&(h.forEach((function(i){return r.layoutBox[i]=r.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,r=void 0===n?0:n,o=t.top,s=void 0===o?0:o,h=F({},this.contentSize,{left:r,top:s}),a=this.contentSize.top-this.offsetSize.top,l=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var d,c=E(this.root.fixedLine.elements);!(d=c()).done;){var f=d.value;f.setPosition(f,this.root.offsetSize),f.getBoxPosition()}}if(e)for(var u,p=E(e.elements);!(u=p()).done;){var g=u.value,v=F({},this.borderSize,{left:r,top:s});g.setPosition(g,v);var y=this.borderSize.top-this.offsetSize.top,x=this.borderSize.left-this.offsetSize.left;g.style.left+=r+x,g.style.top+=s+y,g.getBoxPosition()}if(i)for(var b,w=E(i);!(b=w()).done;){b.value.layout(h.top+a,h.left+l)}return this.layoutBoxUpdate(h,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==st},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==at},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==at)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==ht},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,r=i.actualBoundingBoxAscent,o=i.actualBoundingBoxDescent;return{ascent:r,descent:o,width:n,fontHeight:r+o||.7*e+1}},e.getParentSize=function(t,e){if(void 0===t&&(t=this),void 0===e&&(e=!1),t&&t.parent){if(t.parent.contentSize.width)return t.parent.contentSize;if(e)return this.getParentSize(t.parent,e)}return null},e.getBoxWidthHeight=function(){var t=this,e=this.name,i=this.computedStyle,n=this.attributes,r=this.parent,o=void 0===r?{}:r,s=this.ctx,h=this.getChildren(),a=i.left,l=void 0===a?0:a,d=i.top,c=void 0===d?0:d,f=i.bottom,u=i.right,p=i.width,g=void 0===p?0:p,v=i.minWidth,y=i.maxWidth,x=i.minHeight,b=i.maxHeight,w=i.height,m=void 0===w?0:w,S=i.fontSize,z=i.fontWeight,I=i.fontFamily,M=i.fontStyle,B=i.position;i.textIndent;var W=i.lineClamp,P=i.lineHeight,O=i.padding,T=void 0===O?{}:O,L=i.margin,R=void 0===L?{}:L,F=i.border,A=(F=void 0===F?{}:F).borderWidth,j=void 0===A?0:A,E=i.borderRight,H=(E=void 0===E?{}:E).borderRightWidth,Y=void 0===H?j:H,$=i.borderLeft,U=($=void 0===$?{}:$).borderLeftWidth,N=void 0===U?j:U,X=o.contentSize&&o.contentSize.width,_=o.contentSize&&o.contentSize.height;if(D(g)&&X&&(g=k(g,X)),D(g)&&!X&&(g=null),D(m)&&_&&(m=k(m,_)),D(m)&&!_&&(m=null),D(v)&&X&&(v=k(v,X)),D(y)&&X&&(y=k(y,X)),D(x)&&_&&(x=k(x,_)),D(b)&&_&&(b=k(b,_)),i.padding&&X)for(var q in i.padding)Object.hasOwnProperty.call(T,q)&&(T[q]=k(T[q],X));var G=T.paddingRight,V=void 0===G?0:G,J=T.paddingLeft,Q=void 0===J?0:J;if(i.margin&&[R.marginLeft,R.marginRight].includes("auto"))if(g){var Z=X&&X-g-V-Q-N-Y||0;R.marginLeft==R.marginRight?R.marginLeft=R.marginRight=Z/2:C(R.marginLeft)?R.marginLeft=Z:R.marginRight=Z}else R.marginLeft=R.marginRight=0;var tt=R.marginRight,et=void 0===tt?0:tt,st=R.marginLeft,ht={width:g,height:m,left:0,top:0},at=Q+V+N+Y+(void 0===st?0:st)+et;if(this.offsetWidth=at,e==rt&&!this.attributes.widths){var dt=n.text||"";s.save(),s.setFonts({fontFamily:I,fontSize:S,fontWeight:z,fontStyle:M}),dt.length,"\n"==dt&&(dt="",this.isBr=!0),(""+dt).split("\n").map((function(e){var i=Array.from(e).map((function(e){var i=""+(/^[\u4e00-\u9fa5]+$/.test(e)?"cn":e)+I+S+z+M,n=ut.get(i);if(n)return{width:n,text:e};var r=t.measureText(e,S).width;return ut.set(i,r),{width:r,text:e}})),n=t.measureText(e,S),r=n.fontHeight,o=n.ascent,s=n.descent;t.attributes.fontHeight=r,t.attributes.ascent=o,t.attributes.descent=s,t.attributes.widths||(t.attributes.widths=[]),t.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e.width}),0)})})),s.restore()}if(e==nt&&null==g){var ct=n.width,ft=n.height;ht.width=this.contrastSize(Math.round(ct*m/ft)||0,v,y),this.layoutBoxUpdate(ht,i,0)}if(e==rt&&null==g){var pt=this.attributes.widths,gt=Math.max.apply(Math,pt.map((function(t){return t.total})));if(o&&X>0&&(gt>X||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)gt=X;ht.width=this.contrastSize(gt,v,y),this.layoutBoxUpdate(ht,i,0)}if(e==rt&&(o.style.flex||!this.attributes.lines)){var vt=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e.width>ht.width?(vt++,e.width):t+e.width}),0)})),vt=W&&vt>W?W:vt,this.attributes.lines=vt}if(e==nt&&null==m){var yt=n.width,xt=n.height;n.text,ht.height=this.contrastSize(k(ht.width*xt/yt)||0,x,b),this.layoutBoxUpdate(ht,i,1)}e==rt&&null==m&&(P=k(P,S),ht.height=this.contrastSize(k(this.attributes.lines*P),x,b),this.layoutBoxUpdate(ht,i,1,!0)),!g&&o&&o.children&&X&&(!this.isFlex(o)||o.isFlexCalc)&&([ot,rt].includes(e)&&this.isFlex()||e==ot&&this.isBlock(this)&&this.isInFlow())&&(ht.width=this.contrastSize(X-(o.isFlexCalc?0:at),v,y),this.layoutBoxUpdate(ht,i)),g&&!D(g)&&(ht.width=this.contrastSize(g,v,y),this.layoutBoxUpdate(ht,i,0)),m&&!D(m)&&(ht.height=this.contrastSize(ht.height,x,b),this.layoutBoxUpdate(ht,i,1));var bt=0;if(h.length){var wt=null,mt=!1;h.forEach((function(e,n){e.getBoxWidthHeight();var r=h[n+1];if(r&&r.isInFlow()&&(e.next=r),!t.line||!t.line.ids.includes(e.id))if(e.isInFlow()&&!e.inFlexBox()){var o=t.getBoxState(wt,e);if(e.isBr)return mt=!0;t.line&&t.line.canIEnter(e)&&!o&&!mt?t.line.add(e):(mt=!1,(new K).bind(e)),wt=e}else e.inFlexBox()?t.line&&(t.line.canIEnter(e)||"nowrap"==i.flexWrap)?t.line.add(e):(new it).bind(e):e.isFixed?t.root.fixedLine?t.root.fixedLine.fixedAdd(e):(new K).fixedBind(e):t.fixedLine?t.fixedLine.fixedAdd(e):(new K).fixedBind(e,1)})),this.lines&&(bt=this.lines.reduce((function(t,e){return t+e.height}),0))}var St=0,zt=0;if(!g&&(this.isAbsolute||this.isFixed)&&X){var It=B==lt?X:this.root.width,Mt=It-(D(l)?k(l,It):l)-(D(u)?k(u,It):u);St=i.left?Mt:this.lineMaxWidth}if(!m&&(null!=c?c:this.isAbsolute||this.isFixed&&_)){var Bt=B==lt?_:this.root.height,Wt=Bt-(D(c)?k(c,Bt):c)-(D(f)?k(f,Bt):f);zt=i.top?Wt:0}if(g&&!D(g)||ht.width||(ht.width=St||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?X||o.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,v,y),this.layoutBoxUpdate(ht,i,0)),m||!bt&&!zt||(ht.height=zt||this.contrastSize(bt,x,b),this.layoutBoxUpdate(ht,i)),i.borderRadius&&this.borderSize&&this.borderSize.width)for(var q in i.borderRadius)Object.hasOwnProperty.call(i.borderRadius,q)&&(i.borderRadius[q]=k(i.borderRadius[q],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.root.contentSize=this.contentSize,this.getBoxPosition(),this.offsetSize},t}(),gt=p,vt=u,yt=g,xt=f,bt=d.TOP,wt=d.MIDDLE,mt=d.BOTTOM,St=c.LEFT,zt=c.CENTER,It=c.RIGHT,Mt=function(){function r(t){var e,i,r=this;this.v="1.9.5.1",this.id=null,this.pixelRatio=1,this.width=0,this.height=0,this.sleep=1e3/30,this.count=0,this.isRate=!1,this.isDraw=!0,this.isCache=!0,this.fixed="",this.useCORS=!1,this.performance=!1,this.imageBus=[],this.createImage=function(t,e){return new Promise((function(i,n){var o=null;window||r.canvas.createImage?(o=r.canvas&&r.canvas.createImage?r.canvas.createImage():new Image,e&&o.setAttribute("crossOrigin","Anonymous"),o.src=t,o.onload=function(){i({width:o.naturalWidth||o.width,height:o.naturalHeight||o.height,path:o,src:this.src})},o.onerror=function(t){n(t)}):n({fail:"getImageInfo fail",src:t})}))},this.options=t,Object.assign(this,t),this.ctx=(e=t.context,i={get:function(t,i){if("setFonts"===i)return function(t){var i=t.fontFamily,r=void 0===i?"sans-serif":i,o=t.fontSize,s=void 0===o?14:o,h=t.fontWeight,a=void 0===h?"normal":h,l=t.fontStyle,d=void 0===l?"normal":l;I==n.MP_TOUTIAO&&(a="bold"==a?"bold":"",d="italic"==d?"italic":""),e.font="".concat(d," ").concat(a," ").concat(Math.round(s),"px ").concat(r)};if(!e.draw||!e.setFillStyle){if("setFillStyle"===i)return function(t){e.fillStyle=t};if("setStrokeStyle"===i)return function(t){e.strokeStyle=t};if("setLineWidth"===i)return function(t){e.lineWidth=t};if("setLineCap"===i)return function(t){e.lineCap=t};if("setFontSize"===i)return function(t){e.font="".concat(String(t),"px sans-serif")};if("setGlobalAlpha"===i)return function(t){e.globalAlpha=t};if("setLineJoin"===i)return function(t){e.lineJoin=t};if("setTextAlign"===i)return function(t){e.textAlign=t};if("setMiterLimit"===i)return function(t){e.miterLimit=t};if("setShadow"===i)return function(t,i,n,r){e.shadowOffsetX=t,e.shadowOffsetY=i,e.shadowBlur=n,e.shadowColor=r};if("setTextBaseline"===i)return function(t){e.textBaseline=t};if("createCircularGradient"===i)return function(){};if("draw"===i)return function(){};if("function"==typeof e[i])return function(){for(var t=[],n=0;n=s||n==l&&o=s)&&(h=e.width/i.width);var d=i.width*h,c=i.height*h,f=r||[],u=f[0],p=f[1],g=W(u)?k(u,e.width):(e.width-d)*(P(u)?k(u,1):{left:0,center:.5,right:1}[u||"center"]),v=W(p)?k(p,e.height):(e.height-c)*(P(p)?k(p,1):{top:0,center:.5,bottom:1}[p||"center"]),y=function(t,e){return[(t-g)/h,(e-v)/h]},x=y(0,0),b=x[0],w=x[1],m=y(e.width,e.height),S=m[0],z=m[1],I=Math.max,M=Math.min;return{sx:I(b,0),sy:I(w,0),sw:M(S-b,i.width),sh:M(z-w,i.height),dx:I(g,0),dy:I(v,0),dw:M(d,e.width),dh:M(c,e.height)}}({objectFit:u,objectPosition:v},r.contentSize,t),o=i.sx,s=i.sy,h=i.sh,a=i.sw,l=i.dx,d=i.dy,c=i.dh,f=i.dw;I==n.MP_BAIDU?e.drawImage(t.src,l+m,d+S,f,c,o,s,a,h):e.drawImage(t.src,o,s,a,h,l+m,d+S,f,c)}else e.drawImage(t.src,m,S,b,w)},O=function(){e.restore(),L.drawView(r,o,!1,!0,!1),a(1)},T=function(t){B(t),O()},T(t),[2]}))}))}))];case 1:return a.sent(),[2]}}))}))},r.prototype.drawText=function(t,e,i,n){var r=this,o=this.ctx,s=e.borderSize,h=e.contentSize,a=e.left,l=e.top,d=h.width,c=h.height,f=h.left-s.left||0,u=h.top-s.top||0,p=i.color,g=i.lineHeight,v=i.fontSize,y=i.fontWeight,x=i.fontFamily,b=i.fontStyle,w=i.textIndent,m=void 0===w?0:w,S=i.textAlign,z=i.textStroke,I=i.verticalAlign,M=void 0===I?wt:I,B=i.backgroundColor,P=i.lineClamp,O=i.backgroundClip,T=i.textShadow,L=i.textDecoration;if(m=W(m)?m:0,this.drawView(e,i,O!=vt),g=k(g,v),t){o.save(),a+=f,l+=u;var R=n.fontHeight,F=n.descent,A=void 0===F?0:F,j=n.ascent,E=A+(void 0===j?0:j);switch(o.setFonts({fontFamily:x,fontSize:v,fontWeight:y,fontStyle:b}),o.setTextBaseline(wt),o.setTextAlign(S),O?this.setBackground(B,d,c,a,l):o.setFillStyle(p),S){case St:break;case zt:a+=.5*d;break;case It:a+=d}var H=n.lines*g,C=Math.ceil((c-H)/2);switch(C<0&&(C=0),M){case bt:break;case wt:l+=C;break;case mt:l+=2*C}var D=(g-R)/2,Y=g/2,$=function(t){var e=o.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,r=e.actualBoundingBoxAscent;return M==bt?{fix:E?void 0===r?0:r:Y-D/2,lineY:E?0:D-D/2}:M==wt?{fix:E?Y+n/4:Y,lineY:E?0:D}:M==mt?{fix:E?g-n:Y+D/2,lineY:E?2*D:D+D/2}:{fix:0,height:0,lineY:0}},U=function(t,e,i){var r=t;switch(S){case St:r+=i;break;case zt:r=(t-=i/2)+i;break;case It:r=t,t-=i}if(L){o.setLineWidth(v/13),o.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(L)&&(o.moveTo(t,e+n.fontHeight+s),o.lineTo(r,e+n.fontHeight+s)),/\boverline\b/.test(L)&&(o.moveTo(t,e-s),o.lineTo(r,e-s)),/\bline-through\b/.test(L)&&(o.moveTo(t,e+.5*n.fontHeight),o.lineTo(r,e+.5*n.fontHeight)),o.closePath(),o.setStrokeStyle(p),o.stroke()}},N=function(t,e,i){var n=function(){o.setLineWidth(z.width),o.setStrokeStyle(z.color),o.strokeText(t,e,i)},s="outset";z&&z.type!==s?(o.save(),r.setShadow({boxShadow:T}),o.fillText(t,e,i),o.restore(),n()):z&&z.type==s?(o.save(),r.setShadow({boxShadow:T}),n(),o.restore(),o.save(),o.fillText(t,e,i),o.restore()):(r.setShadow({boxShadow:T}),o.fillText(t,e,i))};if(!n.widths||1==n.widths.length&&n.widths[0].total+m<=h.width){var X=$(t),_=X.fix,q=void 0===_?0:_,G=X.lineY;return N(t,a+m,l+q),U(a+m,l+G,n&&n.widths&&n.widths[0].total||n.text),l+=g,o.restore(),void this.setBorder(e,i)}for(var V=l,J=a,Q="",Z=0,K=o.measureText("...").width,tt=n.widths,et=0;eth.width){Z>=P&&(Q+="…"),Z++,nt=0;var lt=$(Q);q=lt.fix,G=lt.lineY;N(Q,J,l+q),U(J,l+G,nt),l+=g,Q=""}else if(rt==it.length-1){et!=tt.length-1&&Z==P&&K+ntV+c||Z>P)break}}o.restore()}},r.prototype.source=function(t){return e(this,void 0,void 0,(function(){var e,n,r,o,s=this;return i(this,(function(i){switch(i.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(!t.type)for(n in t.type=xt,t.styles=t.styles||t.css||{},t)["views","children","type","css","styles"].includes(n)||(t.styles[n]=t[n],delete t[n]);return t.styles.boxSizing||(t.styles.boxSizing="border-box"),[4,this.create(t)];case 1:return(r=i.sent())?(o=r.layout()||{},this.size=o,this.node=r,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),this.performance&&console.log("布局用时:"+(+new Date-e)+"ms"),[2,this.size]):[2,console.warn("no node")]}}))}))},r.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},r.prototype.create=function(n,r){return e(this,void 0,void 0,(function(){function e(i,n,r){void 0===n&&(n={}),void 0===r&&(r=!0);var o=[];return i.forEach((function(i){var s=i.styles,h=void 0===s?{}:s,a=i.children,l=void 0===a?[]:a,d=i.text,c=void 0===d?"":d,f=i.type,u=void 0===f?"":f,p={};p=t(r?t({},n):{},h);var g={},v={},y={};Object.keys(p).map((function(t){if(t.includes("padding")||t.includes("margin")){var e=V(t,p[t]);Object.keys(e).map((function(t){t.includes("Left")?v[t]=e[t]:t.includes("Right")?y[t]=e[t]:g[t]=e[t]}))}}));if(p.textIndent&&(v.textIndent=p.textIndent,delete n.textIndent),""!==c){var x=Array.from(c);x.forEach((function(t,e){var i=Object.assign({},p,g);0===e?Object.assign(i,v):e==x.length-1&&Object.assign(i,y),delete i.padding,delete i.margin,o.push({type:"text",text:t,styles:i})}))}if(u==gt||u==yt)o.push(i);else if("block"===h.display&&l.length>0){var b=e(l,p,!1);i.children=b,i.flattened=!0,o.push(i)}else if(l.length>0){b=e(l,p,r);o=o.concat(b)}})),o}var o,s,h,a,l,d,c,f,u,p,g,v,y,b,w,m,S,z,I,M,B;return i(this,(function(i){switch(i.label){case 0:if(!n)return[2];if(n.styles||(n.styles=n.css||{}),o=n.type,s=o==gt,h=[vt,yt].includes(o),a="textBox"==o,l=n.styles||{},d=l.backgroundImage,c=l.display,s&&!n.src&&!n.url)return[2];if(c==x)return[2];if(h||a){if(f=n.children,!n.text&&(!f||f&&!f.length))return[2];f&&f.length&&!n.flattened&&(u=e(n.children),n.type="view",n.children=u)}if(!(s||n.type==xt&&d))return[3,4];p=s?n.src:"",g=/url\(['"]?(.*?)['"]?\)/.exec(d),d&&g&&g[1]&&(p=g[1]||""),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.getImageInfo(p)];case 2:return v=i.sent(),y=v.width,b=v.height,!(w=v.path)&&s?[2]:(w&&(n.attributes=Object.assign(n.attributes||{},{width:y,height:b,path:w,src:w,naturalSrc:p})),[3,4]);case 3:return m=i.sent(),n.type!=xt?[2]:(this.lifecycle("onEffectFail",t(t({},m),{src:p})),[3,4]);case 4:if(this.count+=1,S=new pt(n,r,this.root,this.ctx),!(z=n.views||n.children))return[3,8];I=0,i.label=5;case 5:return I /^data:image\/(\w+);base64/.test(path); +export function sleep(delay) { + return new Promise(resolve => setTimeout(resolve, delay)) +} +let {platform, SDKVersion} = uni.getSystemInfoSync() +export const isPC = /windows|mac/.test(platform) +// 缓存图片 +let cache = {} +export function isNumber(value) { + return /^-?\d+(\.\d+)?$/.test(value); +} +export function toPx(value, baseSize, isDecimal = false) { + // 如果是数字 + if (typeof value === 'number') { + return value + } + // 如果是字符串数字 + if (isNumber(value)) { + return value * 1 + } + // 如果有单位 + if (typeof value === 'string') { + const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g + const results = reg.exec(value); + if (!value || !results) { + return 0; + } + const unit = results[3]; + value = parseFloat(value); + let res = 0; + if (unit === 'rpx') { + res = uni.upx2px(value); + } else if (unit === 'px') { + res = value * 1; + } else if (unit === '%') { + res = value * toPx(baseSize) / 100; + } else if (unit === 'em') { + res = value * toPx(baseSize || 14); + } + return isDecimal ? res.toFixed(2) * 1 : Math.round(res); + } + return 0 +} + +// 计算版本 +export function compareVersion(v1, v2) { + v1 = v1.split('.') + v2 = v2.split('.') + const len = Math.max(v1.length, v2.length) + while (v1.length < len) { + v1.push('0') + } + while (v2.length < len) { + v2.push('0') + } + for (let i = 0; i < len; i++) { + const num1 = parseInt(v1[i], 10) + const num2 = parseInt(v2[i], 10) + + if (num1 > num2) { + return 1 + } else if (num1 < num2) { + return -1 + } + } + return 0 +} + +function gte(version) { + // #ifdef MP-ALIPAY + SDKVersion = my.SDKVersion + // #endif + return compareVersion(SDKVersion, version) >= 0; +} +export function canIUseCanvas2d() { + // #ifdef MP-WEIXIN + return gte('2.9.2'); + // #endif + // #ifdef MP-ALIPAY + return gte('2.7.15'); + // #endif + // #ifdef MP-TOUTIAO + return gte('1.78.0'); + // #endif + return false +} + +// #ifdef MP +export const prefix = () => { + // #ifdef MP-TOUTIAO + return tt + // #endif + // #ifdef MP-WEIXIN + return wx + // #endif + // #ifdef MP-BAIDU + return swan + // #endif + // #ifdef MP-ALIPAY + return my + // #endif + // #ifdef MP-QQ + return qq + // #endif + // #ifdef MP-360 + return qh + // #endif +} +// #endif + + + +/** + * base64转路径 + * @param {Object} base64 + */ +export function base64ToPath(base64) { + const [, format] = /^data:image\/(\w+);base64,/.exec(base64) || []; + + return new Promise((resolve, reject) => { + // #ifdef MP + const fs = uni.getFileSystemManager() + //自定义文件名 + if (!format) { + reject(new Error('ERROR_BASE64SRC_PARSE')) + } + const time = new Date().getTime(); + let pre = prefix() + // #ifdef MP-TOUTIAO + const filePath = `${pre.getEnvInfoSync().common.USER_DATA_PATH}/${time}.${format}` + // #endif + // #ifndef MP-TOUTIAO + const filePath = `${pre.env.USER_DATA_PATH}/${time}.${format}` + // #endif + fs.writeFile({ + filePath, + data: base64.split(',')[1], + encoding: 'base64', + success() { + resolve(filePath) + }, + fail(err) { + console.error(err) + reject(err) + } + }) + // #endif + + // #ifdef H5 + // mime类型 + let mimeString = base64.split(',')[0].split(':')[1].split(';')[0]; + //base64 解码 + let byteString = atob(base64.split(',')[1]); + //创建缓冲数组 + let arrayBuffer = new ArrayBuffer(byteString.length); + //创建视图 + let intArray = new Uint8Array(arrayBuffer); + for (let i = 0; i < byteString.length; i++) { + intArray[i] = byteString.charCodeAt(i); + } + resolve(URL.createObjectURL(new Blob([intArray], { + type: mimeString + }))) + // #endif + + // #ifdef APP-PLUS + const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) + bitmap.loadBase64Data(base64, () => { + if (!format) { + reject(new Error('ERROR_BASE64SRC_PARSE')) + } + const time = new Date().getTime(); + const filePath = `_doc/uniapp_temp/${time}.${format}` + bitmap.save(filePath, {}, + () => { + bitmap.clear() + resolve(filePath) + }, + (error) => { + bitmap.clear() + reject(error) + }) + }, (error) => { + bitmap.clear() + reject(error) + }) + // #endif + }) +} + +/** + * 路径转base64 + * @param {Object} string + */ +export function pathToBase64(path) { + if (/^data:/.test(path)) return path + return new Promise((resolve, reject) => { + // #ifdef H5 + let image = new Image(); + image.setAttribute("crossOrigin", 'Anonymous'); + image.onload = function() { + let canvas = document.createElement('canvas'); + canvas.width = this.naturalWidth; + canvas.height = this.naturalHeight; + canvas.getContext('2d').drawImage(image, 0, 0); + let result = canvas.toDataURL('image/png') + resolve(result); + canvas.height = canvas.width = 0 + } + image.src = path + '?v=' + Math.random() + image.onerror = (error) => { + reject(error); + }; + // #endif + + // #ifdef MP + if (uni.canIUse('getFileSystemManager')) { + uni.getFileSystemManager().readFile({ + filePath: path, + encoding: 'base64', + success: (res) => { + resolve('data:image/png;base64,' + res.data) + }, + fail: (error) => { + console.error({error, path}) + reject(error) + } + }) + } + // #endif + + // #ifdef APP-PLUS + plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => { + entry.file((file) => { + const fileReader = new plus.io.FileReader() + fileReader.onload = (data) => { + resolve(data.target.result) + } + fileReader.onerror = (error) => { + reject(error) + } + fileReader.readAsDataURL(file) + }, reject) + }, reject) + // #endif + }) +} + + + +export function getImageInfo(path, useCORS) { + const isCanvas2D = this && this.canvas && this.canvas.createImage + return new Promise(async (resolve, reject) => { + // let time = +new Date() + let src = path.replace(/^@\//,'/') + if (cache[path] && cache[path].errMsg) { + resolve(cache[path]) + } else { + try { + // #ifdef MP || APP-PLUS + if (isBase64(path) && (isCanvas2D ? isPC : true)) { + src = await base64ToPath(path) + } + // #endif + // #ifdef H5 + if(useCORS) { + src = await pathToBase64(path) + } + // #endif + } catch (error) { + reject({ + ...error, + src + }) + } + // #ifndef APP-NVUE + if(isCanvas2D && !isPC) { + const img = this.canvas.createImage() + img.onload = function() { + const image = { + path: img, + width: img.width, + height: img.height + } + cache[path] = image + resolve(cache[path]) + } + img.onerror = function(err) { + reject({err,path}) + } + img.src = src + return + } + // #endif + uni.getImageInfo({ + src, + success: (image) => { + const localReg = /^\.|^\/(?=[^\/])/; + // #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO + image.path = localReg.test(src) ? `/${image.path}` : image.path; + // #endif + if(isCanvas2D) { + const img = this.canvas.createImage() + img.onload = function() { + image.path = img + cache[path] = image + resolve(cache[path]) + } + img.onerror = function(err) { + reject({err,path}) + } + img.src = src + return + } + // #ifdef APP-PLUS + // console.log('getImageInfo', +new Date() - time) + // ios 比较严格 可能需要设置跨域 + if(uni.getSystemInfoSync().osName == 'ios' && useCORS) { + pathToBase64(image.path).then(base64 => { + image.path = base64 + cache[path] = image + resolve(cache[path]) + }).catch(err => { + console.error({err, path}) + reject({err,path}) + }) + return + } + // #endif + cache[path] = image + resolve(cache[path]) + }, + fail(err) { + console.error({err, path}) + reject({err,path}) + } + }) + } + }) +} + + +// #ifdef APP-PLUS +const getLocalFilePath = (path) => { + if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path + .indexOf('_downloads') === 0) { + return path + } + if (path.indexOf('file://') === 0) { + return path + } + if (path.indexOf('/storage/emulated/0/') === 0) { + return path + } + if (path.indexOf('/') === 0) { + const localFilePath = plus.io.convertAbsoluteFileSystem(path) + if (localFilePath !== path) { + return localFilePath + } else { + path = path.substr(1) + } + } + return '_www/' + path +} +// #endif + + diff --git a/src/uni_modules/lime-painter/components/lime-painter/lime-painter.vue b/src/uni_modules/lime-painter/components/lime-painter/lime-painter.vue new file mode 100644 index 0000000..f3b614b --- /dev/null +++ b/src/uni_modules/lime-painter/components/lime-painter/lime-painter.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/uni_modules/lime-painter/hybrid/html/index.html b/src/uni_modules/lime-painter/hybrid/html/index.html new file mode 100644 index 0000000..fdf884e --- /dev/null +++ b/src/uni_modules/lime-painter/hybrid/html/index.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/uni_modules/lime-painter/hybrid/html/painter.js b/src/uni_modules/lime-painter/hybrid/html/painter.js new file mode 100644 index 0000000..fc3e2c2 --- /dev/null +++ b/src/uni_modules/lime-painter/hybrid/html/painter.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Painter={})}(this,(function(t){"use strict";var e=function(){return e=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+r,x1:Math.round(e/2)+n,y1:r};if(180===s)return{x0:Math.round(e/2)+n,y0:r,x1:Math.round(e/2)+n,y1:i+r};if(90===s)return{x0:n,y0:Math.round(i/2)+r,x1:e+n,y1:Math.round(i/2)+r};if(270===s)return{x0:e+n,y0:Math.round(i/2)+r,x1:n,y1:Math.round(i/2)+r};var a=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===a)return{x0:n,y0:i+r,x1:e+n,y1:r};if(s===180-a)return{x0:n,y0:r,x1:e+n,y1:i+r};if(s===180+a)return{x0:e+n,y0:r,x1:n,y1:i+r};if(s===360-a)return{x0:e+n,y0:i+r,x1:n,y1:r};var h=0,c=0,f=0,d=0;if(s180-a&&s<180||s>180&&s<180+a||s>360-a){var l=s*Math.PI/180,u=s360-a?i/2:-i/2,p=Math.tan(l)*u,g=s180-a&&s<180?e/2-p:-e/2-p;h=-(f=p+(v=Math.pow(Math.sin(l),2)*g)),c=-(d=u+v/Math.tan(l))}if(s>a&&s<90||s>90&&s<90+a||s>180+a&&s<270||s>270&&s<360-a){var v;l=(90-s)*Math.PI/180,p=s>a&&s<90||s>90&&s<90+a?e/2:-e/2,u=Math.tan(l)*p,g=s>a&&s<90||s>270&&s<360-a?i/2-u:-i/2-u;h=-(f=p+(v=Math.pow(Math.sin(l),2)*g)/Math.tan(l)),c=-(d=u+v)}return h=Math.round(h+e/2)+n,c=Math.round(i/2-c)+r,f=Math.round(f+e/2)+n,d=Math.round(i/2-d)+r,{x0:h,y0:c,x1:f,y1:d}}(r,t,e,i,n),a=s.x0,h=s.y0,c=s.x1,f=s.y1,d=o.createLinearGradient(a,h,c,f),l=r.match(/linear-gradient\((.+)\)/)[1],u=X(l.substring(l.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Z(t){return"number"==typeof t}function K(t){return"auto"===t||null===t}function et(t){return/%$/.test(t)}var it=I,nt=z,rt=S,ot=M,st=B,at=O,ht=T;function ct(t){return t.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()}))}function ft(t,e){var i,n,r=function(t){var e=t.match(/([a-z]+)/)[1];return[e,ct(t.split(e)[1])]}(t),o=r[0],s=r[1],a=e.split(" ");if(s)return(i={})[o+s]=e,i;if(a.length&&!s){var h=a[0],c=a[1],f=a[2],l=a[3];return(n={})[o+d[0]]=h,n[o+d[1]]=c||h,n[o+d[2]]=f||h,n[o+d[3]]=l||c||h,n}}function dt(t){t=t.trim();for(var e=new Array,i="+",n="",r=t.length,o=0;o0;)"("===t[a+=1]&&(s+=1),")"===t[a]&&(s-=1);n="".concat(dt(t.slice(o+1,a))),o=a}if(isNaN(Number(t[o]))&&"."!==t[o]||o===r-1){var h=parseFloat(n);switch(i){case"+":e.push(h);break;case"-":e.push(-h);break;case"*":e.push(e.pop()*h);break;case"/":e.push(e.pop()/h)}i=t[o],n=""}}for(var c=0;e.length;)c+=e.pop();return c}var lt,ut=0,pt=function(){function t(){q(this,"elements",[]),q(this,"afterElements",[]),q(this,"beforeElements",[]),q(this,"ids",[]),q(this,"width",0),q(this,"height",0),q(this,"top",0),q(this,"left",0),q(this,"pre",null),q(this,"offsetX",0),q(this,"offsetY",0),ut++,this.id=ut}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){if(!this.ids.includes(t.id)){this.ids.push(t.id),this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()}},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.includes(t.id)||(this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t))},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this.container[this.key.lineMaxHeight]=this[this.key.height]=i),this[this.key.width]+=this.getWidth(t.offsetSize);var n=Math.min(this.getWidth(this),!this.getWidth(this.container.contentSize)&&1/0);(this.container[this.key.lineMaxWidth]||0)1)return 0;var e=t.style.alignSelf,i=this.getHeight(this.container.contentSize),n=i-this.getHeight(t.offsetSize);return e===f?n:e===h?n/2:"stretch"===e?(n&&t.name==S&&(t.style[this.key.width]=this.getWidth(t.offsetSize),t.style[this.key.height]=i,delete t.line,delete t.lines,t.getBoxWidthHeight()),0):0},r.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var n=i.elements[e-1],r=i.getOffsetY(t);t.style[i.key.top]=i[i.key.top]+r,t.style[i.key.left]=n?n.offsetSize[i.key.left]+i.getWidth(n.offsetSize):i[i.key.left],t.getBoxPosition()}))},n}(pt),xt=I,wt=z,mt=S,St=k,zt=B,It=P,Mt=O,kt=T,Bt=0,Wt={left:null,top:null,width:null,height:null},Pt=new Map,Ot=function(){function t(t,e,i,n){var r=this;q(this,"id",Bt++),q(this,"style",{left:null,top:null,width:null,height:null}),q(this,"computedStyle",{}),q(this,"originStyle",{}),q(this,"children",{}),q(this,"layoutBox",G({},Wt)),q(this,"contentSize",G({},Wt)),q(this,"clientSize",G({},Wt)),q(this,"borderSize",G({},Wt)),q(this,"offsetSize",G({},Wt)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.type||t.name,this.attributes=this.getAttributes(t);var o=function(t,e){var i,n=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],r=t.type,o=void 0===r?rt:r,s=t.styles,h=void 0===s?{}:s,c=(e||{}).computedStyle,f=Object.assign({},F);if([nt,it,ot].includes(o)&&!h.display&&(f.display=st),c)for(var l=0;l=0&&f<0,Y=h>=0&&l<0;return i==y[0]&&(this[i].left=t.left+s+g+j+(D?2*-f:0),this[i].top=t.top+h+b+W+(Y?2*-l:0),this[i].width=t.width+(this[i].widthAdd?0:C),this[i].height=t.height+(this[i].heightAdd?0:H),this[i].widthAdd=C,this[i].heightAdd=H),i==y[1]&&(this[i].left=t.left+s+j+(D<0?-f:0),this[i].top=t.top+h+W+(Y?-l:0),this[i].width=t.width+g+w,this[i].height=t.height+b+S),i==y[2]&&(this[i].left=t.left+s+j/2+(D<0?-f:0),this[i].top=t.top+h+W/2+(Y?-l:0),this[i].width=t.width+g+w+j/2+F/2,this[i].height=t.height+b+S+T/2+W/2),i==y[3]&&(this[i].left=t.left+(D<0?-f:0),this[i].top=t.top+(Y?-l:0),this[i].width=t.width+g+w+j+F+s+f,this[i].height=t.height+b+S+T+W+l+h),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var r=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var o=e||{},s=o.border,a=(s=void 0===s?{}:s).borderWidth,h=void 0===a?0:a,c=o.borderTop,f=(c=void 0===c?{}:c).borderTopWidth,d=void 0===f?h:f,l=o.borderBottom,u=(l=void 0===l?{}:l).borderBottomWidth,p=void 0===u?h:u,g=o.borderRight,v=(g=void 0===g?{}:g).borderRightWidth,b=void 0===v?h:v,x=o.borderLeft,w=(x=void 0===x?{}:x).borderLeftWidth,m=void 0===w?h:w,S=o.padding,z=(S=void 0===S?{}:S).paddingTop,I=void 0===z?0:z,M=S.paddingRight,k=void 0===M?0:M,B=S.paddingBottom,W=void 0===B?0:B,P=S.paddingLeft,O=void 0===P?0:P;i||(t.width-=O+k+b+m),1!==i||n||(t.height-=I+W+d+p)}this.layoutBox&&(y.forEach((function(i){return r.layoutBox[i]=r.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,r=void 0===n?0:n,o=t.top,s=void 0===o?0:o,a=G({},this.contentSize,{left:r,top:s}),h=this.contentSize.top-this.offsetSize.top,c=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var f,d=Q(this.root.fixedLine.elements);!(f=d()).done;){var l=f.value;l.setPosition(l,this.root.offsetSize),l.getBoxPosition()}}if(e)for(var u,p=Q(e.elements);!(u=p()).done;){var g=u.value,v=G({},this.borderSize,{left:r,top:s});g.setPosition(g,v);var y=this.borderSize.top-this.offsetSize.top,b=this.borderSize.left-this.offsetSize.left;g.style.left+=r+b,g.style.top+=s+y,g.getBoxPosition()}if(i)for(var x,w=Q(i);!(x=w()).done;){x.value.layout(a.top+h,a.left+c)}return this.layoutBoxUpdate(a,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==St},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==It},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==It)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==zt},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,r=i.actualBoundingBoxAscent,o=i.actualBoundingBoxDescent;return{ascent:r,descent:o,width:n,fontHeight:r+o||.7*e+1}},e.getParentSize=function(t,e){if(void 0===t&&(t=this),void 0===e&&(e=!1),t&&t.parent){if(t.parent.contentSize.width)return t.parent.contentSize;if(e)return this.getParentSize(t.parent,e)}return null},e.getBoxWidthHeight=function(){var t=this,e=this.name,i=this.computedStyle,n=this.attributes,r=this.parent,o=void 0===r?{}:r,s=this.ctx,a=this.getChildren(),h=i.left,c=void 0===h?0:h,f=i.top,d=void 0===f?0:f,l=i.bottom,u=i.right,p=i.width,g=void 0===p?0:p,v=i.minWidth,y=i.maxWidth,b=i.minHeight,x=i.maxHeight,w=i.height,m=void 0===w?0:w,S=i.fontSize,z=i.fontWeight,I=i.fontFamily,M=i.fontStyle,k=i.position;i.textIndent;var B=i.lineClamp,W=i.lineHeight,P=i.padding,O=void 0===P?{}:P,T=i.margin,L=void 0===T?{}:T,R=i.border,F=(R=void 0===R?{}:R).borderWidth,A=void 0===F?0:F,E=i.borderRight,j=(E=void 0===E?{}:E).borderRightWidth,C=void 0===j?A:j,H=i.borderLeft,D=(H=void 0===H?{}:H).borderLeftWidth,Y=void 0===D?A:D,U=o.contentSize&&o.contentSize.width,N=o.contentSize&&o.contentSize.height;if(et(g)&&U&&(g=$(g,U)),et(g)&&!U&&(g=null),et(m)&&N&&(m=$(m,N)),et(m)&&!N&&(m=null),et(v)&&U&&(v=$(v,U)),et(y)&&U&&(y=$(y,U)),et(b)&&N&&(b=$(b,N)),et(x)&&N&&(x=$(x,N)),i.padding&&U)for(var _ in i.padding)Object.hasOwnProperty.call(O,_)&&(O[_]=$(O[_],U));var X=O.paddingRight,q=void 0===X?0:X,G=O.paddingLeft,V=void 0===G?0:G;if(i.margin&&[L.marginLeft,L.marginRight].includes("auto"))if(g){var J=U&&U-g-q-V-Y-C||0;L.marginLeft==L.marginRight?L.marginLeft=L.marginRight=J/2:K(L.marginLeft)?L.marginLeft=J:L.marginRight=J}else L.marginLeft=L.marginRight=0;var Q=L.marginRight,Z=void 0===Q?0:Q,tt=L.marginLeft,it={width:g,height:m,left:0,top:0},nt=V+q+Y+C+(void 0===tt?0:tt)+Z;if(this.offsetWidth=nt,e==wt&&!this.attributes.widths){var rt=n.text||"";s.save(),s.setFonts({fontFamily:I,fontSize:S,fontWeight:z,fontStyle:M}),rt.length,"\n"==rt&&(rt="",this.isBr=!0),(""+rt).split("\n").map((function(e){var i=Array.from(e).map((function(e){var i=""+(/^[\u4e00-\u9fa5]+$/.test(e)?"cn":e)+I+S+z+M,n=Pt.get(i);if(n)return{width:n,text:e};var r=t.measureText(e,S).width;return Pt.set(i,r),{width:r,text:e}})),n=t.measureText(e,S),r=n.fontHeight,o=n.ascent,s=n.descent;t.attributes.fontHeight=r,t.attributes.ascent=o,t.attributes.descent=s,t.attributes.widths||(t.attributes.widths=[]),t.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e.width}),0)})})),s.restore()}if(e==xt&&null==g){var ot=n.width,st=n.height;it.width=this.contrastSize(Math.round(ot*m/st)||0,v,y),this.layoutBoxUpdate(it,i,0)}if(e==wt&&null==g){var at=this.attributes.widths,ht=Math.max.apply(Math,at.map((function(t){return t.total})));if(o&&U>0&&(ht>U||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)ht=U;it.width=this.contrastSize(ht,v,y),this.layoutBoxUpdate(it,i,0)}if(e==wt&&(o.style.flex||!this.attributes.lines)){var ct=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e.width>it.width?(ct++,e.width):t+e.width}),0)})),ct=B&&ct>B?B:ct,this.attributes.lines=ct}if(e==xt&&null==m){var ft=n.width,dt=n.height;n.text,it.height=this.contrastSize($(it.width*dt/ft)||0,b,x),this.layoutBoxUpdate(it,i,1)}e==wt&&null==m&&(W=$(W,S),it.height=this.contrastSize($(this.attributes.lines*W),b,x),this.layoutBoxUpdate(it,i,1,!0)),!g&&o&&o.children&&U&&(!this.isFlex(o)||o.isFlexCalc)&&([mt,wt].includes(e)&&this.isFlex()||e==mt&&this.isBlock(this)&&this.isInFlow())&&(it.width=this.contrastSize(U-(o.isFlexCalc?0:nt),v,y),this.layoutBoxUpdate(it,i)),g&&!et(g)&&(it.width=this.contrastSize(g,v,y),this.layoutBoxUpdate(it,i,0)),m&&!et(m)&&(it.height=this.contrastSize(it.height,b,x),this.layoutBoxUpdate(it,i,1));var lt=0;if(a.length){var ut=null,gt=!1;a.forEach((function(e,n){e.getBoxWidthHeight();var r=a[n+1];if(r&&r.isInFlow()&&(e.next=r),!t.line||!t.line.ids.includes(e.id))if(e.isInFlow()&&!e.inFlexBox()){var o=t.getBoxState(ut,e);if(e.isBr)return gt=!0;t.line&&t.line.canIEnter(e)&&!o&&!gt?t.line.add(e):(gt=!1,(new pt).bind(e)),ut=e}else e.inFlexBox()?t.line&&(t.line.canIEnter(e)||"nowrap"==i.flexWrap)?t.line.add(e):(new bt).bind(e):e.isFixed?t.root.fixedLine?t.root.fixedLine.fixedAdd(e):(new pt).fixedBind(e):t.fixedLine?t.fixedLine.fixedAdd(e):(new pt).fixedBind(e,1)})),this.lines&&(lt=this.lines.reduce((function(t,e){return t+e.height}),0))}var vt=0,yt=0;if(!g&&(this.isAbsolute||this.isFixed)&&U){var St=k==Mt?U:this.root.width,zt=St-(et(c)?$(c,St):c)-(et(u)?$(u,St):u);vt=i.left?zt:this.lineMaxWidth}if(!m&&(null!=d?d:this.isAbsolute||this.isFixed&&N)){var It=k==Mt?N:this.root.height,kt=It-(et(d)?$(d,It):d)-(et(l)?$(l,It):l);yt=i.top?kt:0}if(g&&!et(g)||it.width||(it.width=vt||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?U||o.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,v,y),this.layoutBoxUpdate(it,i,0)),m||!lt&&!yt||(it.height=yt||this.contrastSize(lt,b,x),this.layoutBoxUpdate(it,i)),i.borderRadius&&this.borderSize&&this.borderSize.width)for(var _ in i.borderRadius)Object.hasOwnProperty.call(i.borderRadius,_)&&(i.borderRadius[_]=$(i.borderRadius[_],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.root.contentSize=this.contentSize,this.getBoxPosition(),this.offsetSize},t}(),Tt=function(){var t,e,i,n,r,o,s=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],a=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],h=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],c=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],f=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],d=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],l=[],u=[],p=[],g=[],v=[],y=2;function b(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,g[i+=t]=1}function x(t,i){var n;for(p[t+e*i]=1,n=-2;n<2;n++)p[t+n+e*(i-2)]=1,p[t-2+e*(i+n+1)]=1,p[t+2+e*(i+n)]=1,p[t+n+1+e*(i+2)]=1;for(n=0;n<2;n++)b(t-1,i+n),b(t+1,i-n),b(t-n,i-1),b(t+n,i+1)}function w(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var m=[];function S(t,e,i,n){var r,o,s;for(r=0;re&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,g[i+=t]}function I(t){var i,n,r,o;switch(t){case 0:for(n=0;n>1&1,i=0;i=5&&(i+=3+v[e]-5);for(e=3;et||3*v[e-3]>=4*v[e]||3*v[e+3]>=4*v[e])&&(i+=40);return i}function k(){var t,i,n,r,o,s=0,a=0;for(i=0;ie*e;)h-=e*e,c++;for(s+=10*c,t=0;t1)for(P=s[t],B=e-7;;){for(M=e-7;M>P-3&&(x(M,B),!(M6)for(P=a[t-7],W=17,M=0;M<6;M++)for(B=0;B<3;B++,W--)1&(W>11?t>>W-12:P>>W)?(p[5-M+e*(2-B+e-11)]=1,p[2-B+e-11+e*(5-M)]=1):(b(5-M,2-B+e-11),b(2-B+e-11,5-M));for(B=0;B=(M=r*(i+n)+n)-2&&(O=M-2,t>9&&O--),T=O,t>9){for(l[T+2]=0,l[T+3]=0;T--;)P=l[T],l[T+3]|=255&P<<4,l[T+2]=P>>4;l[2]|=255&O<<4,l[1]=O>>4,l[0]=64|O>>12}else{for(l[T+1]=0,l[T+2]=0;T--;)P=l[T],l[T+2]|=255&P<<4,l[T+1]=P>>4;l[1]|=255&O<<4,l[0]=64|O>>4}for(T=O+3-(t<10);T0;L--)m[L]=m[L]?m[L-1]^d[w(f[m[L]]+T)]:m[L-1];m[0]=d[w(f[m[0]]+T)]}for(T=0;T<=o;T++)m[T]=f[m[T]];for(W=M,B=0,T=0;T>=1)1&B&&(p[e-1-W+8*e]=1,W<6?p[8+e*W]=1:p[8+e*(W+1)]=1);for(W=0;W<7;W++,B>>=1)1&B&&(p[8+e*(e-7+W)]=1,W?p[6-W+8*e]=1:p[7+8*e]=1);return p}(v)},utf16to8:function(t){var e,i,n,r;for(e="",n=t.length,i=0;i=1&&r<=127?e+=t.charAt(i):r>2047?(e+=String.fromCharCode(224|r>>12&15),e+=String.fromCharCode(128|r>>6&63),e+=String.fromCharCode(128|r>>0&63)):(e+=String.fromCharCode(192|r>>6&31),e+=String.fromCharCode(128|r>>0&63));return e},draw:function(t,i,n,r,o){i.drawView(n,r);var s=i.ctx,a=n.contentSize,h=a.width,c=a.height,f=a.left,d=a.top;r.borderRadius,r.backgroundColor;var l=r.color,u=void 0===l?"#000000":l;r.border,n.contentSize.left,n.borderSize.left,n.contentSize.top,n.borderSize.top;if(y=o||y,s){s.save(),i.setOpacity(r),i.setTransform(n,r);var p=Math.min(h,c);t=this.utf16to8(t);var g=this.getFrame(t),v=p/e;s.setFillStyle(u);for(var b=0;b=s||n==c&&o=s)&&(a=e.width/i.width);var f=i.width*a,d=i.height*a,l=r||[],u=l[0],p=l[1],g=Y(u)?$(u,e.width):(e.width-f)*(U(u)?$(u,1):{left:0,center:.5,right:1}[u||"center"]),v=Y(p)?$(p,e.height):(e.height-d)*(U(p)?$(p,1):{top:0,center:.5,bottom:1}[p||"center"]),y=function(t,e){return[(t-g)/a,(e-v)/a]},b=y(0,0),x=b[0],w=b[1],m=y(e.width,e.height),S=m[0],z=m[1],I=Math.max,M=Math.min;return{sx:I(x,0),sy:I(w,0),sw:M(S-x,i.width),sh:M(z-w,i.height),dx:I(g,0),dy:I(v,0),dw:M(f,e.width),dh:M(d,e.height)}}({objectFit:u,objectPosition:v},e.contentSize,t),o=n.sx,s=n.sy,a=n.sh,h=n.sw,c=n.dx,f=n.dy,d=n.dh,l=n.dw;C==r.MP_BAIDU?i.drawImage(t.src,c+m,f+S,l,d,o,s,h,a):i.drawImage(t.src,o,s,h,a,c+m,f+S,l,d)}else i.drawImage(t.src,m,S,x,w)},k=function(){i.restore(),W.drawView(e,o,!1,!0,!1),h(1)},B=function(t){M(t),k()},B(t),[2]}))}))}))];case 1:return h.sent(),[2]}}))}))},t.prototype.drawText=function(t,e,i,n){var r=this,o=this.ctx,s=e.borderSize,a=e.contentSize,h=e.left,c=e.top,f=a.width,d=a.height,l=a.left-s.left||0,u=a.top-s.top||0,p=i.color,g=i.lineHeight,v=i.fontSize,y=i.fontWeight,b=i.fontFamily,x=i.fontStyle,w=i.textIndent,m=void 0===w?0:w,S=i.textAlign,z=i.textStroke,I=i.verticalAlign,M=void 0===I?jt:I,k=i.backgroundColor,B=i.lineClamp,W=i.backgroundClip,P=i.textShadow,O=i.textDecoration;if(m=Y(m)?m:0,this.drawView(e,i,W!=Rt),g=$(g,v),t){o.save(),h+=l,c+=u;var T=n.fontHeight,L=n.descent,R=void 0===L?0:L,F=n.ascent,A=R+(void 0===F?0:F);switch(o.setFonts({fontFamily:b,fontSize:v,fontWeight:y,fontStyle:x}),o.setTextBaseline(jt),o.setTextAlign(S),W?this.setBackground(k,f,d,h,c):o.setFillStyle(p),S){case Ht:break;case Dt:h+=.5*f;break;case Yt:h+=f}var E=n.lines*g,j=Math.ceil((d-E)/2);switch(j<0&&(j=0),M){case Et:break;case jt:c+=j;break;case Ct:c+=2*j}var C=(g-T)/2,H=g/2,D=function(t){var e=o.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,r=e.actualBoundingBoxAscent;return M==Et?{fix:A?void 0===r?0:r:H-C/2,lineY:A?0:C-C/2}:M==jt?{fix:A?H+n/4:H,lineY:A?0:C}:M==Ct?{fix:A?g-n:H+C/2,lineY:A?2*C:C+C/2}:{fix:0,height:0,lineY:0}},U=function(t,e,i){var r=t;switch(S){case Ht:r+=i;break;case Dt:r=(t-=i/2)+i;break;case Yt:r=t,t-=i}if(O){o.setLineWidth(v/13),o.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(O)&&(o.moveTo(t,e+n.fontHeight+s),o.lineTo(r,e+n.fontHeight+s)),/\boverline\b/.test(O)&&(o.moveTo(t,e-s),o.lineTo(r,e-s)),/\bline-through\b/.test(O)&&(o.moveTo(t,e+.5*n.fontHeight),o.lineTo(r,e+.5*n.fontHeight)),o.closePath(),o.setStrokeStyle(p),o.stroke()}},N=function(t,e,i){var n=function(){o.setLineWidth(z.width),o.setStrokeStyle(z.color),o.strokeText(t,e,i)},s="outset";z&&z.type!==s?(o.save(),r.setShadow({boxShadow:P}),o.fillText(t,e,i),o.restore(),n()):z&&z.type==s?(o.save(),r.setShadow({boxShadow:P}),n(),o.restore(),o.save(),o.fillText(t,e,i),o.restore()):(r.setShadow({boxShadow:P}),o.fillText(t,e,i))};if(!n.widths||1==n.widths.length&&n.widths[0].total+m<=a.width){var _=D(t),X=_.fix,q=void 0===X?0:X,G=_.lineY;return N(t,h+m,c+q),U(h+m,c+G,n&&n.widths&&n.widths[0].total||n.text),c+=g,o.restore(),void this.setBorder(e,i)}for(var V=c,J=h,Q="",Z=0,K=o.measureText("...").width,tt=n.widths,et=0;eta.width){Z>=B&&(Q+="…"),Z++,nt=0;var ct=D(Q);q=ct.fix,G=ct.lineY;N(Q,J,c+q),U(J,c+G,nt),c+=g,Q=""}else if(rt==it.length-1){et!=tt.length-1&&Z==B&&K+ntV+d||Z>B)break}}o.restore()}},t.prototype.source=function(t){return i(this,void 0,void 0,(function(){var e,i,r,o,s=this;return n(this,(function(n){switch(n.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(t.styles=t.styles||t.css||{},!t.type)for(i in t.type=At,t)["views","children","type","css","styles"].includes(i)||(t.styles[i]=t[i],delete t[i]);return t.styles.boxSizing||(t.styles.boxSizing="border-box"),[4,this.create(t)];case 1:return(r=n.sent())?(o=r.layout()||{},this.size=o,this.node=r,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),this.performance&&console.log("布局用时:"+(+new Date-e)+"ms"),[2,this.size]):[2,console.warn("no node")]}}))}))},t.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},t.prototype.create=function(t,r){return i(this,void 0,void 0,(function(){function i(t,n,r){void 0===n&&(n={}),void 0===r&&(r=!0);var o=[];return t.forEach((function(t){var s=t.styles,a=void 0===s?{}:s,h=t.css,c=void 0===h?{}:h,f=t.children,d=void 0===f?[]:f,l=t.views,u=void 0===l?[]:l,p=t.text,g=void 0===p?"":p,v=t.type,y=void 0===v?"":v;!d&&u&&(t.children=d=u);var b={};b=e(e(r?e({},n):{},a),c);var x={},w={},m={};Object.keys(b).map((function(t){if(t.includes("padding")||t.includes("margin")){var e=ft(t,b[t]);Object.keys(e).map((function(t){t.includes("Left")?w[t]=e[t]:t.includes("Right")?m[t]=e[t]:x[t]=e[t]}))}}));if(b.textIndent&&(w.textIndent=b.textIndent,delete n.textIndent),""!==g){var S=Array.from(g);S.forEach((function(t,e){var i=Object.assign({},b,x);0===e?Object.assign(i,w):e==S.length-1&&Object.assign(i,m),delete i.padding,delete i.margin,o.push({type:"text",text:t,styles:i})}))}if(y==Lt||y==Ft)o.push(t);else if("block"===a.display&&d.length>0){var z=i(d,b,!1);t.children=z,t.flattened=!0,o.push(t)}else if(d.length>0){z=i(d,b,r);o=o.concat(z)}})),o}var o,s,a,h,c,f,d,l,u,p,g,v,y,b,x,w,m,S,z,I,M,k,B,P;return n(this,(function(n){switch(n.label){case 0:if(!t)return[2];if(t.styles||(t.styles=t.css||{}),o=t.type,s=t.show,a=void 0===s||s,h=o==Lt,c=[Rt,Ft].includes(o),f="textBox"==o,d=t.styles||{},l=d.backgroundImage,u=d.display,h&&!t.src&&!t.url)return[2];if(u==W||!a)return[2];if(c||f){if(p=t.children,g=t.views,!p&&g&&(t.children=p=g),!t.text&&(!p||p&&!p.length))return[2];p&&p.length&&!t.flattened&&(v=i(t.children||t.views),t.type="view",t.children=v)}if(!(h||t.type==At&&l))return[3,4];y=h?t.src:"",b=/url\(['"]?(.*?)['"]?\)/.exec(l),l&&b&&b[1]&&(y=b[1]||""),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.getImageInfo(y)];case 2:return x=n.sent(),w=x.width,m=x.height,!(S=x.path)&&h?[2]:(S&&(t.attributes=Object.assign(t.attributes||{},{width:w,height:m,path:S,src:S,naturalSrc:y})),[3,4]);case 3:return z=n.sent(),t.type!=At?[2]:(this.lifecycle("onEffectFail",e(e({},z),{src:y})),[3,4]);case 4:if(this.count+=1,I=new Ot(t,r,this.root,this.ctx),!(M=t.children||t.views))return[3,8];k=0,n.label=5;case 5:return k0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;r("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("redirectTo",{url:encodeURI(n)})},getEnv:function(e){o()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r("postMessage",e.data||{})}},d=/uni-app/i.test(navigator.userAgent),s=/Html5Plus/i.test(navigator.userAgent),w=/complete|loaded|interactive/;var u=window.my&&navigator.userAgent.indexOf("AlipayClient")>-1;var g=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var v=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var m=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);var f=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var l=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var _=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);for(var E,b=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},h=[function(e){if(d||s)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&w.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),a},function(e){if(m)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(u){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(v)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(f)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(l)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(_)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),a}],y=0;y\s]+))?)*)\s*(\/?)>/; +var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/; +var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; // Empty Elements - HTML 5 + +var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); // Block Elements - HTML 5 +// fixed by xxx 将 ins 标签从块级名单中移除 + +var block = makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); // Inline Elements - HTML 5 + +var inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); // Elements that you can, intentionally, leave open +// (and which close themselves) + +var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); // Attributes that have their values filled in disabled="disabled" + +var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); // Special Elements (can contain anything) + +var special = makeMap('script,style'); +function HTMLParser(html, handler) { + var index; + var chars; + var match; + var stack = []; + var last = html; + + stack.last = function () { + return this[this.length - 1]; + }; + + while (html) { + chars = true; // Make sure we're not in a script or style element + + if (!stack.last() || !special[stack.last()]) { + // Comment + if (html.indexOf(''); + + if (index >= 0) { + if (handler.comment) { + handler.comment(html.substring(4, index)); + } + + html = html.substring(index + 3); + chars = false; + } // end tag + + } else if (html.indexOf(']*>'), function (all, text) { + text = text.replace(/|/g, '$1$2'); + + if (handler.chars) { + handler.chars(text); + } + + return ''; + }); + parseEndTag('', stack.last()); + } + + if (html == last) { + throw 'Parse Error: ' + html; + } + + last = html; + } // Clean up any remaining tags + + + parseEndTag(); + + function parseStartTag(tag, tagName, rest, unary) { + tagName = tagName.toLowerCase(); + if (block[tagName]) { + while (stack.last() && inline[stack.last()]) { + parseEndTag('', stack.last()); + } + } + + if (closeSelf[tagName] && stack.last() == tagName) { + parseEndTag('', tagName); + } + + unary = empty[tagName] || !!unary; + + if (!unary) { + stack.push(tagName); + } + + if (handler.start) { + var attrs = []; + rest.replace(attr, function (match, name) { + var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : ''; + attrs.push({ + name: name, + value: value, + escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') // " + + }); + }); + + if (handler.start) { + handler.start(tagName, attrs, unary); + } + } + } + + function parseEndTag(tag, tagName) { + // If no tag name is provided, clean shop + if (!tagName) { + var pos = 0; + } // Find the closest opened tag of the same type + else { + for (var pos = stack.length - 1; pos >= 0; pos--) { + if (stack[pos] == tagName) { + break; + } + } + } + + if (pos >= 0) { + // Close all the open elements, up the stack + for (var i = stack.length - 1; i >= pos; i--) { + if (handler.end) { + handler.end(stack[i]); + } + } // Remove the open elements from the stack + + + stack.length = pos; + } + } +} + +function makeMap(str) { + var obj = {}; + var items = str.split(','); + + for (var i = 0; i < items.length; i++) { + obj[items[i]] = true; + } + + return obj; +} + +function removeDOCTYPE(html) { + return html.replace(/<\?xml.*\?>\n/, '').replace(/\n/, '').replace(/\n/, ''); +} + +function parseAttrs(attrs) { + return attrs.reduce(function (pre, attr) { + var value = attr.value; + var name = attr.name; + if (pre[name]) { + pre[name] = pre[name] + " " + value; + } else { + pre[name] = value; + } + + return pre; + }, {}); +} +function convertStyleStringToJSON(styleString) { + var styles = styleString.split(";"); // 通过分号将样式字符串分割为多个样式声明 + var result = {}; + + styles.forEach(function(style) { + var styleParts = style.split(":"); // 通过冒号将样式声明分割为属性和值 + var property = styleParts[0].trim(); + var value = styleParts[1] && styleParts[1].trim(); + + if (property && value) { + result[property] = value; // 将属性和值添加到结果对象中 + } + }); + + return result; +} +function parseHtml(html) { + html = removeDOCTYPE(html); + var stacks = []; + var results = { + node: 'root', + children: [] + }; + HTMLParser(html, { + start: function start(tag, attrs, unary) { + var node = { + name: tag + }; + + if (attrs.length !== 0) { + node.attrs = parseAttrs(attrs); + node.styles = node.attrs.style ? convertStyleStringToJSON(node.attrs.style) : {} + } + + if(!node.type) { + if(inline[node.name] && node.name !== 'img' ) { + node.type = 'text'; + if(node.name == 'br') { + node.text = '\n' + } else if(node.name == 'strong'){ + node.styles.fontWeight = 'bold' + } + } else if(node.name == 'img'){ + node.type = 'image' + node.src = node.attrs.src + } else { + node.type = 'view' + if(['h1','h2','h3','h4','h5','h6'].includes(node.name)) { + node.styles.fontWeight = 'bold' + } + } + } + if (unary) { + var parent = stacks[0] || results; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } else { + stacks.unshift(node); + } + }, + end: function end(tag) { + var node = stacks.shift(); + if (node.name !== tag) console.error('invalid state: mismatch end tag'); + if (stacks.length === 0) { + results.children.push(node); + } else { + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + parent.children.push(node); + } + const isTextBox = node.children && node.children.length > 1 && node.children.every(child => { + return ['text','image'].includes(child.type) + }) + if(isTextBox) { + node.type = 'textBox' + } + }, + chars: function chars(text) { + var node = { + type: 'text', + text: text + }; + + if (stacks.length === 0) { + results.children.push(node); + } else { + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } + }, + comment: function comment(text) { + var node = { + node: 'comment', + text: text + }; + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } + }); + return results.children; +} + +export default parseHtml; \ No newline at end of file diff --git a/src/uni_modules/lime-painter/readme.md b/src/uni_modules/lime-painter/readme.md new file mode 100644 index 0000000..9cfdb6d --- /dev/null +++ b/src/uni_modules/lime-painter/readme.md @@ -0,0 +1,963 @@ +# Painter 画板 测试版 + +> uniapp 海报画板,更优雅的海报生成方案 +> [查看更多 站点 1](https://limeui.qcoon.cn/#/painter) +> [查看更多 站点 2](http://liangei.gitee.io/limeui/#/painter) +> Q 群:1169785031 + +## 平台兼容 + +| H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ 小程序 | App | +| --- | ---------- | ------------ | ---------- | ---------- | --------- | --- | +| √ | √ | √ | 未测 | √ | √ | √ | + +## 安装 +在市场导入**[海报画板](https://ext.dcloud.net.cn/plugin?id=2389)uni_modules**版本的即可,无需`import` + +## 代码演示 + +### 插件demo +- lime-painter 为 demo +- 位于 uni_modules/lime-painter/components/lime-painter +- 导入插件后直接使用可查看demo +```vue + +``` + + +### 基本用法 + +- 插件提供 JSON 及 Template 的方式绘制海报 +- 参考 css 块状流布局模拟 css schema。 +- 另外flex布局还不是成完善,请谨慎使用,普通的流布局我觉得已经够用了。 + +#### 方式一 Template + +- 提供`l-painter-view`、`l-painter-text`、`l-painter-image`、`l-painter-qrcode`四种类型组件 +- 通过 `css` 属性绘制样式,与 style 使用方式保持一致。 +```html + + //如果使用Template出现顺序错乱,可使用`template` 等所有变量完成再显示 +