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/)
+
+# 项目截图
+|  |  |
+|---|---|
+|  |  |
+
+# 项目启动
+ ```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 @@
+
+
+
+
+
+
+
{{ item.name }}
+
{{ item.auther }}
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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==