icssoa 1 rok pred
rodič
commit
96b1293e56

+ 1 - 1
package.json

@@ -37,7 +37,7 @@
 		"xlsx": "^0.18.5"
 	},
 	"devDependencies": {
-		"@cool-vue/vite-plugin": "^7.1.2",
+		"@cool-vue/vite-plugin": "^7.1.4",
 		"@types/file-saver": "^2.0.7",
 		"@types/lodash-es": "^4.17.8",
 		"@types/mockjs": "^1.0.7",

+ 34 - 21
packages/vite-plugin/dist/index.js

@@ -9,6 +9,7 @@
         reqUrl: "",
         demo: false,
         eps: {
+            api: "",
             dist: "./build/cool",
             mapping: [
                 {
@@ -112,6 +113,22 @@
     let service = {};
     let list = [];
     let customList = [];
+    // 获取请求地址
+    function getEpsUrl() {
+        let url = config.eps.api;
+        if (!url) {
+            url = config.type;
+        }
+        switch (url) {
+            case "app":
+                url = "/app/base/comm/eps";
+                break;
+            case "admin":
+                url = "/admin/base/open/eps";
+                break;
+        }
+        return url;
+    }
     // 获取路径
     function getEpsPath(filename) {
         return path.join(config.type == "admin" ? config.eps.dist : rootDir(config.eps.dist), filename || "");
@@ -140,15 +157,7 @@
             error(`[cool-eps] ${epsPath} 文件异常, ${err.message}`);
         }
         // 请求地址
-        let url = config.reqUrl;
-        switch (config.type) {
-            case "app":
-                url += "/app/base/comm/eps";
-                break;
-            case "admin":
-                url += "/admin/base/open/eps";
-                break;
-        }
+        const url = config.reqUrl + getEpsUrl();
         // 请求数据
         await axios
             .get(url, {
@@ -429,14 +438,13 @@
     }
     // 创建 service
     function createService() {
+        // 路径第一层作为 id 标识
+        const id = getEpsUrl().split("/")[1];
         list.forEach((e) => {
+            // 请求地址
+            const path = e.prefix[0] == "/" ? e.prefix.substring(1, e.prefix.length) : e.prefix;
             // 分隔路径
-            const arr = e.prefix
-                .replace(/\//, "")
-                .replace(config.type, "")
-                .split("/")
-                .filter(Boolean)
-                .map(toCamel);
+            const arr = path.replace(id, "").split("/").filter(Boolean).map(toCamel);
             // 遍历
             function deep(d, i) {
                 const k = arr[i];
@@ -452,7 +460,7 @@
                         // 不存在则创建
                         if (!d[k]) {
                             d[k] = {
-                                namespace: e.prefix.substring(1, e.prefix.length),
+                                namespace: path,
                                 permission: {},
                             };
                         }
@@ -465,9 +473,8 @@
                             }
                         });
                         // 创建权限
-                        getNames(d[k]).forEach((e) => {
-                            d[k].permission[e] =
-                                `${d[k].namespace.replace(`${config.type}/`, "")}/${e}`.replace(/\//g, ":");
+                        getNames(d[k]).forEach((i) => {
+                            d[k].permission[i] = `${d[k].namespace.replace(`${id}/`, "")}/${i}`.replace(/\//g, ":");
                         });
                     }
                 }
@@ -806,12 +813,18 @@
         config.reqUrl = options.proxy["/dev/"].target;
         // Eps
         if (options.eps) {
-            const { dist, mapping } = options.eps;
+            const { dist, mapping, api } = options.eps;
+            // 类型
+            if (api) {
+                config.eps.api = api;
+            }
+            // 输出目录
             if (dist) {
                 config.eps.dist = dist;
             }
+            // 匹配规则
             if (mapping) {
-                config.eps.mapping.unshift(...mapping);
+                lodash.merge(config.eps.mapping, mapping);
             }
         }
         return [base(), virtual(), demo(options.demo)];

+ 1 - 1
packages/vite-plugin/package.json

@@ -1,6 +1,6 @@
 {
 	"name": "@cool-vue/vite-plugin",
-	"version": "7.1.3",
+	"version": "7.1.4",
 	"description": "cool-admin/cool-uni builder",
 	"main": "/dist/index.js",
 	"scripts": {

+ 1 - 0
packages/vite-plugin/src/config.ts

@@ -5,6 +5,7 @@ export const config: Config.Data = {
 	reqUrl: "",
 	demo: false,
 	eps: {
+		api: "",
 		dist: "./build/cool",
 		mapping: [
 			{

+ 1 - 1
packages/vite-plugin/src/ctx/index.ts

@@ -2,9 +2,9 @@ import { join } from "path";
 import { readFile, rootDir, writeFile } from "../utils";
 import { glob } from "glob";
 import { assign, cloneDeep, isEqual, orderBy } from "lodash";
-import type { Ctx } from "../../types";
 import { config } from "../config";
 import fs from "fs";
+import type { Ctx } from "../../types";
 
 export async function createCtx() {
 	let ctx: Ctx.Data = {};

+ 35 - 24
packages/vite-plugin/src/eps/index.ts

@@ -11,6 +11,27 @@ let service = {};
 let list: Eps.Entity[] = [];
 let customList: Eps.Entity[] = [];
 
+// 获取请求地址
+function getEpsUrl() {
+	let url = config.eps.api;
+
+	if (!url) {
+		url = config.type;
+	}
+
+	switch (url) {
+		case "app":
+			url = "/app/base/comm/eps";
+			break;
+
+		case "admin":
+			url = "/admin/base/open/eps";
+			break;
+	}
+
+	return url;
+}
+
 // 获取路径
 function getEpsPath(filename?: string) {
 	return join(
@@ -46,17 +67,7 @@ async function getData(data?: Eps.Entity[]) {
 	}
 
 	// 请求地址
-	let url = config.reqUrl;
-
-	switch (config.type) {
-		case "app":
-			url += "/app/base/comm/eps";
-			break;
-
-		case "admin":
-			url += "/admin/base/open/eps";
-			break;
-	}
+	const url = config.reqUrl + getEpsUrl();
 
 	// 请求数据
 	await axios
@@ -395,14 +406,15 @@ async function createDescribe({ list, service }: { list: Eps.Entity[]; service:
 
 // 创建 service
 function createService() {
+	// 路径第一层作为 id 标识
+	const id = getEpsUrl().split("/")[1];
+
 	list.forEach((e) => {
+		// 请求地址
+		const path = e.prefix[0] == "/" ? e.prefix.substring(1, e.prefix.length) : e.prefix;
+
 		// 分隔路径
-		const arr = e.prefix
-			.replace(/\//, "")
-			.replace(config.type, "")
-			.split("/")
-			.filter(Boolean)
-			.map(toCamel);
+		const arr = path.replace(id, "").split("/").filter(Boolean).map(toCamel);
 
 		// 遍历
 		function deep(d: any, i: number) {
@@ -420,7 +432,7 @@ function createService() {
 					// 不存在则创建
 					if (!d[k]) {
 						d[k] = {
-							namespace: e.prefix.substring(1, e.prefix.length),
+							namespace: path,
 							permission: {},
 						};
 					}
@@ -436,12 +448,11 @@ function createService() {
 					});
 
 					// 创建权限
-					getNames(d[k]).forEach((e) => {
-						d[k].permission[e] =
-							`${d[k].namespace.replace(`${config.type}/`, "")}/${e}`.replace(
-								/\//g,
-								":",
-							);
+					getNames(d[k]).forEach((i) => {
+						d[k].permission[i] = `${d[k].namespace.replace(`${id}/`, "")}/${i}`.replace(
+							/\//g,
+							":",
+						);
 					});
 				}
 			}

+ 10 - 2
packages/vite-plugin/src/index.ts

@@ -3,6 +3,7 @@ import { config } from "./config";
 import { demo } from "./demo";
 import { virtual } from "./virtual";
 import type { Config } from "../types";
+import { merge } from "lodash";
 
 export function cool(options: Config.Options) {
 	// 应用类型,admin | app
@@ -13,14 +14,21 @@ export function cool(options: Config.Options) {
 
 	// Eps
 	if (options.eps) {
-		const { dist, mapping } = options.eps;
+		const { dist, mapping, api } = options.eps;
 
+		// 类型
+		if (api) {
+			config.eps.api = api;
+		}
+
+		// 输出目录
 		if (dist) {
 			config.eps.dist = dist;
 		}
 
+		// 匹配规则
 		if (mapping) {
-			config.eps.mapping.unshift(...mapping);
+			merge(config.eps.mapping, mapping);
 		}
 	}
 

+ 4 - 4
packages/vite-plugin/types/index.d.ts

@@ -61,6 +61,7 @@ export namespace Ctx {
 export namespace Config {
 	type Type = "app" | "admin";
 	interface Eps {
+		api: "app" | "admin" | (string & {});
 		dist: string;
 		mapping: {
 			type?: string;
@@ -71,10 +72,7 @@ export namespace Config {
 	interface Options {
 		type: Config.Type;
 		proxy: any;
-		eps?: {
-			dist?: string;
-			mapping?: Config.Eps["mapping"];
-		};
+		eps?: Partial<Config.Eps>;
 		demo?: boolean;
 	}
 	interface Data {
@@ -85,3 +83,5 @@ export namespace Config {
 		[key: string]: any;
 	}
 }
+
+// ts范型,Config.EPS的类型改成全部可选

+ 88 - 88
pnpm-lock.yaml

@@ -31,7 +31,7 @@ importers:
         version: 2.0.0
       core-js:
         specifier: ^3.32.1
-        version: 3.37.0
+        version: 3.37.1
       dayjs:
         specifier: ^1.11.10
         version: 1.11.11
@@ -40,7 +40,7 @@ importers:
         version: 5.5.0
       element-plus:
         specifier: ^2.5.6
-        version: 2.7.2(vue@3.4.27(typescript@5.4.5))
+        version: 2.7.3(vue@3.4.27(typescript@5.4.5))
       file-saver:
         specifier: ^2.0.5
         version: 2.0.5
@@ -88,8 +88,8 @@ importers:
         version: 0.18.5
     devDependencies:
       '@cool-vue/vite-plugin':
-        specifier: ^7.1.2
-        version: 7.1.2
+        specifier: ^7.1.4
+        version: 7.1.4
       '@types/file-saver':
         specifier: ^2.0.7
         version: 2.0.7
@@ -101,7 +101,7 @@ importers:
         version: 1.0.10
       '@types/node':
         specifier: ^20.5.6
-        version: 20.12.11
+        version: 20.12.12
       '@types/nprogress':
         specifier: ^0.2.0
         version: 0.2.3
@@ -116,10 +116,10 @@ importers:
         version: 6.21.0(eslint@8.57.0)(typescript@5.4.5)
       '@vitejs/plugin-vue':
         specifier: ^5.0.3
-        version: 5.0.4(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
+        version: 5.0.4(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
       '@vitejs/plugin-vue-jsx':
         specifier: ^3.1.0
-        version: 3.1.0(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
+        version: 3.1.0(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
       '@vue/compiler-sfc':
         specifier: ^3.4.15
         version: 3.4.27
@@ -143,7 +143,7 @@ importers:
         version: 5.12.0(rollup@4.17.2)
       sass:
         specifier: ^1.66.1
-        version: 1.77.1
+        version: 1.77.2
       terser:
         specifier: ^5.27.0
         version: 5.31.0
@@ -152,10 +152,10 @@ importers:
         version: 5.4.5
       vite:
         specifier: ^5.0.12
-        version: 5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0)
+        version: 5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)
       vite-plugin-compression:
         specifier: ^0.5.1
-        version: 0.5.1(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0))
+        version: 0.5.1(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))
 
 packages:
 
@@ -311,8 +311,8 @@ packages:
   '@cool-vue/crud@7.1.16':
     resolution: {integrity: sha512-zNPgotaHO1uYk4fKskSgfOze53qQ7fOHrubiqtH5xb5eUI0L6W2VwtMFlQ+ro7PuLnJQ0f6xKqWlw348bMfwWg==}
 
-  '@cool-vue/vite-plugin@7.1.2':
-    resolution: {integrity: sha512-VRkJWIJP3eMJod7gCqrSdpKUOHrJJYwW2jyuEo1LroFjgPqhf1qH2IvPFRreKDdiFfDlwwE4g67nP/VBI/CpOw==}
+  '@cool-vue/vite-plugin@7.1.4':
+    resolution: {integrity: sha512-AYY+YwwL57+KJ/2dC7+hIMgHl1vc8FPTf43E6ZF2RoSk8/rgN7kg+l0OgvVJ9QUfCdf3+M4w/T0DWNi6/JDuHQ==}
 
   '@ctrl/tinycolor@3.6.1':
     resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
@@ -479,8 +479,8 @@ packages:
     resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  '@floating-ui/core@1.6.1':
-    resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==}
+  '@floating-ui/core@1.6.2':
+    resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
 
   '@floating-ui/dom@1.6.5':
     resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
@@ -693,8 +693,8 @@ packages:
   '@types/lodash-es@4.17.12':
     resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
 
-  '@types/lodash@4.17.1':
-    resolution: {integrity: sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==}
+  '@types/lodash@4.17.4':
+    resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==}
 
   '@types/minimatch@5.1.2':
     resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
@@ -702,8 +702,8 @@ packages:
   '@types/mockjs@1.0.10':
     resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==}
 
-  '@types/node@20.12.11':
-    resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==}
+  '@types/node@20.12.12':
+    resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
 
   '@types/nprogress@0.2.3':
     resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
@@ -1084,8 +1084,8 @@ packages:
     resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
     engines: {node: '>=10'}
 
-  caniuse-lite@1.0.30001617:
-    resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==}
+  caniuse-lite@1.0.30001620:
+    resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==}
 
   cfb@1.2.2:
     resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==}
@@ -1131,8 +1131,8 @@ packages:
     resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
     engines: {node: '>= 0.8'}
 
-  commander@12.0.0:
-    resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==}
+  commander@12.1.0:
+    resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
     engines: {node: '>=18'}
 
   commander@2.20.3:
@@ -1151,8 +1151,8 @@ packages:
   convert-source-map@2.0.0:
     resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
 
-  core-js@3.37.0:
-    resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==}
+  core-js@3.37.1:
+    resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==}
 
   crc-32@1.2.2:
     resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
@@ -1238,11 +1238,11 @@ packages:
   echarts@5.5.0:
     resolution: {integrity: sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==}
 
-  electron-to-chromium@1.4.763:
-    resolution: {integrity: sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ==}
+  electron-to-chromium@1.4.774:
+    resolution: {integrity: sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==}
 
-  element-plus@2.7.2:
-    resolution: {integrity: sha512-AdEzBU/A68iUleio0MkQ46JeU5SeQvFFd915GJFScJmUEo5AmYg3OQ4pVjcu+p3b3Nupg9MC5Wa4xjAiC51kUg==}
+  element-plus@2.7.3:
+    resolution: {integrity: sha512-OaqY1kQ2xzNyRFyge3fzM7jqMwux+464RBEqd+ybRV9xPiGxtgnj/sVK4iEbnKnzQIa9XK03DOIFzoToUhu1DA==}
     peerDependencies:
       vue: ^3.2.0
 
@@ -1504,9 +1504,9 @@ packages:
     resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
     engines: {node: '>=10.13.0'}
 
-  glob@10.3.14:
-    resolution: {integrity: sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==}
-    engines: {node: '>=16 || 14 >=14.17'}
+  glob@10.3.15:
+    resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==}
+    engines: {node: '>=16 || 14 >=14.18'}
     hasBin: true
 
   glob@7.2.3:
@@ -1584,8 +1584,8 @@ packages:
   immer@9.0.21:
     resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
 
-  immutable@4.3.5:
-    resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+  immutable@4.3.6:
+    resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==}
 
   import-fresh@3.3.0:
     resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@@ -1953,16 +1953,16 @@ packages:
   path-parse@1.0.7:
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
 
-  path-scurry@1.11.0:
-    resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==}
-    engines: {node: '>=16 || 14 >=14.17'}
+  path-scurry@1.11.1:
+    resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+    engines: {node: '>=16 || 14 >=14.18'}
 
   path-type@4.0.0:
     resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
     engines: {node: '>=8'}
 
-  picocolors@1.0.0:
-    resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+  picocolors@1.0.1:
+    resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
 
   picomatch@2.3.1:
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@@ -1996,8 +1996,8 @@ packages:
     resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
     engines: {node: ^10 || ^12 || >=14}
 
-  preact@10.21.0:
-    resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==}
+  preact@10.22.0:
+    resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==}
 
   prelude-ls@1.2.1:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@@ -2090,8 +2090,8 @@ packages:
     resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
     engines: {node: '>= 0.4'}
 
-  sass@1.77.1:
-    resolution: {integrity: sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==}
+  sass@1.77.2:
+    resolution: {integrity: sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==}
     engines: {node: '>=14.0.0'}
     hasBin: true
 
@@ -2317,8 +2317,8 @@ packages:
     resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
     engines: {node: '>= 10.0.0'}
 
-  update-browserslist-db@1.0.15:
-    resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==}
+  update-browserslist-db@1.0.16:
+    resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
     hasBin: true
     peerDependencies:
       browserslist: '>= 4.21.0'
@@ -2527,7 +2527,7 @@ snapshots:
   '@babel/code-frame@7.24.2':
     dependencies:
       '@babel/highlight': 7.24.5
-      picocolors: 1.0.0
+      picocolors: 1.0.1
 
   '@babel/compat-data@7.24.4': {}
 
@@ -2659,7 +2659,7 @@ snapshots:
       '@babel/helper-validator-identifier': 7.24.5
       chalk: 2.4.2
       js-tokens: 4.0.0
-      picocolors: 1.0.0
+      picocolors: 1.0.1
 
   '@babel/parser@7.24.5':
     dependencies:
@@ -2717,8 +2717,8 @@ snapshots:
   '@cool-vue/crud@7.1.16(typescript@5.4.5)':
     dependencies:
       array.prototype.flat: 1.3.2
-      core-js: 3.37.0
-      element-plus: 2.7.2(vue@3.4.27(typescript@5.4.5))
+      core-js: 3.37.1
+      element-plus: 2.7.3(vue@3.4.27(typescript@5.4.5))
       lodash-es: 4.17.21
       mitt: 3.0.1
       vue: 3.4.27(typescript@5.4.5)
@@ -2726,11 +2726,11 @@ snapshots:
       - '@vue/composition-api'
       - typescript
 
-  '@cool-vue/vite-plugin@7.1.2':
+  '@cool-vue/vite-plugin@7.1.4':
     dependencies:
       '@vue/compiler-sfc': 3.4.27
       axios: 1.6.8
-      glob: 10.3.14
+      glob: 10.3.15
       lodash: 4.17.21
       magic-string: 0.30.10
       prettier: 3.2.5
@@ -2835,13 +2835,13 @@ snapshots:
 
   '@eslint/js@8.57.0': {}
 
-  '@floating-ui/core@1.6.1':
+  '@floating-ui/core@1.6.2':
     dependencies:
       '@floating-ui/utils': 0.2.2
 
   '@floating-ui/dom@1.6.5':
     dependencies:
-      '@floating-ui/core': 1.6.1
+      '@floating-ui/core': 1.6.2
       '@floating-ui/utils': 0.2.2
 
   '@floating-ui/utils@0.2.2': {}
@@ -3046,21 +3046,21 @@ snapshots:
   '@types/glob@7.2.0':
     dependencies:
       '@types/minimatch': 5.1.2
-      '@types/node': 20.12.11
+      '@types/node': 20.12.12
 
   '@types/json-schema@7.0.15': {}
 
   '@types/lodash-es@4.17.12':
     dependencies:
-      '@types/lodash': 4.17.1
+      '@types/lodash': 4.17.4
 
-  '@types/lodash@4.17.1': {}
+  '@types/lodash@4.17.4': {}
 
   '@types/minimatch@5.1.2': {}
 
   '@types/mockjs@1.0.10': {}
 
-  '@types/node@20.12.11':
+  '@types/node@20.12.12':
     dependencies:
       undici-types: 5.26.5
 
@@ -3071,7 +3071,7 @@ snapshots:
   '@types/shelljs@0.8.15':
     dependencies:
       '@types/glob': 7.2.0
-      '@types/node': 20.12.11
+      '@types/node': 20.12.12
 
   '@types/store@2.0.5': {}
 
@@ -3181,7 +3181,7 @@ snapshots:
       mime-match: 1.0.2
       namespace-emitter: 2.0.1
       nanoid: 3.3.7
-      preact: 10.21.0
+      preact: 10.22.0
 
   '@uppy/store-default@2.1.1': {}
 
@@ -3196,19 +3196,19 @@ snapshots:
       '@uppy/utils': 4.1.3
       nanoid: 3.3.7
 
-  '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
+  '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
     dependencies:
       '@babel/core': 7.24.5
       '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5)
       '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.5)
-      vite: 5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0)
+      vite: 5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)
       vue: 3.4.27(typescript@5.4.5)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
+  '@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
     dependencies:
-      vite: 5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0)
+      vite: 5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)
       vue: 3.4.27(typescript@5.4.5)
 
   '@vue/babel-helper-vue-transform-on@1.2.2': {}
@@ -3541,10 +3541,10 @@ snapshots:
 
   browserslist@4.23.0:
     dependencies:
-      caniuse-lite: 1.0.30001617
-      electron-to-chromium: 1.4.763
+      caniuse-lite: 1.0.30001620
+      electron-to-chromium: 1.4.774
       node-releases: 2.0.14
-      update-browserslist-db: 1.0.15(browserslist@4.23.0)
+      update-browserslist-db: 1.0.16(browserslist@4.23.0)
 
   buffer-from@1.1.2: {}
 
@@ -3560,7 +3560,7 @@ snapshots:
 
   camelcase@6.3.0: {}
 
-  caniuse-lite@1.0.30001617: {}
+  caniuse-lite@1.0.30001620: {}
 
   cfb@1.2.2:
     dependencies:
@@ -3616,7 +3616,7 @@ snapshots:
     dependencies:
       delayed-stream: 1.0.0
 
-  commander@12.0.0: {}
+  commander@12.1.0: {}
 
   commander@2.20.3: {}
 
@@ -3628,7 +3628,7 @@ snapshots:
 
   convert-source-map@2.0.0: {}
 
-  core-js@3.37.0: {}
+  core-js@3.37.1: {}
 
   crc-32@1.2.2: {}
 
@@ -3710,15 +3710,15 @@ snapshots:
       tslib: 2.3.0
       zrender: 5.5.0
 
-  electron-to-chromium@1.4.763: {}
+  electron-to-chromium@1.4.774: {}
 
-  element-plus@2.7.2(vue@3.4.27(typescript@5.4.5)):
+  element-plus@2.7.3(vue@3.4.27(typescript@5.4.5)):
     dependencies:
       '@ctrl/tinycolor': 3.6.1
       '@element-plus/icons-vue': 2.3.1(vue@3.4.27(typescript@5.4.5))
       '@floating-ui/dom': 1.6.5
       '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
-      '@types/lodash': 4.17.1
+      '@types/lodash': 4.17.4
       '@types/lodash-es': 4.17.12
       '@vueuse/core': 9.13.0(vue@3.4.27(typescript@5.4.5))
       async-validator: 4.2.5
@@ -4103,13 +4103,13 @@ snapshots:
     dependencies:
       is-glob: 4.0.3
 
-  glob@10.3.14:
+  glob@10.3.15:
     dependencies:
       foreground-child: 3.1.1
       jackspeak: 2.3.6
       minimatch: 9.0.4
       minipass: 7.1.1
-      path-scurry: 1.11.0
+      path-scurry: 1.11.1
 
   glob@7.2.3:
     dependencies:
@@ -4182,7 +4182,7 @@ snapshots:
 
   immer@9.0.21: {}
 
-  immutable@4.3.5: {}
+  immutable@4.3.6: {}
 
   import-fresh@3.3.0:
     dependencies:
@@ -4417,7 +4417,7 @@ snapshots:
 
   mockjs@1.1.0:
     dependencies:
-      commander: 12.0.0
+      commander: 12.1.0
 
   monaco-editor@0.36.0:
     dependencies:
@@ -4504,14 +4504,14 @@ snapshots:
 
   path-parse@1.0.7: {}
 
-  path-scurry@1.11.0:
+  path-scurry@1.11.1:
     dependencies:
       lru-cache: 10.2.2
       minipass: 7.1.1
 
   path-type@4.0.0: {}
 
-  picocolors@1.0.0: {}
+  picocolors@1.0.1: {}
 
   picomatch@2.3.1: {}
 
@@ -4544,10 +4544,10 @@ snapshots:
   postcss@8.4.38:
     dependencies:
       nanoid: 3.3.7
-      picocolors: 1.0.0
+      picocolors: 1.0.1
       source-map-js: 1.2.0
 
-  preact@10.21.0: {}
+  preact@10.22.0: {}
 
   prelude-ls@1.2.1: {}
 
@@ -4648,10 +4648,10 @@ snapshots:
       es-errors: 1.3.0
       is-regex: 1.1.4
 
-  sass@1.77.1:
+  sass@1.77.2:
     dependencies:
       chokidar: 3.6.0
-      immutable: 4.3.5
+      immutable: 4.3.6
       source-map-js: 1.2.0
 
   scroll-into-view-if-needed@2.2.31:
@@ -4893,11 +4893,11 @@ snapshots:
 
   universalify@2.0.1: {}
 
-  update-browserslist-db@1.0.15(browserslist@4.23.0):
+  update-browserslist-db@1.0.16(browserslist@4.23.0):
     dependencies:
       browserslist: 4.23.0
       escalade: 3.1.2
-      picocolors: 1.0.0
+      picocolors: 1.0.1
 
   uri-js@4.4.1:
     dependencies:
@@ -4905,24 +4905,24 @@ snapshots:
 
   util-deprecate@1.0.2: {}
 
-  vite-plugin-compression@0.5.1(vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0)):
+  vite-plugin-compression@0.5.1(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)):
     dependencies:
       chalk: 4.1.2
       debug: 4.3.4
       fs-extra: 10.1.0
-      vite: 5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0)
+      vite: 5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)
     transitivePeerDependencies:
       - supports-color
 
-  vite@5.2.11(@types/node@20.12.11)(sass@1.77.1)(terser@5.31.0):
+  vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0):
     dependencies:
       esbuild: 0.20.2
       postcss: 8.4.38
       rollup: 4.17.2
     optionalDependencies:
-      '@types/node': 20.12.11
+      '@types/node': 20.12.12
       fsevents: 2.3.3
-      sass: 1.77.1
+      sass: 1.77.2
       terser: 5.31.0
 
   vue-demi@0.13.11(vue@3.4.27(typescript@5.4.5)):