├── .env.development ├── .env.production ├── .env.test ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .husky └── pre-commit ├── .lintstagedrc.json ├── .prettierignore ├── .prettierrc.js ├── .vscode ├── extensions.json └── settings.json ├── README.md ├── env.d.ts ├── index.html ├── mock ├── _createProductionServer.ts ├── _util.ts └── sys │ └── user.ts ├── package.json ├── pnpm-lock.yaml ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ ├── images │ │ ├── pic.jpeg │ │ ├── png │ │ │ └── year.png │ │ └── 图片.jpg │ └── logo.png ├── components │ └── HelloWorld.vue ├── env.d.ts ├── main.ts ├── router │ ├── index.ts │ └── router.config.ts ├── store │ ├── app.ts │ ├── index.ts │ └── user.ts ├── styles │ ├── index.scss │ ├── mixin.scss │ ├── reset.scss │ ├── test.module.scss │ └── variables.scss ├── test │ ├── demo.tsx │ ├── jsonText.json │ ├── test.ts │ ├── testCssModel.tsx │ ├── testMockAxios.tsx │ ├── testPinia.vue │ ├── testStatic.vue │ └── worker.ts ├── utils │ └── index.ts └── views │ ├── Home.vue │ └── layouts │ └── index.vue ├── tsconfig.json ├── vite.config.ts └── 从0到1配置.md /.env.development: -------------------------------------------------------------------------------- 1 | # must start with VITE_ 2 | VITE_ENV = 'development' 3 | VITE_OUTPUT_DIR = 'dev' 4 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # must start with VITE_ 2 | VITE_ENV = 'production' 3 | VITE_OUTPUT_DIR = 'dist' -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | # must start with VITE_ 2 | VITE_ENV = 'test' 3 | VITE_OUTPUT_DIR = 'test' 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | 2 | *.sh 3 | node_modules 4 | *.md 5 | *.woff 6 | *.ttf 7 | .vscode 8 | .idea 9 | dist 10 | /public 11 | /docs 12 | .husky 13 | .local 14 | /bin 15 | Dockerfile 16 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require('@rushstack/eslint-patch/modern-module-resolution') 3 | 4 | module.exports = { 5 | root: true, 6 | extends: [ 7 | 'plugin:vue/vue3-essential', 8 | 'eslint:recommended', 9 | '@vue/eslint-config-typescript/recommended', 10 | '@vue/eslint-config-prettier' 11 | ], 12 | env: { 13 | 'vue/setup-compiler-macros': true 14 | }, 15 | parserOptions: { 16 | ecmaVersion: 2020 17 | }, 18 | rules: { 19 | 'prettier/prettier': 'warn', 20 | '@typescript-eslint/no-explicit-any': 'off', 21 | '@typescript-eslint/no-unused-vars': 'off', 22 | 'vue/multi-word-component-names': 'off' 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | # export NVM_DIR="/usr/local/opt/nvm/nvm.sh" 5 | # . "$(dirname $NVM_DIR)/nvm.sh" 6 | 7 | # export NVM_DIR="$HOME/.nvm" 8 | # a=$(nvm ls | grep 'node') 9 | # b=${a#*(-> } 10 | # v=${b%%[)| ]*} 11 | 12 | # export PATH="$NVM_DIR/versions/node/$v/bin:$PATH" 13 | 14 | npx lint-staged 15 | -------------------------------------------------------------------------------- /.lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "**/*.{js,ts,tsx,jsx,vue,scss,css}": [ 3 | "prettier --write \"src/**/*.ts\" \"src/**/*.vue\"", 4 | "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | package.json 3 | public/ 4 | test/*.* -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // 定制格式化要求 3 | overrides: [ 4 | { 5 | files: '.prettierrc', 6 | options: { 7 | parser: 'json' 8 | } 9 | } 10 | ], 11 | printWidth: 100, // 一行最多 100 字符 12 | tabWidth: 2, // 使用 4 个空格缩进 13 | semi: false, // 行尾需要有分号 14 | singleQuote: true, // 使用单引号而不是双引号 15 | useTabs: false, // 用制表符而不是空格缩进行 16 | quoteProps: 'as-needed', // 仅在需要时在对象属性两边添加引号 17 | jsxSingleQuote: false, // 在 JSX 中使用单引号而不是双引号 18 | trailingComma: 'none', // 末尾不需要逗号 19 | bracketSpacing: true, // 大括号内的首尾需要空格 20 | bracketSameLine: false, // 将多行 HTML(HTML、JSX、Vue、Angular)元素反尖括号需要换行 21 | arrowParens: 'always', // 箭头函数,只有一个参数的时候,也需要括号 avoid 22 | rangeStart: 0, // 每个文件格式化的范围是开头-结束 23 | rangeEnd: Infinity, // 每个文件格式化的范围是文件的全部内容 24 | requirePragma: false, // 不需要写文件开头的 @prettier 25 | insertPragma: false, // 不需要自动在文件开头插入 @prettier 26 | proseWrap: 'preserve', // 使用默认的折行标准 always 27 | htmlWhitespaceSensitivity: 'css', // 根据显示样式决定 html 要不要折行 28 | vueIndentScriptAndStyle: false, //(默认值)对于 .vue 文件,不缩进 381 | 382 | 385 | 386 | 396 | ``` 397 | 398 | ```ts 399 | // layouts/index.vue 400 | 407 | 415 | 418 | ``` 419 | 420 | ## ✅ Pinia 状态管理 421 | 422 | - 文档:https://pinia.vuejs.org/ 423 | - 参考资料:https://juejin.cn/post/7049196967770980389 424 | - Pinia 的特点: 425 | - 完整的 typescript 的支持; 426 | - 足够轻量,压缩后的体积只有 1.6kb; 427 | - 去除 mutations,只有 state,getters,actions(这是我最喜欢的一个特点); 428 | - actions 支持同步和异步; 429 | - 没有模块嵌套,只有 store 的概念,store 之间可以自由使用,更好的代码分割; 430 | - 无需手动添加 store,store 一旦创建便会自动添加; 431 | 432 | ### 安装依赖 433 | 434 | ```js 435 | pnpm i pinia 436 | ``` 437 | 438 | ### 创建 Store 439 | 440 | - 新建 src/store 目录并在其下面创建 index.ts,导出 store 441 | 442 | ```js 443 | // src/store/index.ts 444 | 445 | import { createPinia } from 'pinia' 446 | 447 | const store = createPinia() 448 | 449 | export default store 450 | ``` 451 | 452 | ### 在 main.ts 中引入并使用 453 | 454 | ```ts 455 | // src/main.ts 456 | 457 | import { createApp } from 'vue' 458 | import App from './App.vue' 459 | import store from './store' 460 | 461 | const app = createApp(App) 462 | app.use(store) 463 | ``` 464 | 465 | ### 定义 State 466 | 467 | - 在 src/store 下面创建一个 user.ts 468 | 469 | ```ts 470 | //src/store/user.ts 471 | 472 | import { defineStore } from 'pinia' 473 | import { useAppStore } from './app' 474 | 475 | export const useUserStore = defineStore({ 476 | id: 'user', 477 | state: () => { 478 | return { 479 | name: '张三', 480 | age: 18 481 | } 482 | }, 483 | getters: { 484 | fullName: (state) => { 485 | return state.name + '丰' 486 | } 487 | }, 488 | actions: { 489 | updateState(data: any) { 490 | this.$state = data 491 | this.updateAppConfig() 492 | }, 493 | updateAppConfig() { 494 | const appStore = useAppStore() 495 | appStore.setData('app-update') 496 | } 497 | } 498 | }) 499 | ``` 500 | 501 | ```ts 502 | //src/store/app.ts 503 | import { defineStore } from 'pinia' 504 | 505 | export const useAppStore = defineStore({ 506 | id: 'app', 507 | state: () => { 508 | return { 509 | config: 'app' 510 | } 511 | }, 512 | actions: { 513 | setData(data: any) { 514 | console.log(data) 515 | this.config = data 516 | } 517 | } 518 | }) 519 | ``` 520 | 521 | ### 获取/更新 State 522 | 523 | ```vue 524 | 545 | 552 | 553 | 554 | ``` 555 | 556 | ### 数据持久化 557 | 558 | - 文档:https://github.com/prazdevs/pinia-plugin-persistedstate 559 | 560 | * 插件 pinia-plugin-persistedstate 可以辅助实现数据持久化功能。 561 | * 数据默认存在 sessionStorage 里,并且会以 store 的 id 作为 key。 562 | 563 | * 安装依赖 564 | 565 | ```ts 566 | pnpm i pinia-plugin-persistedstate 567 | ``` 568 | 569 | - 引用插件 570 | 571 | ```ts 572 | // src/store/index.ts 573 | 574 | import { createPinia } from 'pinia' 575 | import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' 576 | const store = createPinia() 577 | store.use(piniaPluginPersistedstate) 578 | export default store 579 | ``` 580 | 581 | - 在对应的 store 里开启 persist 即可 582 | 583 | ```ts 584 | export const useUserStore = defineStore({ 585 | id: 'user', 586 | 587 | state: () => { 588 | return { 589 | name: '张三' 590 | } 591 | }, 592 | 593 | // 开启数据缓存 594 | persist: { 595 | key: 'user', 596 | storage: sessionStorage, // 数据存储位置,默认为 localStorage 597 | paths: ['name'], // 用于部分持久化状态的点表示法路径数组,表示不会持久化任何状态(默认为并保留整个状态) 598 | overwrite: true 599 | } 600 | }) 601 | ``` 602 | 603 | ## ✅ Eslint + Prettier 统一开发规范 604 | 605 | ### 1. 安装依赖 606 | 607 | ```js 608 | pnpm i -D eslint eslint-plugin-vue prettier @vue/eslint-config-prettier @vue/eslint-config-typescript @rushstack/eslint-patch 609 | ``` 610 | 611 | ### 2. 编写相关文件 612 | 613 | - .eslintrc.js 614 | 615 | ```js 616 | /* eslint-env node */ 617 | require('@rushstack/eslint-patch/modern-module-resolution') 618 | 619 | module.exports = { 620 | root: true, 621 | extends: [ 622 | 'plugin:vue/vue3-essential', 623 | 'eslint:recommended', 624 | '@vue/eslint-config-typescript/recommended', 625 | '@vue/eslint-config-prettier' 626 | ], 627 | env: { 628 | 'vue/setup-compiler-macros': true 629 | }, 630 | parserOptions: { 631 | ecmaVersion: 12 632 | }, 633 | rules: { 634 | 'prettier/prettier': 'warn', 635 | '@typescript-eslint/no-explicit-any': 'off', 636 | '@typescript-eslint/no-unused-vars': 'off' 637 | } 638 | } 639 | ``` 640 | 641 | - .prettierc.js 642 | 643 | ```js 644 | module.exports = { 645 | // 定制格式化要求 646 | overrides: [ 647 | { 648 | files: '.prettierrc', 649 | options: { 650 | parser: 'json' 651 | } 652 | } 653 | ], 654 | printWidth: 100, // 一行最多 100 字符 655 | tabWidth: 2, // 使用 4 个空格缩进 656 | semi: false, // 行尾需要有分号 657 | singleQuote: true, // 使用单引号而不是双引号 658 | useTabs: false, // 用制表符而不是空格缩进行 659 | quoteProps: 'as-needed', // 仅在需要时在对象属性两边添加引号 660 | jsxSingleQuote: false, // 在 JSX 中使用单引号而不是双引号 661 | trailingComma: 'none', // 末尾不需要逗号 662 | bracketSpacing: true, // 大括号内的首尾需要空格 663 | bracketSameLine: false, // 将多行 HTML(HTML、JSX、Vue、Angular)元素反尖括号需要换行 664 | arrowParens: 'always', // 箭头函数,只有一个参数的时候,也需要括号 avoid 665 | rangeStart: 0, // 每个文件格式化的范围是开头-结束 666 | rangeEnd: Infinity, // 每个文件格式化的范围是文件的全部内容 667 | requirePragma: false, // 不需要写文件开头的 @prettier 668 | insertPragma: false, // 不需要自动在文件开头插入 @prettier 669 | proseWrap: 'preserve', // 使用默认的折行标准 always 670 | htmlWhitespaceSensitivity: 'css', // 根据显示样式决定 html 要不要折行 671 | vueIndentScriptAndStyle: false, //(默认值)对于 .vue 文件,不缩进 12 | 13 | 14 | -------------------------------------------------------------------------------- /mock/_createProductionServer.ts: -------------------------------------------------------------------------------- 1 | import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' 2 | 3 | const modules = import.meta.globEager('./**/*.ts') 4 | 5 | const mockModules: any[] = [] 6 | Object.keys(modules).forEach((key) => { 7 | if (key.includes('/_')) { 8 | return 9 | } 10 | mockModules.push(...modules[key].default) 11 | }) 12 | 13 | /** 14 | * Used in a production environment. Need to manually import all modules 15 | */ 16 | export function setupProdMockServer() { 17 | createProdMockServer(mockModules) 18 | } 19 | -------------------------------------------------------------------------------- /mock/_util.ts: -------------------------------------------------------------------------------- 1 | // Interface data format used to return a unified format 2 | 3 | import { Recordable } from 'vite-plugin-mock' 4 | 5 | export function resultSuccess(result: T, { message = 'ok' } = {}) { 6 | return { 7 | code: 0, 8 | result, 9 | message, 10 | type: 'success' 11 | } 12 | } 13 | 14 | export function resultPageSuccess( 15 | page: number, 16 | pageSize: number, 17 | list: T[], 18 | { message = 'ok' } = {} 19 | ) { 20 | const pageData = pagination(page, pageSize, list) 21 | 22 | return { 23 | ...resultSuccess({ 24 | items: pageData, 25 | total: list.length 26 | }), 27 | message 28 | } 29 | } 30 | 31 | export function resultError(message = 'Request failed', { code = -1, result = null } = {}) { 32 | return { 33 | code, 34 | result, 35 | message, 36 | type: 'error' 37 | } 38 | } 39 | 40 | export function pagination(pageNo: number, pageSize: number, array: T[]): T[] { 41 | const offset = (pageNo - 1) * Number(pageSize) 42 | const ret = 43 | offset + Number(pageSize) >= array.length 44 | ? array.slice(offset, array.length) 45 | : array.slice(offset, offset + Number(pageSize)) 46 | return ret 47 | } 48 | 49 | export interface requestParams { 50 | method: string 51 | body: any 52 | headers?: { authorization?: string } 53 | query: any 54 | } 55 | 56 | /** 57 | * @description 本函数用于从request数据中获取token,请根据项目的实际情况修改 58 | * 59 | */ 60 | export function getRequestToken({ headers }: requestParams): string | undefined { 61 | return headers?.authorization 62 | } 63 | -------------------------------------------------------------------------------- /mock/sys/user.ts: -------------------------------------------------------------------------------- 1 | import { MockMethod } from 'vite-plugin-mock' 2 | import { resultError, resultSuccess, getRequestToken, requestParams } from '../_util' 3 | 4 | export function createFakeUserList() { 5 | return [ 6 | { 7 | userId: '1', 8 | username: 'vben', 9 | realName: 'Vben Admin', 10 | avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640', 11 | desc: 'manager', 12 | password: '123456', 13 | token: 'fakeToken1', 14 | homePath: '/dashboard/analysis', 15 | roles: [ 16 | { 17 | roleName: 'Super Admin', 18 | value: 'super' 19 | } 20 | ] 21 | }, 22 | { 23 | userId: '2', 24 | username: 'test', 25 | password: '123456', 26 | realName: 'test user', 27 | avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640', 28 | desc: 'tester', 29 | token: 'fakeToken2', 30 | homePath: '/dashboard/workbench', 31 | roles: [ 32 | { 33 | roleName: 'Tester', 34 | value: 'test' 35 | } 36 | ] 37 | } 38 | ] 39 | } 40 | 41 | const fakeCodeList: any = { 42 | '1': ['1000', '3000', '5000'], 43 | 44 | '2': ['2000', '4000', '6000'] 45 | } 46 | export default [ 47 | // mock user login 48 | { 49 | url: '/basic-api/login', 50 | timeout: 200, 51 | method: 'post', 52 | response: ({ body }) => { 53 | const { username, password } = body 54 | const checkUser = createFakeUserList().find( 55 | (item) => item.username === username && password === item.password 56 | ) 57 | if (!checkUser) { 58 | return resultError('Incorrect account or password!') 59 | } 60 | const { userId, username: _username, token, realName, desc, roles } = checkUser 61 | return resultSuccess({ 62 | roles, 63 | userId, 64 | username: _username, 65 | token, 66 | realName, 67 | desc 68 | }) 69 | } 70 | }, 71 | { 72 | url: '/basic-api/getUserInfo', 73 | method: 'get', 74 | response: (request: requestParams) => { 75 | // const token = getRequestToken(request); 76 | // if (!token) return resultError('Invalid token'); 77 | // const checkUser = createFakeUserList().find((item) => item.token === token); 78 | // if (!checkUser) { 79 | // return resultError('The corresponding user information was not obtained!'); 80 | // } 81 | // return resultSuccess(checkUser); 82 | console.log('----请求了getUserInfo---') 83 | 84 | return resultSuccess({ 85 | name: '章三', 86 | age: 40, 87 | sex: '男' 88 | }) 89 | } 90 | }, 91 | { 92 | url: '/basic-api/getPermCode', 93 | timeout: 200, 94 | method: 'get', 95 | response: (request: requestParams) => { 96 | const token = getRequestToken(request) 97 | if (!token) return resultError('Invalid token') 98 | const checkUser = createFakeUserList().find((item) => item.token === token) 99 | if (!checkUser) { 100 | return resultError('Invalid token!') 101 | } 102 | const codeList = fakeCodeList[checkUser.userId] 103 | 104 | return resultSuccess(codeList) 105 | } 106 | }, 107 | { 108 | url: '/basic-api/logout', 109 | timeout: 200, 110 | method: 'get', 111 | response: (request: requestParams) => { 112 | const token = getRequestToken(request) 113 | if (!token) return resultError('Invalid token') 114 | const checkUser = createFakeUserList().find((item) => item.token === token) 115 | if (!checkUser) { 116 | return resultError('Invalid token!') 117 | } 118 | return resultSuccess(undefined, { message: 'Token has been destroyed' }) 119 | } 120 | } 121 | ] as MockMethod[] 122 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-vue3-h5-template", 3 | "version": "1.0.0", 4 | "scripts": { 5 | "dev": "vite --mode development", 6 | "test": "vite --mode test", 7 | "prod": "vite --mode production", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "build:test": "vue-tsc --noEmit && vite build", 10 | "build:prod": "vue-tsc --noEmit && vite build", 11 | "preview": "npm run build && vite preview", 12 | "preview:dist": "vite preview", 13 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", 14 | "lint:lint-staged": "lint-staged", 15 | "prepare": "husky install" 16 | }, 17 | "dependencies": { 18 | "axios": "^0.24.0", 19 | "pinia": "^2.0.9", 20 | "pinia-plugin-persistedstate": "^1.0.3", 21 | "vue": "^3.2.25", 22 | "vue-router": "^4.0.12" 23 | }, 24 | "devDependencies": { 25 | "@rushstack/eslint-patch": "^1.1.0", 26 | "@types/mockjs": "^1.0.4", 27 | "@types/node": "^12.20.39", 28 | "@vitejs/plugin-vue": "^2.0.0", 29 | "@vitejs/plugin-vue-jsx": "^1.3.3", 30 | "@vue/eslint-config-prettier": "^7.0.0", 31 | "@vue/eslint-config-typescript": "^10.0.0", 32 | "eslint": "^8.6.0", 33 | "eslint-plugin-vue": "^8.2.0", 34 | "husky": "^7.0.4", 35 | "lint-staged": "^12.1.5", 36 | "mockjs": "^1.1.0", 37 | "prettier": "^2.5.1", 38 | "sass": "^1.45.1", 39 | "typescript": "^4.4.4", 40 | "vite": "^2.7.2", 41 | "vite-plugin-mock": "^2.9.6", 42 | "vue-tsc": "^0.29.8" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@rushstack/eslint-patch': ^1.1.0 5 | '@types/mockjs': ^1.0.4 6 | '@types/node': ^12.20.39 7 | '@vitejs/plugin-vue': ^2.0.0 8 | '@vitejs/plugin-vue-jsx': ^1.3.3 9 | '@vue/eslint-config-prettier': ^7.0.0 10 | '@vue/eslint-config-typescript': ^10.0.0 11 | axios: ^0.24.0 12 | eslint: ^8.6.0 13 | eslint-plugin-vue: ^8.2.0 14 | husky: ^7.0.4 15 | lint-staged: ^12.1.5 16 | mockjs: ^1.1.0 17 | pinia: ^2.0.9 18 | pinia-plugin-persistedstate: ^1.0.3 19 | prettier: ^2.5.1 20 | sass: ^1.45.1 21 | typescript: ^4.4.4 22 | vite: ^2.7.2 23 | vite-plugin-mock: ^2.9.6 24 | vue: ^3.2.25 25 | vue-router: ^4.0.12 26 | vue-tsc: ^0.29.8 27 | 28 | dependencies: 29 | axios: 0.24.0 30 | pinia: 2.0.9_typescript@4.5.4+vue@3.2.26 31 | pinia-plugin-persistedstate: 1.0.3_pinia@2.0.9 32 | vue: 3.2.26 33 | vue-router: 4.0.12_vue@3.2.26 34 | 35 | devDependencies: 36 | '@rushstack/eslint-patch': 1.1.0 37 | '@types/mockjs': 1.0.4 38 | '@types/node': 12.20.39 39 | '@vitejs/plugin-vue': 2.0.1_vite@2.7.5+vue@3.2.26 40 | '@vitejs/plugin-vue-jsx': 1.3.3 41 | '@vue/eslint-config-prettier': 7.0.0_eslint@8.6.0+prettier@2.5.1 42 | '@vue/eslint-config-typescript': 10.0.0_57f850728139557a3a27f1248f77f964 43 | eslint: 8.6.0 44 | eslint-plugin-vue: 8.2.0_eslint@8.6.0 45 | husky: 7.0.4 46 | lint-staged: 12.1.5 47 | mockjs: 1.1.0 48 | prettier: 2.5.1 49 | sass: 1.45.1 50 | typescript: 4.5.4 51 | vite: 2.7.5_sass@1.45.1 52 | vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.7.5 53 | vue-tsc: 0.29.8_typescript@4.5.4 54 | 55 | packages: 56 | 57 | /@babel/code-frame/7.16.0: 58 | resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} 59 | engines: {node: '>=6.9.0'} 60 | dependencies: 61 | '@babel/highlight': 7.16.0 62 | dev: true 63 | 64 | /@babel/compat-data/7.16.4: 65 | resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} 66 | engines: {node: '>=6.9.0'} 67 | dev: true 68 | 69 | /@babel/core/7.16.5: 70 | resolution: {integrity: sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==} 71 | engines: {node: '>=6.9.0'} 72 | dependencies: 73 | '@babel/code-frame': 7.16.0 74 | '@babel/generator': 7.16.5 75 | '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 76 | '@babel/helper-module-transforms': 7.16.5 77 | '@babel/helpers': 7.16.5 78 | '@babel/parser': 7.16.6 79 | '@babel/template': 7.16.0 80 | '@babel/traverse': 7.16.5 81 | '@babel/types': 7.16.0 82 | convert-source-map: 1.8.0 83 | debug: 4.3.3 84 | gensync: 1.0.0-beta.2 85 | json5: 2.2.0 86 | semver: 6.3.0 87 | source-map: 0.5.7 88 | transitivePeerDependencies: 89 | - supports-color 90 | dev: true 91 | 92 | /@babel/generator/7.16.5: 93 | resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} 94 | engines: {node: '>=6.9.0'} 95 | dependencies: 96 | '@babel/types': 7.16.0 97 | jsesc: 2.5.2 98 | source-map: 0.5.7 99 | dev: true 100 | 101 | /@babel/helper-annotate-as-pure/7.16.0: 102 | resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} 103 | engines: {node: '>=6.9.0'} 104 | dependencies: 105 | '@babel/types': 7.16.0 106 | dev: true 107 | 108 | /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.5: 109 | resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} 110 | engines: {node: '>=6.9.0'} 111 | peerDependencies: 112 | '@babel/core': ^7.0.0 113 | dependencies: 114 | '@babel/compat-data': 7.16.4 115 | '@babel/core': 7.16.5 116 | '@babel/helper-validator-option': 7.14.5 117 | browserslist: 4.19.1 118 | semver: 6.3.0 119 | dev: true 120 | 121 | /@babel/helper-create-class-features-plugin/7.16.5_@babel+core@7.16.5: 122 | resolution: {integrity: sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==} 123 | engines: {node: '>=6.9.0'} 124 | peerDependencies: 125 | '@babel/core': ^7.0.0 126 | dependencies: 127 | '@babel/core': 7.16.5 128 | '@babel/helper-annotate-as-pure': 7.16.0 129 | '@babel/helper-environment-visitor': 7.16.5 130 | '@babel/helper-function-name': 7.16.0 131 | '@babel/helper-member-expression-to-functions': 7.16.5 132 | '@babel/helper-optimise-call-expression': 7.16.0 133 | '@babel/helper-replace-supers': 7.16.5 134 | '@babel/helper-split-export-declaration': 7.16.0 135 | transitivePeerDependencies: 136 | - supports-color 137 | dev: true 138 | 139 | /@babel/helper-environment-visitor/7.16.5: 140 | resolution: {integrity: sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==} 141 | engines: {node: '>=6.9.0'} 142 | dependencies: 143 | '@babel/types': 7.16.0 144 | dev: true 145 | 146 | /@babel/helper-function-name/7.16.0: 147 | resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} 148 | engines: {node: '>=6.9.0'} 149 | dependencies: 150 | '@babel/helper-get-function-arity': 7.16.0 151 | '@babel/template': 7.16.0 152 | '@babel/types': 7.16.0 153 | dev: true 154 | 155 | /@babel/helper-get-function-arity/7.16.0: 156 | resolution: {integrity: sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==} 157 | engines: {node: '>=6.9.0'} 158 | dependencies: 159 | '@babel/types': 7.16.0 160 | dev: true 161 | 162 | /@babel/helper-hoist-variables/7.16.0: 163 | resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} 164 | engines: {node: '>=6.9.0'} 165 | dependencies: 166 | '@babel/types': 7.16.0 167 | dev: true 168 | 169 | /@babel/helper-member-expression-to-functions/7.16.5: 170 | resolution: {integrity: sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==} 171 | engines: {node: '>=6.9.0'} 172 | dependencies: 173 | '@babel/types': 7.16.0 174 | dev: true 175 | 176 | /@babel/helper-module-imports/7.16.0: 177 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 178 | engines: {node: '>=6.9.0'} 179 | dependencies: 180 | '@babel/types': 7.16.0 181 | dev: true 182 | 183 | /@babel/helper-module-transforms/7.16.5: 184 | resolution: {integrity: sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==} 185 | engines: {node: '>=6.9.0'} 186 | dependencies: 187 | '@babel/helper-environment-visitor': 7.16.5 188 | '@babel/helper-module-imports': 7.16.0 189 | '@babel/helper-simple-access': 7.16.0 190 | '@babel/helper-split-export-declaration': 7.16.0 191 | '@babel/helper-validator-identifier': 7.15.7 192 | '@babel/template': 7.16.0 193 | '@babel/traverse': 7.16.5 194 | '@babel/types': 7.16.0 195 | transitivePeerDependencies: 196 | - supports-color 197 | dev: true 198 | 199 | /@babel/helper-optimise-call-expression/7.16.0: 200 | resolution: {integrity: sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==} 201 | engines: {node: '>=6.9.0'} 202 | dependencies: 203 | '@babel/types': 7.16.0 204 | dev: true 205 | 206 | /@babel/helper-plugin-utils/7.16.5: 207 | resolution: {integrity: sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==} 208 | engines: {node: '>=6.9.0'} 209 | dev: true 210 | 211 | /@babel/helper-replace-supers/7.16.5: 212 | resolution: {integrity: sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==} 213 | engines: {node: '>=6.9.0'} 214 | dependencies: 215 | '@babel/helper-environment-visitor': 7.16.5 216 | '@babel/helper-member-expression-to-functions': 7.16.5 217 | '@babel/helper-optimise-call-expression': 7.16.0 218 | '@babel/traverse': 7.16.5 219 | '@babel/types': 7.16.0 220 | transitivePeerDependencies: 221 | - supports-color 222 | dev: true 223 | 224 | /@babel/helper-simple-access/7.16.0: 225 | resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} 226 | engines: {node: '>=6.9.0'} 227 | dependencies: 228 | '@babel/types': 7.16.0 229 | dev: true 230 | 231 | /@babel/helper-split-export-declaration/7.16.0: 232 | resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} 233 | engines: {node: '>=6.9.0'} 234 | dependencies: 235 | '@babel/types': 7.16.0 236 | dev: true 237 | 238 | /@babel/helper-validator-identifier/7.15.7: 239 | resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} 240 | engines: {node: '>=6.9.0'} 241 | dev: true 242 | 243 | /@babel/helper-validator-option/7.14.5: 244 | resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} 245 | engines: {node: '>=6.9.0'} 246 | dev: true 247 | 248 | /@babel/helpers/7.16.5: 249 | resolution: {integrity: sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==} 250 | engines: {node: '>=6.9.0'} 251 | dependencies: 252 | '@babel/template': 7.16.0 253 | '@babel/traverse': 7.16.5 254 | '@babel/types': 7.16.0 255 | transitivePeerDependencies: 256 | - supports-color 257 | dev: true 258 | 259 | /@babel/highlight/7.16.0: 260 | resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} 261 | engines: {node: '>=6.9.0'} 262 | dependencies: 263 | '@babel/helper-validator-identifier': 7.15.7 264 | chalk: 2.4.2 265 | js-tokens: 4.0.0 266 | dev: true 267 | 268 | /@babel/parser/7.16.6: 269 | resolution: {integrity: sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==} 270 | engines: {node: '>=6.0.0'} 271 | hasBin: true 272 | 273 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.5: 274 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 275 | peerDependencies: 276 | '@babel/core': ^7.0.0-0 277 | dependencies: 278 | '@babel/core': 7.16.5 279 | '@babel/helper-plugin-utils': 7.16.5 280 | dev: true 281 | 282 | /@babel/plugin-syntax-jsx/7.16.5_@babel+core@7.16.5: 283 | resolution: {integrity: sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==} 284 | engines: {node: '>=6.9.0'} 285 | peerDependencies: 286 | '@babel/core': ^7.0.0-0 287 | dependencies: 288 | '@babel/core': 7.16.5 289 | '@babel/helper-plugin-utils': 7.16.5 290 | dev: true 291 | 292 | /@babel/plugin-syntax-typescript/7.16.5_@babel+core@7.16.5: 293 | resolution: {integrity: sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw==} 294 | engines: {node: '>=6.9.0'} 295 | peerDependencies: 296 | '@babel/core': ^7.0.0-0 297 | dependencies: 298 | '@babel/core': 7.16.5 299 | '@babel/helper-plugin-utils': 7.16.5 300 | dev: true 301 | 302 | /@babel/plugin-transform-typescript/7.16.1_@babel+core@7.16.5: 303 | resolution: {integrity: sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==} 304 | engines: {node: '>=6.9.0'} 305 | peerDependencies: 306 | '@babel/core': ^7.0.0-0 307 | dependencies: 308 | '@babel/core': 7.16.5 309 | '@babel/helper-create-class-features-plugin': 7.16.5_@babel+core@7.16.5 310 | '@babel/helper-plugin-utils': 7.16.5 311 | '@babel/plugin-syntax-typescript': 7.16.5_@babel+core@7.16.5 312 | transitivePeerDependencies: 313 | - supports-color 314 | dev: true 315 | 316 | /@babel/template/7.16.0: 317 | resolution: {integrity: sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==} 318 | engines: {node: '>=6.9.0'} 319 | dependencies: 320 | '@babel/code-frame': 7.16.0 321 | '@babel/parser': 7.16.6 322 | '@babel/types': 7.16.0 323 | dev: true 324 | 325 | /@babel/traverse/7.16.5: 326 | resolution: {integrity: sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==} 327 | engines: {node: '>=6.9.0'} 328 | dependencies: 329 | '@babel/code-frame': 7.16.0 330 | '@babel/generator': 7.16.5 331 | '@babel/helper-environment-visitor': 7.16.5 332 | '@babel/helper-function-name': 7.16.0 333 | '@babel/helper-hoist-variables': 7.16.0 334 | '@babel/helper-split-export-declaration': 7.16.0 335 | '@babel/parser': 7.16.6 336 | '@babel/types': 7.16.0 337 | debug: 4.3.3 338 | globals: 11.12.0 339 | transitivePeerDependencies: 340 | - supports-color 341 | dev: true 342 | 343 | /@babel/types/7.16.0: 344 | resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} 345 | engines: {node: '>=6.9.0'} 346 | dependencies: 347 | '@babel/helper-validator-identifier': 7.15.7 348 | to-fast-properties: 2.0.0 349 | dev: true 350 | 351 | /@emmetio/abbreviation/2.2.2: 352 | resolution: {integrity: sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw==} 353 | dependencies: 354 | '@emmetio/scanner': 1.0.0 355 | dev: true 356 | 357 | /@emmetio/css-abbreviation/2.1.4: 358 | resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} 359 | dependencies: 360 | '@emmetio/scanner': 1.0.0 361 | dev: true 362 | 363 | /@emmetio/scanner/1.0.0: 364 | resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} 365 | dev: true 366 | 367 | /@eslint/eslintrc/1.0.5: 368 | resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} 369 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 370 | dependencies: 371 | ajv: 6.12.6 372 | debug: 4.3.3 373 | espree: 9.3.0 374 | globals: 13.12.0 375 | ignore: 4.0.6 376 | import-fresh: 3.3.0 377 | js-yaml: 4.1.0 378 | minimatch: 3.0.4 379 | strip-json-comments: 3.1.1 380 | transitivePeerDependencies: 381 | - supports-color 382 | dev: true 383 | 384 | /@humanwhocodes/config-array/0.9.2: 385 | resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} 386 | engines: {node: '>=10.10.0'} 387 | dependencies: 388 | '@humanwhocodes/object-schema': 1.2.1 389 | debug: 4.3.3 390 | minimatch: 3.0.4 391 | transitivePeerDependencies: 392 | - supports-color 393 | dev: true 394 | 395 | /@humanwhocodes/object-schema/1.2.1: 396 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 397 | dev: true 398 | 399 | /@nodelib/fs.scandir/2.1.5: 400 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 401 | engines: {node: '>= 8'} 402 | dependencies: 403 | '@nodelib/fs.stat': 2.0.5 404 | run-parallel: 1.2.0 405 | dev: true 406 | 407 | /@nodelib/fs.stat/2.0.5: 408 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 409 | engines: {node: '>= 8'} 410 | dev: true 411 | 412 | /@nodelib/fs.walk/1.2.8: 413 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 414 | engines: {node: '>= 8'} 415 | dependencies: 416 | '@nodelib/fs.scandir': 2.1.5 417 | fastq: 1.13.0 418 | dev: true 419 | 420 | /@rollup/plugin-node-resolve/13.1.2: 421 | resolution: {integrity: sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==} 422 | engines: {node: '>= 10.0.0'} 423 | peerDependencies: 424 | rollup: ^2.42.0 425 | dependencies: 426 | '@rollup/pluginutils': 3.1.0 427 | '@types/resolve': 1.17.1 428 | builtin-modules: 3.2.0 429 | deepmerge: 4.2.2 430 | is-module: 1.0.0 431 | resolve: 1.20.0 432 | dev: true 433 | 434 | /@rollup/pluginutils/3.1.0: 435 | resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} 436 | engines: {node: '>= 8.0.0'} 437 | peerDependencies: 438 | rollup: ^1.20.0||^2.0.0 439 | dependencies: 440 | '@types/estree': 0.0.39 441 | estree-walker: 1.0.1 442 | picomatch: 2.3.0 443 | dev: true 444 | 445 | /@rollup/pluginutils/4.1.2: 446 | resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} 447 | engines: {node: '>= 8.0.0'} 448 | dependencies: 449 | estree-walker: 2.0.2 450 | picomatch: 2.3.0 451 | dev: true 452 | 453 | /@rushstack/eslint-patch/1.1.0: 454 | resolution: {integrity: sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==} 455 | dev: true 456 | 457 | /@types/estree/0.0.39: 458 | resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} 459 | dev: true 460 | 461 | /@types/json-schema/7.0.9: 462 | resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} 463 | dev: true 464 | 465 | /@types/mockjs/1.0.4: 466 | resolution: {integrity: sha512-gK20xPqJhzMIitechVbvfnAk+oBIxVRnWrihJpRYHMI6UHCB/cvWgJa+dy6trRwQLE3AbtAJnXpm7pn6blG8sA==} 467 | dev: true 468 | 469 | /@types/node/12.20.39: 470 | resolution: {integrity: sha512-U7PMwkDmc3bnL0e4U8oA0POpi1vfsYDc+DEUS2+rPxm9NlLcW1dBa5JcRhO633PoPUcCSWMNXrMsqhmAVEo+IQ==} 471 | dev: true 472 | 473 | /@types/resolve/1.17.1: 474 | resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} 475 | dependencies: 476 | '@types/node': 12.20.39 477 | dev: true 478 | 479 | /@typescript-eslint/eslint-plugin/5.9.0_bd2fd93dbcc607ad2f21b784bccfe0c8: 480 | resolution: {integrity: sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==} 481 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 482 | peerDependencies: 483 | '@typescript-eslint/parser': ^5.0.0 484 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 485 | typescript: '*' 486 | peerDependenciesMeta: 487 | typescript: 488 | optional: true 489 | dependencies: 490 | '@typescript-eslint/experimental-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 491 | '@typescript-eslint/parser': 5.9.0_eslint@8.6.0+typescript@4.5.4 492 | '@typescript-eslint/scope-manager': 5.9.0 493 | '@typescript-eslint/type-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 494 | debug: 4.3.3 495 | eslint: 8.6.0 496 | functional-red-black-tree: 1.0.1 497 | ignore: 5.2.0 498 | regexpp: 3.2.0 499 | semver: 7.3.5 500 | tsutils: 3.21.0_typescript@4.5.4 501 | typescript: 4.5.4 502 | transitivePeerDependencies: 503 | - supports-color 504 | dev: true 505 | 506 | /@typescript-eslint/experimental-utils/5.9.0_eslint@8.6.0+typescript@4.5.4: 507 | resolution: {integrity: sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==} 508 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 509 | peerDependencies: 510 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 511 | dependencies: 512 | '@types/json-schema': 7.0.9 513 | '@typescript-eslint/scope-manager': 5.9.0 514 | '@typescript-eslint/types': 5.9.0 515 | '@typescript-eslint/typescript-estree': 5.9.0_typescript@4.5.4 516 | eslint: 8.6.0 517 | eslint-scope: 5.1.1 518 | eslint-utils: 3.0.0_eslint@8.6.0 519 | transitivePeerDependencies: 520 | - supports-color 521 | - typescript 522 | dev: true 523 | 524 | /@typescript-eslint/parser/5.9.0_eslint@8.6.0+typescript@4.5.4: 525 | resolution: {integrity: sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==} 526 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 527 | peerDependencies: 528 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 529 | typescript: '*' 530 | peerDependenciesMeta: 531 | typescript: 532 | optional: true 533 | dependencies: 534 | '@typescript-eslint/scope-manager': 5.9.0 535 | '@typescript-eslint/types': 5.9.0 536 | '@typescript-eslint/typescript-estree': 5.9.0_typescript@4.5.4 537 | debug: 4.3.3 538 | eslint: 8.6.0 539 | typescript: 4.5.4 540 | transitivePeerDependencies: 541 | - supports-color 542 | dev: true 543 | 544 | /@typescript-eslint/scope-manager/5.9.0: 545 | resolution: {integrity: sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==} 546 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 547 | dependencies: 548 | '@typescript-eslint/types': 5.9.0 549 | '@typescript-eslint/visitor-keys': 5.9.0 550 | dev: true 551 | 552 | /@typescript-eslint/type-utils/5.9.0_eslint@8.6.0+typescript@4.5.4: 553 | resolution: {integrity: sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==} 554 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 555 | peerDependencies: 556 | eslint: '*' 557 | typescript: '*' 558 | peerDependenciesMeta: 559 | typescript: 560 | optional: true 561 | dependencies: 562 | '@typescript-eslint/experimental-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 563 | debug: 4.3.3 564 | eslint: 8.6.0 565 | tsutils: 3.21.0_typescript@4.5.4 566 | typescript: 4.5.4 567 | transitivePeerDependencies: 568 | - supports-color 569 | dev: true 570 | 571 | /@typescript-eslint/types/5.9.0: 572 | resolution: {integrity: sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==} 573 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 574 | dev: true 575 | 576 | /@typescript-eslint/typescript-estree/5.9.0_typescript@4.5.4: 577 | resolution: {integrity: sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==} 578 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 579 | peerDependencies: 580 | typescript: '*' 581 | peerDependenciesMeta: 582 | typescript: 583 | optional: true 584 | dependencies: 585 | '@typescript-eslint/types': 5.9.0 586 | '@typescript-eslint/visitor-keys': 5.9.0 587 | debug: 4.3.3 588 | globby: 11.0.4 589 | is-glob: 4.0.3 590 | semver: 7.3.5 591 | tsutils: 3.21.0_typescript@4.5.4 592 | typescript: 4.5.4 593 | transitivePeerDependencies: 594 | - supports-color 595 | dev: true 596 | 597 | /@typescript-eslint/visitor-keys/5.9.0: 598 | resolution: {integrity: sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==} 599 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 600 | dependencies: 601 | '@typescript-eslint/types': 5.9.0 602 | eslint-visitor-keys: 3.1.0 603 | dev: true 604 | 605 | /@vitejs/plugin-vue-jsx/1.3.3: 606 | resolution: {integrity: sha512-VSBXVqMcxbgX85rgJC1eMWuZ9hzOJhWPvGYlKxyymPokE/i3Gykh5ljkCoNdxnKgIyFqv4WutYoYY93fgjbTxA==} 607 | engines: {node: '>=12.0.0'} 608 | dependencies: 609 | '@babel/core': 7.16.5 610 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.5 611 | '@babel/plugin-transform-typescript': 7.16.1_@babel+core@7.16.5 612 | '@rollup/pluginutils': 4.1.2 613 | '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.16.5 614 | hash-sum: 2.0.0 615 | transitivePeerDependencies: 616 | - supports-color 617 | dev: true 618 | 619 | /@vitejs/plugin-vue/2.0.1_vite@2.7.5+vue@3.2.26: 620 | resolution: {integrity: sha512-wtdMnGVvys9K8tg+DxowU1ytTrdVveXr3LzdhaKakysgGXyrsfaeds2cDywtvujEASjWOwWL/OgWM+qoeM8Plg==} 621 | engines: {node: '>=12.0.0'} 622 | peerDependencies: 623 | vite: ^2.5.10 624 | vue: ^3.2.25 625 | dependencies: 626 | vite: 2.7.5_sass@1.45.1 627 | vue: 3.2.26 628 | dev: true 629 | 630 | /@volar/code-gen/0.29.8: 631 | resolution: {integrity: sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==} 632 | dependencies: 633 | '@volar/shared': 0.29.8 634 | '@volar/source-map': 0.29.8 635 | dev: true 636 | 637 | /@volar/html2pug/0.29.8: 638 | resolution: {integrity: sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==} 639 | dependencies: 640 | domelementtype: 2.2.0 641 | domhandler: 4.3.0 642 | htmlparser2: 7.2.0 643 | pug: 3.0.2 644 | dev: true 645 | 646 | /@volar/shared/0.29.8: 647 | resolution: {integrity: sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==} 648 | dependencies: 649 | upath: 2.0.1 650 | vscode-jsonrpc: 8.0.0-next.4 651 | vscode-uri: 3.0.3 652 | dev: true 653 | 654 | /@volar/source-map/0.29.8: 655 | resolution: {integrity: sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==} 656 | dependencies: 657 | '@volar/shared': 0.29.8 658 | dev: true 659 | 660 | /@volar/transforms/0.29.8: 661 | resolution: {integrity: sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==} 662 | dependencies: 663 | '@volar/shared': 0.29.8 664 | vscode-languageserver: 8.0.0-next.5 665 | dev: true 666 | 667 | /@volar/vue-code-gen/0.29.8: 668 | resolution: {integrity: sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==} 669 | dependencies: 670 | '@volar/code-gen': 0.29.8 671 | '@volar/shared': 0.29.8 672 | '@volar/source-map': 0.29.8 673 | '@vue/compiler-core': 3.2.26 674 | '@vue/compiler-dom': 3.2.26 675 | '@vue/shared': 3.2.26 676 | upath: 2.0.1 677 | dev: true 678 | 679 | /@vscode/emmet-helper/2.8.3: 680 | resolution: {integrity: sha512-dkTSL+BaBBS8gFgPm/GMOU+XfxaMyI+Fl1IUYxEi8Iv24RfHf9/q2eCpV2hs7sncLcoKWEbMYe5gv4Ppmp2Oxw==} 681 | dependencies: 682 | emmet: 2.3.5 683 | jsonc-parser: 2.3.1 684 | vscode-languageserver-textdocument: 1.0.3 685 | vscode-languageserver-types: 3.16.0 686 | vscode-nls: 5.0.0 687 | vscode-uri: 2.1.2 688 | dev: true 689 | 690 | /@vue/babel-helper-vue-transform-on/1.0.2: 691 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} 692 | dev: true 693 | 694 | /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.16.5: 695 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} 696 | dependencies: 697 | '@babel/helper-module-imports': 7.16.0 698 | '@babel/plugin-syntax-jsx': 7.16.5_@babel+core@7.16.5 699 | '@babel/template': 7.16.0 700 | '@babel/traverse': 7.16.5 701 | '@babel/types': 7.16.0 702 | '@vue/babel-helper-vue-transform-on': 1.0.2 703 | camelcase: 6.2.1 704 | html-tags: 3.1.0 705 | svg-tags: 1.0.0 706 | transitivePeerDependencies: 707 | - '@babel/core' 708 | - supports-color 709 | dev: true 710 | 711 | /@vue/compiler-core/3.2.26: 712 | resolution: {integrity: sha512-N5XNBobZbaASdzY9Lga2D9Lul5vdCIOXvUMd6ThcN8zgqQhPKfCV+wfAJNNJKQkSHudnYRO2gEB+lp0iN3g2Tw==} 713 | dependencies: 714 | '@babel/parser': 7.16.6 715 | '@vue/shared': 3.2.26 716 | estree-walker: 2.0.2 717 | source-map: 0.6.1 718 | 719 | /@vue/compiler-dom/3.2.26: 720 | resolution: {integrity: sha512-smBfaOW6mQDxcT3p9TKT6mE22vjxjJL50GFVJiI0chXYGU/xzC05QRGrW3HHVuJrmLTLx5zBhsZ2dIATERbarg==} 721 | dependencies: 722 | '@vue/compiler-core': 3.2.26 723 | '@vue/shared': 3.2.26 724 | 725 | /@vue/compiler-sfc/3.2.26: 726 | resolution: {integrity: sha512-ePpnfktV90UcLdsDQUh2JdiTuhV0Skv2iYXxfNMOK/F3Q+2BO0AulcVcfoksOpTJGmhhfosWfMyEaEf0UaWpIw==} 727 | dependencies: 728 | '@babel/parser': 7.16.6 729 | '@vue/compiler-core': 3.2.26 730 | '@vue/compiler-dom': 3.2.26 731 | '@vue/compiler-ssr': 3.2.26 732 | '@vue/reactivity-transform': 3.2.26 733 | '@vue/shared': 3.2.26 734 | estree-walker: 2.0.2 735 | magic-string: 0.25.7 736 | postcss: 8.4.5 737 | source-map: 0.6.1 738 | dev: false 739 | 740 | /@vue/compiler-ssr/3.2.26: 741 | resolution: {integrity: sha512-2mywLX0ODc4Zn8qBoA2PDCsLEZfpUGZcyoFRLSOjyGGK6wDy2/5kyDOWtf0S0UvtoyVq95OTSGIALjZ4k2q/ag==} 742 | dependencies: 743 | '@vue/compiler-dom': 3.2.26 744 | '@vue/shared': 3.2.26 745 | dev: false 746 | 747 | /@vue/devtools-api/6.0.0-beta.21.1: 748 | resolution: {integrity: sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==} 749 | dev: false 750 | 751 | /@vue/eslint-config-prettier/7.0.0_eslint@8.6.0+prettier@2.5.1: 752 | resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==} 753 | peerDependencies: 754 | eslint: '>= 7.28.0' 755 | prettier: '>= 2.0.0' 756 | dependencies: 757 | eslint: 8.6.0 758 | eslint-config-prettier: 8.3.0_eslint@8.6.0 759 | eslint-plugin-prettier: 4.0.0_1c588f61426b1faf18812943f1678311 760 | prettier: 2.5.1 761 | dev: true 762 | 763 | /@vue/eslint-config-typescript/10.0.0_57f850728139557a3a27f1248f77f964: 764 | resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==} 765 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 766 | peerDependencies: 767 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 768 | eslint-plugin-vue: ^8.0.1 769 | dependencies: 770 | '@typescript-eslint/eslint-plugin': 5.9.0_bd2fd93dbcc607ad2f21b784bccfe0c8 771 | '@typescript-eslint/parser': 5.9.0_eslint@8.6.0+typescript@4.5.4 772 | eslint: 8.6.0 773 | eslint-plugin-vue: 8.2.0_eslint@8.6.0 774 | vue-eslint-parser: 8.0.1_eslint@8.6.0 775 | transitivePeerDependencies: 776 | - supports-color 777 | - typescript 778 | dev: true 779 | 780 | /@vue/reactivity-transform/3.2.26: 781 | resolution: {integrity: sha512-XKMyuCmzNA7nvFlYhdKwD78rcnmPb7q46uoR00zkX6yZrUmcCQ5OikiwUEVbvNhL5hBJuvbSO95jB5zkUon+eQ==} 782 | dependencies: 783 | '@babel/parser': 7.16.6 784 | '@vue/compiler-core': 3.2.26 785 | '@vue/shared': 3.2.26 786 | estree-walker: 2.0.2 787 | magic-string: 0.25.7 788 | dev: false 789 | 790 | /@vue/reactivity/3.2.26: 791 | resolution: {integrity: sha512-h38bxCZLW6oFJVDlCcAiUKFnXI8xP8d+eO0pcDxx+7dQfSPje2AO6M9S9QO6MrxQB7fGP0DH0dYQ8ksf6hrXKQ==} 792 | dependencies: 793 | '@vue/shared': 3.2.26 794 | 795 | /@vue/runtime-core/3.2.26: 796 | resolution: {integrity: sha512-BcYi7qZ9Nn+CJDJrHQ6Zsmxei2hDW0L6AB4vPvUQGBm2fZyC0GXd/4nVbyA2ubmuhctD5RbYY8L+5GUJszv9mQ==} 797 | dependencies: 798 | '@vue/reactivity': 3.2.26 799 | '@vue/shared': 3.2.26 800 | dev: false 801 | 802 | /@vue/runtime-dom/3.2.26: 803 | resolution: {integrity: sha512-dY56UIiZI+gjc4e8JQBwAifljyexfVCkIAu/WX8snh8vSOt/gMSEGwPRcl2UpYpBYeyExV8WCbgvwWRNt9cHhQ==} 804 | dependencies: 805 | '@vue/runtime-core': 3.2.26 806 | '@vue/shared': 3.2.26 807 | csstype: 2.6.19 808 | dev: false 809 | 810 | /@vue/server-renderer/3.2.26_vue@3.2.26: 811 | resolution: {integrity: sha512-Jp5SggDUvvUYSBIvYEhy76t4nr1vapY/FIFloWmQzn7UxqaHrrBpbxrqPcTrSgGrcaglj0VBp22BKJNre4aA1w==} 812 | peerDependencies: 813 | vue: 3.2.26 814 | dependencies: 815 | '@vue/compiler-ssr': 3.2.26 816 | '@vue/shared': 3.2.26 817 | vue: 3.2.26 818 | dev: false 819 | 820 | /@vue/shared/3.2.26: 821 | resolution: {integrity: sha512-vPV6Cq+NIWbH5pZu+V+2QHE9y1qfuTq49uNWw4f7FDEeZaDU2H2cx5jcUZOAKW7qTrUS4k6qZPbMy1x4N96nbA==} 822 | 823 | /acorn-jsx/5.3.2_acorn@8.7.0: 824 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 825 | peerDependencies: 826 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 827 | dependencies: 828 | acorn: 8.7.0 829 | dev: true 830 | 831 | /acorn/7.4.1: 832 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 833 | engines: {node: '>=0.4.0'} 834 | hasBin: true 835 | dev: true 836 | 837 | /acorn/8.7.0: 838 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 839 | engines: {node: '>=0.4.0'} 840 | hasBin: true 841 | dev: true 842 | 843 | /aggregate-error/3.1.0: 844 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 845 | engines: {node: '>=8'} 846 | dependencies: 847 | clean-stack: 2.2.0 848 | indent-string: 4.0.0 849 | dev: true 850 | 851 | /ajv/6.12.6: 852 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 853 | dependencies: 854 | fast-deep-equal: 3.1.3 855 | fast-json-stable-stringify: 2.1.0 856 | json-schema-traverse: 0.4.1 857 | uri-js: 4.4.1 858 | dev: true 859 | 860 | /ansi-colors/4.1.1: 861 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 862 | engines: {node: '>=6'} 863 | dev: true 864 | 865 | /ansi-escapes/4.3.2: 866 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 867 | engines: {node: '>=8'} 868 | dependencies: 869 | type-fest: 0.21.3 870 | dev: true 871 | 872 | /ansi-regex/5.0.1: 873 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 874 | engines: {node: '>=8'} 875 | dev: true 876 | 877 | /ansi-regex/6.0.1: 878 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 879 | engines: {node: '>=12'} 880 | dev: true 881 | 882 | /ansi-styles/3.2.1: 883 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 884 | engines: {node: '>=4'} 885 | dependencies: 886 | color-convert: 1.9.3 887 | dev: true 888 | 889 | /ansi-styles/4.3.0: 890 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 891 | engines: {node: '>=8'} 892 | dependencies: 893 | color-convert: 2.0.1 894 | dev: true 895 | 896 | /ansi-styles/6.1.0: 897 | resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} 898 | engines: {node: '>=12'} 899 | dev: true 900 | 901 | /anymatch/3.1.2: 902 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 903 | engines: {node: '>= 8'} 904 | dependencies: 905 | normalize-path: 3.0.0 906 | picomatch: 2.3.0 907 | dev: true 908 | 909 | /argparse/2.0.1: 910 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 911 | dev: true 912 | 913 | /array-union/2.1.0: 914 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 915 | engines: {node: '>=8'} 916 | dev: true 917 | 918 | /asap/2.0.6: 919 | resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} 920 | dev: true 921 | 922 | /assert-never/1.2.1: 923 | resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} 924 | dev: true 925 | 926 | /astral-regex/2.0.0: 927 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 928 | engines: {node: '>=8'} 929 | dev: true 930 | 931 | /axios/0.24.0: 932 | resolution: {integrity: sha1-gE5voeS5xSiFAd2d/1anoJQNINY=} 933 | dependencies: 934 | follow-redirects: 1.14.6 935 | transitivePeerDependencies: 936 | - debug 937 | dev: false 938 | 939 | /babel-walk/3.0.0-canary-5: 940 | resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} 941 | engines: {node: '>= 10.0.0'} 942 | dependencies: 943 | '@babel/types': 7.16.0 944 | dev: true 945 | 946 | /balanced-match/1.0.2: 947 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 948 | dev: true 949 | 950 | /binary-extensions/2.2.0: 951 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 952 | engines: {node: '>=8'} 953 | dev: true 954 | 955 | /brace-expansion/1.1.11: 956 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 957 | dependencies: 958 | balanced-match: 1.0.2 959 | concat-map: 0.0.1 960 | dev: true 961 | 962 | /braces/3.0.2: 963 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 964 | engines: {node: '>=8'} 965 | dependencies: 966 | fill-range: 7.0.1 967 | dev: true 968 | 969 | /browserslist/4.19.1: 970 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} 971 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 972 | hasBin: true 973 | dependencies: 974 | caniuse-lite: 1.0.30001292 975 | electron-to-chromium: 1.4.26 976 | escalade: 3.1.1 977 | node-releases: 2.0.1 978 | picocolors: 1.0.0 979 | dev: true 980 | 981 | /builtin-modules/3.2.0: 982 | resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} 983 | engines: {node: '>=6'} 984 | dev: true 985 | 986 | /call-bind/1.0.2: 987 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 988 | dependencies: 989 | function-bind: 1.1.1 990 | get-intrinsic: 1.1.1 991 | dev: true 992 | 993 | /callsites/3.1.0: 994 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 995 | engines: {node: '>=6'} 996 | dev: true 997 | 998 | /camelcase/6.2.1: 999 | resolution: {integrity: sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==} 1000 | engines: {node: '>=10'} 1001 | dev: true 1002 | 1003 | /caniuse-lite/1.0.30001292: 1004 | resolution: {integrity: sha512-jnT4Tq0Q4ma+6nncYQVe7d73kmDmE9C3OGTx3MvW7lBM/eY1S1DZTMBON7dqV481RhNiS5OxD7k9JQvmDOTirw==} 1005 | dev: true 1006 | 1007 | /chalk/2.4.2: 1008 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1009 | engines: {node: '>=4'} 1010 | dependencies: 1011 | ansi-styles: 3.2.1 1012 | escape-string-regexp: 1.0.5 1013 | supports-color: 5.5.0 1014 | dev: true 1015 | 1016 | /chalk/4.1.2: 1017 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1018 | engines: {node: '>=10'} 1019 | dependencies: 1020 | ansi-styles: 4.3.0 1021 | supports-color: 7.2.0 1022 | dev: true 1023 | 1024 | /character-parser/2.2.0: 1025 | resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} 1026 | dependencies: 1027 | is-regex: 1.1.4 1028 | dev: true 1029 | 1030 | /chokidar/3.5.2: 1031 | resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} 1032 | engines: {node: '>= 8.10.0'} 1033 | dependencies: 1034 | anymatch: 3.1.2 1035 | braces: 3.0.2 1036 | glob-parent: 5.1.2 1037 | is-binary-path: 2.1.0 1038 | is-glob: 4.0.3 1039 | normalize-path: 3.0.0 1040 | readdirp: 3.6.0 1041 | optionalDependencies: 1042 | fsevents: 2.3.2 1043 | dev: true 1044 | 1045 | /clean-stack/2.2.0: 1046 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 1047 | engines: {node: '>=6'} 1048 | dev: true 1049 | 1050 | /cli-cursor/3.1.0: 1051 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} 1052 | engines: {node: '>=8'} 1053 | dependencies: 1054 | restore-cursor: 3.1.0 1055 | dev: true 1056 | 1057 | /cli-truncate/2.1.0: 1058 | resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} 1059 | engines: {node: '>=8'} 1060 | dependencies: 1061 | slice-ansi: 3.0.0 1062 | string-width: 4.2.3 1063 | dev: true 1064 | 1065 | /cli-truncate/3.1.0: 1066 | resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} 1067 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1068 | dependencies: 1069 | slice-ansi: 5.0.0 1070 | string-width: 5.0.1 1071 | dev: true 1072 | 1073 | /color-convert/1.9.3: 1074 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1075 | dependencies: 1076 | color-name: 1.1.3 1077 | dev: true 1078 | 1079 | /color-convert/2.0.1: 1080 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1081 | engines: {node: '>=7.0.0'} 1082 | dependencies: 1083 | color-name: 1.1.4 1084 | dev: true 1085 | 1086 | /color-name/1.1.3: 1087 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1088 | dev: true 1089 | 1090 | /color-name/1.1.4: 1091 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1092 | dev: true 1093 | 1094 | /colorette/2.0.16: 1095 | resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==} 1096 | dev: true 1097 | 1098 | /commander/8.3.0: 1099 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1100 | engines: {node: '>= 12'} 1101 | dev: true 1102 | 1103 | /concat-map/0.0.1: 1104 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1105 | dev: true 1106 | 1107 | /connect/3.7.0: 1108 | resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} 1109 | engines: {node: '>= 0.10.0'} 1110 | dependencies: 1111 | debug: 2.6.9 1112 | finalhandler: 1.1.2 1113 | parseurl: 1.3.3 1114 | utils-merge: 1.0.1 1115 | dev: true 1116 | 1117 | /constantinople/4.0.1: 1118 | resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} 1119 | dependencies: 1120 | '@babel/parser': 7.16.6 1121 | '@babel/types': 7.16.0 1122 | dev: true 1123 | 1124 | /convert-source-map/1.8.0: 1125 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1126 | dependencies: 1127 | safe-buffer: 5.1.2 1128 | dev: true 1129 | 1130 | /cross-spawn/7.0.3: 1131 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1132 | engines: {node: '>= 8'} 1133 | dependencies: 1134 | path-key: 3.1.1 1135 | shebang-command: 2.0.0 1136 | which: 2.0.2 1137 | dev: true 1138 | 1139 | /csstype/2.6.19: 1140 | resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==} 1141 | dev: false 1142 | 1143 | /debug/2.6.9: 1144 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1145 | dependencies: 1146 | ms: 2.0.0 1147 | dev: true 1148 | 1149 | /debug/4.3.3: 1150 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} 1151 | engines: {node: '>=6.0'} 1152 | peerDependencies: 1153 | supports-color: '*' 1154 | peerDependenciesMeta: 1155 | supports-color: 1156 | optional: true 1157 | dependencies: 1158 | ms: 2.1.2 1159 | dev: true 1160 | 1161 | /debug/4.3.3_supports-color@9.2.1: 1162 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} 1163 | engines: {node: '>=6.0'} 1164 | peerDependencies: 1165 | supports-color: '*' 1166 | peerDependenciesMeta: 1167 | supports-color: 1168 | optional: true 1169 | dependencies: 1170 | ms: 2.1.2 1171 | supports-color: 9.2.1 1172 | dev: true 1173 | 1174 | /deep-is/0.1.4: 1175 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1176 | dev: true 1177 | 1178 | /deepmerge/4.2.2: 1179 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1180 | engines: {node: '>=0.10.0'} 1181 | dev: true 1182 | 1183 | /dir-glob/3.0.1: 1184 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1185 | engines: {node: '>=8'} 1186 | dependencies: 1187 | path-type: 4.0.0 1188 | dev: true 1189 | 1190 | /doctrine/3.0.0: 1191 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1192 | engines: {node: '>=6.0.0'} 1193 | dependencies: 1194 | esutils: 2.0.3 1195 | dev: true 1196 | 1197 | /doctypes/1.1.0: 1198 | resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} 1199 | dev: true 1200 | 1201 | /dom-serializer/1.3.2: 1202 | resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} 1203 | dependencies: 1204 | domelementtype: 2.2.0 1205 | domhandler: 4.3.0 1206 | entities: 2.2.0 1207 | dev: true 1208 | 1209 | /domelementtype/2.2.0: 1210 | resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} 1211 | dev: true 1212 | 1213 | /domhandler/4.3.0: 1214 | resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} 1215 | engines: {node: '>= 4'} 1216 | dependencies: 1217 | domelementtype: 2.2.0 1218 | dev: true 1219 | 1220 | /domutils/2.8.0: 1221 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 1222 | dependencies: 1223 | dom-serializer: 1.3.2 1224 | domelementtype: 2.2.0 1225 | domhandler: 4.3.0 1226 | dev: true 1227 | 1228 | /ee-first/1.1.1: 1229 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 1230 | dev: true 1231 | 1232 | /electron-to-chromium/1.4.26: 1233 | resolution: {integrity: sha512-cA1YwlRzO6TGp7yd3+KAqh9Tt6Z4CuuKqsAJP6uF/H5MQryjAGDhMhnY5cEXo8MaRCczpzSBhMPdqRIodkbZYw==} 1234 | dev: true 1235 | 1236 | /emmet/2.3.5: 1237 | resolution: {integrity: sha512-LcWfTamJnXIdMfLvJEC5Ld3hY5/KHXgv1L1bp6I7eEvB0ZhacHZ1kX0BYovJ8FroEsreLcq7n7kZhRMsf6jkXQ==} 1238 | dependencies: 1239 | '@emmetio/abbreviation': 2.2.2 1240 | '@emmetio/css-abbreviation': 2.1.4 1241 | dev: true 1242 | 1243 | /emoji-regex/8.0.0: 1244 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1245 | dev: true 1246 | 1247 | /emoji-regex/9.2.2: 1248 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1249 | dev: true 1250 | 1251 | /encodeurl/1.0.2: 1252 | resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} 1253 | engines: {node: '>= 0.8'} 1254 | dev: true 1255 | 1256 | /enquirer/2.3.6: 1257 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1258 | engines: {node: '>=8.6'} 1259 | dependencies: 1260 | ansi-colors: 4.1.1 1261 | dev: true 1262 | 1263 | /entities/2.2.0: 1264 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 1265 | dev: true 1266 | 1267 | /entities/3.0.1: 1268 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} 1269 | engines: {node: '>=0.12'} 1270 | dev: true 1271 | 1272 | /esbuild-android-arm64/0.13.15: 1273 | resolution: {integrity: sha1-P8P/C6t2/jXdI3R2tdKzK7IKPUQ=} 1274 | cpu: [arm64] 1275 | os: [android] 1276 | requiresBuild: true 1277 | dev: true 1278 | optional: true 1279 | 1280 | /esbuild-darwin-64/0.13.15: 1281 | resolution: {integrity: sha1-jpFpwWuvRE6s7GDQmyTRGyVajnI=} 1282 | cpu: [x64] 1283 | os: [darwin] 1284 | requiresBuild: true 1285 | dev: true 1286 | optional: true 1287 | 1288 | /esbuild-darwin-arm64/0.13.15: 1289 | resolution: {integrity: sha1-Gwf4k7YyEU+AXhiN38pBsrd4Ipo=} 1290 | cpu: [arm64] 1291 | os: [darwin] 1292 | requiresBuild: true 1293 | dev: true 1294 | optional: true 1295 | 1296 | /esbuild-freebsd-64/0.13.15: 1297 | resolution: {integrity: sha1-C4t+yhaQyOyUx1aAw4wHJpwfSoU=} 1298 | cpu: [x64] 1299 | os: [freebsd] 1300 | requiresBuild: true 1301 | dev: true 1302 | optional: true 1303 | 1304 | /esbuild-freebsd-arm64/0.13.15: 1305 | resolution: {integrity: sha1-LhpsaWv9zSCplXi3Y1C0HbGTTlI=} 1306 | cpu: [arm64] 1307 | os: [freebsd] 1308 | requiresBuild: true 1309 | dev: true 1310 | optional: true 1311 | 1312 | /esbuild-linux-32/0.13.15: 1313 | resolution: {integrity: sha1-b9OfNvxm3UW2tfUVcox7vrw0Kmk=} 1314 | cpu: [ia32] 1315 | os: [linux] 1316 | requiresBuild: true 1317 | dev: true 1318 | optional: true 1319 | 1320 | /esbuild-linux-64/0.13.15: 1321 | resolution: {integrity: sha1-nLjkvNdXTmeUbk7l8fHhI4a7bdM=} 1322 | cpu: [x64] 1323 | os: [linux] 1324 | requiresBuild: true 1325 | dev: true 1326 | optional: true 1327 | 1328 | /esbuild-linux-arm/0.13.15: 1329 | resolution: {integrity: sha1-igDpnmoMbJprfzNIQTZNiitK7P4=} 1330 | cpu: [arm] 1331 | os: [linux] 1332 | requiresBuild: true 1333 | dev: true 1334 | optional: true 1335 | 1336 | /esbuild-linux-arm64/0.13.15: 1337 | resolution: {integrity: sha1-OJGqNwTsV5obktKlhhIuW2or+6E=} 1338 | cpu: [arm64] 1339 | os: [linux] 1340 | requiresBuild: true 1341 | dev: true 1342 | optional: true 1343 | 1344 | /esbuild-linux-mips64le/0.13.15: 1345 | resolution: {integrity: sha1-NrB8xHw9IeSNs7sfTZ749Grq1Pc=} 1346 | cpu: [mips64el] 1347 | os: [linux] 1348 | requiresBuild: true 1349 | dev: true 1350 | optional: true 1351 | 1352 | /esbuild-linux-ppc64le/0.13.15: 1353 | resolution: {integrity: sha1-9+a7pAuaEeudyuWwFVDqBGcO2tI=} 1354 | cpu: [ppc64] 1355 | os: [linux] 1356 | requiresBuild: true 1357 | dev: true 1358 | optional: true 1359 | 1360 | /esbuild-netbsd-64/0.13.15: 1361 | resolution: {integrity: sha1-ov7cVJwrYp1YCnMthAcSsI1EADg=} 1362 | cpu: [x64] 1363 | os: [netbsd] 1364 | requiresBuild: true 1365 | dev: true 1366 | optional: true 1367 | 1368 | /esbuild-openbsd-64/0.13.15: 1369 | resolution: {integrity: sha1-siwOWAbTofvwMlhyA3+IUwawXNc=} 1370 | cpu: [x64] 1371 | os: [openbsd] 1372 | requiresBuild: true 1373 | dev: true 1374 | optional: true 1375 | 1376 | /esbuild-sunos-64/0.13.15: 1377 | resolution: {integrity: sha1-0LZFSog3XujTlk2u/1XIXJHHzvQ=} 1378 | cpu: [x64] 1379 | os: [sunos] 1380 | requiresBuild: true 1381 | dev: true 1382 | optional: true 1383 | 1384 | /esbuild-windows-32/0.13.15: 1385 | resolution: {integrity: sha1-yW0Lm7tS8zAzIlgu+OSEfFrTdac=} 1386 | cpu: [ia32] 1387 | os: [win32] 1388 | requiresBuild: true 1389 | dev: true 1390 | optional: true 1391 | 1392 | /esbuild-windows-64/0.13.15: 1393 | resolution: {integrity: sha1-H3nLmx4bsC+yXNQUy5DU6iiSwpQ=} 1394 | cpu: [x64] 1395 | os: [win32] 1396 | requiresBuild: true 1397 | dev: true 1398 | optional: true 1399 | 1400 | /esbuild-windows-arm64/0.13.15: 1401 | resolution: {integrity: sha1-SCFzBwgQ3yKnUsaGUJw3DDvjs8M=} 1402 | cpu: [arm64] 1403 | os: [win32] 1404 | requiresBuild: true 1405 | dev: true 1406 | optional: true 1407 | 1408 | /esbuild/0.11.3: 1409 | resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} 1410 | hasBin: true 1411 | requiresBuild: true 1412 | dev: true 1413 | 1414 | /esbuild/0.13.15: 1415 | resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} 1416 | hasBin: true 1417 | requiresBuild: true 1418 | optionalDependencies: 1419 | esbuild-android-arm64: 0.13.15 1420 | esbuild-darwin-64: 0.13.15 1421 | esbuild-darwin-arm64: 0.13.15 1422 | esbuild-freebsd-64: 0.13.15 1423 | esbuild-freebsd-arm64: 0.13.15 1424 | esbuild-linux-32: 0.13.15 1425 | esbuild-linux-64: 0.13.15 1426 | esbuild-linux-arm: 0.13.15 1427 | esbuild-linux-arm64: 0.13.15 1428 | esbuild-linux-mips64le: 0.13.15 1429 | esbuild-linux-ppc64le: 0.13.15 1430 | esbuild-netbsd-64: 0.13.15 1431 | esbuild-openbsd-64: 0.13.15 1432 | esbuild-sunos-64: 0.13.15 1433 | esbuild-windows-32: 0.13.15 1434 | esbuild-windows-64: 0.13.15 1435 | esbuild-windows-arm64: 0.13.15 1436 | dev: true 1437 | 1438 | /escalade/3.1.1: 1439 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1440 | engines: {node: '>=6'} 1441 | dev: true 1442 | 1443 | /escape-html/1.0.3: 1444 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 1445 | dev: true 1446 | 1447 | /escape-string-regexp/1.0.5: 1448 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1449 | engines: {node: '>=0.8.0'} 1450 | dev: true 1451 | 1452 | /escape-string-regexp/4.0.0: 1453 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1454 | engines: {node: '>=10'} 1455 | dev: true 1456 | 1457 | /eslint-config-prettier/8.3.0_eslint@8.6.0: 1458 | resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} 1459 | hasBin: true 1460 | peerDependencies: 1461 | eslint: '>=7.0.0' 1462 | dependencies: 1463 | eslint: 8.6.0 1464 | dev: true 1465 | 1466 | /eslint-plugin-prettier/4.0.0_1c588f61426b1faf18812943f1678311: 1467 | resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} 1468 | engines: {node: '>=6.0.0'} 1469 | peerDependencies: 1470 | eslint: '>=7.28.0' 1471 | eslint-config-prettier: '*' 1472 | prettier: '>=2.0.0' 1473 | peerDependenciesMeta: 1474 | eslint-config-prettier: 1475 | optional: true 1476 | dependencies: 1477 | eslint: 8.6.0 1478 | eslint-config-prettier: 8.3.0_eslint@8.6.0 1479 | prettier: 2.5.1 1480 | prettier-linter-helpers: 1.0.0 1481 | dev: true 1482 | 1483 | /eslint-plugin-vue/8.2.0_eslint@8.6.0: 1484 | resolution: {integrity: sha512-cLIdTuOAMXyHeQ4drYKcZfoyzdwdBpH279X8/N0DgmotEI9yFKb5O/cAgoie/CkQZCH/MOmh0xw/KEfS90zY2A==} 1485 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1486 | peerDependencies: 1487 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 1488 | dependencies: 1489 | eslint: 8.6.0 1490 | eslint-utils: 3.0.0_eslint@8.6.0 1491 | natural-compare: 1.4.0 1492 | semver: 7.3.5 1493 | vue-eslint-parser: 8.0.1_eslint@8.6.0 1494 | transitivePeerDependencies: 1495 | - supports-color 1496 | dev: true 1497 | 1498 | /eslint-scope/5.1.1: 1499 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1500 | engines: {node: '>=8.0.0'} 1501 | dependencies: 1502 | esrecurse: 4.3.0 1503 | estraverse: 4.3.0 1504 | dev: true 1505 | 1506 | /eslint-scope/6.0.0: 1507 | resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} 1508 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1509 | dependencies: 1510 | esrecurse: 4.3.0 1511 | estraverse: 5.3.0 1512 | dev: true 1513 | 1514 | /eslint-scope/7.1.0: 1515 | resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} 1516 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1517 | dependencies: 1518 | esrecurse: 4.3.0 1519 | estraverse: 5.3.0 1520 | dev: true 1521 | 1522 | /eslint-utils/3.0.0_eslint@8.6.0: 1523 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1524 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1525 | peerDependencies: 1526 | eslint: '>=5' 1527 | dependencies: 1528 | eslint: 8.6.0 1529 | eslint-visitor-keys: 2.1.0 1530 | dev: true 1531 | 1532 | /eslint-visitor-keys/2.1.0: 1533 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1534 | engines: {node: '>=10'} 1535 | dev: true 1536 | 1537 | /eslint-visitor-keys/3.1.0: 1538 | resolution: {integrity: sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==} 1539 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1540 | dev: true 1541 | 1542 | /eslint/8.6.0: 1543 | resolution: {integrity: sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==} 1544 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1545 | hasBin: true 1546 | dependencies: 1547 | '@eslint/eslintrc': 1.0.5 1548 | '@humanwhocodes/config-array': 0.9.2 1549 | ajv: 6.12.6 1550 | chalk: 4.1.2 1551 | cross-spawn: 7.0.3 1552 | debug: 4.3.3 1553 | doctrine: 3.0.0 1554 | enquirer: 2.3.6 1555 | escape-string-regexp: 4.0.0 1556 | eslint-scope: 7.1.0 1557 | eslint-utils: 3.0.0_eslint@8.6.0 1558 | eslint-visitor-keys: 3.1.0 1559 | espree: 9.3.0 1560 | esquery: 1.4.0 1561 | esutils: 2.0.3 1562 | fast-deep-equal: 3.1.3 1563 | file-entry-cache: 6.0.1 1564 | functional-red-black-tree: 1.0.1 1565 | glob-parent: 6.0.2 1566 | globals: 13.12.0 1567 | ignore: 4.0.6 1568 | import-fresh: 3.3.0 1569 | imurmurhash: 0.1.4 1570 | is-glob: 4.0.3 1571 | js-yaml: 4.1.0 1572 | json-stable-stringify-without-jsonify: 1.0.1 1573 | levn: 0.4.1 1574 | lodash.merge: 4.6.2 1575 | minimatch: 3.0.4 1576 | natural-compare: 1.4.0 1577 | optionator: 0.9.1 1578 | progress: 2.0.3 1579 | regexpp: 3.2.0 1580 | semver: 7.3.5 1581 | strip-ansi: 6.0.1 1582 | strip-json-comments: 3.1.1 1583 | text-table: 0.2.0 1584 | v8-compile-cache: 2.3.0 1585 | transitivePeerDependencies: 1586 | - supports-color 1587 | dev: true 1588 | 1589 | /espree/9.3.0: 1590 | resolution: {integrity: sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==} 1591 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1592 | dependencies: 1593 | acorn: 8.7.0 1594 | acorn-jsx: 5.3.2_acorn@8.7.0 1595 | eslint-visitor-keys: 3.1.0 1596 | dev: true 1597 | 1598 | /esquery/1.4.0: 1599 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1600 | engines: {node: '>=0.10'} 1601 | dependencies: 1602 | estraverse: 5.3.0 1603 | dev: true 1604 | 1605 | /esrecurse/4.3.0: 1606 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1607 | engines: {node: '>=4.0'} 1608 | dependencies: 1609 | estraverse: 5.3.0 1610 | dev: true 1611 | 1612 | /estraverse/4.3.0: 1613 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1614 | engines: {node: '>=4.0'} 1615 | dev: true 1616 | 1617 | /estraverse/5.3.0: 1618 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1619 | engines: {node: '>=4.0'} 1620 | dev: true 1621 | 1622 | /estree-walker/1.0.1: 1623 | resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} 1624 | dev: true 1625 | 1626 | /estree-walker/2.0.2: 1627 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1628 | 1629 | /esutils/2.0.3: 1630 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1631 | engines: {node: '>=0.10.0'} 1632 | dev: true 1633 | 1634 | /execa/5.1.1: 1635 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1636 | engines: {node: '>=10'} 1637 | dependencies: 1638 | cross-spawn: 7.0.3 1639 | get-stream: 6.0.1 1640 | human-signals: 2.1.0 1641 | is-stream: 2.0.1 1642 | merge-stream: 2.0.0 1643 | npm-run-path: 4.0.1 1644 | onetime: 5.1.2 1645 | signal-exit: 3.0.6 1646 | strip-final-newline: 2.0.0 1647 | dev: true 1648 | 1649 | /fast-deep-equal/3.1.3: 1650 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1651 | dev: true 1652 | 1653 | /fast-diff/1.2.0: 1654 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1655 | dev: true 1656 | 1657 | /fast-glob/3.2.7: 1658 | resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} 1659 | engines: {node: '>=8'} 1660 | dependencies: 1661 | '@nodelib/fs.stat': 2.0.5 1662 | '@nodelib/fs.walk': 1.2.8 1663 | glob-parent: 5.1.2 1664 | merge2: 1.4.1 1665 | micromatch: 4.0.4 1666 | dev: true 1667 | 1668 | /fast-json-stable-stringify/2.1.0: 1669 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1670 | dev: true 1671 | 1672 | /fast-levenshtein/2.0.6: 1673 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1674 | dev: true 1675 | 1676 | /fastq/1.13.0: 1677 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1678 | dependencies: 1679 | reusify: 1.0.4 1680 | dev: true 1681 | 1682 | /file-entry-cache/6.0.1: 1683 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1684 | engines: {node: ^10.12.0 || >=12.0.0} 1685 | dependencies: 1686 | flat-cache: 3.0.4 1687 | dev: true 1688 | 1689 | /fill-range/7.0.1: 1690 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1691 | engines: {node: '>=8'} 1692 | dependencies: 1693 | to-regex-range: 5.0.1 1694 | dev: true 1695 | 1696 | /finalhandler/1.1.2: 1697 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} 1698 | engines: {node: '>= 0.8'} 1699 | dependencies: 1700 | debug: 2.6.9 1701 | encodeurl: 1.0.2 1702 | escape-html: 1.0.3 1703 | on-finished: 2.3.0 1704 | parseurl: 1.3.3 1705 | statuses: 1.5.0 1706 | unpipe: 1.0.0 1707 | dev: true 1708 | 1709 | /flat-cache/3.0.4: 1710 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1711 | engines: {node: ^10.12.0 || >=12.0.0} 1712 | dependencies: 1713 | flatted: 3.2.4 1714 | rimraf: 3.0.2 1715 | dev: true 1716 | 1717 | /flatted/3.2.4: 1718 | resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} 1719 | dev: true 1720 | 1721 | /follow-redirects/1.14.6: 1722 | resolution: {integrity: sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==} 1723 | engines: {node: '>=4.0'} 1724 | peerDependencies: 1725 | debug: '*' 1726 | peerDependenciesMeta: 1727 | debug: 1728 | optional: true 1729 | dev: false 1730 | 1731 | /fs.realpath/1.0.0: 1732 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1733 | dev: true 1734 | 1735 | /fsevents/2.3.2: 1736 | resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=} 1737 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1738 | os: [darwin] 1739 | requiresBuild: true 1740 | dev: true 1741 | optional: true 1742 | 1743 | /function-bind/1.1.1: 1744 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1745 | dev: true 1746 | 1747 | /functional-red-black-tree/1.0.1: 1748 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1749 | dev: true 1750 | 1751 | /gensync/1.0.0-beta.2: 1752 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1753 | engines: {node: '>=6.9.0'} 1754 | dev: true 1755 | 1756 | /get-intrinsic/1.1.1: 1757 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1758 | dependencies: 1759 | function-bind: 1.1.1 1760 | has: 1.0.3 1761 | has-symbols: 1.0.2 1762 | dev: true 1763 | 1764 | /get-stream/6.0.1: 1765 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1766 | engines: {node: '>=10'} 1767 | dev: true 1768 | 1769 | /glob-parent/5.1.2: 1770 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1771 | engines: {node: '>= 6'} 1772 | dependencies: 1773 | is-glob: 4.0.3 1774 | dev: true 1775 | 1776 | /glob-parent/6.0.2: 1777 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1778 | engines: {node: '>=10.13.0'} 1779 | dependencies: 1780 | is-glob: 4.0.3 1781 | dev: true 1782 | 1783 | /glob/7.2.0: 1784 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1785 | dependencies: 1786 | fs.realpath: 1.0.0 1787 | inflight: 1.0.6 1788 | inherits: 2.0.4 1789 | minimatch: 3.0.4 1790 | once: 1.4.0 1791 | path-is-absolute: 1.0.1 1792 | dev: true 1793 | 1794 | /globals/11.12.0: 1795 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1796 | engines: {node: '>=4'} 1797 | dev: true 1798 | 1799 | /globals/13.12.0: 1800 | resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} 1801 | engines: {node: '>=8'} 1802 | dependencies: 1803 | type-fest: 0.20.2 1804 | dev: true 1805 | 1806 | /globby/11.0.4: 1807 | resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} 1808 | engines: {node: '>=10'} 1809 | dependencies: 1810 | array-union: 2.1.0 1811 | dir-glob: 3.0.1 1812 | fast-glob: 3.2.7 1813 | ignore: 5.2.0 1814 | merge2: 1.4.1 1815 | slash: 3.0.0 1816 | dev: true 1817 | 1818 | /has-flag/3.0.0: 1819 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1820 | engines: {node: '>=4'} 1821 | dev: true 1822 | 1823 | /has-flag/4.0.0: 1824 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1825 | engines: {node: '>=8'} 1826 | dev: true 1827 | 1828 | /has-symbols/1.0.2: 1829 | resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} 1830 | engines: {node: '>= 0.4'} 1831 | dev: true 1832 | 1833 | /has-tostringtag/1.0.0: 1834 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1835 | engines: {node: '>= 0.4'} 1836 | dependencies: 1837 | has-symbols: 1.0.2 1838 | dev: true 1839 | 1840 | /has/1.0.3: 1841 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1842 | engines: {node: '>= 0.4.0'} 1843 | dependencies: 1844 | function-bind: 1.1.1 1845 | dev: true 1846 | 1847 | /hash-sum/2.0.0: 1848 | resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} 1849 | dev: true 1850 | 1851 | /html-tags/3.1.0: 1852 | resolution: {integrity: sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==} 1853 | engines: {node: '>=8'} 1854 | dev: true 1855 | 1856 | /htmlparser2/7.2.0: 1857 | resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} 1858 | dependencies: 1859 | domelementtype: 2.2.0 1860 | domhandler: 4.3.0 1861 | domutils: 2.8.0 1862 | entities: 3.0.1 1863 | dev: true 1864 | 1865 | /human-signals/2.1.0: 1866 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1867 | engines: {node: '>=10.17.0'} 1868 | dev: true 1869 | 1870 | /husky/7.0.4: 1871 | resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} 1872 | engines: {node: '>=12'} 1873 | hasBin: true 1874 | dev: true 1875 | 1876 | /ignore/4.0.6: 1877 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 1878 | engines: {node: '>= 4'} 1879 | dev: true 1880 | 1881 | /ignore/5.2.0: 1882 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1883 | engines: {node: '>= 4'} 1884 | dev: true 1885 | 1886 | /immutable/4.0.0: 1887 | resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} 1888 | dev: true 1889 | 1890 | /import-fresh/3.3.0: 1891 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1892 | engines: {node: '>=6'} 1893 | dependencies: 1894 | parent-module: 1.0.1 1895 | resolve-from: 4.0.0 1896 | dev: true 1897 | 1898 | /imurmurhash/0.1.4: 1899 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1900 | engines: {node: '>=0.8.19'} 1901 | dev: true 1902 | 1903 | /indent-string/4.0.0: 1904 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1905 | engines: {node: '>=8'} 1906 | dev: true 1907 | 1908 | /inflight/1.0.6: 1909 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1910 | dependencies: 1911 | once: 1.4.0 1912 | wrappy: 1.0.2 1913 | dev: true 1914 | 1915 | /inherits/2.0.4: 1916 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1917 | dev: true 1918 | 1919 | /is-binary-path/2.1.0: 1920 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1921 | engines: {node: '>=8'} 1922 | dependencies: 1923 | binary-extensions: 2.2.0 1924 | dev: true 1925 | 1926 | /is-core-module/2.8.0: 1927 | resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} 1928 | dependencies: 1929 | has: 1.0.3 1930 | dev: true 1931 | 1932 | /is-expression/4.0.0: 1933 | resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} 1934 | dependencies: 1935 | acorn: 7.4.1 1936 | object-assign: 4.1.1 1937 | dev: true 1938 | 1939 | /is-extglob/2.1.1: 1940 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1941 | engines: {node: '>=0.10.0'} 1942 | dev: true 1943 | 1944 | /is-fullwidth-code-point/3.0.0: 1945 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1946 | engines: {node: '>=8'} 1947 | dev: true 1948 | 1949 | /is-fullwidth-code-point/4.0.0: 1950 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1951 | engines: {node: '>=12'} 1952 | dev: true 1953 | 1954 | /is-glob/4.0.3: 1955 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1956 | engines: {node: '>=0.10.0'} 1957 | dependencies: 1958 | is-extglob: 2.1.1 1959 | dev: true 1960 | 1961 | /is-module/1.0.0: 1962 | resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} 1963 | dev: true 1964 | 1965 | /is-number/7.0.0: 1966 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1967 | engines: {node: '>=0.12.0'} 1968 | dev: true 1969 | 1970 | /is-promise/2.2.2: 1971 | resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} 1972 | dev: true 1973 | 1974 | /is-regex/1.1.4: 1975 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1976 | engines: {node: '>= 0.4'} 1977 | dependencies: 1978 | call-bind: 1.0.2 1979 | has-tostringtag: 1.0.0 1980 | dev: true 1981 | 1982 | /is-stream/2.0.1: 1983 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1984 | engines: {node: '>=8'} 1985 | dev: true 1986 | 1987 | /isexe/2.0.0: 1988 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1989 | dev: true 1990 | 1991 | /js-stringify/1.0.2: 1992 | resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=} 1993 | dev: true 1994 | 1995 | /js-tokens/4.0.0: 1996 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1997 | dev: true 1998 | 1999 | /js-yaml/4.1.0: 2000 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2001 | hasBin: true 2002 | dependencies: 2003 | argparse: 2.0.1 2004 | dev: true 2005 | 2006 | /jsesc/2.5.2: 2007 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2008 | engines: {node: '>=4'} 2009 | hasBin: true 2010 | dev: true 2011 | 2012 | /json-schema-traverse/0.4.1: 2013 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2014 | dev: true 2015 | 2016 | /json-stable-stringify-without-jsonify/1.0.1: 2017 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 2018 | dev: true 2019 | 2020 | /json5/2.2.0: 2021 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 2022 | engines: {node: '>=6'} 2023 | hasBin: true 2024 | dependencies: 2025 | minimist: 1.2.5 2026 | dev: true 2027 | 2028 | /jsonc-parser/2.3.1: 2029 | resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} 2030 | dev: true 2031 | 2032 | /jsonc-parser/3.0.0: 2033 | resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} 2034 | dev: true 2035 | 2036 | /jstransformer/1.0.0: 2037 | resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=} 2038 | dependencies: 2039 | is-promise: 2.2.2 2040 | promise: 7.3.1 2041 | dev: true 2042 | 2043 | /levn/0.4.1: 2044 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2045 | engines: {node: '>= 0.8.0'} 2046 | dependencies: 2047 | prelude-ls: 1.2.1 2048 | type-check: 0.4.0 2049 | dev: true 2050 | 2051 | /lilconfig/2.0.4: 2052 | resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} 2053 | engines: {node: '>=10'} 2054 | dev: true 2055 | 2056 | /lint-staged/12.1.5: 2057 | resolution: {integrity: sha512-WyKb+0sNKDTd1LwwAfTBPp0XmdaKkAOEbg4oHE4Kq2+oQVchg/VAcjVQtSqZih1izNsTURjc2EkhG/syRQUXdA==} 2058 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2059 | hasBin: true 2060 | dependencies: 2061 | cli-truncate: 3.1.0 2062 | colorette: 2.0.16 2063 | commander: 8.3.0 2064 | debug: 4.3.3_supports-color@9.2.1 2065 | execa: 5.1.1 2066 | lilconfig: 2.0.4 2067 | listr2: 3.14.0 2068 | micromatch: 4.0.4 2069 | normalize-path: 3.0.0 2070 | object-inspect: 1.12.0 2071 | string-argv: 0.3.1 2072 | supports-color: 9.2.1 2073 | yaml: 1.10.2 2074 | transitivePeerDependencies: 2075 | - enquirer 2076 | dev: true 2077 | 2078 | /listr2/3.14.0: 2079 | resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} 2080 | engines: {node: '>=10.0.0'} 2081 | peerDependencies: 2082 | enquirer: '>= 2.3.0 < 3' 2083 | peerDependenciesMeta: 2084 | enquirer: 2085 | optional: true 2086 | dependencies: 2087 | cli-truncate: 2.1.0 2088 | colorette: 2.0.16 2089 | log-update: 4.0.0 2090 | p-map: 4.0.0 2091 | rfdc: 1.3.0 2092 | rxjs: 7.5.1 2093 | through: 2.3.8 2094 | wrap-ansi: 7.0.0 2095 | dev: true 2096 | 2097 | /lodash.merge/4.6.2: 2098 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2099 | dev: true 2100 | 2101 | /lodash/4.17.21: 2102 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2103 | dev: true 2104 | 2105 | /log-update/4.0.0: 2106 | resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} 2107 | engines: {node: '>=10'} 2108 | dependencies: 2109 | ansi-escapes: 4.3.2 2110 | cli-cursor: 3.1.0 2111 | slice-ansi: 4.0.0 2112 | wrap-ansi: 6.2.0 2113 | dev: true 2114 | 2115 | /lru-cache/6.0.0: 2116 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2117 | engines: {node: '>=10'} 2118 | dependencies: 2119 | yallist: 4.0.0 2120 | dev: true 2121 | 2122 | /magic-string/0.25.7: 2123 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 2124 | dependencies: 2125 | sourcemap-codec: 1.4.8 2126 | dev: false 2127 | 2128 | /merge-stream/2.0.0: 2129 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2130 | dev: true 2131 | 2132 | /merge2/1.4.1: 2133 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2134 | engines: {node: '>= 8'} 2135 | dev: true 2136 | 2137 | /micromatch/4.0.4: 2138 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 2139 | engines: {node: '>=8.6'} 2140 | dependencies: 2141 | braces: 3.0.2 2142 | picomatch: 2.3.0 2143 | dev: true 2144 | 2145 | /mimic-fn/2.1.0: 2146 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2147 | engines: {node: '>=6'} 2148 | dev: true 2149 | 2150 | /minimatch/3.0.4: 2151 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 2152 | dependencies: 2153 | brace-expansion: 1.1.11 2154 | dev: true 2155 | 2156 | /minimist/1.2.5: 2157 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 2158 | dev: true 2159 | 2160 | /mockjs/1.1.0: 2161 | resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} 2162 | hasBin: true 2163 | dependencies: 2164 | commander: 8.3.0 2165 | dev: true 2166 | 2167 | /ms/2.0.0: 2168 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 2169 | dev: true 2170 | 2171 | /ms/2.1.2: 2172 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2173 | dev: true 2174 | 2175 | /nanoid/3.1.30: 2176 | resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} 2177 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2178 | hasBin: true 2179 | 2180 | /natural-compare/1.4.0: 2181 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2182 | dev: true 2183 | 2184 | /node-releases/2.0.1: 2185 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} 2186 | dev: true 2187 | 2188 | /normalize-path/3.0.0: 2189 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2190 | engines: {node: '>=0.10.0'} 2191 | dev: true 2192 | 2193 | /npm-run-path/4.0.1: 2194 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2195 | engines: {node: '>=8'} 2196 | dependencies: 2197 | path-key: 3.1.1 2198 | dev: true 2199 | 2200 | /object-assign/4.1.1: 2201 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 2202 | engines: {node: '>=0.10.0'} 2203 | dev: true 2204 | 2205 | /object-inspect/1.12.0: 2206 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} 2207 | dev: true 2208 | 2209 | /on-finished/2.3.0: 2210 | resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} 2211 | engines: {node: '>= 0.8'} 2212 | dependencies: 2213 | ee-first: 1.1.1 2214 | dev: true 2215 | 2216 | /once/1.4.0: 2217 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2218 | dependencies: 2219 | wrappy: 1.0.2 2220 | dev: true 2221 | 2222 | /onetime/5.1.2: 2223 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2224 | engines: {node: '>=6'} 2225 | dependencies: 2226 | mimic-fn: 2.1.0 2227 | dev: true 2228 | 2229 | /optionator/0.9.1: 2230 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2231 | engines: {node: '>= 0.8.0'} 2232 | dependencies: 2233 | deep-is: 0.1.4 2234 | fast-levenshtein: 2.0.6 2235 | levn: 0.4.1 2236 | prelude-ls: 1.2.1 2237 | type-check: 0.4.0 2238 | word-wrap: 1.2.3 2239 | dev: true 2240 | 2241 | /p-map/4.0.0: 2242 | resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 2243 | engines: {node: '>=10'} 2244 | dependencies: 2245 | aggregate-error: 3.1.0 2246 | dev: true 2247 | 2248 | /parent-module/1.0.1: 2249 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2250 | engines: {node: '>=6'} 2251 | dependencies: 2252 | callsites: 3.1.0 2253 | dev: true 2254 | 2255 | /parseurl/1.3.3: 2256 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2257 | engines: {node: '>= 0.8'} 2258 | dev: true 2259 | 2260 | /path-is-absolute/1.0.1: 2261 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2262 | engines: {node: '>=0.10.0'} 2263 | dev: true 2264 | 2265 | /path-key/3.1.1: 2266 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2267 | engines: {node: '>=8'} 2268 | dev: true 2269 | 2270 | /path-parse/1.0.7: 2271 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2272 | dev: true 2273 | 2274 | /path-to-regexp/6.2.0: 2275 | resolution: {integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==} 2276 | dev: true 2277 | 2278 | /path-type/4.0.0: 2279 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2280 | engines: {node: '>=8'} 2281 | dev: true 2282 | 2283 | /picocolors/1.0.0: 2284 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2285 | 2286 | /picomatch/2.3.0: 2287 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 2288 | engines: {node: '>=8.6'} 2289 | dev: true 2290 | 2291 | /pinia-plugin-persistedstate/1.0.3_pinia@2.0.9: 2292 | resolution: {integrity: sha512-f+mE3VpnrKcYUZ6zNTpICsZ+tPo/wxXS6i6ECJKV9fx2Ei5hEMrC6dxUrAWK9hKR4Y/MTt3XAWAHiM3lJtP3Jw==} 2293 | peerDependencies: 2294 | pinia: ^2.0.0 2295 | dependencies: 2296 | pinia: 2.0.9_typescript@4.5.4+vue@3.2.26 2297 | shvl: 2.0.3 2298 | dev: false 2299 | 2300 | /pinia/2.0.9_typescript@4.5.4+vue@3.2.26: 2301 | resolution: {integrity: sha512-iuYdxLJKQ07YPyOHYH05wNG9eKWqkP/4y4GE8+RqEYtz5fwHgPA5kr6zQbg/DoEJGnR2XCm1w1vdt6ppzL9ATg==} 2302 | peerDependencies: 2303 | '@vue/composition-api': ^1.4.0 2304 | typescript: '>=4.4.4' 2305 | vue: ^2.6.14 || ^3.2.0 2306 | peerDependenciesMeta: 2307 | '@vue/composition-api': 2308 | optional: true 2309 | typescript: 2310 | optional: true 2311 | dependencies: 2312 | '@vue/devtools-api': 6.0.0-beta.21.1 2313 | typescript: 4.5.4 2314 | vue: 3.2.26 2315 | vue-demi: 0.12.1_vue@3.2.26 2316 | dev: false 2317 | 2318 | /postcss/8.4.5: 2319 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} 2320 | engines: {node: ^10 || ^12 || >=14} 2321 | dependencies: 2322 | nanoid: 3.1.30 2323 | picocolors: 1.0.0 2324 | source-map-js: 1.0.1 2325 | 2326 | /prelude-ls/1.2.1: 2327 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2328 | engines: {node: '>= 0.8.0'} 2329 | dev: true 2330 | 2331 | /prettier-linter-helpers/1.0.0: 2332 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2333 | engines: {node: '>=6.0.0'} 2334 | dependencies: 2335 | fast-diff: 1.2.0 2336 | dev: true 2337 | 2338 | /prettier/2.5.1: 2339 | resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} 2340 | engines: {node: '>=10.13.0'} 2341 | hasBin: true 2342 | dev: true 2343 | 2344 | /progress/2.0.3: 2345 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 2346 | engines: {node: '>=0.4.0'} 2347 | dev: true 2348 | 2349 | /promise/7.3.1: 2350 | resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} 2351 | dependencies: 2352 | asap: 2.0.6 2353 | dev: true 2354 | 2355 | /pug-attrs/3.0.0: 2356 | resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} 2357 | dependencies: 2358 | constantinople: 4.0.1 2359 | js-stringify: 1.0.2 2360 | pug-runtime: 3.0.1 2361 | dev: true 2362 | 2363 | /pug-code-gen/3.0.2: 2364 | resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} 2365 | dependencies: 2366 | constantinople: 4.0.1 2367 | doctypes: 1.1.0 2368 | js-stringify: 1.0.2 2369 | pug-attrs: 3.0.0 2370 | pug-error: 2.0.0 2371 | pug-runtime: 3.0.1 2372 | void-elements: 3.1.0 2373 | with: 7.0.2 2374 | dev: true 2375 | 2376 | /pug-error/2.0.0: 2377 | resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} 2378 | dev: true 2379 | 2380 | /pug-filters/4.0.0: 2381 | resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} 2382 | dependencies: 2383 | constantinople: 4.0.1 2384 | jstransformer: 1.0.0 2385 | pug-error: 2.0.0 2386 | pug-walk: 2.0.0 2387 | resolve: 1.20.0 2388 | dev: true 2389 | 2390 | /pug-lexer/5.0.1: 2391 | resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} 2392 | dependencies: 2393 | character-parser: 2.2.0 2394 | is-expression: 4.0.0 2395 | pug-error: 2.0.0 2396 | dev: true 2397 | 2398 | /pug-linker/4.0.0: 2399 | resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} 2400 | dependencies: 2401 | pug-error: 2.0.0 2402 | pug-walk: 2.0.0 2403 | dev: true 2404 | 2405 | /pug-load/3.0.0: 2406 | resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} 2407 | dependencies: 2408 | object-assign: 4.1.1 2409 | pug-walk: 2.0.0 2410 | dev: true 2411 | 2412 | /pug-parser/6.0.0: 2413 | resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} 2414 | dependencies: 2415 | pug-error: 2.0.0 2416 | token-stream: 1.0.0 2417 | dev: true 2418 | 2419 | /pug-runtime/3.0.1: 2420 | resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} 2421 | dev: true 2422 | 2423 | /pug-strip-comments/2.0.0: 2424 | resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} 2425 | dependencies: 2426 | pug-error: 2.0.0 2427 | dev: true 2428 | 2429 | /pug-walk/2.0.0: 2430 | resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} 2431 | dev: true 2432 | 2433 | /pug/3.0.2: 2434 | resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} 2435 | dependencies: 2436 | pug-code-gen: 3.0.2 2437 | pug-filters: 4.0.0 2438 | pug-lexer: 5.0.1 2439 | pug-linker: 4.0.0 2440 | pug-load: 3.0.0 2441 | pug-parser: 6.0.0 2442 | pug-runtime: 3.0.1 2443 | pug-strip-comments: 2.0.0 2444 | dev: true 2445 | 2446 | /punycode/2.1.1: 2447 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2448 | engines: {node: '>=6'} 2449 | dev: true 2450 | 2451 | /queue-microtask/1.2.3: 2452 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2453 | dev: true 2454 | 2455 | /readdirp/3.6.0: 2456 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2457 | engines: {node: '>=8.10.0'} 2458 | dependencies: 2459 | picomatch: 2.3.0 2460 | dev: true 2461 | 2462 | /regexpp/3.2.0: 2463 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2464 | engines: {node: '>=8'} 2465 | dev: true 2466 | 2467 | /request-light/0.5.5: 2468 | resolution: {integrity: sha512-AvjfJuhyT6dYfhtIBF+IpTPQco+Td1QJ6PsIJ5xui110vQ5p9HxHk+m1XJqXazLQT6CxxSx9eNv6R/+fu4bZig==} 2469 | dev: true 2470 | 2471 | /resolve-from/4.0.0: 2472 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2473 | engines: {node: '>=4'} 2474 | dev: true 2475 | 2476 | /resolve/1.20.0: 2477 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 2478 | dependencies: 2479 | is-core-module: 2.8.0 2480 | path-parse: 1.0.7 2481 | dev: true 2482 | 2483 | /restore-cursor/3.1.0: 2484 | resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} 2485 | engines: {node: '>=8'} 2486 | dependencies: 2487 | onetime: 5.1.2 2488 | signal-exit: 3.0.6 2489 | dev: true 2490 | 2491 | /reusify/1.0.4: 2492 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2493 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2494 | dev: true 2495 | 2496 | /rfdc/1.3.0: 2497 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 2498 | dev: true 2499 | 2500 | /rimraf/3.0.2: 2501 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2502 | hasBin: true 2503 | dependencies: 2504 | glob: 7.2.0 2505 | dev: true 2506 | 2507 | /rollup/2.61.1: 2508 | resolution: {integrity: sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==} 2509 | engines: {node: '>=10.0.0'} 2510 | hasBin: true 2511 | optionalDependencies: 2512 | fsevents: 2.3.2 2513 | dev: true 2514 | 2515 | /run-parallel/1.2.0: 2516 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2517 | dependencies: 2518 | queue-microtask: 1.2.3 2519 | dev: true 2520 | 2521 | /rxjs/7.5.1: 2522 | resolution: {integrity: sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==} 2523 | dependencies: 2524 | tslib: 2.3.1 2525 | dev: true 2526 | 2527 | /safe-buffer/5.1.2: 2528 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2529 | dev: true 2530 | 2531 | /sass/1.45.1: 2532 | resolution: {integrity: sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA==} 2533 | engines: {node: '>=8.9.0'} 2534 | hasBin: true 2535 | dependencies: 2536 | chokidar: 3.5.2 2537 | immutable: 4.0.0 2538 | source-map-js: 1.0.1 2539 | dev: true 2540 | 2541 | /semver/6.3.0: 2542 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2543 | hasBin: true 2544 | dev: true 2545 | 2546 | /semver/7.3.5: 2547 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 2548 | engines: {node: '>=10'} 2549 | hasBin: true 2550 | dependencies: 2551 | lru-cache: 6.0.0 2552 | dev: true 2553 | 2554 | /shebang-command/2.0.0: 2555 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2556 | engines: {node: '>=8'} 2557 | dependencies: 2558 | shebang-regex: 3.0.0 2559 | dev: true 2560 | 2561 | /shebang-regex/3.0.0: 2562 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2563 | engines: {node: '>=8'} 2564 | dev: true 2565 | 2566 | /shvl/2.0.3: 2567 | resolution: {integrity: sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==} 2568 | dev: false 2569 | 2570 | /signal-exit/3.0.6: 2571 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} 2572 | dev: true 2573 | 2574 | /slash/3.0.0: 2575 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2576 | engines: {node: '>=8'} 2577 | dev: true 2578 | 2579 | /slice-ansi/3.0.0: 2580 | resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} 2581 | engines: {node: '>=8'} 2582 | dependencies: 2583 | ansi-styles: 4.3.0 2584 | astral-regex: 2.0.0 2585 | is-fullwidth-code-point: 3.0.0 2586 | dev: true 2587 | 2588 | /slice-ansi/4.0.0: 2589 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 2590 | engines: {node: '>=10'} 2591 | dependencies: 2592 | ansi-styles: 4.3.0 2593 | astral-regex: 2.0.0 2594 | is-fullwidth-code-point: 3.0.0 2595 | dev: true 2596 | 2597 | /slice-ansi/5.0.0: 2598 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 2599 | engines: {node: '>=12'} 2600 | dependencies: 2601 | ansi-styles: 6.1.0 2602 | is-fullwidth-code-point: 4.0.0 2603 | dev: true 2604 | 2605 | /source-map-js/1.0.1: 2606 | resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==} 2607 | engines: {node: '>=0.10.0'} 2608 | 2609 | /source-map/0.5.7: 2610 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 2611 | engines: {node: '>=0.10.0'} 2612 | dev: true 2613 | 2614 | /source-map/0.6.1: 2615 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2616 | engines: {node: '>=0.10.0'} 2617 | 2618 | /sourcemap-codec/1.4.8: 2619 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2620 | dev: false 2621 | 2622 | /statuses/1.5.0: 2623 | resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} 2624 | engines: {node: '>= 0.6'} 2625 | dev: true 2626 | 2627 | /string-argv/0.3.1: 2628 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 2629 | engines: {node: '>=0.6.19'} 2630 | dev: true 2631 | 2632 | /string-width/4.2.3: 2633 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2634 | engines: {node: '>=8'} 2635 | dependencies: 2636 | emoji-regex: 8.0.0 2637 | is-fullwidth-code-point: 3.0.0 2638 | strip-ansi: 6.0.1 2639 | dev: true 2640 | 2641 | /string-width/5.0.1: 2642 | resolution: {integrity: sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==} 2643 | engines: {node: '>=12'} 2644 | dependencies: 2645 | emoji-regex: 9.2.2 2646 | is-fullwidth-code-point: 4.0.0 2647 | strip-ansi: 7.0.1 2648 | dev: true 2649 | 2650 | /strip-ansi/6.0.1: 2651 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2652 | engines: {node: '>=8'} 2653 | dependencies: 2654 | ansi-regex: 5.0.1 2655 | dev: true 2656 | 2657 | /strip-ansi/7.0.1: 2658 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 2659 | engines: {node: '>=12'} 2660 | dependencies: 2661 | ansi-regex: 6.0.1 2662 | dev: true 2663 | 2664 | /strip-final-newline/2.0.0: 2665 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2666 | engines: {node: '>=6'} 2667 | dev: true 2668 | 2669 | /strip-json-comments/3.1.1: 2670 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2671 | engines: {node: '>=8'} 2672 | dev: true 2673 | 2674 | /supports-color/5.5.0: 2675 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2676 | engines: {node: '>=4'} 2677 | dependencies: 2678 | has-flag: 3.0.0 2679 | dev: true 2680 | 2681 | /supports-color/7.2.0: 2682 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2683 | engines: {node: '>=8'} 2684 | dependencies: 2685 | has-flag: 4.0.0 2686 | dev: true 2687 | 2688 | /supports-color/9.2.1: 2689 | resolution: {integrity: sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==} 2690 | engines: {node: '>=12'} 2691 | dev: true 2692 | 2693 | /svg-tags/1.0.0: 2694 | resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=} 2695 | dev: true 2696 | 2697 | /text-table/0.2.0: 2698 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 2699 | dev: true 2700 | 2701 | /through/2.3.8: 2702 | resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} 2703 | dev: true 2704 | 2705 | /to-fast-properties/2.0.0: 2706 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 2707 | engines: {node: '>=4'} 2708 | dev: true 2709 | 2710 | /to-regex-range/5.0.1: 2711 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2712 | engines: {node: '>=8.0'} 2713 | dependencies: 2714 | is-number: 7.0.0 2715 | dev: true 2716 | 2717 | /token-stream/1.0.0: 2718 | resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} 2719 | dev: true 2720 | 2721 | /tslib/1.14.1: 2722 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2723 | dev: true 2724 | 2725 | /tslib/2.3.1: 2726 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 2727 | dev: true 2728 | 2729 | /tsutils/3.21.0_typescript@4.5.4: 2730 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2731 | engines: {node: '>= 6'} 2732 | peerDependencies: 2733 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2734 | dependencies: 2735 | tslib: 1.14.1 2736 | typescript: 4.5.4 2737 | dev: true 2738 | 2739 | /type-check/0.4.0: 2740 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2741 | engines: {node: '>= 0.8.0'} 2742 | dependencies: 2743 | prelude-ls: 1.2.1 2744 | dev: true 2745 | 2746 | /type-fest/0.20.2: 2747 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2748 | engines: {node: '>=10'} 2749 | dev: true 2750 | 2751 | /type-fest/0.21.3: 2752 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 2753 | engines: {node: '>=10'} 2754 | dev: true 2755 | 2756 | /typescript/4.5.4: 2757 | resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==} 2758 | engines: {node: '>=4.2.0'} 2759 | hasBin: true 2760 | dev: true 2761 | 2762 | /unpipe/1.0.0: 2763 | resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} 2764 | engines: {node: '>= 0.8'} 2765 | dev: true 2766 | 2767 | /upath/2.0.1: 2768 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} 2769 | engines: {node: '>=4'} 2770 | dev: true 2771 | 2772 | /uri-js/4.4.1: 2773 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2774 | dependencies: 2775 | punycode: 2.1.1 2776 | dev: true 2777 | 2778 | /utils-merge/1.0.1: 2779 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 2780 | engines: {node: '>= 0.4.0'} 2781 | dev: true 2782 | 2783 | /v8-compile-cache/2.3.0: 2784 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2785 | dev: true 2786 | 2787 | /vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.7.5: 2788 | resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} 2789 | engines: {node: '>=12.0.0'} 2790 | peerDependencies: 2791 | mockjs: '>=1.1.0' 2792 | vite: '>=2.0.0' 2793 | dependencies: 2794 | '@rollup/plugin-node-resolve': 13.1.2 2795 | '@types/mockjs': 1.0.4 2796 | chalk: 4.1.2 2797 | chokidar: 3.5.2 2798 | connect: 3.7.0 2799 | debug: 4.3.3 2800 | esbuild: 0.11.3 2801 | fast-glob: 3.2.7 2802 | mockjs: 1.1.0 2803 | path-to-regexp: 6.2.0 2804 | vite: 2.7.5_sass@1.45.1 2805 | transitivePeerDependencies: 2806 | - rollup 2807 | - supports-color 2808 | dev: true 2809 | 2810 | /vite/2.7.5_sass@1.45.1: 2811 | resolution: {integrity: sha512-Bx8Iph9IJn6pWcErPkHKnyPABGMwK/vcdA0+V4TRC8TJFA7Zf6Xd1lRoUzsHHWUM8J+iUKKEuuNqqQUoxY3XvQ==} 2812 | engines: {node: '>=12.2.0'} 2813 | hasBin: true 2814 | peerDependencies: 2815 | less: '*' 2816 | sass: '*' 2817 | stylus: '*' 2818 | peerDependenciesMeta: 2819 | less: 2820 | optional: true 2821 | sass: 2822 | optional: true 2823 | stylus: 2824 | optional: true 2825 | dependencies: 2826 | esbuild: 0.13.15 2827 | postcss: 8.4.5 2828 | resolve: 1.20.0 2829 | rollup: 2.61.1 2830 | sass: 1.45.1 2831 | optionalDependencies: 2832 | fsevents: 2.3.2 2833 | dev: true 2834 | 2835 | /void-elements/3.1.0: 2836 | resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} 2837 | engines: {node: '>=0.10.0'} 2838 | dev: true 2839 | 2840 | /vscode-css-languageservice/5.1.9: 2841 | resolution: {integrity: sha512-/tFOWeZBL3Oc9Zc+2MAi3rEwiXJTSZsvjB+M7nSjWLbGPUIjukUA7YzLgsBoUfR35sPJYnXWUkL56PdfIYM8GA==} 2842 | dependencies: 2843 | vscode-languageserver-textdocument: 1.0.3 2844 | vscode-languageserver-types: 3.16.0 2845 | vscode-nls: 5.0.0 2846 | vscode-uri: 3.0.3 2847 | dev: true 2848 | 2849 | /vscode-html-languageservice/4.2.1: 2850 | resolution: {integrity: sha512-PgaToZVXJ44nFWEBuSINdDgVV6EnpC3MnXBsysR3O5TKcAfywbYeRGRy+Y4dVR7YeUgDvtb+JkJoSkaYC0mxXQ==} 2851 | dependencies: 2852 | vscode-languageserver-textdocument: 1.0.3 2853 | vscode-languageserver-types: 3.16.0 2854 | vscode-nls: 5.0.0 2855 | vscode-uri: 3.0.3 2856 | dev: true 2857 | 2858 | /vscode-json-languageservice/4.1.10: 2859 | resolution: {integrity: sha512-IHliMEEYSY0tJjJt0ECb8ESx/nRXpoy9kN42WVQXgaqGyizFAf3jibSiezDQTrrY7f3kywXggCU+kkJEM+OLZQ==} 2860 | dependencies: 2861 | jsonc-parser: 3.0.0 2862 | vscode-languageserver-textdocument: 1.0.3 2863 | vscode-languageserver-types: 3.16.0 2864 | vscode-nls: 5.0.0 2865 | vscode-uri: 3.0.3 2866 | dev: true 2867 | 2868 | /vscode-jsonrpc/8.0.0-next.4: 2869 | resolution: {integrity: sha512-i+wvza5Wd0YV/t9qhnS8I+dJdhJ1fHIhRW4f262rXXM9Mgts5VZhYrRZufGcai4y99RlbZvwaZhplQ6diRXkaA==} 2870 | engines: {node: '>=8.0.0 || >=10.0.0'} 2871 | dev: true 2872 | 2873 | /vscode-languageserver-protocol/3.17.0-next.11: 2874 | resolution: {integrity: sha512-9FqHT7XvM6tWFsnLvRfuQA7Zh7wZZYAwA9dK85lYthA8M1aXpXEP9drXVvO/Fe03MUeJpKVf2e4/NvDaFUnttg==} 2875 | dependencies: 2876 | vscode-jsonrpc: 8.0.0-next.4 2877 | vscode-languageserver-types: 3.17.0-next.5 2878 | dev: true 2879 | 2880 | /vscode-languageserver-textdocument/1.0.3: 2881 | resolution: {integrity: sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A==} 2882 | dev: true 2883 | 2884 | /vscode-languageserver-types/3.16.0: 2885 | resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} 2886 | dev: true 2887 | 2888 | /vscode-languageserver-types/3.17.0-next.5: 2889 | resolution: {integrity: sha512-Zcfaw8BznhlJWB09LDR0dscXyxn9+liREqJnPF4pigeUCHwKxYapYqizwuCpMHQ/oLYiAvKwU+f28hPleYu7pA==} 2890 | dev: true 2891 | 2892 | /vscode-languageserver/8.0.0-next.5: 2893 | resolution: {integrity: sha512-3E2W0eWtGKb6QAJqspOnD0thrBRRo8IGUMV5jpDNMcMKvmtkcxMwsBh0VxdvuWaZ51PiNyR4L+B+GUvkYsyFEg==} 2894 | hasBin: true 2895 | dependencies: 2896 | vscode-languageserver-protocol: 3.17.0-next.11 2897 | dev: true 2898 | 2899 | /vscode-nls/5.0.0: 2900 | resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==} 2901 | dev: true 2902 | 2903 | /vscode-pug-languageservice/0.29.8: 2904 | resolution: {integrity: sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==} 2905 | dependencies: 2906 | '@volar/code-gen': 0.29.8 2907 | '@volar/shared': 0.29.8 2908 | '@volar/source-map': 0.29.8 2909 | '@volar/transforms': 0.29.8 2910 | pug-lexer: 5.0.1 2911 | pug-parser: 6.0.0 2912 | vscode-languageserver: 8.0.0-next.5 2913 | dev: true 2914 | 2915 | /vscode-typescript-languageservice/0.29.8: 2916 | resolution: {integrity: sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==} 2917 | dependencies: 2918 | '@volar/shared': 0.29.8 2919 | semver: 7.3.5 2920 | upath: 2.0.1 2921 | vscode-languageserver: 8.0.0-next.5 2922 | vscode-languageserver-textdocument: 1.0.3 2923 | dev: true 2924 | 2925 | /vscode-uri/2.1.2: 2926 | resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} 2927 | dev: true 2928 | 2929 | /vscode-uri/3.0.3: 2930 | resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==} 2931 | dev: true 2932 | 2933 | /vscode-vue-languageservice/0.29.8: 2934 | resolution: {integrity: sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==} 2935 | dependencies: 2936 | '@volar/code-gen': 0.29.8 2937 | '@volar/html2pug': 0.29.8 2938 | '@volar/shared': 0.29.8 2939 | '@volar/source-map': 0.29.8 2940 | '@volar/transforms': 0.29.8 2941 | '@volar/vue-code-gen': 0.29.8 2942 | '@vscode/emmet-helper': 2.8.3 2943 | '@vue/reactivity': 3.2.26 2944 | '@vue/shared': 3.2.26 2945 | request-light: 0.5.5 2946 | upath: 2.0.1 2947 | vscode-css-languageservice: 5.1.9 2948 | vscode-html-languageservice: 4.2.1 2949 | vscode-json-languageservice: 4.1.10 2950 | vscode-languageserver: 8.0.0-next.5 2951 | vscode-languageserver-textdocument: 1.0.3 2952 | vscode-pug-languageservice: 0.29.8 2953 | vscode-typescript-languageservice: 0.29.8 2954 | dev: true 2955 | 2956 | /vue-demi/0.12.1_vue@3.2.26: 2957 | resolution: {integrity: sha1-9+GO++z/0RqwadFHLXoG4xm0F0w=} 2958 | engines: {node: '>=12'} 2959 | hasBin: true 2960 | requiresBuild: true 2961 | peerDependencies: 2962 | '@vue/composition-api': ^1.0.0-rc.1 2963 | vue: ^3.0.0-0 || ^2.6.0 2964 | peerDependenciesMeta: 2965 | '@vue/composition-api': 2966 | optional: true 2967 | dependencies: 2968 | vue: 3.2.26 2969 | dev: false 2970 | 2971 | /vue-eslint-parser/8.0.1_eslint@8.6.0: 2972 | resolution: {integrity: sha512-lhWjDXJhe3UZw2uu3ztX51SJAPGPey1Tff2RK3TyZURwbuI4vximQLzz4nQfCv8CZq4xx7uIiogHMMoSJPr33A==} 2973 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2974 | peerDependencies: 2975 | eslint: '>=6.0.0' 2976 | dependencies: 2977 | debug: 4.3.3 2978 | eslint: 8.6.0 2979 | eslint-scope: 6.0.0 2980 | eslint-visitor-keys: 3.1.0 2981 | espree: 9.3.0 2982 | esquery: 1.4.0 2983 | lodash: 4.17.21 2984 | semver: 7.3.5 2985 | transitivePeerDependencies: 2986 | - supports-color 2987 | dev: true 2988 | 2989 | /vue-router/4.0.12_vue@3.2.26: 2990 | resolution: {integrity: sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==} 2991 | peerDependencies: 2992 | vue: ^3.0.0 2993 | dependencies: 2994 | '@vue/devtools-api': 6.0.0-beta.21.1 2995 | vue: 3.2.26 2996 | dev: false 2997 | 2998 | /vue-tsc/0.29.8_typescript@4.5.4: 2999 | resolution: {integrity: sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==} 3000 | hasBin: true 3001 | peerDependencies: 3002 | typescript: '*' 3003 | dependencies: 3004 | '@volar/shared': 0.29.8 3005 | typescript: 4.5.4 3006 | vscode-vue-languageservice: 0.29.8 3007 | dev: true 3008 | 3009 | /vue/3.2.26: 3010 | resolution: {integrity: sha512-KD4lULmskL5cCsEkfhERVRIOEDrfEL9CwAsLYpzptOGjaGFNWo3BQ9g8MAb7RaIO71rmVOziZ/uEN/rHwcUIhg==} 3011 | dependencies: 3012 | '@vue/compiler-dom': 3.2.26 3013 | '@vue/compiler-sfc': 3.2.26 3014 | '@vue/runtime-dom': 3.2.26 3015 | '@vue/server-renderer': 3.2.26_vue@3.2.26 3016 | '@vue/shared': 3.2.26 3017 | dev: false 3018 | 3019 | /which/2.0.2: 3020 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3021 | engines: {node: '>= 8'} 3022 | hasBin: true 3023 | dependencies: 3024 | isexe: 2.0.0 3025 | dev: true 3026 | 3027 | /with/7.0.2: 3028 | resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} 3029 | engines: {node: '>= 10.0.0'} 3030 | dependencies: 3031 | '@babel/parser': 7.16.6 3032 | '@babel/types': 7.16.0 3033 | assert-never: 1.2.1 3034 | babel-walk: 3.0.0-canary-5 3035 | dev: true 3036 | 3037 | /word-wrap/1.2.3: 3038 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3039 | engines: {node: '>=0.10.0'} 3040 | dev: true 3041 | 3042 | /wrap-ansi/6.2.0: 3043 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 3044 | engines: {node: '>=8'} 3045 | dependencies: 3046 | ansi-styles: 4.3.0 3047 | string-width: 4.2.3 3048 | strip-ansi: 6.0.1 3049 | dev: true 3050 | 3051 | /wrap-ansi/7.0.0: 3052 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3053 | engines: {node: '>=10'} 3054 | dependencies: 3055 | ansi-styles: 4.3.0 3056 | string-width: 4.2.3 3057 | strip-ansi: 6.0.1 3058 | dev: true 3059 | 3060 | /wrappy/1.0.2: 3061 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3062 | dev: true 3063 | 3064 | /yallist/4.0.0: 3065 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3066 | dev: true 3067 | 3068 | /yaml/1.10.2: 3069 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 3070 | engines: {node: '>= 6'} 3071 | dev: true 3072 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ynzy/vite-vue3-template/67821782dee936edc16b2b84e700e693e124c602/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 13 | 14 | 24 | -------------------------------------------------------------------------------- /src/assets/images/pic.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ynzy/vite-vue3-template/67821782dee936edc16b2b84e700e693e124c602/src/assets/images/pic.jpeg -------------------------------------------------------------------------------- /src/assets/images/png/year.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ynzy/vite-vue3-template/67821782dee936edc16b2b84e700e693e124c602/src/assets/images/png/year.png -------------------------------------------------------------------------------- /src/assets/images/图片.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ynzy/vite-vue3-template/67821782dee936edc16b2b84e700e693e124c602/src/assets/images/图片.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ynzy/vite-vue3-template/67821782dee936edc16b2b84e700e693e124c602/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | 13 | 33 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | 10 | interface ImportMetaEnv { 11 | /** 12 | * 环境 13 | */ 14 | readonly VITE_ENV: string 15 | /** 16 | * 打包目录 17 | */ 18 | readonly VITE_OUTPUT_DIR: string 19 | } 20 | interface ImportMeta { 21 | readonly env: ImportMetaEnv 22 | } 23 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import router from './router' 3 | import store from './store' 4 | import App from './App.vue' 5 | // 引入全局样式 6 | import '@/styles/index.scss' 7 | 8 | const app = createApp(App) 9 | app.use(router) 10 | app.use(store) 11 | app.mount('#app') 12 | -------------------------------------------------------------------------------- /src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router' 2 | import { routes } from './router.config' 3 | 4 | const router = createRouter({ 5 | history: createWebHistory(), 6 | routes 7 | }) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /src/router/router.config.ts: -------------------------------------------------------------------------------- 1 | import { RouteRecordRaw, createRouter, createWebHistory } from 'vue-router' 2 | import Layout from '@/views/layouts/index.vue' 3 | export const routes: Array = [ 4 | { 5 | path: '/', 6 | name: 'Home', 7 | redirect: '/home', 8 | meta: { 9 | title: '首页', 10 | keepAlive: false 11 | }, 12 | component: Layout, 13 | children: [ 14 | { 15 | path: '/home', 16 | name: 'Home', 17 | component: () => import('@/views/Home.vue'), 18 | meta: { title: '首页', keepAlive: false, showTab: true } 19 | }, 20 | { 21 | path: '/tsx', 22 | name: 'Tsx', 23 | component: () => import('@/test/demo'), 24 | meta: { title: '测试tsx', keepAlive: false, showTab: true } 25 | }, 26 | { 27 | path: '/static', 28 | name: 'Static', 29 | component: () => import('@/test/testStatic.vue'), 30 | meta: { title: '测试静态资源', keepAlive: false, showTab: true } 31 | }, 32 | { 33 | path: '/cssModel', 34 | name: 'CssModel', 35 | component: () => import('@/test/testCssModel'), 36 | meta: { title: '测试css-model', keepAlive: false, showTab: true } 37 | }, 38 | { 39 | path: '/mockAxios', 40 | name: 'MockAxios', 41 | component: () => import('@/test/testMockAxios'), 42 | meta: { title: '测试mock-axios', keepAlive: false, showTab: true } 43 | }, 44 | { 45 | path: '/pinia', 46 | name: 'Pinia', 47 | component: () => import('@/test/testPinia.vue'), 48 | meta: { title: '测试pinia', keepAlive: false, showTab: true } 49 | } 50 | ] 51 | } 52 | ] 53 | -------------------------------------------------------------------------------- /src/store/app.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | 3 | export const useAppStore = defineStore({ 4 | id: 'app', 5 | state: () => { 6 | return { 7 | config: 'app' 8 | } 9 | }, 10 | actions: { 11 | setData(data: any) { 12 | console.log(data) 13 | this.config = data 14 | } 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /src/store/index.ts: -------------------------------------------------------------------------------- 1 | // src/store/index.ts 2 | 3 | import { createPinia } from 'pinia' 4 | import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' 5 | const store = createPinia() 6 | store.use(piniaPluginPersistedstate) 7 | export default store 8 | -------------------------------------------------------------------------------- /src/store/user.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | import { useAppStore } from './app' 3 | 4 | export const useUserStore = defineStore({ 5 | id: 'user', 6 | state: () => ({ 7 | name: '张三', 8 | age: 18 9 | }), 10 | getters: { 11 | fullName: (state) => state.name + '丰' 12 | }, 13 | actions: { 14 | updateState(data: any) { 15 | this.$state = data 16 | this.updateAppConfig() 17 | }, 18 | updateAppConfig() { 19 | const appStore = useAppStore() 20 | appStore.setData('app-update') 21 | } 22 | }, 23 | // 开启数据缓存 24 | persist: { 25 | key: 'user', 26 | storage: window.localStorage, 27 | paths: ['name'], 28 | overwrite: true 29 | } 30 | }) 31 | -------------------------------------------------------------------------------- /src/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import "./reset.scss"; 2 | @import "./variables.scss"; 3 | @import "./mixin.scss"; 4 | 5 | html, 6 | body, 7 | #app { 8 | height: 100%; 9 | color: #333333; 10 | font-family: Arial, Helvetica, "STHeiti STXihei", "Microsoft YaHei", Tohoma, 11 | sans-serif; 12 | background-color: $background-color; 13 | } 14 | 15 | .app-container { 16 | padding-bottom: 50px; 17 | } 18 | 19 | #__vconsole { 20 | display: none; 21 | } 22 | 23 | .fixIphonex { 24 | padding-bottom: $safe-bottom !important; 25 | &::after { 26 | content: ""; 27 | position: fixed; 28 | bottom: 0 !important; 29 | left: 0; 30 | height: calc(#{$safe-bottom} + 1px); 31 | width: 100%; 32 | background: #ffffff; 33 | } 34 | } 35 | 36 | /* 适配iphonex */ 37 | 38 | @supports (bottom: env(safe-area-inset-bottom)) { 39 | .app-container { 40 | padding-bottom: calc(env(safe-area-inset-bottom) + 50px); // 这里是重点 41 | } 42 | .bottom-button-box { 43 | bottom: env(safe-area-inset-bottom); // 这里是重点 44 | &:after { 45 | content: ""; 46 | height: env(safe-area-inset-bottom); // 这里是重点 47 | position: absolute; 48 | top: 100%; 49 | left: 0; 50 | right: 0; 51 | background-color: #fff; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/styles/mixin.scss: -------------------------------------------------------------------------------- 1 | // mixin 2 | // 清除浮动 3 | @mixin clearfix { 4 | &:after { 5 | content: ""; 6 | display: table; 7 | clear: both; 8 | } 9 | } 10 | 11 | // 多行隐藏 12 | @mixin textoverflow($clamp:1) { 13 | display: block; 14 | overflow: hidden; 15 | text-overflow: ellipsis; 16 | -o-text-overflow: ellipsis; 17 | display: -webkit-box; 18 | -webkit-line-clamp: $clamp; 19 | /*! autoprefixer: ignore next */ 20 | -webkit-box-orient: vertical; 21 | } 22 | 23 | //flex box 24 | @mixin flexbox($jc:space-between, $ai:center, $fd:row, $fw:nowrap) { 25 | display: flex; 26 | display: -webkit-flex; 27 | flex: 1; 28 | justify-content: $jc; 29 | -webkit-justify-content: $jc; 30 | align-items: $ai; 31 | -webkit-align-items: $ai; 32 | flex-direction: $fd; 33 | -webkit-flex-direction: $fd; 34 | flex-wrap: $fw; 35 | -webkit-flex-wrap: $fw; 36 | } 37 | -------------------------------------------------------------------------------- /src/styles/reset.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 3 | * http://cssreset.com 4 | */ 5 | html, 6 | body, 7 | div, 8 | span, 9 | applet, 10 | object, 11 | iframe, 12 | h1, 13 | h2, 14 | h3, 15 | h4, 16 | h5, 17 | h6, 18 | p, 19 | blockquote, 20 | pre, 21 | a, 22 | abbr, 23 | acronym, 24 | address, 25 | big, 26 | cite, 27 | code, 28 | del, 29 | dfn, 30 | em, 31 | img, 32 | ins, 33 | kbd, 34 | q, 35 | s, 36 | samp, 37 | small, 38 | strike, 39 | strong, 40 | sub, 41 | sup, 42 | tt, 43 | var, 44 | b, 45 | u, 46 | i, 47 | center, 48 | dl, 49 | dt, 50 | dd, 51 | ol, 52 | ul, 53 | li, 54 | fieldset, 55 | form, 56 | label, 57 | legend, 58 | table, 59 | caption, 60 | tbody, 61 | tfoot, 62 | thead, 63 | tr, 64 | th, 65 | td, 66 | article, 67 | aside, 68 | canvas, 69 | details, 70 | embed, 71 | figure, 72 | figcaption, 73 | footer, 74 | header, 75 | menu, 76 | nav, 77 | output, 78 | ruby, 79 | section, 80 | summary, 81 | time, 82 | mark, 83 | audio, 84 | video, 85 | input { 86 | margin: 0; 87 | padding: 0; 88 | border: 0; 89 | font-size: 100%; 90 | font-weight: normal; 91 | vertical-align: baseline; 92 | } 93 | 94 | /* HTML5 display-role reset for older browsers */ 95 | article, 96 | aside, 97 | details, 98 | figcaption, 99 | figure, 100 | footer, 101 | header, 102 | menu, 103 | nav, 104 | section { 105 | display: block; 106 | } 107 | 108 | body { 109 | line-height: 1; 110 | } 111 | 112 | blockquote, 113 | q { 114 | quotes: none; 115 | } 116 | 117 | blockquote:before, 118 | blockquote:after, 119 | q:before, 120 | q:after { 121 | content: none; 122 | } 123 | 124 | table { 125 | border-collapse: collapse; 126 | border-spacing: 0; 127 | } 128 | 129 | /* custom */ 130 | a { 131 | text-decoration: none; 132 | -webkit-backface-visibility: hidden; 133 | } 134 | 135 | li { 136 | list-style: none; 137 | } 138 | 139 | ::-webkit-scrollbar { 140 | width: 5px; 141 | height: 5px; 142 | } 143 | 144 | ::-webkit-scrollbar-track-piece { 145 | background-color: rgba(0, 0, 0, 0.2); 146 | -webkit-border-radius: 6px; 147 | } 148 | 149 | ::-webkit-scrollbar-thumb:vertical { 150 | height: 5px; 151 | background-color: rgba(125, 125, 125, 0.7); 152 | -webkit-border-radius: 6px; 153 | } 154 | 155 | ::-webkit-scrollbar-thumb:horizontal { 156 | width: 5px; 157 | background-color: rgba(125, 125, 125, 0.7); 158 | -webkit-border-radius: 6px; 159 | } 160 | 161 | html, 162 | body { 163 | width: 100%; 164 | height: 100%; 165 | } 166 | 167 | body { 168 | -webkit-text-size-adjust: none; 169 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 170 | } 171 | -------------------------------------------------------------------------------- /src/styles/test.module.scss: -------------------------------------------------------------------------------- 1 | .moduleClass { 2 | color: red; 3 | font-size: 20px; 4 | } 5 | -------------------------------------------------------------------------------- /src/styles/variables.scss: -------------------------------------------------------------------------------- 1 | // variables 2 | $background-color: #f8f8f8; 3 | $theme-color: #07b0b8; 4 | $safe-bottom: constant(safe-area-inset-bottom); 5 | $safe-bottom: env(safe-area-inset-bottom); 6 | -------------------------------------------------------------------------------- /src/test/demo.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | 3 | export default defineComponent({ 4 | setup() { 5 | return () => { 6 | return
hello tsx
7 | } 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /src/test/jsonText.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-vue3-h5-template", 3 | "version": "1.0.0", 4 | "scripts": { 5 | "dev": "vite --mode development", 6 | "test": "vite --mode test", 7 | "prod": "vite --mode production", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "vue": "^3.2.25" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^12.20.39", 16 | "@vitejs/plugin-vue": "^2.0.0", 17 | "@vitejs/plugin-vue-jsx": "^1.3.3", 18 | "sass": "^1.45.1", 19 | "typescript": "^4.4.4", 20 | "vite": "^2.7.2", 21 | "vue-tsc": "^0.29.8" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/test.ts: -------------------------------------------------------------------------------- 1 | console.log('测试文件') 2 | export const a = 1 3 | -------------------------------------------------------------------------------- /src/test/testCssModel.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | import classes from '@/styles/test.module.scss' 3 | export default defineComponent({ 4 | setup() { 5 | console.log('css--model', classes) 6 | 7 | return () => { 8 | return
测试css-modules
9 | } 10 | } 11 | }) 12 | -------------------------------------------------------------------------------- /src/test/testMockAxios.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, reactive, ref } from 'vue' 2 | import axios from 'axios' 3 | export default defineComponent({ 4 | setup() { 5 | const data = ref({}) 6 | console.log(data) 7 | const a = 1 8 | axios 9 | .get('/basic-api/getUserInfo') 10 | .then((res) => { 11 | console.log('测试mock数据', res) 12 | data.value = res.data 13 | }) 14 | .catch((err) => { 15 | console.log('请求失败数据', err) 16 | }) 17 | return () => { 18 | return ( 19 |
20 |
{JSON.stringify(data.value)}
21 |
22 | ) 23 | } 24 | } 25 | }) 26 | -------------------------------------------------------------------------------- /src/test/testPinia.vue: -------------------------------------------------------------------------------- 1 | 23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/test/testStatic.vue: -------------------------------------------------------------------------------- 1 | 2 | 10 | 36 | 37 | -------------------------------------------------------------------------------- /src/test/worker.ts: -------------------------------------------------------------------------------- 1 | let i = 0 2 | let timer 3 | function timedCount() { 4 | i = i + 1 5 | postMessage(i) 6 | timer = setTimeout(timedCount, 500) 7 | if (i > 1) { 8 | clearTimeout(timer) 9 | } 10 | } 11 | 12 | timedCount() 13 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | // export const getImage = (name: string): string => { 2 | // return new URL(`/src/assets/images/${name}.png`, location.href).href; 3 | // }; 4 | 5 | /* export const getImage = (name: string): string => { 6 | // 其实就是将图片导为模块 7 | // 获取图片模块 8 | const picModules = import.meta.globEager("../assets/images/**"); 9 | console.log(picModules); 10 | 11 | // 获取指定的图片 12 | const path = `../assets/images/${name}.png`; 13 | console.log(path); 14 | 15 | return picModules[path].default; 16 | }; */ 17 | -------------------------------------------------------------------------------- /src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /src/views/layouts/index.vue: -------------------------------------------------------------------------------- 1 | 7 | 23 | 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // "isolatedModules": true, 4 | "target": "esnext", 5 | "useDefineForClassFields": true, 6 | "module": "esnext", 7 | "moduleResolution": "node", 8 | "strict": true, 9 | "jsx": "preserve", 10 | "sourceMap": true, 11 | "resolveJsonModule": true, 12 | "esModuleInterop": true, 13 | "noImplicitAny": false, 14 | "lib": ["esnext", "dom"], 15 | "types": [ 16 | "vite/client" 17 | ], 18 | "baseUrl": ".", 19 | "paths": { 20 | "@/*": [ "src/*" ], 21 | "#/*": [ "types/*" ] 22 | }, 23 | }, 24 | "include": [ 25 | "src/**/*.ts", 26 | "src/**/*.d.ts", 27 | "src/**/*.tsx", 28 | "src/**/*.jsx", 29 | "src/**/*.vue", 30 | "mock/**/*.ts", 31 | ], 32 | "exclude": [ 33 | "node_modules", 34 | "tests/server/**/*.ts", 35 | "dist", 36 | "**/*.js", 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig, UserConfigExport, ConfigEnv } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | import vueJsx from '@vitejs/plugin-vue-jsx' 4 | import { resolve } from 'path' 5 | import { viteMockServe } from 'vite-plugin-mock' 6 | 7 | /** 8 | * 根据环境变量设置输出目录 9 | * @param mode 环境变量 10 | * @returns 11 | */ 12 | function handleOutDirByMode(mode) { 13 | console.log('环境', mode) 14 | return 'dist' 15 | } 16 | // https://vitejs.dev/config/ 17 | export default ({ mode, command }: ConfigEnv): UserConfigExport => { 18 | const isBuild = command === 'build' 19 | return defineConfig({ 20 | plugins: [ 21 | vue(), 22 | vueJsx({ 23 | include: /\.(jsx|tsx)/ 24 | }), 25 | viteMockServe({ 26 | ignore: /^_/, 27 | mockPath: 'mock', 28 | localEnabled: !isBuild, 29 | prodEnabled: isBuild, 30 | injectCode: ` 31 | import { setupProdMockServer } from '../mock/_createProductionServer'; 32 | setupProdMockServer(); 33 | ` 34 | }) 35 | ], 36 | resolve: { 37 | alias: { 38 | '@': resolve(__dirname, 'src') 39 | } 40 | }, 41 | css: { 42 | preprocessorOptions: { 43 | scss: { 44 | additionalData: ` 45 | @import "@/styles/mixin.scss"; 46 | @import "@/styles/variables.scss"; 47 | ` 48 | } 49 | } 50 | }, 51 | server: { 52 | host: '0.0.0.0', 53 | proxy: { 54 | // 字符串简写写法 55 | '/foo': 'http://localhost:4567', 56 | // 选项写法 57 | '/api': { 58 | target: 'http://jsonplaceholder.typicode.com', 59 | changeOrigin: true, 60 | rewrite: (path) => path.replace(/^\/api/, '') 61 | }, 62 | // 正则表达式写法 63 | '^/fallback/.*': { 64 | target: 'http://jsonplaceholder.typicode.com', 65 | changeOrigin: true, 66 | rewrite: (path) => path.replace(/^\/fallback/, '') 67 | } 68 | // 使用 proxy 实例 69 | // "/api": { 70 | // target: "http://jsonplaceholder.typicode.com", 71 | // changeOrigin: true, 72 | // configure: (proxy, options) => { 73 | // // proxy 是 'http-proxy' 的实例 74 | // }, 75 | // }, 76 | } 77 | }, 78 | build: { 79 | sourcemap: true, 80 | outDir: handleOutDirByMode(mode), 81 | cssCodeSplit: false, // 禁用 CSS 代码拆分,将整个项目中的所有 CSS 将被提取到一个 CSS 文件中 82 | brotliSize: false, // 关闭打包计算 83 | target: 'esnext', 84 | minify: 'esbuild', // 混淆器,terser构建后文件体积更小 ,esbuild 85 | //小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项 86 | assetsInlineLimit: 4096, 87 | assetsDir: 'static/img/', // 静态资源目录 88 | // rollup 打包配置 89 | rollupOptions: { 90 | output: { 91 | chunkFileNames: 'static/js/[name]-[hash].js', 92 | entryFileNames: 'static/js/[name]-[hash].js', 93 | assetFileNames: 'static/[ext]/[name]-[hash].[ext]' 94 | } 95 | }, 96 | // 压缩配置 97 | terserOptions: { 98 | compress: { 99 | drop_console: false, // 生产环境移除console 100 | drop_debugger: true // 生产环境移除debugger 101 | } 102 | } 103 | } 104 | }) 105 | } 106 | -------------------------------------------------------------------------------- /从0到1配置.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + Typescript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and Typescript in Vite. The template uses Vue 3 ` 363 | 364 | 367 | 368 | 378 | ``` 379 | 380 | ```ts 381 | // layouts/index.vue 382 | 389 | 397 | 400 | ``` 401 | 402 | ## ✅ Pinia 状态管理 403 | 404 | - 文档:https://pinia.vuejs.org/ 405 | - 参考资料:https://juejin.cn/post/7049196967770980389 406 | - Pinia 的特点: 407 | - 完整的 typescript 的支持; 408 | - 足够轻量,压缩后的体积只有 1.6kb; 409 | - 去除 mutations,只有 state,getters,actions(这是我最喜欢的一个特点); 410 | - actions 支持同步和异步; 411 | - 没有模块嵌套,只有 store 的概念,store 之间可以自由使用,更好的代码分割; 412 | - 无需手动添加 store,store 一旦创建便会自动添加; 413 | 414 | ### 安装依赖 415 | 416 | ```js 417 | pnpm i pinia 418 | ``` 419 | 420 | ### 创建 Store 421 | 422 | - 新建 src/store 目录并在其下面创建 index.ts,导出 store 423 | 424 | ```js 425 | // src/store/index.ts 426 | 427 | import { createPinia } from 'pinia' 428 | 429 | const store = createPinia() 430 | 431 | export default store 432 | ``` 433 | 434 | ### 在 main.ts 中引入并使用 435 | 436 | ```ts 437 | // src/main.ts 438 | 439 | import { createApp } from 'vue' 440 | import App from './App.vue' 441 | import store from './store' 442 | 443 | const app = createApp(App) 444 | app.use(store) 445 | ``` 446 | 447 | ### 定义 State 448 | 449 | - 在 src/store 下面创建一个 user.ts 450 | 451 | ```ts 452 | //src/store/user.ts 453 | 454 | import { defineStore } from 'pinia' 455 | import { useAppStore } from './app' 456 | 457 | export const useUserStore = defineStore({ 458 | id: 'user', 459 | state: () => { 460 | return { 461 | name: '张三', 462 | age: 18 463 | } 464 | }, 465 | getters: { 466 | fullName: (state) => { 467 | return state.name + '丰' 468 | } 469 | }, 470 | actions: { 471 | updateState(data: any) { 472 | this.$state = data 473 | this.updateAppConfig() 474 | }, 475 | updateAppConfig() { 476 | const appStore = useAppStore() 477 | appStore.setData('app-update') 478 | } 479 | } 480 | }) 481 | ``` 482 | 483 | ```ts 484 | //src/store/app.ts 485 | import { defineStore } from 'pinia' 486 | 487 | export const useAppStore = defineStore({ 488 | id: 'app', 489 | state: () => { 490 | return { 491 | config: 'app' 492 | } 493 | }, 494 | actions: { 495 | setData(data: any) { 496 | console.log(data) 497 | this.config = data 498 | } 499 | } 500 | }) 501 | ``` 502 | 503 | ### 获取/更新 State 504 | 505 | ```vue 506 | 527 | 534 | 535 | 536 | ``` 537 | 538 | ### 数据持久化 539 | 540 | - 文档:https://github.com/prazdevs/pinia-plugin-persistedstate 541 | 542 | * 插件 pinia-plugin-persistedstate 可以辅助实现数据持久化功能。 543 | * 数据默认存在 sessionStorage 里,并且会以 store 的 id 作为 key。 544 | 545 | * 安装依赖 546 | 547 | ```ts 548 | pnpm i pinia-plugin-persistedstate 549 | ``` 550 | 551 | - 引用插件 552 | 553 | ```ts 554 | // src/store/index.ts 555 | 556 | import { createPinia } from 'pinia' 557 | import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' 558 | const store = createPinia() 559 | store.use(piniaPluginPersistedstate) 560 | export default store 561 | ``` 562 | 563 | - 在对应的 store 里开启 persist 即可 564 | 565 | ```ts 566 | export const useUserStore = defineStore({ 567 | id: 'user', 568 | 569 | state: () => { 570 | return { 571 | name: '张三' 572 | } 573 | }, 574 | 575 | // 开启数据缓存 576 | persist: { 577 | key: 'user', 578 | storage: sessionStorage, // 数据存储位置,默认为 localStorage 579 | paths: ['name'], // 用于部分持久化状态的点表示法路径数组,表示不会持久化任何状态(默认为并保留整个状态) 580 | overwrite: true 581 | } 582 | }) 583 | ``` 584 | 585 | ## ✅ Eslint + Prettier 统一开发规范 586 | 587 | ### 1. 安装依赖 588 | 589 | ```js 590 | pnpm i -D eslint eslint-plugin-vue prettier @vue/eslint-config-prettier @vue/eslint-config-typescript @rushstack/eslint-patch 591 | ``` 592 | 593 | ### 2. 编写相关文件 594 | 595 | - .eslintrc.js 596 | 597 | ```js 598 | /* eslint-env node */ 599 | require('@rushstack/eslint-patch/modern-module-resolution') 600 | 601 | module.exports = { 602 | root: true, 603 | extends: [ 604 | 'plugin:vue/vue3-essential', 605 | 'eslint:recommended', 606 | '@vue/eslint-config-typescript/recommended', 607 | '@vue/eslint-config-prettier' 608 | ], 609 | env: { 610 | 'vue/setup-compiler-macros': true 611 | }, 612 | parserOptions: { 613 | ecmaVersion: 12 614 | }, 615 | rules: { 616 | 'prettier/prettier': 'warn', 617 | '@typescript-eslint/no-explicit-any': 'off', 618 | '@typescript-eslint/no-unused-vars': 'off' 619 | } 620 | } 621 | ``` 622 | 623 | - .prettierc.js 624 | 625 | ```js 626 | module.exports = { 627 | // 定制格式化要求 628 | overrides: [ 629 | { 630 | files: '.prettierrc', 631 | options: { 632 | parser: 'json' 633 | } 634 | } 635 | ], 636 | printWidth: 100, // 一行最多 100 字符 637 | tabWidth: 2, // 使用 4 个空格缩进 638 | semi: false, // 行尾需要有分号 639 | singleQuote: true, // 使用单引号而不是双引号 640 | useTabs: false, // 用制表符而不是空格缩进行 641 | quoteProps: 'as-needed', // 仅在需要时在对象属性两边添加引号 642 | jsxSingleQuote: false, // 在 JSX 中使用单引号而不是双引号 643 | trailingComma: 'none', // 末尾不需要逗号 644 | bracketSpacing: true, // 大括号内的首尾需要空格 645 | bracketSameLine: false, // 将多行 HTML(HTML、JSX、Vue、Angular)元素反尖括号需要换行 646 | arrowParens: 'always', // 箭头函数,只有一个参数的时候,也需要括号 avoid 647 | rangeStart: 0, // 每个文件格式化的范围是开头-结束 648 | rangeEnd: Infinity, // 每个文件格式化的范围是文件的全部内容 649 | requirePragma: false, // 不需要写文件开头的 @prettier 650 | insertPragma: false, // 不需要自动在文件开头插入 @prettier 651 | proseWrap: 'preserve', // 使用默认的折行标准 always 652 | htmlWhitespaceSensitivity: 'css', // 根据显示样式决定 html 要不要折行 653 | vueIndentScriptAndStyle: false, //(默认值)对于 .vue 文件,不缩进