diff --git a/.gitignore b/.gitignore index 66240cd69c7055bdeaebf559817543d0a06c9e8e..a547bf36d8d11a4f89c59c144f24795749086dd1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,22 +6,17 @@ yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* -package-lock.json node_modules -.DS_Store dist dist-ssr -coverage *.local -/cypress/videos/ -/cypress/screenshots/ - # Editor directories and files .vscode/* !.vscode/extensions.json .idea +.DS_Store *.suo *.ntvs* *.njsproj diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..6feafe8bca66263e83cfc1020448abb31fb515d2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 xyz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 2cb2a8034c0d032a113efc6e0e720dfbf78704fd..2e4d041811937c91ce343dbebe705f9448c5c25b 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,36 @@ -# VueJS-with-Vite - -Vue.js 是基于 JavaScript 构建用户界面的库。该模板使用 Vite 来提供应用程序服务。 - -## 推荐的IDE设置 - -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). - -## 自定义配置 - -请参阅 [[Vite配置参考](https://vitejs.dev/config/). - -## 项目设置 - -```sh -npm install +# 项目介绍 +[model-vue3-vant](http://gitee.com/xyzcn/model-vue3-vant)是 Vue3 + Vant + Vite 搭建单页面模板template项目。基于 Vue3.2 + TypeScript + vite Vue-Router4.x + Pinia + Vant4.x + Sass 等当前主流技术栈开发 + +# 技术栈 +- 编程语言:[TypeScript 4.x](https://www.typescriptlang.org/zh/) +- 构建工具:[Vite 2.x](https://cn.vitejs.dev/) +- 前端框架:[Vue 3.x](https://v3.cn.vuejs.org/) +- 路由工具:[Vue Router 4.x](https://next.router.vuejs.org/zh/index.html) +- 状态管理 [Pinia 2.x](https://pinia.web3doc.top/) +- H5 端 UI 框架:[vant 4.x](https://vant-contrib.gitee.io/vant/#/zh-CN) +- CSS 预编译: [Sass ](https://sass.bootcss.com/documentation) +- HTTP 工具:[Axios](https://axios-http.com/) + +# 项目截图 +| ![输入图片说明](src/assets/ui/login.png) | ![输入图片说明](src/assets/ui/home.png) | +|---|---| +| ![输入图片说明](src/assets/ui/cate.png) | ![输入图片说明](src/assets/ui/user.png) | + +# 项目启动 + ```shell +# 克隆代码 +git clone https://gitee.com/xyzcn/model-vue3-vant.git + +# 安装 yarn +npm install -g yarn + +# 安装依赖 +yarn install + +# 启动运行 +yarn run dev ``` -### 在开发环境中启动和热更新 - -```sh -npm run dev -``` -### 编译用于生产环境 - -```sh -npm run build -``` +# 联系作者 +我的QQ邮箱: 774346441@qq.com diff --git a/index.html b/index.html index 030a6ff51bfc6f6adcc472f6d8c02db92ce947a8..fb99002ad4fe1b02fdaa50d6c3bbaef5e16ffc36 100644 --- a/index.html +++ b/index.html @@ -2,12 +2,26 @@ - + - Vite App + + Vite + Vue + TS +
- + + diff --git a/package.json b/package.json index aa1c7deb0adb6e6aea5a1380426189ac24eee7a7..5a45da8cd48e42ddf0fb5137bd58cf835d0b34c8 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,29 @@ { - "name": "vuejs-with-vite", + "name": "-model-app-", + "private": true, "version": "0.0.0", + "type": "module", "scripts": { "dev": "vite", - "build": "vite build", - "preview": "vite preview --port 4173" + "build": "vue-tsc && vite build", + "preview": "vite preview" }, "dependencies": { - "guess": "^1.0.2", - "vue": "^3.2.37" + "@types/node": "^20.1.0", + "@vueuse/core": "^10.1.2", + "axios": "^1.4.0", + "pinia": "^2.0.35", + "sass": "^1.62.1", + "vant": "^4.3.1", + "vue": "^3.2.47", + "vue-router": "4" }, "devDependencies": { - "@vitejs/plugin-vue": "^3.0.1", - "vite": "^3.0.1" + "@vitejs/plugin-vue": "^4.1.0", + "typescript": "^5.0.2", + "unplugin-auto-import": "^0.15.3", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.3.2", + "vue-tsc": "^1.4.2" } } diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000000000000000000000000000000000000..e7b8dfb1b2a60bd50538bec9f876511b9cac21e3 --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 633a5dfe4e547c48bfa93740a290ba5ba370930a..9b243d7bfe2076855236981695351aaa197a1cb4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,47 +1,12 @@ - - diff --git a/src/api/login/index.ts b/src/api/login/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..e10390f999e7b2a5e3ca72df44d71a738343f285 --- /dev/null +++ b/src/api/login/index.ts @@ -0,0 +1,11 @@ +import requset from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { LoginData, LoginResult } from './types'; + +export function getLogin(data:LoginData ): AxiosPromise { + return requset({ + url: '/api/v1/login', + method: 'post', + params:data + }) +} diff --git a/src/api/login/types.ts b/src/api/login/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..ba2a1a39833bfebebb1ba937651804df87042c29 --- /dev/null +++ b/src/api/login/types.ts @@ -0,0 +1,13 @@ +// +export interface LoginData { + username?: string; + password?: string; +} +// 响应 +export interface LoginResult { + accessToken?: string; + tokenType?: string; + nickname?: string; + avatar?: string; +} + diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..1565d86c7492c9b8ec883fc0435f96d6a3b2ebc9 --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,10 @@ +import requset from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { UserInfo } from './types'; + +export function getUserInfo(): AxiosPromise { + return requset({ + url: '/api/v1/user', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/user/types.ts b/src/api/user/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..20b902e6022008e5f12b35d357befbe1c07582d3 --- /dev/null +++ b/src/api/user/types.ts @@ -0,0 +1,6 @@ +export interface UserInfo { + nickname: string; + avatar: string; + roles: string[]; + perms: string[]; + } \ No newline at end of file diff --git a/src/assets/cover/1.png b/src/assets/cover/1.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce84ce177ef0c1fd2532e7654d10af1b76b3e1d Binary files /dev/null and b/src/assets/cover/1.png differ diff --git a/src/assets/cover/2.png b/src/assets/cover/2.png new file mode 100644 index 0000000000000000000000000000000000000000..76436886a16104378f728def1a38f6f4b5459aa5 Binary files /dev/null and b/src/assets/cover/2.png differ diff --git a/src/assets/cover/3.png b/src/assets/cover/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c095bfeefebf20c17588ee5282bea96c0816272a Binary files /dev/null and b/src/assets/cover/3.png differ diff --git a/src/assets/cover/4.png b/src/assets/cover/4.png new file mode 100644 index 0000000000000000000000000000000000000000..e7afe37b47ea9e0ab81dde7377edcc9053d784c1 Binary files /dev/null and b/src/assets/cover/4.png differ diff --git a/src/assets/cover/5.png b/src/assets/cover/5.png new file mode 100644 index 0000000000000000000000000000000000000000..ff023ae5375d4e1ceeb65ad5b88f88e71bd3a182 Binary files /dev/null and b/src/assets/cover/5.png differ diff --git a/src/assets/cover/6.png b/src/assets/cover/6.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6645b2a896ed0ef00aac5eee056333d06d268b Binary files /dev/null and b/src/assets/cover/6.png differ diff --git a/src/assets/home/bk_1.png b/src/assets/home/bk_1.png new file mode 100644 index 0000000000000000000000000000000000000000..62d7aa4178417e948bad02c10c14b25995dcdb69 Binary files /dev/null and b/src/assets/home/bk_1.png differ diff --git a/src/assets/home/bk_2.png b/src/assets/home/bk_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5b9bc62de3ea9a0609e81f538c1b1f783264e Binary files /dev/null and b/src/assets/home/bk_2.png differ diff --git a/src/assets/home/fl.png b/src/assets/home/fl.png new file mode 100644 index 0000000000000000000000000000000000000000..5876a9d4dd50a31fa8bbfcdd341da58f2ef01776 Binary files /dev/null and b/src/assets/home/fl.png differ diff --git a/src/assets/home/fli.png b/src/assets/home/fli.png new file mode 100644 index 0000000000000000000000000000000000000000..096525d6373f4de10a6332165780022fd3341cc4 Binary files /dev/null and b/src/assets/home/fli.png differ diff --git a/src/assets/home/mf.png b/src/assets/home/mf.png new file mode 100644 index 0000000000000000000000000000000000000000..1f30d44a6b0d22a95471558eb73a95ed1041ee54 Binary files /dev/null and b/src/assets/home/mf.png differ diff --git a/src/assets/home/ph.png b/src/assets/home/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..39dd97313020cb5ca3ea1aa3119964a14dcbca94 Binary files /dev/null and b/src/assets/home/ph.png differ diff --git a/src/assets/home/wb.png b/src/assets/home/wb.png new file mode 100644 index 0000000000000000000000000000000000000000..6068bf715b3f868cc744733836a795d728d3b271 Binary files /dev/null and b/src/assets/home/wb.png differ diff --git a/src/assets/login/2.png b/src/assets/login/2.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaf908d01c467e7a7abd0a30a8b9a831bedfb5f Binary files /dev/null and b/src/assets/login/2.png differ diff --git a/src/assets/login/3.png b/src/assets/login/3.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0bf7a71d00b1b616e80fcd8bf780847028c23d Binary files /dev/null and b/src/assets/login/3.png differ diff --git a/src/assets/ui/cate.png b/src/assets/ui/cate.png new file mode 100644 index 0000000000000000000000000000000000000000..d00b8602b895c9763dcec5e894ba97a286264783 Binary files /dev/null and b/src/assets/ui/cate.png differ diff --git a/src/assets/ui/home.png b/src/assets/ui/home.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4d263c522383cd0b1bfc0a05d4156c366eec0b Binary files /dev/null and b/src/assets/ui/home.png differ diff --git a/src/assets/ui/login.png b/src/assets/ui/login.png new file mode 100644 index 0000000000000000000000000000000000000000..210ae2e12a16c4de54b803b89035b25194e255ca Binary files /dev/null and b/src/assets/ui/login.png differ diff --git a/src/assets/ui/user.png b/src/assets/ui/user.png new file mode 100644 index 0000000000000000000000000000000000000000..68a1c1a05afb6f10e8a364f18e8a03cc894e185a Binary files /dev/null and b/src/assets/ui/user.png differ diff --git a/src/assets/user/tx.png b/src/assets/user/tx.png new file mode 100644 index 0000000000000000000000000000000000000000..3e047b38b1da1edea52ffea0152ac396503cd566 Binary files /dev/null and b/src/assets/user/tx.png differ diff --git a/src/assets/user/xs.png b/src/assets/user/xs.png new file mode 100644 index 0000000000000000000000000000000000000000..62d8e2cbdb61708cc371f3fbce2f578410ec89d0 Binary files /dev/null and b/src/assets/user/xs.png differ diff --git a/src/assets/vue.svg b/src/assets/vue.svg new file mode 100644 index 0000000000000000000000000000000000000000..770e9d333ee70e75fe7c0bad7fb13e4f6ed4627a --- /dev/null +++ b/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/ImageVerify/ImageVerify.vue b/src/components/ImageVerify/ImageVerify.vue new file mode 100644 index 0000000000000000000000000000000000000000..3c7a9ed53487d701d72be0af25f5f28c6e32b13f --- /dev/null +++ b/src/components/ImageVerify/ImageVerify.vue @@ -0,0 +1,114 @@ + + + + \ No newline at end of file diff --git a/src/components/common/list.vue b/src/components/common/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..b9e48d395343758e7599fd4f93cd460780c0971c --- /dev/null +++ b/src/components/common/list.vue @@ -0,0 +1,107 @@ + + + + + + \ No newline at end of file diff --git a/src/components/refreshList/index.vue b/src/components/refreshList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..bf3b14cbe83d1f69f644ba5bb0ac3b40ba5ab384 --- /dev/null +++ b/src/components/refreshList/index.vue @@ -0,0 +1,93 @@ + + + + + + + \ No newline at end of file diff --git a/src/layout/components/Navbar/index.vue b/src/layout/components/Navbar/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..339e8062dc07cd23b9a5c0f433ad9650e2d6ec5b --- /dev/null +++ b/src/layout/components/Navbar/index.vue @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/src/layout/components/index.ts b/src/layout/components/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..be11a5b8eb5e4778e5e4362fb7961c8f1db9ad7f --- /dev/null +++ b/src/layout/components/index.ts @@ -0,0 +1 @@ +export { default as Navbar } from './Navbar/index.vue'; diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4de8b2de38d73a3cf190ea62a861b4d8f038c95e --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file diff --git a/src/libs/mock.ts b/src/libs/mock.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc9843a54180700776ac9fc939bc19fdfdf13cc3 --- /dev/null +++ b/src/libs/mock.ts @@ -0,0 +1,42 @@ +import { newImg } from '@/utils/common' + +const bookList = [ + { name: '南方有乔木', auther: '使者颜良', img: newImg('cover', '1.png') }, + { name: '无意降落人间', auther: '惊鸿一页', img: newImg('cover', '2.png') }, + { name: '王子与公主的爱情', auther: '山间隐落', img: newImg('cover', '3.png') }, + { name: '奴家有新人', auther: '一笑倾城', img: newImg('cover', '4.png') }, + { name: '回眸为年轻', auther: '雨中落幕', img: newImg('cover', '5.png') }, + { name: '踩着风车在爱你', auther: '乡村仙人', img: newImg('cover', '6.png') }, +] + +export const homePage = { + swipe_list: [ + { id: 1, name: '背景', pic: newImg('home', 'bk_1.png') }, + { id: 2, name: '背景', pic: newImg('home', 'bk_2.png') }, + ], + link_list: [ + { id: 1, name: '分类', pic: newImg('home', 'fl.png') }, + { id: 2, name: '完本', pic: newImg('home', 'wb.png') }, + { id: 3, name: '免费', pic: newImg('home', 'mf.png') }, + { id: 4, name: '排行', pic: newImg('home', 'ph.png') }, + { id: 5, name: '福利', pic: newImg('home', 'fli.png') }, + ], + bookList: bookList +} + +export const catePage = { + side_list: [ + { id: 1, name: '精选', }, + { id: 2, name: '言情', }, + { id: 3, name: '玄幻', }, + { id: 4, name: '都市', }, + { id: 5, name: '仙侠', }, + { id: 6, name: '科幻', }, + { id: 7, name: '穿越', }, + ], + bookList: bookList +} + +export const bookPage = { + bookList: bookList +} \ No newline at end of file diff --git a/src/libs/rules.ts b/src/libs/rules.ts new file mode 100644 index 0000000000000000000000000000000000000000..139a35096b6ffdfe22388b8e18e88f7c29ddcd25 --- /dev/null +++ b/src/libs/rules.ts @@ -0,0 +1,17 @@ +import type { FieldRule } from 'vant' +import { isPassword } from '@/utils/validate' + +const nameRules: FieldRule[] = [{ required: true, message: '请输入账号~' }] +const passwordRules: FieldRule[] = [ + { required: true, message: '请输入密码~' }, + { pattern: isPassword(), message: '密码须字母、数字、符号等组合且长度限制6~18位~' } +] +const verifyRules: FieldRule[] = [{ required: true, message: '请输入验证码~' }] + + +export default { + nameRules, + passwordRules, + verifyRules, +} + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f43203dde49bacbc46655ce662e742000717fb6 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,18 @@ +import { createApp } from 'vue' +import '@/styles/index.scss' +import App from './App.vue' +import router from '@/router' +import { setupStore } from '@/store'; +import 'vant/es/toast/style'; +import './permission' + + + + + + +const app = createApp(App) +//pinia +setupStore(app); + +app.use(router).mount('#app') diff --git a/src/permission.ts b/src/permission.ts new file mode 100644 index 0000000000000000000000000000000000000000..45558302b1303ef486e5021c1142920810ba4982 --- /dev/null +++ b/src/permission.ts @@ -0,0 +1,24 @@ +import router from "@/router"; +// import { useUserStoreHook } from "@/store/modules/user"; + + + +// 白名单路由 +// const whiteList = ["/login"]; + +router.beforeEach(async (to, from, next) => { + next() +// const hasToken = localStorage.getItem("accessToken"); +// if (hasToken) { + +// } else { +// // 未登录可以访问白名单页面 +// if (whiteList.indexOf(to.path) !== -1) { +// next(); +// } else { +// next(`/login`); + +// } +// } +}); + diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..020f7c8cd2b78eae020b100395897da68b497e09 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,66 @@ +import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"; + +export const Layout = () => import("@/layout/index.vue") + +const routes: RouteRecordRaw[] = [ + { + path:'/', + redirect:'/login' + }, + { + path: '/login', + name: 'login', + component: () => import('@/view/login/index.vue') + }, + { + path: "/home", + component: Layout, + children: [ + { + path: '', + name: 'home', + component: () => import('@/view/home/index.vue') + } + ] + }, + { + path: "/book", + component: Layout, + children: [ + { + path: '', + name: 'book', + component: () => import('@/view/book/index.vue') + } + ] + }, + { + path: "/cate", + component: Layout, + children: [ + { + path: '', + name: 'cate', + component: () => import('@/view/cate/index.vue') + } + ] + }, + { + path: "/user", + component: Layout, + children: [ + { + path: '', + name: 'user', + component: () => import('@/view/users/index.vue') + } + ] + }, +] + +const router = createRouter({ + history: createWebHashHistory(), + routes: routes as RouteRecordRaw[], +}) + +export default router diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..061302200eb5439c85361331ed24c2ae1c03c229 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,11 @@ +import type { App } from 'vue'; +import { createPinia } from 'pinia'; + +const store = createPinia(); + +// 全局注册 store +export function setupStore(app: App) { + app.use(store); +} + +export { store }; \ No newline at end of file diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000000000000000000000000000000000000..1b8ca3384708b0700b441bb975d213fef1d38779 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,39 @@ +import { defineStore } from "pinia"; +import { store } from '@/store'; +import { getLogin } from '@/api/login' +import { LoginData } from "@/api/login/types"; +import { useStorage } from '@vueuse/core'; + +export const userStore = defineStore('user', () => { + // state + const token = useStorage("accessToken", ""); + const nickname = ref(''); + const avatar = ref(''); + + function login(loginData: LoginData) { + return new Promise((resolve, reject) => { + getLogin(loginData) + .then(({ data }) => { + token.value = data.tokenType + " " + data.accessToken; + nickname.value = data.nickname; + avatar.value = data.avatar; + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); + } + + return { + token, + nickname, + avatar, + login, + }; +}) + +// 非setup +export function useUserStoreHook() { + return userStore(store); +} \ No newline at end of file diff --git a/src/styles/flex.scss b/src/styles/flex.scss new file mode 100644 index 0000000000000000000000000000000000000000..1cb87cdb8d245584befd9a22e78d5e399fd098e8 --- /dev/null +++ b/src/styles/flex.scss @@ -0,0 +1,495 @@ +.f { + display: flex; + } +.f1 { + flex: 1 ; +} +.f-d-z { + display: flex; + flex: 0 0 auto; +} +.f-z { + display: flex; + flex: 1 1 auto; +} +.f-w { + display: flex; + flex-wrap: wrap; +} +.f-row { + display: flex; + flex-direction: row; +} +.f-row-s { + display: flex; + flex-direction: row; + justify-content: flex-start; +} +.f-row-s-s { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; +} +.f-row-s-c { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; +} +.f-row-s-e { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-end; +} +.f-row-c { + display: flex; + flex-direction: row; + justify-content: center; +} +.f-row-c-s { + display: flex; + flex-direction: row; + justify-content: center; + align-items: flex-start; +} +.f-row-c-c { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} +.f-row-c-e { + display: flex; + flex-direction: row; + justify-content: center; + align-items: flex-end; +} +.f-row-e { + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.f-row-e-s { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: flex-start; +} +.f-row-e-c { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; +} +.f-row-e-e { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: flex-end; +} +.f-row-b { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.f-row-b-s { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: flex-start; +} +.f-row-b-c { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} +.f-row-b-e { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: flex-end; +} +.f-row-a { + display: flex; + flex-direction: row; + justify-content: space-around; +} +.f-row-a-s { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-start; +} +.f-row-a-c { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; +} +.f-row-a-e { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-end; +} +.f-col { + display: flex; + flex-direction: column; +} +.f-col-s { + display: flex; + flex-direction: column; + justify-content: flex-start; +} +.f-col-s-s { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; +} +.f-col-s-c { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} +.f-col-s-e { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-end; +} +.f-col-c { + display: flex; + flex-direction: column; + justify-content: center; +} +.f-col-c-s { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; +} +.f-col-c-c { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.f-col-c-e { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-end; +} +.f-col-e { + display: flex; + flex-direction: column; + justify-content: flex-end; +} +.f-col-e-s { + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: flex-start; +} +.f-col-e-c { + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: center; +} +.f-col-e-e { + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: flex-end; +} +.f-col-b { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.f-col-b-s { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; +} +.f-col-b-c { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; +} +.f-col-b-e { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} +.f-col-a { + display: flex; + flex-direction: column; + justify-content: space-around; +} +.f-col-a-s { + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: flex-start; +} +.f-col-a-c { + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} +.f-col-a-e { + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: flex-end; +} +.f-rr { + display: flex; + flex-direction: row-reverse; +} +.f-rr-s { + display: flex; + flex-direction: row-reverse; + justify-content: flex-start; +} +.f-rr-s-s { + display: flex; + flex-direction: row-reverse; + justify-content: flex-start; + align-items: flex-start; +} +.f-rr-s-c { + display: flex; + flex-direction: row-reverse; + justify-content: flex-start; + align-items: center; +} +.f-rr-s-e { + display: flex; + flex-direction: row-reverse; + justify-content: flex-start; + align-items: flex-end; +} +.f-rr-c { + display: flex; + flex-direction: row-reverse; + justify-content: center; +} +.f-rr-c-s { + display: flex; + flex-direction: row-reverse; + justify-content: center; + align-items: flex-start; +} +.f-rr-c-c { + display: flex; + flex-direction: row-reverse; + justify-content: center; + align-items: center; +} +.f-rr-c-e { + display: flex; + flex-direction: row-reverse; + justify-content: center; + align-items: flex-end; +} +.f-rr-e { + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; +} +.f-rr-e-s { + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; + align-items: flex-start; +} +.f-rr-e-c { + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; + align-items: center; +} +.f-rr-e-e { + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; + align-items: flex-end; +} +.f-rr-b { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; +} +.f-rr-b-s { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + align-items: flex-start; +} +.f-rr-b-c { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + align-items: center; +} +.f-rr-b-e { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + align-items: flex-end; +} +.f-rr-a { + display: flex; + flex-direction: row-reverse; + justify-content: space-around; +} +.f-rr-a-s { + display: flex; + flex-direction: row-reverse; + justify-content: space-around; + align-items: flex-start; +} +.f-rr-a-c { + display: flex; + flex-direction: row-reverse; + justify-content: space-around; + align-items: center; +} +.f-rr-a-e { + display: flex; + flex-direction: row-reverse; + justify-content: space-around; + align-items: flex-end; +} +.f-cr { + display: flex; + flex-direction: column-reverse; +} +.f-cr-s { + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; +} +.f-cr-s-s { + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; + align-items: flex-start; +} +.f-cr-s-c { + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; + align-items: center; +} +.f-cr-s-e { + display: flex; + flex-direction: column-reverse; + justify-content: flex-start; + align-items: flex-end; +} +.f-cr-c { + display: flex; + flex-direction: column-reverse; + justify-content: center; +} +.f-cr-c-s { + display: flex; + flex-direction: column-reverse; + justify-content: center; + align-items: flex-start; +} +.f-cr-c-c { + display: flex; + flex-direction: column-reverse; + justify-content: center; + align-items: center; +} +.f-cr-c-e { + display: flex; + flex-direction: column-reverse; + justify-content: center; + align-items: flex-end; +} +.f-cr-e { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; +} +.f-cr-e-s { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; + align-items: flex-start; +} +.f-cr-e-c { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; + align-items: center; +} +.f-cr-e-e { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; + align-items: flex-end; +} +.f-cr-b { + display: flex; + flex-direction: column-reverse; + justify-content: space-between; +} +.f-cr-b-s { + display: flex; + flex-direction: column-reverse; + justify-content: space-between; + align-items: flex-start; +} +.f-cr-b-c { + display: flex; + flex-direction: column-reverse; + justify-content: space-between; + align-items: center; +} +.f-cr-b-e { + display: flex; + flex-direction: column-reverse; + justify-content: space-between; + align-items: flex-end; +} +.f-cr-a { + display: flex; + flex-direction: column-reverse; + justify-content: space-around; +} +.f-cr-a-s { + display: flex; + flex-direction: column-reverse; + justify-content: space-around; + align-items: flex-start; +} +.f-cr-a-c { + display: flex; + flex-direction: column-reverse; + justify-content: space-around; + align-items: center; +} +.f-cr-a-e { + display: flex; + flex-direction: column-reverse; + justify-content: space-around; + align-items: flex-end; +} + diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000000000000000000000000000000000000..29e9da79d3cbed78d7f7505ea41f44b51ccb21fe --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,25 @@ +@import './flex.scss'; + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + } + + @media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + } + \ No newline at end of file diff --git a/src/styles/mixin.scss b/src/styles/mixin.scss new file mode 100644 index 0000000000000000000000000000000000000000..b8a9a50025c5c09ac286d4f04477f5a92fd4a751 --- /dev/null +++ b/src/styles/mixin.scss @@ -0,0 +1,2 @@ +$color: red; + diff --git a/src/styles/vant.scss b/src/styles/vant.scss new file mode 100644 index 0000000000000000000000000000000000000000..883d98755ab7d84ce81ae540b5643dd4492e4121 --- /dev/null +++ b/src/styles/vant.scss @@ -0,0 +1,77 @@ +$main-color:#7a8dff; + +:root:root{ + // Color Palette +--van-black: #000; +--van-white: #fff; +--van-gray-1: #f7f8fa; +--van-gray-2: #f2f3f5; +--van-gray-3: #ebedf0; +--van-gray-4: #dcdee0; +--van-gray-5: #c8c9cc; +--van-gray-6: #969799; +--van-gray-7: #646566; +--van-gray-8: #323233; +--van-red: #ee0a24; +// --van-blue: #5677fc; +--van-blue: #7a8DFF; +--van-orange: #ff976a; +--van-orange-dark: #ed6a0c; +--van-orange-light: #fffbe8; +--van-green: #07c160; + +// Gradient Colors +--van-gradient-red: linear-gradient(to right, #ff6034, #ee0a24); +--van-gradient-orange: linear-gradient(to right, #ffd01e, #ff8917); + +// Component Colors +--van-primary-color: var(--van-blue); +--van-success-color: var(--van-green); +--van-danger-color: var(--van-red); +--van-warning-color: var(--van-orange); +--van-text-color: var(--van-gray-8); +--van-text-color-2: var(--van-gray-6); +--van-text-color-3: var(--van-gray-5); +--van-active-color: var(--van-gray-2); +--van-active-opacity: 0.6; +--van-disabled-opacity: 0.5; +--van-background: var(--van-gray-1); +--van-background-2: var(--van-white); + +// Padding +--van-padding-base: 4px; +--van-padding-xs: 8px; +--van-padding-sm: 12px; +--van-padding-md: 16px; +--van-padding-lg: 24px; +--van-padding-xl: 32px; + +// Font +--van-font-size-xs: 10px; +--van-font-size-sm: 12px; +--van-font-size-md: 14px; +--van-font-size-lg: 16px; +--van-font-bold: 600; +--van-line-height-xs: 14px; +--van-line-height-sm: 18px; +--van-line-height-md: 20px; +--van-line-height-lg: 22px; +--van-base-font: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', + sans-serif; +--van-price-font: Avenir-Heavy, PingFang SC, Helvetica Neue, Arial, sans-serif; + +// Animation +--van-duration-base: 0.3s; +--van-duration-fast: 0.2s; +--van-ease-out: ease-out; +--van-ease-in: ease-in; + +// Border +--van-border-color: var(--van-gray-3); +--van-border-width: 1px; +--van-radius-sm: 2px; +--van-radius-md: 4px; +--van-radius-lg: 8px; +--van-radius-max: 999px; +} diff --git a/src/types/auto-import.d.ts b/src/types/auto-import.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0053cb6cc6d580b1f4699b18feeb9e63252778a9 --- /dev/null +++ b/src/types/auto-import.d.ts @@ -0,0 +1,286 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] + const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] + const computed: typeof import('vue')['computed'] + const computedAsync: typeof import('@vueuse/core')['computedAsync'] + const computedEager: typeof import('@vueuse/core')['computedEager'] + const computedInject: typeof import('@vueuse/core')['computedInject'] + const computedWithControl: typeof import('@vueuse/core')['computedWithControl'] + const controlledComputed: typeof import('@vueuse/core')['controlledComputed'] + const controlledRef: typeof import('@vueuse/core')['controlledRef'] + const createApp: typeof import('vue')['createApp'] + const createEventHook: typeof import('@vueuse/core')['createEventHook'] + const createGlobalState: typeof import('@vueuse/core')['createGlobalState'] + const createInjectionState: typeof import('@vueuse/core')['createInjectionState'] + const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn'] + const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate'] + const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable'] + const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise'] + const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn'] + const customRef: typeof import('vue')['customRef'] + const debouncedRef: typeof import('@vueuse/core')['debouncedRef'] + const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const eagerComputed: typeof import('@vueuse/core')['eagerComputed'] + const effectScope: typeof import('vue')['effectScope'] + const extendRef: typeof import('@vueuse/core')['extendRef'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch'] + const inject: typeof import('vue')['inject'] + const isDefined: typeof import('@vueuse/core')['isDefined'] + 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 makeDestructurable: typeof import('@vueuse/core')['makeDestructurable'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onClickOutside: typeof import('@vueuse/core')['onClickOutside'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke'] + const onLongPress: typeof import('@vueuse/core')['onLongPress'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onStartTyping: typeof import('@vueuse/core')['onStartTyping'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const pausableWatch: typeof import('@vueuse/core')['pausableWatch'] + const provide: typeof import('vue')['provide'] + const reactify: typeof import('@vueuse/core')['reactify'] + const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] + const reactive: typeof import('vue')['reactive'] + const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed'] + const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit'] + const reactivePick: typeof import('@vueuse/core')['reactivePick'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const refAutoReset: typeof import('@vueuse/core')['refAutoReset'] + const refDebounced: typeof import('@vueuse/core')['refDebounced'] + const refDefault: typeof import('@vueuse/core')['refDefault'] + const refThrottled: typeof import('@vueuse/core')['refThrottled'] + const refWithControl: typeof import('@vueuse/core')['refWithControl'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const resolveRef: typeof import('@vueuse/core')['resolveRef'] + const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const syncRef: typeof import('@vueuse/core')['syncRef'] + const syncRefs: typeof import('@vueuse/core')['syncRefs'] + const templateRef: typeof import('@vueuse/core')['templateRef'] + const throttledRef: typeof import('@vueuse/core')['throttledRef'] + const throttledWatch: typeof import('@vueuse/core')['throttledWatch'] + const toRaw: typeof import('vue')['toRaw'] + const toReactive: typeof import('@vueuse/core')['toReactive'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const triggerRef: typeof import('vue')['triggerRef'] + const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount'] + const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount'] + const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted'] + const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose'] + const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted'] + const unref: typeof import('vue')['unref'] + const unrefElement: typeof import('@vueuse/core')['unrefElement'] + const until: typeof import('@vueuse/core')['until'] + const useActiveElement: typeof import('@vueuse/core')['useActiveElement'] + const useAnimate: typeof import('@vueuse/core')['useAnimate'] + const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference'] + const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery'] + const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] + const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] + const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] + const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast'] + const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes'] + const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] + const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] + const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] + const useArraySome: typeof import('@vueuse/core')['useArraySome'] + const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique'] + const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] + const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] + const useAttrs: typeof import('vue')['useAttrs'] + const useBase64: typeof import('@vueuse/core')['useBase64'] + const useBattery: typeof import('@vueuse/core')['useBattery'] + const useBluetooth: typeof import('@vueuse/core')['useBluetooth'] + const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints'] + const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel'] + const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation'] + const useCached: typeof import('@vueuse/core')['useCached'] + const useClipboard: typeof import('@vueuse/core')['useClipboard'] + const useCloned: typeof import('@vueuse/core')['useCloned'] + const useColorMode: typeof import('@vueuse/core')['useColorMode'] + const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog'] + const useCounter: typeof import('@vueuse/core')['useCounter'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVar: typeof import('@vueuse/core')['useCssVar'] + const useCssVars: typeof import('vue')['useCssVars'] + const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement'] + const useCycleList: typeof import('@vueuse/core')['useCycleList'] + const useDark: typeof import('@vueuse/core')['useDark'] + const useDateFormat: typeof import('@vueuse/core')['useDateFormat'] + const useDebounce: typeof import('@vueuse/core')['useDebounce'] + const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn'] + const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory'] + const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion'] + const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation'] + const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio'] + const useDevicesList: typeof import('@vueuse/core')['useDevicesList'] + const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia'] + const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility'] + const useDraggable: typeof import('@vueuse/core')['useDraggable'] + const useDropZone: typeof import('@vueuse/core')['useDropZone'] + const useElementBounding: typeof import('@vueuse/core')['useElementBounding'] + const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint'] + const useElementHover: typeof import('@vueuse/core')['useElementHover'] + const useElementSize: typeof import('@vueuse/core')['useElementSize'] + const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility'] + const useEventBus: typeof import('@vueuse/core')['useEventBus'] + const useEventListener: typeof import('@vueuse/core')['useEventListener'] + const useEventSource: typeof import('@vueuse/core')['useEventSource'] + const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper'] + const useFavicon: typeof import('@vueuse/core')['useFavicon'] + const useFetch: typeof import('@vueuse/core')['useFetch'] + const useFileDialog: typeof import('@vueuse/core')['useFileDialog'] + const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess'] + const useFocus: typeof import('@vueuse/core')['useFocus'] + const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin'] + const useFps: typeof import('@vueuse/core')['useFps'] + const useFullscreen: typeof import('@vueuse/core')['useFullscreen'] + const useGamepad: typeof import('@vueuse/core')['useGamepad'] + const useGeolocation: typeof import('@vueuse/core')['useGeolocation'] + const useIdle: typeof import('@vueuse/core')['useIdle'] + const useImage: typeof import('@vueuse/core')['useImage'] + const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll'] + const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver'] + const useInterval: typeof import('@vueuse/core')['useInterval'] + const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn'] + const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier'] + const useLastChanged: typeof import('@vueuse/core')['useLastChanged'] + const useLink: typeof import('vue-router')['useLink'] + const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage'] + const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys'] + const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory'] + const useMediaControls: typeof import('@vueuse/core')['useMediaControls'] + const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery'] + const useMemoize: typeof import('@vueuse/core')['useMemoize'] + const useMemory: typeof import('@vueuse/core')['useMemory'] + const useMounted: typeof import('@vueuse/core')['useMounted'] + const useMouse: typeof import('@vueuse/core')['useMouse'] + const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement'] + const useMousePressed: typeof import('@vueuse/core')['useMousePressed'] + const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver'] + const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage'] + const useNetwork: typeof import('@vueuse/core')['useNetwork'] + const useNow: typeof import('@vueuse/core')['useNow'] + const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl'] + const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination'] + const useOnline: typeof import('@vueuse/core')['useOnline'] + const usePageLeave: typeof import('@vueuse/core')['usePageLeave'] + const useParallax: typeof import('@vueuse/core')['useParallax'] + const useParentElement: typeof import('@vueuse/core')['useParentElement'] + const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver'] + const usePermission: typeof import('@vueuse/core')['usePermission'] + const usePointer: typeof import('@vueuse/core')['usePointer'] + const usePointerLock: typeof import('@vueuse/core')['usePointerLock'] + const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe'] + const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] + const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast'] + const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] + const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] + const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] + const usePrevious: typeof import('@vueuse/core')['usePrevious'] + const useRafFn: typeof import('@vueuse/core')['useRafFn'] + const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] + const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] + const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] + const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] + const useScroll: typeof import('@vueuse/core')['useScroll'] + const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] + const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] + const useShare: typeof import('@vueuse/core')['useShare'] + const useSlots: typeof import('vue')['useSlots'] + const useSorted: typeof import('@vueuse/core')['useSorted'] + const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] + const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis'] + const useStepper: typeof import('@vueuse/core')['useStepper'] + const useStorage: typeof import('@vueuse/core')['useStorage'] + const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync'] + const useStyleTag: typeof import('@vueuse/core')['useStyleTag'] + const useSupported: typeof import('@vueuse/core')['useSupported'] + const useSwipe: typeof import('@vueuse/core')['useSwipe'] + const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList'] + const useTextDirection: typeof import('@vueuse/core')['useTextDirection'] + const useTextSelection: typeof import('@vueuse/core')['useTextSelection'] + const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize'] + const useThrottle: typeof import('@vueuse/core')['useThrottle'] + const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn'] + const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory'] + const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo'] + const useTimeout: typeof import('@vueuse/core')['useTimeout'] + const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn'] + const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll'] + const useTimestamp: typeof import('@vueuse/core')['useTimestamp'] + const useTitle: typeof import('@vueuse/core')['useTitle'] + const useToNumber: typeof import('@vueuse/core')['useToNumber'] + const useToString: typeof import('@vueuse/core')['useToString'] + const useToggle: typeof import('@vueuse/core')['useToggle'] + const useTransition: typeof import('@vueuse/core')['useTransition'] + const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams'] + const useUserMedia: typeof import('@vueuse/core')['useUserMedia'] + const useVModel: typeof import('@vueuse/core')['useVModel'] + const useVModels: typeof import('@vueuse/core')['useVModels'] + const useVibrate: typeof import('@vueuse/core')['useVibrate'] + const useVirtualList: typeof import('@vueuse/core')['useVirtualList'] + const useWakeLock: typeof import('@vueuse/core')['useWakeLock'] + const useWebNotification: typeof import('@vueuse/core')['useWebNotification'] + const useWebSocket: typeof import('@vueuse/core')['useWebSocket'] + const useWebWorker: typeof import('@vueuse/core')['useWebWorker'] + const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn'] + const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus'] + const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll'] + const useWindowSize: typeof import('@vueuse/core')['useWindowSize'] + const watch: typeof import('vue')['watch'] + const watchArray: typeof import('@vueuse/core')['watchArray'] + const watchAtMost: typeof import('@vueuse/core')['watchAtMost'] + const watchDebounced: typeof import('@vueuse/core')['watchDebounced'] + const watchDeep: typeof import('@vueuse/core')['watchDeep'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable'] + const watchImmediate: typeof import('@vueuse/core')['watchImmediate'] + const watchOnce: typeof import('@vueuse/core')['watchOnce'] + const watchPausable: typeof import('@vueuse/core')['watchPausable'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] + const watchThrottled: typeof import('@vueuse/core')['watchThrottled'] + const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable'] + const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] + const whenever: typeof import('@vueuse/core')['whenever'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue' +} diff --git a/src/types/components.d.ts b/src/types/components.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7c1d1d495f59cca7e66f2c111bc1e4fed6a3d267 --- /dev/null +++ b/src/types/components.d.ts @@ -0,0 +1,43 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + ImageVerify: typeof import('./../components/ImageVerify/ImageVerify.vue')['default'] + List: typeof import('./../components/common/list.vue')['default'] + Refresh: typeof import('./../components/Refresh/index.vue')['default'] + RefreshList: typeof import('./../components/refreshList/index.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + VanButton: typeof import('vant/es')['Button'] + VanCell: typeof import('vant/es')['Cell'] + VanCellGroup: typeof import('vant/es')['CellGroup'] + VanEmpty: typeof import('vant/es')['Empty'] + VanField: typeof import('vant/es')['Field'] + VanForm: typeof import('vant/es')['Form'] + VanGrid: typeof import('vant/es')['Grid'] + VanGridItem: typeof import('vant/es')['GridItem'] + VanIcon: typeof import('vant/es')['Icon'] + VanImage: typeof import('vant/es')['Image'] + VanList: typeof import('vant/es')['List'] + VanNavBar: typeof import('vant/es')['NavBar'] + VanPullRefresh: typeof import('vant/es')['PullRefresh'] + VanRadio: typeof import('vant/es')['Radio'] + VanRadioGroup: typeof import('vant/es')['RadioGroup'] + VanSearch: typeof import('vant/es')['Search'] + VanSidebar: typeof import('vant/es')['Sidebar'] + VanSidebarItem: typeof import('vant/es')['SidebarItem'] + VanSticky: typeof import('vant/es')['Sticky'] + VanSwipe: typeof import('vant/es')['Swipe'] + VanSwipeItem: typeof import('vant/es')['SwipeItem'] + VanTabbar: typeof import('vant/es')['Tabbar'] + VanTabbarItem: typeof import('vant/es')['TabbarItem'] + VanTag: typeof import('vant/es')['Tag'] + } +} diff --git a/src/types/vite-env.d.ts b/src/types/vite-env.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..11f02fe2a0061d6e6e1f271b21da95423b448b32 --- /dev/null +++ b/src/types/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000000000000000000000000000000000000..037c6682bb7b491b6865bceb18c4adbf41c049a2 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,9 @@ + + /** + * 获取本地图 + * @param name // 文件名 如 doc.png + * @returns {*|string} + */ +export function newImg(file: string, name: string) :string { + return new URL(`/src/assets/${file}/${name}`, import.meta.url).href; +} \ No newline at end of file diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000000000000000000000000000000000000..540d32c1bf0b7eb0743ee9495d33c656d4079cd1 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,39 @@ +import axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios' + + +const service = axios.create({ + baseURL: '', + timeout: 50000, + headers: { 'Content-Type': 'application/json;charset=utf-8' } +}) + +service.interceptors.request.use((config: InternalAxiosRequestConfig) => { + // if(token){ + // config.headers.Authorization = token + // } + return config +}, (error: any) => { + return Promise.reject(error) +} +) + +service.interceptors.response.use((response: AxiosResponse) => { + const { code, msg } = response.data + + if (code == '00000') { + return response.data + } + + return Promise.reject(new Error(msg || 'Error')) +}, (error: any) => { + if (error.response.data) { + const { code, msg } = error.response.data + if (code == '401') { + + } + } + return Promise.reject(error.message) +} +) + +export default service \ No newline at end of file diff --git a/src/utils/validate.ts b/src/utils/validate.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8480358f39c7b663f9848be8db9020a15cb33cb --- /dev/null +++ b/src/utils/validate.ts @@ -0,0 +1,9 @@ +/** + * 密码须字母、数字、符号等组合且长度限制6~18位~ + * @param + * @returns {} + */ +export function isPassword(): RegExp { + const reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,}$/; + return reg +} \ No newline at end of file diff --git a/src/view/book/index.vue b/src/view/book/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..8cce6627b63091fb21584338141503808dadf70b --- /dev/null +++ b/src/view/book/index.vue @@ -0,0 +1,80 @@ + + + + + \ No newline at end of file diff --git a/src/view/cate/index.vue b/src/view/cate/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6ca3d2cf1febc88cfbd9216e04fc2195546e8a0e --- /dev/null +++ b/src/view/cate/index.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/src/view/home/index.vue b/src/view/home/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5a917f055a4b33164514423d637bb73d7a4877dd --- /dev/null +++ b/src/view/home/index.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/src/view/login/index.vue b/src/view/login/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..018dcf94f65b2c7c58f84f823b080a5db8a1aa30 --- /dev/null +++ b/src/view/login/index.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/src/view/users/index.vue b/src/view/users/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..09004aebe0a613144f03f3357b9d48ccea5fdcb5 --- /dev/null +++ b/src/view/users/index.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..bc5cbaf5f78c063c603b420ed79f730c5979777e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": "./", + "paths":{ + "@": ["src"], + "@/*": ["src/*"], + } + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }], +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000000000000000000000000000000000000..42872c59f5b01c9155864572bc2fbd5833a7406c --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index 4ad898dec614e030adad5e4f80523145bce56245..0000000000000000000000000000000000000000 --- a/vite.config.js +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -// https://vitejs.dev/config/ -export default defineConfig({ - server: { - host: true - }, - plugins: [vue()] -}) diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1d9389c9398f20c80de6ed93f04c6776a6454f7 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,40 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +// 自动导入vue中hook reactive ref等 +import AutoImport from "unplugin-auto-import/vite" +import Components from 'unplugin-vue-components/vite'; +import { VantResolver } from 'unplugin-vue-components/resolvers'; + +import path from "path"; +const pathSrc = path.resolve(__dirname, "./src"); + +export default defineConfig({ + resolve:{ + alias: { + '@': pathSrc, + }, + }, + plugins: [ + vue(), + AutoImport({ + //安装两行后你会发现在组件中不用再导入ref,reactive等 + imports: ['vue', 'vue-router',"@vueuse/core"], + //存放的位置 + dts: "src/types/auto-import.d.ts", + }), + Components({ + // 按需导入vant组件 + resolvers: [VantResolver()], + // 引入组件的,包括自定义组件 存放的位置 + dts: "src/types/components.d.ts", + }), + ], + css: { + preprocessorOptions: { + //定义全局scss变量 + scss: { + additionalData: `@import "@/styles/mixin.scss";@import "@/styles/vant.scss";` + } + } + } +}) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000000000000000000000000000000000..13c5a16b12d9b2993a5f1d6188a2dcb50f47015f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1042 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@antfu/utils@^0.7.2": + version "0.7.2" + resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.2.tgz#3bb6f37a6b188056fe9e2f363b6aa735ed65d7ca" + integrity sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g== + +"@babel/parser@^7.16.4", "@babel/parser@^7.20.15", "@babel/parser@^7.21.3": + version "7.21.8" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" + integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== + +"@esbuild/android-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" + integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== + +"@esbuild/android-arm@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" + integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== + +"@esbuild/android-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" + integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== + +"@esbuild/darwin-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" + integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== + +"@esbuild/darwin-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" + integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== + +"@esbuild/freebsd-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" + integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== + +"@esbuild/freebsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" + integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== + +"@esbuild/linux-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" + integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== + +"@esbuild/linux-arm@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" + integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== + +"@esbuild/linux-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" + integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== + +"@esbuild/linux-loong64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" + integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== + +"@esbuild/linux-mips64el@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" + integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== + +"@esbuild/linux-ppc64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" + integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== + +"@esbuild/linux-riscv64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" + integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== + +"@esbuild/linux-s390x@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" + integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== + +"@esbuild/linux-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" + integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== + +"@esbuild/netbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" + integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== + +"@esbuild/openbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" + integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== + +"@esbuild/sunos-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" + integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== + +"@esbuild/win32-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" + integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== + +"@esbuild/win32-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" + integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== + +"@esbuild/win32-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" + integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== + +"@jridgewell/sourcemap-codec@^1.4.13": + version "1.4.15" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rollup/pluginutils@^5.0.2": + version "5.0.2" + resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + +"@types/node@^20.1.0": + version "20.1.0" + resolved "https://registry.npmmirror.com/@types/node/-/node-20.1.0.tgz#258805edc37c327cf706e64c6957f241ca4c4c20" + integrity sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A== + +"@types/web-bluetooth@^0.0.17": + version "0.0.17" + resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" + integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== + +"@vant/popperjs@^1.3.0": + version "1.3.0" + resolved "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz#e0eff017124b5b2352ef3b36a6df06277f4400f2" + integrity sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw== + +"@vant/use@^1.5.1": + version "1.5.1" + resolved "https://registry.npmmirror.com/@vant/use/-/use-1.5.1.tgz#bc5eb46d92d64e4261f0a9e31a040bdb3d8282b3" + integrity sha512-Zxd7lDz/LliVYEQi3PR9a8CQa/kGCVzF0u9hqDMaTlgXlbG0wHMFPllrcG0ThR6bfs8xrYVuSFM9pJn6HSoUGQ== + +"@vitejs/plugin-vue@^4.1.0": + version "4.2.1" + resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.1.tgz#c3ccce9956e8cdca946f465188777e4e3e488f6a" + integrity sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw== + +"@volar/language-core@1.4.1": + version "1.4.1" + resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.4.1.tgz#66b5758252e35c4e5e71197ca7fa0344d306442c" + integrity sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ== + dependencies: + "@volar/source-map" "1.4.1" + +"@volar/source-map@1.4.1": + version "1.4.1" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.4.1.tgz#e3b561775c742508e5e1f28609a4787c98056715" + integrity sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA== + dependencies: + muggle-string "^0.2.2" + +"@volar/typescript@1.4.1": + version "1.4.1" + resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.4.1.tgz#a013419e6f029155e5467443f3ab72815da608b5" + integrity sha512-phTy6p9yG6bgMIKQWEeDOi/aeT0njZsb1a/G1mrEuDsLmAn24Le4gDwSsGNhea6Uhu+3gdpUZn2PmZXa+WG2iQ== + dependencies: + "@volar/language-core" "1.4.1" + +"@volar/vue-language-core@1.6.4": + version "1.6.4" + resolved "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.6.4.tgz#b1d695861945e63c65ff4e74609b07cb06772b7c" + integrity sha512-1o+cAtN2DIDNAX/HS8rkjZc8wTMTK+zCab/qtYbvEVlmokhZiDrQeoD9/l0Ug7YCNg+mVuMNHKNBY7pX8U2/Jw== + dependencies: + "@volar/language-core" "1.4.1" + "@volar/source-map" "1.4.1" + "@vue/compiler-dom" "^3.3.0-beta.3" + "@vue/compiler-sfc" "^3.3.0-beta.3" + "@vue/reactivity" "^3.3.0-beta.3" + "@vue/shared" "^3.3.0-beta.3" + minimatch "^9.0.0" + muggle-string "^0.2.2" + vue-template-compiler "^2.7.14" + +"@volar/vue-typescript@1.6.4": + version "1.6.4" + resolved "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.6.4.tgz#9358e2c7cdb5bdc3ef05926084be4bb6cd3673f7" + integrity sha512-qKwgP0KVQR/aaH/SN3AP7RB8NnXPWDn3tjyXP6IT6etxkDeZLBLsXWUD9KMak/RvV1DgbXDuz4F9yuZlbt29rA== + dependencies: + "@volar/typescript" "1.4.1" + "@volar/vue-language-core" "1.6.4" + +"@vue/compiler-core@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz#3e07c684d74897ac9aa5922c520741f3029267f8" + integrity sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.47" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-core@3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.0-beta.3.tgz#3cc98d9ef25d2f890717f8a15fe65870910e984f" + integrity sha512-mv2rPo4JHou6ebm7+U/wO1HpA6W1zDfTqbt4fqjoXrMwU4DWNgRcLKTXG6G3cXV4mOe+2YgWspfxEzo7fPTMKg== + dependencies: + "@babel/parser" "^7.21.3" + "@vue/shared" "3.3.0-beta.3" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305" + integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ== + dependencies: + "@vue/compiler-core" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/compiler-dom@3.3.0-beta.3", "@vue/compiler-dom@^3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.0-beta.3.tgz#8b1d76428413d51d76a7b3f567ccea47428d5ebe" + integrity sha512-e7VpjN9wYiuJdJos6Uoe501CzdMkfaEr/27Ks4Ss7Irtcj5YA/S1OROZ35Xl2Pc3ctx6beq5RpcOvnMqh0hcaA== + dependencies: + "@vue/compiler-core" "3.3.0-beta.3" + "@vue/shared" "3.3.0-beta.3" + +"@vue/compiler-sfc@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d" + integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.47" + "@vue/compiler-dom" "3.2.47" + "@vue/compiler-ssr" "3.2.47" + "@vue/reactivity-transform" "3.2.47" + "@vue/shared" "3.2.47" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-sfc@^3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.0-beta.3.tgz#8d60a57eaf6a8675463c4640124dafecf78c8961" + integrity sha512-6shZNooetShjSMHJvgVoE0EM8pOMV5vnrzsHoCU06stzV+kqRJQpbN7xf2s9wK2fgHMIBSMINrM9AuZiQnNCJg== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.0-beta.3" + "@vue/compiler-dom" "3.3.0-beta.3" + "@vue/compiler-ssr" "3.3.0-beta.3" + "@vue/reactivity-transform" "3.3.0-beta.3" + "@vue/shared" "3.3.0-beta.3" + estree-walker "^2.0.2" + magic-string "^0.30.0" + postcss "^8.1.10" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee" + integrity sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw== + dependencies: + "@vue/compiler-dom" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/compiler-ssr@3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.0-beta.3.tgz#179e2c0a4de617addfb6ebc0776225265f5c7829" + integrity sha512-egJ0lEVAod3Hpnw96cJ/0a9qv5f5h5/VCBpKYT8scqkzoMsikh8AJant2omokBCL/Ut5UAMLVQlA5b66+2Ys/g== + dependencies: + "@vue/compiler-dom" "3.3.0-beta.3" + "@vue/shared" "3.3.0-beta.3" + +"@vue/devtools-api@^6.4.5", "@vue/devtools-api@^6.5.0": + version "6.5.0" + resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" + integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + +"@vue/reactivity-transform@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz#e45df4d06370f8abf29081a16afd25cffba6d84e" + integrity sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.47" + "@vue/shared" "3.2.47" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity-transform@3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.0-beta.3.tgz#424a70d43fb4893131b2c1fba9a9e6806ebeabe0" + integrity sha512-aM3TgBca9QMMu/9B9ASRVvckeZpAdJO9nmQh5UCznhoDYjVxQPS+sCQvH6TLOjPB1MDQMVQYg4ZiPqfVVo7NbA== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.0-beta.3" + "@vue/shared" "3.3.0-beta.3" + estree-walker "^2.0.2" + magic-string "^0.30.0" + +"@vue/reactivity@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz#1d6399074eadfc3ed35c727e2fd707d6881140b6" + integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ== + dependencies: + "@vue/shared" "3.2.47" + +"@vue/reactivity@^3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.0-beta.3.tgz#8f4929df4195f9d1b5a083d4c66d22932dfcc89d" + integrity sha512-9VjWfWgZJ18YXEkfnDfZr33RyLBa6zc0RARLkMqMApWvM26eusZAZ4hhyxlgODBU/mEFk4XOGIAtwwSQedA0MQ== + dependencies: + "@vue/shared" "3.3.0-beta.3" + +"@vue/runtime-core@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz#406ebade3d5551c00fc6409bbc1eeb10f32e121d" + integrity sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA== + dependencies: + "@vue/reactivity" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/runtime-dom@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz#93e760eeaeab84dedfb7c3eaf3ed58d776299382" + integrity sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA== + dependencies: + "@vue/runtime-core" "3.2.47" + "@vue/shared" "3.2.47" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz#8aa1d1871fc4eb5a7851aa7f741f8f700e6de3c0" + integrity sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA== + dependencies: + "@vue/compiler-ssr" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/shared@3.2.47": + version "3.2.47" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c" + integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ== + +"@vue/shared@3.3.0-beta.3", "@vue/shared@^3.3.0-beta.3": + version "3.3.0-beta.3" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.0-beta.3.tgz#dc19df6124e157030b3e7c8f471f497f9528a7be" + integrity sha512-st1SnB/Bkbb9TsieeI4TRX9TqHYIR5wvIma3ZtEben55EYSWa1q5u2BhTNgABSdH+rv3Xwfrvpwh5PmCw6Y53g== + +"@vueuse/core@^10.1.2": + version "10.1.2" + resolved "https://registry.npmmirror.com/@vueuse/core/-/core-10.1.2.tgz#2499eadec36c5d7109338e3a2b73725040ae8011" + integrity sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA== + dependencies: + "@types/web-bluetooth" "^0.0.17" + "@vueuse/metadata" "10.1.2" + "@vueuse/shared" "10.1.2" + vue-demi ">=0.14.0" + +"@vueuse/metadata@10.1.2": + version "10.1.2" + resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.1.2.tgz#d8ffe557b1042efd03a0aa88540a00c25d193ee3" + integrity sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ== + +"@vueuse/shared@10.1.2": + version "10.1.2" + resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.1.2.tgz#31d8733a217a6396eb67706319133bf62cdd8baa" + integrity sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA== + dependencies: + vue-demi ">=0.14.0" + +acorn@^8.8.2: + version "8.8.2" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +csstype@^2.6.8: + version "2.6.21" + resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +esbuild@^0.17.5: + version "0.17.18" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" + integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== + optionalDependencies: + "@esbuild/android-arm" "0.17.18" + "@esbuild/android-arm64" "0.17.18" + "@esbuild/android-x64" "0.17.18" + "@esbuild/darwin-arm64" "0.17.18" + "@esbuild/darwin-x64" "0.17.18" + "@esbuild/freebsd-arm64" "0.17.18" + "@esbuild/freebsd-x64" "0.17.18" + "@esbuild/linux-arm" "0.17.18" + "@esbuild/linux-arm64" "0.17.18" + "@esbuild/linux-ia32" "0.17.18" + "@esbuild/linux-loong64" "0.17.18" + "@esbuild/linux-mips64el" "0.17.18" + "@esbuild/linux-ppc64" "0.17.18" + "@esbuild/linux-riscv64" "0.17.18" + "@esbuild/linux-s390x" "0.17.18" + "@esbuild/linux-x64" "0.17.18" + "@esbuild/netbsd-x64" "0.17.18" + "@esbuild/openbsd-x64" "0.17.18" + "@esbuild/sunos-x64" "0.17.18" + "@esbuild/win32-arm64" "0.17.18" + "@esbuild/win32-ia32" "0.17.18" + "@esbuild/win32-x64" "0.17.18" + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +fast-glob@^3.2.12: + version "3.2.12" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +immutable@^4.0.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +local-pkg@^0.4.3: + version "0.4.3" + resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" + integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.30.0: + version "0.30.0" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" + integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^7.4.2: + version "7.4.6" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0: + version "9.0.0" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.0.tgz#bfc8e88a1c40ffd40c172ddac3decb8451503b56" + integrity sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w== + dependencies: + brace-expansion "^2.0.1" + +mlly@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mlly/-/mlly-1.2.0.tgz#f0f6c2fc8d2d12ea6907cd869066689b5031b613" + integrity sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww== + dependencies: + acorn "^8.8.2" + pathe "^1.1.0" + pkg-types "^1.0.2" + ufo "^1.1.1" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +muggle-string@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz#786aa53fea1652c61c6a59e1f839292b262bc72a" + integrity sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pathe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/pathe/-/pathe-1.1.0.tgz#e2e13f6c62b31a3289af4ba19886c230f295ec03" + integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pinia@^2.0.35: + version "2.0.35" + resolved "https://registry.npmmirror.com/pinia/-/pinia-2.0.35.tgz#aa2597038bb55ea14ad689f83065d2814ebb8c10" + integrity sha512-P1IKKQWhxGXiiZ3atOaNI75bYlFUbRxtJdhPLX059Z7+b9Z04rnTZdSY8Aph1LA+/4QEMAYHsTQ638Wfe+6K5g== + dependencies: + "@vue/devtools-api" "^6.5.0" + vue-demi "*" + +pkg-types@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +postcss@^8.1.10, postcss@^8.4.23: + version "8.4.23" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.22.1: + version "1.22.2" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^3.21.0: + version "3.21.4" + resolved "https://registry.npmmirror.com/rollup/-/rollup-3.21.4.tgz#61af40f1d48d0d04fb20114af73db7367f7151fa" + integrity sha512-N5LxpvDolOm9ueiCp4NfB80omMDqb45ShtsQw2+OT3f11uJ197dv703NZvznYHP6RWR85wfxanXurXKG3ux2GQ== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +sass@^1.62.1: + version "1.62.1" + resolved "https://registry.npmmirror.com/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029" + integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +scule@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/scule/-/scule-1.0.0.tgz#895e6f4ba887e78d8b9b4111e23ae84fef82376d" + integrity sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ== + +semver@^7.3.8: + version "7.5.0" + resolved "https://registry.npmmirror.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +strip-literal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-1.0.1.tgz#0115a332710c849b4e46497891fb8d585e404bd2" + integrity sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q== + dependencies: + acorn "^8.8.2" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +typescript@^5.0.2: + version "5.0.4" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +ufo@^1.1.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/ufo/-/ufo-1.1.2.tgz#d0d9e0fa09dece0c31ffd57bd363f030a35cfe76" + integrity sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ== + +unimport@^3.0.6: + version "3.0.6" + resolved "https://registry.npmmirror.com/unimport/-/unimport-3.0.6.tgz#20caac4cf9a94e9233cdbe3a16f7599ae75a7df8" + integrity sha512-GYxGJ1Bri1oqx8VFDjdgooGzeK7jBk3bvhXmamTIpu3nONOcUMGwZbX7X0L5RA7OWMXpR4vzpSQP7pXUzJg1/Q== + dependencies: + "@rollup/pluginutils" "^5.0.2" + escape-string-regexp "^5.0.0" + fast-glob "^3.2.12" + local-pkg "^0.4.3" + magic-string "^0.30.0" + mlly "^1.2.0" + pathe "^1.1.0" + pkg-types "^1.0.2" + scule "^1.0.0" + strip-literal "^1.0.1" + unplugin "^1.3.1" + +unplugin-auto-import@^0.15.3: + version "0.15.3" + resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.15.3.tgz#abf5f1bf42f8c181e9dd1067bd5645aad727df6e" + integrity sha512-RLT8SqbPn4bT7yBshZId0uPSofKWnwr66RyDaxWaFb/+f7OTDOWAsVNz+hOQLBWSjvbekr2xZY9ccS8TDHJbCQ== + dependencies: + "@antfu/utils" "^0.7.2" + "@rollup/pluginutils" "^5.0.2" + local-pkg "^0.4.3" + magic-string "^0.30.0" + minimatch "^9.0.0" + unimport "^3.0.6" + unplugin "^1.3.1" + +unplugin-vue-components@^0.24.1: + version "0.24.1" + resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz#b5c3419c30a603dd795e3a0d63c4c12f4a5d8274" + integrity sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA== + dependencies: + "@antfu/utils" "^0.7.2" + "@rollup/pluginutils" "^5.0.2" + chokidar "^3.5.3" + debug "^4.3.4" + fast-glob "^3.2.12" + local-pkg "^0.4.3" + magic-string "^0.30.0" + minimatch "^7.4.2" + resolve "^1.22.1" + unplugin "^1.1.0" + +unplugin@^1.1.0, unplugin@^1.3.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz#7af993ba8695d17d61b0845718380caf6af5109f" + integrity sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw== + dependencies: + acorn "^8.8.2" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.5.0" + +vant@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/vant/-/vant-4.3.1.tgz#a0c29a7edc504c495be54867760b1851227a8100" + integrity sha512-SpdNRrG4ANZcZ/t56lilk0rjdr50JygVK3n7IYhDlhEeG3FPYJ0J5j4rCKsmTt7xRGKt4AkgaRyKvOr3zzIkuA== + dependencies: + "@vant/popperjs" "^1.3.0" + "@vant/use" "^1.5.1" + +vite@^4.3.2: + version "4.3.4" + resolved "https://registry.npmmirror.com/vite/-/vite-4.3.4.tgz#1c518d763d5a700d890c3a19ab59220f06e7a7d5" + integrity sha512-f90aqGBoxSFxWph2b39ae2uHAxm5jFBBdnfueNxZAT1FTpM13ccFQExCaKbR2xFW5atowjleRniQ7onjJ22QEg== + dependencies: + esbuild "^0.17.5" + postcss "^8.4.23" + rollup "^3.21.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@*: + version "0.14.0" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.0.tgz#dcfd9a9cf9bb62ada1582ec9042372cf67ca6190" + integrity sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg== + +vue-demi@>=0.14.0: + version "0.14.1" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.1.tgz#1ed9af03a27642762bfed83d8750805302d0398d" + integrity sha512-rt+yuCtXvscYot9SQQj3WKZJVSriPNqVkpVBNEHPzSgBv7QIYzsS410VqVgvx8f9AAPgjg+XPKvmV3vOqqkJQQ== + +vue-router@4: + version "4.1.6" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1" + integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ== + dependencies: + "@vue/devtools-api" "^6.4.5" + +vue-template-compiler@^2.7.14: + version "2.7.14" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1" + integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +vue-tsc@^1.4.2: + version "1.6.4" + resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.6.4.tgz#ca4e931e9d3b9c55cd7a0f551bc0c9536edb6386" + integrity sha512-8rg8S1AhRJ6/WriENQEhyqH5wsxSxuD5iaD+QnkZn2ArZ6evlhqfBAIcVN8mfSyCV9DeLkQXkOSv/MaeJiJPAQ== + dependencies: + "@volar/vue-language-core" "1.6.4" + "@volar/vue-typescript" "1.6.4" + semver "^7.3.8" + +vue@^3.2.47: + version "3.2.47" + resolved "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz#3eb736cbc606fc87038dbba6a154707c8a34cff0" + integrity sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ== + dependencies: + "@vue/compiler-dom" "3.2.47" + "@vue/compiler-sfc" "3.2.47" + "@vue/runtime-dom" "3.2.47" + "@vue/server-renderer" "3.2.47" + "@vue/shared" "3.2.47" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==