MTrun 3 yıl önce
işleme
535104447b
72 değiştirilmiş dosya ile 5029 ekleme ve 0 silme
  1. 8 0
      .env
  2. 23 0
      .eslintrc.js
  3. 5 0
      .gitignore
  4. 21 0
      LICENSE
  5. 12 0
      Makefile
  6. 1 0
      README.md
  7. 6 0
      build/constant.ts
  8. 9 0
      build/getConfigFileName.ts
  9. 35 0
      build/vite/plugin/compress.ts
  10. 26 0
      index.html
  11. 33 0
      package.json
  12. 2992 0
      pnpm-lock.yaml
  13. 12 0
      prettier.config.js
  14. BIN
      public/favicon.ico
  15. 40 0
      src/App.vue
  16. 255 0
      src/assets/images/Error.svg
  17. 32 0
      src/assets/images/exception/403.svg
  18. 32 0
      src/assets/images/exception/404.svg
  19. 36 0
      src/assets/images/exception/500.svg
  20. 32 0
      src/assets/images/exception/developing.svg
  21. 32 0
      src/assets/images/exception/load-error.svg
  22. 32 0
      src/assets/images/exception/nodata.svg
  23. 127 0
      src/assets/images/login.svg
  24. BIN
      src/assets/images/logo.png
  25. 34 0
      src/components/Application/Application.vue
  26. 3 0
      src/components/Application/index.ts
  27. 3 0
      src/components/DialogContent/index.ts
  28. 12 0
      src/components/DialogContent/index.vue
  29. 3 0
      src/components/MessageContent/index.ts
  30. 12 0
      src/components/MessageContent/index.vue
  31. 1 0
      src/directives/index.ts
  32. 34 0
      src/enums/httpEnum.ts
  33. 15 0
      src/enums/pageEnum.ts
  34. 3 0
      src/layout/components/Main/index.ts
  35. 16 0
      src/layout/components/Main/index.vue
  36. 96 0
      src/layout/index.vue
  37. 3 0
      src/layout/parentLayout.vue
  38. 34 0
      src/main.ts
  39. 7 0
      src/plugins/customComponents.ts
  40. 11 0
      src/plugins/directives.ts
  41. 5 0
      src/plugins/globalMethods.ts
  42. 4 0
      src/plugins/index.ts
  43. 143 0
      src/plugins/naive.ts
  44. 44 0
      src/router/base.ts
  45. 7 0
      src/router/constant.ts
  46. 47 0
      src/router/index.ts
  47. 5 0
      src/router/modules/index.ts
  48. 13 0
      src/router/modules/project.router.ts
  49. 31 0
      src/router/router-guards.ts
  50. 38 0
      src/router/types.ts
  51. 32 0
      src/settings/designSetting.ts
  52. 10 0
      src/store/index.ts
  53. 8 0
      src/store/modules/designStore/designStore.d.ts
  54. 29 0
      src/store/modules/designStore/designStore.ts
  55. 2 0
      src/store/mutation-types.ts
  56. 5 0
      src/store/types.ts
  57. 7 0
      src/styles/global/style.scss
  58. 1 0
      src/styles/global/var.scss
  59. 34 0
      src/utils/comp.ts
  60. 43 0
      src/utils/index.ts
  61. 40 0
      src/views/exception/403.vue
  62. 40 0
      src/views/exception/404.vue
  63. 40 0
      src/views/exception/500.vue
  64. 169 0
      src/views/login/index.vue
  65. 9 0
      src/views/project/index.vue
  66. 24 0
      src/views/redirect/index.vue
  67. 44 0
      tsconfig.json
  68. 6 0
      types/config.d.ts
  69. 7 0
      types/global.d.ts
  70. 5 0
      types/shims-vue.d.ts
  71. 1 0
      types/vite-env.d.ts
  72. 48 0
      vite.config.ts

+ 8 - 0
.env

@@ -0,0 +1,8 @@
+# port
+VITE_PORT = 8001
+
+# spa-title
+VITE_GLOB_APP_TITLE = GoView
+
+# spa shortname
+VITE_GLOB_APP_SHORT_NAME = GoView

+ 23 - 0
.eslintrc.js

@@ -0,0 +1,23 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true,
+  },
+  extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"],
+  parserOptions: {
+    parser: "babel-eslint",
+  },
+  rules: {
+    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
+    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
+    "prettier/prettier": [
+      "warn",
+      {
+        // singleQuote: none,
+        // semi: false,
+        trailingComma: "es5",
+      },
+    ],
+  },
+};
+

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021-present Naive Ui Admin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 12 - 0
Makefile

@@ -0,0 +1,12 @@
+.PHONY: dist test
+default: help
+dev:
+	npm run dev
+
+build:
+	npm run build
+
+	
+help:
+	@echo "    make dev 开发模式"
+	@echo "    make build 编译模式"

+ 1 - 0
README.md

@@ -0,0 +1 @@
+# Vue 3 + Typescript + Vite2 + Pinia2

+ 6 - 0
build/constant.ts

@@ -0,0 +1,6 @@
+/**
+ * The name of the configuration file entered in the production environment
+ */
+export const GLOB_CONFIG_FILE_NAME = 'app.config.js';
+
+export const OUTPUT_DIR = 'dist';

+ 9 - 0
build/getConfigFileName.ts

@@ -0,0 +1,9 @@
+/**
+ * Get the configuration file variable name
+ * @param env
+ */
+export const getConfigFileName = (env: Record<string, any>) => {
+  return `__PRODUCTION__${env.VITE_GLOB_APP_SHORT_NAME || '__APP'}__CONF__`
+    .toUpperCase()
+    .replace(/\s/g, '');
+};

+ 35 - 0
build/vite/plugin/compress.ts

@@ -0,0 +1,35 @@
+/**
+ * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
+ * https://github.com/anncwb/vite-plugin-compression
+ */
+import type { Plugin } from 'vite';
+
+import compressPlugin from 'vite-plugin-compression';
+
+export function configCompressPlugin(
+  compress: 'gzip' | 'brotli' | 'none',
+  deleteOriginFile = false
+): Plugin | Plugin[] {
+  const compressList = compress.split(',');
+
+  const plugins: Plugin[] = [];
+
+  if (compressList.includes('gzip')) {
+    plugins.push(
+      compressPlugin({
+        ext: '.gz',
+        deleteOriginFile,
+      })
+    );
+  }
+  if (compressList.includes('brotli')) {
+    plugins.push(
+      compressPlugin({
+        ext: '.br',
+        algorithm: 'brotliCompress',
+        deleteOriginFile,
+      })
+    );
+  }
+  return plugins;
+}

+ 26 - 0
index.html

@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="zh-cmn-Hans">
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+  <meta name="renderer" content="webkit"/>
+  <meta
+    name="viewport"
+    content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
+  />
+  <link rel="icon" href="/favicon.ico"/>
+  <title>GoView</title>
+  <style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
+</head>
+<body>
+<div id="appProvider" style="display: none"></div>
+<div id="app">
+  <div class="first-loading-wrp">
+    <div class="loading-wrp">
+        <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+    </div>
+  </div>
+</div>
+<script type="module" src="/src/main.ts"></script>
+</body>
+</html>

+ 33 - 0
package.json

@@ -0,0 +1,33 @@
+{
+  "name": "go-view",
+  "version": "0.0.0",
+  "scripts": {
+    "dev": "vite",
+    "build": "vue-tsc --noEmit && vite build",
+    "serve": "vite preview"
+  },
+  "dependencies": {
+    "@vicons/ionicons5": "^0.11.0",
+    "axios": "^0.23.0",
+    "mockjs": "^1.1.0",
+    "naive-ui": "^2.19.9",
+    "pinia": "^2.0.6",
+    "vue": "^3.2.16",
+    "vue-router": "4.0.12"
+  },
+  "devDependencies": {
+    "@types/node": "^16.11.1",
+    "@vitejs/plugin-vue": "^1.9.3",
+    "@vitejs/plugin-vue-jsx": "^1.2.0",
+    "@vue/compiler-sfc": "^3.2.20",
+    "default-passive-events": "^2.0.0",
+    "sass": "^1.43.2",
+    "sass-loader": "^12.2.0",
+    "typescript": "^4.4.4",
+    "vite": "^2.6.10",
+    "vite-plugin-importer": "^0.2.5",
+    "vite-plugin-mock": "^2.9.6",
+    "vite-plugin-style-import": "^1.2.1",
+    "vue-tsc": "^0.28.7"
+  }
+}

+ 2992 - 0
pnpm-lock.yaml

@@ -0,0 +1,2992 @@
+lockfileVersion: 5.3
+
+specifiers:
+  '@types/node': ^16.11.1
+  '@vicons/ionicons5': ^0.11.0
+  '@vitejs/plugin-vue': ^1.9.3
+  '@vitejs/plugin-vue-jsx': ^1.2.0
+  '@vue/compiler-sfc': ^3.2.20
+  axios: ^0.23.0
+  default-passive-events: ^2.0.0
+  mockjs: ^1.1.0
+  naive-ui: ^2.19.9
+  pinia: ^2.0.6
+  sass: ^1.43.2
+  sass-loader: ^12.2.0
+  typescript: ^4.4.4
+  vite: ^2.6.10
+  vite-plugin-importer: ^0.2.5
+  vite-plugin-mock: ^2.9.6
+  vite-plugin-style-import: ^1.2.1
+  vue: ^3.2.16
+  vue-router: 4.0.12
+  vue-tsc: ^0.28.7
+
+dependencies:
+  '@vicons/ionicons5': rg.cnpmjs.org/@vicons/ionicons5/0.11.0
+  axios: rg.cnpmjs.org/axios/0.23.0
+  mockjs: rg.cnpmjs.org/mockjs/1.1.0
+  naive-ui: rg.cnpmjs.org/naive-ui/2.21.5_vue@3.2.24
+  pinia: rg.cnpmjs.org/pinia/2.0.6_typescript@4.5.2+vue@3.2.24
+  vue: rg.cnpmjs.org/vue/3.2.24
+  vue-router: rg.cnpmjs.org/vue-router/4.0.12_vue@3.2.24
+
+devDependencies:
+  '@types/node': rg.cnpmjs.org/@types/node/16.11.12
+  '@vitejs/plugin-vue': rg.cnpmjs.org/@vitejs/plugin-vue/1.10.2_vite@2.7.1
+  '@vitejs/plugin-vue-jsx': rg.cnpmjs.org/@vitejs/plugin-vue-jsx/1.3.1
+  '@vue/compiler-sfc': rg.cnpmjs.org/@vue/compiler-sfc/3.2.24
+  default-passive-events: rg.cnpmjs.org/default-passive-events/2.0.0
+  sass: rg.cnpmjs.org/sass/1.44.0
+  sass-loader: rg.cnpmjs.org/sass-loader/12.4.0_sass@1.44.0
+  typescript: rg.cnpmjs.org/typescript/4.5.2
+  vite: rg.cnpmjs.org/vite/2.7.1_sass@1.44.0
+  vite-plugin-importer: rg.cnpmjs.org/vite-plugin-importer/0.2.5
+  vite-plugin-mock: rg.cnpmjs.org/vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.7.1
+  vite-plugin-style-import: rg.cnpmjs.org/vite-plugin-style-import/1.4.0_vite@2.7.1
+  vue-tsc: rg.cnpmjs.org/vue-tsc/0.28.10_typescript@4.5.2
+
+packages:
+
+  rg.cnpmjs.org/@babel/code-frame/7.16.0:
+    resolution: {integrity: sha1-DfyAMJvuyEEeZecGRhxAiwu5tDE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/code-frame/download/@babel/code-frame-7.16.0.tgz}
+    name: '@babel/code-frame'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': rg.cnpmjs.org/@babel/highlight/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/compat-data/7.16.4:
+    resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/compat-data/download/@babel/compat-data-7.16.4.tgz}
+    name: '@babel/compat-data'
+    version: 7.16.4
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  rg.cnpmjs.org/@babel/core/7.16.0:
+    resolution: {integrity: sha1-xP9EBG9f4xBSXMnrTvUUfwxTdNQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/core/download/@babel/core-7.16.0.tgz}
+    name: '@babel/core'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': rg.cnpmjs.org/@babel/code-frame/7.16.0
+      '@babel/generator': rg.cnpmjs.org/@babel/generator/7.16.0
+      '@babel/helper-compilation-targets': rg.cnpmjs.org/@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.0
+      '@babel/helper-module-transforms': rg.cnpmjs.org/@babel/helper-module-transforms/7.16.0
+      '@babel/helpers': rg.cnpmjs.org/@babel/helpers/7.16.3
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@babel/template': rg.cnpmjs.org/@babel/template/7.16.0
+      '@babel/traverse': rg.cnpmjs.org/@babel/traverse/7.16.3
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+      convert-source-map: rg.cnpmjs.org/convert-source-map/1.8.0
+      debug: rg.cnpmjs.org/debug/4.3.3
+      gensync: rg.cnpmjs.org/gensync/1.0.0-beta.2
+      json5: rg.cnpmjs.org/json5/2.2.0
+      semver: rg.cnpmjs.org/semver/6.3.0
+      source-map: rg.cnpmjs.org/source-map/0.5.7
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/generator/7.16.0:
+    resolution: {integrity: sha1-1A89HVB15i01ALzLZ/PaqKlSZbI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/generator/download/@babel/generator-7.16.0.tgz}
+    name: '@babel/generator'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+      jsesc: rg.cnpmjs.org/jsesc/2.5.2
+      source-map: rg.cnpmjs.org/source-map/0.5.7
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-annotate-as-pure/7.16.0:
+    resolution: {integrity: sha1-mh8OvNpT2aLQAQjEzqzmpdXx8I0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.16.0.tgz}
+    name: '@babel/helper-annotate-as-pure'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.0:
+    resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.16.3.tgz}
+    id: rg.cnpmjs.org/@babel/helper-compilation-targets/7.16.3
+    name: '@babel/helper-compilation-targets'
+    version: 7.16.3
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/compat-data': rg.cnpmjs.org/@babel/compat-data/7.16.4
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-validator-option': rg.cnpmjs.org/@babel/helper-validator-option/7.14.5
+      browserslist: rg.cnpmjs.org/browserslist/4.18.1
+      semver: rg.cnpmjs.org/semver/6.3.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.0:
+    resolution: {integrity: sha1-CQ1NFms0KgOp/sN+9P1a65x8aks=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.16.0.tgz}
+    id: rg.cnpmjs.org/@babel/helper-create-class-features-plugin/7.16.0
+    name: '@babel/helper-create-class-features-plugin'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-annotate-as-pure': rg.cnpmjs.org/@babel/helper-annotate-as-pure/7.16.0
+      '@babel/helper-function-name': rg.cnpmjs.org/@babel/helper-function-name/7.16.0
+      '@babel/helper-member-expression-to-functions': rg.cnpmjs.org/@babel/helper-member-expression-to-functions/7.16.0
+      '@babel/helper-optimise-call-expression': rg.cnpmjs.org/@babel/helper-optimise-call-expression/7.16.0
+      '@babel/helper-replace-supers': rg.cnpmjs.org/@babel/helper-replace-supers/7.16.0
+      '@babel/helper-split-export-declaration': rg.cnpmjs.org/@babel/helper-split-export-declaration/7.16.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-function-name/7.16.0:
+    resolution: {integrity: sha1-t90Hl9ALv+5PB+nE6lsOMMi7FIE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-function-name/download/@babel/helper-function-name-7.16.0.tgz}
+    name: '@babel/helper-function-name'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-get-function-arity': rg.cnpmjs.org/@babel/helper-get-function-arity/7.16.0
+      '@babel/template': rg.cnpmjs.org/@babel/template/7.16.0
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-get-function-arity/7.16.0:
+    resolution: {integrity: sha1-AIjHSGspqctdlIsaHeRttm4InPo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.16.0.tgz}
+    name: '@babel/helper-get-function-arity'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-hoist-variables/7.16.0:
+    resolution: {integrity: sha1-TJAjwvHe9+KP9G/B2802o5vqqBo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.16.0.tgz}
+    name: '@babel/helper-hoist-variables'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-member-expression-to-functions/7.16.0:
+    resolution: {integrity: sha1-KShwQO/Rl8d2Nu91GI6B2ovM1aQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.16.0.tgz}
+    name: '@babel/helper-member-expression-to-functions'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-module-imports/7.16.0:
+    resolution: {integrity: sha1-kFOOYLZy7PG0SPX09UM9N+eaPsM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.16.0.tgz}
+    name: '@babel/helper-module-imports'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-module-transforms/7.16.0:
+    resolution: {integrity: sha1-HIKo3UyzRXdQLr0pCWmbGUw+m7U=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.16.0.tgz}
+    name: '@babel/helper-module-transforms'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-module-imports': rg.cnpmjs.org/@babel/helper-module-imports/7.16.0
+      '@babel/helper-replace-supers': rg.cnpmjs.org/@babel/helper-replace-supers/7.16.0
+      '@babel/helper-simple-access': rg.cnpmjs.org/@babel/helper-simple-access/7.16.0
+      '@babel/helper-split-export-declaration': rg.cnpmjs.org/@babel/helper-split-export-declaration/7.16.0
+      '@babel/helper-validator-identifier': rg.cnpmjs.org/@babel/helper-validator-identifier/7.15.7
+      '@babel/template': rg.cnpmjs.org/@babel/template/7.16.0
+      '@babel/traverse': rg.cnpmjs.org/@babel/traverse/7.16.3
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-optimise-call-expression/7.16.0:
+    resolution: {integrity: sha1-zs2xRdcMVAlrFWT46fEM19GTszg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.16.0.tgz}
+    name: '@babel/helper-optimise-call-expression'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-plugin-utils/7.14.5:
+    resolution: {integrity: sha1-WsgizpfuxGdBq3ClF5ceRDpwxak=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.14.5.tgz}
+    name: '@babel/helper-plugin-utils'
+    version: 7.14.5
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-replace-supers/7.16.0:
+    resolution: {integrity: sha1-cwVejTz5vLqN21XK2T/tyGD2jxc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.16.0.tgz}
+    name: '@babel/helper-replace-supers'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-member-expression-to-functions': rg.cnpmjs.org/@babel/helper-member-expression-to-functions/7.16.0
+      '@babel/helper-optimise-call-expression': rg.cnpmjs.org/@babel/helper-optimise-call-expression/7.16.0
+      '@babel/traverse': rg.cnpmjs.org/@babel/traverse/7.16.3
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-simple-access/7.16.0:
+    resolution: {integrity: sha1-IdaidiDjg+N1NM9sELugGab5BRc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.16.0.tgz}
+    name: '@babel/helper-simple-access'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-split-export-declaration/7.16.0:
+    resolution: {integrity: sha1-KWcvQ2Y+k23zcKrrIr7ds7rsdDg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.16.0.tgz}
+    name: '@babel/helper-split-export-declaration'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-validator-identifier/7.15.7:
+    resolution: {integrity: sha1-Ig35k7/pBKSmsCq08zhaXr9uI4k=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.15.7.tgz}
+    name: '@babel/helper-validator-identifier'
+    version: 7.15.7
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  rg.cnpmjs.org/@babel/helper-validator-option/7.14.5:
+    resolution: {integrity: sha1-bnKh//GNXfy4eOHmLxoCHEty1aM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.14.5.tgz}
+    name: '@babel/helper-validator-option'
+    version: 7.14.5
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  rg.cnpmjs.org/@babel/helpers/7.16.3:
+    resolution: {integrity: sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/helpers/download/@babel/helpers-7.16.3.tgz}
+    name: '@babel/helpers'
+    version: 7.16.3
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': rg.cnpmjs.org/@babel/template/7.16.0
+      '@babel/traverse': rg.cnpmjs.org/@babel/traverse/7.16.3
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/highlight/7.16.0:
+    resolution: {integrity: sha1-bOsysspLj182H7f9gh4/3fShclo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/highlight/download/@babel/highlight-7.16.0.tgz}
+    name: '@babel/highlight'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': rg.cnpmjs.org/@babel/helper-validator-identifier/7.15.7
+      chalk: rg.cnpmjs.org/chalk/2.4.2
+      js-tokens: rg.cnpmjs.org/js-tokens/4.0.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/parser/7.16.4:
+    resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/parser/download/@babel/parser-7.16.4.tgz}
+    name: '@babel/parser'
+    version: 7.16.4
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+
+  rg.cnpmjs.org/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.0:
+    resolution: {integrity: sha1-7mATSMNw+jNNIge+FYd3SWUh/VE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/plugin-syntax-import-meta/download/@babel/plugin-syntax-import-meta-7.10.4.tgz}
+    id: rg.cnpmjs.org/@babel/plugin-syntax-import-meta/7.10.4
+    name: '@babel/plugin-syntax-import-meta'
+    version: 7.10.4
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-plugin-utils': rg.cnpmjs.org/@babel/helper-plugin-utils/7.14.5
+    dev: true
+
+  rg.cnpmjs.org/@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.0:
+    resolution: {integrity: sha1-+WJDlDFzZamojII1jT+EcRVGmPE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.16.0.tgz}
+    id: rg.cnpmjs.org/@babel/plugin-syntax-jsx/7.16.0
+    name: '@babel/plugin-syntax-jsx'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-plugin-utils': rg.cnpmjs.org/@babel/helper-plugin-utils/7.14.5
+    dev: true
+
+  rg.cnpmjs.org/@babel/plugin-syntax-typescript/7.16.0_@babel+core@7.16.0:
+    resolution: {integrity: sha1-L+6xPZM0zFguqREdNQb3cxdBebs=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/plugin-syntax-typescript/download/@babel/plugin-syntax-typescript-7.16.0.tgz}
+    id: rg.cnpmjs.org/@babel/plugin-syntax-typescript/7.16.0
+    name: '@babel/plugin-syntax-typescript'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-plugin-utils': rg.cnpmjs.org/@babel/helper-plugin-utils/7.14.5
+    dev: true
+
+  rg.cnpmjs.org/@babel/plugin-transform-typescript/7.16.1_@babel+core@7.16.0:
+    resolution: {integrity: sha1-zAZwsoIrAzg1W8Gz0iRqQrgWZAk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/plugin-transform-typescript/download/@babel/plugin-transform-typescript-7.16.1.tgz}
+    id: rg.cnpmjs.org/@babel/plugin-transform-typescript/7.16.1
+    name: '@babel/plugin-transform-typescript'
+    version: 7.16.1
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/helper-create-class-features-plugin': rg.cnpmjs.org/@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.0
+      '@babel/helper-plugin-utils': rg.cnpmjs.org/@babel/helper-plugin-utils/7.14.5
+      '@babel/plugin-syntax-typescript': rg.cnpmjs.org/@babel/plugin-syntax-typescript/7.16.0_@babel+core@7.16.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/runtime/7.16.3:
+    resolution: {integrity: sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/runtime/download/@babel/runtime-7.16.3.tgz}
+    name: '@babel/runtime'
+    version: 7.16.3
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      regenerator-runtime: rg.cnpmjs.org/regenerator-runtime/0.13.9
+    dev: true
+
+  rg.cnpmjs.org/@babel/template/7.16.0:
+    resolution: {integrity: sha1-0Wo16/TNdOICCDNW+rId2JNj3dY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/template/download/@babel/template-7.16.0.tgz}
+    name: '@babel/template'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': rg.cnpmjs.org/@babel/code-frame/7.16.0
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/@babel/traverse/7.16.3:
+    resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/traverse/download/@babel/traverse-7.16.3.tgz}
+    name: '@babel/traverse'
+    version: 7.16.3
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': rg.cnpmjs.org/@babel/code-frame/7.16.0
+      '@babel/generator': rg.cnpmjs.org/@babel/generator/7.16.0
+      '@babel/helper-function-name': rg.cnpmjs.org/@babel/helper-function-name/7.16.0
+      '@babel/helper-hoist-variables': rg.cnpmjs.org/@babel/helper-hoist-variables/7.16.0
+      '@babel/helper-split-export-declaration': rg.cnpmjs.org/@babel/helper-split-export-declaration/7.16.0
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+      debug: rg.cnpmjs.org/debug/4.3.3
+      globals: rg.cnpmjs.org/globals/11.12.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@babel/types/7.16.0:
+    resolution: {integrity: sha1-2zsxOAT5aq3Qt3bEgj4SetZyibo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@babel/types/download/@babel/types-7.16.0.tgz}
+    name: '@babel/types'
+    version: 7.16.0
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': rg.cnpmjs.org/@babel/helper-validator-identifier/7.15.7
+      to-fast-properties: rg.cnpmjs.org/to-fast-properties/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/@css-render/plugin-bem/0.15.6:
+    resolution: {integrity: sha1-9/6kdN9PMmLvn7gBetocuXEs14o=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@css-render/plugin-bem/download/@css-render/plugin-bem-0.15.6.tgz}
+    name: '@css-render/plugin-bem'
+    version: 0.15.6
+    dependencies:
+      css-render: rg.cnpmjs.org/css-render/0.15.6
+    dev: false
+
+  rg.cnpmjs.org/@css-render/vue3-ssr/0.15.6_vue@3.2.24:
+    resolution: {integrity: sha1-TtwpS9p+bKIV9sfsniyDhWRQacM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@css-render/vue3-ssr/download/@css-render/vue3-ssr-0.15.6.tgz}
+    id: rg.cnpmjs.org/@css-render/vue3-ssr/0.15.6
+    name: '@css-render/vue3-ssr'
+    version: 0.15.6
+    peerDependencies:
+      vue: ^3.0.11
+    dependencies:
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/@emmetio/abbreviation/2.2.2:
+    resolution: {integrity: sha1-dGdi/Z56jC6mBPWAxi48/iUOaYk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@emmetio/abbreviation/download/@emmetio/abbreviation-2.2.2.tgz}
+    name: '@emmetio/abbreviation'
+    version: 2.2.2
+    dependencies:
+      '@emmetio/scanner': rg.cnpmjs.org/@emmetio/scanner/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/@emmetio/css-abbreviation/2.1.4:
+    resolution: {integrity: sha1-kDYuihEizjt29sMVeQfTAYL1P1Q=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@emmetio/css-abbreviation/download/@emmetio/css-abbreviation-2.1.4.tgz}
+    name: '@emmetio/css-abbreviation'
+    version: 2.1.4
+    dependencies:
+      '@emmetio/scanner': rg.cnpmjs.org/@emmetio/scanner/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/@emmetio/scanner/1.0.0:
+    resolution: {integrity: sha1-Blsq9iM/50dNRII+PeuJckr0K18=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@emmetio/scanner/download/@emmetio/scanner-1.0.0.tgz}
+    name: '@emmetio/scanner'
+    version: 1.0.0
+    dev: true
+
+  rg.cnpmjs.org/@emotion/hash/0.8.0:
+    resolution: {integrity: sha1-u7/2iXj+/b5ozLUzvIy+HRr7VBM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@emotion/hash/download/@emotion/hash-0.8.0.tgz}
+    name: '@emotion/hash'
+    version: 0.8.0
+    dev: false
+
+  rg.cnpmjs.org/@jest/types/27.4.2:
+    resolution: {integrity: sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@jest/types/download/@jest/types-27.4.2.tgz}
+    name: '@jest/types'
+    version: 27.4.2
+    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+    dependencies:
+      '@types/istanbul-lib-coverage': rg.cnpmjs.org/@types/istanbul-lib-coverage/2.0.3
+      '@types/istanbul-reports': rg.cnpmjs.org/@types/istanbul-reports/3.0.1
+      '@types/node': rg.cnpmjs.org/@types/node/16.11.12
+      '@types/yargs': rg.cnpmjs.org/@types/yargs/16.0.4
+      chalk: rg.cnpmjs.org/chalk/4.1.2
+    dev: false
+
+  rg.cnpmjs.org/@nodelib/fs.scandir/2.1.5:
+    resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz}
+    name: '@nodelib/fs.scandir'
+    version: 2.1.5
+    engines: {node: '>= 8'}
+    dependencies:
+      '@nodelib/fs.stat': rg.cnpmjs.org/@nodelib/fs.stat/2.0.5
+      run-parallel: rg.cnpmjs.org/run-parallel/1.2.0
+    dev: true
+
+  rg.cnpmjs.org/@nodelib/fs.stat/2.0.5:
+    resolution: {integrity: sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz}
+    name: '@nodelib/fs.stat'
+    version: 2.0.5
+    engines: {node: '>= 8'}
+    dev: true
+
+  rg.cnpmjs.org/@nodelib/fs.walk/1.2.8:
+    resolution: {integrity: sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz}
+    name: '@nodelib/fs.walk'
+    version: 1.2.8
+    engines: {node: '>= 8'}
+    dependencies:
+      '@nodelib/fs.scandir': rg.cnpmjs.org/@nodelib/fs.scandir/2.1.5
+      fastq: rg.cnpmjs.org/fastq/1.13.0
+    dev: true
+
+  rg.cnpmjs.org/@rollup/plugin-node-resolve/13.0.6:
+    resolution: {integrity: sha1-KWKQcLt2dWe+gVf1dc+o8rjp73c=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@rollup/plugin-node-resolve/download/@rollup/plugin-node-resolve-13.0.6.tgz}
+    name: '@rollup/plugin-node-resolve'
+    version: 13.0.6
+    engines: {node: '>= 10.0.0'}
+    peerDependencies:
+      rollup: ^2.42.0
+    dependencies:
+      '@rollup/pluginutils': rg.cnpmjs.org/@rollup/pluginutils/3.1.0
+      '@types/resolve': rg.cnpmjs.org/@types/resolve/1.17.1
+      builtin-modules: rg.cnpmjs.org/builtin-modules/3.2.0
+      deepmerge: rg.cnpmjs.org/deepmerge/4.2.2
+      is-module: rg.cnpmjs.org/is-module/1.0.0
+      resolve: rg.cnpmjs.org/resolve/1.20.0
+    dev: true
+
+  rg.cnpmjs.org/@rollup/pluginutils/3.1.0:
+    resolution: {integrity: sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz}
+    name: '@rollup/pluginutils'
+    version: 3.1.0
+    engines: {node: '>= 8.0.0'}
+    peerDependencies:
+      rollup: ^1.20.0||^2.0.0
+    dependencies:
+      '@types/estree': rg.cnpmjs.org/@types/estree/0.0.39
+      estree-walker: rg.cnpmjs.org/estree-walker/1.0.1
+      picomatch: rg.cnpmjs.org/picomatch/2.3.0
+    dev: true
+
+  rg.cnpmjs.org/@rollup/pluginutils/4.1.1:
+    resolution: {integrity: sha1-HU2obdTt7RVlalfZM/2iuaCNR+w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@rollup/pluginutils/download/@rollup/pluginutils-4.1.1.tgz}
+    name: '@rollup/pluginutils'
+    version: 4.1.1
+    engines: {node: '>= 8.0.0'}
+    dependencies:
+      estree-walker: rg.cnpmjs.org/estree-walker/2.0.2
+      picomatch: rg.cnpmjs.org/picomatch/2.3.0
+    dev: true
+
+  rg.cnpmjs.org/@types/estree/0.0.39:
+    resolution: {integrity: sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/estree/download/@types/estree-0.0.39.tgz}
+    name: '@types/estree'
+    version: 0.0.39
+    dev: true
+
+  rg.cnpmjs.org/@types/istanbul-lib-coverage/2.0.3:
+    resolution: {integrity: sha1-S6jdtyAiH0MuRDvV+RF/0iz9R2I=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/istanbul-lib-coverage/download/@types/istanbul-lib-coverage-2.0.3.tgz}
+    name: '@types/istanbul-lib-coverage'
+    version: 2.0.3
+    dev: false
+
+  rg.cnpmjs.org/@types/istanbul-lib-report/3.0.0:
+    resolution: {integrity: sha1-wUwk8Y6oGQwRjudWK3/5mjZVJoY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/istanbul-lib-report/download/@types/istanbul-lib-report-3.0.0.tgz}
+    name: '@types/istanbul-lib-report'
+    version: 3.0.0
+    dependencies:
+      '@types/istanbul-lib-coverage': rg.cnpmjs.org/@types/istanbul-lib-coverage/2.0.3
+    dev: false
+
+  rg.cnpmjs.org/@types/istanbul-reports/3.0.1:
+    resolution: {integrity: sha1-kVP+mLuivVZaY63ZQ21vDX+EaP8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/istanbul-reports/download/@types/istanbul-reports-3.0.1.tgz}
+    name: '@types/istanbul-reports'
+    version: 3.0.1
+    dependencies:
+      '@types/istanbul-lib-report': rg.cnpmjs.org/@types/istanbul-lib-report/3.0.0
+    dev: false
+
+  rg.cnpmjs.org/@types/jest/27.0.3:
+    resolution: {integrity: sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/jest/download/@types/jest-27.0.3.tgz}
+    name: '@types/jest'
+    version: 27.0.3
+    dependencies:
+      jest-diff: rg.cnpmjs.org/jest-diff/27.4.2
+      pretty-format: rg.cnpmjs.org/pretty-format/27.4.2
+    dev: false
+
+  rg.cnpmjs.org/@types/lodash-es/4.17.5:
+    resolution: {integrity: sha1-HD/dFoSdhK6kOJCxxg2jeftQE1M=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/lodash-es/download/@types/lodash-es-4.17.5.tgz}
+    name: '@types/lodash-es'
+    version: 4.17.5
+    dependencies:
+      '@types/lodash': rg.cnpmjs.org/@types/lodash/4.14.177
+    dev: false
+
+  rg.cnpmjs.org/@types/lodash/4.14.177:
+    resolution: {integrity: sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/lodash/download/@types/lodash-4.14.177.tgz}
+    name: '@types/lodash'
+    version: 4.14.177
+    dev: false
+
+  rg.cnpmjs.org/@types/mockjs/1.0.4:
+    resolution: {integrity: sha1-5waVHV4ztPCku3Ox+LEk4m8IHeA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/mockjs/download/@types/mockjs-1.0.4.tgz}
+    name: '@types/mockjs'
+    version: 1.0.4
+    dev: true
+
+  rg.cnpmjs.org/@types/node/14.14.45:
+    resolution: {integrity: sha1-7C37VWb/gU0GGu9+FBV1rtuiRc8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/node/download/@types/node-14.14.45.tgz}
+    name: '@types/node'
+    version: 14.14.45
+    dev: false
+
+  rg.cnpmjs.org/@types/node/14.18.0:
+    resolution: {integrity: sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/node/download/@types/node-14.18.0.tgz}
+    name: '@types/node'
+    version: 14.18.0
+    dev: false
+
+  rg.cnpmjs.org/@types/node/16.11.12:
+    resolution: {integrity: sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/node/download/@types/node-16.11.12.tgz}
+    name: '@types/node'
+    version: 16.11.12
+
+  rg.cnpmjs.org/@types/resolve/1.17.1:
+    resolution: {integrity: sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/resolve/download/@types/resolve-1.17.1.tgz}
+    name: '@types/resolve'
+    version: 1.17.1
+    dependencies:
+      '@types/node': rg.cnpmjs.org/@types/node/16.11.12
+    dev: true
+
+  rg.cnpmjs.org/@types/yargs-parser/20.2.1:
+    resolution: {integrity: sha1-O5ziSJkZ2eT+pDm3aRarw0st8Sk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/yargs-parser/download/@types/yargs-parser-20.2.1.tgz}
+    name: '@types/yargs-parser'
+    version: 20.2.1
+    dev: false
+
+  rg.cnpmjs.org/@types/yargs/16.0.4:
+    resolution: {integrity: sha1-JqrZjdLCo45CEIbqmtQrnlFkKXc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@types/yargs/download/@types/yargs-16.0.4.tgz}
+    name: '@types/yargs'
+    version: 16.0.4
+    dependencies:
+      '@types/yargs-parser': rg.cnpmjs.org/@types/yargs-parser/20.2.1
+    dev: false
+
+  rg.cnpmjs.org/@vicons/ionicons5/0.11.0:
+    resolution: {integrity: sha1-VBhb+lcqCd9wCU2xlU8ov78TY+0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vicons/ionicons5/download/@vicons/ionicons5-0.11.0.tgz}
+    name: '@vicons/ionicons5'
+    version: 0.11.0
+    dev: false
+
+  rg.cnpmjs.org/@vitejs/plugin-vue-jsx/1.3.1:
+    resolution: {integrity: sha512-Ku0pnlG0CuFfkvwOe3TEHS7noqBIBR61JbdvH6F6i3IqJv8+0+tcyusR+EoFwi7YrA2vdP26oorWyGv3wDt5kg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vitejs/plugin-vue-jsx/download/@vitejs/plugin-vue-jsx-1.3.1.tgz}
+    name: '@vitejs/plugin-vue-jsx'
+    version: 1.3.1
+    engines: {node: '>=12.0.0'}
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/plugin-syntax-import-meta': rg.cnpmjs.org/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.0
+      '@babel/plugin-transform-typescript': rg.cnpmjs.org/@babel/plugin-transform-typescript/7.16.1_@babel+core@7.16.0
+      '@rollup/pluginutils': rg.cnpmjs.org/@rollup/pluginutils/4.1.1
+      '@vue/babel-plugin-jsx': rg.cnpmjs.org/@vue/babel-plugin-jsx/1.1.1_@babel+core@7.16.0
+      hash-sum: rg.cnpmjs.org/hash-sum/2.0.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@vitejs/plugin-vue/1.10.2_vite@2.7.1:
+    resolution: {integrity: sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vitejs/plugin-vue/download/@vitejs/plugin-vue-1.10.2.tgz}
+    id: rg.cnpmjs.org/@vitejs/plugin-vue/1.10.2
+    name: '@vitejs/plugin-vue'
+    version: 1.10.2
+    engines: {node: '>=12.0.0'}
+    peerDependencies:
+      vite: ^2.5.10
+    dependencies:
+      vite: rg.cnpmjs.org/vite/2.7.1_sass@1.44.0
+    dev: true
+
+  rg.cnpmjs.org/@volar/code-gen/0.28.10:
+    resolution: {integrity: sha1-PoYS0RfssnGWiz84uxrdksfBYxw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@volar/code-gen/download/@volar/code-gen-0.28.10.tgz}
+    name: '@volar/code-gen'
+    version: 0.28.10
+    dependencies:
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      '@volar/source-map': rg.cnpmjs.org/@volar/source-map/0.28.10
+    dev: true
+
+  rg.cnpmjs.org/@volar/html2pug/0.28.10:
+    resolution: {integrity: sha1-c72G91jVe7GipK7Es70F6RUzqig=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@volar/html2pug/download/@volar/html2pug-0.28.10.tgz}
+    name: '@volar/html2pug'
+    version: 0.28.10
+    dependencies:
+      domelementtype: rg.cnpmjs.org/domelementtype/2.2.0
+      domhandler: rg.cnpmjs.org/domhandler/4.3.0
+      htmlparser2: rg.cnpmjs.org/htmlparser2/7.2.0
+      pug: rg.cnpmjs.org/pug/3.0.2
+    dev: true
+
+  rg.cnpmjs.org/@volar/shared/0.28.10:
+    resolution: {integrity: sha1-SrIiQSfD8XCqva9SeyINnJvViHo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@volar/shared/download/@volar/shared-0.28.10.tgz}
+    name: '@volar/shared'
+    version: 0.28.10
+    dependencies:
+      upath: rg.cnpmjs.org/upath/2.0.1
+      vscode-jsonrpc: rg.cnpmjs.org/vscode-jsonrpc/8.0.0-next.4
+      vscode-uri: rg.cnpmjs.org/vscode-uri/3.0.2
+    dev: true
+
+  rg.cnpmjs.org/@volar/source-map/0.28.10:
+    resolution: {integrity: sha1-rL7pUQQvTuisWjNipZdIDQe567o=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@volar/source-map/download/@volar/source-map-0.28.10.tgz}
+    name: '@volar/source-map'
+    version: 0.28.10
+    dependencies:
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+    dev: true
+
+  rg.cnpmjs.org/@volar/transforms/0.28.10:
+    resolution: {integrity: sha1-e+dAwEmBkF8voqh/3d/UskNtFCE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@volar/transforms/download/@volar/transforms-0.28.10.tgz}
+    name: '@volar/transforms'
+    version: 0.28.10
+    dependencies:
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      vscode-languageserver: rg.cnpmjs.org/vscode-languageserver/8.0.0-next.5
+    dev: true
+
+  rg.cnpmjs.org/@vscode/emmet-helper/2.8.2:
+    resolution: {integrity: sha1-myzk/dYs8/2kXPivZ8ASz85V7ck=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vscode/emmet-helper/download/@vscode/emmet-helper-2.8.2.tgz}
+    name: '@vscode/emmet-helper'
+    version: 2.8.2
+    dependencies:
+      emmet: rg.cnpmjs.org/emmet/2.3.4
+      jsonc-parser: rg.cnpmjs.org/jsonc-parser/2.3.1
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+      vscode-languageserver-types: rg.cnpmjs.org/vscode-languageserver-types/3.16.0
+      vscode-nls: rg.cnpmjs.org/vscode-nls/5.0.0
+      vscode-uri: rg.cnpmjs.org/vscode-uri/2.1.2
+    dev: true
+
+  rg.cnpmjs.org/@vue/babel-helper-vue-transform-on/1.0.2:
+    resolution: {integrity: sha1-m5xpHNBvyFUiGiR1w8yDHXdLx9w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.2.tgz}
+    name: '@vue/babel-helper-vue-transform-on'
+    version: 1.0.2
+    dev: true
+
+  rg.cnpmjs.org/@vue/babel-plugin-jsx/1.1.1_@babel+core@7.16.0:
+    resolution: {integrity: sha1-DFusJ4gNI/iYlM0Daje1XvYd38E=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/babel-plugin-jsx/download/@vue/babel-plugin-jsx-1.1.1.tgz}
+    id: rg.cnpmjs.org/@vue/babel-plugin-jsx/1.1.1
+    name: '@vue/babel-plugin-jsx'
+    version: 1.1.1
+    dependencies:
+      '@babel/helper-module-imports': rg.cnpmjs.org/@babel/helper-module-imports/7.16.0
+      '@babel/plugin-syntax-jsx': rg.cnpmjs.org/@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.0
+      '@babel/template': rg.cnpmjs.org/@babel/template/7.16.0
+      '@babel/traverse': rg.cnpmjs.org/@babel/traverse/7.16.3
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+      '@vue/babel-helper-vue-transform-on': rg.cnpmjs.org/@vue/babel-helper-vue-transform-on/1.0.2
+      camelcase: rg.cnpmjs.org/camelcase/6.2.1
+      html-tags: rg.cnpmjs.org/html-tags/3.1.0
+      svg-tags: rg.cnpmjs.org/svg-tags/1.0.0
+    transitivePeerDependencies:
+      - '@babel/core'
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/@vue/compiler-core/3.2.24:
+    resolution: {integrity: sha512-A0SxB2HAggKzP57LDin5gfgWOTwFyGCtQ5MTMNBADnfQYALWnYuC8kMI0DhRSplGTWRvn9Z2DAnG8f35BnojuA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/compiler-core/download/@vue/compiler-core-3.2.24.tgz}
+    name: '@vue/compiler-core'
+    version: 3.2.24
+    dependencies:
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      estree-walker: rg.cnpmjs.org/estree-walker/2.0.2
+      source-map: rg.cnpmjs.org/source-map/0.6.1
+
+  rg.cnpmjs.org/@vue/compiler-dom/3.2.24:
+    resolution: {integrity: sha512-KQEm8r0JFsrNNIfbD28pcwMvHpcJcwjVR1XWFcD0yyQ8eREd7IXhT7J6j7iNCSE/TIo78NOvkwbyX+lnIm836w==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/compiler-dom/download/@vue/compiler-dom-3.2.24.tgz}
+    name: '@vue/compiler-dom'
+    version: 3.2.24
+    dependencies:
+      '@vue/compiler-core': rg.cnpmjs.org/@vue/compiler-core/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+
+  rg.cnpmjs.org/@vue/compiler-sfc/3.2.24:
+    resolution: {integrity: sha512-YGPcIvVJp2qTPkuT6kT43Eo1xjstyY4bmuiSV31my4bQMBFVR26ANmifUSt759Blok71gK0WzfIZHbcOKYOeKA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/compiler-sfc/download/@vue/compiler-sfc-3.2.24.tgz}
+    name: '@vue/compiler-sfc'
+    version: 3.2.24
+    dependencies:
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@vue/compiler-core': rg.cnpmjs.org/@vue/compiler-core/3.2.24
+      '@vue/compiler-dom': rg.cnpmjs.org/@vue/compiler-dom/3.2.24
+      '@vue/compiler-ssr': rg.cnpmjs.org/@vue/compiler-ssr/3.2.24
+      '@vue/ref-transform': rg.cnpmjs.org/@vue/ref-transform/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      estree-walker: rg.cnpmjs.org/estree-walker/2.0.2
+      magic-string: rg.cnpmjs.org/magic-string/0.25.7
+      postcss: rg.cnpmjs.org/postcss/8.4.4
+      source-map: rg.cnpmjs.org/source-map/0.6.1
+
+  rg.cnpmjs.org/@vue/compiler-ssr/3.2.24:
+    resolution: {integrity: sha512-E1HHShNsGVWXxs68LDOUuI+Bzak9W/Ier/366aKDBFuwvfwgruwq6abhMfj6pSDZpwZ/PXnfliyl/m7qBSq6gw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/compiler-ssr/download/@vue/compiler-ssr-3.2.24.tgz}
+    name: '@vue/compiler-ssr'
+    version: 3.2.24
+    dependencies:
+      '@vue/compiler-dom': rg.cnpmjs.org/@vue/compiler-dom/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+
+  rg.cnpmjs.org/@vue/devtools-api/6.0.0-beta.20.1:
+    resolution: {integrity: sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.20.1.tgz}
+    name: '@vue/devtools-api'
+    version: 6.0.0-beta.20.1
+    dev: false
+
+  rg.cnpmjs.org/@vue/reactivity/3.2.24:
+    resolution: {integrity: sha512-5eVsO9wfQ5erCMSRBjpqLkkI+LglJS7E0oLZJs2gsChpvOjH2Uwt3Hk1nVv0ywStnWg71Ykn3SyQwtnl7PknOQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/reactivity/download/@vue/reactivity-3.2.24.tgz}
+    name: '@vue/reactivity'
+    version: 3.2.24
+    dependencies:
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+
+  rg.cnpmjs.org/@vue/ref-transform/3.2.24:
+    resolution: {integrity: sha512-j6oNbsGLvea2rF8GQB9w6q7UFL1So7J+t6ducaMeWPSyjYZ+slWpwPVK6mmyghg5oGqC41R+HC5BV036Y0KhXQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/ref-transform/download/@vue/ref-transform-3.2.24.tgz}
+    name: '@vue/ref-transform'
+    version: 3.2.24
+    dependencies:
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@vue/compiler-core': rg.cnpmjs.org/@vue/compiler-core/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      estree-walker: rg.cnpmjs.org/estree-walker/2.0.2
+      magic-string: rg.cnpmjs.org/magic-string/0.25.7
+
+  rg.cnpmjs.org/@vue/runtime-core/3.2.24:
+    resolution: {integrity: sha512-ReI06vGgYuW0G8FlOcAOzMklVDJSxKuRhYzT8j+a8BTfs1945kxo1Th28BPvasyYx8J+LMeZ0HqpPH9yGXvWvg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/runtime-core/download/@vue/runtime-core-3.2.24.tgz}
+    name: '@vue/runtime-core'
+    version: 3.2.24
+    dependencies:
+      '@vue/reactivity': rg.cnpmjs.org/@vue/reactivity/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/@vue/runtime-dom/3.2.24:
+    resolution: {integrity: sha512-piqsabtIEUKkMGSJlOyKUonZEDtdwOpR6teQ8EKbH8PX9sxfAt9snLnFJldUhhyYrLIyDtnjwajfJ7/XtpD4JA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/runtime-dom/download/@vue/runtime-dom-3.2.24.tgz}
+    name: '@vue/runtime-dom'
+    version: 3.2.24
+    dependencies:
+      '@vue/runtime-core': rg.cnpmjs.org/@vue/runtime-core/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      csstype: rg.cnpmjs.org/csstype/2.6.19
+    dev: false
+
+  rg.cnpmjs.org/@vue/server-renderer/3.2.24_vue@3.2.24:
+    resolution: {integrity: sha512-DqiCRDxTbv67Hw5ImiqnLIQbPGtIwWLLfEcVHoEnu1f21EMTB6LfoS69EQddd8VyfN5kfX3Fmz27/hrFPpRaMQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/server-renderer/download/@vue/server-renderer-3.2.24.tgz}
+    id: rg.cnpmjs.org/@vue/server-renderer/3.2.24
+    name: '@vue/server-renderer'
+    version: 3.2.24
+    peerDependencies:
+      vue: 3.2.24
+    dependencies:
+      '@vue/compiler-ssr': rg.cnpmjs.org/@vue/compiler-ssr/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/@vue/shared/3.2.24:
+    resolution: {integrity: sha512-BUgRiZCkCrqDps5aQ9av05xcge3rn092ztKIh17tHkeEFgP4zfXMQWBA2zfdoCdCEdBL26xtOv+FZYiOp9RUDA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/@vue/shared/download/@vue/shared-3.2.24.tgz}
+    name: '@vue/shared'
+    version: 3.2.24
+
+  rg.cnpmjs.org/acorn/7.4.1:
+    resolution: {integrity: sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/acorn/download/acorn-7.4.1.tgz}
+    name: acorn
+    version: 7.4.1
+    engines: {node: '>=0.4.0'}
+    hasBin: true
+    dev: true
+
+  rg.cnpmjs.org/ansi-regex/5.0.1:
+    resolution: {integrity: sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ansi-regex/download/ansi-regex-5.0.1.tgz}
+    name: ansi-regex
+    version: 5.0.1
+    engines: {node: '>=8'}
+    dev: false
+
+  rg.cnpmjs.org/ansi-styles/3.2.1:
+    resolution: {integrity: sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ansi-styles/download/ansi-styles-3.2.1.tgz}
+    name: ansi-styles
+    version: 3.2.1
+    engines: {node: '>=4'}
+    dependencies:
+      color-convert: rg.cnpmjs.org/color-convert/1.9.3
+    dev: true
+
+  rg.cnpmjs.org/ansi-styles/4.3.0:
+    resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ansi-styles/download/ansi-styles-4.3.0.tgz}
+    name: ansi-styles
+    version: 4.3.0
+    engines: {node: '>=8'}
+    dependencies:
+      color-convert: rg.cnpmjs.org/color-convert/2.0.1
+
+  rg.cnpmjs.org/ansi-styles/5.2.0:
+    resolution: {integrity: sha1-B0SWkK1Fd30ZJKwquy/IiV26g2s=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ansi-styles/download/ansi-styles-5.2.0.tgz}
+    name: ansi-styles
+    version: 5.2.0
+    engines: {node: '>=10'}
+    dev: false
+
+  rg.cnpmjs.org/anymatch/3.1.2:
+    resolution: {integrity: sha1-wFV8CWrzLxBhmPT04qODU343hxY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/anymatch/download/anymatch-3.1.2.tgz}
+    name: anymatch
+    version: 3.1.2
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: rg.cnpmjs.org/normalize-path/3.0.0
+      picomatch: rg.cnpmjs.org/picomatch/2.3.0
+    dev: true
+
+  rg.cnpmjs.org/asap/2.0.6:
+    resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/asap/download/asap-2.0.6.tgz}
+    name: asap
+    version: 2.0.6
+    dev: true
+
+  rg.cnpmjs.org/assert-never/1.2.1:
+    resolution: {integrity: sha1-EfDjY78UYgX7CBk7XHuQ9NHPRP4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/assert-never/download/assert-never-1.2.1.tgz}
+    name: assert-never
+    version: 1.2.1
+    dev: true
+
+  rg.cnpmjs.org/async-validator/4.0.7:
+    resolution: {integrity: sha1-A0oP0hA6ay6/AQ2nUYO+wpkkev4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/async-validator/download/async-validator-4.0.7.tgz}
+    name: async-validator
+    version: 4.0.7
+    dev: false
+
+  rg.cnpmjs.org/axios/0.23.0:
+    resolution: {integrity: sha1-sPpdCUio0ddePVY1I4tsRiWwUUk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/axios/download/axios-0.23.0.tgz}
+    name: axios
+    version: 0.23.0
+    dependencies:
+      follow-redirects: rg.cnpmjs.org/follow-redirects/1.14.5
+    transitivePeerDependencies:
+      - debug
+    dev: false
+
+  rg.cnpmjs.org/babel-plugin-import/1.13.3:
+    resolution: {integrity: sha1-nbu6fRrHK9QSkXqDDUReAJQdJtc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/babel-plugin-import/download/babel-plugin-import-1.13.3.tgz}
+    name: babel-plugin-import
+    version: 1.13.3
+    dependencies:
+      '@babel/helper-module-imports': rg.cnpmjs.org/@babel/helper-module-imports/7.16.0
+      '@babel/runtime': rg.cnpmjs.org/@babel/runtime/7.16.3
+    dev: true
+
+  rg.cnpmjs.org/babel-walk/3.0.0-canary-5:
+    resolution: {integrity: sha1-9m7Ncpg1eu5ElV8jWm71QhkQSxE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/babel-walk/download/babel-walk-3.0.0-canary-5.tgz}
+    name: babel-walk
+    version: 3.0.0-canary-5
+    engines: {node: '>= 10.0.0'}
+    dependencies:
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/binary-extensions/2.2.0:
+    resolution: {integrity: sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/binary-extensions/download/binary-extensions-2.2.0.tgz}
+    name: binary-extensions
+    version: 2.2.0
+    engines: {node: '>=8'}
+    dev: true
+
+  rg.cnpmjs.org/braces/3.0.2:
+    resolution: {integrity: sha1-NFThpGLujVmeI23zNs2epPiv4Qc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/braces/download/braces-3.0.2.tgz}
+    name: braces
+    version: 3.0.2
+    engines: {node: '>=8'}
+    dependencies:
+      fill-range: rg.cnpmjs.org/fill-range/7.0.1
+    dev: true
+
+  rg.cnpmjs.org/browserslist/4.18.1:
+    resolution: {integrity: sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/browserslist/download/browserslist-4.18.1.tgz}
+    name: browserslist
+    version: 4.18.1
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+    dependencies:
+      caniuse-lite: rg.cnpmjs.org/caniuse-lite/1.0.30001285
+      electron-to-chromium: rg.cnpmjs.org/electron-to-chromium/1.4.13
+      escalade: rg.cnpmjs.org/escalade/3.1.1
+      node-releases: rg.cnpmjs.org/node-releases/2.0.1
+      picocolors: rg.cnpmjs.org/picocolors/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/builtin-modules/3.2.0:
+    resolution: {integrity: sha1-RdXbmefuXmvE82LgCL+RerUEmIc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/builtin-modules/download/builtin-modules-3.2.0.tgz}
+    name: builtin-modules
+    version: 3.2.0
+    engines: {node: '>=6'}
+    dev: true
+
+  rg.cnpmjs.org/call-bind/1.0.2:
+    resolution: {integrity: sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/call-bind/download/call-bind-1.0.2.tgz}
+    name: call-bind
+    version: 1.0.2
+    dependencies:
+      function-bind: rg.cnpmjs.org/function-bind/1.1.1
+      get-intrinsic: rg.cnpmjs.org/get-intrinsic/1.1.1
+    dev: true
+
+  rg.cnpmjs.org/camel-case/4.1.2:
+    resolution: {integrity: sha1-lygHKpVPgFIoIlpt7qazhGHhvVo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/camel-case/download/camel-case-4.1.2.tgz}
+    name: camel-case
+    version: 4.1.2
+    dependencies:
+      pascal-case: rg.cnpmjs.org/pascal-case/3.1.2
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/camelcase/6.2.1:
+    resolution: {integrity: sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/camelcase/download/camelcase-6.2.1.tgz}
+    name: camelcase
+    version: 6.2.1
+    engines: {node: '>=10'}
+    dev: true
+
+  rg.cnpmjs.org/caniuse-lite/1.0.30001285:
+    resolution: {integrity: sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/caniuse-lite/download/caniuse-lite-1.0.30001285.tgz}
+    name: caniuse-lite
+    version: 1.0.30001285
+    dev: true
+
+  rg.cnpmjs.org/capital-case/1.0.4:
+    resolution: {integrity: sha1-nRMCkjU8kkn2sA+lhSvuOKcX5mk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/capital-case/download/capital-case-1.0.4.tgz}
+    name: capital-case
+    version: 1.0.4
+    dependencies:
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+      upper-case-first: rg.cnpmjs.org/upper-case-first/2.0.2
+    dev: true
+
+  rg.cnpmjs.org/chalk/2.4.2:
+    resolution: {integrity: sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/chalk/download/chalk-2.4.2.tgz}
+    name: chalk
+    version: 2.4.2
+    engines: {node: '>=4'}
+    dependencies:
+      ansi-styles: rg.cnpmjs.org/ansi-styles/3.2.1
+      escape-string-regexp: rg.cnpmjs.org/escape-string-regexp/1.0.5
+      supports-color: rg.cnpmjs.org/supports-color/5.5.0
+    dev: true
+
+  rg.cnpmjs.org/chalk/4.1.2:
+    resolution: {integrity: sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/chalk/download/chalk-4.1.2.tgz}
+    name: chalk
+    version: 4.1.2
+    engines: {node: '>=10'}
+    dependencies:
+      ansi-styles: rg.cnpmjs.org/ansi-styles/4.3.0
+      supports-color: rg.cnpmjs.org/supports-color/7.2.0
+
+  rg.cnpmjs.org/change-case/4.1.2:
+    resolution: {integrity: sha1-/t/F8TYEXiOYwEEO5EH5VwRkHhI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/change-case/download/change-case-4.1.2.tgz}
+    name: change-case
+    version: 4.1.2
+    dependencies:
+      camel-case: rg.cnpmjs.org/camel-case/4.1.2
+      capital-case: rg.cnpmjs.org/capital-case/1.0.4
+      constant-case: rg.cnpmjs.org/constant-case/3.0.4
+      dot-case: rg.cnpmjs.org/dot-case/3.0.4
+      header-case: rg.cnpmjs.org/header-case/2.0.4
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      param-case: rg.cnpmjs.org/param-case/3.0.4
+      pascal-case: rg.cnpmjs.org/pascal-case/3.1.2
+      path-case: rg.cnpmjs.org/path-case/3.0.4
+      sentence-case: rg.cnpmjs.org/sentence-case/3.0.4
+      snake-case: rg.cnpmjs.org/snake-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/character-parser/2.2.0:
+    resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/character-parser/download/character-parser-2.2.0.tgz}
+    name: character-parser
+    version: 2.2.0
+    dependencies:
+      is-regex: rg.cnpmjs.org/is-regex/1.1.4
+    dev: true
+
+  rg.cnpmjs.org/chokidar/3.5.2:
+    resolution: {integrity: sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/chokidar/download/chokidar-3.5.2.tgz}
+    name: chokidar
+    version: 3.5.2
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: rg.cnpmjs.org/anymatch/3.1.2
+      braces: rg.cnpmjs.org/braces/3.0.2
+      glob-parent: rg.cnpmjs.org/glob-parent/5.1.2
+      is-binary-path: rg.cnpmjs.org/is-binary-path/2.1.0
+      is-glob: rg.cnpmjs.org/is-glob/4.0.3
+      normalize-path: rg.cnpmjs.org/normalize-path/3.0.0
+      readdirp: rg.cnpmjs.org/readdirp/3.6.0
+    optionalDependencies:
+      fsevents: rg.cnpmjs.org/fsevents/2.3.2
+    dev: true
+
+  rg.cnpmjs.org/color-convert/1.9.3:
+    resolution: {integrity: sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/color-convert/download/color-convert-1.9.3.tgz}
+    name: color-convert
+    version: 1.9.3
+    dependencies:
+      color-name: rg.cnpmjs.org/color-name/1.1.3
+    dev: true
+
+  rg.cnpmjs.org/color-convert/2.0.1:
+    resolution: {integrity: sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/color-convert/download/color-convert-2.0.1.tgz}
+    name: color-convert
+    version: 2.0.1
+    engines: {node: '>=7.0.0'}
+    dependencies:
+      color-name: rg.cnpmjs.org/color-name/1.1.4
+
+  rg.cnpmjs.org/color-name/1.1.3:
+    resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/color-name/download/color-name-1.1.3.tgz}
+    name: color-name
+    version: 1.1.3
+    dev: true
+
+  rg.cnpmjs.org/color-name/1.1.4:
+    resolution: {integrity: sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/color-name/download/color-name-1.1.4.tgz}
+    name: color-name
+    version: 1.1.4
+
+  rg.cnpmjs.org/commander/8.3.0:
+    resolution: {integrity: sha1-SDfqGy2me5xhamevuw+v7lZ7ymY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/commander/download/commander-8.3.0.tgz}
+    name: commander
+    version: 8.3.0
+    engines: {node: '>= 12'}
+    dev: false
+
+  rg.cnpmjs.org/connect/3.7.0:
+    resolution: {integrity: sha1-XUk0iRDKpeB6AYALAw0MNfIEhPg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/connect/download/connect-3.7.0.tgz}
+    name: connect
+    version: 3.7.0
+    engines: {node: '>= 0.10.0'}
+    dependencies:
+      debug: rg.cnpmjs.org/debug/2.6.9
+      finalhandler: rg.cnpmjs.org/finalhandler/1.1.2
+      parseurl: rg.cnpmjs.org/parseurl/1.3.3
+      utils-merge: rg.cnpmjs.org/utils-merge/1.0.1
+    dev: true
+
+  rg.cnpmjs.org/constant-case/3.0.4:
+    resolution: {integrity: sha1-O4Sprq9M8x7EXmv13pG9+wWJ+vE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/constant-case/download/constant-case-3.0.4.tgz}
+    name: constant-case
+    version: 3.0.4
+    dependencies:
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+      upper-case: rg.cnpmjs.org/upper-case/2.0.2
+    dev: true
+
+  rg.cnpmjs.org/constantinople/4.0.1:
+    resolution: {integrity: sha1-De8RP6Dk3I3oMzGlz3nIsyUhMVE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/constantinople/download/constantinople-4.0.1.tgz}
+    name: constantinople
+    version: 4.0.1
+    dependencies:
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+    dev: true
+
+  rg.cnpmjs.org/convert-source-map/1.8.0:
+    resolution: {integrity: sha1-8zc8MtIbTXgN2ABFFGhPt5HKQ2k=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/convert-source-map/download/convert-source-map-1.8.0.tgz}
+    name: convert-source-map
+    version: 1.8.0
+    dependencies:
+      safe-buffer: rg.cnpmjs.org/safe-buffer/5.1.2
+    dev: true
+
+  rg.cnpmjs.org/css-render/0.15.6:
+    resolution: {integrity: sha1-k7d4/8OBIPjNThNZQfDXbuTBt4M=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/css-render/download/css-render-0.15.6.tgz}
+    name: css-render
+    version: 0.15.6
+    dependencies:
+      '@emotion/hash': rg.cnpmjs.org/@emotion/hash/0.8.0
+      '@types/node': rg.cnpmjs.org/@types/node/14.14.45
+      csstype: rg.cnpmjs.org/csstype/3.0.10
+    dev: false
+
+  rg.cnpmjs.org/csstype/2.6.19:
+    resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/csstype/download/csstype-2.6.19.tgz}
+    name: csstype
+    version: 2.6.19
+    dev: false
+
+  rg.cnpmjs.org/csstype/3.0.10:
+    resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/csstype/download/csstype-3.0.10.tgz}
+    name: csstype
+    version: 3.0.10
+    dev: false
+
+  rg.cnpmjs.org/date-fns-tz/1.1.6_date-fns@2.27.0:
+    resolution: {integrity: sha1-k8vzVOKuss0xL/oy5GLBlDzyCo4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/date-fns-tz/download/date-fns-tz-1.1.6.tgz}
+    id: rg.cnpmjs.org/date-fns-tz/1.1.6
+    name: date-fns-tz
+    version: 1.1.6
+    peerDependencies:
+      date-fns: '>=2.0.0-alpha.13'
+    dependencies:
+      date-fns: rg.cnpmjs.org/date-fns/2.27.0
+    dev: false
+
+  rg.cnpmjs.org/date-fns/2.27.0:
+    resolution: {integrity: sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/date-fns/download/date-fns-2.27.0.tgz}
+    name: date-fns
+    version: 2.27.0
+    engines: {node: '>=0.11'}
+    dev: false
+
+  rg.cnpmjs.org/debug/2.6.9:
+    resolution: {integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/debug/download/debug-2.6.9.tgz}
+    name: debug
+    version: 2.6.9
+    dependencies:
+      ms: rg.cnpmjs.org/ms/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/debug/4.3.3:
+    resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/debug/download/debug-4.3.3.tgz}
+    name: debug
+    version: 4.3.3
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: rg.cnpmjs.org/ms/2.1.2
+    dev: true
+
+  rg.cnpmjs.org/deepmerge/4.2.2:
+    resolution: {integrity: sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/deepmerge/download/deepmerge-4.2.2.tgz}
+    name: deepmerge
+    version: 4.2.2
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/default-passive-events/2.0.0:
+    resolution: {integrity: sha1-ebGqZ77LqrOLcYRptUgP75Ltpkk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/default-passive-events/download/default-passive-events-2.0.0.tgz}
+    name: default-passive-events
+    version: 2.0.0
+    dev: true
+
+  rg.cnpmjs.org/diff-sequences/27.4.0:
+    resolution: {integrity: sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/diff-sequences/download/diff-sequences-27.4.0.tgz}
+    name: diff-sequences
+    version: 27.4.0
+    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+    dev: false
+
+  rg.cnpmjs.org/doctypes/1.1.0:
+    resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/doctypes/download/doctypes-1.1.0.tgz}
+    name: doctypes
+    version: 1.1.0
+    dev: true
+
+  rg.cnpmjs.org/dom-serializer/1.3.2:
+    resolution: {integrity: sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/dom-serializer/download/dom-serializer-1.3.2.tgz}
+    name: dom-serializer
+    version: 1.3.2
+    dependencies:
+      domelementtype: rg.cnpmjs.org/domelementtype/2.2.0
+      domhandler: rg.cnpmjs.org/domhandler/4.3.0
+      entities: rg.cnpmjs.org/entities/2.2.0
+    dev: true
+
+  rg.cnpmjs.org/domelementtype/2.2.0:
+    resolution: {integrity: sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/domelementtype/download/domelementtype-2.2.0.tgz}
+    name: domelementtype
+    version: 2.2.0
+    dev: true
+
+  rg.cnpmjs.org/domhandler/4.3.0:
+    resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/domhandler/download/domhandler-4.3.0.tgz}
+    name: domhandler
+    version: 4.3.0
+    engines: {node: '>= 4'}
+    dependencies:
+      domelementtype: rg.cnpmjs.org/domelementtype/2.2.0
+    dev: true
+
+  rg.cnpmjs.org/domutils/2.8.0:
+    resolution: {integrity: sha1-RDfe9dtuLR9dbuhZvZXKfQIEgTU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/domutils/download/domutils-2.8.0.tgz}
+    name: domutils
+    version: 2.8.0
+    dependencies:
+      dom-serializer: rg.cnpmjs.org/dom-serializer/1.3.2
+      domelementtype: rg.cnpmjs.org/domelementtype/2.2.0
+      domhandler: rg.cnpmjs.org/domhandler/4.3.0
+    dev: true
+
+  rg.cnpmjs.org/dot-case/3.0.4:
+    resolution: {integrity: sha1-mytnDQCkMWZ6inW6Kc0bmICc51E=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/dot-case/download/dot-case-3.0.4.tgz}
+    name: dot-case
+    version: 3.0.4
+    dependencies:
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/ee-first/1.1.1:
+    resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ee-first/download/ee-first-1.1.1.tgz}
+    name: ee-first
+    version: 1.1.1
+    dev: true
+
+  rg.cnpmjs.org/electron-to-chromium/1.4.13:
+    resolution: {integrity: sha512-ih5tIhzEuf78pBY70FXLo+Pw73R5MPPPcXb4CGBMJaCQt/qo/IGIesKXmswpemVCKSE2Bulr5FslUv7gAWJoOw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/electron-to-chromium/download/electron-to-chromium-1.4.13.tgz}
+    name: electron-to-chromium
+    version: 1.4.13
+    dev: true
+
+  rg.cnpmjs.org/emmet/2.3.4:
+    resolution: {integrity: sha1-W6DXpVaaaMdpffqJDHcuTzF50SM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/emmet/download/emmet-2.3.4.tgz}
+    name: emmet
+    version: 2.3.4
+    dependencies:
+      '@emmetio/abbreviation': rg.cnpmjs.org/@emmetio/abbreviation/2.2.2
+      '@emmetio/css-abbreviation': rg.cnpmjs.org/@emmetio/css-abbreviation/2.1.4
+    dev: true
+
+  rg.cnpmjs.org/encodeurl/1.0.2:
+    resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/encodeurl/download/encodeurl-1.0.2.tgz}
+    name: encodeurl
+    version: 1.0.2
+    engines: {node: '>= 0.8'}
+    dev: true
+
+  rg.cnpmjs.org/entities/2.2.0:
+    resolution: {integrity: sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/entities/download/entities-2.2.0.tgz}
+    name: entities
+    version: 2.2.0
+    dev: true
+
+  rg.cnpmjs.org/entities/3.0.1:
+    resolution: {integrity: sha1-K4h8piWF6W2zkDSC0zbBAGwwAdQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/entities/download/entities-3.0.1.tgz}
+    name: entities
+    version: 3.0.1
+    engines: {node: '>=0.12'}
+    dev: true
+
+  rg.cnpmjs.org/es-module-lexer/0.9.3:
+    resolution: {integrity: sha1-bxPbAMw4QXE32vdDZvU1yOtDjxk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/es-module-lexer/download/es-module-lexer-0.9.3.tgz}
+    name: es-module-lexer
+    version: 0.9.3
+    dev: true
+
+  rg.cnpmjs.org/esbuild-android-arm64/0.13.15:
+    resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-android-arm64/download/esbuild-android-arm64-0.13.15.tgz}
+    name: esbuild-android-arm64
+    version: 0.13.15
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-darwin-64/0.13.15:
+    resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-darwin-64/download/esbuild-darwin-64-0.13.15.tgz}
+    name: esbuild-darwin-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-darwin-arm64/0.13.15:
+    resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-darwin-arm64/download/esbuild-darwin-arm64-0.13.15.tgz}
+    name: esbuild-darwin-arm64
+    version: 0.13.15
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-freebsd-64/0.13.15:
+    resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-freebsd-64/download/esbuild-freebsd-64-0.13.15.tgz}
+    name: esbuild-freebsd-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-freebsd-arm64/0.13.15:
+    resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-freebsd-arm64/download/esbuild-freebsd-arm64-0.13.15.tgz}
+    name: esbuild-freebsd-arm64
+    version: 0.13.15
+    cpu: [arm64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-32/0.13.15:
+    resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-32/download/esbuild-linux-32-0.13.15.tgz}
+    name: esbuild-linux-32
+    version: 0.13.15
+    cpu: [ia32]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-64/0.13.15:
+    resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-64/download/esbuild-linux-64-0.13.15.tgz}
+    name: esbuild-linux-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-arm/0.13.15:
+    resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-arm/download/esbuild-linux-arm-0.13.15.tgz}
+    name: esbuild-linux-arm
+    version: 0.13.15
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-arm64/0.13.15:
+    resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-arm64/download/esbuild-linux-arm64-0.13.15.tgz}
+    name: esbuild-linux-arm64
+    version: 0.13.15
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-mips64le/0.13.15:
+    resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-mips64le/download/esbuild-linux-mips64le-0.13.15.tgz}
+    name: esbuild-linux-mips64le
+    version: 0.13.15
+    cpu: [mips64el]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-linux-ppc64le/0.13.15:
+    resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-linux-ppc64le/download/esbuild-linux-ppc64le-0.13.15.tgz}
+    name: esbuild-linux-ppc64le
+    version: 0.13.15
+    cpu: [ppc64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-netbsd-64/0.13.15:
+    resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-netbsd-64/download/esbuild-netbsd-64-0.13.15.tgz}
+    name: esbuild-netbsd-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [netbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-openbsd-64/0.13.15:
+    resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-openbsd-64/download/esbuild-openbsd-64-0.13.15.tgz}
+    name: esbuild-openbsd-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [openbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-sunos-64/0.13.15:
+    resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-sunos-64/download/esbuild-sunos-64-0.13.15.tgz}
+    name: esbuild-sunos-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [sunos]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-windows-32/0.13.15:
+    resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-windows-32/download/esbuild-windows-32-0.13.15.tgz}
+    name: esbuild-windows-32
+    version: 0.13.15
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-windows-64/0.13.15:
+    resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-windows-64/download/esbuild-windows-64-0.13.15.tgz}
+    name: esbuild-windows-64
+    version: 0.13.15
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild-windows-arm64/0.13.15:
+    resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild-windows-arm64/download/esbuild-windows-arm64-0.13.15.tgz}
+    name: esbuild-windows-arm64
+    version: 0.13.15
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/esbuild/0.11.3:
+    resolution: {integrity: sha1-tXFluQe+T/umUfZFBTjOjYwdXrA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild/download/esbuild-0.11.3.tgz}
+    name: esbuild
+    version: 0.11.3
+    hasBin: true
+    requiresBuild: true
+    dev: true
+
+  rg.cnpmjs.org/esbuild/0.13.15:
+    resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/esbuild/download/esbuild-0.13.15.tgz}
+    name: esbuild
+    version: 0.13.15
+    hasBin: true
+    requiresBuild: true
+    optionalDependencies:
+      esbuild-android-arm64: rg.cnpmjs.org/esbuild-android-arm64/0.13.15
+      esbuild-darwin-64: rg.cnpmjs.org/esbuild-darwin-64/0.13.15
+      esbuild-darwin-arm64: rg.cnpmjs.org/esbuild-darwin-arm64/0.13.15
+      esbuild-freebsd-64: rg.cnpmjs.org/esbuild-freebsd-64/0.13.15
+      esbuild-freebsd-arm64: rg.cnpmjs.org/esbuild-freebsd-arm64/0.13.15
+      esbuild-linux-32: rg.cnpmjs.org/esbuild-linux-32/0.13.15
+      esbuild-linux-64: rg.cnpmjs.org/esbuild-linux-64/0.13.15
+      esbuild-linux-arm: rg.cnpmjs.org/esbuild-linux-arm/0.13.15
+      esbuild-linux-arm64: rg.cnpmjs.org/esbuild-linux-arm64/0.13.15
+      esbuild-linux-mips64le: rg.cnpmjs.org/esbuild-linux-mips64le/0.13.15
+      esbuild-linux-ppc64le: rg.cnpmjs.org/esbuild-linux-ppc64le/0.13.15
+      esbuild-netbsd-64: rg.cnpmjs.org/esbuild-netbsd-64/0.13.15
+      esbuild-openbsd-64: rg.cnpmjs.org/esbuild-openbsd-64/0.13.15
+      esbuild-sunos-64: rg.cnpmjs.org/esbuild-sunos-64/0.13.15
+      esbuild-windows-32: rg.cnpmjs.org/esbuild-windows-32/0.13.15
+      esbuild-windows-64: rg.cnpmjs.org/esbuild-windows-64/0.13.15
+      esbuild-windows-arm64: rg.cnpmjs.org/esbuild-windows-arm64/0.13.15
+    dev: true
+
+  rg.cnpmjs.org/escalade/3.1.1:
+    resolution: {integrity: sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/escalade/download/escalade-3.1.1.tgz}
+    name: escalade
+    version: 3.1.1
+    engines: {node: '>=6'}
+    dev: true
+
+  rg.cnpmjs.org/escape-html/1.0.3:
+    resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/escape-html/download/escape-html-1.0.3.tgz}
+    name: escape-html
+    version: 1.0.3
+    dev: true
+
+  rg.cnpmjs.org/escape-string-regexp/1.0.5:
+    resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz}
+    name: escape-string-regexp
+    version: 1.0.5
+    engines: {node: '>=0.8.0'}
+    dev: true
+
+  rg.cnpmjs.org/estree-walker/1.0.1:
+    resolution: {integrity: sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/estree-walker/download/estree-walker-1.0.1.tgz}
+    name: estree-walker
+    version: 1.0.1
+    dev: true
+
+  rg.cnpmjs.org/estree-walker/2.0.2:
+    resolution: {integrity: sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/estree-walker/download/estree-walker-2.0.2.tgz}
+    name: estree-walker
+    version: 2.0.2
+
+  rg.cnpmjs.org/evtd/0.2.3:
+    resolution: {integrity: sha512-tmiT1YUVqFjTY+BSBOAskL83xNx41iUfpvKP6Gcd/xMHjg3mnER98jXGXJyKnxCG19uPc6EhZiUC+MUyvoqCtw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/evtd/download/evtd-0.2.3.tgz}
+    name: evtd
+    version: 0.2.3
+    dev: false
+
+  rg.cnpmjs.org/fast-glob/3.2.7:
+    resolution: {integrity: sha1-/Wy3otfpqnp4RhEehaGW1rL3ZqE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/fast-glob/download/fast-glob-3.2.7.tgz}
+    name: fast-glob
+    version: 3.2.7
+    engines: {node: '>=8'}
+    dependencies:
+      '@nodelib/fs.stat': rg.cnpmjs.org/@nodelib/fs.stat/2.0.5
+      '@nodelib/fs.walk': rg.cnpmjs.org/@nodelib/fs.walk/1.2.8
+      glob-parent: rg.cnpmjs.org/glob-parent/5.1.2
+      merge2: rg.cnpmjs.org/merge2/1.4.1
+      micromatch: rg.cnpmjs.org/micromatch/4.0.4
+    dev: true
+
+  rg.cnpmjs.org/fastq/1.13.0:
+    resolution: {integrity: sha1-YWdg+Ip1Jr38WWt8q4wYk4w2uYw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/fastq/download/fastq-1.13.0.tgz}
+    name: fastq
+    version: 1.13.0
+    dependencies:
+      reusify: rg.cnpmjs.org/reusify/1.0.4
+    dev: true
+
+  rg.cnpmjs.org/fill-range/7.0.1:
+    resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/fill-range/download/fill-range-7.0.1.tgz}
+    name: fill-range
+    version: 7.0.1
+    engines: {node: '>=8'}
+    dependencies:
+      to-regex-range: rg.cnpmjs.org/to-regex-range/5.0.1
+    dev: true
+
+  rg.cnpmjs.org/finalhandler/1.1.2:
+    resolution: {integrity: sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/finalhandler/download/finalhandler-1.1.2.tgz}
+    name: finalhandler
+    version: 1.1.2
+    engines: {node: '>= 0.8'}
+    dependencies:
+      debug: rg.cnpmjs.org/debug/2.6.9
+      encodeurl: rg.cnpmjs.org/encodeurl/1.0.2
+      escape-html: rg.cnpmjs.org/escape-html/1.0.3
+      on-finished: rg.cnpmjs.org/on-finished/2.3.0
+      parseurl: rg.cnpmjs.org/parseurl/1.3.3
+      statuses: rg.cnpmjs.org/statuses/1.5.0
+      unpipe: rg.cnpmjs.org/unpipe/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/follow-redirects/1.14.5:
+    resolution: {integrity: sha1-8JpYSJgdPHcrU5Iwl3hSP42Fw4E=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/follow-redirects/download/follow-redirects-1.14.5.tgz}
+    name: follow-redirects
+    version: 1.14.5
+    engines: {node: '>=4.0'}
+    peerDependencies:
+      debug: '*'
+    peerDependenciesMeta:
+      debug:
+        optional: true
+    dev: false
+
+  rg.cnpmjs.org/fs-extra/10.0.0:
+    resolution: {integrity: sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/fs-extra/download/fs-extra-10.0.0.tgz}
+    name: fs-extra
+    version: 10.0.0
+    engines: {node: '>=12'}
+    dependencies:
+      graceful-fs: rg.cnpmjs.org/graceful-fs/4.2.8
+      jsonfile: rg.cnpmjs.org/jsonfile/6.1.0
+      universalify: rg.cnpmjs.org/universalify/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/fsevents/2.3.2:
+    resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/fsevents/download/fsevents-2.3.2.tgz}
+    name: fsevents
+    version: 2.3.2
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  rg.cnpmjs.org/function-bind/1.1.1:
+    resolution: {integrity: sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/function-bind/download/function-bind-1.1.1.tgz}
+    name: function-bind
+    version: 1.1.1
+    dev: true
+
+  rg.cnpmjs.org/gensync/1.0.0-beta.2:
+    resolution: {integrity: sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/gensync/download/gensync-1.0.0-beta.2.tgz}
+    name: gensync
+    version: 1.0.0-beta.2
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  rg.cnpmjs.org/get-intrinsic/1.1.1:
+    resolution: {integrity: sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz}
+    name: get-intrinsic
+    version: 1.1.1
+    dependencies:
+      function-bind: rg.cnpmjs.org/function-bind/1.1.1
+      has: rg.cnpmjs.org/has/1.0.3
+      has-symbols: rg.cnpmjs.org/has-symbols/1.0.2
+    dev: true
+
+  rg.cnpmjs.org/glob-parent/5.1.2:
+    resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/glob-parent/download/glob-parent-5.1.2.tgz}
+    name: glob-parent
+    version: 5.1.2
+    engines: {node: '>= 6'}
+    dependencies:
+      is-glob: rg.cnpmjs.org/is-glob/4.0.3
+    dev: true
+
+  rg.cnpmjs.org/globals/11.12.0:
+    resolution: {integrity: sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/globals/download/globals-11.12.0.tgz}
+    name: globals
+    version: 11.12.0
+    engines: {node: '>=4'}
+    dev: true
+
+  rg.cnpmjs.org/graceful-fs/4.2.8:
+    resolution: {integrity: sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/graceful-fs/download/graceful-fs-4.2.8.tgz}
+    name: graceful-fs
+    version: 4.2.8
+    dev: true
+
+  rg.cnpmjs.org/has-flag/3.0.0:
+    resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/has-flag/download/has-flag-3.0.0.tgz}
+    name: has-flag
+    version: 3.0.0
+    engines: {node: '>=4'}
+    dev: true
+
+  rg.cnpmjs.org/has-flag/4.0.0:
+    resolution: {integrity: sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/has-flag/download/has-flag-4.0.0.tgz}
+    name: has-flag
+    version: 4.0.0
+    engines: {node: '>=8'}
+
+  rg.cnpmjs.org/has-symbols/1.0.2:
+    resolution: {integrity: sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/has-symbols/download/has-symbols-1.0.2.tgz}
+    name: has-symbols
+    version: 1.0.2
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  rg.cnpmjs.org/has-tostringtag/1.0.0:
+    resolution: {integrity: sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/has-tostringtag/download/has-tostringtag-1.0.0.tgz}
+    name: has-tostringtag
+    version: 1.0.0
+    engines: {node: '>= 0.4'}
+    dependencies:
+      has-symbols: rg.cnpmjs.org/has-symbols/1.0.2
+    dev: true
+
+  rg.cnpmjs.org/has/1.0.3:
+    resolution: {integrity: sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/has/download/has-1.0.3.tgz}
+    name: has
+    version: 1.0.3
+    engines: {node: '>= 0.4.0'}
+    dependencies:
+      function-bind: rg.cnpmjs.org/function-bind/1.1.1
+    dev: true
+
+  rg.cnpmjs.org/hash-sum/2.0.0:
+    resolution: {integrity: sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/hash-sum/download/hash-sum-2.0.0.tgz}
+    name: hash-sum
+    version: 2.0.0
+    dev: true
+
+  rg.cnpmjs.org/header-case/2.0.4:
+    resolution: {integrity: sha1-WkLmO1UXc0nPQFvrjXdayruSwGM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/header-case/download/header-case-2.0.4.tgz}
+    name: header-case
+    version: 2.0.4
+    dependencies:
+      capital-case: rg.cnpmjs.org/capital-case/1.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/highlight.js/11.3.1:
+    resolution: {integrity: sha1-gTB47zqlGcYXAPhP6QRyMcXcMpE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/highlight.js/download/highlight.js-11.3.1.tgz}
+    name: highlight.js
+    version: 11.3.1
+    engines: {node: '>=12.0.0'}
+    dev: false
+
+  rg.cnpmjs.org/html-tags/3.1.0:
+    resolution: {integrity: sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/html-tags/download/html-tags-3.1.0.tgz}
+    name: html-tags
+    version: 3.1.0
+    engines: {node: '>=8'}
+    dev: true
+
+  rg.cnpmjs.org/htmlparser2/7.2.0:
+    resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/htmlparser2/download/htmlparser2-7.2.0.tgz}
+    name: htmlparser2
+    version: 7.2.0
+    dependencies:
+      domelementtype: rg.cnpmjs.org/domelementtype/2.2.0
+      domhandler: rg.cnpmjs.org/domhandler/4.3.0
+      domutils: rg.cnpmjs.org/domutils/2.8.0
+      entities: rg.cnpmjs.org/entities/3.0.1
+    dev: true
+
+  rg.cnpmjs.org/immutable/4.0.0:
+    resolution: {integrity: sha1-uG943mre82CDle+yaakUYnl+LCM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/immutable/download/immutable-4.0.0.tgz}
+    name: immutable
+    version: 4.0.0
+    dev: true
+
+  rg.cnpmjs.org/is-binary-path/2.1.0:
+    resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-binary-path/download/is-binary-path-2.1.0.tgz}
+    name: is-binary-path
+    version: 2.1.0
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: rg.cnpmjs.org/binary-extensions/2.2.0
+    dev: true
+
+  rg.cnpmjs.org/is-core-module/2.8.0:
+    resolution: {integrity: sha1-AyEzbD0JJeSX/Zf12VyxFKXM1Ug=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-core-module/download/is-core-module-2.8.0.tgz}
+    name: is-core-module
+    version: 2.8.0
+    dependencies:
+      has: rg.cnpmjs.org/has/1.0.3
+    dev: true
+
+  rg.cnpmjs.org/is-expression/4.0.0:
+    resolution: {integrity: sha1-wzFVliq/IdCv0lUlFNZ9LsFv0qs=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-expression/download/is-expression-4.0.0.tgz}
+    name: is-expression
+    version: 4.0.0
+    dependencies:
+      acorn: rg.cnpmjs.org/acorn/7.4.1
+      object-assign: rg.cnpmjs.org/object-assign/4.1.1
+    dev: true
+
+  rg.cnpmjs.org/is-extglob/2.1.1:
+    resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-extglob/download/is-extglob-2.1.1.tgz}
+    name: is-extglob
+    version: 2.1.1
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/is-glob/4.0.3:
+    resolution: {integrity: sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-glob/download/is-glob-4.0.3.tgz}
+    name: is-glob
+    version: 4.0.3
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: rg.cnpmjs.org/is-extglob/2.1.1
+    dev: true
+
+  rg.cnpmjs.org/is-module/1.0.0:
+    resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-module/download/is-module-1.0.0.tgz}
+    name: is-module
+    version: 1.0.0
+    dev: true
+
+  rg.cnpmjs.org/is-number/7.0.0:
+    resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-number/download/is-number-7.0.0.tgz}
+    name: is-number
+    version: 7.0.0
+    engines: {node: '>=0.12.0'}
+    dev: true
+
+  rg.cnpmjs.org/is-promise/2.2.2:
+    resolution: {integrity: sha1-OauVnMv5p3TPB597QMeib3YxNfE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-promise/download/is-promise-2.2.2.tgz}
+    name: is-promise
+    version: 2.2.2
+    dev: true
+
+  rg.cnpmjs.org/is-regex/1.1.4:
+    resolution: {integrity: sha1-7vVmPNWfpMCuM5UFMj32hUuxWVg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/is-regex/download/is-regex-1.1.4.tgz}
+    name: is-regex
+    version: 1.1.4
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: rg.cnpmjs.org/call-bind/1.0.2
+      has-tostringtag: rg.cnpmjs.org/has-tostringtag/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/jest-diff/27.4.2:
+    resolution: {integrity: sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jest-diff/download/jest-diff-27.4.2.tgz}
+    name: jest-diff
+    version: 27.4.2
+    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+    dependencies:
+      chalk: rg.cnpmjs.org/chalk/4.1.2
+      diff-sequences: rg.cnpmjs.org/diff-sequences/27.4.0
+      jest-get-type: rg.cnpmjs.org/jest-get-type/27.4.0
+      pretty-format: rg.cnpmjs.org/pretty-format/27.4.2
+    dev: false
+
+  rg.cnpmjs.org/jest-get-type/27.4.0:
+    resolution: {integrity: sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jest-get-type/download/jest-get-type-27.4.0.tgz}
+    name: jest-get-type
+    version: 27.4.0
+    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+    dev: false
+
+  rg.cnpmjs.org/js-stringify/1.0.2:
+    resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/js-stringify/download/js-stringify-1.0.2.tgz}
+    name: js-stringify
+    version: 1.0.2
+    dev: true
+
+  rg.cnpmjs.org/js-tokens/4.0.0:
+    resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/js-tokens/download/js-tokens-4.0.0.tgz}
+    name: js-tokens
+    version: 4.0.0
+    dev: true
+
+  rg.cnpmjs.org/jsesc/2.5.2:
+    resolution: {integrity: sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jsesc/download/jsesc-2.5.2.tgz}
+    name: jsesc
+    version: 2.5.2
+    engines: {node: '>=4'}
+    hasBin: true
+    dev: true
+
+  rg.cnpmjs.org/json5/2.2.0:
+    resolution: {integrity: sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/json5/download/json5-2.2.0.tgz}
+    name: json5
+    version: 2.2.0
+    engines: {node: '>=6'}
+    hasBin: true
+    dependencies:
+      minimist: rg.cnpmjs.org/minimist/1.2.5
+    dev: true
+
+  rg.cnpmjs.org/jsonc-parser/2.3.1:
+    resolution: {integrity: sha1-WVSRULEz8u+sykj+nOHsBlmvI0I=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jsonc-parser/download/jsonc-parser-2.3.1.tgz}
+    name: jsonc-parser
+    version: 2.3.1
+    dev: true
+
+  rg.cnpmjs.org/jsonc-parser/3.0.0:
+    resolution: {integrity: sha1-q914VwHH5+rKip7IzwcMpRp0WiI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jsonc-parser/download/jsonc-parser-3.0.0.tgz}
+    name: jsonc-parser
+    version: 3.0.0
+    dev: true
+
+  rg.cnpmjs.org/jsonfile/6.1.0:
+    resolution: {integrity: sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jsonfile/download/jsonfile-6.1.0.tgz}
+    name: jsonfile
+    version: 6.1.0
+    dependencies:
+      universalify: rg.cnpmjs.org/universalify/2.0.0
+    optionalDependencies:
+      graceful-fs: rg.cnpmjs.org/graceful-fs/4.2.8
+    dev: true
+
+  rg.cnpmjs.org/jstransformer/1.0.0:
+    resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/jstransformer/download/jstransformer-1.0.0.tgz}
+    name: jstransformer
+    version: 1.0.0
+    dependencies:
+      is-promise: rg.cnpmjs.org/is-promise/2.2.2
+      promise: rg.cnpmjs.org/promise/7.3.1
+    dev: true
+
+  rg.cnpmjs.org/klona/2.0.5:
+    resolution: {integrity: sha1-0WZXTZAHY5XZljqnqSj6u412r7w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/klona/download/klona-2.0.5.tgz}
+    name: klona
+    version: 2.0.5
+    engines: {node: '>= 8'}
+    dev: true
+
+  rg.cnpmjs.org/lodash-es/4.17.21:
+    resolution: {integrity: sha1-Q+YmxG5lkbd1C+srUBFzkMYJ4+4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/lodash-es/download/lodash-es-4.17.21.tgz}
+    name: lodash-es
+    version: 4.17.21
+    dev: false
+
+  rg.cnpmjs.org/lodash/4.17.21:
+    resolution: {integrity: sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/lodash/download/lodash-4.17.21.tgz}
+    name: lodash
+    version: 4.17.21
+    dev: false
+
+  rg.cnpmjs.org/lower-case/2.0.2:
+    resolution: {integrity: sha1-b6I3xj29xKgsoP2ILkci3F5jTig=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/lower-case/download/lower-case-2.0.2.tgz}
+    name: lower-case
+    version: 2.0.2
+    dependencies:
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/lru-cache/6.0.0:
+    resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/lru-cache/download/lru-cache-6.0.0.tgz}
+    name: lru-cache
+    version: 6.0.0
+    engines: {node: '>=10'}
+    dependencies:
+      yallist: rg.cnpmjs.org/yallist/4.0.0
+    dev: true
+
+  rg.cnpmjs.org/magic-string/0.25.7:
+    resolution: {integrity: sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/magic-string/download/magic-string-0.25.7.tgz}
+    name: magic-string
+    version: 0.25.7
+    dependencies:
+      sourcemap-codec: rg.cnpmjs.org/sourcemap-codec/1.4.8
+
+  rg.cnpmjs.org/merge2/1.4.1:
+    resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/merge2/download/merge2-1.4.1.tgz}
+    name: merge2
+    version: 1.4.1
+    engines: {node: '>= 8'}
+    dev: true
+
+  rg.cnpmjs.org/micromatch/4.0.4:
+    resolution: {integrity: sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/micromatch/download/micromatch-4.0.4.tgz}
+    name: micromatch
+    version: 4.0.4
+    engines: {node: '>=8.6'}
+    dependencies:
+      braces: rg.cnpmjs.org/braces/3.0.2
+      picomatch: rg.cnpmjs.org/picomatch/2.3.0
+    dev: true
+
+  rg.cnpmjs.org/minimist/1.2.5:
+    resolution: {integrity: sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/minimist/download/minimist-1.2.5.tgz}
+    name: minimist
+    version: 1.2.5
+    dev: true
+
+  rg.cnpmjs.org/mockjs/1.1.0:
+    resolution: {integrity: sha1-5qDDeOkZBtuv8gkRzAJzs8fXWwY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/mockjs/download/mockjs-1.1.0.tgz}
+    name: mockjs
+    version: 1.1.0
+    hasBin: true
+    dependencies:
+      commander: rg.cnpmjs.org/commander/8.3.0
+    dev: false
+
+  rg.cnpmjs.org/ms/2.0.0:
+    resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ms/download/ms-2.0.0.tgz}
+    name: ms
+    version: 2.0.0
+    dev: true
+
+  rg.cnpmjs.org/ms/2.1.2:
+    resolution: {integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/ms/download/ms-2.1.2.tgz}
+    name: ms
+    version: 2.1.2
+    dev: true
+
+  rg.cnpmjs.org/naive-ui/2.21.5_vue@3.2.24:
+    resolution: {integrity: sha512-/vgWS4DdV7Ck8LgqAZCAynnLC9AXP9na1G3Uou1OeHYOgy3w07AcffpZVsAQtgYYuU8fRd6ogAABoLX3wZmRFg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/naive-ui/download/naive-ui-2.21.5.tgz}
+    id: rg.cnpmjs.org/naive-ui/2.21.5
+    name: naive-ui
+    version: 2.21.5
+    peerDependencies:
+      vue: ^3.0.0
+    dependencies:
+      '@css-render/plugin-bem': rg.cnpmjs.org/@css-render/plugin-bem/0.15.6
+      '@css-render/vue3-ssr': rg.cnpmjs.org/@css-render/vue3-ssr/0.15.6_vue@3.2.24
+      '@types/lodash': rg.cnpmjs.org/@types/lodash/4.14.177
+      '@types/lodash-es': rg.cnpmjs.org/@types/lodash-es/4.17.5
+      async-validator: rg.cnpmjs.org/async-validator/4.0.7
+      css-render: rg.cnpmjs.org/css-render/0.15.6
+      date-fns: rg.cnpmjs.org/date-fns/2.27.0
+      date-fns-tz: rg.cnpmjs.org/date-fns-tz/1.1.6_date-fns@2.27.0
+      evtd: rg.cnpmjs.org/evtd/0.2.3
+      highlight.js: rg.cnpmjs.org/highlight.js/11.3.1
+      lodash: rg.cnpmjs.org/lodash/4.17.21
+      lodash-es: rg.cnpmjs.org/lodash-es/4.17.21
+      seemly: rg.cnpmjs.org/seemly/0.3.3
+      treemate: rg.cnpmjs.org/treemate/0.3.9
+      vdirs: rg.cnpmjs.org/vdirs/0.1.4_vue@3.2.24
+      vfonts: rg.cnpmjs.org/vfonts/0.1.0
+      vooks: rg.cnpmjs.org/vooks/0.2.10_vue@3.2.24
+      vue: rg.cnpmjs.org/vue/3.2.24
+      vueuc: rg.cnpmjs.org/vueuc/0.4.18_ebeef33019930c663e0ff484ef997613
+    dev: false
+
+  rg.cnpmjs.org/nanoid/3.1.30:
+    resolution: {integrity: sha1-Y/k8xUjSoRPcXfvGO/oJ4rm2Q2I=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/nanoid/download/nanoid-3.1.30.tgz}
+    name: nanoid
+    version: 3.1.30
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    hasBin: true
+
+  rg.cnpmjs.org/neo-async/2.6.2:
+    resolution: {integrity: sha1-tKr7k+OustgXTKU88WOrfXMIMF8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/neo-async/download/neo-async-2.6.2.tgz}
+    name: neo-async
+    version: 2.6.2
+    dev: true
+
+  rg.cnpmjs.org/no-case/3.0.4:
+    resolution: {integrity: sha1-02H9XJgA9VhVGoNp/A3NRmK2Ek0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/no-case/download/no-case-3.0.4.tgz}
+    name: no-case
+    version: 3.0.4
+    dependencies:
+      lower-case: rg.cnpmjs.org/lower-case/2.0.2
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/node-releases/2.0.1:
+    resolution: {integrity: sha1-PR05XyBPHy8ppUNYuftnh2WtL8U=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/node-releases/download/node-releases-2.0.1.tgz}
+    name: node-releases
+    version: 2.0.1
+    dev: true
+
+  rg.cnpmjs.org/normalize-path/3.0.0:
+    resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/normalize-path/download/normalize-path-3.0.0.tgz}
+    name: normalize-path
+    version: 3.0.0
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/object-assign/4.1.1:
+    resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/object-assign/download/object-assign-4.1.1.tgz}
+    name: object-assign
+    version: 4.1.1
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/on-finished/2.3.0:
+    resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/on-finished/download/on-finished-2.3.0.tgz}
+    name: on-finished
+    version: 2.3.0
+    engines: {node: '>= 0.8'}
+    dependencies:
+      ee-first: rg.cnpmjs.org/ee-first/1.1.1
+    dev: true
+
+  rg.cnpmjs.org/param-case/3.0.4:
+    resolution: {integrity: sha1-fRf+SqEr3jTUp32RrPtiGcqtAcU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/param-case/download/param-case-3.0.4.tgz}
+    name: param-case
+    version: 3.0.4
+    dependencies:
+      dot-case: rg.cnpmjs.org/dot-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/parseurl/1.3.3:
+    resolution: {integrity: sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/parseurl/download/parseurl-1.3.3.tgz}
+    name: parseurl
+    version: 1.3.3
+    engines: {node: '>= 0.8'}
+    dev: true
+
+  rg.cnpmjs.org/pascal-case/3.1.2:
+    resolution: {integrity: sha1-tI4O8rmOIF58Ha50fQsVCCN2YOs=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pascal-case/download/pascal-case-3.1.2.tgz}
+    name: pascal-case
+    version: 3.1.2
+    dependencies:
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/path-case/3.0.4:
+    resolution: {integrity: sha1-kWhkUzTrlCZYN1xW+AtMDLX4LG8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/path-case/download/path-case-3.0.4.tgz}
+    name: path-case
+    version: 3.0.4
+    dependencies:
+      dot-case: rg.cnpmjs.org/dot-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/path-parse/1.0.7:
+    resolution: {integrity: sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/path-parse/download/path-parse-1.0.7.tgz}
+    name: path-parse
+    version: 1.0.7
+    dev: true
+
+  rg.cnpmjs.org/path-to-regexp/6.2.0:
+    resolution: {integrity: sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/path-to-regexp/download/path-to-regexp-6.2.0.tgz}
+    name: path-to-regexp
+    version: 6.2.0
+    dev: true
+
+  rg.cnpmjs.org/picocolors/1.0.0:
+    resolution: {integrity: sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/picocolors/download/picocolors-1.0.0.tgz}
+    name: picocolors
+    version: 1.0.0
+
+  rg.cnpmjs.org/picomatch/2.3.0:
+    resolution: {integrity: sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/picomatch/download/picomatch-2.3.0.tgz}
+    name: picomatch
+    version: 2.3.0
+    engines: {node: '>=8.6'}
+    dev: true
+
+  rg.cnpmjs.org/pinia/2.0.6_typescript@4.5.2+vue@3.2.24:
+    resolution: {integrity: sha512-01mP4+KapIcTNSYLhQESy6GW0N8vY5wX3UqOwkC87e7DPjEusNJ8bENrKqdvZaRHbB2rDMOONeAbwMa3+n1/rw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pinia/download/pinia-2.0.6.tgz}
+    id: rg.cnpmjs.org/pinia/2.0.6
+    name: pinia
+    version: 2.0.6
+    peerDependencies:
+      '@vue/composition-api': ^1.4.0
+      typescript: '>=4.4.4'
+      vue: ^2.6.14 || ^3.2.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/devtools-api': rg.cnpmjs.org/@vue/devtools-api/6.0.0-beta.20.1
+      typescript: rg.cnpmjs.org/typescript/4.5.2
+      vue: rg.cnpmjs.org/vue/3.2.24
+      vue-demi: rg.cnpmjs.org/vue-demi/0.12.1_vue@3.2.24
+    dev: false
+
+  rg.cnpmjs.org/postcss/8.4.4:
+    resolution: {integrity: sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/postcss/download/postcss-8.4.4.tgz}
+    name: postcss
+    version: 8.4.4
+    engines: {node: ^10 || ^12 || >=14}
+    dependencies:
+      nanoid: rg.cnpmjs.org/nanoid/3.1.30
+      picocolors: rg.cnpmjs.org/picocolors/1.0.0
+      source-map-js: rg.cnpmjs.org/source-map-js/1.0.1
+
+  rg.cnpmjs.org/pretty-format/27.4.2:
+    resolution: {integrity: sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pretty-format/download/pretty-format-27.4.2.tgz}
+    name: pretty-format
+    version: 27.4.2
+    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+    dependencies:
+      '@jest/types': rg.cnpmjs.org/@jest/types/27.4.2
+      ansi-regex: rg.cnpmjs.org/ansi-regex/5.0.1
+      ansi-styles: rg.cnpmjs.org/ansi-styles/5.2.0
+      react-is: rg.cnpmjs.org/react-is/17.0.2
+    dev: false
+
+  rg.cnpmjs.org/promise/7.3.1:
+    resolution: {integrity: sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/promise/download/promise-7.3.1.tgz}
+    name: promise
+    version: 7.3.1
+    dependencies:
+      asap: rg.cnpmjs.org/asap/2.0.6
+    dev: true
+
+  rg.cnpmjs.org/pug-attrs/3.0.0:
+    resolution: {integrity: sha1-sQRR4DSBZeMfrRzCPr3dncc0fEE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-attrs/download/pug-attrs-3.0.0.tgz}
+    name: pug-attrs
+    version: 3.0.0
+    dependencies:
+      constantinople: rg.cnpmjs.org/constantinople/4.0.1
+      js-stringify: rg.cnpmjs.org/js-stringify/1.0.2
+      pug-runtime: rg.cnpmjs.org/pug-runtime/3.0.1
+    dev: true
+
+  rg.cnpmjs.org/pug-code-gen/3.0.2:
+    resolution: {integrity: sha1-rRkPSUMTO/GGtguA3kgxAOEy4s4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-code-gen/download/pug-code-gen-3.0.2.tgz}
+    name: pug-code-gen
+    version: 3.0.2
+    dependencies:
+      constantinople: rg.cnpmjs.org/constantinople/4.0.1
+      doctypes: rg.cnpmjs.org/doctypes/1.1.0
+      js-stringify: rg.cnpmjs.org/js-stringify/1.0.2
+      pug-attrs: rg.cnpmjs.org/pug-attrs/3.0.0
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+      pug-runtime: rg.cnpmjs.org/pug-runtime/3.0.1
+      void-elements: rg.cnpmjs.org/void-elements/3.1.0
+      with: rg.cnpmjs.org/with/7.0.2
+    dev: true
+
+  rg.cnpmjs.org/pug-error/2.0.0:
+    resolution: {integrity: sha1-XGIXPLCcNN4qLOBPF7it/sdNjKU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-error/download/pug-error-2.0.0.tgz}
+    name: pug-error
+    version: 2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-filters/4.0.0:
+    resolution: {integrity: sha1-0+Sa9bqEcum3pm2YDnB86dLMm14=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-filters/download/pug-filters-4.0.0.tgz}
+    name: pug-filters
+    version: 4.0.0
+    dependencies:
+      constantinople: rg.cnpmjs.org/constantinople/4.0.1
+      jstransformer: rg.cnpmjs.org/jstransformer/1.0.0
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+      pug-walk: rg.cnpmjs.org/pug-walk/2.0.0
+      resolve: rg.cnpmjs.org/resolve/1.20.0
+    dev: true
+
+  rg.cnpmjs.org/pug-lexer/5.0.1:
+    resolution: {integrity: sha1-rkRijFvvmxkLZlaDsojKkCS4sNU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-lexer/download/pug-lexer-5.0.1.tgz}
+    name: pug-lexer
+    version: 5.0.1
+    dependencies:
+      character-parser: rg.cnpmjs.org/character-parser/2.2.0
+      is-expression: rg.cnpmjs.org/is-expression/4.0.0
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-linker/4.0.0:
+    resolution: {integrity: sha1-EsvAWU/Fo+Brn8Web5PBRpYqdwg=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-linker/download/pug-linker-4.0.0.tgz}
+    name: pug-linker
+    version: 4.0.0
+    dependencies:
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+      pug-walk: rg.cnpmjs.org/pug-walk/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-load/3.0.0:
+    resolution: {integrity: sha1-n9nNpSICsIrbEdJWgfufNL1BtmI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-load/download/pug-load-3.0.0.tgz}
+    name: pug-load
+    version: 3.0.0
+    dependencies:
+      object-assign: rg.cnpmjs.org/object-assign/4.1.1
+      pug-walk: rg.cnpmjs.org/pug-walk/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-parser/6.0.0:
+    resolution: {integrity: sha1-qP3ANYY6lbLB3F6/Ts+AtOdqEmA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-parser/download/pug-parser-6.0.0.tgz}
+    name: pug-parser
+    version: 6.0.0
+    dependencies:
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+      token-stream: rg.cnpmjs.org/token-stream/1.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-runtime/3.0.1:
+    resolution: {integrity: sha1-9jaXYgRyPzWoxfb61qzaKhkbg9c=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-runtime/download/pug-runtime-3.0.1.tgz}
+    name: pug-runtime
+    version: 3.0.1
+    dev: true
+
+  rg.cnpmjs.org/pug-strip-comments/2.0.0:
+    resolution: {integrity: sha1-+UsH/WtJVSMzD0kKf1VLT/h2MD4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-strip-comments/download/pug-strip-comments-2.0.0.tgz}
+    name: pug-strip-comments
+    version: 2.0.0
+    dependencies:
+      pug-error: rg.cnpmjs.org/pug-error/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug-walk/2.0.0:
+    resolution: {integrity: sha1-QXqrwpIyu0SZtbUGmistKiTV9f4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug-walk/download/pug-walk-2.0.0.tgz}
+    name: pug-walk
+    version: 2.0.0
+    dev: true
+
+  rg.cnpmjs.org/pug/3.0.2:
+    resolution: {integrity: sha1-81xxBzQ0VOQ7wnrg/3bHMbeOpTU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/pug/download/pug-3.0.2.tgz}
+    name: pug
+    version: 3.0.2
+    dependencies:
+      pug-code-gen: rg.cnpmjs.org/pug-code-gen/3.0.2
+      pug-filters: rg.cnpmjs.org/pug-filters/4.0.0
+      pug-lexer: rg.cnpmjs.org/pug-lexer/5.0.1
+      pug-linker: rg.cnpmjs.org/pug-linker/4.0.0
+      pug-load: rg.cnpmjs.org/pug-load/3.0.0
+      pug-parser: rg.cnpmjs.org/pug-parser/6.0.0
+      pug-runtime: rg.cnpmjs.org/pug-runtime/3.0.1
+      pug-strip-comments: rg.cnpmjs.org/pug-strip-comments/2.0.0
+    dev: true
+
+  rg.cnpmjs.org/queue-microtask/1.2.3:
+    resolution: {integrity: sha1-SSkii7xyTfrEPg77BYyve2z7YkM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/queue-microtask/download/queue-microtask-1.2.3.tgz}
+    name: queue-microtask
+    version: 1.2.3
+    dev: true
+
+  rg.cnpmjs.org/react-is/17.0.2:
+    resolution: {integrity: sha1-5pHUqOnHiTZWVVOas3J2Kw77VPA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/react-is/download/react-is-17.0.2.tgz}
+    name: react-is
+    version: 17.0.2
+    dev: false
+
+  rg.cnpmjs.org/readdirp/3.6.0:
+    resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/readdirp/download/readdirp-3.6.0.tgz}
+    name: readdirp
+    version: 3.6.0
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: rg.cnpmjs.org/picomatch/2.3.0
+    dev: true
+
+  rg.cnpmjs.org/regenerator-runtime/0.13.9:
+    resolution: {integrity: sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz}
+    name: regenerator-runtime
+    version: 0.13.9
+    dev: true
+
+  rg.cnpmjs.org/request-light/0.5.5:
+    resolution: {integrity: sha512-AvjfJuhyT6dYfhtIBF+IpTPQco+Td1QJ6PsIJ5xui110vQ5p9HxHk+m1XJqXazLQT6CxxSx9eNv6R/+fu4bZig==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/request-light/download/request-light-0.5.5.tgz}
+    name: request-light
+    version: 0.5.5
+    dev: true
+
+  rg.cnpmjs.org/resize-observer-polyfill/1.5.1:
+    resolution: {integrity: sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz}
+    name: resize-observer-polyfill
+    version: 1.5.1
+    dev: false
+
+  rg.cnpmjs.org/resolve/1.20.0:
+    resolution: {integrity: sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/resolve/download/resolve-1.20.0.tgz}
+    name: resolve
+    version: 1.20.0
+    dependencies:
+      is-core-module: rg.cnpmjs.org/is-core-module/2.8.0
+      path-parse: rg.cnpmjs.org/path-parse/1.0.7
+    dev: true
+
+  rg.cnpmjs.org/reusify/1.0.4:
+    resolution: {integrity: sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/reusify/download/reusify-1.0.4.tgz}
+    name: reusify
+    version: 1.0.4
+    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/rollup/2.60.2:
+    resolution: {integrity: sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/rollup/download/rollup-2.60.2.tgz}
+    name: rollup
+    version: 2.60.2
+    engines: {node: '>=10.0.0'}
+    hasBin: true
+    optionalDependencies:
+      fsevents: rg.cnpmjs.org/fsevents/2.3.2
+    dev: true
+
+  rg.cnpmjs.org/run-parallel/1.2.0:
+    resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/run-parallel/download/run-parallel-1.2.0.tgz}
+    name: run-parallel
+    version: 1.2.0
+    dependencies:
+      queue-microtask: rg.cnpmjs.org/queue-microtask/1.2.3
+    dev: true
+
+  rg.cnpmjs.org/safe-buffer/5.1.2:
+    resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/safe-buffer/download/safe-buffer-5.1.2.tgz}
+    name: safe-buffer
+    version: 5.1.2
+    dev: true
+
+  rg.cnpmjs.org/sass-loader/12.4.0_sass@1.44.0:
+    resolution: {integrity: sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/sass-loader/download/sass-loader-12.4.0.tgz}
+    id: rg.cnpmjs.org/sass-loader/12.4.0
+    name: sass-loader
+    version: 12.4.0
+    engines: {node: '>= 12.13.0'}
+    peerDependencies:
+      fibers: '>= 3.1.0'
+      node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+      sass: ^1.3.0
+      webpack: ^5.0.0
+    peerDependenciesMeta:
+      fibers:
+        optional: true
+      node-sass:
+        optional: true
+      sass:
+        optional: true
+    dependencies:
+      klona: rg.cnpmjs.org/klona/2.0.5
+      neo-async: rg.cnpmjs.org/neo-async/2.6.2
+      sass: rg.cnpmjs.org/sass/1.44.0
+    dev: true
+
+  rg.cnpmjs.org/sass/1.44.0:
+    resolution: {integrity: sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/sass/download/sass-1.44.0.tgz}
+    name: sass
+    version: 1.44.0
+    engines: {node: '>=8.9.0'}
+    hasBin: true
+    dependencies:
+      chokidar: rg.cnpmjs.org/chokidar/3.5.2
+      immutable: rg.cnpmjs.org/immutable/4.0.0
+    dev: true
+
+  rg.cnpmjs.org/seemly/0.3.3:
+    resolution: {integrity: sha512-mAyqemz41e9HiZPMXAn7NtTExJgztwco5cdZjrt/iViU/oFeav+Q8K1c93M/tIZZ00QkT65JMr4xXQk7Vv5hWQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/seemly/download/seemly-0.3.3.tgz}
+    name: seemly
+    version: 0.3.3
+    dependencies:
+      '@types/jest': rg.cnpmjs.org/@types/jest/27.0.3
+    dev: false
+
+  rg.cnpmjs.org/semver/6.3.0:
+    resolution: {integrity: sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/semver/download/semver-6.3.0.tgz}
+    name: semver
+    version: 6.3.0
+    hasBin: true
+    dev: true
+
+  rg.cnpmjs.org/semver/7.3.5:
+    resolution: {integrity: sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/semver/download/semver-7.3.5.tgz}
+    name: semver
+    version: 7.3.5
+    engines: {node: '>=10'}
+    hasBin: true
+    dependencies:
+      lru-cache: rg.cnpmjs.org/lru-cache/6.0.0
+    dev: true
+
+  rg.cnpmjs.org/sentence-case/3.0.4:
+    resolution: {integrity: sha1-NkWnuMEXx4f96HAgViJbtipFEx8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/sentence-case/download/sentence-case-3.0.4.tgz}
+    name: sentence-case
+    version: 3.0.4
+    dependencies:
+      no-case: rg.cnpmjs.org/no-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+      upper-case-first: rg.cnpmjs.org/upper-case-first/2.0.2
+    dev: true
+
+  rg.cnpmjs.org/snake-case/3.0.4:
+    resolution: {integrity: sha1-Tyu9Vo6ZNavf1ZPzTGkdrbScRSw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/snake-case/download/snake-case-3.0.4.tgz}
+    name: snake-case
+    version: 3.0.4
+    dependencies:
+      dot-case: rg.cnpmjs.org/dot-case/3.0.4
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/source-map-js/1.0.1:
+    resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/source-map-js/download/source-map-js-1.0.1.tgz}
+    name: source-map-js
+    version: 1.0.1
+    engines: {node: '>=0.10.0'}
+
+  rg.cnpmjs.org/source-map/0.5.7:
+    resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/source-map/download/source-map-0.5.7.tgz}
+    name: source-map
+    version: 0.5.7
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/source-map/0.6.1:
+    resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/source-map/download/source-map-0.6.1.tgz}
+    name: source-map
+    version: 0.6.1
+    engines: {node: '>=0.10.0'}
+
+  rg.cnpmjs.org/sourcemap-codec/1.4.8:
+    resolution: {integrity: sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz}
+    name: sourcemap-codec
+    version: 1.4.8
+
+  rg.cnpmjs.org/statuses/1.5.0:
+    resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/statuses/download/statuses-1.5.0.tgz}
+    name: statuses
+    version: 1.5.0
+    engines: {node: '>= 0.6'}
+    dev: true
+
+  rg.cnpmjs.org/supports-color/5.5.0:
+    resolution: {integrity: sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/supports-color/download/supports-color-5.5.0.tgz}
+    name: supports-color
+    version: 5.5.0
+    engines: {node: '>=4'}
+    dependencies:
+      has-flag: rg.cnpmjs.org/has-flag/3.0.0
+    dev: true
+
+  rg.cnpmjs.org/supports-color/7.2.0:
+    resolution: {integrity: sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/supports-color/download/supports-color-7.2.0.tgz}
+    name: supports-color
+    version: 7.2.0
+    engines: {node: '>=8'}
+    dependencies:
+      has-flag: rg.cnpmjs.org/has-flag/4.0.0
+
+  rg.cnpmjs.org/svg-tags/1.0.0:
+    resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/svg-tags/download/svg-tags-1.0.0.tgz}
+    name: svg-tags
+    version: 1.0.0
+    dev: true
+
+  rg.cnpmjs.org/to-fast-properties/2.0.0:
+    resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz}
+    name: to-fast-properties
+    version: 2.0.0
+    engines: {node: '>=4'}
+    dev: true
+
+  rg.cnpmjs.org/to-regex-range/5.0.1:
+    resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/to-regex-range/download/to-regex-range-5.0.1.tgz}
+    name: to-regex-range
+    version: 5.0.1
+    engines: {node: '>=8.0'}
+    dependencies:
+      is-number: rg.cnpmjs.org/is-number/7.0.0
+    dev: true
+
+  rg.cnpmjs.org/token-stream/1.0.0:
+    resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/token-stream/download/token-stream-1.0.0.tgz}
+    name: token-stream
+    version: 1.0.0
+    dev: true
+
+  rg.cnpmjs.org/treemate/0.3.9:
+    resolution: {integrity: sha512-/TE70ZXKy5s91EIM+Law46emnD50XmsKl6vlSjPt0XZnGtTgUS0qw3EDyC651CJYdkdpsMgW0HVpbH0xhpBjew==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/treemate/download/treemate-0.3.9.tgz}
+    name: treemate
+    version: 0.3.9
+    dev: false
+
+  rg.cnpmjs.org/tslib/2.3.1:
+    resolution: {integrity: sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/tslib/download/tslib-2.3.1.tgz}
+    name: tslib
+    version: 2.3.1
+    dev: true
+
+  rg.cnpmjs.org/typescript/4.5.2:
+    resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/typescript/download/typescript-4.5.2.tgz}
+    name: typescript
+    version: 4.5.2
+    engines: {node: '>=4.2.0'}
+    hasBin: true
+    dev: true
+
+  rg.cnpmjs.org/universalify/2.0.0:
+    resolution: {integrity: sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/universalify/download/universalify-2.0.0.tgz}
+    name: universalify
+    version: 2.0.0
+    engines: {node: '>= 10.0.0'}
+    dev: true
+
+  rg.cnpmjs.org/unpipe/1.0.0:
+    resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/unpipe/download/unpipe-1.0.0.tgz}
+    name: unpipe
+    version: 1.0.0
+    engines: {node: '>= 0.8'}
+    dev: true
+
+  rg.cnpmjs.org/upath/2.0.1:
+    resolution: {integrity: sha1-UMc96mjW9rmQ9R0nnOYIFmXWGos=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/upath/download/upath-2.0.1.tgz}
+    name: upath
+    version: 2.0.1
+    engines: {node: '>=4'}
+    dev: true
+
+  rg.cnpmjs.org/upper-case-first/2.0.2:
+    resolution: {integrity: sha1-mSwyc/iCq9GdHgKJTMFHEX+EQyQ=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/upper-case-first/download/upper-case-first-2.0.2.tgz}
+    name: upper-case-first
+    version: 2.0.2
+    dependencies:
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/upper-case/2.0.2:
+    resolution: {integrity: sha1-2JgQgj+qsd8VSbfZenb4Ziuub3o=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/upper-case/download/upper-case-2.0.2.tgz}
+    name: upper-case
+    version: 2.0.2
+    dependencies:
+      tslib: rg.cnpmjs.org/tslib/2.3.1
+    dev: true
+
+  rg.cnpmjs.org/utils-merge/1.0.1:
+    resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/utils-merge/download/utils-merge-1.0.1.tgz}
+    name: utils-merge
+    version: 1.0.1
+    engines: {node: '>= 0.4.0'}
+    dev: true
+
+  rg.cnpmjs.org/vdirs/0.1.4_vue@3.2.24:
+    resolution: {integrity: sha1-xMD/hs9H/tA95fhp4mUxHvGIq3Q=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vdirs/download/vdirs-0.1.4.tgz}
+    id: rg.cnpmjs.org/vdirs/0.1.4
+    name: vdirs
+    version: 0.1.4
+    peerDependencies:
+      vue: ^3.0.11
+    dependencies:
+      '@types/node': rg.cnpmjs.org/@types/node/14.18.0
+      evtd: rg.cnpmjs.org/evtd/0.2.3
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/vfonts/0.1.0:
+    resolution: {integrity: sha1-wWrzfKBEsnJa5VVTBJKA775iIqk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vfonts/download/vfonts-0.1.0.tgz}
+    name: vfonts
+    version: 0.1.0
+    dev: false
+
+  rg.cnpmjs.org/vite-plugin-importer/0.2.5:
+    resolution: {integrity: sha1-I2PcDZfU7OxTDuQBcTEKF8LbB34=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vite-plugin-importer/download/vite-plugin-importer-0.2.5.tgz}
+    name: vite-plugin-importer
+    version: 0.2.5
+    dependencies:
+      '@babel/core': rg.cnpmjs.org/@babel/core/7.16.0
+      '@babel/plugin-syntax-import-meta': rg.cnpmjs.org/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.0
+      babel-plugin-import: rg.cnpmjs.org/babel-plugin-import/1.13.3
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.7.1:
+    resolution: {integrity: sha1-BN0j3muqBS+qW5rTF1FMkNYgXiU=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vite-plugin-mock/download/vite-plugin-mock-2.9.6.tgz}
+    id: rg.cnpmjs.org/vite-plugin-mock/2.9.6
+    name: vite-plugin-mock
+    version: 2.9.6
+    engines: {node: '>=12.0.0'}
+    peerDependencies:
+      mockjs: '>=1.1.0'
+      vite: '>=2.0.0'
+    dependencies:
+      '@rollup/plugin-node-resolve': rg.cnpmjs.org/@rollup/plugin-node-resolve/13.0.6
+      '@types/mockjs': rg.cnpmjs.org/@types/mockjs/1.0.4
+      chalk: rg.cnpmjs.org/chalk/4.1.2
+      chokidar: rg.cnpmjs.org/chokidar/3.5.2
+      connect: rg.cnpmjs.org/connect/3.7.0
+      debug: rg.cnpmjs.org/debug/4.3.3
+      esbuild: rg.cnpmjs.org/esbuild/0.11.3
+      fast-glob: rg.cnpmjs.org/fast-glob/3.2.7
+      mockjs: rg.cnpmjs.org/mockjs/1.1.0
+      path-to-regexp: rg.cnpmjs.org/path-to-regexp/6.2.0
+      vite: rg.cnpmjs.org/vite/2.7.1_sass@1.44.0
+    transitivePeerDependencies:
+      - rollup
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/vite-plugin-style-import/1.4.0_vite@2.7.1:
+    resolution: {integrity: sha512-EGAx0zVGUkwAwvDaC66zxgzXyHE0CwAXp4O1xGKnpMcrDT9L1nlojiCjjLRQzL8C3zwY1jn9ilq+m0VABKiiLg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vite-plugin-style-import/download/vite-plugin-style-import-1.4.0.tgz}
+    id: rg.cnpmjs.org/vite-plugin-style-import/1.4.0
+    name: vite-plugin-style-import
+    version: 1.4.0
+    peerDependencies:
+      vite: '>=2.0.0'
+    dependencies:
+      '@rollup/pluginutils': rg.cnpmjs.org/@rollup/pluginutils/4.1.1
+      change-case: rg.cnpmjs.org/change-case/4.1.2
+      debug: rg.cnpmjs.org/debug/4.3.3
+      es-module-lexer: rg.cnpmjs.org/es-module-lexer/0.9.3
+      fs-extra: rg.cnpmjs.org/fs-extra/10.0.0
+      magic-string: rg.cnpmjs.org/magic-string/0.25.7
+      vite: rg.cnpmjs.org/vite/2.7.1_sass@1.44.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  rg.cnpmjs.org/vite/2.7.1_sass@1.44.0:
+    resolution: {integrity: sha512-TDXXhcu5lyQ6uosK4ZWaOyB4VzOiizk0biitRzDzaEtgSUi8rVYPc4k1xgOjLSf0OuceDJmojFKXHOX9DB1WuQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vite/download/vite-2.7.1.tgz}
+    id: rg.cnpmjs.org/vite/2.7.1
+    name: vite
+    version: 2.7.1
+    engines: {node: '>=12.2.0'}
+    hasBin: true
+    peerDependencies:
+      less: '*'
+      sass: '*'
+      stylus: '*'
+    peerDependenciesMeta:
+      less:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+    dependencies:
+      esbuild: rg.cnpmjs.org/esbuild/0.13.15
+      postcss: rg.cnpmjs.org/postcss/8.4.4
+      resolve: rg.cnpmjs.org/resolve/1.20.0
+      rollup: rg.cnpmjs.org/rollup/2.60.2
+      sass: rg.cnpmjs.org/sass/1.44.0
+    optionalDependencies:
+      fsevents: rg.cnpmjs.org/fsevents/2.3.2
+    dev: true
+
+  rg.cnpmjs.org/void-elements/3.1.0:
+    resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/void-elements/download/void-elements-3.1.0.tgz}
+    name: void-elements
+    version: 3.1.0
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  rg.cnpmjs.org/vooks/0.2.10_vue@3.2.24:
+    resolution: {integrity: sha1-Jlb0wCV1jtl+3EqVhMnMFez/tws=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vooks/download/vooks-0.2.10.tgz}
+    id: rg.cnpmjs.org/vooks/0.2.10
+    name: vooks
+    version: 0.2.10
+    peerDependencies:
+      vue: ^3.0.0
+    dependencies:
+      evtd: rg.cnpmjs.org/evtd/0.2.3
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/vscode-css-languageservice/5.1.9:
+    resolution: {integrity: sha512-/tFOWeZBL3Oc9Zc+2MAi3rEwiXJTSZsvjB+M7nSjWLbGPUIjukUA7YzLgsBoUfR35sPJYnXWUkL56PdfIYM8GA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-css-languageservice/download/vscode-css-languageservice-5.1.9.tgz}
+    name: vscode-css-languageservice
+    version: 5.1.9
+    dependencies:
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+      vscode-languageserver-types: rg.cnpmjs.org/vscode-languageserver-types/3.16.0
+      vscode-nls: rg.cnpmjs.org/vscode-nls/5.0.0
+      vscode-uri: rg.cnpmjs.org/vscode-uri/3.0.2
+    dev: true
+
+  rg.cnpmjs.org/vscode-html-languageservice/4.2.0:
+    resolution: {integrity: sha512-5ebk/5kMa7PrCPL3JuP27vo8h+coDgSkMP14pSlKz3ISXZxHm+nnCenhVrpy9Ayamtwb28YXeQuN8AqNQH8kVQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-html-languageservice/download/vscode-html-languageservice-4.2.0.tgz}
+    name: vscode-html-languageservice
+    version: 4.2.0
+    dependencies:
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+      vscode-languageserver-types: rg.cnpmjs.org/vscode-languageserver-types/3.16.0
+      vscode-nls: rg.cnpmjs.org/vscode-nls/5.0.0
+      vscode-uri: rg.cnpmjs.org/vscode-uri/3.0.2
+    dev: true
+
+  rg.cnpmjs.org/vscode-json-languageservice/4.1.10:
+    resolution: {integrity: sha512-IHliMEEYSY0tJjJt0ECb8ESx/nRXpoy9kN42WVQXgaqGyizFAf3jibSiezDQTrrY7f3kywXggCU+kkJEM+OLZQ==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-json-languageservice/download/vscode-json-languageservice-4.1.10.tgz}
+    name: vscode-json-languageservice
+    version: 4.1.10
+    dependencies:
+      jsonc-parser: rg.cnpmjs.org/jsonc-parser/3.0.0
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+      vscode-languageserver-types: rg.cnpmjs.org/vscode-languageserver-types/3.16.0
+      vscode-nls: rg.cnpmjs.org/vscode-nls/5.0.0
+      vscode-uri: rg.cnpmjs.org/vscode-uri/3.0.2
+    dev: true
+
+  rg.cnpmjs.org/vscode-jsonrpc/8.0.0-next.4:
+    resolution: {integrity: sha512-i+wvza5Wd0YV/t9qhnS8I+dJdhJ1fHIhRW4f262rXXM9Mgts5VZhYrRZufGcai4y99RlbZvwaZhplQ6diRXkaA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-jsonrpc/download/vscode-jsonrpc-8.0.0-next.4.tgz}
+    name: vscode-jsonrpc
+    version: 8.0.0-next.4
+    engines: {node: '>=8.0.0 || >=10.0.0'}
+    dev: true
+
+  rg.cnpmjs.org/vscode-languageserver-protocol/3.17.0-next.11:
+    resolution: {integrity: sha512-9FqHT7XvM6tWFsnLvRfuQA7Zh7wZZYAwA9dK85lYthA8M1aXpXEP9drXVvO/Fe03MUeJpKVf2e4/NvDaFUnttg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-languageserver-protocol/download/vscode-languageserver-protocol-3.17.0-next.11.tgz}
+    name: vscode-languageserver-protocol
+    version: 3.17.0-next.11
+    dependencies:
+      vscode-jsonrpc: rg.cnpmjs.org/vscode-jsonrpc/8.0.0-next.4
+      vscode-languageserver-types: rg.cnpmjs.org/vscode-languageserver-types/3.17.0-next.5
+    dev: true
+
+  rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3:
+    resolution: {integrity: sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-languageserver-textdocument/download/vscode-languageserver-textdocument-1.0.3.tgz}
+    name: vscode-languageserver-textdocument
+    version: 1.0.3
+    dev: true
+
+  rg.cnpmjs.org/vscode-languageserver-types/3.16.0:
+    resolution: {integrity: sha1-7POT/BIexpdLLaPvsxVWRMUU4kc=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-languageserver-types/download/vscode-languageserver-types-3.16.0.tgz}
+    name: vscode-languageserver-types
+    version: 3.16.0
+    dev: true
+
+  rg.cnpmjs.org/vscode-languageserver-types/3.17.0-next.5:
+    resolution: {integrity: sha512-Zcfaw8BznhlJWB09LDR0dscXyxn9+liREqJnPF4pigeUCHwKxYapYqizwuCpMHQ/oLYiAvKwU+f28hPleYu7pA==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-languageserver-types/download/vscode-languageserver-types-3.17.0-next.5.tgz}
+    name: vscode-languageserver-types
+    version: 3.17.0-next.5
+    dev: true
+
+  rg.cnpmjs.org/vscode-languageserver/8.0.0-next.5:
+    resolution: {integrity: sha512-3E2W0eWtGKb6QAJqspOnD0thrBRRo8IGUMV5jpDNMcMKvmtkcxMwsBh0VxdvuWaZ51PiNyR4L+B+GUvkYsyFEg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-languageserver/download/vscode-languageserver-8.0.0-next.5.tgz}
+    name: vscode-languageserver
+    version: 8.0.0-next.5
+    hasBin: true
+    dependencies:
+      vscode-languageserver-protocol: rg.cnpmjs.org/vscode-languageserver-protocol/3.17.0-next.11
+    dev: true
+
+  rg.cnpmjs.org/vscode-nls/5.0.0:
+    resolution: {integrity: sha1-mfDaC9nqfNpE5WWnTFSx8rwleEA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-nls/download/vscode-nls-5.0.0.tgz}
+    name: vscode-nls
+    version: 5.0.0
+    dev: true
+
+  rg.cnpmjs.org/vscode-pug-languageservice/0.28.10:
+    resolution: {integrity: sha1-gFzhl6iCtCqD/mAgCNl5/qE+Y/I=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-pug-languageservice/download/vscode-pug-languageservice-0.28.10.tgz}
+    name: vscode-pug-languageservice
+    version: 0.28.10
+    dependencies:
+      '@volar/code-gen': rg.cnpmjs.org/@volar/code-gen/0.28.10
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      '@volar/source-map': rg.cnpmjs.org/@volar/source-map/0.28.10
+      '@volar/transforms': rg.cnpmjs.org/@volar/transforms/0.28.10
+      pug-lexer: rg.cnpmjs.org/pug-lexer/5.0.1
+      pug-parser: rg.cnpmjs.org/pug-parser/6.0.0
+      vscode-languageserver: rg.cnpmjs.org/vscode-languageserver/8.0.0-next.5
+    dev: true
+
+  rg.cnpmjs.org/vscode-typescript-languageservice/0.28.10:
+    resolution: {integrity: sha1-iHOHhX6ALciquSqO/sIVM/zhm9M=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-typescript-languageservice/download/vscode-typescript-languageservice-0.28.10.tgz}
+    name: vscode-typescript-languageservice
+    version: 0.28.10
+    dependencies:
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      semver: rg.cnpmjs.org/semver/7.3.5
+      upath: rg.cnpmjs.org/upath/2.0.1
+      vscode-languageserver: rg.cnpmjs.org/vscode-languageserver/8.0.0-next.5
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+    dev: true
+
+  rg.cnpmjs.org/vscode-uri/2.1.2:
+    resolution: {integrity: sha1-yNQN6T61evMfPHFd1lDiyiwJbxw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-uri/download/vscode-uri-2.1.2.tgz}
+    name: vscode-uri
+    version: 2.1.2
+    dev: true
+
+  rg.cnpmjs.org/vscode-uri/3.0.2:
+    resolution: {integrity: sha1-7P0dBmy470w6II3s26uajCPQVdA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-uri/download/vscode-uri-3.0.2.tgz}
+    name: vscode-uri
+    version: 3.0.2
+    dev: true
+
+  rg.cnpmjs.org/vscode-vue-languageservice/0.28.10:
+    resolution: {integrity: sha1-P16jsjGcVC8jEnwwF/lFyuZ2c+4=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vscode-vue-languageservice/download/vscode-vue-languageservice-0.28.10.tgz}
+    name: vscode-vue-languageservice
+    version: 0.28.10
+    dependencies:
+      '@volar/code-gen': rg.cnpmjs.org/@volar/code-gen/0.28.10
+      '@volar/html2pug': rg.cnpmjs.org/@volar/html2pug/0.28.10
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      '@volar/source-map': rg.cnpmjs.org/@volar/source-map/0.28.10
+      '@volar/transforms': rg.cnpmjs.org/@volar/transforms/0.28.10
+      '@vscode/emmet-helper': rg.cnpmjs.org/@vscode/emmet-helper/2.8.2
+      '@vue/compiler-dom': rg.cnpmjs.org/@vue/compiler-dom/3.2.24
+      '@vue/reactivity': rg.cnpmjs.org/@vue/reactivity/3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+      request-light: rg.cnpmjs.org/request-light/0.5.5
+      upath: rg.cnpmjs.org/upath/2.0.1
+      vscode-css-languageservice: rg.cnpmjs.org/vscode-css-languageservice/5.1.9
+      vscode-html-languageservice: rg.cnpmjs.org/vscode-html-languageservice/4.2.0
+      vscode-json-languageservice: rg.cnpmjs.org/vscode-json-languageservice/4.1.10
+      vscode-languageserver: rg.cnpmjs.org/vscode-languageserver/8.0.0-next.5
+      vscode-languageserver-textdocument: rg.cnpmjs.org/vscode-languageserver-textdocument/1.0.3
+      vscode-pug-languageservice: rg.cnpmjs.org/vscode-pug-languageservice/0.28.10
+      vscode-typescript-languageservice: rg.cnpmjs.org/vscode-typescript-languageservice/0.28.10
+    dev: true
+
+  rg.cnpmjs.org/vue-demi/0.12.1_vue@3.2.24:
+    resolution: {integrity: sha1-9+GO++z/0RqwadFHLXoG4xm0F0w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vue-demi/download/vue-demi-0.12.1.tgz}
+    id: rg.cnpmjs.org/vue-demi/0.12.1
+    name: vue-demi
+    version: 0.12.1
+    engines: {node: '>=12'}
+    hasBin: true
+    requiresBuild: true
+    peerDependencies:
+      '@vue/composition-api': ^1.0.0-rc.1
+      vue: ^3.0.0-0 || ^2.6.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+    dependencies:
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/vue-router/4.0.12_vue@3.2.24:
+    resolution: {integrity: sha1-jceSzd9bsavMOQj5BkE23n4TxGA=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vue-router/download/vue-router-4.0.12.tgz}
+    id: rg.cnpmjs.org/vue-router/4.0.12
+    name: vue-router
+    version: 4.0.12
+    peerDependencies:
+      vue: ^3.0.0
+    dependencies:
+      '@vue/devtools-api': rg.cnpmjs.org/@vue/devtools-api/6.0.0-beta.20.1
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/vue-tsc/0.28.10_typescript@4.5.2:
+    resolution: {integrity: sha1-L8AVRTe+9QBOhgArEXdYr0srBmw=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vue-tsc/download/vue-tsc-0.28.10.tgz}
+    id: rg.cnpmjs.org/vue-tsc/0.28.10
+    name: vue-tsc
+    version: 0.28.10
+    hasBin: true
+    peerDependencies:
+      typescript: '*'
+    dependencies:
+      '@volar/shared': rg.cnpmjs.org/@volar/shared/0.28.10
+      typescript: rg.cnpmjs.org/typescript/4.5.2
+      vscode-vue-languageservice: rg.cnpmjs.org/vscode-vue-languageservice/0.28.10
+    dev: true
+
+  rg.cnpmjs.org/vue/3.2.24:
+    resolution: {integrity: sha512-PvCklXNfcUMyeP/a9nME27C32IipwUDoS45rDyKn5+RQrWyjL+0JAJtf98HL6y9bfqQRTlYjSowWEB1nXxvG5Q==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vue/download/vue-3.2.24.tgz}
+    name: vue
+    version: 3.2.24
+    dependencies:
+      '@vue/compiler-dom': rg.cnpmjs.org/@vue/compiler-dom/3.2.24
+      '@vue/compiler-sfc': rg.cnpmjs.org/@vue/compiler-sfc/3.2.24
+      '@vue/runtime-dom': rg.cnpmjs.org/@vue/runtime-dom/3.2.24
+      '@vue/server-renderer': rg.cnpmjs.org/@vue/server-renderer/3.2.24_vue@3.2.24
+      '@vue/shared': rg.cnpmjs.org/@vue/shared/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/vueuc/0.4.18_ebeef33019930c663e0ff484ef997613:
+    resolution: {integrity: sha512-fHoMFbwfaVs4S3U5tCSu2i4Xm5GZDNw9FuFNjRwCXiLB1S3rYTYuhjUWdX/+38SL5d9ivEkpsvfve/Msp2lwwg==, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/vueuc/download/vueuc-0.4.18.tgz}
+    id: rg.cnpmjs.org/vueuc/0.4.18
+    name: vueuc
+    version: 0.4.18
+    peerDependencies:
+      '@css-render/vue3-ssr': ^0.15.3
+      vue: ^3.0.11
+    dependencies:
+      '@css-render/vue3-ssr': rg.cnpmjs.org/@css-render/vue3-ssr/0.15.6_vue@3.2.24
+      css-render: rg.cnpmjs.org/css-render/0.15.6
+      evtd: rg.cnpmjs.org/evtd/0.2.3
+      resize-observer-polyfill: rg.cnpmjs.org/resize-observer-polyfill/1.5.1
+      seemly: rg.cnpmjs.org/seemly/0.3.3
+      vdirs: rg.cnpmjs.org/vdirs/0.1.4_vue@3.2.24
+      vooks: rg.cnpmjs.org/vooks/0.2.10_vue@3.2.24
+      vue: rg.cnpmjs.org/vue/3.2.24
+    dev: false
+
+  rg.cnpmjs.org/with/7.0.2:
+    resolution: {integrity: sha1-zO461ULSVTinp6gKrSErmChJW6w=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/with/download/with-7.0.2.tgz}
+    name: with
+    version: 7.0.2
+    engines: {node: '>= 10.0.0'}
+    dependencies:
+      '@babel/parser': rg.cnpmjs.org/@babel/parser/7.16.4
+      '@babel/types': rg.cnpmjs.org/@babel/types/7.16.0
+      assert-never: rg.cnpmjs.org/assert-never/1.2.1
+      babel-walk: rg.cnpmjs.org/babel-walk/3.0.0-canary-5
+    dev: true
+
+  rg.cnpmjs.org/yallist/4.0.0:
+    resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=, registry: http://r.cnpmjs.org/, tarball: https://rg.cnpmjs.org/yallist/download/yallist-4.0.0.tgz}
+    name: yallist
+    version: 4.0.0
+    dev: true

+ 12 - 0
prettier.config.js

@@ -0,0 +1,12 @@
+module.exports = {
+  printWidth: 80, // 每行代码长度(默认80)
+  tabWidth: 2, // 每个tab相当于多少个空格(默认2)
+  useTabs: false, // 是否使用tab进行缩进(默认false)
+  singleQuote: false, // 使用单引号(默认false)
+  semi: true, // 声明结尾使用分号(默认true)
+  trailingComma: 'es5', // 多行使用拖尾逗号(默认none)
+  bracketSpacing: true, // 对象字面量的大括号间使用空格(默认true)
+  jsxBracketSameLine: false, // 多行JSX中的>放置在最后一行的结尾,而不是另起一行(默认false)
+  arrowParens: "avoid", // 只有一个参数的箭头函数的参数是否带圆括号(默认avoid)
+};
+

BIN
public/favicon.ico


+ 40 - 0
src/App.vue

@@ -0,0 +1,40 @@
+<template>
+  <NConfigProvider
+    :locale="zhCN"
+    :theme="getDarkTheme"
+    :theme-overrides="getThemeOverrides"
+    :date-locale="dateZhCN"
+  >
+    <AppProvider>
+      <router-view />
+    </AppProvider>
+  </NConfigProvider>
+</template>
+
+<script lang="ts" setup>
+import { computed } from 'vue'
+import { zhCN, dateZhCN, darkTheme, GlobalThemeOverrides } from 'naive-ui'
+import { AppProvider } from '@/components/Application'
+import { useRoute } from 'vue-router'
+import { useDesignStore } from '@/store/modules/designStore/designStore'
+
+const route = useRoute()
+const designStore = useDesignStore()
+
+const getThemeOverrides = computed(
+  (): GlobalThemeOverrides => {
+    return {
+      common: {
+        primaryColor: designStore.appTheme
+      },
+      LoadingBar: {
+        colorLoading: designStore.appTheme
+      }
+    }
+  }
+)
+
+const getDarkTheme = computed(() => designStore.darkTheme ? darkTheme : undefined)
+</script>
+
+<style lang="scss"></style>

+ 255 - 0
src/assets/images/Error.svg

@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+     x="0px" y="0px"
+     viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve">
+<g id="LEFT_ARM_1">
+	<g id="XMLID_46_">
+		<path id="XMLID_290_" fill="#FFB96C" d="M294.4,485.5c-1.2,0.3-2.4,0.4-3.6,0.4c-0.2,0-0.4,0-0.6,0c-8.4-0.3-16.2-6.9-21-15.7
+			c-21.3-39.2-27.1-63.4-34.8-89.9c-1.9-6.6-1.4-13.3,1.4-18.1c2.2-3.7,5.7-6.4,10.5-6.9c0.6-0.1,1.1-0.1,1.7-0.1
+			c8.5,0,17.4,6.8,20.9,15.6l36.5,89.4C310,471.5,305,483.1,294.4,485.5z"/>
+        <path id="XMLID_280_" fill="#FCAF63" d="M290.2,485.9c-8.4-0.3-16.2-6.9-21-15.7c-21.3-39.2-27.1-63.4-34.8-89.9
+			c-1.9-6.6-1.4-13.3,1.4-18.1c9.5,23,40.7,98.5,50.3,116.1C287.6,481.1,289,483.6,290.2,485.9z"/>
+	</g>
+</g>
+    <g id="LEFT_ARM_2">
+	<g id="XMLID_10_">
+		<g id="XMLID_42_">
+			<path id="XMLID_293_" fill="#FFB96C" d="M340.2,472c-0.9,2.3-2.1,4.1-3.3,5c-7.2,5.7-14.3,7-26.2,9.6c-11.9,2.6-24.2,2-29.9-3.4
+				c-1.9-1.8-3.3-3.8-4.1-5.9c-2.5-6-0.3-12.3,6.8-15c4.2-1.6,42.4-10.6,48.7-9.4C343.1,455,342.9,465.3,340.2,472z"/>
+            <path id="XMLID_279_" fill="#FCAF63" d="M340.2,472c-0.9,2.3-2.1,4.1-3.3,5c-7.2,5.7-14.3,7-26.2,9.6c-11.9,2.6-24.2,2-29.9-3.4
+				c-1.9-1.8-3.3-3.8-4.1-5.9c3.2,0.9,9.6,2.1,20.5,0.9C306.4,477.2,325.3,474.3,340.2,472z"/>
+		</g>
+        <g id="XMLID_41_">
+			<path id="XMLID_49_" fill="#FEA691" d="M330.2,453.6c-11.9,4-10.6,11.9-8.8,19.6c1.8,7.7,16.6,27.5,21.1,28.5s4.8-0.8,3.6-4.5
+				c-1.2-3.7-9.7-16.6-9.7-16.6s9.4,12.8,13.3,16.6c3.9,3.8,7.2,3.5,7.1-0.7c-0.2-4.2-9.5-18.3-9.5-18.3s8.2,10.8,11.6,14.5
+				s7.9,3.1,6.3-1.9c-1.5-5-8.3-15.9-8.3-15.9s6.6,11,11,12.1c4.4,1.1,1.7-5.5-3-13.9C360.3,464.5,345,448.6,330.2,453.6z"/>
+            <path id="XMLID_50_" fill="#FEA691" d="M320.2,464.6c0,0-2.5,9.8-0.9,18.4s4.3,10.3,6.1,10.7s2.4-1.9,1.5-5.6
+				c-0.9-3.7,1.5-11,1.5-11S325.8,462.4,320.2,464.6z"/>
+		</g>
+	</g>
+</g>
+    <g id="BODY">
+	<g id="XMLID_70_">
+		<path id="XMLID_45_" fill="#FEC272" d="M273.1,496H172.2c0,0-13.9-97.2-5.1-121.1c2.5-6.8,5.8-12.3,9.6-16.9
+			c9.5-11.6,21.7-16.9,30-19c10.9-2.8,20.4-2.9,28.6-0.9c21.8,5.2,33.9,25.1,37.8,46.8C278.5,414.8,273.1,496,273.1,496z"/>
+        <path id="XMLID_43_" fill="#F9B35F" d="M207.6,358.5c-13.2,3.4-25.3,3-31-0.5c9.5-11.6,21.7-16.9,30-19
+			c10.9-2.8,20.4-2.9,28.6-0.9C237,344.9,224.6,354.1,207.6,358.5z"/>
+	</g>
+</g>
+    <g id="RIGHT_ARM_1">
+	<g id="XMLID_16_">
+		<path id="XMLID_278_" fill="#FFCD92" d="M199,381.3c0,1.6-0.1,3.2-0.4,4.7c-4.1,26.6-27.7,90.6-27.7,90.6c-1.7,5.1-5.3,8.9-9.7,11
+			c-4.4,2-9.5,2.4-14.4,0.5c-7.6-3-11.2-10.2-11.2-18.1c0-1.7,0.2-3.4,0.5-5.1c6.9-37.3,19.2-68.2,29.3-90
+			c4.4-9.6,15.2-15.6,24.7-10.8c2.9,1.4,4.9,3.7,6.4,6.3C198.3,373.6,199,377.4,199,381.3z"/>
+        <path id="XMLID_273_" fill="#FCB765" d="M199,381.3c0,1.6-0.1,3.2-0.4,4.7c-4.1,26.6-27.7,90.6-27.7,90.6c-1.7,5.1-5.3,8.9-9.7,11
+			l35.2-117.3C198.3,373.6,199,377.4,199,381.3z"/>
+	</g>
+</g>
+    <g id="RIGHT_ARM_2">
+	<g id="XMLID_17_">
+		<g id="XMLID_20_">
+			<path id="XMLID_285_" fill="#FFCD92" d="M230.5,487.4c-2.2,5.4-9.4,5.6-9.4,5.6s-20.2,1.2-37.7,1.2c-17.5,0-34.7,0-41.7-7.9
+				c-1.4-1.6-2.5-3.4-3.1-5.3c-2.6-7.3,0.7-16,11.1-20.4c7.5-3.2,16.1-2.1,25.5-1.2c9.4,0.9,27.5,5.1,38,7.9
+				c10.6,2.7,16.9,5.4,17.8,15.4C231.3,484.6,231,486.1,230.5,487.4z"/>
+            <path id="XMLID_284_" fill="#FCB765" d="M230.5,487.4c-2.2,5.4-9.4,5.6-9.4,5.6s-20.2,1.2-37.7,1.2c-17.5,0-34.7,0-41.7-7.9
+				c-1.4-1.6-2.5-3.4-3.1-5.3c7.8,2.4,18.3,5.2,26.7,5.9C189,488.9,220.4,487.9,230.5,487.4z"/>
+		</g>
+        <g id="XMLID_2_">
+			<g id="XMLID_18_">
+				<path id="XMLID_47_" fill="#FEA691" d="M251.6,471.3c0,1.6-0.2,3.3-0.6,5.1c-2.1,8.6-13.2,15.2-30.1,16.1
+					c-7.5,0.4-12.6,0.4-16-0.4c-4.4-1.1-6.1-3.7-6.5-9.1c-0.5-6.9,4.7-13.2,8.6-15.9c11.7-7.9,22.6-8.5,32.1-7.6
+					C247.6,460.4,251.5,465.1,251.6,471.3z"/>
+                <path id="XMLID_44_" fill="#FC8172" d="M251.6,471.3c0,1.6-0.2,3.3-0.6,5.1c-2.1,8.6-13.2,15.2-30.1,16.1
+					c-7.5,0.4-12.6,0.4-16-0.4c-0.4-1-0.7-2.2-0.8-3.7c-0.5-5.9,4.4-11.4,8.2-13.7c11.1-6.8,21.5-7.4,30.5-6.5
+					C246.8,468.5,249.7,469.6,251.6,471.3z"/>
+			</g>
+            <g id="XMLID_19_">
+				<path id="XMLID_48_" fill="#C7DCF9" d="M264.7,488.7c0,1.1-0.2,2.1-0.5,3.2h-55c-0.3-1-0.5-2.1-0.5-3.2c0-9.6,12.5-17.4,28-17.4
+					C252.2,471.3,264.7,479.1,264.7,488.7z"/>
+                <path id="XMLID_254_" opacity="0.55" fill="#C7DCF9" d="M263.5,490.2c0,0.6-0.1,1.1-0.4,1.7h-50.3c-0.3-0.6-0.4-1.1-0.4-1.7
+					c0-5.1,11.4-9.3,25.5-9.3C252.1,480.9,263.5,485.1,263.5,490.2z"/>
+			</g>
+            <g id="XMLID_37_">
+				<path id="XMLID_28_" fill="#FEA691" d="M252.6,456.6c3.6,0.4,6.1,2.7,7.5,7.5c1.4,4.8,1.7,11.9,0.2,14.4
+					c-1.5,2.5-4.3,3.6-7.4,1.1c-3.1-2.5-4.8-9.5-5.8-13C245.9,462,244.5,455.8,252.6,456.6z"/>
+                <g id="XMLID_4_">
+					<path id="XMLID_38_" fill="#FEA691" d="M239.2,454.3c3.9,0.4,5.5,3.7,7,8.7c1.5,5,1.8,12.6,0.2,15.3c-1.6,2.6-4.6,3.8-7.9,1.2
+						c-3.3-2.6-5.2-10.1-6.2-13.8C231,460.8,230.4,453.5,239.2,454.3z"/>
+                    <path id="XMLID_79_" fill="#FF8D76" d="M243.1,480.8c-1.4,0.3-3,0-4.6-1.4c-3.3-2.6-5.1-10.1-6.2-13.8c-1.1-4-1.7-9.7,3-11.1
+						c-0.9,2.7-0.4,6.4,0.3,9.2c1,4.3,2.9,13,6.2,16C242.3,480.2,242.7,480.6,243.1,480.8z"/>
+				</g>
+                <path id="XMLID_39_" fill="#FEA691" d="M224.6,456.6c3.9,0.4,6.5,2.9,8,7.9s1.8,12.6,0.2,15.3c-1.6,2.6-4.6,3.8-7.9,1.2
+					c-3.3-2.6-5.2-10.1-6.2-13.8C217.4,462.3,215.9,455.7,224.6,456.6z"/>
+                <path id="XMLID_81_" fill="#FF8D76" d="M228.5,482.4c-1.1,0-2.3-0.5-3.5-1.5c-3.3-2.6-5.1-10.1-6.2-13.8
+					c-1-3.8-2.2-8.6,1.5-10.2c-0.3,2.5,0.4,5.7,1.1,8.3c1.2,4.5,3.3,13.7,7,17C228.4,482.4,228.4,482.4,228.5,482.4z"/>
+                <path id="XMLID_40_" fill="#FEA691" d="M211.5,459.4c3.4-1,6,2.7,7.3,7.3c1.3,4.6,1.7,11.6,0.2,14c-1.4,2.4-4.2,3.5-7.2,1.1
+					c-3-2.4-3.8-7-4.7-10.4C205.9,467,204.9,461.4,211.5,459.4z"/>
+                <path id="XMLID_82_" fill="#FF8D76" d="M215.2,483.2c-1.1,0-2.2-0.4-3.4-1.4c-3-2.4-3.8-7-4.7-10.4c-1.1-3.8-1.9-8.5,2.1-11
+					c-0.3,2.7,0.2,5.6,0.7,8.2c0.9,4.6,1.6,10.9,5,14.3C215,483,215.1,483.1,215.2,483.2z"/>
+                <path id="XMLID_78_" fill="#FF8D76" d="M256.8,480.9c-1.2,0.1-2.5-0.3-3.8-1.4c-3.1-2.5-4.8-9.5-5.8-13c-1-3.7-2.2-8.5,1.8-9.7
+					c0,2.2,0.5,4.7,1,6.9c1,4.5,2.9,13.5,6.1,16.7C256.4,480.6,256.6,480.8,256.8,480.9z"/>
+			</g>
+		</g>
+	</g>
+</g>
+    <g id="HEAD">
+	<g id="XMLID_89_">
+		<path id="XMLID_6_" fill="#FF8D76"
+              d="M208.8,235c0,0,9.3-3.8,15.6,8.8c6.3,12.7-0.5,20.8-0.5,20.8S217.7,246.3,208.8,235z"/>
+        <path id="XMLID_173_" fill="#FEA691" d="M215.2,350.9c-8.8,4.1-14.9-1.6-14.9-1.6l-5.5-11.9l-9.9-21.4c14.9-3.2,27.9-5.7,27.9-5.7
+			l2.3,9.5l4.3,17.7C219.2,337.6,224,346.9,215.2,350.9z"/>
+        <path id="XMLID_171_" fill="#FF8D76" d="M215,319.9c-1.3,1.9-2.7,3.9-4.4,5.8c-4.3,5.1-10.5,9-15.9,11.7l-9.9-21.4
+			c14.9-3.2,27.9-5.7,27.9-5.7L215,319.9z"/>
+
+        <ellipse id="XMLID_3_" transform="matrix(0.8545 -0.5194 0.5194 0.8545 -114.0092 131.008)"
+                 fill="#FEA691" cx="176.9" cy="269" rx="47.2" ry="57.7"/>
+        <path id="XMLID_12_" fill="#FF8D76" d="M217.4,308.8c-2.9,3.7-6.5,6.9-10.6,9.5c-22.3,13.5-53.7,2.4-70.3-24.8
+			c-16.4-26.9-12-59.6,9.7-73.4c-12.6,16.2-13.2,42.2,0.3,64.3c16.5,27.2,48,38.3,70.3,24.8C217,309.1,217.2,309,217.4,308.8z"/>
+        <path id="XMLID_5_" fill="#283575" d="M157.2,309.5c0,0-17-13.4-21.3-37.4s0.5-33.7,20.2-45.3c19.7-11.5,34.4-7.4,34.4-7.4
+			s-14-10.5-36.9-6.6c-22.9,3.8-46.2,25.6-41.4,58.4C117.2,306.2,138,316.5,157.2,309.5z"/>
+        <path id="XMLID_11_" fill="#F76F59" d="M177.8,246.8c-2.7,1.9,1.1,12,9.3,19.5c8.2,7.5,16.1,3.6,16.3-3.8
+			C203.6,254.9,187.1,240.2,177.8,246.8z"/>
+        <path id="XMLID_7_" fill="#FF8D76"
+              d="M137.5,291.4c0,0-16,15.7-1.6,29.4c13.8,13.1,31.2-4.5,31.2-4.5S142.7,303.2,137.5,291.4z"
+        />
+        <path id="XMLID_250_" fill="#F76F59"
+              d="M139.4,300.5c0,0-9,8.8-0.9,16.6c7.8,7.4,17.6-2.5,17.6-2.5S142.3,307.2,139.4,300.5z"/>
+	</g>
+</g>
+    <g id="HAIR">
+	<g id="XMLID_84_">
+		<path id="XMLID_8_" fill="#283575" d="M188.5,218.1c0,0,1.7-30.2-15.5-42.5c-19.4-13.8-30.3,6.1-23.9,22.4
+			c2.8,7.3,5.8,11.7,8.2,14.3c2.2,2.4,5.2,3.8,8.4,4L188.5,218.1z"/>
+        <path id="XMLID_9_" fill="#283575" d="M122.7,192.6c-15.3,12.2-2.1,29.7,4.2,34.4c2.7,2,5.6,3.6,8.1,4.8c3.4,1.6,7.4,1.4,10.6-0.6
+			l21.6-13.7C167.2,217.6,143,176.5,122.7,192.6z"/>
+        <path id="XMLID_51_" fill="#3C4E8E"
+              d="M159,172.3c-4.8,0.6,0.5,9.8,7.5,11S171.3,170.8,159,172.3z"/>
+        <path id="XMLID_61_" fill="#3C4E8E"
+              d="M128.7,192.8c-2.8,3.2,4.5,7.3,10.4,5.3C145.1,196.2,134.9,185.8,128.7,192.8z"/>
+	</g>
+</g>
+    <g id="MOUTH">
+	<g id="XMLID_83_">
+		<path id="XMLID_177_" fill="#F76F59" d="M217.7,285c-0.5,1-1.2,1.9-2.2,2.7c-3.7,2.9-6.5,7.1-8.5,11.5c-1.8,3.9-6.4,8.5-10.7,5.2
+			c-0.5-0.4-1-0.8-1.4-1.4c-4.5-5.7-2.8-20.4,4.2-26.9c5.4-5,12.1-3.7,15.5-0.9C217.9,277.7,219.3,281.7,217.7,285z"/>
+        <path id="XMLID_175_" fill="#FF6EA9" d="M217.7,285c-0.5,1-1.2,1.9-2.2,2.7c-3.7,2.9-6.5,7.1-8.5,11.5c-1.8,3.9-6.4,8.5-10.7,5.2
+			c0-6.3,2.3-13.7,6.7-17.7C208.1,282.1,214.1,282.7,217.7,285z"/>
+	</g>
+</g>
+    <g id="EYE_1">
+	<g id="XMLID_14_">
+		<path id="XMLID_86_" fill="#1C3177" d="M155.8,267.7c-3.2,0-5.7-1-5.9-1.1c-1.3-0.5-1.9-2-1.4-3.3c0.5-1.3,2-1.9,3.3-1.4
+			c0.1,0,5.6,2.2,8.6-1.1c3.9-4.1-0.2-9.4-0.3-9.6c-0.9-1.1-0.7-2.7,0.4-3.6c1.1-0.9,2.7-0.7,3.6,0.4c2.4,3.1,5.5,10.4,0,16.2
+			C161.6,266.9,158.5,267.7,155.8,267.7z"/>
+	</g>
+</g>
+    <g id="EYE_2">
+	<g id="XMLID_15_">
+		<path id="XMLID_85_" fill="#1C3177" d="M193,242.6c-5.1,0-9.4-3.8-9.7-4c-1.1-0.9-1.1-2.6-0.2-3.6c0.9-1,2.5-1.1,3.6-0.2
+			c0,0,4.6,3.9,8,2.4c1.5-0.7,0.4-3.8,0.3-3.9c-0.5-1.3,0.1-2.8,1.5-3.3c1.3-0.5,2.8,0.1,3.3,1.4c1.5,3.7,1.1,8.6-3,10.4
+			C195.5,242.4,194.2,242.6,193,242.6z"/>
+	</g>
+</g>
+    <g id="EYEBROW_1">
+	<g id="XMLID_1_">
+		<path id="XMLID_88_" fill="#1C3177" d="M142.4,261.7c-0.1,0-0.2,0-0.3,0c-1.4-0.2-2.4-1.4-2.3-2.8c0-0.3,0.7-6.3,4.9-12.4
+			c4.1-6.1,8.3-8.2,8.5-8.3c1.3-0.6,2.8-0.1,3.4,1.2c0.6,1.3,0.1,2.8-1.2,3.4c0,0-3.2,1.7-6.5,6.5c-3.4,5-4,10-4,10.1
+			C144.8,260.7,143.7,261.7,142.4,261.7z"/>
+	</g>
+</g>
+    <g id="EYEBROW_2">
+	<g id="XMLID_13_">
+		<path id="XMLID_87_" fill="#1C3177" d="M179,232.1c-0.7,0-1.5-0.3-2-0.9c-0.9-1.1-0.7-2.7,0.4-3.6c0.3-0.2,2.6-2.1,6.7-3.3
+			c4.1-1.2,7.5-1.1,7.6-1.1c1.4,0,2.5,1.2,2.5,2.6c0,1.4-1.3,2.5-2.6,2.5c0,0-2.7-0.1-6,0.9c-3.2,1-5,2.4-5,2.4
+			C180.1,231.9,179.6,232.1,179,232.1z"/>
+	</g>
+</g>
+    <g id="TABLE">
+	<g id="XMLID_248_">
+		<path id="XMLID_22_" fill="#99ADF9" d="M505.9,506.3H98.3c-4,0-7.2-3.2-7.2-7.2l0,0c0-4,3.2-7.2,7.2-7.2h407.6
+			c4,0,7.2,3.2,7.2,7.2l0,0C513.1,503,509.9,506.3,505.9,506.3z"/>
+        <path id="XMLID_198_" fill="#789FEF" d="M505.2,506.3H157.1c-4,0-7.2-3.2-7.2-7.2l0,0c0-4,3.2-7.2,7.2-7.2h348.1
+			c4,0,7.2,3.2,7.2,7.2l0,0C512.5,503,509.2,506.3,505.2,506.3z"/>
+	</g>
+</g>
+    <g id="DESKTOP">
+	<g id="XMLID_186_">
+		<g id="XMLID_182_">
+			<path id="XMLID_25_" fill="#E1ECFF" d="M457.6,444.7h-186c-3.3,0-5.9-3-5.3-6.3l19.8-118.7c0.4-2.6,2.7-4.5,5.3-4.5h186
+				c3.3,0,5.9,3,5.3,6.3L463,440.2C462.5,442.8,460.3,444.7,457.6,444.7z"/>
+            <path id="XMLID_29_" fill="#C7DCF9" d="M461.6,444.7H278c-3.3,0-5.9-3-5.3-6.3l19.8-118.7c0.4-2.6,2.7-4.5,5.3-4.5h183.6
+				c3.3,0,5.9,3,5.3,6.3l-19.8,118.7C466.5,442.8,464.2,444.7,461.6,444.7z"/>
+            <path id="XMLID_31_" fill="#B7D4F7" d="M442.2,432H302c-2.6,0-4.5-2.3-4.1-4.8l15.1-90.6c0.3-2,2.1-3.5,4.1-3.5h140.1
+				c2.6,0,4.5,2.3,4.1,4.8l-15.1,90.6C445.9,430.5,444.2,432,442.2,432z"/>
+		</g>
+        <g id="XMLID_183_">
+			<path id="XMLID_24_" fill="#E1ECFF" d="M382.3,484.5h-25.5c-2.4,0-4.2-2-4-4.4l6.7-66.5c0.2-2,1.9-3.6,4-3.6H389
+				c2.4,0,4.2,2,4,4.4l-6.7,66.5C386.1,483,384.4,484.5,382.3,484.5z"/>
+            <path id="XMLID_26_" fill="#C7DCF9" d="M384.1,484.5h-23.4c-1.5,0-2.7-1.3-2.6-2.8l7-69.4c0.1-1.3,1.2-2.3,2.6-2.3h23.4
+				c1.5,0,2.7,1.3,2.6,2.8l-7,69.4C386.5,483.5,385.4,484.5,384.1,484.5z"/>
+		</g>
+        <g id="XMLID_185_">
+			<path id="XMLID_27_" fill="#E1ECFF" d="M424.7,491.8H318.5c-2.2,0-4-1.8-4-4V479c0-2.2,1.8-4,4-4h106.2c2.2,0,4,1.8,4,4v8.8
+				C428.7,490,426.9,491.8,424.7,491.8z"/>
+            <path id="XMLID_30_" fill="#C7DCF9" d="M426.9,491.8H327c-2.3,0-4.2-1.9-4.2-4.2v-8.4c0-2.3,1.9-4.2,4.2-4.2h99.9
+				c2.3,0,4.2,1.9,4.2,4.2v8.4C431,489.9,429.2,491.8,426.9,491.8z"/>
+		</g>
+	</g>
+</g>
+    <g id="SIGN">
+	<g id="XMLID_21_">
+		<path id="XMLID_77_" fill="#FF97C9" d="M501.5,298.7c-1,0.7-2.3,1.2-3.7,1.2H402c-4.8,0-7.8-5-5.6-9.3l34.8-66.9l12.8-24.6
+			c2.4-4.5,8.8-4.5,11.2,0l48.2,91.5C505,293.6,503.9,297,501.5,298.7z"/>
+        <path id="XMLID_74_" fill="#FC72BB" d="M501.5,298.7c-1,0.7-2.3,1.2-3.7,1.2H402c-4.8,0-7.8-5-5.6-9.3l34.8-66.9L420.6,280
+			c-0.9,4.8,2.4,9.3,7.3,9.9L501.5,298.7z"/>
+        <g id="XMLID_32_">
+			<g id="XMLID_34_">
+				<path id="XMLID_35_" fill="#FFFFFF" d="M445.2,264.1l-5-35.8c-0.2-1.2,0.8-2.3,2-2.3h14.2c1.2,0,2.1,1.1,2,2.3l-5,35.8
+					c-0.1,1-1,1.7-2,1.7h-4.3C446.1,265.9,445.3,265.1,445.2,264.1z"/>
+			</g>
+            <circle id="XMLID_33_" fill="#FFFFFF" cx="449.3" cy="279.1" r="7.1"/>
+		</g>
+	</g>
+</g>
+    <g id="STAR">
+	<path id="XMLID_195_" fill="#FEC272" d="M189.7,141.2l1.8,3.7c0.2,0.5,0.7,0.8,1.2,0.8l4,0.6c1.3,0.2,1.8,1.7,0.8,2.6l-2.9,2.8
+		c-0.4,0.4-0.5,0.9-0.4,1.4l0.7,4c0.2,1.2-1.1,2.2-2.2,1.6l-3.6-1.9c-0.4-0.2-1-0.2-1.4,0l-3.6,1.9c-1.1,0.6-2.4-0.4-2.2-1.6l0.7-4
+		c0.1-0.5-0.1-1-0.4-1.4l-2.9-2.8c-0.9-0.9-0.4-2.4,0.8-2.6l4-0.6c0.5-0.1,0.9-0.4,1.2-0.8l1.8-3.7
+		C187.5,140.1,189.1,140.1,189.7,141.2"/>
+</g>
+    <g id="BUBBLE_1">
+	<path id="XMLID_23_" fill="#F0F6FF" d="M384.3,170.2c0,13.8-4,26.6-10.9,37.5c0,0,0,0,0,0c-2.5,5.8-15.1,30.3-57.9,49.9
+		c-44.9,20.6-84.7,5.9-84.7,5.9s24.5-16.1,19.9-43c-3.6-21.2-6.1-36.4-5.9-49.2c0-0.4,0-0.7,0-1.1c0-38.5,31.2-69.7,69.7-69.7
+		S384.3,131.7,384.3,170.2z"/>
+</g>
+    <g id="BUBBLE_2">
+	<path id="XMLID_187_" fill="#C7DCF9" d="M238.1,216.5c-3.7-9.5-7.4-9.1-9.9-7.3c-2.3,1.7-2.8,7.6,0,13.2s5.6,5.2,8.4,3.7
+		S239.8,220.9,238.1,216.5z"/>
+</g>
+    <g id="BUBBLE_3">
+	<path id="XMLID_249_" fill="#C7DCF9" d="M361.6,237.5c-15.4,8.2-14,14.5-10.4,18.3c3.4,3.6,13.5,3.2,22.4-2.6s7.8-10.5,4.7-15
+		C375.2,233.7,368.7,233.6,361.6,237.5z"/>
+</g>
+    <g id="Layer_23">
+	<g id="XMLID_75_">
+		<g id="XMLID_73_">
+			<path id="XMLID_274_" fill="#99ADF9" d="M364.6,191.8c0,3.8-1.8,7.6-5.2,9.9c-7.4,5.2-19.2,12.9-32.2,19.7
+				c-8.3,4.4-15.5,7.8-21.3,10.3c-4.8,2.1-10.1,1.7-14.4-0.7c-2.9-1.6-5.3-4.1-6.8-7.3c-1-2.2-1.6-4.6-1.6-7c0-2,0.4-4,1.1-6
+				l0.4-1.1l17.2-43.6l-23,12.4c-6.4,3.4-14.3,1.2-18-5.1c-0.1-0.2-0.2-0.4-0.3-0.6c-1-2-1.5-4.1-1.5-6.2c0-4.4,2.2-8.8,6.2-11.3
+				c7.3-4.7,17.9-11.1,30.5-17.8c24.2-12.9,36.2-11.3,39.6-4.8c3.4,6.6-16.1,61.8-16.1,61.8s26.1-13.1,28.9-14.1
+				c6-2.3,12.7,0.5,15.4,6.3c0.6,1.3,0.9,2.7,1,4.1C364.6,191.2,364.6,191.5,364.6,191.8z"/>
+            <path id="XMLID_267_" fill="#7D9AF9" d="M309.1,158.8c-5.8,14.3-19.5,47.2-24.3,50.9l17.2-43.6l-23,12.4
+				c-6.4,3.5-14.5,1.2-18.1-5.2c0.2-0.2,0,0,0.2-0.2c2.3,1.1,6.4,2.1,12.5-0.9c11.4-5.4,24.4-12.5,31.9-16.6
+				C307.6,154.5,310,156.6,309.1,158.8z"/>
+            <path id="XMLID_264_" fill="#7D9AF9" d="M364.6,191.8c0,3.8-1.8,7.6-5.2,9.9c-7.4,5.2-19.2,12.9-32.2,19.7
+				c-8.3,4.4-15.5,7.8-21.3,10.3c-4.8,2.1-10.1,1.7-14.4-0.7c0.9-0.2,1.8-0.4,2.6-0.7c4.5-1.5,24.8-12.2,44.7-22.9
+				c13-7,21.8-12.6,25.7-16.4C364.6,191.2,364.6,191.5,364.6,191.8z"/>
+		</g>
+        <path id="XMLID_76_" opacity="0.49" fill="#FFFFFF" d="M314.2,131.6c-9,3-13.6,8.6-2.8,8s16.5-6.1,14.6-7.9
+			C324.1,130,318.3,130.2,314.2,131.6z"/>
+        <path id="XMLID_80_" opacity="0.49" fill="#FFFFFF" d="M348.7,182.6c-5.7,1.9-8.7,5.5-1.8,5.1c6.9-0.4,10.5-3.9,9.3-5
+			C354.9,181.6,351.3,181.7,348.7,182.6z"/>
+	</g>
+</g>
+</svg>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 32 - 0
src/assets/images/exception/403.svg


Dosya farkı çok büyük olduğundan ihmal edildi
+ 32 - 0
src/assets/images/exception/404.svg


Dosya farkı çok büyük olduğundan ihmal edildi
+ 36 - 0
src/assets/images/exception/500.svg


Dosya farkı çok büyük olduğundan ihmal edildi
+ 32 - 0
src/assets/images/exception/developing.svg


Dosya farkı çok büyük olduğundan ihmal edildi
+ 32 - 0
src/assets/images/exception/load-error.svg


Dosya farkı çok büyük olduğundan ihmal edildi
+ 32 - 0
src/assets/images/exception/nodata.svg


+ 127 - 0
src/assets/images/login.svg

@@ -0,0 +1,127 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1361px"
+     height="609px" viewBox="0 0 1361 609" version="1.1">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>Group 21</title>
+    <desc>Created with Sketch.</desc>
+    <defs/>
+    <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
+            <g id="Group-21" transform="translate(77.000000, 73.000000)">
+                <g id="Group-18" opacity="0.8"
+                   transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
+                    <ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367"
+                             rx="21.7830479" ry="21.766008"/>
+                    <ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601"
+                             rx="5.2173913" ry="5.21330997"/>
+                    <path
+                            d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z"
+                            id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"/>
+                    <path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6"
+                          stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"/>
+                    <path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7"
+                          stroke-width="0.702678964" opacity="0.7" stroke-linecap="round"
+                          stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"/>
+                    <path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9"
+                          stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round"
+                          stroke-dasharray="1.405357899873153,2.108036953469981"/>
+                    <g id="Group-17"
+                       transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)"
+                       fill="#CFDAE6">
+                        <ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653"
+                                 ry="9.12768076"/>
+                        <path
+                                d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z"
+                                id="Oval-4"
+                                transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "/>
+                    </g>
+                </g>
+                <g id="Group-14"
+                   transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
+                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439"
+                             rx="29.1176471" ry="29.1402439"/>
+                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439"
+                             rx="21.5686275" ry="21.5853659"/>
+                    <ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341"
+                             rx="23.7254902" ry="23.7439024"/>
+                    <ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439"
+                             rx="10.7843137" ry="10.7926829"/>
+                    <path
+                            d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z"
+                            id="Oval-2" fill="#BACAD9"/>
+                    <g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)"
+                       fill="#E6A1A6">
+                        <ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824"
+                                 ry="6.47560976"/>
+                        <path
+                                d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z"
+                                id="Oval-2-Copy-2"
+                                transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "/>
+                    </g>
+                    <ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706"
+                             ry="1.61890244"/>
+                    <ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098"
+                             rx="1.61764706" ry="1.61890244"/>
+                    <ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488"
+                             rx="2.15686275" ry="2.15853659"/>
+                    <path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6"
+                          opacity="0.8"/>
+                </g>
+                <g id="Group-10" opacity="0.799999952"
+                   transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
+                    <ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32"
+                             rx="11.1864407" ry="11.2941176"/>
+                    <g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
+                        <ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627"
+                                 ry="8.55614973"/>
+                        <path
+                                d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z"
+                                id="Oval-7"/>
+                    </g>
+                    <path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6"
+                          stroke-width="0.941176471"/>
+                    <ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186"
+                             cy="3.29411765" rx="3.26271186" ry="3.29411765"/>
+                    <ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017"
+                             ry="2.82352941"/>
+                    <path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6"
+                          stroke-width="0.941176471"/>
+                </g>
+                <g id="Group-19" opacity="0.33"
+                   transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
+                    <g id="Group-17"
+                       transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)"
+                       fill="#BACAD9">
+                        <circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"/>
+                        <path
+                                d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z"
+                                id="Oval-4"
+                                transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "/>
+                    </g>
+                    <circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"/>
+                    <path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9"
+                          stroke-width="1.16666667"/>
+                    <path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9"
+                          stroke-width="1.16666667"/>
+                    <polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667"
+                              points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"/>
+                    <path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7"
+                          stroke-width="1.16666667" opacity="0.6"/>
+                    <path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9"
+                          stroke-width="1.16666667"/>
+                    <path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6"
+                          stroke-width="1.16666667"/>
+                    <circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"/>
+                    <circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"/>
+                    <circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25"
+                            r="8.75"/>
+                    <circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333"
+                            cy="30.3333333" r="5.83333333"/>
+                    <circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"/>
+                </g>
+            </g>
+        </g>
+    </g>
+    <div xmlns="" id="divScriptsUsed" style="display: none"/>
+    <script xmlns="" id="globalVarsDetection"
+            src="chrome-extension://cmkdbmfndkfgebldhnkbfhlneefdaaip/js/wrs_env.js"/>
+</svg>

BIN
src/assets/images/logo.png


+ 34 - 0
src/components/Application/Application.vue

@@ -0,0 +1,34 @@
+<template>
+  <n-loading-bar-provider>
+    <n-dialog-provider>
+      <DialogContent />
+      <n-notification-provider>
+        <n-message-provider>
+          <MessageContent />
+          <slot></slot>
+        </n-message-provider>
+      </n-notification-provider>
+    </n-dialog-provider>
+  </n-loading-bar-provider>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue'
+export default defineComponent({
+  name: 'Application'
+})
+</script>
+
+<script lang="ts" setup>
+import {
+  NDialogProvider,
+  NNotificationProvider,
+  NMessageProvider,
+  NLoadingBarProvider
+} from 'naive-ui'
+
+// @ts-ignore
+import { MessageContent } from '@/components/MessageContent'
+// @ts-ignore
+import { DialogContent } from '@/components/DialogContent'
+</script>

+ 3 - 0
src/components/Application/index.ts

@@ -0,0 +1,3 @@
+import AppProvider from './Application.vue';
+
+export { AppProvider };

+ 3 - 0
src/components/DialogContent/index.ts

@@ -0,0 +1,3 @@
+import DialogContent from './index.vue';
+
+export { DialogContent };

+ 12 - 0
src/components/DialogContent/index.vue

@@ -0,0 +1,12 @@
+<template></template>
+<script lang="ts">
+  import { useDialog } from 'naive-ui';
+
+  export default {
+    name: 'DialogContent',
+    setup() {
+      //挂载在 window 方便与在js中使用
+      window['$dialog'] = useDialog();
+    },
+  };
+</script>

+ 3 - 0
src/components/MessageContent/index.ts

@@ -0,0 +1,3 @@
+import MessageContent from './index.vue';
+
+export { MessageContent };

+ 12 - 0
src/components/MessageContent/index.vue

@@ -0,0 +1,12 @@
+<template></template>
+<script lang="ts">
+  import { useMessage } from 'naive-ui';
+
+  export default {
+    name: 'MessageContent',
+    setup() {
+      //挂载在 window 方便与在js中使用
+      window['$message'] = useMessage();
+    },
+  };
+</script>

+ 1 - 0
src/directives/index.ts

@@ -0,0 +1 @@
+export default {}

+ 34 - 0
src/enums/httpEnum.ts

@@ -0,0 +1,34 @@
+/**
+ * @description: 请求结果集
+ */
+export enum ResultEnum {
+  SUCCESS = 200,
+  ERROR = -1,
+  TIMEOUT = 10042,
+  TYPE = 'success',
+}
+
+/**
+ * @description: 请求方法
+ */
+export enum RequestEnum {
+  GET = 'GET',
+  POST = 'POST',
+  PATCH = 'PATCH',
+  PUT = 'PUT',
+  DELETE = 'DELETE',
+}
+
+/**
+ * @description:  常用的contentTyp类型
+ */
+export enum ContentTypeEnum {
+  // json
+  JSON = 'application/json;charset=UTF-8',
+  // json
+  TEXT = 'text/plain;charset=UTF-8',
+  // form-data 一般配合qs
+  FORM_URLENCODED = 'application/x-www-form-urlencoded;charset=UTF-8',
+  // form-data  上传
+  FORM_DATA = 'multipart/form-data;charset=UTF-8',
+}

+ 15 - 0
src/enums/pageEnum.ts

@@ -0,0 +1,15 @@
+export enum PageEnum {
+  // 登录
+  BASE_LOGIN = '/login',
+  BASE_LOGIN_NAME = 'Login',
+  //重定向
+  REDIRECT = '/redirect',
+  REDIRECT_NAME = 'Redirect',
+  // 首页
+  BASE_HOME = '/project',
+  BASE_HOME_NAME = 'Project',
+  //首页跳转默认路由
+  BASE_HOME_REDIRECT = '/project',
+  // 错误
+  ERROR_PAGE_NAME = 'ErrorPage',
+}

+ 3 - 0
src/layout/components/Main/index.ts

@@ -0,0 +1,3 @@
+import MainView from './index.vue';
+
+export { MainView };

+ 16 - 0
src/layout/components/Main/index.vue

@@ -0,0 +1,16 @@
+<template>
+  <RouterView>
+    <template #default="{ Component, route }">
+      <transition name="zoom-fade" mode="out-in" appear>
+        <keep-alive>
+          <component :is="Component" :key="route.fullPath" />
+        </keep-alive>
+      </transition>
+    </template>
+  </RouterView>
+</template>
+
+<script lang="ts" setup>
+import { defineProps} from 'vue'
+const props = defineProps(['notNeedKey', 'animate'])
+</script>

+ 96 - 0
src/layout/index.vue

@@ -0,0 +1,96 @@
+<template>
+  <MainView />
+</template>
+
+<script lang="ts" setup>
+import { ref, onMounted } from 'vue'
+import { useLoadingBar } from 'naive-ui'
+import { MainView } from '@/layout/components/Main/index'
+const collapsed = ref<boolean>(false)
+
+const watchWidth = () => {
+  const Width = document.body.clientWidth
+  if (Width <= 950) {
+    collapsed.value = true
+  } else collapsed.value = false
+}
+
+onMounted(() => {
+  window.addEventListener('resize', watchWidth)
+  //挂载在 window 方便与在js中使用
+  window['$loading'] = useLoadingBar()
+  window['$loading'].finish()
+})
+</script>
+
+<style lang="scss" scoped>
+.layout {
+  display: flex;
+  flex-direction: row;
+  flex: auto;
+
+  &-default-background {
+    background: #f5f7f9;
+  }
+
+  .layout-sider {
+    min-height: 100vh;
+    box-shadow: 2px 0 8px 0 rgb(29 35 41 / 5%);
+    position: relative;
+    z-index: 13;
+    transition: all 0.2s ease-in-out;
+  }
+
+  .layout-sider-fix {
+    position: fixed;
+    top: 0;
+    left: 0;
+  }
+
+  .ant-layout {
+    overflow: hidden;
+  }
+
+  .layout-right-fix {
+    overflow-x: hidden;
+    padding-left: 200px;
+    min-height: 100vh;
+    transition: all 0.2s ease-in-out;
+  }
+
+  .layout-content {
+    flex: auto;
+    min-height: 100vh;
+  }
+
+  .n-layout-header.n-layout-header--absolute-positioned {
+    z-index: 11;
+  }
+
+  .n-layout-footer {
+    background: none;
+  }
+}
+
+.layout-content-main {
+  margin: 0 10px 10px;
+  position: relative;
+  padding-top: 64px;
+}
+
+.layout-content-main-fix {
+  padding-top: 64px;
+}
+
+.fluid-header {
+  padding-top: 0px;
+}
+
+.main-view-fix {
+  padding-top: 44px;
+}
+
+.noMultiTabs {
+  padding-top: 0;
+}
+</style>

+ 3 - 0
src/layout/parentLayout.vue

@@ -0,0 +1,3 @@
+<template>
+  <router-view />
+</template>

+ 34 - 0
src/main.ts

@@ -0,0 +1,34 @@
+import { createApp } from 'vue';
+import App from './App.vue';
+import router, { setupRouter } from '@/router';
+import { setupStore } from '@/store';
+import { setupNaive, setupDirectives } from '@/plugins';
+import { AppProvider } from '@/components/Application';
+
+async function bootstrap() {
+  const appProvider = createApp(AppProvider);
+
+  const app = createApp(App);
+
+  // 注册全局常用的 naive-ui 组件
+  setupNaive(app);
+
+  // 注册全局自定义指令,如:v-permission权限指令
+  setupDirectives(app);
+
+  // 挂载状态管理
+  setupStore(app);
+
+  //优先挂载一下 Provider 解决路由守卫,Axios中可使用,Dialog,Message 等之类组件
+  appProvider.mount('#appProvider', true);
+
+  // 挂载路由
+  await setupRouter(app);
+
+  // 路由准备就绪后挂载APP实例
+  await router.isReady();
+
+  app.mount('#app', true);
+}
+
+void bootstrap();

+ 7 - 0
src/plugins/customComponents.ts

@@ -0,0 +1,7 @@
+/**
+ * 全局注册自定义组件 待完善
+ * @param app
+ */
+export function setupCustomComponents() {
+  // app.component()
+}

+ 11 - 0
src/plugins/directives.ts

@@ -0,0 +1,11 @@
+import { App } from 'vue';
+
+// import { x } from '@/directives';
+
+/**
+ * 注册全局自定义指令
+ * @param app
+ */
+export function setupDirectives(app: App) {
+  // app.directive('x', x);
+}

+ 5 - 0
src/plugins/globalMethods.ts

@@ -0,0 +1,5 @@
+/**
+ * 注册全局方法 待完善
+ * @param app
+ */
+export function setupGlobalMethods() {}

+ 4 - 0
src/plugins/index.ts

@@ -0,0 +1,4 @@
+export { setupNaive } from '@/plugins/naive';
+export { setupDirectives } from '@/plugins/directives';
+export { setupCustomComponents } from '@/plugins/customComponents';
+export { setupGlobalMethods } from '@/plugins/globalMethods';

+ 143 - 0
src/plugins/naive.ts

@@ -0,0 +1,143 @@
+import type { App } from 'vue';
+import {
+  create,
+  NConfigProvider,
+  NMessageProvider,
+  NDialogProvider,
+  NInput,
+  NButton,
+  NForm,
+  NFormItem,
+  NCheckboxGroup,
+  NCheckbox,
+  NIcon,
+  NLayout,
+  NLayoutHeader,
+  NLayoutContent,
+  NLayoutFooter,
+  NLayoutSider,
+  NMenu,
+  NBreadcrumb,
+  NBreadcrumbItem,
+  NDropdown,
+  NSpace,
+  NTooltip,
+  NAvatar,
+  NTabs,
+  NTabPane,
+  NCard,
+  NRow,
+  NCol,
+  NDrawer,
+  NDrawerContent,
+  NDivider,
+  NSwitch,
+  NBadge,
+  NAlert,
+  NElement,
+  NTag,
+  NNotificationProvider,
+  NProgress,
+  NDatePicker,
+  NGrid,
+  NGridItem,
+  NList,
+  NListItem,
+  NThing,
+  NDataTable,
+  NPopover,
+  NPagination,
+  NSelect,
+  NRadioGroup,
+  NRadio,
+  NSteps,
+  NStep,
+  NInputGroup,
+  NResult,
+  NDescriptions,
+  NDescriptionsItem,
+  NTable,
+  NInputNumber,
+  NLoadingBarProvider,
+  NModal,
+  NUpload,
+  NTree,
+  NSpin,
+  NTimePicker,
+  NBackTop,
+  NSkeleton,
+} from 'naive-ui';
+
+const naive = create({
+  components: [
+    NMessageProvider,
+    NDialogProvider,
+    NConfigProvider,
+    NInput,
+    NButton,
+    NForm,
+    NFormItem,
+    NCheckboxGroup,
+    NCheckbox,
+    NIcon,
+    NLayout,
+    NLayoutHeader,
+    NLayoutContent,
+    NLayoutFooter,
+    NLayoutSider,
+    NMenu,
+    NBreadcrumb,
+    NBreadcrumbItem,
+    NDropdown,
+    NSpace,
+    NTooltip,
+    NAvatar,
+    NTabs,
+    NTabPane,
+    NCard,
+    NRow,
+    NCol,
+    NDrawer,
+    NDrawerContent,
+    NDivider,
+    NSwitch,
+    NBadge,
+    NAlert,
+    NElement,
+    NTag,
+    NNotificationProvider,
+    NProgress,
+    NDatePicker,
+    NGrid,
+    NGridItem,
+    NList,
+    NListItem,
+    NThing,
+    NDataTable,
+    NPopover,
+    NPagination,
+    NSelect,
+    NRadioGroup,
+    NRadio,
+    NSteps,
+    NStep,
+    NInputGroup,
+    NResult,
+    NDescriptions,
+    NDescriptionsItem,
+    NTable,
+    NInputNumber,
+    NLoadingBarProvider,
+    NModal,
+    NUpload,
+    NTree,
+    NSpin,
+    NTimePicker,
+    NBackTop,
+    NSkeleton,
+  ],
+});
+
+export function setupNaive(app: App<Element>) {
+  app.use(naive);
+}

+ 44 - 0
src/router/base.ts

@@ -0,0 +1,44 @@
+import type { AppRouteRecordRaw } from '@/router/types';
+import { ErrorPage, RedirectName, Layout } from '@/router/constant';
+
+// 404 on a page
+export const ErrorPageRoute: AppRouteRecordRaw = {
+  path: '/:path(.*)*',
+  name: 'ErrorPage',
+  component: Layout,
+  meta: {
+    title: 'ErrorPage',
+    hideBreadcrumb: true,
+  },
+  children: [
+    {
+      path: '/:path(.*)*',
+      name: 'ErrorPageSon',
+      component: ErrorPage,
+      meta: {
+        title: 'ErrorPage',
+        hideBreadcrumb: true,
+      },
+    },
+  ],
+};
+
+export const RedirectRoute: AppRouteRecordRaw = {
+  path: '/redirect',
+  name: RedirectName,
+  component: Layout,
+  meta: {
+    title: RedirectName,
+  },
+  children: [
+    {
+      path: '/redirect/:path(.*)',
+      name: RedirectName,
+      component: () => import('@/views/redirect/index.vue'),
+      meta: {
+        title: RedirectName,
+        hideBreadcrumb: true,
+      },
+    },
+  ],
+};

+ 7 - 0
src/router/constant.ts

@@ -0,0 +1,7 @@
+export const RedirectName = 'Redirect';
+
+export const ErrorPage = () => import('@/views/exception/404.vue');
+
+export const Layout = () => import('@/layout/index.vue');
+
+export const ParentLayout = () => import('@/layout/parentLayout.vue');

+ 47 - 0
src/router/index.ts

@@ -0,0 +1,47 @@
+import type { App } from 'vue';
+import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
+import { RedirectRoute } from '@/router/base';
+import { createRouterGuards } from './router-guards';
+import { PageEnum } from '@/enums/pageEnum';
+import modules from '@/router/modules'
+
+const RootRoute: Array<RouteRecordRaw> = [
+  {
+    path: '/',
+    name: 'Root',
+    redirect: PageEnum.BASE_HOME_NAME,
+    component: () => import('@/views/project/index.vue'),
+    meta: {
+      title: 'Root',
+    },
+    children: [
+      modules.projectRoutes
+    ]
+  }
+]
+
+export const LoginRoute: RouteRecordRaw = {
+  path: '/login',
+  name: 'Login',
+  component: () => import('@/views/login/index.vue'),
+  meta: {
+    title: '登录',
+  },
+};
+
+export const constantRouter: any[] = [LoginRoute, ...RootRoute, RedirectRoute];
+
+console.log(constantRouter)
+
+const router = createRouter({
+  history: createWebHashHistory(''),
+  routes: constantRouter,
+  strict: true,
+})
+
+export function setupRouter(app: App) {
+  app.use(router);
+  // 创建路由守卫
+  createRouterGuards(router);
+}
+export default router

+ 5 - 0
src/router/modules/index.ts

@@ -0,0 +1,5 @@
+import projectRoutes from './project.router'
+
+export default {
+  projectRoutes
+}

+ 13 - 0
src/router/modules/project.router.ts

@@ -0,0 +1,13 @@
+import { RouteRecordRaw } from 'vue-router';
+
+const projectRoutes: RouteRecordRaw = {
+  path: '/project',
+  name: 'Project',
+  component: () => import('@/views/project/index.vue'),
+  meta: {
+    title: '项目',
+    isRoot: true,
+  }
+};
+
+export default projectRoutes;

+ 31 - 0
src/router/router-guards.ts

@@ -0,0 +1,31 @@
+import type { RouteRecordRaw } from 'vue-router';
+import { Router } from 'vue-router';
+import { ErrorPageRoute } from '@/router/base';
+
+export function createRouterGuards(router: Router) {
+  // 前置
+  router.beforeEach(async (to, from, next) => {
+    const Loading = window['$loading'] || null;
+    Loading && Loading.start();
+
+    //添加404
+    const isErrorPage = router.getRoutes().findIndex((item) => item.name === ErrorPageRoute.name);
+    if (isErrorPage === -1) {
+      router.addRoute(ErrorPageRoute as unknown as RouteRecordRaw);
+    }
+
+    next()
+    Loading && Loading.finish();
+  })
+
+  router.afterEach((to, _, failure) => {
+    document.title = (to?.meta?.title as string) || document.title;
+    const Loading = window['$loading'] || null;
+    Loading && Loading.finish();
+  })
+
+  // 错误
+  router.onError((error) => {
+    console.log(error, '路由错误');
+  });
+}

+ 38 - 0
src/router/types.ts

@@ -0,0 +1,38 @@
+import type { RouteRecordRaw, RouteMeta } from 'vue-router';
+import { defineComponent } from 'vue';
+
+export type Component<T extends any = any> =
+  | ReturnType<typeof defineComponent>
+  | (() => Promise<typeof import('*.vue')>)
+  | (() => Promise<T>);
+  
+// @ts-ignore
+export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
+  name: string;
+  meta: RouteMeta;
+  component?: Component | string;
+  components?: Component;
+  children?: AppRouteRecordRaw[];
+  props?: Recordable;
+  fullPath?: string;
+}
+
+export interface Meta {
+  // 名称
+  title: string;
+  // 是否忽略权限
+  ignoreAuth?: boolean;
+  permissions?: string[];
+  // 是否不缓存
+  noKeepAlive?: boolean;
+  // 是否固定在tab上
+  affix?: boolean;
+  // tab上的图标
+  icon?: string;
+  // 跳转地址
+  frameSrc?: string;
+  // 外链跳转地址
+  externalLink?: string;
+  //隐藏
+  hidden?: boolean;
+}

+ 32 - 0
src/settings/designSetting.ts

@@ -0,0 +1,32 @@
+// app theme preset color
+export const appThemeList: string[] = [
+  '#2d8cf0',
+  '#0960bd',
+  '#0084f4',
+  '#009688',
+  '#536dfe',
+  '#ff5c93',
+  '#ee4f12',
+  '#0096c7',
+  '#9c27b0',
+  '#ff9800',
+  '#FF3D68',
+  '#00C1D4',
+  '#71EFA3',
+  '#171010',
+  '#78DEC7',
+  '#1768AC',
+  '#FB9300',
+  '#FC5404',
+];
+
+const setting = {
+  //深色主题
+  darkTheme: false,
+  //系统主题色
+  appTheme: '#2d8cf0',
+  //系统内置主题色列表
+  appThemeList,
+};
+
+export default setting;

+ 10 - 0
src/store/index.ts

@@ -0,0 +1,10 @@
+import type { App } from 'vue';
+import { createPinia } from 'pinia';
+
+const store = createPinia();
+
+export function setupStore(app: App<Element>) {
+  app.use(store);
+}
+
+export { store };

+ 8 - 0
src/store/modules/designStore/designStore.d.ts

@@ -0,0 +1,8 @@
+export interface DesignStateType {
+  //深色主题
+  darkTheme: boolean;
+  //系统风格
+  appTheme: string;
+  //系统内置风格
+  appThemeList: string[];
+}

+ 29 - 0
src/store/modules/designStore/designStore.ts

@@ -0,0 +1,29 @@
+import { defineStore } from 'pinia';
+import { store } from '@/store';
+import designSetting from '@/settings/designSetting';
+const { darkTheme, appTheme, appThemeList } = designSetting;
+import { DesignStateType } from './designStore.d'
+
+export const useDesignStore = defineStore({
+  id: 'useDesignStore',
+  state: (): DesignStateType => ({
+    darkTheme,
+    appTheme,
+    appThemeList,
+  }),
+  getters: {
+    getDarkTheme(): boolean {
+      return this.darkTheme;
+    },
+    getAppTheme(): string {
+      return this.appTheme;
+    },
+    getAppThemeList(): string[] {
+      return this.appThemeList;
+    },
+  },
+});
+
+export function useDesignSettingWithOut() {
+  return useDesignStore(store);
+}

+ 2 - 0
src/store/mutation-types.ts

@@ -0,0 +1,2 @@
+export const ACCESS_TOKEN = 'ACCESS-TOKEN'; // 用户token
+export const CURRENT_USER = 'CURRENT-USER'; // 当前用户信息

+ 5 - 0
src/store/types.ts

@@ -0,0 +1,5 @@
+import { DesignStateType } from '@/store/modules/designStore/designStore.d';
+
+export interface allStore {
+  useDesignStore: DesignStateType;
+}

+ 7 - 0
src/styles/global/style.scss

@@ -0,0 +1,7 @@
+// 样式类型
+
+// 毛玻璃
+.bg-filter {
+  backdrop-filter: blur(2px);
+  background-color: rgba(0, 0, 0, 0.07);
+}

+ 1 - 0
src/styles/global/var.scss

@@ -0,0 +1 @@
+// 变量

+ 34 - 0
src/utils/comp.ts

@@ -0,0 +1,34 @@
+import { Component, DefineComponent } from "vue";
+import { App, Plugin, getCurrentInstance } from "vue";
+
+interface Registed {
+  [key: string]: boolean;
+}
+let registed: Registed = {};
+
+interface Comp {
+  displayName?: string;
+  name?: string;
+}
+
+type RegisteComp = (comp: Comp & Plugin) => void;
+
+const registeComp: RegisteComp = comp => {
+  const name = comp.displayName || comp.name;
+
+  if (name && !registed[name]) {
+    const instance = getCurrentInstance();
+    const app = instance?.appContext.app;
+    if (app) {
+      app.use(comp);
+      registed[name] = true;
+    }
+  }
+};
+
+const regComp: (comp: any) => void = comp => {
+  const instance = getCurrentInstance();
+  const app = instance?.appContext.app;
+  app?.component(comp?.name, comp);
+};
+export { registeComp, regComp };

+ 43 - 0
src/utils/index.ts

@@ -0,0 +1,43 @@
+import { h, unref } from 'vue';
+import { NIcon, NTag } from 'naive-ui';
+import type { App, Plugin } from 'vue';
+
+/**
+ * 生成一个用不重复的ID
+ * @param { Number } randomLength
+ */
+function getUUID(randomLength: number) {
+  return Number(
+    Math.random()
+      .toString()
+      .substr(2, randomLength) + Date.now()
+  ).toString(36);
+}
+
+
+/**
+ * render new Tag
+ * */
+ const newTagColors = { color: '#f90', textColor: '#fff', borderColor: '#f90' };
+ export function renderNew(type = 'warning', text = 'New', color: object = newTagColors) {
+   return () =>
+     h(
+       NTag as any,
+       {
+         type,
+         round: true,
+         size: 'small',
+         color,
+       },
+       { default: () => text }
+     );
+ }
+
+/**
+ * render 图标
+ * */
+export function renderIcon(icon: any) {
+  return () => h(NIcon, null, { default: () => h(icon) });
+}
+
+export { getUUID };

+ 40 - 0
src/views/exception/403.vue

@@ -0,0 +1,40 @@
+<template>
+  <div class="flex flex-col justify-center page-container">
+    <div class="text-center">
+      <img src="~@/assets/images/exception/403.svg" alt="" />
+    </div>
+    <div class="text-center">
+      <h1 class="text-base text-gray-500">抱歉,你无权访问该页面</h1>
+      <n-button type="info" @click="goHome">回到首页</n-button>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { useRouter } from 'vue-router';
+  const router = useRouter();
+  function goHome() {
+    router.push('/');
+  }
+</script>
+
+<style lang="scss" scoped>
+  .page-container {
+    width: 100%;
+    border-radius: 4px;
+    padding: 50px 0;
+    height: 100vh;
+
+    .text-center {
+      h1 {
+        color: #666;
+        padding: 20px 0;
+      }
+    }
+
+    img {
+      width: 350px;
+      margin: 0 auto;
+    }
+  }
+</style>

+ 40 - 0
src/views/exception/404.vue

@@ -0,0 +1,40 @@
+<template>
+  <div class="flex flex-col justify-center page-container">
+    <div class="text-center">
+      <img src="~@/assets/images/exception/404.svg" alt="" />
+    </div>
+    <div class="text-center">
+      <h1 class="text-base text-gray-500">抱歉,你访问的页面不存在</h1>
+      <n-button type="info" @click="goHome">回到首页</n-button>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { useRouter } from 'vue-router';
+  const router = useRouter();
+  function goHome() {
+    router.push('/');
+  }
+</script>
+
+<style lang="scss" scoped>
+  .page-container {
+    width: 100%;
+    border-radius: 4px;
+    padding: 50px 0;
+    height: 100vh;
+
+    .text-center {
+      h1 {
+        color: #666;
+        padding: 20px 0;
+      }
+    }
+
+    img {
+      width: 350px;
+      margin: 0 auto;
+    }
+  }
+</style>

+ 40 - 0
src/views/exception/500.vue

@@ -0,0 +1,40 @@
+<template>
+  <div class="flex flex-col justify-center page-container">
+    <div class="text-center">
+      <img src="~@/assets/images/exception/500.svg" alt="" />
+    </div>
+    <div class="text-center">
+      <h1 class="text-base text-gray-500">抱歉,服务器出错了</h1>
+      <n-button type="info" @click="goHome">回到首页</n-button>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import { useRouter } from 'vue-router'
+const router = useRouter()
+const goHome = () => {
+  router.push('/')
+}
+</script>
+
+<style lang="scss" scoped>
+.page-container {
+  width: 100%;
+  border-radius: 4px;
+  padding: 50px 0;
+  height: 100vh;
+
+  .text-center {
+    h1 {
+      color: #666;
+      padding: 20px 0;
+    }
+  }
+
+  img {
+    width: 350px;
+    margin: 0 auto;
+  }
+}
+</style>

+ 169 - 0
src/views/login/index.vue

@@ -0,0 +1,169 @@
+<template>
+  <div class="view-account">
+    <div class="view-account-header"></div>
+    <div class="view-account-container">
+      <div class="view-account-top">
+        <div class="view-account-top-logo">
+          <img src="~@/assets/images/logo.png" alt="" />
+        </div>
+        <div class="view-account-top-desc">
+          GoView
+        </div>
+      </div>
+      <div class="view-account-form">
+        <n-form
+          ref="formRef"
+          label-placement="left"
+          size="large"
+          :model="formInline"
+          :rules="rules"
+        >
+          <n-form-item path="username">
+            <n-input
+              v-model:value="formInline.username"
+              placeholder="请输入用户名"
+            >
+              <template #prefix>
+                <n-icon size="18" color="#808695">
+                  <PersonOutline />
+                </n-icon>
+              </template>
+            </n-input>
+          </n-form-item>
+          <n-form-item path="password">
+            <n-input
+              v-model:value="formInline.password"
+              type="password"
+              show-password-toggle
+              placeholder="请输入密码"
+            >
+              <template #prefix>
+                <n-icon size="18" color="#808695">
+                  <LockClosedOutline />
+                </n-icon>
+              </template>
+            </n-input>
+          </n-form-item>
+          <n-form-item class="default-color">
+            <div class="flex justify-between">
+              <div class="flex-initial">
+                <n-checkbox v-model:checked="autoLogin">自动登录</n-checkbox>
+              </div>
+            </div>
+          </n-form-item>
+          <n-form-item>
+            <n-button
+              type="primary"
+              @click="handleSubmit"
+              size="large"
+              :loading="loading"
+              block
+            >
+              登录
+            </n-button>
+          </n-form-item>
+        </n-form>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import { reactive, ref } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import { useMessage } from 'naive-ui'
+import {
+  PersonOutline,
+  LockClosedOutline,
+} from '@vicons/ionicons5'
+
+interface FormState {
+  username: string
+  password: string
+}
+
+const formRef = ref()
+const message = useMessage()
+const loading = ref(false)
+const autoLogin = ref(true)
+
+const formInline = reactive({
+  username: 'admin',
+  password: '123456'
+})
+
+const rules = {
+  username: { required: true, message: '请输入用户名', trigger: 'blur' },
+  password: { required: true, message: '请输入密码', trigger: 'blur' }
+}
+
+const router = useRouter()
+const route = useRoute()
+
+const handleSubmit = (e: Event) => {
+  e.preventDefault()
+  formRef.value.validate(async (errors: any) => {
+    if (!errors) {
+      const { username, password } = formInline
+      loading.value = true
+
+      message.success('登录成功!')
+      router.replace('/')
+    } else {
+      message.error('请填写完整信息,并且进行验证码校验')
+    }
+  })
+}
+</script>
+
+<style lang="scss" scoped>
+.view-account {
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+  overflow: auto;
+  background-image: linear-gradient(to top, #fff1eb 0%, #ace0f9 100%);
+
+  &-container {
+    flex: 1;
+    padding: 32px 0;
+    width: 384px;
+    margin: 0 auto;
+    margin-top: 100px;
+  }
+
+  &-top {
+    padding: 32px 0;
+    text-align: center;
+
+    &-desc {
+      font-size: 14px;
+      color: #808695;
+    }
+  }
+
+  &-other {
+    width: 100%;
+  }
+
+  .default-color {
+    color: #515a6e;
+
+    .ant-checkbox-wrapper {
+      color: #515a6e;
+    }
+  }
+}
+
+@media (min-width: 768px) {
+  .view-account {
+    background-repeat: no-repeat;
+    background-position: 50%;
+    background-size: 100%;
+  }
+
+  .page-account-container {
+    padding: 32px 0 24px 0;
+  }
+}
+</style>

+ 9 - 0
src/views/project/index.vue

@@ -0,0 +1,9 @@
+<template>
+  <div>
+    <h1>首页</h1>
+  </div>
+</template>
+
+<script setup lang="ts"></script>
+
+<style scoped></style>

+ 24 - 0
src/views/redirect/index.vue

@@ -0,0 +1,24 @@
+<template>
+  <n-empty description="你什么也找不到">
+    <template #extra>
+      <n-button size="small" @click="goHome">看看别的</n-button>
+    </template>
+  </n-empty>
+</template>
+<script lang="ts" setup>
+import { onBeforeMount } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+const route = useRoute()
+const router = useRouter()
+const goHome = () => {
+  router.replace({ path: '/' })
+}
+// onBeforeMount(() => {
+//   const { params, query } = route
+//   const { path } = params
+//   router.replace({
+//     path: '/' + (Array.isArray(path) ? path.join('/') : path),
+//     query
+//   })
+// })
+</script>

+ 44 - 0
tsconfig.json

@@ -0,0 +1,44 @@
+{
+  "compilerOptions": {
+    "target": "esnext",
+    "module": "esnext",
+    "moduleResolution": "node",
+    "strict": true,
+    "jsx": "preserve",
+    "baseUrl": ".",
+    "sourceMap": true,
+    "resolveJsonModule": true,
+    "esModuleInterop": true,
+    "lib": [
+      "esnext",
+      "dom"
+    ],
+    "types": [
+      "vite/client"
+    ],
+    "paths": {
+      "@/*": [
+        "src/*"
+      ],
+      "/#/*": [
+        "types/*"
+      ]
+    },
+    "noImplicitAny": true, //不允许使用any
+    // "strictNullChecks": true, //不允许使用null
+    "noImplicitThis": true //不允许往this上面挂属性
+  },
+  "include": [
+    "src/**/*.ts",
+    "src/**/*.d.ts",
+    "src/**/*.tsx",
+    "src/**/*.vue",
+    "types/**/*.d.ts",
+    "types/**/*.ts",
+  ],
+  "exclude": [
+    "node_modules",
+    "dist",
+    "**/*.js"
+  ]
+}

+ 6 - 0
types/config.d.ts

@@ -0,0 +1,6 @@
+export interface GlobEnvConfig {
+  // 标题
+  VITE_GLOB_APP_TITLE: string;
+  // 端口
+  VITE_PORT: number;
+}

+ 7 - 0
types/global.d.ts

@@ -0,0 +1,7 @@
+
+interface Window {
+  $loading: any;
+  $message: any;
+  $dialog: any;
+}
+declare type Recordable<T = any> = Record<string, T>;

+ 5 - 0
types/shims-vue.d.ts

@@ -0,0 +1,5 @@
+declare module '*.vue' {
+  import { DefineComponent } from 'vue'
+  const component: DefineComponent<{}, {}, any>
+  export default component
+}

+ 1 - 0
types/vite-env.d.ts

@@ -0,0 +1 @@
+/// <reference types="vite/client" />

+ 48 - 0
vite.config.ts

@@ -0,0 +1,48 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import { resolve } from "path"
+import { OUTPUT_DIR } from './build/constant';
+
+function pathResolve(dir: string) {
+  return resolve(process.cwd(), '.', dir);
+}
+
+export default defineConfig({
+  base: "./",
+  resolve: {
+    alias: [
+      {
+        find: /\/#\//,
+        replacement: pathResolve('types') + '/',
+      },
+      {
+        find: '@',
+        replacement: pathResolve('src') + '/',
+      }
+    ],
+    dedupe: ['vue'],
+  },
+  css: {
+    preprocessorOptions: {
+      scss: {
+        modifyVars: {},
+        javascriptEnabled: true,
+        additionalData: `@import "src/styles/global/var.scss";`,
+      },
+    },
+  },
+  plugins: [
+    vue()
+  ],
+  build: {
+    target: 'es2015',
+    outDir: OUTPUT_DIR,
+    terserOptions: {
+      compress: {
+        keep_infinity: true,
+      },
+    },
+    brotliSize: false,
+    chunkSizeWarningLimit: 2000,
+  },
+})

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor