Browse Source

Initial commit

master
maochaoying 2 years ago
commit
5f4f13d266
  1. 1
      .env
  2. 24
      .gitignore
  3. 9
      .prettierrc
  4. 3
      .vscode/extensions.json
  5. 66
      README.md
  6. 12
      index.html
  7. 1345
      package-lock.json
  8. 22
      package.json
  9. 9
      src/App.vue
  10. 17
      src/api/index.js
  11. 0
      src/assets/scss/globalMixin.scss
  12. 1
      src/assets/scss/globalVar.scss
  13. 33
      src/components/Count.vue
  14. 7
      src/main.js
  15. 11
      src/router/index.js
  16. 38
      src/service/index.js
  17. 132
      src/service/request.js
  18. 6
      src/store/index.js
  19. 27
      src/store/modules/count.js
  20. 0
      src/style.scss
  21. 24
      vite.config.js
  22. 448
      yarn.lock

1
.env

@ -0,0 +1 @@
VITE_BASE_URL=http://127.0.0.1:8080/

24
.gitignore

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

9
.prettierrc

@ -0,0 +1,9 @@
{
"semi": false,
"singleQuote": true,
"printWidth": 80,
"trailingComma": "all",
"arrowParens": "avoid",
"tabWidth": 2,
"endOfLine": "lf"
}

3
.vscode/extensions.json

@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}

66
README.md

@ -0,0 +1,66 @@
# 技术选型
- 本项目采用的 vue3 + vite + js 脚手架搭建
- 包管理工具为 Yarn
# 代码规范
> 随着团队的不断扩大,每个人都有自己的 coding 风格,但是如果一个项目中的代码存在多种风格,那对于代码的可维护性和可读性都大大减少,所以说一个项目规范对于前端团队来说很重要。
## Prettier
1、vscode插件 --- Prettier - Code formatter
2、.prettierrc文件
# 全局状态管理
> 使用 pinia
# UI 框架
https://tdesign.tencent.com/
- 桌面端
- Vue Next for Web
- https://tdesign.tencent.com/vue-next/getting-started
- 移动端
- Vue3 for Mobile
- https://tdesign.tencent.com/mobile-vue/getting-started
# axios 封装
> src/service
- 灵活的拦截器;
- 可以创建多个实例,灵活根据项目进行调整;
- 每个实例,或者说每个接口都可以灵活配置请求头、超时时间等;
- 取消请求(可以根据 url 取消单个请求也可以取消全部请求)。
# 项目结构
```javascript
├─node_modules // 依赖包
├─public
└─src
├─api // 请求方法
├─assets // 静态资源
│ └─scss // scss文件
| └─globalMixin.scss // 全局mixin
| └─globalVar.scss // 全局样式变量
├─components // 组件
├─router // 路由
├─service // 封装的工具类
├─store // 全局状态管理
│ └─modules // 分modules
├─views // 视图
├─App.vue // 项目根组件
├─main.js // 项目入口
└─style.scss // 全局样式
```
# 启动方式
```bash
yarn
yarn dev
```

12
index.html

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

1345
package-lock.json
File diff suppressed because it is too large
View File

22
package.json

@ -0,0 +1,22 @@
{
"name": "dreamworks-frontend-template",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"axios": "^1.3.4",
"pinia": "^2.0.32",
"vue": "^3.2.45",
"vue-router": "^4.0.13"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.0.0",
"sass": "^1.58.3",
"vite": "^4.1.0"
}
}

9
src/App.vue

@ -0,0 +1,9 @@
<script setup>
import Count from 'cpns/Count'
</script>
<template>
<Count />
</template>
<style scoped></style>

17
src/api/index.js

@ -0,0 +1,17 @@
import request from '@/service'
export const get15DaysWeatherByArea = data => {
return request({
url: '/api/common/weather/get15DaysWeatherByArea',
method: 'GET',
data,
interceptors: {
requestInterceptors(res) {
return res
},
responseInterceptors(result) {
return result
},
},
})
}

0
src/assets/scss/globalMixin.scss

1
src/assets/scss/globalVar.scss

@ -0,0 +1 @@
$bg-color: #1989fa;

33
src/components/Count.vue

@ -0,0 +1,33 @@
<template>
<div class="bg">
<span>当前数值{{ countComputed }}</span>
<br />
<span>双倍数值{{ doubleCount }}</span>
<br />
<button type="primary" size="default" @click="countStore.countAdd">
+1
</button>
<button type="primary" size="default" @click="countStore.countReduce">
-1
</button>
</div>
</template>
<script setup>
import { computed, onMounted } from 'vue'
import { get15DaysWeatherByArea } from '@/api'
import { useCountStore } from '@/store'
import { storeToRefs } from 'pinia'
const countStore = useCountStore()
//
const countComputed = computed(() => countStore.count)
// storeToRefs api
const { doubleCount } = storeToRefs(countStore)
onMounted(() => {
get15DaysWeatherByArea()
})
</script>
<style scoped lang="scss">
.bg {
background: $bg-color;
}
</style>

7
src/main.js

@ -0,0 +1,7 @@
import { createApp } from 'vue'
import router from './router'
import store from './store'
import App from './App.vue'
import './style.scss'
createApp(App).use(router).use(store).mount('#app')

11
src/router/index.js

@ -0,0 +1,11 @@
import { createRouter, createWebHistory } from 'vue-router'
// 配置路由信息
const routes = []
const router = createRouter({
routes,
history: createWebHistory(),
})
export default router

38
src/service/index.js

@ -0,0 +1,38 @@
import Request from './request'
/**
* 后续封装get post delete等方法的简单调用
*/
const request = new Request({
baseURL: import.meta.env.BASE_URL,
timeout: 1000 * 60 * 5,
interceptors: {
// 请求拦截器
requestInterceptors: config => config,
// 响应拦截器
responseInterceptors: result => result,
},
})
/**
* @description: 函数的描述
* @param config 不管是GET还是POST请求都使用data
* @returns {Promise}
*/
const dreamworkRequest = config => {
const { method = 'GET' } = config
if (method === 'get' || method === 'GET') {
config.params = config.data
}
return request.request(config)
}
// 取消请求
export const cancelRequest = url => {
return request.cancelRequest(url)
}
// 取消全部请求
export const cancelAllRequest = () => {
return request.cancelAllRequest()
}
export default dreamworkRequest

132
src/service/request.js

@ -0,0 +1,132 @@
import axios from 'axios'
class Request {
// axios 实例
instance
// 拦截器对象
interceptorsObj
/*
存放取消方法的集合
* 在创建请求后将取消请求方法 push 到该集合中
* 封装一个方法可以取消请求传入 url: string|string[]
* 在请求之前判断同一URL是否存在如果存在就取消请求
*/
cancelRequestSourceList
/*
存放所有请求URL的集合
* 请求之前需要将url push到该集合中
* 请求完毕后将url从集合中删除
* 添加在发送请求之前完成删除在响应之后删除
*/
requestUrlList
constructor(config) {
this.requestUrlList = []
this.cancelRequestSourceList = []
this.instance = axios.create(config)
this.interceptorsObj = config.interceptors
// 拦截器执行顺序 接口请求 -> 实例请求 -> 全局请求 -> 实例响应 -> 全局响应 -> 接口响应
this.instance.interceptors.request.use(
res => res,
err => err,
)
// 使用实例拦截器
this.instance.interceptors.request.use(
this.interceptorsObj?.requestInterceptors,
this.interceptorsObj?.requestInterceptorsCatch,
)
this.instance.interceptors.response.use(
this.interceptorsObj?.responseInterceptors,
this.interceptorsObj?.responseInterceptorsCatch,
)
// 全局响应拦截器保证最后执行
this.instance.interceptors.response.use(
// 因为我们接口的数据都在res.data下,所以我们直接返回res.data
res => {
return res.data
},
err => err,
)
}
/**
* @description: 获取指定 url cancelRequestSourceList 中的索引
* @param {string} url
* @returns {number} 索引位置
*/
getSourceIndex(url) {
return this.cancelRequestSourceList?.findIndex(item => {
return Object.keys(item)[0] === url
})
}
/**
* @description: 删除 requestUrlList cancelRequestSourceList
* @param {string} url
* @returns {*}
*/
delUrl(url) {
const urlIndex = this.requestUrlList?.findIndex(u => u === url)
const sourceIndex = this.getSourceIndex(url)
// 删除url和cancel方法
urlIndex !== -1 && this.requestUrlList?.splice(urlIndex, 1)
sourceIndex !== -1 && this.cancelRequestSourceList?.splice(sourceIndex, 1)
}
request(config) {
return new Promise((resolve, reject) => {
// 如果我们为单个请求设置拦截器,这里使用单个请求的拦截器
if (config.interceptors?.requestInterceptors) {
config = config.interceptors.requestInterceptors(config)
}
const url = config.url
// url存在保存取消请求方法和当前请求url
if (url) {
this.requestUrlList?.push(url)
config.cancelToken = new axios.CancelToken(c => {
this.cancelRequestSourceList?.push({
[url]: c,
})
})
}
this.instance
.request(config)
.then(res => {
// 如果我们为单个响应设置拦截器,这里使用单个响应的拦截器
if (config.interceptors?.responseInterceptors) {
res = config.interceptors.responseInterceptors.res
}
resolve(res)
})
.catch(err => {
reject(err)
})
.finally(() => {
url && this.delUrl(url)
})
})
}
// 取消请求
cancelRequest(url) {
if (typeof url === 'string') {
// 取消单个请求
const sourceIndex = this.getSourceIndex(url)
sourceIndex >= 0 && this.cancelRequestSourceList?.[sourceIndex][url]()
} else {
// 存在多个需要取消请求的地址
url.forEach(u => {
const sourceIndex = this.getSourceIndex(u)
sourceIndex >= 0 && this.cancelRequestSourceList?.[sourceIndex][u]()
})
}
}
// 取消全部请求
cancelAllRequest() {
this.cancelRequestSourceList?.forEach(source => {
const key = Object.keys(source)[0]
source[key]()
})
}
}
export default Request

6
src/store/index.js

@ -0,0 +1,6 @@
import { createPinia } from 'pinia'
import { useCountStore } from './modules/count'
const store = createPinia()
export default store
export { useCountStore }

27
src/store/modules/count.js

@ -0,0 +1,27 @@
import { defineStore } from 'pinia'
export const useCountStore = defineStore({
id: 'count', // id必填,且需要唯一
// state
state: () => {
return {
count: 0,
}
},
// getters
getters: {
doubleCount: state => {
return state.count * 2
},
},
// actions
actions: {
// actions 同样支持异步写法
countAdd() {
// 可以通过 this 访问 state 中的内容
this.count++
},
countReduce() {
this.count--
},
},
})

0
src/style.scss

24
vite.config.js

@ -0,0 +1,24 @@
import { defineConfig } from 'vite'
import { resolve } from 'path'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
cpns: resolve(__dirname, 'src/components'),
},
extensions: ['.js', '.json', '.vue'],
},
plugins: [vue()],
//配置sass
css: {
preprocessorOptions: {
scss: {
additionalData:
'@import "./src/assets/scss/globalVar.scss";@import "./src/assets/scss/globalMixin.scss";',
},
},
},
})

448
yarn.lock

@ -0,0 +1,448 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/parser@^7.16.4":
"integrity" "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ=="
"resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz"
"version" "7.21.2"
"@esbuild/win32-x64@0.16.17":
"integrity" "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q=="
"resolved" "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz"
"version" "0.16.17"
"@vitejs/plugin-vue@^4.0.0":
"integrity" "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA=="
"resolved" "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz"
"version" "4.0.0"
"@vue/compiler-core@3.2.47":
"integrity" "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig=="
"resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@babel/parser" "^7.16.4"
"@vue/shared" "3.2.47"
"estree-walker" "^2.0.2"
"source-map" "^0.6.1"
"@vue/compiler-dom@3.2.47":
"integrity" "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ=="
"resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/compiler-core" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/compiler-sfc@3.2.47":
"integrity" "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ=="
"resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz"
"version" "3.2.47"
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-ssr@3.2.47":
"integrity" "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw=="
"resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/compiler-dom" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.5.0":
"integrity" "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
"resolved" "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
"version" "6.5.0"
"@vue/reactivity-transform@3.2.47":
"integrity" "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA=="
"resolved" "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz"
"version" "3.2.47"
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@3.2.47":
"integrity" "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ=="
"resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/shared" "3.2.47"
"@vue/runtime-core@3.2.47":
"integrity" "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA=="
"resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/reactivity" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/runtime-dom@3.2.47":
"integrity" "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA=="
"resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/runtime-core" "3.2.47"
"@vue/shared" "3.2.47"
"csstype" "^2.6.8"
"@vue/server-renderer@3.2.47":
"integrity" "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA=="
"resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz"
"version" "3.2.47"
dependencies:
"@vue/compiler-ssr" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/shared@3.2.47":
"integrity" "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
"resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz"
"version" "3.2.47"
"anymatch@~3.1.2":
"integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="
"resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
"version" "3.1.3"
dependencies:
"normalize-path" "^3.0.0"
"picomatch" "^2.0.4"
"asynckit@^0.4.0":
"integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
"resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
"version" "0.4.0"
"axios@^1.3.4":
"integrity" "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ=="
"resolved" "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz"
"version" "1.3.4"
dependencies:
"follow-redirects" "^1.15.0"
"form-data" "^4.0.0"
"proxy-from-env" "^1.1.0"
"binary-extensions@^2.0.0":
"integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
"resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
"version" "2.2.0"
"braces@~3.0.2":
"integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
"resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
"version" "3.0.2"
dependencies:
"fill-range" "^7.0.1"
"chokidar@>=3.0.0 <4.0.0":
"integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
"resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
"version" "3.5.3"
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":
"integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
"resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
"version" "1.0.8"
dependencies:
"delayed-stream" "~1.0.0"
"csstype@^2.6.8":
"integrity" "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
"resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz"
"version" "2.6.21"
"delayed-stream@~1.0.0":
"integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
"resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
"version" "1.0.0"
"esbuild@^0.16.14":
"integrity" "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg=="
"resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz"
"version" "0.16.17"
optionalDependencies:
"@esbuild/android-arm" "0.16.17"
"@esbuild/android-arm64" "0.16.17"
"@esbuild/android-x64" "0.16.17"
"@esbuild/darwin-arm64" "0.16.17"
"@esbuild/darwin-x64" "0.16.17"
"@esbuild/freebsd-arm64" "0.16.17"
"@esbuild/freebsd-x64" "0.16.17"
"@esbuild/linux-arm" "0.16.17"
"@esbuild/linux-arm64" "0.16.17"
"@esbuild/linux-ia32" "0.16.17"
"@esbuild/linux-loong64" "0.16.17"
"@esbuild/linux-mips64el" "0.16.17"
"@esbuild/linux-ppc64" "0.16.17"
"@esbuild/linux-riscv64" "0.16.17"
"@esbuild/linux-s390x" "0.16.17"
"@esbuild/linux-x64" "0.16.17"
"@esbuild/netbsd-x64" "0.16.17"
"@esbuild/openbsd-x64" "0.16.17"
"@esbuild/sunos-x64" "0.16.17"
"@esbuild/win32-arm64" "0.16.17"
"@esbuild/win32-ia32" "0.16.17"
"@esbuild/win32-x64" "0.16.17"
"estree-walker@^2.0.2":
"integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
"resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
"version" "2.0.2"
"fill-range@^7.0.1":
"integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
"resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
"version" "7.0.1"
dependencies:
"to-regex-range" "^5.0.1"
"follow-redirects@^1.15.0":
"integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
"resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
"version" "1.15.2"
"form-data@^4.0.0":
"integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
"resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
"version" "4.0.0"
dependencies:
"asynckit" "^0.4.0"
"combined-stream" "^1.0.8"
"mime-types" "^2.1.12"
"function-bind@^1.1.1":
"integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
"version" "1.1.1"
"glob-parent@~5.1.2":
"integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
"resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
"version" "5.1.2"
dependencies:
"is-glob" "^4.0.1"
"has@^1.0.3":
"integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
"resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
"version" "1.0.3"
dependencies:
"function-bind" "^1.1.1"
"immutable@^4.0.0":
"integrity" "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w=="
"resolved" "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz"
"version" "4.2.4"
"is-binary-path@~2.1.0":
"integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
"resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
"version" "2.1.0"
dependencies:
"binary-extensions" "^2.0.0"
"is-core-module@^2.9.0":
"integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw=="
"resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz"
"version" "2.11.0"
dependencies:
"has" "^1.0.3"
"is-extglob@^2.1.1":
"integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
"resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
"version" "2.1.1"
"is-glob@^4.0.1", "is-glob@~4.0.1":
"integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
"resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
"version" "4.0.3"
dependencies:
"is-extglob" "^2.1.1"
"is-number@^7.0.0":
"integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
"resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
"version" "7.0.0"
"magic-string@^0.25.7":
"integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="
"resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
"version" "0.25.9"
dependencies:
"sourcemap-codec" "^1.4.8"
"mime-db@1.52.0":
"integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
"resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
"version" "1.52.0"
"mime-types@^2.1.12":
"integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
"resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
"version" "2.1.35"
dependencies:
"mime-db" "1.52.0"
"nanoid@^3.3.4":
"integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
"resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
"version" "3.3.4"
"normalize-path@^3.0.0", "normalize-path@~3.0.0":
"integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
"resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
"version" "3.0.0"
"path-parse@^1.0.7":
"integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
"resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
"version" "1.0.7"
"picocolors@^1.0.0":
"integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
"version" "1.0.0"
"picomatch@^2.0.4", "picomatch@^2.2.1":
"integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
"resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
"version" "2.3.1"
"pinia@^2.0.32":
"integrity" "sha512-8Tw4OrpCSJ028UUyp0gYPP/wyjigLoEceuO/x1G+FlHVf73337e5vLm4uDmrRIoBG1hvaed/eSHnrCFjOc4nkA=="
"resolved" "https://registry.npmjs.org/pinia/-/pinia-2.0.32.tgz"
"version" "2.0.32"
dependencies:
"@vue/devtools-api" "^6.5.0"
"vue-demi" "*"
"postcss@^8.1.10", "postcss@^8.4.21":
"integrity" "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg=="
"resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
"version" "8.4.21"
dependencies:
"nanoid" "^3.3.4"
"picocolors" "^1.0.0"
"source-map-js" "^1.0.2"
"proxy-from-env@^1.1.0":
"integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
"resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
"version" "1.1.0"
"readdirp@~3.6.0":
"integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
"resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
"version" "3.6.0"
dependencies:
"picomatch" "^2.2.1"
"resolve@^1.22.1":
"integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw=="
"resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
"version" "1.22.1"
dependencies:
"is-core-module" "^2.9.0"
"path-parse" "^1.0.7"
"supports-preserve-symlinks-flag" "^1.0.0"
"rollup@^3.10.0":
"integrity" "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg=="
"resolved" "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz"
"version" "3.18.0"
optionalDependencies:
"fsevents" "~2.3.2"
"sass@*", "sass@^1.58.3":
"integrity" "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A=="
"resolved" "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz"
"version" "1.58.3"
dependencies:
"chokidar" ">=3.0.0 <4.0.0"
"immutable" "^4.0.0"
"source-map-js" ">=0.6.2 <2.0.0"
"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0":
"integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
"resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
"version" "1.0.2"
"source-map@^0.6.1":
"integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
"version" "0.6.1"
"sourcemap-codec@^1.4.8":
"integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
"resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
"version" "1.4.8"
"supports-preserve-symlinks-flag@^1.0.0":
"integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
"resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
"version" "1.0.0"
"to-regex-range@^5.0.1":
"integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
"resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
"version" "5.0.1"
dependencies:
"is-number" "^7.0.0"
"vite@^4.0.0", "vite@^4.1.0":
"integrity" "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg=="
"resolved" "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz"
"version" "4.1.4"
dependencies:
"esbuild" "^0.16.14"
"postcss" "^8.4.21"
"resolve" "^1.22.1"
"rollup" "^3.10.0"
optionalDependencies:
"fsevents" "~2.3.2"
"vue-demi@*":
"integrity" "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
"resolved" "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz"
"version" "0.13.11"
"vue-router@^4.0.13":
"integrity" "sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw=="
"resolved" "https://registry.npmjs.org/vue-router/-/vue-router-4.0.13.tgz"
"version" "4.0.13"
dependencies:
"@vue/devtools-api" "^6.0.0"
"vue@^2.6.14 || ^3.2.0", "vue@^3.0.0-0 || ^2.6.0", "vue@^3.2.0", "vue@^3.2.25", "vue@^3.2.45", "vue@3.2.47":
"integrity" "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ=="
"resolved" "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz"
"version" "3.2.47"
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"
Loading…
Cancel
Save