@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.
Files changed (36) hide show
  1. package/dist/index.esm.min.js +1 -21679
  2. package/es/constants/index.d.ts +1 -0
  3. package/es/constants/index.mjs +1 -0
  4. package/es/constants/page-designer/regex.d.ts +2 -0
  5. package/es/constants/page-designer/regex.mjs +5 -0
  6. package/es/enums/index.mjs +1 -0
  7. package/es/enums/page-designer/index.d.ts +1 -0
  8. package/es/enums/page-designer/index.mjs +1 -0
  9. package/es/enums/page-designer/layout.d.ts +12 -0
  10. package/es/enums/page-designer/layout.mjs +17 -0
  11. package/es/global/gct/gct.d.ts +226 -0
  12. package/es/global/gct/gct.mjs +10 -0
  13. package/es/index.mjs +14 -11
  14. package/es/interface/i-pinia-state/i-global-state.d.ts +0 -11
  15. package/es/modules/env-manager/env-manager.d.ts +2 -0
  16. package/es/modules/env-manager/env-manager.interface.d.ts +2 -0
  17. package/es/modules/env-manager/env-manager.mjs +5 -1
  18. package/es/modules/platform-config/index.d.ts +1 -1
  19. package/es/modules/platform-config/store.d.ts +1 -0
  20. package/es/setup-app.mjs +1 -1
  21. package/es/state/global-pinia-state/global-pinia-state.d.ts +0 -6
  22. package/es/state/global-pinia-state/global-pinia-state.mjs +0 -6
  23. package/es/store/index.d.ts +7 -0
  24. package/es/store/index.mjs +9 -0
  25. package/es/types/index.d.ts +11 -0
  26. package/es/utils/axios/interceptors.mjs +1 -2
  27. package/es/utils/css-loader/css-loader.d.ts +36 -0
  28. package/es/utils/css-loader/css-loader.mjs +82 -0
  29. package/es/utils/deviceFingerprint.mjs +6 -3
  30. package/es/utils/index.d.ts +2 -1
  31. package/es/utils/index.mjs +1 -0
  32. package/es/utils/plugin-static-resource/plugin-static-resource.d.ts +2 -27
  33. package/es/utils/plugin-static-resource/plugin-static-resource.mjs +5 -32
  34. package/es/utils/uuid/uuid.d.ts +2 -1
  35. package/es/utils/uuid/uuid.mjs +1 -4
  36. 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 FingerprintJS.load()).get();
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 };
@@ -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';
@@ -1,3 +1,4 @@
1
+ import "./css-loader/css-loader.mjs";
1
2
  import "./cache-adapter/cache-adapter.mjs";
2
3
  import "./dictionary/dictionary.mjs";
3
4
  import "./i18n/index.mjs";
@@ -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
- private isDev;
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
- this.isDev = isDev;
32
- this.url = new URL(mateUrl);
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
- if (this.isDev === true) return pathStr;
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
@@ -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 declare function sha256(password: string): string;
5
+ export { sha256 };
@@ -1,4 +1,4 @@
1
- import CryptoJS from "crypto-js";
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.12",
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.14.1",
64
+ "qs": "^6.15.0",
66
65
  "qx-util": "^0.4.8",
67
- "systemjs": "^6.15.1",
68
- "vue": "^3.5.29",
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": "0a7f1a0388cb21eb1c3a4868b14d664a5a3152ed"
76
+ "gitHead": "d03e6d5c7bd1c3edf73777ce40e0c0ed4982622f"
89
77
  }