From 150c590019380cf27021e574c723ec372941302c Mon Sep 17 00:00:00 2001 From: hongxilin <17663930442@163.com> Date: Tue, 18 Mar 2025 13:11:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E5=8F=B0=E5=B7=AE=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 + .env.production | 2 + README.md | 7 + package-lock.json | 1138 ++++++++++++++++++++-- package.json | 9 +- src/api/AIxiaocaishen.js | 76 +- src/assets/img/homePage/tail/voice-no-active.png | Bin 0 -> 2114 bytes src/assets/js/useAppBridge.js | 50 + src/assets/js/useProjectTracking.js | 159 +++ src/main.js | 6 +- src/router/index.js | 2 +- src/store/audio.js | 33 + src/store/chat.js | 16 + src/store/dataList.js | 188 ++-- src/store/userPessionCode.js | 2 +- src/utils/languageService.js | 2 +- src/utils/request.js | 2 +- src/views/AIchat.vue | 420 ++++++-- src/views/AIfind.vue | 53 +- src/views/Announcement.vue | 105 +- src/views/Echarts/KLine.vue | 219 +++++ src/views/homePage.vue | 251 +++-- 22 files changed, 2338 insertions(+), 404 deletions(-) create mode 100644 src/assets/img/homePage/tail/voice-no-active.png create mode 100644 src/assets/js/useAppBridge.js create mode 100644 src/assets/js/useProjectTracking.js create mode 100644 src/store/audio.js create mode 100644 src/store/chat.js create mode 100644 src/views/Echarts/KLine.vue diff --git a/.env.development b/.env.development index c87e9fd..436b0ec 100644 --- a/.env.development +++ b/.env.development @@ -7,6 +7,8 @@ VITE_PUBLIC_PATH = / #新数据接口 VITE_APP_API_BASE_URL = "http://39.101.133.168:8828/link" +#MJ API +VITE_APP_MJ_API_BASE_URL = "http://192.168.9.19:8080/api" # Whether to open mock VITE_USE_MOCK = true diff --git a/.env.production b/.env.production index 6df1690..65319d3 100644 --- a/.env.production +++ b/.env.production @@ -10,6 +10,8 @@ VITE_USE_MOCK = true #新数据接口 VITE_APP_API_BASE_URL = https://api.homilychart.com/link +#MJ API +VITE_APP_MJ_API_BASE_URL = "http://192.168.9.19:8080/api" # Whether to enable gzip or brotli compression # Optional: gzip | brotli | none # If you need multiple forms, you can use `,` to separate diff --git a/README.md b/README.md index 80d5e06..8c5e9f9 100644 --- a/README.md +++ b/README.md @@ -9,3 +9,10 @@ npm install axios npm install dayjs --save npm install element-plus --save element-plus组件库 npm install @element-plus/icons-vue +npm install pinia @pinia-plugin-persistedstate/nuxt +npm install howler +npm install marked 解析markdown 解析文本样式 +npm install katex 数学公式 解析数学公式样式 +npm install @coze/api +npm install html-to-text +npm install echarts \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3fd4a31..44d2139 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,20 @@ "version": "0.0.0", "dependencies": { "@element-plus/icons-vue": "^2.3.1", + "@pinia-plugin-persistedstate/nuxt": "^1.2.1", "@types/jszip": "^3.4.1", "@vueuse/core": "^7.5.3", "axios": "^0.24.0", "dayjs": "^1.10.7", - "echarts": "^3.8.2", + "echarts": "^3.8.5", "element-plus": "^2.9.6", "fast-glob": "^3.3.3", + "howler": "^2.2.4", + "html-to-text": "^9.0.5", + "katex": "^0.16.21", + "marked": "^15.0.7", "mitt": "^3.0.1", - "pinia": "^2.0.9", + "pinia": "^2.3.1", "pinia-plugin-persistedstate": "^1.0.3", "reset-css": "^5.0.2", "vconsole": "^3.15.1", @@ -807,6 +812,157 @@ "node": ">= 8" } }, + "node_modules/@nuxt/kit": { + "version": "3.16.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@nuxt/kit/-/kit-3.16.0.tgz", + "integrity": "sha512-yPfhk58BG6wJhELkGOTCOlkMDbZkizk3IaINcyTKm+hBKiK3SheLt7S9HStNL+qZSfH2Cf7A8sYp6M72lOIEtA==", + "license": "MIT", + "dependencies": { + "c12": "^3.0.2", + "consola": "^3.4.0", + "defu": "^6.1.4", + "destr": "^2.0.3", + "errx": "^0.1.0", + "exsolve": "^1.0.2", + "globby": "^14.1.0", + "ignore": "^7.0.3", + "jiti": "^2.4.2", + "klona": "^2.0.6", + "knitwork": "^1.2.0", + "mlly": "^1.7.4", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.1.0", + "scule": "^1.3.0", + "semver": "^7.7.1", + "std-env": "^3.8.1", + "ufo": "^1.5.4", + "unctx": "^2.4.1", + "unimport": "^4.1.2", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/kit/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nuxt/kit/node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@nuxt/kit/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nuxt/kit/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxt/kit/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pinia-plugin-persistedstate/nuxt": { + "version": "1.2.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@pinia-plugin-persistedstate/nuxt/-/nuxt-1.2.1.tgz", + "integrity": "sha512-q8s+4aQW/AjBMyeqLL48/qzBR5lcgnvvf1525ovNuKf6Wl9CsoLjPKh/5X8vNoKGwSow4gP7lVmdYPQRypgjgg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.12.2", + "defu": "^6.1.4", + "pinia-plugin-persistedstate": ">=3.2.1" + }, + "peerDependencies": { + "@pinia/nuxt": "^0.5.0" + } + }, + "node_modules/@pinia-plugin-persistedstate/nuxt/node_modules/pinia-plugin-persistedstate": { + "version": "4.2.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.2.0.tgz", + "integrity": "sha512-3buhA7ac+ssbOIx3VRCC8oHkoFwhDM9oHRCjo7nj+O8WUqnW+jRqh7eYT5eS/DNa3H28zp3dYf/nd/Vc8zj8eQ==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.14.1592", + "deep-pick-omit": "^1.2.1", + "defu": "^6.1.4", + "destr": "^2.0.3" + }, + "peerDependencies": { + "@pinia/nuxt": ">=0.9.0", + "pinia": ">=2.3.0" + }, + "peerDependenciesMeta": { + "@pinia/nuxt": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/@pinia/nuxt": { + "version": "0.5.5", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@pinia/nuxt/-/nuxt-0.5.5.tgz", + "integrity": "sha512-wjxS7YqIesh4OLK+qE3ZjhdOJ5pYZQ+VlEmZNtTwzQn1Kavei/khovx7mzXVXNA/mvSPXVhb9xBzhyS3XMURtw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@nuxt/kit": "^3.9.0", + "pinia": "^2.2.3" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + } + }, "node_modules/@popperjs/core": { "name": "@sxzz/popperjs-es", "version": "2.11.7", @@ -832,6 +988,52 @@ "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", "dev": true }, + "node_modules/@selderee/plugin-htmlparser2": { + "version": "0.11.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", + "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "selderee": "^0.11.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@selderee/plugin-htmlparser2/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1349,49 +1551,53 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.6.tgz", - "integrity": "sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.6", + "@vue/shared": "3.5.13", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.6.tgz", - "integrity": "sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.6", - "@vue/shared": "3.5.6" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.6.tgz", - "integrity": "sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.6", - "@vue/compiler-dom": "3.5.6", - "@vue/compiler-ssr": "3.5.6", - "@vue/shared": "3.5.6", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.47", + "postcss": "^8.4.48", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.6.tgz", - "integrity": "sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.6", - "@vue/shared": "3.5.6" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/devtools-api": { @@ -1465,37 +1671,54 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.6.tgz", - "integrity": "sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", "dependencies": { - "@vue/shared": "3.5.6" + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.6.tgz", - "integrity": "sha512-FpFULR6+c2lI+m1fIGONLDqPQO34jxV8g6A4wBOgne8eSRHP6PQL27+kWFIx5wNhhjkO7B4rgtsHAmWv7qKvbg==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.6", - "@vue/shared": "3.5.6" + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.6.tgz", - "integrity": "sha512-SDPseWre45G38ENH2zXRAHL1dw/rr5qp91lS4lt/nHvMr0MhsbCbihGAWLXNB/6VfFOJe2O+RBRkXU+CJF7/sw==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.6", - "@vue/runtime-core": "3.5.6", - "@vue/shared": "3.5.6", + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", "csstype": "^3.1.3" } }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, "node_modules/@vue/shared": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.6.tgz", - "integrity": "sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==" + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" }, "node_modules/@vueuse/core": { "version": "7.7.1", @@ -1614,10 +1837,10 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, + "version": "8.14.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1887,6 +2110,34 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/c12": { + "version": "3.0.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/c12/-/c12-3.0.2.tgz", + "integrity": "sha512-6Tzk1/TNeI3WBPpK0j/Ss4+gPj3PUJYbWl/MWDJBThFvwNGNkXtd7Cz8BJtD4aRwoGHtzQD0SnxamgUiBH0/Nw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.1.8", + "defu": "^6.1.4", + "dotenv": "^16.4.7", + "exsolve": "^1.0.0", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.5", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.0.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", @@ -2000,10 +2251,10 @@ } }, "node_modules/chokidar": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.0.tgz", - "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==", - "dev": true, + "version": "4.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -2014,6 +2265,15 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", @@ -2087,6 +2347,12 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmmirror.com/connect/-/connect-3.7.0.tgz", @@ -2117,6 +2383,15 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/consola": { + "version": "3.4.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/consola/-/consola-3.4.0.tgz", + "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmmirror.com/constant-case/-/constant-case-3.0.4.tgz", @@ -2210,8 +2485,9 @@ }, "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "resolved": "https://mirrors.huaweicloud.com/repository/npm/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/dayjs": { "version": "1.11.13", @@ -2241,6 +2517,21 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deep-pick-omit": { + "version": "1.2.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz", + "integrity": "sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2258,6 +2549,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", + "license": "MIT" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2315,7 +2618,6 @@ "version": "2.3.0", "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", @@ -2362,6 +2664,18 @@ "tslib": "^2.0.3" } }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2369,11 +2683,11 @@ "dev": true }, "node_modules/echarts": { - "version": "3.8.2", - "resolved": "https://registry.npmmirror.com/echarts/-/echarts-3.8.2.tgz", - "integrity": "sha512-x8P/BWBgKMTFrENQ+T1EWKFGE59ZhCITm/V7HvNKuSISNzHuC9PGkAa7XCgB2D/uBtNb3CsTXbRohoQGBL8QQw==", + "version": "3.8.5", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/echarts/-/echarts-3.8.5.tgz", + "integrity": "sha512-E+nnROMfCeiLeoT/fZyX8SE8mKzwkTjyemyoBF543oqjRtjTSKQAVDEihMXy4oC6pJS0tYGdMqCA2ATk8onyRg==", "dependencies": { - "zrender": "3.7.2" + "zrender": "3.7.4" } }, "node_modules/ee-first": { @@ -2513,6 +2827,12 @@ "errno": "cli.js" } }, + "node_modules/errx": { + "version": "0.1.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/errx/-/errx-0.1.0.tgz", + "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==", + "license": "MIT" + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", @@ -3303,6 +3623,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/exsolve": { + "version": "1.0.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/exsolve/-/exsolve-1.0.4.tgz", + "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3569,6 +3895,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", @@ -3743,6 +4086,12 @@ "tslib": "^2.0.3" } }, + "node_modules/howler": { + "version": "2.2.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/howler/-/howler-2.2.4.tgz", + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==", + "license": "MIT" + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", @@ -3755,6 +4104,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/html-to-text": { + "version": "9.0.5", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/html-to-text/-/html-to-text-9.0.5.tgz", + "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", + "license": "MIT", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.11.0", + "deepmerge": "^4.3.1", + "dom-serializer": "^2.0.0", + "htmlparser2": "^8.0.2", + "selderee": "^0.11.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/html-to-text/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -4054,6 +4481,15 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz", @@ -4159,6 +4595,31 @@ "setimmediate": "^1.0.5" } }, + "node_modules/katex": { + "version": "0.16.21", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/katex/-/katex-0.16.21.tgz", + "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", @@ -4168,6 +4629,30 @@ "json-buffer": "3.0.1" } }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.2.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/knitwork/-/knitwork-1.2.0.tgz", + "integrity": "sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==", + "license": "MIT" + }, + "node_modules/leac": { + "version": "0.6.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/less": { "version": "4.2.0", "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz", @@ -4595,9 +5080,10 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.17", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -4626,6 +5112,18 @@ "semver": "bin/semver" } }, + "node_modules/marked": { + "version": "15.0.7", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/marked/-/marked-15.0.7.tgz", + "integrity": "sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", @@ -4697,6 +5195,29 @@ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "license": "MIT" }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "node_modules/mockjs": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz", @@ -4721,15 +5242,16 @@ "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.9", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4776,6 +5298,12 @@ "tslib": "^2.0.3" } }, + "node_modules/node-fetch-native": { + "version": "1.6.6", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/node-fetch-native/-/node-fetch-native-1.6.6.tgz", + "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz", @@ -4829,6 +5357,25 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nypm": { + "version": "0.6.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/nypm/-/nypm-0.6.0.tgz", + "integrity": "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "pathe": "^2.0.3", + "pkg-types": "^2.0.0", + "tinyexec": "^0.3.2" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", @@ -4850,6 +5397,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz", @@ -4984,6 +5537,19 @@ "node": ">= 0.10" } }, + "node_modules/parseley": { + "version": "0.12.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/parseley/-/parseley-0.12.1.tgz", + "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", + "license": "MIT", + "dependencies": { + "leac": "^0.6.0", + "peberminta": "^0.9.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", @@ -5061,10 +5627,32 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/peberminta": { + "version": "0.9.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/peberminta/-/peberminta-0.9.0.tgz", + "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5100,9 +5688,10 @@ } }, "node_modules/pinia": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.2.2.tgz", - "integrity": "sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==", + "version": "2.3.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.3", "vue-demi": "^0.14.10" @@ -5111,14 +5700,10 @@ "url": "https://github.com/sponsors/posva" }, "peerDependencies": { - "@vue/composition-api": "^1.4.0", "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.3.0" + "vue": "^2.7.0 || ^3.5.11" }, "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, "typescript": { "optional": true } @@ -5157,10 +5742,27 @@ } } }, + "node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/pkg-types/node_modules/confbox": { + "version": "0.2.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/confbox/-/confbox-0.2.1.tgz", + "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", + "license": "MIT" + }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "funding": [ { "type": "opencollective", @@ -5175,9 +5777,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -5403,6 +6006,22 @@ "node": ">=6" } }, + "node_modules/quansync": { + "version": "0.2.8", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/quansync/-/quansync-0.2.8.tgz", + "integrity": "sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5422,6 +6041,16 @@ } ] }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", @@ -5440,7 +6069,6 @@ "version": "4.0.1", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.1.tgz", "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", - "dev": true, "engines": { "node": ">= 14.16.0" }, @@ -5618,6 +6246,24 @@ "dev": true, "optional": true }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "license": "MIT" + }, + "node_modules/selderee": { + "version": "0.11.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/selderee/-/selderee-0.11.0.tgz", + "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", + "license": "MIT", + "dependencies": { + "parseley": "^0.12.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", @@ -5768,6 +6414,12 @@ "node": ">= 0.6" } }, + "node_modules/std-env": { + "version": "3.8.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/std-env/-/std-env-3.8.1.tgz", + "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", @@ -5862,6 +6514,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", @@ -5904,6 +6574,54 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.12", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -5972,6 +6690,186 @@ "node": ">=4.2.0" } }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, + "node_modules/unctx": { + "version": "2.4.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unctx/-/unctx-2.4.1.tgz", + "integrity": "sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17", + "unplugin": "^2.1.0" + } + }, + "node_modules/unctx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unctx/node_modules/unplugin": { + "version": "2.2.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unplugin/-/unplugin-2.2.0.tgz", + "integrity": "sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unctx/node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport": { + "version": "4.1.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unimport/-/unimport-4.1.2.tgz", + "integrity": "sha512-oVUL7PSlyVV3QRhsdcyYEMaDX8HJyS/CnUonEJTYA3//bWO+o/4gG8F7auGWWWkrrxBQBYOO8DKe+C53ktpRXw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "pkg-types": "^1.3.1", + "scule": "^1.3.0", + "strip-literal": "^3.0.0", + "tinyglobby": "^0.2.11", + "unplugin": "^2.2.0", + "unplugin-utils": "^0.2.4" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unimport/node_modules/local-pkg": { + "version": "1.1.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unimport/node_modules/local-pkg/node_modules/confbox": { + "version": "0.2.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/confbox/-/confbox-0.2.1.tgz", + "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", + "license": "MIT" + }, + "node_modules/unimport/node_modules/local-pkg/node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/unimport/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/unimport/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/unimport/node_modules/unplugin": { + "version": "2.2.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unplugin/-/unplugin-2.2.0.tgz", + "integrity": "sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unimport/node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", @@ -6056,6 +6954,34 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/unplugin-utils": { + "version": "0.2.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/unplugin-utils/-/unplugin-utils-0.2.4.tgz", + "integrity": "sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unplugin-utils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/unplugin-vue-components": { "version": "0.17.21", "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.17.21.tgz", @@ -6150,6 +7076,22 @@ "node": ">=8.10.0" } }, + "node_modules/untyped": { + "version": "2.0.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/untyped/-/untyped-2.0.0.tgz", + "integrity": "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "defu": "^6.1.4", + "jiti": "^2.4.2", + "knitwork": "^1.2.0", + "scule": "^1.3.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/upath/-/upath-2.0.1.tgz", @@ -6722,15 +7664,16 @@ } }, "node_modules/vue": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.6.tgz", - "integrity": "sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==", + "version": "3.5.13", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.6", - "@vue/compiler-sfc": "3.5.6", - "@vue/runtime-dom": "3.5.6", - "@vue/server-renderer": "3.5.6", - "@vue/shared": "3.5.6" + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { "typescript": "*" @@ -6895,18 +7838,6 @@ "typescript": "*" } }, - "node_modules/vue/node_modules/@vue/server-renderer": { - "version": "3.5.6", - "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.6.tgz", - "integrity": "sha512-zivnxQnOnwEXVaT9CstJ64rZFXMS5ZkKxCjDQKiMSvUhXRzFLWZVbaBiNF4HGDqGNNsTgmjcCSmU6TB/0OOxLA==", - "dependencies": { - "@vue/compiler-ssr": "3.5.6", - "@vue/shared": "3.5.6" - }, - "peerDependencies": { - "vue": "3.5.6" - } - }, "node_modules/webpack-virtual-modules": { "version": "0.4.6", "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", @@ -7065,9 +7996,10 @@ } }, "node_modules/zrender": { - "version": "3.7.2", - "resolved": "https://registry.npmmirror.com/zrender/-/zrender-3.7.2.tgz", - "integrity": "sha512-UWKsQ15yMsORWMY1jRm9r+dlvJLl1OHidy9Fs6E6+DW0t73PObkilg6V/80XQqHuYRjUzDu615RGAddDItjAUw==" + "version": "3.7.4", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/zrender/-/zrender-3.7.4.tgz", + "integrity": "sha512-5Nz7+L1wIoL0+Pp/iOP56jD6eD017qC9VRSgUBheXBiAHgOBJZ4uh4/g6e83acIwa8RKSyZf/FlceKu5ntUuxQ==", + "license": "BSD" } } } diff --git a/package.json b/package.json index 62c29f3..faaf389 100644 --- a/package.json +++ b/package.json @@ -16,15 +16,20 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", + "@pinia-plugin-persistedstate/nuxt": "^1.2.1", "@types/jszip": "^3.4.1", "@vueuse/core": "^7.5.3", "axios": "^0.24.0", "dayjs": "^1.10.7", - "echarts": "^3.8.2", + "echarts": "^3.8.5", "element-plus": "^2.9.6", "fast-glob": "^3.3.3", + "howler": "^2.2.4", + "html-to-text": "^9.0.5", + "katex": "^0.16.21", + "marked": "^15.0.7", "mitt": "^3.0.1", - "pinia": "^2.0.9", + "pinia": "^2.3.1", "pinia-plugin-persistedstate": "^1.0.3", "reset-css": "^5.0.2", "vconsole": "^3.15.1", diff --git a/src/api/AIxiaocaishen.js b/src/api/AIxiaocaishen.js index b0545a1..2049393 100644 --- a/src/api/AIxiaocaishen.js +++ b/src/api/AIxiaocaishen.js @@ -1,7 +1,7 @@ import request from '../utils/request' const APIurl = import.meta.env.VITE_APP_API_BASE_URL - +const MJAPIurl = import.meta.env.VITE_APP_MJ_API_BASE_URL //各个模块权限code接口 export const pessionAPI = function (params) { return request({ @@ -43,28 +43,88 @@ export const computedUsersAPI = function (params) { }) } +export const getNewsAPI = function () { + return request({ + url: `http://192.168.9.19:8080/api/ai_god/news`, + method: 'POST' + }) +} + +export const getQuestionAPI = function () { + return request({ + url: `http://192.168.9.19:8080/api/ai_god/shows`, + method: 'POST', + data: new URLSearchParams({ + "type": "1", + "num": "10" + }) + }) +} + +export const getAnnouncementAPI = function () { + return request({ + url: `http://192.168.9.19:8080/api/ai_god/shows`, + method: 'POST', + data: new URLSearchParams({ + "type": "3", + "num": "1" + }) + }) +} + +export const getUserCountAPI = function (params) { + return request({ + url: `http://192.168.9.19:8080/api/ai_god/userUsageInfo`, + method: 'POST', + data: new URLSearchParams(params), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + // 获取回复接口 export const getReplyAPI = function (params) { - return request({ - url: `https://api.coze.cn/v1/workflow/stream_run`, - method: 'post', - data: JSON.stringify(params), + return fetch('https://api.coze.cn/v1/workflow/run', { + method: 'POST', + body: JSON.stringify({ + "workflow_id": "7481159261435854860", + "parameters": params, + }), headers: { 'Content-Type': 'application/json', - Authorization: 'Bearer pat_TJbuxUiZdl6U3oiiSeceQnHg5XdaZsWpxc6oIozc2Auhd9YuyBvFslJJQUFUym1F' + 'Authorization': 'Bearer pat_TJbuxUiZdl6U3oiiSeceQnHg5XdaZsWpxc6oIozc2Auhd9YuyBvFslJJQUFUym1F' } }) } - +// 获取回复接口流式 export const getReplyStreamAPI = function (params) { return fetch(`https://api.coze.cn/v1/workflow/stream_run`, { method: 'POST', - body: JSON.stringify(params), + body: JSON.stringify({ + "workflow_id": "7481159261435854860", + "parameters": params, + }), headers: { 'Content-Type': 'application/json', Authorization: 'Bearer pat_TJbuxUiZdl6U3oiiSeceQnHg5XdaZsWpxc6oIozc2Auhd9YuyBvFslJJQUFUym1F' } } ) +} + +// 接受音频 +export const TTSAPI = function (params) { + return fetch('https://api.coze.cn/v1/workflow/run', { + method: 'POST', + body: JSON.stringify({ + "workflow_id": "7481639836165275702", + "parameters": params, + }), + headers: { + 'Authorization': 'Bearer pat_TJbuxUiZdl6U3oiiSeceQnHg5XdaZsWpxc6oIozc2Auhd9YuyBvFslJJQUFUym1F', + 'Content-Type': 'application/json' + } + }) } \ No newline at end of file diff --git a/src/assets/img/homePage/tail/voice-no-active.png b/src/assets/img/homePage/tail/voice-no-active.png new file mode 100644 index 0000000000000000000000000000000000000000..fc5616ab7161860f578db98eed9211605d2f5558 GIT binary patch literal 2114 zcmV-I2)*}-P)4mgSd1$Gk zc0q+_7FNKnv|6pSz#`yb0Z~|KSr)+q;=0QNtORITLDg4K2@h#$6RA>DHEQFurH)cZ zt=)^;B(B}YcFn^XPiCC4Jr_^3@RKZ^nK_s5KXWeMIX=gA>eMM5Bno^A*aPeUx`8gB z184$@z(e3Za0~bka2fbF5Oc~XcZ2h50zLzL0eBABY9M}>{EGsgRz14|i~)ZIP9t7W zLui!f0Pt<#MPN&V^4u!t_acx4{sjCSNZHL;vYCD>@GD>rc!S0Xu4Idx{~YjZ>erx} zSQYJ-jkpfH4z$=Y!UQeA*X45Gz+z3cBDxQl0DcPitrXe-{Brpdhz`;eW<`G3F#R0qxoJ34ofVE%x1n@DZN)Ly_96WdspU;QK;~^T2(%$a4uhWjurJxqQ z1$f!1l0%^o2M(%~jlPTeIMoQOy9=qQ8klv!$M%9!5q+be}zY_N->w=H_OO z967@A< zd$CF+5@C3FSaWZDe4P3Dd3-*fZko2XHumn_OE?@>?kz1XF+V@AT=(|&+G*b}!0M27 z%t{V^zn@SjgwN;0<#JIfl>pJ{ba!`a;!aLZl1``bdcC+@`ZK^ohYr!w(n4=gwqoem>zsyOA%3DR$v}koFQ!14>bLI?> z9zC*BxGsrAf@oBj6p2JMUq6${(An7uz~;@HxqbV#l_H`NVs+Cn>S~qCZsp8Aa%SzaW``Rl3o6MxBtj3Mz!Gi}HFHQZD7Z(?mu#I7>UBcw*rdnvVp~nvS zd|nx907M%b9UUc+ zNN9$cQmI5boi^ltRuT*bm2hRgYSC8mmYH<}*UY3?TwG*sZjSBSw*$g0Ex&|HGMNk$ z6BC-RRf|9%Ku1T1a;=_HZrr$0)27u+552aZ%G|2L}f=J$gJIH*0E{e*ndDP9I`H zbSbaa#p7cP*?<#gx6sZ@$oO1pW;>-B2-j8rPc)2C0Zn)Mf0 zT_YPq^$$R!xP19C*RHMhlU}cv!-o%>nk)o^L5*)vS?x`b0{#iBq6@$ut>#vXt5>gb z{rYvyz2@d-!|9XBq%zTn#bQ<$4nXKDfcC$vUjX00fd&67SFTVj78x8IT=Pu*74^tw zvy6?6;q&J3G7PzS_g9Mx|$Ff%g$36tMOWyti?1 z0x~l*Lo5~}pU+b$6i6fzcAN~OEFp9$RQ4!I#4e&=I%PpD79$pOY=f^JKcu3Q)@x9| zMQlj>e_#r+J4%C|=pyiCK;Mh_-ysWp37sv|)w<4E;1wq=S_fW1=vYIo@!~_^`;M67 zJSPzL>r!v?+&jQ~4K>Gk-UEJID}s@2lCJ~rHpCp~c^6@CO^k>x0$&5(v}=*Wyos>0 z?uwzA{oZc@&+`#mJw@2_Jiyn zJ2hk1!LH~sDMWP(0-pmuz@}kx`VZv%f^z;1d8v&)c31@dF8=^Nj@Z-k3B*yNFye^e sMpn;SK0=(eOd!r$UP3HOJGN8yzooQUwF$$^oB#j-07*qoM6N<$g5Z_x5dZ)H literal 0 HcmV?d00001 diff --git a/src/assets/js/useAppBridge.js b/src/assets/js/useAppBridge.js new file mode 100644 index 0000000..84a458e --- /dev/null +++ b/src/assets/js/useAppBridge.js @@ -0,0 +1,50 @@ +//跳转app方法 +export function useAppBridge() { + const fullClose = (n, m) => { + let result = Math.random() * (m + 1 - n) + n + while (result > m) { + result = Math.random() * (m + 1 - n) + n + } + return Math.floor(result) + } + + const packageFun = (funName, fun = () => {}, platform, data = {}) => { + const JWrandom = fullClose(10000, 99999) + data.JWrandom = JWrandom + + window[funName + JWrandom] = fun + + try { + const params = { + name: funName, + extra: { data } + } + + switch (platform) { + case 2: // app apicloud + window.api.sendEvent(params) + break + case 3: // app ios + window.webkit.messageHandlers.getTouJiaoData.postMessage(JSON.stringify(params)) + break + case 4: // app android + window.android.getTouJiaoData(JSON.stringify(params)) + break + case 5: // app uniapp + window.uni.postMessage({ + data: { + val: JSON.stringify(params) + } + }) + break + } + } catch (e) { + console.error('Error in packageFun:', e) + } + } + + return { + packageFun, + fullClose + } +} diff --git a/src/assets/js/useProjectTracking.js b/src/assets/js/useProjectTracking.js new file mode 100644 index 0000000..a826240 --- /dev/null +++ b/src/assets/js/useProjectTracking.js @@ -0,0 +1,159 @@ +import { ref, onMounted, onBeforeUnmount, watch } from 'vue' +import { useRouter } from 'vue-router' +import { computedUsersAPI } from '@/api/sword' + +export function useProjectTracking(projectRoutes) { + const router = useRouter() + const entryTime = ref(Date.now()) + const isInProject = ref(true) + const hasRecordedEntry = ref(sessionStorage.getItem('hasRecordedEntry') === 'true') + // const parentUrl = window.parent.location.href + // console.log('Link平台地址:', parentUrl) + + let isPageRefreshing = false // 标志位:是否刷新页面 + + // 记录用户进入项目的时间 + const recordEntryTime = () => { + if (hasRecordedEntry.value) { + return + } + + entryTime.value = Date.now() + const date = new Date(entryTime.value) + const formattedDate = `${date.getFullYear()}-${(date.getMonth() + 1) + .toString() + .padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date + .getHours() + .toString() + .padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date + .getSeconds() + .toString() + .padStart(2, '0')}` + sessionStorage.setItem('projectEntryTime', formattedDate) + sessionStorage.setItem('hasRecordedEntry', 'true') + isInProject.value = true + hasRecordedEntry.value = true + console.log('记录首次进入时间:', formattedDate) + } + + // 发送追踪数据到后端 + const sendTrackingData = async () => { + if (!isInProject.value) return + + const storedEntryTime = sessionStorage.getItem('projectEntryTime') + if (!storedEntryTime) { + console.warn('未找到存储的进入时间,取消发送跟踪数据') + return + } + + let timestamp + try { + timestamp = new Date(storedEntryTime.replace(' ', 'T')).getTime() + if (isNaN(timestamp)) throw new Error('无效日期') + } catch (error) { + console.error('解析存储的进入时间时出错:', error) + return + } + + const exitTime = Date.now() + const duration = Math.floor((exitTime - timestamp) / 1000) + const localToken = localStorage.getItem('localToken') + console.log('进入项目的时间', storedEntryTime) + console.log('停留时间', duration) + + const params = { + stayTime: duration, + loginTime: storedEntryTime, + token: localToken + } + + if (localToken) { + try { + const res = await computedUsersAPI(params) + console.log('跟踪数据已发送:', res) + sessionStorage.removeItem('projectEntryTime') + sessionStorage.removeItem('hasRecordedEntry') + isInProject.value = false + hasRecordedEntry.value = false + } catch (error) { + console.error('发送跟踪数据失败:', error) + } + } + } + + // 页面可见性变化时触发 + const handleVisibilityChange = () => { + // console.log(window.location.pathname.includes('duobaoqibing'), '路径是否包含了页面不可见触发') + // if (window.location.pathname.includes('duobaoqibing')) { + // console.log('在 searchCode.html 页面,不发送数据') + // return + // } + if (document.visibilityState === 'hidden') { + console.log('页面不可见,用户可能离开或切换标签页') + sendTrackingData() + } + } + + // 页面关闭或刷新时触发 + const handleBeforeUnload = (event) => { + // console.log(window.location.pathname) + // console.log( + // window.location.pathname.includes('duobaoqibing'), + // '路径是否包含了页面关闭了啦啦啦啦啦啦触发' + // ) + // if (window.location.pathname.includes('duobaoqibing')) { + // console.log('在 searchCode.html 页面,不发送数据') + // return + // } + if (isPageRefreshing) { + console.log('页面刷新,不触发数据发送') + return + } + + console.log('页面即将关闭或跳转') + sendTrackingData() + } + + const handleRefreshDetection = () => { + isPageRefreshing = true + } + + // 监听路由变化 + watch( + () => router.currentRoute.value.path, + (newPath) => { + const isProjectRoute = projectRoutes.some((route) => newPath.startsWith(route)) + let isProjectRouteName = projectRoutes[0] + console.log(isProjectRouteName) + // 判断是否是 searchCode.html 的访问 + const isSearchCodePage = window.location.pathname.includes('duobaoqibing') + if (!isProjectRoute && !isSearchCodePage) { + console.log('离开项目路由:', newPath) + sendTrackingData() + } else if (isProjectRouteName && !hasRecordedEntry.value) { + console.log('首次进入项目路由:', newPath) + recordEntryTime() + } + } + ) + + // 添加事件监听 + onMounted(() => { + document.addEventListener('visibilitychange', handleVisibilityChange) + window.addEventListener('beforeunload', handleBeforeUnload) + window.addEventListener('unload', handleRefreshDetection) + }) + + // 移除事件监听 + onBeforeUnmount(() => { + document.removeEventListener('visibilitychange', handleVisibilityChange) + window.removeEventListener('beforeunload', handleBeforeUnload) + window.removeEventListener('unload', handleRefreshDetection) + }) + + return { + entryTime, + isInProject, + sendTrackingData + } +} diff --git a/src/main.js b/src/main.js index d61cda9..9e17c6c 100644 --- a/src/main.js +++ b/src/main.js @@ -4,11 +4,15 @@ import router from './router' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' -import 'reset-css'; +// import 'reset-css'; +import { createPinia } from 'pinia' + const app = createApp(App) +const pinia = createPinia() for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } app.use(router) app.use(ElementPlus) +app.use(pinia) app.mount('#app') \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 123e0f0..93eeb49 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -20,7 +20,7 @@ const routes = [ name: 'AIfind', component: () => import('@/views/AIfind.vue'), meta: { title: '发现' } - }, + } ] // 创建路由实例 const router = createRouter({ diff --git a/src/store/audio.js b/src/store/audio.js new file mode 100644 index 0000000..d23ed55 --- /dev/null +++ b/src/store/audio.js @@ -0,0 +1,33 @@ +import { defineStore } from 'pinia' + +export const useAudioStore = defineStore('audio', { + state: () => ({ + soundInstance: null, // Howl 实例 + isPlaying: false, // 播放状态 + isVoiceEnabled: true // 新增声音开关状态 + }), + actions: { + // 设置音频实例 + setAudioInstance(instance) { + this.soundInstance = instance + }, + // 播放控制 + play() { + if (this.soundInstance) { + this.soundInstance.play() + this.isPlaying = true + } + }, + // 暂停控制 + pause() { + if (this.soundInstance) { + this.soundInstance.pause() + this.isPlaying = false + } + }, + toggleVoice() { + this.isVoiceEnabled = !this.isVoiceEnabled + } + } +}) + diff --git a/src/store/chat.js b/src/store/chat.js new file mode 100644 index 0000000..c651088 --- /dev/null +++ b/src/store/chat.js @@ -0,0 +1,16 @@ +import { defineStore } from 'pinia'; + +export const useChatStore = defineStore('chat', { + state: () => ({ + messages: [] + }), + persist: { + enabled: true, + strategies: [ + { + key: 'chat_messages', + storage: localStorage + } + ] + } +}); \ No newline at end of file diff --git a/src/store/dataList.js b/src/store/dataList.js index 1f5fd67..ab2e02a 100644 --- a/src/store/dataList.js +++ b/src/store/dataList.js @@ -1,12 +1,13 @@ + import { defineStore } from 'pinia' import { ref, watch } from 'vue' import { useUserStore } from './userPessionCode' import { useLanguage } from '@/utils/languageService' -import { dataListAPI } from '@/api/sword' +import { dataListAPI } from '@/api/AIxiaocaishen' // import { useSkeletonStore } from '@/utils/skeletonLoader' import { useRoute } from 'vue-router' // const skeletonStore = useSkeletonStore() -const { t } = useLanguage() +// const { t } = useLanguage() export const useDataStore = defineStore('data', () => { const route = useRoute() @@ -22,6 +23,11 @@ export const useDataStore = defineStore('data', () => { const AIGoldBull = ref(null) const AIRadar = ref(null) const loading = ref(false) + const klineData = ref(null) + + const setKlineData = (data) => { + klineData.value = data + } const getQueryVariable = (variable) => { const query = window.location.search.substring(1) @@ -35,54 +41,69 @@ export const useDataStore = defineStore('data', () => { return '' } + const getAnswer = (result) => { + const data = result.data; + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === variable) { + return pair[1] + } + } + return '' + } + // 使用示例,获取地址栏参数 // const token = ref(getQueryVariable('token')) // const market = ref(getQueryVariable('market')) // const code = ref(getQueryVariable('code')) // console.log(token.value) // 输出 token 的值,例如 "111" - const fetchChartData = async () => { - const getTokenString = String(localStorage.getItem('localToken')) - const getMarketString = String(localStorage.getItem('localMarket')) - const getCodeString = String(localStorage.getItem('localCode')) - // const getMarket = String() - try { - const res = await dataListAPI({ - token: getTokenString || '', - market: getMarket() || getMarketString || 'gb', - code: getQueryVariable('code') || getCodeString || 'NDX', - language: t.value.suoxie, - brainPrivilegeState: userStore.brainPerssion, - swordPrivilegeState: userStore.swordPerssion, - stockForecastPrivilegeState: userStore.pricePerssion, - spaceForecastPrivilegeState: userStore.timePerssion, - aibullPrivilegeState: userStore.aibullPerssion, - aigoldBullPrivilegeState: userStore.aiGnbullPerssion, - airadarPrivilegeState: userStore.airadarPerssion, - marketList: userStore.aiGoldMarketList - }) - brainDataList.value = res.data.Brain - swordDataList.value = res.data.Sword - priceDataList.value = res.data.StockForecast - timeDataList.value = res.data.SpaceForecast - showALLData.value = res.data.ShowAll - HomePage.value = res.data.HomePage - AIBull.value = res.data.AIBull - AIGoldBull.value = res.data.AIGoldBull - AIRadar.value = res.data.AIRadar - } catch (error) { - console.error('获取图表数据出错:', error) - } finally { - loading.value = false - console.log('数据获取过程结束') - } - } + // const fetchChartData = async () => { + // const getTokenString = String(localStorage.getItem('localToken')) + // const getMarketString = String(localStorage.getItem('localMarket')) + // const getCodeString = String(localStorage.getItem('localCode')) + // // const getMarket = String() + // try { + // const res = await dataListAPI({ + // token: getTokenString || '', + // market: getMarket() || getMarketString || 'gb', + // code: getQueryVariable('code') || getCodeString || 'NDX', + // language: 'cn', //t.value.suoxie, + // brainPrivilegeState: userStore.brainPerssion, + // swordPrivilegeState: userStore.swordPerssion, + // stockForecastPrivilegeState: userStore.pricePerssion, + // spaceForecastPrivilegeState: userStore.timePerssion, + // aibullPrivilegeState: userStore.aibullPerssion, + // aigoldBullPrivilegeState: userStore.aiGnbullPerssion, + // airadarPrivilegeState: userStore.airadarPerssion, + // marketList: userStore.aiGoldMarketList + // }) + + // brainDataList.value = res.data.Brain + // swordDataList.value = res.data.Sword + // priceDataList.value = res.data.StockForecast + // timeDataList.value = res.data.SpaceForecast + // showALLData.value = res.data.ShowAll + // HomePage.value = res.data.HomePage + // AIBull.value = res.data.AIBull + // AIGoldBull.value = res.data.AIGoldBull + // AIRadar.value = res.data.AIRadar + // } catch (error) { + // console.error('获取图表数据出错:', error) + // } finally { + // loading.value = false + // console.log('数据获取过程结束') + // } + // } // 获取路径上market的值 const getMarket = () => { let market = '' const queryMarket = getQueryVariable('market') if (queryMarket) { - if (['sg', 'my', 'in', 'hk', 'th', 'vi', 'usa', 'can', 'gb', 'cn'].includes(queryMarket)) { + if ( + ['sg', 'my', 'in', 'hk', 'th', 'vi', 'usa', 'can', 'gb', 'cn'].includes(queryMarket) + ) { return queryMarket } else { switch (queryMarket) { @@ -106,13 +127,14 @@ export const useDataStore = defineStore('data', () => { } } } - return market + return '' } const isLoading = ref(true) const initData = async () => { isLoading.value = true try { + // 初始化逻辑 } catch (error) { console.error('Error loading data:', error) } finally { @@ -120,65 +142,45 @@ export const useDataStore = defineStore('data', () => { } } - watch( - () => [userStore.isReady, t.value?.suoxie], - ([isReady, language]) => { - console.log('isReady 或 language 变化:', { isReady, language }) - if (isReady) { - // // 在组件挂载时显示骨架屏 - // skeletonStore.startLoading() - setTimeout(() => { - fetchChartData() - }, 500) // 重新发起 API 请求 - } - }, - { immediate: true, deep: true } - ), - // watchEffect(() => { - // const isReady = userStore.isReady; - // const getCodeString1 = ref(localStorage.getItem('localCode')); - // const getMarketString1 = ref(localStorage.getItem('localMarket')); + // watch( + // () => [userStore.isReady, t.value?.suoxie], + // ([isReady]) => { + // console.log('isReady 或 language 变化:', isReady) + // if (isReady) { + // setTimeout(() => fetchChartData(), 500) + // } + // }, + // { immediate: true, deep: true } + // ) - // console.log({isReady, getCodeString1, getMarketString1}, '监听变化'); + // watch(() => route.query, () => { + // if (route.query.market || route.query.code) { + // fetchChartData() + // } + // }) + + // watch(() => userStore.aibullPerssion, (newValue) => { + // if (newValue === 1) fetchChartData() + // }) - // if (isReady && getCodeString1.value && getMarketString1.value) { - // console.log('条件满足,发起 API 请求'); - // skeletonStore.startLoading(); // 显示骨架屏 - // fetchChartData(); // 发起 API 请求 - // } - // }), - watch( - () => route.query, - (newQuery, oldQuery) => { - if (newQuery.market || newQuery.code) { - fetchChartData() - } - } - ), - watch( - () => userStore.aibullPerssion, - (newValue) => { - if (newValue === 1) { - fetchChartData() - } - } - ) initData() return { - brainDataList, - swordDataList, - priceDataList, - timeDataList, - showALLData, - HomePage, - AIBull, - AIGoldBull, - loading, - AIRadar, - fetchChartData, + // brainDataList, + // swordDataList, + // priceDataList, + // timeDataList, + // showALLData, + // HomePage, + // AIBull, + // AIGoldBull, + // loading, + // AIRadar, + // fetchChartData, + klineData, + setKlineData, initData, getMarket, getQueryVariable } -}) \ No newline at end of file +}) diff --git a/src/store/userPessionCode.js b/src/store/userPessionCode.js index f838448..f8b34be 100644 --- a/src/store/userPessionCode.js +++ b/src/store/userPessionCode.js @@ -1,6 +1,6 @@ import { defineStore } from 'pinia' import { ref, onMounted } from 'vue' -import { pessionAPI } from '@/api/sword' +import { pessionAPI } from '@/api/AIxiaocaishen' // import VConsole from 'vconsole' import { useAppBridge } from '@/assets/js/useAppBridge.js' diff --git a/src/utils/languageService.js b/src/utils/languageService.js index 071f2d2..53cfd9f 100644 --- a/src/utils/languageService.js +++ b/src/utils/languageService.js @@ -1,5 +1,5 @@ import { ref, computed } from 'vue' -import { t, changeLanguage, availableLanguages, languagePacks } from '../lang/index' +// import { t, changeLanguage, availableLanguages, languagePacks } from '../lang/index' export const useLanguage = () => { const translate = computed(() => (key) => { diff --git a/src/utils/request.js b/src/utils/request.js index bcae53e..be9fbef 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -22,7 +22,7 @@ const ERROR_MESSAGES = { const service = axios.create({ baseURL: '', // url = base url + request url+ - timeout: 5000, + // timeout: 50000, withCredentials: false // send cookies when cross-domain requests // headers: { // // clear cors diff --git a/src/views/AIchat.vue b/src/views/AIchat.vue index 9587f98..8e85f44 100644 --- a/src/views/AIchat.vue +++ b/src/views/AIchat.vue @@ -1,65 +1,334 @@ @@ -71,42 +340,44 @@ onMounted(() => {
-
- {{ news.title }} +
+ {{ questions.title }}
-
- {{ news.title }} +
+ {{ questions.title }}
-
-
+ + + + + +
+
+ +
+
-

{{ currentNews.content }}

+

{{ currentQuestions.content }}

@@ -119,12 +390,13 @@ onMounted(() => { .gif-area { /* position: relative; */ - height: 30vh; + /* height: 30vh; */ display: flex; flex-direction: column; justify-content: center; align-items: center; - flex-shrink: 0; /* 防止GIF区域被压缩 */ + flex-shrink: 0; + /* 防止GIF区域被压缩 */ } .gif-area img { @@ -139,15 +411,18 @@ onMounted(() => { transition: all 0.3s; /* 添加过渡效果 */ } + .message-area { margin-top: 2%; - flex: 1; /* 消息区域占据剩余空间 */ + flex: 1; + /* 消息区域占据剩余空间 */ overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 15px; } + .marquee-container { /* position: absolute; */ bottom: 0; @@ -198,7 +473,7 @@ onMounted(() => { .message-bubble { max-width: 70%; - margin: 10px 20px; + margin: 10px 0px; padding: 15px 25px; border-radius: 10px; position: relative; @@ -208,13 +483,42 @@ onMounted(() => { background: #8263f0; color: white; margin-left: auto; + margin-right: 20px; /* border-bottom-right-radius: 5px; */ } .message-bubble.ai { - background: #f0f0f0; + background: #ffffff; color: #333; margin-right: auto; - border-bottom-left-radius: 5px; + margin-left: 20px; + /* border-bottom-left-radius: 5px; */ +} + +.kline-container { + margin-top: 10px; + width: 100%; + /* 最小移动端尺寸 */ + min-width: 320px; + /* 最小高度 */ + min-height: 320px; + /* 视口高度单位 */ + height: 40vh; + /* 最大宽度限制 */ + max-width: 800px; +} + +@media (min-width: 768px) { + .kline-container { + height: 40vh; + min-height: 400px; + } +} + +@media (min-width: 1024px) { + .kline-container { + height: 50vh; + min-height: 400px; + } } diff --git a/src/views/AIfind.vue b/src/views/AIfind.vue index 661552d..833a517 100644 --- a/src/views/AIfind.vue +++ b/src/views/AIfind.vue @@ -1,19 +1,39 @@ \ No newline at end of file diff --git a/src/views/Announcement.vue b/src/views/Announcement.vue index b9ef03b..519498f 100644 --- a/src/views/Announcement.vue +++ b/src/views/Announcement.vue @@ -1,40 +1,95 @@ - + diff --git a/src/views/Echarts/KLine.vue b/src/views/Echarts/KLine.vue new file mode 100644 index 0000000..95198d2 --- /dev/null +++ b/src/views/Echarts/KLine.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/homePage.vue b/src/views/homePage.vue index fca3689..ae1ef1e 100644 --- a/src/views/homePage.vue +++ b/src/views/homePage.vue @@ -2,10 +2,22 @@ // 导入 import { ref, computed, onMounted, watch, nextTick } from "vue"; import { setHeight } from "../utils/setHeight"; -import { getReplyAPI } from "../api/AIxiaocaishen"; -import AIchat from "../views/AIchat.vue"; -import AIfind from "../views/AIfind.vue"; +import { getUserCountAPI } from "../api/AIxiaocaishen"; +import AIchat from "./AIchat.vue"; +import AIfind from "./AIfind.vue"; +import { useAppBridge } from '../assets/js/useAppBridge.js' +import { useDataStore } from '@/store/dataList.js' +import { useChatStore } from '../store/chat' +import { useAudioStore } from '../store/audio' +// import { useUserStore } from "../store/userPessionCode.js"; +const { getQueryVariable } = useDataStore() // 变量 +// 音频管理 +const audioStore = useAudioStore() +const isVoice = computed(() => audioStore.isVoiceEnabled) +const toggleVoice = () => { + audioStore.toggleVoice() +} // 将默认值改为从 sessionStorage 中获取,如果没有则使用默认值 'aifindCow'为第一个默认tab const activeTab = ref(sessionStorage.getItem("activeTabAI") || "AIchat"); const activeIndex = ref( @@ -54,12 +66,19 @@ const ensureAIchat = () => { }; // 获取次数 -const getCount = () => { - console.log("获取次数"); +const UserCount = ref(0); +const getUserCount = async () => { + const result = await getUserCountAPI({ token: localStorage.getItem('localToken') }); + UserCount.value = result.data.hasCount; + }; +const getCount = () => { + console.log('点击了获取次数的按钮') +} + // 深度思考 -const isThinking = ref(false); +const isThinking = ref(true); const toggleThink = () => { isThinking.value = !isThinking.value; }; @@ -70,13 +89,11 @@ const message = ref(""); const messages = ref([]); // 信息加载状态 const isLoading = ref(false); -// 在 sendMessage 方法中添加触发逻辑 -const triggerFetch = ref(false); // 添加用户消息 const updateMessage = (title) => { message.value = title; - console.log("updateMessage 的值:", title); + // console.log("updateMessage 的值:", title); }; const sendMessage = async () => { // 调用 ensureAIchat 确保跳转到 AIchat 页面 @@ -85,18 +102,15 @@ const sendMessage = async () => { if (!message.value) return; if (isLoading.value) return; - const sendMessage = () => { - // 处理发送消息的逻辑 - - console.log("sendMessage 的值:", message.value); - messages.value.push({ content: message.value, sender: "user" }); - }; - messages.value.push({ - sender: "user", - content: message.value, - - timestamp: new Date().toISOString(), - }); + // 发送消息时,设置 isLoading 为 true + messages.value = [ + ...messages.value, + { + sender: "user", + content: message.value, + timestamp: new Date().toISOString(), + } + ]; // 重置消息输入框 @@ -113,6 +127,7 @@ const isAnnouncementVisible = ref(false); const showAnnouncement = () => { console.log("打开公告"); isAnnouncementVisible.value = true; // 显示公告页面 + activeTab.value = 'Announcement`' }; // 点击剩余次数会弹出的弹窗 @@ -126,22 +141,100 @@ const showCount = () => { console.log("dialogVisible 的值:", dialogVisible.value); // 添加日志确认 }; + // 保证发送消息时,滚动屏在底部 +const chatStore = useChatStore() const tabContent = ref(null); +const isScrolling = ref(false); //判断用户是否在滚动 + +const smoothScrollToBottom = async () => { + await nextTick(); + const container = tabContent.value; + if (!container) return; + if (!isScrolling.value) + container.scrollTop = container.scrollHeight - container.offsetHeight; + + requestAnimationFrame(() => { + container.scrollTop = container.scrollHeight - container.offsetHeight; + }); + +} + + +const handleScroll = function () { + const scrollContainer = tabContent.value + const scrollTop = scrollContainer.scrollTop + const scrollHeight = scrollContainer.scrollHeight + const offsetHeight = scrollContainer.offsetHeight + console.log(scrollTop, scrollHeight, offsetHeight, "scrollTop, scrollHeight, offsetHeight"); + if (scrollTop + offsetHeight < scrollHeight) { + // 用户开始滚动并在最底部之上,取消保持在最底部的效果 + isScrolling.value = true + } else { + // 用户停止滚动并滚动到最底部,开启保持到最底部的效果 + isScrolling.value = false + } + console.log(isScrolling.value) + +} + watch( - messages, - async () => { - await nextTick(); - if (tabContent.value) { - tabContent.value.scrollTop = tabContent.value.scrollHeight; - } + () => chatStore.messages, + () => { + smoothScrollToBottom(); }, { deep: true, immediate: true } ); -onMounted(() => { + +watch( + activeTab, + async (newVal) => { + smoothScrollToBottom(); + }); + + +// 在setTimeout中延迟执行 +setTimeout(() => { + fnGetToken() +}, 800) + +// 获取token的核心函数 +const fnGetToken = () => { + window.JWready = (ress) => { + // 处理平台判断 + if (!ress.data.platform) { + // 非App环境通过URL参数获取 + localStorage.setItem('localToken', decodeURIComponent(String(getQueryVariable('token')))) + // localStorage.setItem('localToken', "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w") + } else { + // App环境通过桥接获取 + useAppBridge().packageFun( + 'JWgetStorage', + (response) => { + const res = JSON.parse(response) // 解析返回的结果 + localStorage.setItem('localToken', res.data) + // localStorage.setItem('localToken', "+SsksARQgUHIbIG3rRnnbZi0+fEeMx8pywnIlrmTxo5EOPR/wjWDV7w7+ZUseiBtf9kFa/atmNx6QfSpv5w") + }, + 5, + { + key: 'token' + } + ) + } + } + // 触发App桥接 + useAppBridge().packageFun('JWwebReady', () => { }, 5, {}) +} + +onMounted(async () => { setHeight(document.getElementById("testId")); // 给父组件发送窗口高度 -}); + getUserCount(); + smoothScrollToBottom(); + // 监听滚动事件,判断用户滚动状态 + tabContent.value.addEventListener('scroll', handleScroll) + +})