@gct-paas/core 0.1.4-dev.12 → 0.1.4-dev.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.min.js +1 -21679
- package/es/constants/index.d.ts +1 -0
- package/es/constants/index.mjs +1 -0
- package/es/constants/page-designer/regex.d.ts +2 -0
- package/es/constants/page-designer/regex.mjs +5 -0
- package/es/enums/index.mjs +1 -0
- package/es/enums/page-designer/index.d.ts +1 -0
- package/es/enums/page-designer/index.mjs +1 -0
- package/es/enums/page-designer/layout.d.ts +12 -0
- package/es/enums/page-designer/layout.mjs +17 -0
- package/es/global/gct/gct.d.ts +226 -0
- package/es/global/gct/gct.mjs +10 -0
- package/es/index.mjs +14 -11
- package/es/interface/i-pinia-state/i-global-state.d.ts +0 -11
- package/es/modules/env-manager/env-manager.d.ts +2 -0
- package/es/modules/env-manager/env-manager.interface.d.ts +2 -0
- package/es/modules/env-manager/env-manager.mjs +5 -1
- package/es/modules/platform-config/index.d.ts +1 -1
- package/es/modules/platform-config/store.d.ts +1 -0
- package/es/setup-app.mjs +1 -1
- package/es/state/global-pinia-state/global-pinia-state.d.ts +0 -6
- package/es/state/global-pinia-state/global-pinia-state.mjs +0 -6
- package/es/store/index.d.ts +7 -0
- package/es/store/index.mjs +9 -0
- package/es/types/index.d.ts +11 -0
- package/es/utils/axios/interceptors.mjs +1 -2
- package/es/utils/css-loader/css-loader.d.ts +36 -0
- package/es/utils/css-loader/css-loader.mjs +82 -0
- package/es/utils/deviceFingerprint.mjs +6 -3
- package/es/utils/index.d.ts +2 -1
- package/es/utils/index.mjs +1 -0
- package/es/utils/plugin-static-resource/plugin-static-resource.d.ts +2 -27
- package/es/utils/plugin-static-resource/plugin-static-resource.mjs +5 -32
- package/es/utils/uuid/uuid.d.ts +2 -1
- package/es/utils/uuid/uuid.mjs +1 -4
- package/package.json +7 -19
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS 动态加载工具类
|
|
3
|
+
*
|
|
4
|
+
* 从 CDN 动态加载 CSS 文件,具备以下特性:
|
|
5
|
+
* - 已成功加载的路径永久缓存,避免重复插入 link 标签
|
|
6
|
+
* - 同一时刻对同一路径的多次调用共享同一个 Promise(请求去重)
|
|
7
|
+
* - 加载失败不写入缓存,允许下次重试
|
|
8
|
+
* - 加载前检查 DOM 中是否已存在相同 href 的 link 标签
|
|
9
|
+
*
|
|
10
|
+
* @author chitanda
|
|
11
|
+
* @date 2026-03-16
|
|
12
|
+
* @class CssLoader
|
|
13
|
+
*/
|
|
14
|
+
declare class CssLoader {
|
|
15
|
+
/** 已成功加载的 CSS URL 集合(永久缓存) */
|
|
16
|
+
private _loadedSet;
|
|
17
|
+
/** 正在加载中的 CSS URL 对应的 Promise(用于请求去重) */
|
|
18
|
+
private _pendingMap;
|
|
19
|
+
/**
|
|
20
|
+
* 动态加载单个 CSS 文件
|
|
21
|
+
*
|
|
22
|
+
* @param {string} url CSS 文件的完整 URL
|
|
23
|
+
* @returns {Promise<void>} 加载完成后 resolve;加载失败则 reject
|
|
24
|
+
*/
|
|
25
|
+
load(url: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* 并发加载多个 CSS 文件
|
|
28
|
+
*
|
|
29
|
+
* @param {string[]} urls CSS 文件 URL 列表
|
|
30
|
+
* @returns {Promise<void>} 所有文件均加载完成后 resolve;任一失败则 reject
|
|
31
|
+
*/
|
|
32
|
+
loadBatch(urls: string[]): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** CSS 动态加载工具单例 */
|
|
35
|
+
export declare const cssLoader: CssLoader;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
//#region src/utils/css-loader/css-loader.ts
|
|
2
|
+
/**
|
|
3
|
+
* CSS 动态加载工具类
|
|
4
|
+
*
|
|
5
|
+
* 从 CDN 动态加载 CSS 文件,具备以下特性:
|
|
6
|
+
* - 已成功加载的路径永久缓存,避免重复插入 link 标签
|
|
7
|
+
* - 同一时刻对同一路径的多次调用共享同一个 Promise(请求去重)
|
|
8
|
+
* - 加载失败不写入缓存,允许下次重试
|
|
9
|
+
* - 加载前检查 DOM 中是否已存在相同 href 的 link 标签
|
|
10
|
+
*
|
|
11
|
+
* @author chitanda
|
|
12
|
+
* @date 2026-03-16
|
|
13
|
+
* @class CssLoader
|
|
14
|
+
*/
|
|
15
|
+
var CssLoader = class {
|
|
16
|
+
/** 已成功加载的 CSS URL 集合(永久缓存) */
|
|
17
|
+
_loadedSet = /* @__PURE__ */ new Set();
|
|
18
|
+
/** 正在加载中的 CSS URL 对应的 Promise(用于请求去重) */
|
|
19
|
+
_pendingMap = /* @__PURE__ */ new Map();
|
|
20
|
+
/**
|
|
21
|
+
* 动态加载单个 CSS 文件
|
|
22
|
+
*
|
|
23
|
+
* @param {string} url CSS 文件的完整 URL
|
|
24
|
+
* @returns {Promise<void>} 加载完成后 resolve;加载失败则 reject
|
|
25
|
+
*/
|
|
26
|
+
load(url) {
|
|
27
|
+
if (this._loadedSet.has(url)) return Promise.resolve();
|
|
28
|
+
if (this._pendingMap.has(url)) return this._pendingMap.get(url);
|
|
29
|
+
if (typeof document !== "undefined") {
|
|
30
|
+
if (document.querySelector(`link[rel="stylesheet"][href="${CSS.escape ? CSS.escape(url) : url}"]`)) {
|
|
31
|
+
this._loadedSet.add(url);
|
|
32
|
+
return Promise.resolve();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const promise = new Promise((resolve, reject) => {
|
|
36
|
+
if (typeof document === "undefined") {
|
|
37
|
+
reject(/* @__PURE__ */ new Error(`[CssLoader] 当前环境不支持 DOM,无法加载 CSS: ${url}`));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const link = document.createElement("link");
|
|
41
|
+
link.rel = "stylesheet";
|
|
42
|
+
link.type = "text/css";
|
|
43
|
+
link.href = url;
|
|
44
|
+
/** 加载成功回调 */
|
|
45
|
+
const onLoad = () => {
|
|
46
|
+
cleanup();
|
|
47
|
+
this._loadedSet.add(url);
|
|
48
|
+
this._pendingMap.delete(url);
|
|
49
|
+
resolve();
|
|
50
|
+
};
|
|
51
|
+
/** 加载失败回调 */
|
|
52
|
+
const onError = () => {
|
|
53
|
+
cleanup();
|
|
54
|
+
this._pendingMap.delete(url);
|
|
55
|
+
reject(/* @__PURE__ */ new Error(`[CssLoader] CSS 文件加载失败: ${url}`));
|
|
56
|
+
};
|
|
57
|
+
/** 移除事件监听,防止内存泄漏 */
|
|
58
|
+
const cleanup = () => {
|
|
59
|
+
link.removeEventListener("load", onLoad);
|
|
60
|
+
link.removeEventListener("error", onError);
|
|
61
|
+
};
|
|
62
|
+
link.addEventListener("load", onLoad);
|
|
63
|
+
link.addEventListener("error", onError);
|
|
64
|
+
document.head.appendChild(link);
|
|
65
|
+
});
|
|
66
|
+
this._pendingMap.set(url, promise);
|
|
67
|
+
return promise;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 并发加载多个 CSS 文件
|
|
71
|
+
*
|
|
72
|
+
* @param {string[]} urls CSS 文件 URL 列表
|
|
73
|
+
* @returns {Promise<void>} 所有文件均加载完成后 resolve;任一失败则 reject
|
|
74
|
+
*/
|
|
75
|
+
async loadBatch(urls) {
|
|
76
|
+
await Promise.all(urls.map((url) => this.load(url)));
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
/** CSS 动态加载工具单例 */
|
|
80
|
+
var cssLoader = new CssLoader();
|
|
81
|
+
//#endregion
|
|
82
|
+
export { cssLoader };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import FingerprintJS from "@fingerprintjs/fingerprintjs";
|
|
2
1
|
//#region src/utils/deviceFingerprint.ts
|
|
3
2
|
/** 指纹缓存 key */
|
|
4
3
|
var FINGERPRINT_KEY = "FINGERPRINT";
|
|
@@ -56,7 +55,7 @@ function getClientPlatform() {
|
|
|
56
55
|
}
|
|
57
56
|
/** 获取浏览器指纹对象 */
|
|
58
57
|
async function getFingerprint() {
|
|
59
|
-
return (await
|
|
58
|
+
return (await (await import("@fingerprintjs/fingerprintjs")).load()).get();
|
|
60
59
|
}
|
|
61
60
|
/** 获取设备指纹标识(统一入口) */
|
|
62
61
|
async function getDeviceFingerprint() {
|
|
@@ -71,6 +70,10 @@ async function getDeviceFingerprint() {
|
|
|
71
70
|
if (isWeb) localStorage.setItem(FINGERPRINT_KEY, visitorId);
|
|
72
71
|
return `${name}/${visitorId}`;
|
|
73
72
|
}
|
|
73
|
+
/** mobile 端指纹(语义兼容) */
|
|
74
|
+
function getMobileBrowserFingerprint() {
|
|
75
|
+
return getDeviceFingerprint();
|
|
76
|
+
}
|
|
74
77
|
/** 页签唯一标识 */
|
|
75
78
|
function getPageIdentification() {
|
|
76
79
|
let pageTag = sessionStorage.getItem("currentPageTag");
|
|
@@ -81,4 +84,4 @@ function getPageIdentification() {
|
|
|
81
84
|
return pageTag;
|
|
82
85
|
}
|
|
83
86
|
//#endregion
|
|
84
|
-
export { getDeviceFingerprint, getPageIdentification };
|
|
87
|
+
export { getDeviceFingerprint, getMobileBrowserFingerprint, getPageIdentification };
|
package/es/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { cssLoader } from './css-loader/css-loader';
|
|
1
2
|
export { gctMemoizeAsync } from './cache-adapter/cache-adapter';
|
|
2
3
|
export { DictionaryUtil } from './dictionary/dictionary';
|
|
3
4
|
export { t } from './i18n';
|
|
@@ -14,7 +15,7 @@ export { getToken, setToken, getTenant, getTimezone, isMobile, setTenant, deepMe
|
|
|
14
15
|
export * from './uuid/uuid';
|
|
15
16
|
export * from './value-helper/value-helper';
|
|
16
17
|
export { interceptors } from './axios/interceptors';
|
|
17
|
-
export { getDeviceFingerprint, getPageIdentification, } from './deviceFingerprint';
|
|
18
|
+
export { getDeviceFingerprint, getPageIdentification, getMobileBrowserFingerprint, } from './deviceFingerprint';
|
|
18
19
|
export { TreeHelper } from './treeHelper/treeHelper';
|
|
19
20
|
export * from './style';
|
|
20
21
|
export * from './util';
|
package/es/utils/index.mjs
CHANGED
|
@@ -1,37 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 插件静态资源工具类
|
|
3
3
|
*
|
|
4
|
+
* @description 此文件只能在插件中使用,并且初始化必须是在插件的入口文件中进行,且传入的 mateUrl 必须是插件入口文件的 URL。
|
|
4
5
|
* @export
|
|
5
6
|
* @class PluginStaticResource
|
|
6
7
|
*/
|
|
7
8
|
export declare class PluginStaticResource {
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* 计算出的静态资源跟路径
|
|
11
|
-
*
|
|
12
|
-
* @protected
|
|
13
|
-
* @type {string}
|
|
14
|
-
*/
|
|
15
|
-
protected baseDir: string;
|
|
16
|
-
/**
|
|
17
|
-
* mete 路径解析对象
|
|
18
|
-
*
|
|
19
|
-
* @protected
|
|
20
|
-
* @type {URL}
|
|
21
|
-
*/
|
|
22
|
-
protected url: URL;
|
|
23
|
-
/**
|
|
24
|
-
* 插件静态资源工具类.
|
|
25
|
-
*
|
|
26
|
-
* @param {string} mateUrl
|
|
27
|
-
* @param {boolean} [isDev=false]
|
|
28
|
-
*/
|
|
9
|
+
protected baseUrl: URL;
|
|
29
10
|
constructor(mateUrl: string, isDev?: boolean);
|
|
30
|
-
/**
|
|
31
|
-
* 合并输出静态资源目录
|
|
32
|
-
*
|
|
33
|
-
* @param {string} pathStr
|
|
34
|
-
* @return {*} {string}
|
|
35
|
-
*/
|
|
36
11
|
dir(pathStr: string): string;
|
|
37
12
|
}
|
|
@@ -1,46 +1,19 @@
|
|
|
1
|
-
import path from "path-browserify";
|
|
2
1
|
//#region src/utils/plugin-static-resource/plugin-static-resource.ts
|
|
3
2
|
/**
|
|
4
3
|
* 插件静态资源工具类
|
|
5
4
|
*
|
|
5
|
+
* @description 此文件只能在插件中使用,并且初始化必须是在插件的入口文件中进行,且传入的 mateUrl 必须是插件入口文件的 URL。
|
|
6
6
|
* @export
|
|
7
7
|
* @class PluginStaticResource
|
|
8
8
|
*/
|
|
9
9
|
var PluginStaticResource = class {
|
|
10
|
-
|
|
11
|
-
* 计算出的静态资源跟路径
|
|
12
|
-
*
|
|
13
|
-
* @protected
|
|
14
|
-
* @type {string}
|
|
15
|
-
*/
|
|
16
|
-
baseDir;
|
|
17
|
-
/**
|
|
18
|
-
* mete 路径解析对象
|
|
19
|
-
*
|
|
20
|
-
* @protected
|
|
21
|
-
* @type {URL}
|
|
22
|
-
*/
|
|
23
|
-
url;
|
|
24
|
-
/**
|
|
25
|
-
* 插件静态资源工具类.
|
|
26
|
-
*
|
|
27
|
-
* @param {string} mateUrl
|
|
28
|
-
* @param {boolean} [isDev=false]
|
|
29
|
-
*/
|
|
10
|
+
baseUrl;
|
|
30
11
|
constructor(mateUrl, isDev = false) {
|
|
31
|
-
|
|
32
|
-
this.
|
|
33
|
-
this.baseDir = path.dirname(this.url.pathname);
|
|
12
|
+
const url = new URL(mateUrl);
|
|
13
|
+
this.baseUrl = new URL(isDev ? "../" : "./", url);
|
|
34
14
|
}
|
|
35
|
-
/**
|
|
36
|
-
* 合并输出静态资源目录
|
|
37
|
-
*
|
|
38
|
-
* @param {string} pathStr
|
|
39
|
-
* @return {*} {string}
|
|
40
|
-
*/
|
|
41
15
|
dir(pathStr) {
|
|
42
|
-
|
|
43
|
-
return this.url.origin + path.resolve(this.baseDir, pathStr);
|
|
16
|
+
return new URL(pathStr, this.baseUrl).href;
|
|
44
17
|
}
|
|
45
18
|
};
|
|
46
19
|
//#endregion
|
package/es/utils/uuid/uuid.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { sha256 } from 'js-sha256';
|
|
1
2
|
export declare function buildUUID(): string;
|
|
2
3
|
export declare function buildShortUUID(prefix?: string): string;
|
|
3
4
|
export declare const uuid2: (len: number, radix?: number) => string;
|
|
4
|
-
export
|
|
5
|
+
export { sha256 };
|
package/es/utils/uuid/uuid.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { sha256 } from "js-sha256";
|
|
2
2
|
//#region src/utils/uuid/uuid.ts
|
|
3
3
|
var hexList = [];
|
|
4
4
|
for (let i = 0; i <= 15; i++) hexList[i] = i.toString(16);
|
|
@@ -34,8 +34,5 @@ var uuid2 = (len, radix) => {
|
|
|
34
34
|
}
|
|
35
35
|
return uuid.join("");
|
|
36
36
|
};
|
|
37
|
-
function sha256(password) {
|
|
38
|
-
return CryptoJS.SHA256(password).toString(CryptoJS.enc.Hex);
|
|
39
|
-
}
|
|
40
37
|
//#endregion
|
|
41
38
|
export { buildShortUUID, buildUUID, sha256, uuid2 };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gct-paas/core",
|
|
3
|
-
"version": "0.1.4-dev.
|
|
3
|
+
"version": "0.1.4-dev.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "paas 平台核心包",
|
|
6
6
|
"main": "dist/index.min.cjs",
|
|
@@ -50,40 +50,28 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@fingerprintjs/fingerprintjs": "^5.1.0",
|
|
52
52
|
"@gct-paas/api": "^0.1.1",
|
|
53
|
+
"@module-federation/runtime": "^2.2.3",
|
|
53
54
|
"@vueuse/core": "^14.1.0",
|
|
54
55
|
"async-validator": "^4.2.5",
|
|
55
56
|
"axios": "^1.13.2",
|
|
56
|
-
"crypto-js": "^4.2.0",
|
|
57
57
|
"dayjs": "^1.11.19",
|
|
58
58
|
"js-sha256": "^0.11.1",
|
|
59
59
|
"lodash-es": "^4.17.23",
|
|
60
60
|
"mitt": "^3.0.1",
|
|
61
61
|
"mqtt": "^5.15.0",
|
|
62
62
|
"overlayscrollbars": "^2.14.0",
|
|
63
|
-
"path-browserify": "^1.0.1",
|
|
64
63
|
"pinia": "^3.0.4",
|
|
65
|
-
"qs": "^6.
|
|
64
|
+
"qs": "^6.15.0",
|
|
66
65
|
"qx-util": "^0.4.8",
|
|
67
|
-
"
|
|
68
|
-
"vue": "
|
|
69
|
-
"vue-i18n": "11.2.8",
|
|
66
|
+
"vue": "^3.5.30",
|
|
67
|
+
"vue-i18n": "11.3.0",
|
|
70
68
|
"vue-router": "^4.6.4",
|
|
71
69
|
"wujie": "^1.0.29"
|
|
72
70
|
},
|
|
73
71
|
"devDependencies": {
|
|
74
|
-
"@gct-paas/build": "^0.1.6-dev.1",
|
|
75
|
-
"@types/crypto-js": "^4.2.2",
|
|
76
|
-
"@types/lodash-es": "^4.17.12",
|
|
77
|
-
"@types/path-browserify": "^1.0.3",
|
|
78
|
-
"@types/qs": "^6.15.0",
|
|
79
|
-
"@vitest/browser": "^4.1.0",
|
|
80
|
-
"@vitest/coverage-istanbul": "^4.1.0",
|
|
81
|
-
"@vitest/coverage-v8": "^4.1.0",
|
|
82
|
-
"@vitest/ui": "^4.1.0",
|
|
83
72
|
"@vue/test-utils": "^2.4.6",
|
|
84
73
|
"fs-extra": "^11.3.3",
|
|
85
|
-
"playwright": "^1.58.0"
|
|
86
|
-
"vitest": "^4.1.0"
|
|
74
|
+
"playwright": "^1.58.0"
|
|
87
75
|
},
|
|
88
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "d03e6d5c7bd1c3edf73777ce40e0c0ed4982622f"
|
|
89
77
|
}
|