Browse Source

fix:删除多余文件

wangsisi 1 week ago
parent
commit
eff1336f09
4 changed files with 99 additions and 1366 deletions
  1. 0 206
      MIGRATION_SUMMARY.md
  2. 0 979
      Vue-CLI-to-Vite-Migration-Guide.md
  3. 0 1
      ggp
  4. 99 180
      yarn.lock

+ 0 - 206
MIGRATION_SUMMARY.md

@@ -1,206 +0,0 @@
-# Vue CLI 到 Vite 迁移总结
-
-## 迁移概述
-
-成功将飞鸟智慧巡园平台项目从 Vue CLI 迁移到 Vite,获得了显著的性能提升和更好的开发体验。
-
-## 迁移时间
-- 开始时间:2024年12月
-- 完成时间:约2-3小时
-- 迁移状态:✅ 完成
-
-## 主要修改内容
-
-### 1. 依赖配置更新
-- **package.json**:
-  - 更新脚本命令:`servedev` → `dev`,`build` → `vite build`
-  - 移除 Vue CLI 相关依赖:`@vue/cli-service`、`@vue/cli-plugin-*`、`webpack`
-  - 添加 Vite 相关依赖:`vite@^4.5.0`、`@vitejs/plugin-vue@^4.5.0`、`vite-plugin-svg-icons`、`vite-plugin-mock-dev-server`
-
-### 2. 配置文件迁移
-- **删除文件**:
-  - `vue.config.js` (Vue CLI 配置)
-  - `babel.config.js` (Babel 配置)
-- **新增文件**:
-  - `vite.config.js` (Vite 配置)
-  - `index.html` (Vite 入口文件)
-
-### 3. 模块语法转换
-- **修复文件数量**:17个 API 模块文件
-- **转换内容**:
-  - `require.context` → `import.meta.glob`
-  - `module.exports` → `export default`
-  - `const config = require("../config")` → `import config from "../config"`
-
-### 4. 动态导入修复
-- **路由文件**:为所有动态导入添加 `@vite-ignore` 注释
-- **修复文件**:
-  - `src/router/mainRoutes.js`
-  - `src/router/globalRoutes.js`
-
-### 5. 组件导入路径修复
-- **修复文件**:
-  - `src/views/Login.vue`
-  - `src/views/AuthenticLogin.vue`
-  - `src/views/404.vue`
-- **修复内容**:添加 `.vue` 扩展名
-
-### 6. 配置文件转换
-- **src/config.js**:CommonJS → ES6 模块
-- **src/api/config.js**:添加缺失的 `resize` 导出
-- **src/api/enum.js**:CommonJS → ES6 模块
-- **src/store/modules/app/type.js**:添加缺失的导出
-
-### 7. 插件和指令修复
-- **src/plugins/axios.js**:修复 `require.context` 使用
-- **src/plugins/mock.js**:修复 `require.context` 使用
-- **src/directives/index.js**:修复 `require.context` 使用
-- **src/store/index.js**:修复 `require.context` 使用
-
-### 8. 模块导入修复
-- **src/api/modules/image.js**:修复 `require` 语法为 `import` 语法
-- **src/api/data/DataFetcher.js**:修复 `module.exports` 为 `export default`
-- **src/utils/index.js**:修复 `require` 为动态 `import`
-
-### 9. 环境变量配置修复
-- **vite.config.js**:添加 `VE_ENV` 全局变量定义,使用 `loadEnv` 正确加载环境变量
-- **src/api/config.js**:移除默认值,确保必须读取到环境变量
-- **env.config.js**:创建环境变量配置文件,支持多环境配置
-- **问题描述**:Vue CLI 中的 `VE_ENV.SERVER` 和 `VE_ENV.PYSERVER` 在 Vite 中未定义,导致 API 请求地址变成 `http://localhost:3002/undefinedsite/user/login`
-- **问题升级**:使用 `JSON.stringify` 导致字符串重复引用,URL 变成 `http://localhost:3002/%22http://localhost:3002/%22site/user/login`
-- **问题升级2**:`process.env.NODE_ENV` 在 Vite 中读取不到
-- **问题升级3**:每次启动需要手动设置环境变量
-- **最终解决方案**:
-  - 创建 `env.config.js` 配置文件,支持 development 和 production 环境
-  - 在 `vite.config.js` 中使用 `loadEnv` 函数正确加载环境变量
-  - 将 `process.env` 替换为 `env` 对象
-  - 在 `src/api/config.js` 中移除默认值,确保必须读取到环境变量
-  - 环境变量现在从配置文件读取,无需每次手动设置
-
-### 10. ESLint 配置更新
-- **.eslintrc.js**:
-  - 添加 ES2020 支持
-  - 添加 `defineOptions` 全局变量支持
-
-### 11. 全局变量设置
-- **src/main.js**:
-  - 移除不必要的 `vue` 导入
-  - 添加 `XE` 全局变量设置
-
-### 12. 静态资源处理修复
-- **问题描述**:Vite 不支持 `require()` 语法加载静态资源,导致 `ReferenceError: require is not defined` 错误
-- **修复文件**:
-  - `src/views/home/album_compoents/cacheImg.js`:将 `require('@/assets/...')` 替换为直接路径
-  - `src/views/home/album/album_compoents/cacheImg.js`:同上
-  - `src/views/warningHome/components/album_compoents/cacheImg.js`:同上
-  - `src/views/workDetail/components/executionProgress.vue`:使用 `new URL()` 方法
-  - `src/views/warningHome/components/trackDialog.vue`:使用模板字符串路径
-  - `src/views/warningHome/map/gardenPointLayer.js`:将 `require('@/assets/images/map/garden.png')` 替换为直接路径
-  - `src/views/warningHome/components/album.vue`:将 `require('@/assets/images/warningHome/gallery/icon-')` 替换为模板字符串路径
-  - `src/views/varietyMap/map.vue`:将 `require('@/assets/images/map/status/active-icon.png')` 替换为直接路径
-  - `src/views/home/map/samplePointLayer.js`:将所有 `require('@/assets/images/map/...')` 替换为直接路径
-  - `src/views/home/map/airLineStringLayer.js`:将所有 `require('@/assets/images/map/...')` 替换为模板字符串路径
-  - `src/views/home/components/foster/adoptList.vue`:将 `require('@/assets/images/foster-home/list/...')` 替换为模板字符串路径
-  - `src/views/home/album/index.vue`:将 `require('@/assets/img/gallery/icon-')` 替换为模板字符串路径
-  - `src/views/authentic/pdfMap.js`:将所有 `require('@/assets/images/map/...')` 替换为模板字符串路径
-  - `src/addFarm/farmMap.js`:将所有 `require('@/assets/images/map/...')` 和 `require('@/assets/status/...')` 替换为直接路径
-  - `src/authentic/authenticMap.js`:将所有 `require('@/assets/images/map/...')` 替换为模板字符串路径
-  - `src/utils/ol-map/Map.js`:将所有 `require('@/assets/images/map/...')` 替换为模板字符串路径
-  - `src/components/static_map_change/pointLayer.js`:将 `require('@/assets/images/warningHome/chat/fly-point.png')` 替换为直接路径
-  - `src/components/PicturePreview.vue`:将 `require('@/assets/images/home/HB-ws0y1menggxv/...')` 替换为模板字符串路径
-  - `src/components/common/stepBox.vue`:将 `require('@/assets/img/gallery/step-...')` 替换为模板字符串路径
-  - `src/components/chartBox.vue`:将 `require('@/assets/images/common/chart-...')` 替换为模板字符串路径
-  - `src/views/warningHome/components/timeLine.vue`:将 `require('@/assets/images/warningHome/...')` 替换为模板字符串路径
-  - `src/components/timeLine.vue`:将 `require('@/assets/images/home/...')` 替换为模板字符串路径
-- **新增文件**:
-  - `src/utils/assetLoader.js`:创建静态资源加载工具函数
-- **vite.config.js**:添加 `assetsInclude` 配置支持更多静态资源格式
-- **OpenLayers 导入修复**:
-  - `src/utils/ol-map/VectorLayer.js`:移除未使用的 `OrderFunction` 导入
-
-### 13. vueshowpdf 导入修复
-- **问题描述**:`vueshowpdf` 库在 Vite 环境中导入失败,显示 `does not provide an export named 'default'` 错误
-- **修复文件**:
-  - `src/components/PdfDialog.vue`:移除未使用的 `vueshowpdf` 导入
-  - `src/components/ImageDialog.vue`:移除未使用的 `vueshowpdf` 导入
-- **修复说明**:这些组件实际上并没有使用 `vueshowpdf` 库,只是导入了但没有使用,移除导入后功能正常
-
-### 14. liveplayer 库修复
-- **问题描述**:`@liveqing/liveplayer-v3` 组件依赖 `videojs`,但在 Vite 环境中 `videojs` 未定义
-- **修复文件**:
-  - `index.html`:添加 `<script src="/js/liveplayer-lib.min.js"></script>` 标签
-- **修复说明**:在 Vue CLI 项目中,`liveplayer-lib.min.js` 是通过 `public/index.html` 中的 `<script>` 标签加载的,但在 Vite 的 `index.html` 中缺失了这个标签,导致 `videojs` 未定义
-
-### 15. SCSS 导入修复
-- **问题描述**:Vite 中的 SCSS 导入需要指定文件扩展名,否则会报错
-- **修复文件**:
-  - `src/styles/index.scss`:将 `@import "./mixin";` 和 `@import "./variable";` 修改为 `@import "./mixin.scss";` 和 `@import "./variable.scss";`
-  - `src/views/warningHome/components/album_compoents/albumCarousel7d.vue`:将 `@import "src/styles/index";` 修改为 `@import "@/styles/index.scss";`
-  - `src/views/warningHome/components/album_compoents/albumCarouselItem.vue`:将 `@import "src/styles/index";` 修改为 `@import "@/styles/index.scss";`
-- **修复说明**:在 Vite 中,SCSS 的 `@import` 语句需要明确指定文件扩展名,而 Vue CLI 可以自动解析
-- **额外修复**:
-  - 修复 SCSS 除法运算符弃用警告:将 `$screenWidth / 750` 修改为 `math.div($screenWidth, 750)`,并添加 `@use "sass:math";`
-  - 注意:项目中存在大量 `::v-deep` 用法弃用警告,这些是 Vue 3 的深度选择器语法变更,不影响功能,可在后续优化中处理
-
-## 性能对比
-
-### 迁移前 (Vue CLI)
-- 启动时间:~30-60秒
-- 热更新:~2-5秒
-- 构建时间:~2-5分钟
-
-### 迁移后 (Vite)
-- 启动时间:~3-8秒 ⚡ (提升80%)
-- 热更新:~100-500ms ⚡ (提升90%)
-- 构建时间:~30-60秒 ⚡ (提升70%)
-
-## 构建结果
-
-### 开发服务器
-- ✅ 成功启动在端口 3001
-- ✅ 所有路由正常工作
-- ✅ 热更新功能正常
-
-### 生产构建
-- ✅ 构建成功完成
-- ✅ 生成文件大小合理
-- ⚠️ 有一些大文件警告(可接受)
-
-## 注意事项
-
-### 1. 版本兼容性
-- 使用 Vite 4.x 版本,避免 Vite 7.x 的兼容性问题
-- 推荐使用 yarn 而不是 npm,避免依赖冲突
-
-### 2. 警告信息
-- SCSS 弃用警告:`@import` 规则将在 Dart Sass 3.0.0 中移除
-- Vue 编译器警告:`::v-deep` 用法已弃用,建议使用 `:deep()`
-- 这些警告不影响功能,可以在后续优化中处理
-
-### 3. 环境变量配置
-- Vue CLI 中的 `VE_ENV` 全局变量在 Vite 中需要重新配置
-- 需要在 `vite.config.js` 的 `define` 中设置环境变量
-- 建议在代码中添加防护措施,防止环境变量未定义导致的错误
-
-### 4. 构建优化
-- 部分 chunk 文件较大,可以考虑代码分割优化
-- 可以使用 `build.rollupOptions.output.manualChunks` 进一步优化
-
-## 迁移检查清单
-
-- [x] 更新 package.json 脚本和依赖
-- [x] 创建 vite.config.js 配置文件
-- [x] 创建 index.html 入口文件
-- [x] 修复所有 require.context 使用
-- [x] 修复动态导入警告
-- [x] 修复模块语法兼容性问题
-- [x] 修复环境变量配置问题
-- [x] 更新 ESLint 配置
-- [x] 删除旧配置文件
-- [x] 测试开发服务器启动
-- [x] 测试构建过程
-- [x] 验证所有功能正常
-
-## 总结
-
-Vue CLI 到 Vite 的迁移成功完成,项目现在使用更现代的构建工具,获得了显著的性能提升。迁移过程相对顺利,主要涉及配置文件的更新和模块语法的转换。项目现在可以享受 Vite 带来的快速启动和热更新体验。 

+ 0 - 979
Vue-CLI-to-Vite-Migration-Guide.md

@@ -1,979 +0,0 @@
-# Vue CLI 到 Vite 迁移完整指南
-
-## 概述
-
-本指南详细记录了将Vue 3项目从Vue CLI迁移到Vite的完整过程,包括所有遇到的问题和解决方案。适用于类似的管理后台项目迁移。
-
-## 迁移前准备
-
-### 1. 项目信息
-- **原构建工具**: Vue CLI (Webpack)
-- **目标构建工具**: Vite
-- **Vue版本**: Vue 3
-- **UI框架**: Element Plus
-- **包管理器**: Yarn
-
-### 2. 迁移原因
-- Vue CLI启动速度慢
-- npm依赖管理问题
-- 需要更现代的构建工具
-
-## 迁移步骤
-
-### 第一步:更新依赖配置
-
-#### 1.1 修改 package.json
-
-```json
-{
-  "scripts": {
-    "dev": "vite",
-    "build": "vite build", 
-    "preview": "vite preview",
-    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
-  },
-  "devDependencies": {
-    "@vitejs/plugin-vue": "^4.5.0",
-    "vite": "^4.5.0",
-    "vite-plugin-svg-icons": "^2.0.1",
-    "vite-plugin-mock-dev-server": "^1.9.1"
-  }
-}
-```
-
-**重要**: 使用Vite 4.x版本,避免Vite 7.x的兼容性问题。
-
-#### 1.2 删除Vue CLI相关依赖
-
-```bash
-yarn remove @vue/cli-service @vue/cli-plugin-babel @vue/cli-plugin-eslint webpack
-```
-
-#### 1.3 安装Vite依赖
-
-```bash
-yarn add -D vite @vitejs/plugin-vue vite-plugin-svg-icons vite-plugin-mock-dev-server
-```
-
-### 第二步:创建Vite配置文件
-
-#### 2.1 创建 vite.config.js
-
-```javascript
-import { defineConfig } from 'vite'
-import vue from '@vitejs/plugin-vue'
-import { resolve } from 'path'
-import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
-import mockDevServerPlugin from 'vite-plugin-mock-dev-server'
-
-export default defineConfig({
-  plugins: [
-    vue(),
-    createSvgIconsPlugin({
-      iconDirs: [resolve(process.cwd(), 'src/icons')],
-      symbolId: 'icon-[dir]-[name]',
-    }),
-    mockDevServerPlugin({
-      logLevel: 'info',
-    }),
-  ],
-  resolve: {
-    alias: {
-      '@': resolve(__dirname, 'src'),
-    },
-  },
-  css: {
-    preprocessorOptions: {
-      scss: {
-        additionalData: `
-          $main-bg-color: #f5f5f5;
-          $base-color: #409EFF;
-          $nav-height: 76px;
-          $side-close-width: 65px;
-          $side-open-width: 160px;
-          $sideBgColor: #161926;
-          $sideTextColor: #B0B0B0;
-          $sideActiveTextColor: #ffd04b;
-        `,
-      },
-    },
-  },
-  server: {
-    host: '0.0.0.0',
-    port: 3000,
-    open: false
-  },
-  build: {
-    target: 'es2015',
-    outDir: 'dist',
-    assetsDir: 'assets',
-    sourcemap: false,
-    rollupOptions: {
-      output: {
-        chunkFileNames: 'js/[name]-[hash].js',
-        entryFileNames: 'js/[name]-[hash].js',
-        assetFileNames: '[ext]/[name]-[hash].[ext]',
-        manualChunks: {
-          vue: ['vue', 'vue-router', 'vuex'],
-          elementPlus: ['element-plus'],
-          echarts: ['echarts'],
-        },
-      },
-    },
-    terserOptions: {
-      compress: {
-        drop_console: false,
-        drop_debugger: true,
-      },
-    },
-  },
-  define: {
-    VE_ENV: {
-      MODE: JSON.stringify(process.env.NODE_ENV),
-    },
-  },
-  optimizeDeps: {
-    include: [
-      'vue',
-      'vue-router',
-      'vuex',
-      'element-plus',
-      'axios',
-      'echarts',
-      'dayjs',
-      'xe-utils',
-    ],
-  },
-  esbuild: {
-    loader: 'jsx',
-    include: /src\/.*\.js$/,
-    exclude: [],
-  },
-})
-```
-
-#### 2.2 创建入口文件 index.html
-
-```html
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Birdseye Vue Admin</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.js"></script>
-  </body>
-</html>
-```
-
-#### 2.3 创建环境变量文件 env
-
-```
-VITE_APP_TITLE=Birdseye Vue Admin
-VITE_APP_ENV=development
-```
-
-### 第三步:修复 require.context 问题
-
-这是迁移过程中最重要的步骤,需要将所有Webpack特有的`require.context`替换为Vite的`import.meta.glob`。
-
-#### 3.1 修复 Vuex Store (src/store/index.js)
-
-```javascript
-// 原来的Webpack方式
-const files = require.context("./modules", true, /index.js$/);
-files.keys().forEach((key) => {
-    const fileName = key.split("/")[1];
-    modules[fileName] = files(key).default;
-});
-
-// 新的Vite方式
-const moduleFiles = import.meta.glob('./modules/*/index.js', { eager: true });
-Object.keys(moduleFiles).forEach((key) => {
-    const fileName = key.split("/")[2]; // 获取模块名称
-    modules[fileName] = moduleFiles[key].default;
-});
-```
-
-#### 3.2 修复 Mock 插件 (src/plugins/mock.js)
-
-```javascript
-// 原来的Webpack方式
-export default {
-    install: () => {
-        const config = require("@/config");
-        if (config.pro_mock) {
-            const Mock = require("mockjs");
-            const files = require.context("@/api/modules", false, /\.js$/);
-            files.keys().forEach((key) => {
-                let obj = files(key);
-                // ... 处理逻辑
-            });
-        }
-    },
-};
-
-// 新的Vite方式
-export default {
-    install: async () => {
-        const config = await import("@/config");
-        if (config.default.pro_mock) {
-            const Mock = (await import("mockjs")).default;
-            const files = import.meta.glob("@/api/modules/*.js", { eager: true });
-            Object.keys(files).forEach((key) => {
-                let obj = files[key].default; // 重要:需要访问 .default
-                // ... 处理逻辑
-            });
-        }
-    },
-};
-```
-
-#### 3.3 修复 Axios 插件 (src/plugins/axios.js)
-
-```javascript
-// 原来的Webpack方式
-const files = require.context("@/api/modules", false, /\.js$/);
-files.keys().forEach((key) => {
-    const fileName = key.replace(/(\.\/|\.js)/g, "");
-    api[fileName] = {};
-    let obj = files(key);
-    // ... 处理逻辑
-});
-
-// 新的Vite方式
-const files = import.meta.glob("@/api/modules/*.js", { eager: true });
-Object.keys(files).forEach((key) => {
-    const fileName = key.replace(/(\.\/|\.js)/g, "").split('/').pop();
-    api[fileName] = {};
-    let obj = files[key].default; // 重要:需要访问 .default
-    // ... 处理逻辑
-});
-```
-
-#### 3.4 修复指令注册 (src/directives/index.js)
-
-```javascript
-// 原来的Webpack方式
-const files = require.context("@/directives/modules", false, /\.js$/);
-files.keys().forEach((key) => {
-    let name = key.replace(/(\.\/|\.js)/g, "");
-    let method = files(key).default;
-    app.directive(name, (el, binding) =>
-        method(el, binding, app, router, store)
-    );
-});
-
-// 新的Vite方式
-const files = import.meta.glob("@/directives/modules/*.js", { eager: true });
-Object.keys(files).forEach((key) => {
-    let name = key.replace(/(\.\/|\.js)/g, "").split('/').pop();
-    let method = files[key].default;
-    app.directive(name, (el, binding) =>
-        method(el, binding, app, router, store)
-    );
-});
-```
-
-#### 3.5 修复组件自动注册 (src/components/veBaseComponents/index.js)
-
-```javascript
-// 原来的Webpack方式
-const files = require.context(
-    "@/components/veBaseComponents",
-    false,
-    /\.vue$/
-);
-files.keys().forEach((key) => {
-    const componentConfig = files(key);
-    app.component(
-        componentConfig.default.name,
-        componentConfig.default
-    );
-});
-
-// 新的Vite方式
-const files = import.meta.glob(
-    "@/components/veBaseComponents/*.vue",
-    { eager: true }
-);
-Object.keys(files).forEach((key) => {
-    const componentConfig = files[key];
-    app.component(
-        componentConfig.default.name,
-        componentConfig.default
-    );
-});
-```
-
-### 第四步:修复动态导入问题
-
-#### 4.1 修复路由动态导入 (src/plugins/permission.js)
-
-```javascript
-// 添加 @vite-ignore 注释来忽略动态导入警告
-route["component"] = () => import(/* @vite-ignore */ "@/views/layoutpages/" + menuList[i].url + ".vue");
-```
-
-### 第五步:修复模块语法兼容性问题
-
-这是迁移过程中的另一个重要步骤,需要将所有CommonJS模块语法转换为ES6模块语法。
-
-#### 5.1 修复配置文件 (src/api/config.js)
-
-```javascript
-// 原来的CommonJS方式
-let server = "https://feiniaotech-dev.sysuimars.cn/"
-const BASE_IMG_DIR = 'https://birdseye-img-ali-cdn.sysuimars.com/'
-module.exports = {
-    base_url :server + "site/",
-    base_mini_url :server + "mini/",
-    weather_base_url :weather_server + "site/",
-    base_img: BASE_IMG_DIR,
-    base_img_url3: "https://birdseye-img.sysuimars.com/",
-    getOptBody : (opt)=>{
-        return JSON.parse(opt.body);
-    }
-}
-
-// 新的ES6模块方式
-let server = "https://feiniaotech-dev.sysuimars.cn/"
-const BASE_IMG_DIR = 'https://birdseye-img-ali-cdn.sysuimars.com/'
-
-export const base_url = server + "site/";
-export const base_mini_url = server + "mini/";
-export const weather_base_url = weather_server + "site/";
-export const base_img = BASE_IMG_DIR;
-export const base_img_url3 = "https://birdseye-img.sysuimars.com/";
-
-//获取请求头中的参数体
-export const getOptBody = (opt) => {
-    return JSON.parse(opt.body);
-}
-
-// 默认导出,保持向后兼容
-export default {
-    base_url,
-    base_mini_url,
-    weather_base_url,
-    base_img,
-    base_img_url3,
-    getOptBody
-}
-```
-
-#### 5.2 修复API模块文件 (src/api/modules/*.js)
-
-需要将所有API模块文件从CommonJS语法转换为ES6模块语法:
-
-```javascript
-// 原来的CommonJS方式
-const config = require("../config")
-module.exports = {
-    userMenuList: {
-        url: config.base_url + "menu/userMenuList",
-        type: "post",
-    },
-    // ... 其他API配置
-};
-
-// 新的ES6模块方式
-import config from "../config"
-export default {
-    userMenuList: {
-        url: config.base_url + "menu/userMenuList",
-        type: "post",
-    },
-    // ... 其他API配置
-};
-```
-
-**批量修复脚本**:
-我们创建了一个PowerShell脚本来批量修复所有API模块文件:
-
-```powershell
-# 批量修复API模块文件的模块语法
-# 将CommonJS语法转换为ES6模块语法
-
-Write-Host "开始批量修复API模块文件..." -ForegroundColor Green
-
-# 获取所有API模块文件
-$files = Get-ChildItem -Path "src/api/modules" -Filter "*.js"
-
-$fixedCount = 0
-
-foreach ($file in $files) {
-    Write-Host "处理文件: $($file.Name)" -ForegroundColor Yellow
-    
-    $content = Get-Content $file.FullName -Raw -Encoding UTF8
-    
-    # 检查是否需要修复
-    if ($content -match 'const config = require\("../config"\)' -and $content -match 'module\.exports = \{') {
-        # 替换 require 为 import
-        $content = $content -replace 'const config = require\("../config"\)', 'import config from "../config"'
-        
-        # 替换 module.exports 为 export default
-        $content = $content -replace 'module\.exports = \{', 'export default {'
-        
-        # 写回文件
-        Set-Content $file.FullName $content -Encoding UTF8
-        
-        Write-Host "  ✓ 已修复: $($file.Name)" -ForegroundColor Green
-        $fixedCount++
-    } else {
-        Write-Host "  - 无需修复: $($file.Name)" -ForegroundColor Gray
-    }
-}
-
-Write-Host "`n批量修复完成!" -ForegroundColor Green
-Write-Host "总共修复了 $fixedCount 个文件" -ForegroundColor Cyan
-```
-
-**修复结果**:
-- ✅ 成功修复了 **87个API模块文件**
-- ✅ 修复了 `src/config.js` 配置文件
-- ✅ 修复了 `src/api/index.js` 和 `src/api/mock-server.js`
-- ✅ 修复了 `src/api/dict.js` 字典文件
-
-#### 5.3 检查导入兼容性
-
-确保所有使用配置文件的组件都使用正确的导入语法:
-
-```javascript
-// 正确的导入方式
-import { base_url, base_img } from '@/api/config'
-// 或者
-import config from '@/api/config'
-```
-
-### 第六步:更新ESLint配置
-
-#### 6.1 修改 .eslintrc.js
-
-```javascript
-module.exports = {
-  env: {
-    es2020: true, // 添加ES2020支持
-    node: true,
-  },
-  parserOptions: {
-    ecmaVersion: 2020,
-    sourceType: 'module',
-  },
-  globals: {
-    defineOptions: "readonly", // 支持Vue 3编译器宏
-  },
-  // ... 其他配置
-}
-```
-
-### 第七步:删除旧配置文件
-
-```bash
-rm vue.config.js
-rm public/index.html  # 如果存在
-```
-
-## 常见问题及解决方案
-
-### 1. crypto.hash 错误
-
-**问题**: `TypeError: crypto.hash is not a function`
-
-**原因**: Vite 7.x与Node.js版本兼容性问题
-
-**解决**: 降级到Vite 4.x版本
-
-```bash
-yarn add -D vite@^4.5.0 @vitejs/plugin-vue@^4.5.0
-```
-
-### 2. JSX语法错误
-
-**问题**: `The JSX syntax extension is not currently enabled`
-
-**解决**: 在vite.config.js中添加esbuild配置
-
-```javascript
-esbuild: {
-  loader: 'jsx',
-  include: /src\/.*\.js$/,
-  exclude: [],
-},
-```
-
-### 3. SCSS变量导入错误
-
-**问题**: `@import "@/styles/variables.scss"` 无法解析
-
-**解决**: 直接在vite.config.js中定义SCSS变量
-
-```javascript
-css: {
-  preprocessorOptions: {
-    scss: {
-      additionalData: `
-        $main-bg-color: #f5f5f5;
-        $base-color: #409EFF;
-        // ... 其他变量
-      `,
-    },
-  },
-},
-```
-
-### 4. 端口冲突
-
-**问题**: 端口8080被占用
-
-**解决**: 修改vite.config.js中的端口配置
-
-```javascript
-server: {
-  port: 3000, // 改为其他可用端口
-}
-```
-
-### 5. 模块解析错误
-
-**问题**: `require is not defined`
-
-**解决**: 将所有`require.context`替换为`import.meta.glob`
-
-### 6. 导出错误
-
-**问题**: `The requested module does not provide an export named 'xxx'`
-
-**原因**: CommonJS模块语法与ES6导入语法不兼容
-
-**解决**: 将配置文件从`module.exports`改为`export`语法
-
-```javascript
-// 修复前
-module.exports = {
-    base_url: "https://example.com/",
-    base_img: "https://img.example.com/"
-}
-
-// 修复后
-export const base_url = "https://example.com/";
-export const base_img = "https://img.example.com/";
-
-export default {
-    base_url,
-    base_img
-}
-```
-
-### 7. module未定义错误
-
-**问题**: `Uncaught (in promise) ReferenceError: module is not defined`
-
-**原因**: 某些配置文件仍在使用CommonJS的`module.exports`语法
-
-**解决**: 检查并修复所有配置文件,确保使用ES6模块语法
-
-```javascript
-// 修复前 (src/config.js)
-module.exports = {
-    dev_mock: false,
-    pro_mock: true,
-};
-
-// 修复后
-export default {
-    dev_mock: false,
-    pro_mock: true,
-};
-```
-
-**常见需要修复的文件**:
-- `src/config.js`
-- `src/api/index.js`
-- `src/api/mock-server.js`
-- `src/api/dict.js`
-- `src/styles/variables.scss.js`
-- 所有 `src/api/modules/*.js` 文件
-
-### 8. 动态导入模块错误
-
-**问题**: `Failed to fetch dynamically imported module: http://localhost:3000/src/views/Login.vue`
-
-**原因**: Vite在处理动态导入时可能无法正确解析路径
-
-**解决**: 为动态导入添加 `@vite-ignore` 注释
-
-```javascript
-// 修复前
-component: () => import("@/views/Login.vue"),
-
-// 修复后
-component: () => import(/* @vite-ignore */ "@/views/Login.vue"),
-```
-
-### 9. 组件导入路径错误
-
-**问题**: `Failed to load url /src/components/Common (resolved id: ...) Does the file exist?`
-
-**原因**: Vite在处理组件导入时可能无法自动解析 `.vue` 扩展名
-
-**解决**: 在导入语句中明确指定 `.vue` 扩展名
-
-```javascript
-// 修复前
-import Common from "@/components/Common";
-
-// 修复后
-import Common from "@/components/Common.vue";
-```
-
-**常见需要修复的文件**:
-- `src/views/Login.vue`
-- `src/views/404.vue`
-- `src/views/Home.vue`
-- 其他使用组件导入的文件
-
-### 10. import.meta.glob 导出访问错误
-
-**问题**: 使用 `import.meta.glob` 后无法正确访问模块导出内容
-
-**原因**: `import.meta.glob` 返回的对象结构与 `require.context` 不同,需要通过 `.default` 访问默认导出
-
-**解决**: 在访问模块内容时添加 `.default`
-
-```javascript
-// 修复前
-const moduleContent = modules[key];
-
-// 修复后
-const moduleContent = modules[key].default; // 访问默认导出
-```
-
-**重要**: 这是从 Webpack 迁移到 Vite 时最容易忽略的问题!
-
-**常见需要修复的文件**:
-- `src/plugins/axios.js`
-- `src/plugins/mock.js`
-- 其他使用 `import.meta.glob` 的文件
-
-### 11. 全局变量未定义错误
-
-**问题**: `XE is not defined` 或其他全局变量未定义
-
-**原因**: 在 Vue CLI 中,某些库(如 `xe-utils`)被全局引入并挂载到 `window` 对象上,但在 Vite 迁移后没有正确设置
-
-**解决**: 在 `main.js` 中手动引入并挂载全局变量
-
-```javascript
-// 在 src/main.js 中添加
-import XE from 'xe-utils'
-window.XE = XE
-```
-
-**常见需要修复的全局变量**:
-- `XE` (xe-utils 库)
-- `VE_ENV` (已在 vite.config.js 中定义)
-- `VE_API` (通过 axios 插件设置)
-
-### 12. SCSS变量文件导出错误
-
-**问题**: `The requested module does not provide an export named 'xxx'` 在导入SCSS变量时
-
-**原因**: SCSS变量文件(如 `variables.scss.js`)使用CommonJS语法,但组件尝试使用ES6命名导入
-
-**解决**: 将SCSS变量文件转换为ES6模块语法,支持命名导入
-
-```javascript
-// 修复前 (src/styles/variables.scss.js)
-const variables = {
-    nav_height: "76px",
-    // ... 其他变量
-};
-module.exports = variables;
-
-// 修复后
-const variables = {
-    nav_height: "76px",
-    // ... 其他变量
-};
-
-// 导出单个变量,支持命名导入
-export const nav_height = variables.nav_height;
-// ... 其他变量导出
-
-// 默认导出,保持向后兼容
-export default variables;
-```
-
-**常见需要修复的文件**:
-- `src/styles/variables.scss.js`
-
-### 13. 动态导入路径解析失败
-
-**问题**: `TypeError: Failed to resolve module specifier '@/views/layoutpages/xxx/Index.vue'`
-
-**原因**: Vite 在处理动态导入时,可能无法正确解析包含子目录的路径
-
-**解决**: 在 `vite.config.js` 中添加文件扩展名解析配置
-
-```javascript
-// 在 vite.config.js 中添加
-resolve: {
-  alias: {
-    '@': resolve(__dirname, 'src'),
-  },
-  extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
-},
-```
-
-**重要**: 这有助于 Vite 更好地解析动态导入的路径,特别是包含子目录的路径。
-
-**额外修复**: 如果仍然出现路径解析错误,可以尝试使用绝对路径:
-
-```javascript
-// 修复前
-route["component"] = () => import(/* @vite-ignore */ "@/views/layoutpages/" + menuList[i].url + ".vue");
-
-// 修复后
-const componentPath = `/src/views/layoutpages/${menuList[i].url}.vue`;
-route["component"] = () => import(/* @vite-ignore */ componentPath);
-```
-
-**常见需要修复的场景**:
-- 权限插件中的动态路由导入
-- 其他使用动态导入的组件
-
-### 14. 动态路由添加失败
-
-**问题**: 动态路由无法正确加载,出现模块解析错误
-
-**原因**: 动态路由添加逻辑中的对象引用问题和路由添加顺序问题
-
-**解决**: 修复动态路由添加逻辑
-
-```javascript
-// 修复前
-mainRoutes.children = mainRoutes.children.concat(routes);
-await router.addRoute(mainRoutes);
-await router.addRoute({
-    path: "/:w+",
-    redirect: { name: "404" },
-});
-
-// 修复后
-const newMainRoutes = {
-    ...mainRoutes,
-    children: [...mainRoutes.children, ...routes]
-};
-
-// 先添加404路由,再添加主路由
-await router.addRoute({
-    path: "/:w+",
-    redirect: { name: "404" },
-});
-await router.addRoute(newMainRoutes);
-```
-
-**重要**: 避免直接修改原始路由对象,使用新对象来添加路由。
-
-**常见需要修复的文件**:
-- `src/plugins/permission.js`
-
-### 15. 第三方组件注册问题
-
-**问题**: 在 Vue 3 `<script setup>` 中导入的第三方组件无法正常使用
-
-**原因**: Vue 3 的 `<script setup>` 语法中,导入的组件需要显式注册才能使用
-
-**解决**: 使用 `defineOptions` 注册组件
-
-```javascript
-// 修复前
-import JsonEditorVue from 'json-editor-vue3';
-
-// 修复后
-import JsonEditorVue from 'json-editor-vue3';
-
-defineOptions({
-    components: {
-        JsonEditorVue
-    }
-});
-```
-
-**影响文件**:
-- `src/views/layoutpages/sys_mock_data/Edit.vue`
-- `src/views/layoutpages/sys_mock_data_item/Edit.vue`
-- `src/views/layoutpages/z_farm_score/Edit.vue`
-- `src/views/layoutpages/z_farm_work_auth/Edit.vue`
-
-**注意**: 这个修复适用于所有使用第三方组件的 Vue 3 `<script setup>` 组件。
-
-## 迁移检查清单
-
-- [ ] 更新package.json脚本和依赖
-- [ ] 创建vite.config.js配置文件
-- [ ] 创建index.html入口文件
-- [ ] 修复所有require.context使用
-  - [ ] 替换为import.meta.glob
-  - [ ] 确保正确访问.default导出
-- [ ] 修复动态导入警告
-- [ ] 修复路由动态导入问题
-  - [ ] 为路由组件导入添加 @vite-ignore 注释
-  - [ ] 配置 Vite 路径解析扩展名
-  - [ ] 修复动态路由添加逻辑
-- [ ] 修复组件导入路径问题
-  - [ ] 为组件导入添加 .vue 扩展名
-- [ ] 修复全局变量问题
-  - [ ] 检查并设置必要的全局变量(如 XE)
-- [ ] 修复模块语法兼容性问题
-  - [ ] 转换配置文件为ES6模块语法
-  - [ ] 转换API模块文件为ES6模块语法
-  - [ ] 检查所有导入语句兼容性
-- [ ] 修复第三方组件注册问题
-  - [ ] 检查所有使用第三方组件的 Vue 3 `<script setup>` 组件
-  - [ ] 使用 `defineOptions` 注册第三方组件
-- [ ] 更新ESLint配置
-- [ ] 删除旧配置文件
-- [ ] 测试开发服务器启动
-- [ ] 测试构建过程
-- [ ] 验证所有功能正常
-
-## 性能对比
-
-### 迁移前 (Vue CLI)
-- 启动时间: ~30-60秒
-- 热更新: ~2-5秒
-- 构建时间: ~2-5分钟
-
-### 迁移后 (Vite)
-- 启动时间: ~3-8秒 ⚡
-- 热更新: ~100-500ms ⚡
-- 构建时间: ~30-60秒 ⚡
-
-## 注意事项
-
-1. **版本兼容性**: 建议使用Vite 4.x版本,避免Vite 7.x的兼容性问题
-2. **依赖管理**: 推荐使用yarn而不是npm,避免依赖冲突
-3. **路径解析**: 确保所有别名路径(@/)正确配置
-4. **环境变量**: Vite使用VITE_前缀的环境变量
-5. **插件兼容性**: 某些Vue CLI插件可能需要Vite替代方案
-6. **模块语法**: 确保所有文件使用ES6模块语法,避免CommonJS与ES6混用
-7. **导入导出**: 检查所有导入导出语句的兼容性
-
-### 16. SCSS 导入和 v-bind() 使用问题
-
-**问题**: 
-1. Sass 弃用警告:`Deprecation Warning [legacy-js-api]: The legacy JS API is deprecated`
-2. SCSS 导入错误:`Can't find stylesheet to import`
-3. v-bind() 函数未定义错误
-
-**解决方案**:
-
-#### 16.1 修复 SCSS 变量导入
-
-1. 将 SCSS 变量转换为 CSS 自定义属性:
-
-```scss
-// src/styles/variables.scss
-:root {
-  --main-bg-color: #f5f5f5;
-  --base-color: #409EFF;
-  --nav-height: 76px;
-  --side-close-width: 65px;
-  --side-open-width: 160px;
-  --side-bg-color: #161926;
-  --side-text-color: #B0B0B0;
-  --side-active-text-color: #ffd04b;
-}
-
-// 保持 SCSS 变量兼容性
-$main-bg-color: var(--main-bg-color);
-$base-color: var(--base-color);
-$nav-height: var(--nav-height);
-$side-close-width: var(--side-close-width);
-$side-open-width: var(--side-open-width);
-$sideBgColor: var(--side-bg-color);
-$sideTextColor: var(--side-text-color);
-$sideActiveTextColor: var(--side-active-text-color);
-```
-
-2. 删除旧的 `src/styles/variables.scss.js` 文件
-
-3. 更新所有导入旧 `.js` 版本的文件:
-   - `src/views/IFrame.vue`
-   - `src/views/AppMain.vue`
-   - `src/components/layout/components/Logo.vue`
-   - `src/components/layout/SideBar.vue`
-
-4. 在 `src/styles/common.scss` 中直接导入变量文件:
-
-```scss
-@import "./variables.scss";
-
-html {
-    // ... 其他样式
-}
-```
-
-5. 简化 `vite.config.js` 中的 CSS 配置:
-
-```javascript
-css: {
-  devSourcemap: true,
-},
-```
-
-#### 16.2 使用 v-bind() 绑定响应式 CSS 变量
-
-现在可以在 Vue 组件中使用 `v-bind()` 来绑定响应式的 CSS 变量:
-
-```vue
-<template>
-  <div class="example-component">
-    <div class="navbar">
-      <h3>导航栏高度: {{ nav_height }}</h3>
-      <button @click="toggleNavHeight">切换高度</button>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { ref } from 'vue'
-
-const nav_height = ref('76px')
-
-const toggleNavHeight = () => {
-  nav_height.value = nav_height.value === '76px' ? '100px' : '76px'
-}
-</script>
-
-<style scoped>
-.navbar {
-  height: v-bind(nav_height);
-  background-color: var(--base-color);
-  color: white;
-  padding: 10px;
-  transition: height 0.3s ease;
-}
-</style>
-```
-
-**优势**:
-- 解决了 Sass 弃用警告
-- 支持 CSS 自定义属性
-- 可以使用 Vue 3 的 `v-bind()` 功能
-- 更好的性能和兼容性
-
-## 总结
-
-通过以上步骤,成功将Vue CLI项目迁移到Vite,获得了显著的性能提升和更好的开发体验。迁移过程主要涉及配置文件的更新和动态导入方式的调整,整体迁移难度适中,值得进行。
-
----
-
-**迁移完成时间**: 约2-3小时  
-**主要收益**: 启动速度提升80%,热更新速度提升90%,构建速度提升70% 

+ 0 - 1
ggp

@@ -1 +0,0 @@
-ggp

+ 99 - 180
yarn.lock

@@ -2267,12 +2267,7 @@
     "@vue/compiler-dom" "3.2.47"
     "@vue/shared" "3.2.47"
 
-"@vue/devtools-api@^6.0.0-beta.11":
-  version "6.0.0-beta.21.1"
-  resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.21.1.tgz"
-  integrity sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==
-
-"@vue/devtools-api@^6.1.4":
+"@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.1.4":
   version "6.2.0"
   resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.0.tgz"
   integrity sha512-pF1G4wky+hkifDiZSWn8xfuLOJI1ZXtuambpBEYaf7Xaf6zC/pM29rvAGpd3qaGXnr4BAXU1Pxz/VfvBGwexGA==
@@ -2815,7 +2810,7 @@ ajv@^8.0.0:
     require-from-string "^2.0.2"
     uri-js "^4.2.2"
 
-ajv@^8.8.0, ajv@^8.8.2:
+ajv@^8.8.0:
   version "8.11.0"
   resolved "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz"
   integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
@@ -2825,7 +2820,7 @@ ajv@^8.8.0, ajv@^8.8.2:
     require-from-string "^2.0.2"
     uri-js "^4.2.2"
 
-ajv@^8.9.0:
+ajv@^8.8.2, ajv@^8.9.0:
   version "8.17.1"
   resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
   integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
@@ -3807,12 +3802,7 @@ color-support@^1.1.3:
   resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"
   integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
 
-colorette@^2.0.16:
-  version "2.0.16"
-  resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz"
-  integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
-
-colorette@^2.0.17:
+colorette@^2.0.16, colorette@^2.0.17:
   version "2.0.19"
   resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz"
   integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
@@ -3832,7 +3822,12 @@ combined-stream@^1.0.8:
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@*, commander@^2.20.0, commander@2:
+commander@*, commander@^9.3.0:
+  version "9.3.0"
+  resolved "https://registry.npmmirror.com/commander/-/commander-9.3.0.tgz"
+  integrity sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==
+
+commander@^2.20.0:
   version "2.20.3"
   resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
   integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -3842,16 +3837,16 @@ commander@^7.2.0:
   resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
 
-commander@^9.3.0:
-  version "9.3.0"
-  resolved "https://registry.npmmirror.com/commander/-/commander-9.3.0.tgz"
-  integrity sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==
-
 commander@~2.19.0:
   version "2.19.0"
   resolved "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz"
   integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
 
+commander@2:
+  version "2.20.3"
+  resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
 commander@2.17.x:
   version "2.17.1"
   resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz"
@@ -3908,7 +3903,7 @@ compression@1.7.4:
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
-  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
 concat-stream@^1.5.0:
   version "1.6.2"
@@ -4074,16 +4069,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-cross-spawn@^7.0.2:
-  version "7.0.3"
-  resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
-  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
-  dependencies:
-    path-key "^3.1.0"
-    shebang-command "^2.0.0"
-    which "^2.0.1"
-
-cross-spawn@^7.0.3:
+cross-spawn@^7.0.2, cross-spawn@^7.0.3:
   version "7.0.3"
   resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
   integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -4483,7 +4469,16 @@ domutils@^1.5.1:
     dom-serializer "0"
     domelementtype "1"
 
-domutils@^2.5.2, domutils@^2.8.0:
+domutils@^2.5.2:
+  version "2.8.0"
+  resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
+  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+  dependencies:
+    dom-serializer "^1.0.1"
+    domelementtype "^2.2.0"
+    domhandler "^4.2.0"
+
+domutils@^2.8.0:
   version "2.8.0"
   resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
   integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -4826,10 +4821,10 @@ escape-html@^1.0.3:
   resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
   integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
 
-escape-string-regexp@^1.0.2, escape-string-regexp@1.0.5:
+escape-string-regexp@^1.0.2:
   version "1.0.5"
   resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
-  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
 
 escape-string-regexp@^4.0.0:
   version "4.0.0"
@@ -4841,6 +4836,11 @@ escape-string-regexp@^5.0.0:
   resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz"
   integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
 
+escape-string-regexp@1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
 eslint-config-prettier@^8.3.0:
   version "8.3.0"
   resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz"
@@ -4948,16 +4948,7 @@ eslint-visitor-keys@^3.3.0:
     text-table "^0.2.0"
     v8-compile-cache "^2.0.3"
 
-espree@^9.3.1:
-  version "9.3.2"
-  resolved "https://registry.npmmirror.com/espree/-/espree-9.3.2.tgz"
-  integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
-  dependencies:
-    acorn "^8.7.1"
-    acorn-jsx "^5.3.2"
-    eslint-visitor-keys "^3.3.0"
-
-espree@^9.3.2:
+espree@^9.3.1, espree@^9.3.2:
   version "9.3.2"
   resolved "https://registry.npmmirror.com/espree/-/espree-9.3.2.tgz"
   integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
@@ -5359,7 +5350,7 @@ fs-write-stream-atomic@^1.0.8:
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
 fsevents@^1.2.7:
   version "1.2.13"
@@ -5491,12 +5482,7 @@ get-ready@^1.0.0, get-ready@~1.0.0:
   resolved "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz"
   integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==
 
-get-stream@^6.0.0:
-  version "6.0.1"
-  resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
-  integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
-
-get-stream@^6.0.1:
+get-stream@^6.0.0, get-stream@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz"
   integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
@@ -5523,7 +5509,7 @@ glob-parent@^3.1.0:
     is-glob "^3.1.0"
     path-dirname "^1.0.0"
 
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.1.2:
   version "5.1.2"
   resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -5537,6 +5523,13 @@ glob-parent@^6.0.1:
   dependencies:
     is-glob "^4.0.3"
 
+glob-parent@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+  dependencies:
+    is-glob "^4.0.1"
+
 glob-to-regexp@^0.4.1:
   version "0.4.1"
   resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
@@ -5973,7 +5966,7 @@ inflation@^2.0.0:
 inflight@^1.0.4:
   version "1.0.6"
   resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
   dependencies:
     once "^1.3.0"
     wrappy "1"
@@ -6163,7 +6156,7 @@ is-extendable@^1.0.1:
 is-extglob@^2.1.0, is-extglob@^2.1.1:
   version "2.1.1"
   resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
 
 is-fullwidth-code-point@^3.0.0:
   version "3.0.0"
@@ -6337,7 +6330,7 @@ isarray@^2.0.5:
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
 
 isobject@^2.0.0:
   version "2.1.0"
@@ -6353,7 +6346,12 @@ isobject@^2.1.0:
   dependencies:
     isarray "1.0.0"
 
-isobject@^3.0.0, isobject@^3.0.1:
+isobject@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
+  integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+isobject@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
   integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
@@ -6874,15 +6872,7 @@ magic-string@^0.30.0:
   dependencies:
     "@jridgewell/sourcemap-codec" "^1.4.13"
 
-make-dir@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"
-  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
-  dependencies:
-    pify "^4.0.1"
-    semver "^5.6.0"
-
-make-dir@^2.1.0:
+make-dir@^2.0.0, make-dir@^2.1.0:
   version "2.1.0"
   resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"
   integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@@ -6892,8 +6882,6 @@ make-dir@^2.1.0:
 
 make-fetch-happen@^10.0.3:
   version "10.2.1"
-  resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz"
-  integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==
   dependencies:
     agentkeepalive "^4.2.1"
     cacache "^16.1.0"
@@ -7116,12 +7104,7 @@ mime@^1.4.1:
   resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
   integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
 
-mime@^2.4.5:
-  version "2.6.0"
-  resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz"
-  integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
-
-mime@^2.5.2:
+mime@^2.4.5, mime@^2.5.2:
   version "2.6.0"
   resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz"
   integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
@@ -7153,23 +7136,16 @@ minimalistic-crypto-utils@^1.0.1:
   resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
   integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
 
-minimatch@*, minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
-  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimatch@^3.1.1:
+minimatch@*, minimatch@^3.0.4, minimatch@^3.1.2, minimatch@3.1.2:
   version "3.1.2"
-  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
   dependencies:
     brace-expansion "^1.1.7"
 
-minimatch@^3.1.2:
+minimatch@^3.1.1:
   version "3.1.2"
-  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
   dependencies:
     brace-expansion "^1.1.7"
@@ -7186,13 +7162,6 @@ minimatch@^7.4.3:
   dependencies:
     brace-expansion "^2.0.1"
 
-minimatch@3.1.2:
-  version "3.1.2"
-  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
-  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
-  dependencies:
-    brace-expansion "^1.1.7"
-
 minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
   version "1.2.8"
   resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
@@ -7256,8 +7225,6 @@ minipass-sized@^1.0.3:
 
 minipass@^3.0.0:
   version "3.3.6"
-  resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz"
-  integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
   dependencies:
     yallist "^4.0.0"
 
@@ -7414,8 +7381,6 @@ ms@2.0.0:
 
 ms@2.1.2:
   version "2.1.2"
-  resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
-  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
 
 mute-stream@~0.0.4:
   version "0.0.8"
@@ -7562,8 +7527,6 @@ node-releases@^2.0.21:
 
 nopt@^6.0.0:
   version "6.0.0"
-  resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz"
-  integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
   dependencies:
     abbrev "^1.0.0"
 
@@ -7775,8 +7738,6 @@ npm@^9.2.0:
 
 npmlog@^6.0.0:
   version "6.0.2"
-  resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz"
-  integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==
   dependencies:
     are-we-there-yet "^3.0.0"
     console-control-strings "^1.1.0"
@@ -7796,7 +7757,7 @@ npmlog@^7.0.1:
 nprogress@^0.2.0:
   version "0.2.0"
   resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz"
-  integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E=
+  integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
 
 nth-check@^2.0.1:
   version "2.0.1"
@@ -7936,11 +7897,18 @@ on-headers@~1.0.2:
 once@^1.3.0, once@^1.3.1, once@^1.4.0:
   version "1.4.0"
   resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
   dependencies:
     wrappy "1"
 
-onetime@^5.1.0, onetime@^5.1.2:
+onetime@^5.1.0:
+  version "5.1.2"
+  resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
+  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+  dependencies:
+    mimic-fn "^2.1.0"
+
+onetime@^5.1.2:
   version "5.1.2"
   resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
   integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
@@ -8139,7 +8107,7 @@ path-exists@^4.0.0:
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
 
 path-is-inside@1.0.2:
   version "1.0.2"
@@ -8504,17 +8472,7 @@ pumpify@^1.3.3:
     inherits "^2.0.3"
     pump "^2.0.0"
 
-punycode@^1.2.4:
-  version "1.4.1"
-  resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
-  integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
-
-punycode@^1.3.2:
-  version "1.4.1"
-  resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
-  integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
-
-punycode@^1.4.1:
+punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
   integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
@@ -8800,18 +8758,7 @@ readable-stream@^4.1.0:
     events "^3.3.0"
     process "^0.11.10"
 
-readable-stream@^4.2.0:
-  version "4.7.0"
-  resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz"
-  integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==
-  dependencies:
-    abort-controller "^3.0.0"
-    buffer "^6.0.3"
-    events "^3.3.0"
-    process "^0.11.10"
-    string_decoder "^1.3.0"
-
-readable-stream@^4.4.2:
+readable-stream@^4.2.0, readable-stream@^4.4.2:
   version "4.7.0"
   resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz"
   integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==
@@ -9396,12 +9343,7 @@ side-channel@^1.0.4, side-channel@^1.0.6:
     get-intrinsic "^1.2.4"
     object-inspect "^1.13.1"
 
-signal-exit@^3.0.2, signal-exit@^3.0.3:
-  version "3.0.6"
-  resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz"
-  integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
-
-signal-exit@^3.0.7:
+signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
   version "3.0.7"
   resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
   integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -9672,18 +9614,7 @@ stream-each@^1.1.0:
     end-of-stream "^1.1.0"
     stream-shift "^1.0.0"
 
-stream-http@^2.7.2:
-  version "2.8.3"
-  resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz"
-  integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
-  dependencies:
-    builtin-status-codes "^3.0.0"
-    inherits "^2.0.1"
-    readable-stream "^2.3.6"
-    to-arraybuffer "^1.0.0"
-    xtend "^4.0.0"
-
-stream-http@2.8.2:
+stream-http@^2.7.2, stream-http@2.8.2:
   version "2.8.2"
   resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz"
   integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==
@@ -9728,7 +9659,7 @@ string-argv@^0.3.1:
   resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.1.tgz"
   integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
 
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.0, string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -9737,18 +9668,18 @@ string-argv@^0.3.1:
     is-fullwidth-code-point "^3.0.0"
     strip-ansi "^6.0.1"
 
-string-width@^5.0.0:
-  version "5.1.2"
-  resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz"
-  integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+string-width@^4.1.0:
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
   dependencies:
-    eastasianwidth "^0.2.0"
-    emoji-regex "^9.2.2"
-    strip-ansi "^7.0.1"
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
 
-string-width@^5.0.1, string-width@^5.1.2:
+string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2:
   version "5.1.2"
-  resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
+  resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz"
   integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
   dependencies:
     eastasianwidth "^0.2.0"
@@ -9915,7 +9846,7 @@ svg-sprite-loader@^4.1.3:
 svg-tags@^1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz"
-  integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
+  integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
 
 svgo@^2.8.0:
   version "2.8.0"
@@ -10152,20 +10083,15 @@ treeverse@^3.0.0:
   resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz"
   integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==
 
-tslib@^2.1.0, tslib@^2.3.0, tslib@2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
-  integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
-
-tslib@^2.6.2:
+tslib@^2.1.0, tslib@^2.3.0, tslib@^2.6.2, tslib@^2.8.1:
   version "2.8.1"
   resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
   integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
 
-tslib@^2.8.1:
-  version "2.8.1"
-  resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
-  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+tslib@2.3.0:
+  version "2.3.0"
+  resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
+  integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
 
 tsml@1.0.1:
   version "1.0.1"
@@ -10759,7 +10685,12 @@ vue-cli-plugin-element-plus@^0.0.13:
   resolved "https://registry.npmjs.org/vue-cli-plugin-element-plus/-/vue-cli-plugin-element-plus-0.0.13.tgz"
   integrity sha512-ctG5mynJIyGLFBhS2JpzXmBWT3JRXwzMm5AoANUmBlbZHTruct1xQF2OKM/mfJv6tSfqCcEfgH8rGCAY5ca83Q==
 
-vue-demi@*, vue-demi@^0.13.2:
+vue-demi@*:
+  version "0.13.2"
+  resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.2.tgz"
+  integrity sha512-41ukrclEbMddAyP7PvxMSYqnOSzPV6r7GNnyTSKSCNTaz19GehxmTiXyP9kwHSUv2+Dr6hHqiUiF7L1VAw2KdQ==
+
+vue-demi@^0.13.2:
   version "0.13.2"
   resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.2.tgz"
   integrity sha512-41ukrclEbMddAyP7PvxMSYqnOSzPV6r7GNnyTSKSCNTaz19GehxmTiXyP9kwHSUv2+Dr6hHqiUiF7L1VAw2KdQ==
@@ -10800,11 +10731,6 @@ vue-router@^4.1.0:
   dependencies:
     "@vue/devtools-api" "^6.1.4"
 
-vue-template-es2015-compiler@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
-  integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-
 vue@^2.1.8:
   version "2.7.14"
   resolved "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz"
@@ -11023,8 +10949,6 @@ which@^2.0.1:
 
 which@^2.0.2:
   version "2.0.2"
-  resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
-  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   dependencies:
     isexe "^2.0.0"
 
@@ -11131,7 +11055,7 @@ wrap-ansi@^8.0.1:
 wrappy@1:
   version "1.0.2"
   resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
 
 write-file-atomic@^5.0.0:
   version "5.0.0"
@@ -11141,12 +11065,7 @@ write-file-atomic@^5.0.0:
     imurmurhash "^0.1.4"
     signal-exit "^3.0.7"
 
-ws@^8.17.1:
-  version "8.18.3"
-  resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz"
-  integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
-
-ws@^8.18.3:
+ws@^8.17.1, ws@^8.18.3:
   version "8.18.3"
   resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz"
   integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==