@gct-paas/core 0.1.4-dev.11 → 0.1.4-dev.13
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 +4522 -0
- package/es/constants/core.mjs +5 -4
- package/es/constants/default-date-type/default-date-type.mjs +73 -21
- package/es/constants/editor-register/editor-register.mjs +17 -5
- package/es/constants/expression-type/BuiltOperators.mjs +152 -147
- package/es/constants/expression-type/FunctionKeys.mjs +75 -79
- package/es/constants/expression-type/editor.mjs +10 -3
- package/es/constants/expression-type/function.mjs +602 -613
- package/es/constants/expression-type/index.mjs +111 -113
- package/es/constants/expression-type/modeCfg.mjs +256 -263
- package/es/constants/expression-type/variable.mjs +43 -39
- package/es/constants/form-container-type/form-container-type.mjs +17 -5
- package/es/constants/index.d.ts +1 -0
- package/es/constants/index.mjs +31 -10
- package/es/constants/page-designer/model.mjs +15 -5
- package/es/constants/page-designer/regex.d.ts +2 -0
- package/es/constants/page-designer/regex.mjs +5 -0
- package/es/create-app-vue.mjs +15 -9
- package/es/enums/app-designer/index.d.ts +19 -0
- package/es/enums/app-designer/index.mjs +131 -63
- package/es/enums/appEnum.mjs +681 -360
- package/es/enums/appStateEnum.mjs +17 -10
- package/es/enums/authActionEnum.mjs +63 -51
- package/es/enums/breakpointEnum.mjs +27 -26
- package/es/enums/cacheEnum.mjs +22 -21
- package/es/enums/designEnum.mjs +110 -71
- package/es/enums/developer-center/integration.mjs +7 -6
- package/es/enums/exceptionEnum.mjs +21 -17
- package/es/enums/expressionEnum.d.ts +1 -1
- package/es/enums/expressionEnum.mjs +81 -74
- package/es/enums/globalEnum.mjs +59 -36
- package/es/enums/httpEnum.mjs +71 -61
- package/es/enums/index.mjs +44 -14
- package/es/enums/menuEnum.mjs +42 -38
- package/es/enums/page-designer/designer.mjs +403 -407
- package/es/enums/page-designer/index.d.ts +1 -0
- package/es/enums/page-designer/index.mjs +5 -0
- package/es/enums/page-designer/layout.d.ts +12 -0
- package/es/enums/page-designer/layout.mjs +17 -0
- package/es/enums/page-designer/panel.mjs +341 -213
- package/es/enums/page-designer/toolkit.mjs +13 -12
- package/es/enums/page-designer/widget.mjs +425 -338
- package/es/enums/pageEnum.mjs +14 -13
- package/es/enums/plugin-enum.mjs +23 -7
- package/es/enums/processEnum.mjs +95 -60
- package/es/enums/roleEnum.mjs +7 -6
- package/es/enums/sizeEnum.d.ts +18 -0
- package/es/enums/sizeEnum.mjs +28 -8
- package/es/global/gct/gct.mjs +84 -96
- package/es/global/index.mjs +1 -0
- package/es/hooks/index.mjs +4 -0
- package/es/hooks/use-app-inst/use-app-inst.mjs +11 -5
- package/es/hooks/use-modal/use-modal.mjs +16 -10
- package/es/hooks/use-sub-app-utils/use-sub-app-utils.mjs +43 -23
- package/es/hooks/useCopyToClipboard.mjs +50 -50
- package/es/index.mjs +125 -114
- package/es/interface/i-pinia-state/i-global-state.d.ts +0 -11
- package/es/locale/index.mjs +50 -57
- package/es/modules/env-manager/env-manager.const.mjs +16 -8
- 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.interface.mjs +14 -7
- package/es/modules/env-manager/env-manager.mjs +108 -107
- package/es/modules/error-handler/error-handler.const.mjs +11 -16
- package/es/modules/error-handler/error-strategy.mjs +199 -175
- package/es/modules/error-handler/index.mjs +120 -106
- package/es/modules/mqtt/constants/mqtt.const.mjs +21 -24
- package/es/modules/mqtt/enums/mqtt-status.enum.mjs +23 -9
- package/es/modules/mqtt/index.mjs +4 -0
- package/es/modules/mqtt/mqtt-client.mjs +228 -261
- package/es/modules/mqtt/mqtt-manager.mjs +117 -77
- package/es/modules/platform-config/constants/index.mjs +4 -0
- package/es/modules/platform-config/constants/login.const.mjs +48 -45
- package/es/modules/platform-config/constants/org.const.mjs +57 -52
- package/es/modules/platform-config/constants/theme.const.mjs +11 -4
- package/es/modules/platform-config/constants/watermark.const.mjs +17 -12
- package/es/modules/platform-config/enums/deploy.enum.mjs +13 -6
- package/es/modules/platform-config/enums/login.enum.mjs +29 -15
- package/es/modules/platform-config/enums/platform.enum.mjs +16 -13
- package/es/modules/platform-config/index.mjs +9 -0
- package/es/modules/platform-config/store.mjs +68 -79
- package/es/modules/platform-config/useBasicSetting.mjs +47 -35
- package/es/modules/platform-config/useDeploySetting.mjs +29 -21
- package/es/modules/platform-config/useLoginSetting.mjs +151 -173
- package/es/modules/platform-config/useOrgSetting.mjs +63 -62
- package/es/modules/platform-config/useProjectSetting.mjs +14 -6
- package/es/modules/platform-config/useSecuritySetting.mjs +68 -56
- package/es/modules/platform-config/useThemeSetting.mjs +78 -59
- package/es/modules/platform-config/useWatermarkSetting.mjs +37 -23
- package/es/modules/user-stores/index.mjs +3 -0
- package/es/modules/user-stores/store/permission.store.mjs +27 -36
- package/es/modules/user-stores/store/tenant.store.mjs +20 -22
- package/es/modules/user-stores/store/user.store.mjs +94 -117
- package/es/router/index.mjs +25 -28
- package/es/setup-app.mjs +23 -39
- package/es/state/global-pinia-state/global-pinia-state.d.ts +0 -6
- package/es/state/global-pinia-state/global-pinia-state.mjs +43 -71
- package/es/state/index.mjs +1 -0
- package/es/store/global-store.mjs +50 -72
- package/es/store/index.mjs +25 -19
- package/es/types/index.d.ts +7 -0
- package/es/utils/axios/interceptors.mjs +21 -17
- package/es/utils/cache-adapter/cache-adapter.mjs +61 -56
- package/es/utils/css-loader/css-loader.d.ts +36 -0
- package/es/utils/css-loader/css-loader.mjs +82 -0
- package/es/utils/design/design.mjs +18 -12
- package/es/utils/deviceFingerprint.mjs +77 -63
- package/es/utils/dictionary/dictionary.mjs +142 -145
- package/es/utils/file/base64Conver.mjs +35 -30
- package/es/utils/file/download.mjs +94 -98
- package/es/utils/file/parser.d.ts +3 -0
- package/es/utils/file/parser.mjs +29 -0
- package/es/utils/i18n/index.mjs +14 -3
- package/es/utils/index.d.ts +3 -1
- package/es/utils/index.mjs +32 -0
- package/es/utils/is-sort-filed/is-sort-filed.mjs +42 -37
- package/es/utils/linked-list/linked-list.mjs +115 -118
- package/es/utils/linked-node/linked-node.mjs +41 -31
- package/es/utils/lowcode/utils.mjs +13 -18
- package/es/utils/lowcode/validate.mjs +20 -26
- package/es/utils/mitt/mitt.mjs +4 -4
- package/es/utils/model-loader/model-loader.mjs +280 -325
- package/es/utils/namespace/namespace.mjs +178 -164
- package/es/utils/openUtil/index.mjs +2 -0
- package/es/utils/openUtil/modal/modal.mjs +72 -79
- package/es/utils/openUtil/overlay-container/overlay-container.mjs +144 -138
- package/es/utils/permission.mjs +33 -37
- package/es/utils/plugin-static-resource/plugin-static-resource.mjs +46 -42
- package/es/utils/style/index.mjs +94 -138
- package/es/utils/tools/tools.mjs +86 -54
- package/es/utils/treeHelper/treeHelper.mjs +205 -233
- package/es/utils/uploader/uploader.mjs +81 -115
- package/es/utils/useUUid.mjs +79 -87
- package/es/utils/util.mjs +55 -35
- package/es/utils/uuid/uuid.d.ts +2 -0
- package/es/utils/uuid/uuid.mjs +33 -43
- package/es/utils/validate.mjs +15 -19
- package/es/utils/value-helper/value-helper.mjs +113 -98
- package/package.json +9 -18
- package/dist/index.esm.min.mjs +0 -18322
- package/dist/index.min.cjs +0 -393
- package/dist/index.system.min.js +0 -393
|
@@ -1,108 +1,109 @@
|
|
|
1
|
-
import { EnvironmentType } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
1
|
+
import { EnvironmentType } from "./env-manager.interface.mjs";
|
|
2
|
+
import { APP_PREVIEW_PATH_REG, APP_PROD_PATH_REG, APP_RUN_PATH_REG, DEV_SINGLE_PATH_REG, HOST_REG, IP_REG, TEST_SINGLE_PATH_REG } from "./env-manager.const.mjs";
|
|
3
|
+
//#region src/modules/env-manager/env-manager.ts
|
|
4
|
+
/**
|
|
5
|
+
* 环境管理器
|
|
6
|
+
*
|
|
7
|
+
* @description 负责检测和管理应用运行环境,包括测试环境检测、租户信息获取等功能
|
|
8
|
+
*/
|
|
9
|
+
var EnvironmentManager = class {
|
|
10
|
+
/** 测试环境标识 */
|
|
11
|
+
_testEnv = false;
|
|
12
|
+
/** 测试环境租户数据 */
|
|
13
|
+
_testTenantData = {};
|
|
14
|
+
/** 平台地址 */
|
|
15
|
+
_platformOrigin;
|
|
16
|
+
/** 域名访问模式标识 */
|
|
17
|
+
_isHostMode = false;
|
|
18
|
+
constructor() {
|
|
19
|
+
this._platformOrigin = location.origin || "";
|
|
20
|
+
this._isHostMode = HOST_REG.test(this._platformOrigin);
|
|
21
|
+
}
|
|
22
|
+
/**安卓混合开发模式下 */
|
|
23
|
+
get isAndroid() {
|
|
24
|
+
return window.location.origin === "file://";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 是否为应用前端运行时
|
|
28
|
+
*/
|
|
29
|
+
get isAppRun() {
|
|
30
|
+
return APP_RUN_PATH_REG.test(location.pathname);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 是否为应用前端运行时生产环境包含测试环境
|
|
34
|
+
*/
|
|
35
|
+
get isAppProd() {
|
|
36
|
+
return APP_PROD_PATH_REG.test(location.pathname);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 是否为应用前端运行时预览环境
|
|
40
|
+
*/
|
|
41
|
+
get isAppPreview() {
|
|
42
|
+
return APP_PREVIEW_PATH_REG.test(location.pathname);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 是否为dev环境单应用
|
|
46
|
+
*/
|
|
47
|
+
get isDevSingleEnv() {
|
|
48
|
+
return DEV_SINGLE_PATH_REG.test(location.pathname);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 是否为测试环境
|
|
52
|
+
*/
|
|
53
|
+
get isTestEnv() {
|
|
54
|
+
return TEST_SINGLE_PATH_REG.test(location.pathname) || this._testEnv;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 平台地址
|
|
58
|
+
*/
|
|
59
|
+
get platformOrigin() {
|
|
60
|
+
return this._platformOrigin;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 是否为域名访问模式
|
|
64
|
+
*/
|
|
65
|
+
get isHostMode() {
|
|
66
|
+
return this._isHostMode;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 测试环境租户数据
|
|
70
|
+
*/
|
|
71
|
+
get testTenantData() {
|
|
72
|
+
return this._testTenantData;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 检测是否为测试环境
|
|
76
|
+
*/
|
|
77
|
+
async checkIsTestEnv() {
|
|
78
|
+
let matches = null;
|
|
79
|
+
if (this._isHostMode) {
|
|
80
|
+
matches = this._platformOrigin.match(HOST_REG);
|
|
81
|
+
this._testEnv = !!(matches && matches[1]);
|
|
82
|
+
if (this._testEnv) {
|
|
83
|
+
const data = await _api.platform.tenant.getInfoByPortOrDomain({ domain: matches[1] });
|
|
84
|
+
Object.assign(this._testTenantData, data);
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
matches = this._platformOrigin.match(IP_REG);
|
|
88
|
+
const port = matches && matches[2];
|
|
89
|
+
if (port) {
|
|
90
|
+
const data = await _api.platform.tenant.getInfoByPortOrDomain({ port });
|
|
91
|
+
if (data) {
|
|
92
|
+
Object.assign(this._testTenantData, data);
|
|
93
|
+
this._testEnv = data.testEnvPort === port;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 获取当前环境类型
|
|
100
|
+
* @returns 环境类型
|
|
101
|
+
*/
|
|
102
|
+
getEnv() {
|
|
103
|
+
if (this.isTestEnv) return EnvironmentType.TEST;
|
|
104
|
+
else if (this.isAppProd || this.isAndroid) return EnvironmentType.PROD;
|
|
105
|
+
else return EnvironmentType.DEV;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
//#endregion
|
|
108
109
|
export { EnvironmentManager };
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
BAD_GATEWAY: 502,
|
|
12
|
-
/** 服务不可用 */
|
|
13
|
-
SERVICE_UNAVAILABLE: 503,
|
|
14
|
-
/** 网关超时 */
|
|
15
|
-
GATEWAY_TIMEOUT: 504
|
|
1
|
+
//#region src/modules/error-handler/error-handler.const.ts
|
|
2
|
+
/** HTTP 状态码常量 */
|
|
3
|
+
var HTTP_STATUS_CODE = {
|
|
4
|
+
UNAUTHORIZED: 401,
|
|
5
|
+
FORBIDDEN: 403,
|
|
6
|
+
NOT_FOUND: 404,
|
|
7
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
8
|
+
BAD_GATEWAY: 502,
|
|
9
|
+
SERVICE_UNAVAILABLE: 503,
|
|
10
|
+
GATEWAY_TIMEOUT: 504
|
|
16
11
|
};
|
|
17
|
-
|
|
12
|
+
//#endregion
|
|
18
13
|
export { HTTP_STATUS_CODE };
|
|
@@ -1,175 +1,199 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
1
|
+
import { ErrorTypeEnum } from "../../enums/exceptionEnum.mjs";
|
|
2
|
+
import { HTTP_STATUS_CODE } from "./error-handler.const.mjs";
|
|
3
|
+
//#region src/modules/error-handler/error-strategy.ts
|
|
4
|
+
/**
|
|
5
|
+
* JavaScript 错误处理策略
|
|
6
|
+
* 负责处理 JavaScript 运行时错误
|
|
7
|
+
*
|
|
8
|
+
* @export
|
|
9
|
+
* @class JavaScriptErrorStrategy
|
|
10
|
+
* @implements {IErrorHandlerStrategy}
|
|
11
|
+
*/
|
|
12
|
+
var JavaScriptErrorStrategy = class {
|
|
13
|
+
/**
|
|
14
|
+
* 处理 JavaScript 错误
|
|
15
|
+
*
|
|
16
|
+
* @param {IErrorInfo} errorInfo 错误信息
|
|
17
|
+
*/
|
|
18
|
+
handle(errorInfo) {
|
|
19
|
+
console.error(errorInfo);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Vue 组件错误处理策略
|
|
24
|
+
* 负责处理 Vue 组件相关错误
|
|
25
|
+
*
|
|
26
|
+
* @export
|
|
27
|
+
* @class VueErrorStrategy
|
|
28
|
+
* @implements {IErrorHandlerStrategy}
|
|
29
|
+
*/
|
|
30
|
+
var VueErrorStrategy = class {
|
|
31
|
+
/**
|
|
32
|
+
* 处理 Vue 组件错误
|
|
33
|
+
*
|
|
34
|
+
* @param {IErrorInfo} errorInfo 错误信息
|
|
35
|
+
*/
|
|
36
|
+
handle(errorInfo) {
|
|
37
|
+
console.error(errorInfo);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Promise 错误处理策略
|
|
42
|
+
* 负责处理未捕获的 Promise 异常,包括 HTTP 请求错误
|
|
43
|
+
*
|
|
44
|
+
* @export
|
|
45
|
+
* @class PromiseErrorStrategy
|
|
46
|
+
* @implements {IErrorHandlerStrategy}
|
|
47
|
+
*/
|
|
48
|
+
var PromiseErrorStrategy = class {
|
|
49
|
+
/**
|
|
50
|
+
* 处理 Promise 错误
|
|
51
|
+
*
|
|
52
|
+
* @param {IErrorInfo} errorInfo 错误信息
|
|
53
|
+
*/
|
|
54
|
+
handle(errorInfo) {
|
|
55
|
+
if (errorInfo.type === ErrorTypeEnum.AJAX) {
|
|
56
|
+
new HttpErrorStrategy().handle(errorInfo);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
console.error(errorInfo);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* HTTP 错误处理策略
|
|
64
|
+
* 负责处理 HTTP 请求相关错误,包括网络错误和业务错误
|
|
65
|
+
*
|
|
66
|
+
* @export
|
|
67
|
+
* @class HttpErrorStrategy
|
|
68
|
+
* @implements {IErrorHandlerStrategy}
|
|
69
|
+
*/
|
|
70
|
+
var HttpErrorStrategy = class {
|
|
71
|
+
/**
|
|
72
|
+
* 处理 HTTP 错误
|
|
73
|
+
*
|
|
74
|
+
* @param {IErrorInfo} errorInfo 错误信息
|
|
75
|
+
*/
|
|
76
|
+
handle(errorInfo) {
|
|
77
|
+
const status = this._extractStatusCode(errorInfo.message);
|
|
78
|
+
if (status) switch (status) {
|
|
79
|
+
case HTTP_STATUS_CODE.UNAUTHORIZED:
|
|
80
|
+
this._handleUnauthorized();
|
|
81
|
+
break;
|
|
82
|
+
case HTTP_STATUS_CODE.FORBIDDEN:
|
|
83
|
+
this._handleForbidden();
|
|
84
|
+
break;
|
|
85
|
+
case HTTP_STATUS_CODE.NOT_FOUND:
|
|
86
|
+
this._handleNotFound();
|
|
87
|
+
break;
|
|
88
|
+
case HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR:
|
|
89
|
+
case HTTP_STATUS_CODE.BAD_GATEWAY:
|
|
90
|
+
case HTTP_STATUS_CODE.SERVICE_UNAVAILABLE:
|
|
91
|
+
case HTTP_STATUS_CODE.GATEWAY_TIMEOUT:
|
|
92
|
+
this._handleServerError(status);
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
this._handleGenericHttpError(errorInfo);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
else this._handleGenericHttpError(errorInfo);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 从错误消息中提取 HTTP 状态码
|
|
102
|
+
*
|
|
103
|
+
* @private
|
|
104
|
+
* @param {string} message 错误消息
|
|
105
|
+
* @return {number | null} HTTP 状态码,如果没有找到则返回 null
|
|
106
|
+
*/
|
|
107
|
+
_extractStatusCode(message) {
|
|
108
|
+
const statusMatch = message.match(/HTTP\s+(\d{3})|Business\s+Error\s+\[(\d+)\]/);
|
|
109
|
+
if (statusMatch) return parseInt(statusMatch[1] || statusMatch[2], 10);
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 处理通用 HTTP 错误
|
|
114
|
+
*
|
|
115
|
+
* @private
|
|
116
|
+
* @param {IErrorInfo} errorInfo 错误信息
|
|
117
|
+
*/
|
|
118
|
+
_handleGenericHttpError(errorInfo) {
|
|
119
|
+
if (errorInfo.message.includes("Business Error")) console.debug("Handling business error:", errorInfo.message);
|
|
120
|
+
else if (errorInfo.message.includes("Network")) console.debug("Handling network error:", errorInfo.message);
|
|
121
|
+
else console.debug("Handling HTTP error:", errorInfo.message);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 处理未授权错误
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
_handleUnauthorized() {
|
|
129
|
+
console.warn("Unauthorized access, redirecting to login...");
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 处理禁止访问错误
|
|
133
|
+
*
|
|
134
|
+
* @private
|
|
135
|
+
*/
|
|
136
|
+
_handleForbidden() {
|
|
137
|
+
console.warn("Access forbidden");
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 处理资源未找到错误
|
|
141
|
+
*
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
_handleNotFound() {
|
|
145
|
+
console.warn("Resource not found");
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* 处理服务器错误
|
|
149
|
+
*
|
|
150
|
+
* @private
|
|
151
|
+
* @param {number} [status] HTTP 状态码
|
|
152
|
+
*/
|
|
153
|
+
_handleServerError(status) {
|
|
154
|
+
console.warn(`Server error: ${status}`);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* 错误处理策略工厂
|
|
159
|
+
* 负责根据错误类型创建对应的处理策略
|
|
160
|
+
*
|
|
161
|
+
* @export
|
|
162
|
+
* @class ErrorStrategyFactory
|
|
163
|
+
*/
|
|
164
|
+
var ErrorStrategyFactory = class {
|
|
165
|
+
static _strategies = /* @__PURE__ */ new Map();
|
|
166
|
+
/**
|
|
167
|
+
* 初始化策略工厂
|
|
168
|
+
*
|
|
169
|
+
* @static
|
|
170
|
+
*/
|
|
171
|
+
static init() {
|
|
172
|
+
this.registerStrategy(ErrorTypeEnum.SCRIPT, new JavaScriptErrorStrategy());
|
|
173
|
+
this.registerStrategy(ErrorTypeEnum.VUE, new VueErrorStrategy());
|
|
174
|
+
this.registerStrategy(ErrorTypeEnum.PROMISE, new PromiseErrorStrategy());
|
|
175
|
+
this.registerStrategy(ErrorTypeEnum.AJAX, new HttpErrorStrategy());
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* 获取错误处理策略
|
|
179
|
+
*
|
|
180
|
+
* @static
|
|
181
|
+
* @param {ErrorTypeEnum} type 错误类型
|
|
182
|
+
* @return {IErrorHandlerStrategy | undefined} 错误处理策略
|
|
183
|
+
*/
|
|
184
|
+
static getStrategy(type) {
|
|
185
|
+
return this._strategies.get(type);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* 注册自定义错误处理策略
|
|
189
|
+
*
|
|
190
|
+
* @static
|
|
191
|
+
* @param {ErrorTypeEnum} type 错误类型
|
|
192
|
+
* @param {IErrorHandlerStrategy} strategy 错误处理策略
|
|
193
|
+
*/
|
|
194
|
+
static registerStrategy(type, strategy) {
|
|
195
|
+
this._strategies.set(type, strategy);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
//#endregion
|
|
199
|
+
export { ErrorStrategyFactory };
|