From fb0e90ea35e132f4c272dc70745daeade6f68939 Mon Sep 17 00:00:00 2001
From: lockiechen <lockiechen@tencent.com>
Date: Sun, 29 Sep 2024 09:59:01 +0800
Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E9=9D=9E=E7=BC=96=E8=BE=91=E9=A1=B5?=
 =?UTF-8?q?=E9=9D=A2=E5=88=87=E6=8D=A2Code=E6=96=B9=E5=BC=8F=E6=97=B6?=
 =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=BF=9D=E5=AD=98=20#10933?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/frontend/devops-pipeline/src/components/ModeSwitch.vue   | 5 +----
 .../devops-pipeline/src/store/modules/atom/atomUtil.js       | 2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/frontend/devops-pipeline/src/components/ModeSwitch.vue b/src/frontend/devops-pipeline/src/components/ModeSwitch.vue
index f15a1ad82ca..4f275535bbe 100644
--- a/src/frontend/devops-pipeline/src/components/ModeSwitch.vue
+++ b/src/frontend/devops-pipeline/src/components/ModeSwitch.vue
@@ -94,9 +94,6 @@
                     id: mode,
                     cls: this.pipelineMode === mode ? 'is-selected' : ''
                 }))
-            },
-            canSwitch () {
-                return !(!this.readOnly && this.isEditing)
             }
         },
 
@@ -205,7 +202,7 @@
                     }
                     this.isSwitching = false
                 }
-                if (!this.draft && this.isEditing) {
+                if (!this.draft && this.isEditing && !this.readOnly) {
                     this.leaveConfirmVisisble = true
                     this.newMode = mode
                     return
diff --git a/src/frontend/devops-pipeline/src/store/modules/atom/atomUtil.js b/src/frontend/devops-pipeline/src/store/modules/atom/atomUtil.js
index 0ba1b167fd0..9e3a2ed2efb 100755
--- a/src/frontend/devops-pipeline/src/store/modules/atom/atomUtil.js
+++ b/src/frontend/devops-pipeline/src/store/modules/atom/atomUtil.js
@@ -17,7 +17,7 @@
  * 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.
  */
 
-import { ADD_STAGE, NORMAL_CONTAINER_TYPE, SET_PIPELINE_EDITING, TRIGGER_CONTAINER_TYPE, UPDATE_ATOM_OUTPUT_NAMESPACE, VM_CONTAINER_TYPE, SET_ATOM_EDITING } from './constants'
+import { ADD_STAGE, NORMAL_CONTAINER_TYPE, SET_ATOM_EDITING, SET_PIPELINE_EDITING, TRIGGER_CONTAINER_TYPE, UPDATE_ATOM_OUTPUT_NAMESPACE, VM_CONTAINER_TYPE } from './constants'
 
 /**
  * 获取原子模型unique Key

From b48d2a05362b9d314f2baa52e6225eb1ecc63ca6 Mon Sep 17 00:00:00 2001
From: lockiechen <lockiechen@tencent.com>
Date: Sun, 29 Sep 2024 10:51:33 +0800
Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E9=9D=9E=E7=BC=96=E8=BE=91=E9=A1=B5?=
 =?UTF-8?q?=E9=9D=A2=E5=88=87=E6=8D=A2Code=E6=96=B9=E5=BC=8F=E6=97=B6?=
 =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=BF=9D=E5=AD=98=20#10933?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/frontend/gulpfile.js                      |  50 +++--
 src/frontend/nx.json                          |   3 +-
 src/frontend/package.json                     |  11 +-
 src/frontend/pnpm-lock.yaml                   | 207 ++++++++++--------
 src/frontend/webpack.base.js                  |   2 +-
 .../webpackPlugin/bundle-webpack-plugin.js    |  30 +--
 6 files changed, 175 insertions(+), 128 deletions(-)

diff --git a/src/frontend/gulpfile.js b/src/frontend/gulpfile.js
index 01afa70486d..d48578d6d7b 100755
--- a/src/frontend/gulpfile.js
+++ b/src/frontend/gulpfile.js
@@ -6,6 +6,7 @@ const svgSprite = require('gulp-svg-sprite')
 const inject = require('gulp-inject')
 const rename = require('gulp-rename')
 const hash = require('gulp-hash')
+const { globSync } = require('glob')
 const replace = require('gulp-replace')
 const Ora = require('ora')
 const yargs = require('yargs')
@@ -15,20 +16,24 @@ const argv = yargs.alias({
     dist: 'd',
     env: 'e',
     lsVersion: 'l',
-    scope: 's'
+    scope: 's',
+    effect: 'effect'
 }).default({
     dist: 'frontend',
     env: 'master',
-    lsVersion: 'dev'
+    lsVersion: 'dev',
+    effect: false
 }).describe({
     dist: 'build output dist directory',
     env: 'environment [dev, test, master, external]',
     lsVersion: 'localStorage version',
     head: 'head file path',
-    base: 'base file path'
+    base: 'base file path',
+    effect: 'only buuild effected service'
 }).argv
-const { dist, env, lsVersion, scope, head = 'HEAD', base = 'master' } = argv
+const { dist, env, lsVersion, scope, head = 'HEAD', base = 'master', effect = false } = argv
 console.log(env, head, base)
+const FINAL_ASSETS_JSON_FILENAME = `${dist}/assetsBundles.js`
 const svgSpriteConfig = {
     mode: {
         symbol: true
@@ -88,7 +93,7 @@ task('build', series(cb => {
     const spinner = new Ora('building bk-ci frontend project').start()
     const scopeStr = getScopeStr(scope)
     
-    const cmd = scopeStr ? `run-many -t public:master ${scopeStr}` : 'affected -t public:master'
+    const cmd = effect ? 'affected -t public:master' : `run-many -t public:master ${scopeStr}`
     console.log('gulp cmd: ', cmd, cmd.split(' '))
     const { spawn } = require('node:child_process')
     const spawnCmd = spawn('pnpm', [
@@ -116,18 +121,37 @@ task('build', series(cb => {
     })
 }, (cb) => {
     try {
-        const fileContent = `window.SERVICE_ASSETS = ${fs.readFileSync(`${dist}/assets_bundle.json`, 'utf8')}`
-        fs.writeFileSync(`${dist}/assetsBundles.js`, fileContent)
-        return src(`${dist}/assetsBundles.js`, {
-            allowEmpty: true
-        })
-            .pipe(hash())
-            .pipe(dest(`${dist}/`))
+        const entryDir = path.join(__dirname, dist, "entry's")
+
+        // 读取path.join(__dirname, dist, 'entry's', '*.json')所有Json合并成一个
+        const finalAssets = globSync(path.join(entryDir, '*.json')).reduce((acc, file) => {
+            const content = JSON.parse(fs.readFileSync(file, 'utf-8'))
+            acc = {
+                ...acc,
+                ...content
+            }
+            return acc
+        }, {})
+    
+        console.log('final assets json!')
+        console.table(finalAssets)
+        const fileContent = `window.SERVICE_ASSETS = ${JSON.stringify(finalAssets)}`
+        
+        fs.writeFileSync(FINAL_ASSETS_JSON_FILENAME, fileContent)
+        if (fs.existsSync(entryDir)) {
+            fs.rmSync(entryDir, {
+                recursive: true,
+                force: true
+            })
+        }
+        return src(FINAL_ASSETS_JSON_FILENAME).pipe(hash()).pipe(dest(dist))
+        
     } catch (error) {
         console.log('build assetsBundles.js failed')
         console.error(error)
+        process.exit(1)
     }
-    cb()
+    
 }, (cb) => {
     ['console', 'pipeline'].map(prefix => {
         const dir = path.join(dist, prefix)
diff --git a/src/frontend/nx.json b/src/frontend/nx.json
index a8bf6b7d8c8..166b1f66e7c 100644
--- a/src/frontend/nx.json
+++ b/src/frontend/nx.json
@@ -6,7 +6,8 @@
         "^public:master"
       ],
       "outputs": [
-        "{projectRoot}/dist"
+        "{projectRoot}/dist",
+        "{workspaceRoot}/frontend"
       ],
       "cache": true
     },
diff --git a/src/frontend/package.json b/src/frontend/package.json
index 5cb25ffc550..1f3009db37a 100644
--- a/src/frontend/package.json
+++ b/src/frontend/package.json
@@ -4,6 +4,9 @@
   "devDependencies": {
     "@commitlint/cli": "^9.1.1",
     "@commitlint/config-conventional": "^16.2.4",
+    "@nx/eslint": "19.5.1",
+    "@nx/vite": "19.5.1",
+    "@nx/webpack": "19.5.1",
     "@typescript-eslint/parser": "^1.9.0",
     "@webpack-cli/serve": "^1.7.0",
     "chalk": "^4.0.0",
@@ -13,6 +16,7 @@
     "del": "6.1.1",
     "eslint": "^7.3.1",
     "eslint-plugin-vue": "6.2.2",
+    "glob": "^11.0.0",
     "glob-parent": "5.1.2",
     "gulp": "^4.0.2",
     "gulp-hash": "^4.2.2",
@@ -25,6 +29,7 @@
     "husky": "^7.0.2",
     "lint-staged": "^10.2.11",
     "node-fetch": "^2.6.0",
+    "nx": "19.5.1",
     "ora": "^3.4.0",
     "svg-sprite-loader": "^6.0.9",
     "typescript": "3.4.5",
@@ -32,11 +37,7 @@
     "webpack": "~5.76.1",
     "webpack-bundle-analyzer": "^4.4.2",
     "webpack-cli": "^4.10.0",
-    "webpack-dev-server": "^4.3.1",
-    "nx": "19.5.1",
-    "@nx/eslint": "19.5.1",
-    "@nx/webpack": "19.5.1",
-    "@nx/vite": "19.5.1"
+    "webpack-dev-server": "^4.3.1"
   },
   "resolutions": {
     "glob-parent": "5.1.2"
diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml
index 66f24a354b8..242ea705ba8 100644
--- a/src/frontend/pnpm-lock.yaml
+++ b/src/frontend/pnpm-lock.yaml
@@ -35,7 +35,7 @@ importers:
         version: 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(@zkochan/js-yaml@0.0.7)(eslint@7.32.0)(nx@19.5.1)
       '@nx/vite':
         specifier: 19.5.1
-        version: 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))
+        version: 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))
       '@nx/webpack':
         specifier: 19.5.1
         version: 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(bufferutil@4.0.8)(html-webpack-plugin@5.6.0(webpack@5.76.1(webpack-cli@4.10.0)))(nx@19.5.1)(typescript@3.4.5)(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))
@@ -66,6 +66,9 @@ importers:
       eslint-plugin-vue:
         specifier: 6.2.2
         version: 6.2.2(eslint@7.32.0)
+      glob:
+        specifier: ^11.0.0
+        version: 11.0.0
       glob-parent:
         specifier: 5.1.2
         version: 5.1.2
@@ -5705,7 +5708,7 @@ packages:
     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
 
   assign-symbols@1.0.0:
-    resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+    resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=}
     engines: {node: '>=0.10.0'}
 
   astral-regex@2.0.0:
@@ -6151,7 +6154,7 @@ packages:
     engines: {node: '>=10'}
 
   can-use-dom@0.1.0:
-    resolution: {integrity: sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==}
+    resolution: {integrity: sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=}
 
   caniuse-api@3.0.0:
     resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
@@ -6382,7 +6385,7 @@ packages:
     resolution: {integrity: sha512-D3wYH90tYY1BsKlUe0oNj2JAhQ9TepkD51auk3N7q+4uz7A/cgJ5JsWHreT0PqieW1QhOuqxQ2reCXV1YXzecg==}
 
   collection-map@1.0.0:
-    resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==}
+    resolution: {integrity: sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=}
     engines: {node: '>=0.10.0'}
 
   collection-visit@1.0.0:
@@ -6483,7 +6486,7 @@ packages:
     engines: {node: '>= 0.8.0'}
 
   concat-map@0.0.1:
-    resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
   concat-stream@1.6.2:
     resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
@@ -7645,7 +7648,7 @@ packages:
     engines: {node: '>=10.2.0'}
 
   enhanced-resolve@0.9.1:
-    resolution: {integrity: sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=}
+    resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==}
     engines: {node: '>=0.6'}
 
   enhanced-resolve@3.4.1:
@@ -7763,7 +7766,7 @@ packages:
     resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
 
   es6-promisify@5.0.0:
-    resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
+    resolution: {integrity: sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=}
 
   es6-symbol@3.1.4:
     resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
@@ -8246,7 +8249,7 @@ packages:
     engines: {node: '>= 0.6'}
 
   event-emitter@0.3.5:
-    resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
+    resolution: {integrity: sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=}
 
   event-pubsub@4.3.0:
     resolution: {integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==}
@@ -8818,6 +8821,11 @@ packages:
     engines: {node: '>=16 || 14 >=14.18'}
     hasBin: true
 
+  glob@11.0.0:
+    resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==}
+    engines: {node: 20 || >=22}
+    hasBin: true
+
   glob@7.2.3:
     resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
 
@@ -9498,7 +9506,7 @@ packages:
     engines: {node: '>= 0.4'}
 
   is-directory@0.3.1:
-    resolution: {integrity: sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=}
+    resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==}
     engines: {node: '>=0.10.0'}
 
   is-docker@2.2.1:
@@ -9666,7 +9674,7 @@ packages:
     resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
 
   is-stream@1.1.0:
-    resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+    resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=}
     engines: {node: '>=0.10.0'}
 
   is-stream@2.0.1:
@@ -9797,6 +9805,10 @@ packages:
     resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
     engines: {node: '>=14'}
 
+  jackspeak@4.0.2:
+    resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==}
+    engines: {node: 20 || >=22}
+
   jake@10.9.2:
     resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
     engines: {node: '>=10'}
@@ -9935,7 +9947,7 @@ packages:
     resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
 
   json-stable-stringify-without-jsonify@1.0.1:
-    resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
+    resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
 
   json-stringify-safe@5.0.1:
     resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
@@ -10473,6 +10485,10 @@ packages:
     resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
     engines: {node: 14 || >=16.14}
 
+  lru-cache@11.0.1:
+    resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==}
+    engines: {node: 20 || >=22}
+
   lru-cache@4.1.5:
     resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
 
@@ -10747,6 +10763,10 @@ packages:
   minimalistic-crypto-utils@1.0.1:
     resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
 
+  minimatch@10.0.1:
+    resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+    engines: {node: 20 || >=22}
+
   minimatch@3.0.8:
     resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
 
@@ -10815,7 +10835,7 @@ packages:
     engines: {node: '>=4.0.0'}
 
   mitt@1.1.2:
-    resolution: {integrity: sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=}
+    resolution: {integrity: sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==}
 
   mixin-deep@1.3.2:
     resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
@@ -11375,6 +11395,9 @@ packages:
     resolution: {integrity: sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg==}
     engines: {node: '>=4'}
 
+  package-json-from-dist@1.0.1:
+    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
   pako@1.0.11:
     resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
 
@@ -11516,6 +11539,10 @@ packages:
     resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
     engines: {node: '>=16 || 14 >=14.18'}
 
+  path-scurry@2.0.0:
+    resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+    engines: {node: 20 || >=22}
+
   path-to-regexp@0.1.7:
     resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
 
@@ -12822,7 +12849,7 @@ packages:
     resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
 
   quick-lru@1.1.0:
-    resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==}
+    resolution: {integrity: sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=}
     engines: {node: '>=4'}
 
   quick-lru@4.0.1:
@@ -14652,7 +14679,7 @@ packages:
     resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==}
 
   unset-value@1.0.0:
-    resolution: {integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=}
+    resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
     engines: {node: '>=0.10.0'}
 
   upath@1.2.0:
@@ -14775,7 +14802,7 @@ packages:
     resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==}
 
   verror@1.10.0:
-    resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=}
+    resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
     engines: {'0': node >=0.6.0}
 
   vfile-message@2.0.4:
@@ -16735,13 +16762,13 @@ snapshots:
   '@blueking/eslint-config-bk@2.1.0-beta.12(@babel/core@7.24.6)(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(prettier@2.8.8)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       '@babel/eslint-parser': 7.24.6(@babel/core@7.24.6)(eslint@8.57.0)
-      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
-      '@vue/eslint-config-standard': 6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@vue/eslint-config-standard': 6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -16766,7 +16793,7 @@ snapshots:
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -16791,7 +16818,7 @@ snapshots:
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@7.32.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -18226,9 +18253,9 @@ snapshots:
       - '@swc/core'
       - debug
 
-  '@nrwl/vite@19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))':
+  '@nrwl/vite@19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))':
     dependencies:
-      '@nx/vite': 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))
+      '@nx/vite': 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))
     transitivePeerDependencies:
       - '@babel/traverse'
       - '@swc-node/register'
@@ -18448,17 +18475,17 @@ snapshots:
   '@nx/nx-win32-x64-msvc@19.5.1':
     optional: true
 
-  '@nx/vite@19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))':
+  '@nx/vite@19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))':
     dependencies:
-      '@nrwl/vite': 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0))
+      '@nrwl/vite': 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)(vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))(vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0))
       '@nx/devkit': 19.5.1(nx@19.5.1)
       '@nx/js': 19.5.1(@babel/traverse@7.24.6)(@types/node@20.12.13)(nx@19.5.1)(typescript@3.4.5)
       '@phenomnomnominal/tsquery': 5.0.1(typescript@3.4.5)
       '@swc/helpers': 0.5.12
       enquirer: 2.3.6
       tsconfig-paths: 4.2.0
-      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0)
-      vitest: 1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0)
+      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0)
+      vitest: 1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0)
     transitivePeerDependencies:
       - '@babel/traverse'
       - '@swc-node/register'
@@ -19198,7 +19225,7 @@ snapshots:
 
   '@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)':
     dependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       '@typescript-eslint/scope-manager': 5.20.0
       '@typescript-eslint/type-utils': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       '@typescript-eslint/utils': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
@@ -19214,24 +19241,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)':
-    dependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
-      '@typescript-eslint/scope-manager': 5.20.0
-      '@typescript-eslint/type-utils': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
-      '@typescript-eslint/utils': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
-      debug: 4.3.4
-      eslint: 8.57.0
-      functional-red-black-tree: 1.0.1
-      ignore: 5.3.1
-      regexpp: 3.2.0
-      semver: 7.6.2
-      tsutils: 3.21.0(typescript@4.6.4)
-    optionalDependencies:
-      typescript: 4.9.5
-    transitivePeerDependencies:
-      - supports-color
-
   '@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
     dependencies:
       '@eslint-community/regexpp': 4.10.0
@@ -19302,18 +19311,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5)':
-    dependencies:
-      '@typescript-eslint/scope-manager': 5.20.0
-      '@typescript-eslint/types': 5.20.0
-      '@typescript-eslint/typescript-estree': 5.20.0(typescript@4.6.4)
-      debug: 4.3.4
-      eslint: 8.57.0
-    optionalDependencies:
-      typescript: 4.9.5
-    transitivePeerDependencies:
-      - supports-color
-
   '@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5)':
     dependencies:
       '@typescript-eslint/scope-manager': 7.11.0
@@ -20386,13 +20383,13 @@ snapshots:
       - supports-color
       - webpack
 
-  '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
+  '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -20405,10 +20402,10 @@ snapshots:
   '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(lodash@4.17.21)(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -20421,10 +20418,10 @@ snapshots:
   '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.76.1(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
       eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.76.1(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -23893,10 +23890,17 @@ snapshots:
       eslint-plugin-node: 11.1.0(eslint@7.32.0)
       eslint-plugin-promise: 5.1.1(eslint@7.32.0)
 
-  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
+  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
+    dependencies:
+      eslint: 8.57.0
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-node: 11.1.0(eslint@8.57.0)
+      eslint-plugin-promise: 6.0.1(eslint@8.57.0)
+
+  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
     dependencies:
       eslint: 8.57.0
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
 
@@ -23915,7 +23919,7 @@ snapshots:
       '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-plugin-chalk: 1.0.0(eslint@8.57.0)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-prettier: 4.2.1(eslint@7.32.0)(prettier@2.8.8)
       prettier: 2.8.8
     transitivePeerDependencies:
@@ -23927,11 +23931,11 @@ snapshots:
     dependencies:
       '@babel/core': 7.24.6
       '@babel/eslint-parser': 7.24.6(@babel/core@7.24.6)(eslint@8.57.0)
-      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-plugin-chalk: 1.0.0(eslint@8.57.0)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       eslint-plugin-prettier: 4.2.1(eslint@8.57.0)(prettier@2.8.8)
       prettier: 2.8.8
     transitivePeerDependencies:
@@ -23985,7 +23989,7 @@ snapshots:
       array.prototype.find: 2.2.3
       debug: 3.2.7
       enhanced-resolve: 0.9.1
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       find-root: 1.1.0
       hasown: 2.0.2
       interpret: 1.4.0
@@ -23998,12 +24002,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))):
+  eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))):
     dependencies:
       array.prototype.find: 2.2.3
       debug: 3.2.7
       enhanced-resolve: 0.9.1
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
       find-root: 1.1.0
       hasown: 2.0.2
       interpret: 1.4.0
@@ -24060,7 +24064,7 @@ snapshots:
     dependencies:
       debug: 3.2.7
     optionalDependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-import-resolver-node: 0.3.9
     transitivePeerDependencies:
@@ -24163,7 +24167,7 @@ snapshots:
       - eslint-import-resolver-webpack
       - supports-color
 
-  eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0):
+  eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0):
     dependencies:
       array-includes: 3.1.8
       array.prototype.findlastindex: 1.2.5
@@ -24184,7 +24188,7 @@ snapshots:
       semver: 6.3.1
       tsconfig-paths: 3.15.0
     optionalDependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
     transitivePeerDependencies:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
@@ -25300,6 +25304,15 @@ snapshots:
       minipass: 7.1.2
       path-scurry: 1.11.1
 
+  glob@11.0.0:
+    dependencies:
+      foreground-child: 3.2.0
+      jackspeak: 4.0.2
+      minimatch: 10.0.1
+      minipass: 7.1.2
+      package-json-from-dist: 1.0.1
+      path-scurry: 2.0.0
+
   glob@7.2.3:
     dependencies:
       fs.realpath: 1.0.0
@@ -26391,6 +26404,10 @@ snapshots:
     optionalDependencies:
       '@pkgjs/parseargs': 0.11.0
 
+  jackspeak@4.0.2:
+    dependencies:
+      '@isaacs/cliui': 8.0.2
+
   jake@10.9.2:
     dependencies:
       async: 3.2.5
@@ -27307,6 +27324,8 @@ snapshots:
 
   lru-cache@10.2.2: {}
 
+  lru-cache@11.0.1: {}
+
   lru-cache@4.1.5:
     dependencies:
       pseudomap: 1.0.2
@@ -27665,6 +27684,10 @@ snapshots:
 
   minimalistic-crypto-utils@1.0.1: {}
 
+  minimatch@10.0.1:
+    dependencies:
+      brace-expansion: 2.0.1
+
   minimatch@3.0.8:
     dependencies:
       brace-expansion: 1.1.11
@@ -28451,6 +28474,8 @@ snapshots:
     dependencies:
       p-reduce: 1.0.0
 
+  package-json-from-dist@1.0.1: {}
+
   pako@1.0.11: {}
 
   parallel-transform@1.2.0:
@@ -28601,6 +28626,11 @@ snapshots:
       lru-cache: 10.2.2
       minipass: 7.1.2
 
+  path-scurry@2.0.0:
+    dependencies:
+      lru-cache: 11.0.1
+      minipass: 7.1.2
+
   path-to-regexp@0.1.7: {}
 
   path-type@1.1.0:
@@ -31805,6 +31835,11 @@ snapshots:
     dependencies:
       postcss: 7.0.39
 
+  sugarss@4.0.1(postcss@5.2.18):
+    dependencies:
+      postcss: 5.2.18
+    optional: true
+
   sugarss@4.0.1(postcss@8.4.38):
     dependencies:
       postcss: 8.4.38
@@ -32796,13 +32831,13 @@ snapshots:
       remove-trailing-separator: 1.1.0
       replace-ext: 1.0.1
 
-  vite-node@1.6.0(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0):
+  vite-node@1.6.0(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0):
     dependencies:
       cac: 6.7.14
       debug: 4.3.4
       pathe: 1.1.2
       picocolors: 1.0.1
-      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0)
+      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -32825,7 +32860,7 @@ snapshots:
       sass: 1.77.2
       stylus: 0.63.0
 
-  vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0):
+  vite@5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.4.39
@@ -32836,10 +32871,10 @@ snapshots:
       less: 4.1.3
       sass: 1.77.2
       stylus: 0.59.0
-      sugarss: 4.0.1(postcss@8.4.38)
+      sugarss: 4.0.1(postcss@5.2.18)
       terser: 5.31.0
 
-  vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0):
+  vitest@1.6.0(@types/node@20.12.13)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0):
     dependencies:
       '@vitest/expect': 1.6.0
       '@vitest/runner': 1.6.0
@@ -32858,8 +32893,8 @@ snapshots:
       strip-literal: 2.1.0
       tinybench: 2.8.0
       tinypool: 0.8.4
-      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0)
-      vite-node: 1.6.0(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@8.4.38))(terser@5.31.0)
+      vite: 5.3.4(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0)
+      vite-node: 1.6.0(@types/node@20.12.13)(less@4.1.3)(sass@1.77.2)(stylus@0.59.0)(sugarss@4.0.1(postcss@5.2.18))(terser@5.31.0)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/node': 20.12.13
diff --git a/src/frontend/webpack.base.js b/src/frontend/webpack.base.js
index a8ae2eaa336..8f3d269ee89 100644
--- a/src/frontend/webpack.base.js
+++ b/src/frontend/webpack.base.js
@@ -98,7 +98,7 @@ module.exports = ({ entry, publicPath, dist, port = 8080, argv, env }) => {
             new BundleWebpackPlugin({
                 dist: envDist,
                 isDev,
-                bundleName: 'assets_bundle'
+                entryFolderName: "entry's"
             }),
             new MiniCssExtractPlugin({
                 filename: '[name].[contenthash].css',
diff --git a/src/frontend/webpackPlugin/bundle-webpack-plugin.js b/src/frontend/webpackPlugin/bundle-webpack-plugin.js
index fdadbbb7905..474d8e78ee8 100644
--- a/src/frontend/webpackPlugin/bundle-webpack-plugin.js
+++ b/src/frontend/webpackPlugin/bundle-webpack-plugin.js
@@ -23,22 +23,21 @@ module.exports = class BundleWebpackPlugin {
     // Define `apply` as its prototype method which is supplied with compiler as its argument
     constructor (props) {
         const dist = props.dist || '.'
-        const bundleName = props.bundleName || 'assets_bundle'
+        const entryFolderName = props.entryFolderName
         this.isDev = props.isDev || false
-        this.SERVICE_ASSETS_JSON_PATH = path.join(
+        this.SERVICE_ASSETS_DIR = path.join(
             __dirname,
             '..',
             dist,
-            `${bundleName}.json`
+            entryFolderName
         )
-        this.SERVICE_ASSETS_DIR = path.dirname(this.SERVICE_ASSETS_JSON_PATH)
     }
 
     apply (compiler) {
         compiler.hooks.done.tapAsync(
             'BundleWebpackPlugin',
             (compilation, callback) => {
-                const { SERVICE_ASSETS_JSON_PATH, SERVICE_ASSETS_DIR, isDev } = this
+                const { SERVICE_ASSETS_DIR } = this
                 const entryNames = Array.from(
                     compilation.compilation.entrypoints.keys()
                 )
@@ -82,24 +81,11 @@ module.exports = class BundleWebpackPlugin {
                         })
 
                     assetsMap[entryName] = assets
+                    if (!fs.existsSync(SERVICE_ASSETS_DIR)) {
+                        fs.mkdirSync(SERVICE_ASSETS_DIR)
+                    }
+                    fs.writeFileSync(`${SERVICE_ASSETS_DIR}/${entryName}.json`, JSON.stringify(assetsMap))
                 }
-
-                let json = {}
-                if (!isDev && fs.existsSync(SERVICE_ASSETS_JSON_PATH)) {
-                    json = JSON.parse(
-                        fs.readFileSync(SERVICE_ASSETS_JSON_PATH, 'utf-8').toString()
-                    )
-                }
-                json = {
-                    ...json,
-                    ...assetsMap
-                }
-                if (!fs.existsSync(SERVICE_ASSETS_DIR)) {
-                    fs.mkdirSync(SERVICE_ASSETS_DIR)
-                }
-                console.log('update json', JSON.stringify(json))
-                fs.writeFileSync(SERVICE_ASSETS_JSON_PATH, JSON.stringify(json))
-
                 callback()
             }
         )

From d6cf541645d292030b3b2f56a159a1257fc616fa Mon Sep 17 00:00:00 2001
From: lockiechen <lockiechen@tencent.com>
Date: Sun, 29 Sep 2024 15:50:43 +0800
Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E9=9D=9E=E7=BC=96=E8=BE=91=E9=A1=B5?=
 =?UTF-8?q?=E9=9D=A2=E5=88=87=E6=8D=A2Code=E6=96=B9=E5=BC=8F=E6=97=B6?=
 =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=BF=9D=E5=AD=98=20#10933?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/BuildHistoryTable/index.vue    |   2 +-
 .../PipelineDetailTabs/VersionDiffEntry.vue   |  26 +-
 .../components/PipelineHeader/EditHeader.vue  | 273 +++++++++++++++---
 .../src/store/modules/atom/getters.js         |   3 +
 src/frontend/locale/pipeline/en-US.json       |   6 +-
 src/frontend/locale/pipeline/zh-CN.json       |   6 +-
 src/frontend/pnpm-lock.yaml                   |  95 +++---
 .../webpackPlugin/bundle-webpack-plugin.js    |  14 +-
 8 files changed, 348 insertions(+), 77 deletions(-)

diff --git a/src/frontend/devops-pipeline/src/components/BuildHistoryTable/index.vue b/src/frontend/devops-pipeline/src/components/BuildHistoryTable/index.vue
index 80c54eb693f..2e3639295e9 100755
--- a/src/frontend/devops-pipeline/src/components/BuildHistoryTable/index.vue
+++ b/src/frontend/devops-pipeline/src/components/BuildHistoryTable/index.vue
@@ -808,7 +808,7 @@
                 'resetHistoryFilterCondition'
             ]),
             updateTableHeight () {
-                this.tableHeight = this.$refs.tableBox.offsetHeight
+                this.tableHeight = this.$refs.tableBox?.offsetHeight
             },
             handleColumnChange (columns) {
                 this.tableColumnKeys = columns
diff --git a/src/frontend/devops-pipeline/src/components/PipelineDetailTabs/VersionDiffEntry.vue b/src/frontend/devops-pipeline/src/components/PipelineDetailTabs/VersionDiffEntry.vue
index 63f68e0cc29..679948206cf 100644
--- a/src/frontend/devops-pipeline/src/components/PipelineDetailTabs/VersionDiffEntry.vue
+++ b/src/frontend/devops-pipeline/src/components/PipelineDetailTabs/VersionDiffEntry.vue
@@ -1,9 +1,11 @@
 <template>
-    <span>
+    <span class="version-diff-entry-wrapper">
         <bk-button
             :text="text"
             :outline="outline"
             :theme="theme"
+            :disabled="disabled"
+            :size="size"
             @click="initDiff"
         >
             <slot>
@@ -23,7 +25,10 @@
                 class="diff-version-dialog-content"
                 v-bkloading="{ isLoading: isLoadYaml, color: '#1d1d1d' }"
             >
-                <header class="diff-version-header">
+                <header
+                    class="diff-version-header"
+                    v-if="showButton"
+                >
                     <VersionSelector
                         ext-cls="dark-theme-select-trigger"
                         ext-popover-cls="dark-theme-select-menu"
@@ -82,6 +87,10 @@
                 type: String,
                 default: 'primary'
             },
+            size: {
+                type: String,
+                default: 'normal'
+            },
             version: {
                 type: Number,
                 required: true
@@ -93,6 +102,14 @@
             canSwitchVersion: {
                 type: Boolean,
                 default: true
+            },
+            showButton: {
+                type: Boolean,
+                default: true
+            },
+            disabled: {
+                type: Boolean,
+                default: false
             }
         },
         data () {
@@ -167,6 +184,11 @@
 
 <style lang="scss">
     @import "@/scss/select-dark-theme.scss";
+    .version-diff-entry-wrapper {
+        .bk-button-text.bk-button-small {
+            padding: 0;
+        }
+    }
     .diff-version-dialog.bk-dialog-wrapper {
         transition: none;
         .bk-dialog {
diff --git a/src/frontend/devops-pipeline/src/components/PipelineHeader/EditHeader.vue b/src/frontend/devops-pipeline/src/components/PipelineHeader/EditHeader.vue
index 073a26d140e..4f8b16ccb84 100644
--- a/src/frontend/devops-pipeline/src/components/PipelineHeader/EditHeader.vue
+++ b/src/frontend/devops-pipeline/src/components/PipelineHeader/EditHeader.vue
@@ -60,18 +60,49 @@
                 }"
                 @click="exec(true)"
             >
-                <span class="debug-pipeline-draft-btn">
-                    {{ $t("debug") }}
-                    <b>|</b>
-                    <i
-                        v-bk-tooltips="$t('draftRecordEntryTitle')"
-                        :class="['devops-icon icon-txt', {
-                            'icon-txt-disabled': !canDebug
-                        }]"
-                        @click.stop="goDraftDebugRecord"
-                    />
-                </span>
+                {{ $t("debug") }}
             </bk-button>
+            <bk-dropdown-menu
+                trigger="click"
+                align="center"
+            >
+                <div
+                    slot="dropdown-trigger"
+                >
+                    <i class="manage-icon manage-icon-more-fill"></i>
+                </div>
+                <div slot="dropdown-content">
+                    <ul
+                        class="bk-dropdown-list"
+                        slot="dropdown-content"
+                    >
+                        <li
+                            v-for="(item, index) in actionConfMenus"
+                            :class="['develop-txt', {
+                                'develop-txt-disabled': item.disabled
+                            }]"
+                            :key="index"
+                            @click="item.handler"
+                            v-bk-tooltips="{
+                                content: $t('noDraft'),
+                                disabled: item.showTooltips
+                            }"
+                            v-perm="item.vPerm"
+                        >
+                            <template v-if="item.label">
+                                {{ item.label }}
+                            </template>
+                            <template v-else>
+                                <component
+                                    :is="item.component"
+                                    v-bind="item.componentProps"
+                                    :disabled="item.disabled"
+                                />
+                            </template>
+                        </li>
+                    </ul>
+                </div>
+            </bk-dropdown-menu>
 
             <!-- <more-actions /> -->
             <release-button
@@ -94,22 +125,18 @@
     import { mapActions, mapGetters, mapState } from 'vuex'
     import PipelineBreadCrumb from './PipelineBreadCrumb.vue'
     import ReleaseButton from './ReleaseButton'
+    import VersionDiffEntry from '@/components/PipelineDetailTabs/VersionDiffEntry.vue'
 
     export default {
         components: {
             PipelineBreadCrumb,
             ReleaseButton,
-            ModeSwitch
+            ModeSwitch,
+            VersionDiffEntry
         },
         props: {
             isSwitchPipeline: Boolean
         },
-        data () {
-            return {
-                isLoading: false,
-                isReleaseSliderShow: false
-            }
-        },
         computed: {
             ...mapState([
                 'pipelineMode'
@@ -127,7 +154,9 @@
                 isCurPipelineLocked: 'atom/isCurPipelineLocked',
                 isEditing: 'atom/isEditing',
                 checkPipelineInvalid: 'atom/checkPipelineInvalid',
-                draftBaseVersionName: 'atom/getDraftBaseVersionName'
+                draftBaseVersionName: 'atom/getDraftBaseVersionName',
+                hasDraftPipeline: 'atom/hasDraftPipeline',
+                isCommittingPipeline: 'atom/isCommittingPipeline'
             }),
             projectId () {
                 return this.$route.params.projectId
@@ -170,6 +199,49 @@
             },
             isPipelineNameReady () {
                 return this.pipelineSetting?.pipelineId === this.$route.params.pipelineId
+            },
+            activeVersion () {
+                return this.pipelineInfo?.releaseVersion ?? ''
+            },
+            actionConfMenus () {
+                const { projectId } = this.$route.params
+                return [
+                    {
+                        component: VersionDiffEntry,
+                        componentProps: {
+                            version: this.currentVersion,
+                            latestVersion: this.activeVersion,
+                            theme: 'normal',
+                            size: 'small',
+                            showButton: false
+                        },
+                        handler: () => {},
+                        disabled: !this.hasDraftPipeline,
+                        showTooltips: true
+                    },
+                    {
+                        label: this.$t('draftExecRecords'),
+                        handler: this.goDraftDebugRecord,
+                        disabled: !this.canDebug,
+                        vPerm: {
+                            hasPermission: this.canExecute,
+                            disablePermissionApi: true,
+                            permissionData: {
+                                projectId,
+                                resourceType: 'pipeline',
+                                resourceCode: this.pipelineId,
+                                action: this.RESOURCE_ACTION.EXECUTE
+                            }
+                        },
+                        showTooltips: true
+                    },
+                    {
+                        label: this.$t('deleteDraft'),
+                        handler: this.handelDelete,
+                        disabled: !(this.hasDraftPipeline || this.isCommittingPipeline),
+                        showTooltips: this.hasDraftPipeline || this.isCommittingPipeline
+                    }
+                ]
             }
         },
         watch: {
@@ -192,6 +264,10 @@
                 'setSaveStatus',
                 'updateContainer'
             ]),
+            ...mapActions('pipelines', [
+                'deletePipelineVersion',
+                'patchDeletePipelines'
+            ]),
             async exec (debug) {
                 if (debug && this.isEditing) {
                     const result = await this.saveDraft()
@@ -297,6 +373,82 @@
                     this.setSaveStatus(false)
                 }
             },
+            createSubHeader (pipelineName, draftBaseVersionName) {
+                const h = this.$createElement
+                return h('div', { class: 'draft-delete' }, [
+                    h('p', {
+                        class: 'text-overflow',
+                        directives: [
+                            {
+                                name: 'bk-tooltips',
+                                value: pipelineName
+                            }
+                        ]
+                    }, [
+                        h('span', { class: 'label' }, `${this.$t('pipeline')} :`),
+                        h('span', pipelineName)
+                    ]),
+                    h('p', [
+                        h('span', { class: 'label' }, `${this.$t('draft')} :`),
+                        h('span', `${this.$t('baseOn', [draftBaseVersionName])} `)
+                    ])
+                ])
+            },
+            async deleteDraftConfirm () {
+                try {
+                    await this.deletePipelineVersion({
+                        projectId: this.projectId,
+                        pipelineId: this.pipelineId,
+                        version: this.currentVersion
+                    })
+
+                    // 删除草稿时需要更新pipelineInfo
+                    this.$store.commit(`atom/${UPDATE_PIPELINE_INFO}`, {
+                        version: this.pipelineInfo?.releaseVersion,
+                        versionName: this.pipelineInfo?.releaseVersionName,
+                        canDebug: false,
+                        canRelease: false
+                    })
+                    this.$showTips({
+                        message: this.$t('delete') + this.$t('version') + this.$t('success'),
+                        theme: 'success'
+                    })
+                    this.$router.push({
+                        name: 'pipelinesHistory'
+                    })
+                } catch (err) {
+                    this.$showTips({
+                        message: err.message || err,
+                        theme: 'error'
+                    })
+                }
+            },
+            async deletePipelineConfirm () {
+                try {
+                    const params = {
+                        projectId: this.projectId,
+                        pipelineIds: [this.pipelineId]
+                    }
+                    const { data } = await this.patchDeletePipelines(params)
+                    const hasErr = Object.keys(data)[0] !== this.pipelineId
+                    if (hasErr) {
+                        throw Error(this.$t('deleteFail'))
+                    }
+                    this.$showTips({
+                        message: this.$t('delete') + this.$t('version') + this.$t('success'),
+                        theme: 'success'
+                    })
+
+                    this.$router.push({
+                        name: 'PipelineManageList'
+                    })
+                } catch (err) {
+                    this.$showTips({
+                        message: err.message || err,
+                        theme: 'error'
+                    })
+                }
+            },
             goDraftDebugRecord () {
                 if (this.canDebug) {
                     this.$router.push({
@@ -304,6 +456,32 @@
                     })
                 }
             },
+            /**
+             * 删除草稿
+             */
+            async handelDelete () {
+                const commonConfig = {
+                    title: this.$t('sureDeleteDraft'),
+                    okText: this.$t('delete'),
+                    cancelText: this.$t('cancel'),
+                    theme: 'danger',
+                    width: 470,
+                    confirmLoading: true
+                }
+                if (this.isCommittingPipeline) {
+                    this.$bkInfo({
+                        ...commonConfig,
+                        subTitle: this.$t('deleteDraftPipeline'),
+                        confirmFn: this.deletePipelineConfirm
+                    })
+                } else if (this.hasDraftPipeline) {
+                    this.$bkInfo({
+                        ...commonConfig,
+                        subHeader: this.createSubHeader(this.pipelineSetting.pipelineName, this.draftBaseVersionName),
+                        confirmFn: this.deleteDraftConfirm
+                    })
+                }
+            },
             goBack () {
                 this.$router.back()
             }
@@ -335,20 +513,6 @@
         }
     }
   }
-  .debug-pipeline-draft-btn {
-    display: flex;
-    align-items: center;
-    grid-gap: 8px;
-    > e {
-        color: #DCDEE5;
-    }
-    .icon-txt-disabled {
-        cursor: not-allowed;
-    }
-    > i:not(.icon-txt-disabled):hover {
-        color: $primaryColor;
-    }
-  }
   .pipeline-edit-right-aside {
     display: grid;
     grid-gap: 10px;
@@ -379,5 +543,48 @@
         }
     }
 }
+.manage-icon-more-fill {
+    font-size: 20px;
+    padding: 3px;
+
+    &:hover,
+    &.active {
+        background-color: #dddee6;
+        color: #3a85ff;
+        border-radius: 50%;
+    }
+}
+.bk-dropdown-list {
+    .develop-txt {
+        display: block;
+        height: 32px;
+        line-height: 33px;
+        padding: 0 16px;
+        white-space: nowrap;
+        font-size: 12px;
+        cursor: pointer;
+        &:hover {
+            background-color: #f0f1f5;
+        }
+        &.develop-txt-disabled {
+            cursor: not-allowed;
+            color: #c4c6cc;
+        }
+    }
+}
+.draft-delete {
+    text-align: center;
+    color: #43444a;
 
+    p {
+        margin-bottom: 14px;
+        max-width: 370px;
+    }
+    .label {
+        color: #76777f;
+    }
+    .text-overflow {
+        @include ellipsis();
+    }
+}
 </style>
diff --git a/src/frontend/devops-pipeline/src/store/modules/atom/getters.js b/src/frontend/devops-pipeline/src/store/modules/atom/getters.js
index f36b2b07fa7..18b2f8ed6e7 100755
--- a/src/frontend/devops-pipeline/src/store/modules/atom/getters.js
+++ b/src/frontend/devops-pipeline/src/store/modules/atom/getters.js
@@ -51,6 +51,9 @@ export default {
     onlyBranchPipeline: state => {
         return state.pipelineInfo?.latestVersionStatus === VERSION_STATUS_ENUM.BRANCH
     },
+    isCommittingPipeline: state => {
+        return state.pipelineInfo?.latestVersionStatus === VERSION_STATUS_ENUM.COMMITTING
+    },
     isReleaseVersion: state => {
         return state.activePipelineVersion?.version === state.pipelineInfo?.releaseVersion && state.activePipelineVersion?.status === VERSION_STATUS_ENUM.RELEASED
     },
diff --git a/src/frontend/locale/pipeline/en-US.json b/src/frontend/locale/pipeline/en-US.json
index 8ce182e48d1..040957223d4 100644
--- a/src/frontend/locale/pipeline/en-US.json
+++ b/src/frontend/locale/pipeline/en-US.json
@@ -1577,5 +1577,9 @@
   },
   "debugHint": "Debugging and execution do not share build numbers, but they share concurrency control. Debug records are only valid during the draft version debugging period and will be automatically cleared after the version is released.",
   "templateRollbackBackTips": "The current pipeline is in constraint mode (template instance). You need to jump to the template to roll back the version.",
-  "versionNotMatch": "The current version is not the latest version and cannot be executed"
+  "versionNotMatch": "The current version is not the latest version and cannot be executed",
+  "deleteDraft": "Delete Draft",
+  "sureDeleteDraft": "Are you sure you want to delete this draft?",
+  "deleteDraftPipeline": "The current pipeline has not been published yet. Deleting the draft is equivalent to deleting the pipeline. Are you sure you want to proceed?",
+  "noDraft": "No drafts available for deletion"
 }
diff --git a/src/frontend/locale/pipeline/zh-CN.json b/src/frontend/locale/pipeline/zh-CN.json
index 1d3724cd1c1..c04ae0971c5 100644
--- a/src/frontend/locale/pipeline/zh-CN.json
+++ b/src/frontend/locale/pipeline/zh-CN.json
@@ -1579,5 +1579,9 @@
   },
   "debugHint": "调试和执行不共享构建号,但共享并发控制。调试记录仅在草稿版本调试期间有效,版本发布后将自动清理。",
   "templateRollbackBackTips": "当前流水线为约束模式(模板实例),需要跳转到模板进行版本回滚。",
-  "versionNotMatch": "当前版本非最新版本,无法执行"
+  "versionNotMatch": "当前版本非最新版本,无法执行",
+  "deleteDraft": "删除草稿",
+  "sureDeleteDraft": "确认删除该草稿?",
+  "deleteDraftPipeline": "当前流水线尚未发布,删除草稿等同于删除流水线,确认删除吗?",
+  "noDraft": "暂无可删除的草稿"
 }
\ No newline at end of file
diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml
index 242ea705ba8..0bee871d4d7 100644
--- a/src/frontend/pnpm-lock.yaml
+++ b/src/frontend/pnpm-lock.yaml
@@ -8249,7 +8249,7 @@ packages:
     engines: {node: '>= 0.6'}
 
   event-emitter@0.3.5:
-    resolution: {integrity: sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=}
+    resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
 
   event-pubsub@4.3.0:
     resolution: {integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==}
@@ -16762,13 +16762,13 @@ snapshots:
   '@blueking/eslint-config-bk@2.1.0-beta.12(@babel/core@7.24.6)(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(prettier@2.8.8)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       '@babel/eslint-parser': 7.24.6(@babel/core@7.24.6)(eslint@8.57.0)
-      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
-      '@vue/eslint-config-standard': 6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@vue/eslint-config-standard': 6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -16793,7 +16793,7 @@ snapshots:
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@8.57.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -16818,7 +16818,7 @@ snapshots:
       '@vue/eslint-config-typescript': 10.0.0(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-config-tencent: 1.0.4(@babel/core@7.24.6)(@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4))(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint-plugin-prettier@4.2.1(eslint@7.32.0)(prettier@2.8.8))(eslint@8.57.0)(prettier@2.8.8)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-standard: 5.0.0(eslint@8.57.0)
@@ -19225,7 +19225,7 @@ snapshots:
 
   '@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)':
     dependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
       '@typescript-eslint/scope-manager': 5.20.0
       '@typescript-eslint/type-utils': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       '@typescript-eslint/utils': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
@@ -19241,6 +19241,24 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  '@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)':
+    dependencies:
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/scope-manager': 5.20.0
+      '@typescript-eslint/type-utils': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/utils': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
+      debug: 4.3.4
+      eslint: 8.57.0
+      functional-red-black-tree: 1.0.1
+      ignore: 5.3.1
+      regexpp: 3.2.0
+      semver: 7.6.2
+      tsutils: 3.21.0(typescript@4.6.4)
+    optionalDependencies:
+      typescript: 4.9.5
+    transitivePeerDependencies:
+      - supports-color
+
   '@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
     dependencies:
       '@eslint-community/regexpp': 4.10.0
@@ -19311,6 +19329,18 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  '@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5)':
+    dependencies:
+      '@typescript-eslint/scope-manager': 5.20.0
+      '@typescript-eslint/types': 5.20.0
+      '@typescript-eslint/typescript-estree': 5.20.0(typescript@4.6.4)
+      debug: 4.3.4
+      eslint: 8.57.0
+    optionalDependencies:
+      typescript: 4.9.5
+    transitivePeerDependencies:
+      - supports-color
+
   '@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5)':
     dependencies:
       '@typescript-eslint/scope-manager': 7.11.0
@@ -20383,13 +20413,13 @@ snapshots:
       - supports-color
       - webpack
 
-  '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
+  '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))))(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -20402,10 +20432,10 @@ snapshots:
   '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.31)(bufferutil@4.0.8)(encoding@0.1.13)(lodash@4.17.21)(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -20418,10 +20448,10 @@ snapshots:
   '@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(vue-template-compiler@2.7.16)(vue@3.4.31(typescript@4.9.5))(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint-plugin-vue@8.7.1(eslint@8.57.0))(eslint@8.57.0)(webpack@5.76.1(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))':
     dependencies:
       eslint: 8.57.0
-      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
+      eslint-config-standard: 16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0)
       eslint-import-resolver-node: 0.3.9
       eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.76.1(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1)))
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
       eslint-plugin-vue: 8.7.1(eslint@8.57.0)
@@ -23890,17 +23920,10 @@ snapshots:
       eslint-plugin-node: 11.1.0(eslint@7.32.0)
       eslint-plugin-promise: 5.1.1(eslint@7.32.0)
 
-  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
+  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@7.32.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
     dependencies:
       eslint: 8.57.0
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
-      eslint-plugin-node: 11.1.0(eslint@8.57.0)
-      eslint-plugin-promise: 6.0.1(eslint@8.57.0)
-
-  eslint-config-standard@16.0.3(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint-plugin-node@11.1.0(eslint@8.57.0))(eslint-plugin-promise@6.0.1(eslint@8.57.0))(eslint@8.57.0):
-    dependencies:
-      eslint: 8.57.0
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-node: 11.1.0(eslint@8.57.0)
       eslint-plugin-promise: 6.0.1(eslint@8.57.0)
 
@@ -23919,7 +23942,7 @@ snapshots:
       '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
       eslint: 8.57.0
       eslint-plugin-chalk: 1.0.0(eslint@8.57.0)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-prettier: 4.2.1(eslint@7.32.0)(prettier@2.8.8)
       prettier: 2.8.8
     transitivePeerDependencies:
@@ -23931,11 +23954,11 @@ snapshots:
     dependencies:
       '@babel/core': 7.24.6
       '@babel/eslint-parser': 7.24.6(@babel/core@7.24.6)(eslint@8.57.0)
-      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.6.4)
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/eslint-plugin': 5.20.0(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)(typescript@4.9.5)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
       eslint: 8.57.0
       eslint-plugin-chalk: 1.0.0(eslint@8.57.0)
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       eslint-plugin-prettier: 4.2.1(eslint@8.57.0)(prettier@2.8.8)
       prettier: 2.8.8
     transitivePeerDependencies:
@@ -23989,7 +24012,7 @@ snapshots:
       array.prototype.find: 2.2.3
       debug: 3.2.7
       enhanced-resolve: 0.9.1
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       find-root: 1.1.0
       hasown: 2.0.2
       interpret: 1.4.0
@@ -24002,12 +24025,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))):
+  eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0))(webpack@5.91.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.76.1))):
     dependencies:
       array.prototype.find: 2.2.3
       debug: 3.2.7
       enhanced-resolve: 0.9.1
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0)
       find-root: 1.1.0
       hasown: 2.0.2
       interpret: 1.4.0
@@ -24064,7 +24087,7 @@ snapshots:
     dependencies:
       debug: 3.2.7
     optionalDependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
       eslint: 8.57.0
       eslint-import-resolver-node: 0.3.9
     transitivePeerDependencies:
@@ -24167,7 +24190,7 @@ snapshots:
       - eslint-import-resolver-webpack
       - supports-color
 
-  eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0):
+  eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.20.0(eslint@8.57.0)(typescript@4.6.4))(eslint@8.57.0):
     dependencies:
       array-includes: 3.1.8
       array.prototype.findlastindex: 1.2.5
@@ -24188,7 +24211,7 @@ snapshots:
       semver: 6.3.1
       tsconfig-paths: 3.15.0
     optionalDependencies:
-      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.6.4)
+      '@typescript-eslint/parser': 5.20.0(eslint@8.57.0)(typescript@4.9.5)
     transitivePeerDependencies:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
diff --git a/src/frontend/webpackPlugin/bundle-webpack-plugin.js b/src/frontend/webpackPlugin/bundle-webpack-plugin.js
index 474d8e78ee8..68ca6e6855f 100644
--- a/src/frontend/webpackPlugin/bundle-webpack-plugin.js
+++ b/src/frontend/webpackPlugin/bundle-webpack-plugin.js
@@ -25,12 +25,16 @@ module.exports = class BundleWebpackPlugin {
         const dist = props.dist || '.'
         const entryFolderName = props.entryFolderName
         this.isDev = props.isDev || false
+        this.DEBUG_ASSETS_BUNDLE_JSON_FILE = path.join( __dirname, '..', dist, 'assets_bundle.json')
         this.SERVICE_ASSETS_DIR = path.join(
             __dirname,
             '..',
             dist,
             entryFolderName
         )
+        if (!this.isDev && !fs.existsSync(this.SERVICE_ASSETS_DIR)) {
+            fs.mkdirSync(this.SERVICE_ASSETS_DIR, { recursive: true })
+        }
     }
 
     apply (compiler) {
@@ -81,11 +85,15 @@ module.exports = class BundleWebpackPlugin {
                         })
 
                     assetsMap[entryName] = assets
-                    if (!fs.existsSync(SERVICE_ASSETS_DIR)) {
-                        fs.mkdirSync(SERVICE_ASSETS_DIR)
+                    if (!this.isDev) {
+                        fs.writeFileSync(`${SERVICE_ASSETS_DIR}/${entryName}.json`, JSON.stringify(assetsMap))
+                        console.log(`get assets entry about ${entryName}, ${JSON.stringify(assetsMap)}`)
                     }
-                    fs.writeFileSync(`${SERVICE_ASSETS_DIR}/${entryName}.json`, JSON.stringify(assetsMap))
                 }
+                if (this.isDev) {
+                    fs.writeFileSync(this.DEBUG_ASSETS_BUNDLE_JSON_FILE, JSON.stringify(assetsMap))
+                } 
+                
                 callback()
             }
         )