@vlian/framework 1.2.19 → 1.2.37
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/analytics.umd.js +208 -2395
- package/dist/analytics.umd.js.map +1 -1
- package/dist/core/error/ErrorHandler.cjs.map +1 -1
- package/dist/core/error/ErrorHandler.d.ts +1 -1
- package/dist/core/error/ErrorHandler.js.map +1 -1
- package/dist/core/index.cjs +0 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +1 -2
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/initialization/index.cjs.map +1 -1
- package/dist/core/initialization/index.d.ts +1 -1
- package/dist/core/initialization/index.js.map +1 -1
- package/dist/core/initialization/initialization.cjs +2 -147
- package/dist/core/initialization/initialization.cjs.map +1 -1
- package/dist/core/initialization/initialization.d.ts +0 -57
- package/dist/core/initialization/initialization.js +2 -148
- package/dist/core/initialization/initialization.js.map +1 -1
- package/dist/core/kernel/startKernel.cjs +1 -2
- package/dist/core/kernel/startKernel.cjs.map +1 -1
- package/dist/core/kernel/startKernel.js +1 -2
- package/dist/core/kernel/startKernel.js.map +1 -1
- package/dist/core/plugin.cjs +16 -16
- package/dist/core/plugin.cjs.map +1 -1
- package/dist/core/plugin.d.ts +5 -1
- package/dist/core/plugin.js +17 -17
- package/dist/core/plugin.js.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.js +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +13 -8
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +13 -8
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +4 -0
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.js +4 -0
- package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
- package/dist/core/startup/initializeServices.cjs +1 -1
- package/dist/core/startup/initializeServices.cjs.map +1 -1
- package/dist/core/startup/initializeServices.d.ts +1 -1
- package/dist/core/startup/initializeServices.js +1 -1
- package/dist/core/startup/initializeServices.js.map +1 -1
- package/dist/core/startup/performanceTracker.cjs.map +1 -1
- package/dist/core/startup/performanceTracker.d.ts +1 -1
- package/dist/core/startup/performanceTracker.js.map +1 -1
- package/dist/core/startup/renderApp.cjs +1 -1
- package/dist/core/startup/renderApp.cjs.map +1 -1
- package/dist/core/startup/renderApp.d.ts +1 -1
- package/dist/core/startup/renderApp.js +1 -1
- package/dist/core/startup/renderApp.js.map +1 -1
- package/dist/core/startup/startApp.cjs +2 -4
- package/dist/core/startup/startApp.cjs.map +1 -1
- package/dist/core/startup/startApp.js +3 -5
- package/dist/core/startup/startApp.js.map +1 -1
- package/dist/core/types.d.ts +2 -6
- package/dist/core/types.js.map +1 -1
- package/dist/index.cjs +15 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +11758 -32895
- package/dist/index.umd.js.map +1 -1
- package/dist/kernel/constants.cjs +67 -0
- package/dist/kernel/constants.cjs.map +1 -0
- package/dist/kernel/constants.d.ts +5 -0
- package/dist/kernel/constants.js +43 -0
- package/dist/kernel/constants.js.map +1 -0
- package/dist/kernel/index.cjs +40 -0
- package/dist/kernel/index.cjs.map +1 -0
- package/dist/kernel/index.d.ts +3 -0
- package/dist/kernel/index.js +4 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/kernel.cjs +296 -0
- package/dist/kernel/kernel.cjs.map +1 -0
- package/dist/kernel/kernel.d.ts +40 -0
- package/dist/kernel/kernel.js +272 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/kernel/manager/cacheManager.cjs +46 -0
- package/dist/kernel/manager/cacheManager.cjs.map +1 -0
- package/dist/kernel/manager/cacheManager.d.ts +6 -0
- package/dist/kernel/manager/cacheManager.js +36 -0
- package/dist/kernel/manager/cacheManager.js.map +1 -0
- package/dist/kernel/manager/i18nManager.cjs +68 -0
- package/dist/kernel/manager/i18nManager.cjs.map +1 -0
- package/dist/kernel/manager/i18nManager.d.ts +8 -0
- package/dist/kernel/manager/i18nManager.js +58 -0
- package/dist/kernel/manager/i18nManager.js.map +1 -0
- package/dist/kernel/manager/index.cjs +30 -0
- package/dist/kernel/manager/index.cjs.map +1 -0
- package/dist/kernel/manager/index.d.ts +4 -0
- package/dist/kernel/manager/index.js +6 -0
- package/dist/kernel/manager/index.js.map +1 -0
- package/dist/kernel/manager/loggerManager.cjs +70 -0
- package/dist/kernel/manager/loggerManager.cjs.map +1 -0
- package/dist/kernel/manager/loggerManager.d.ts +14 -0
- package/dist/kernel/manager/loggerManager.js +60 -0
- package/dist/kernel/manager/loggerManager.js.map +1 -0
- package/dist/kernel/manager/persistence.cjs +93 -0
- package/dist/kernel/manager/persistence.cjs.map +1 -0
- package/dist/kernel/manager/persistence.d.ts +3 -0
- package/dist/kernel/manager/persistence.js +75 -0
- package/dist/kernel/manager/persistence.js.map +1 -0
- package/dist/kernel/manager/themeManager.cjs +85 -0
- package/dist/kernel/manager/themeManager.cjs.map +1 -0
- package/dist/kernel/manager/themeManager.d.ts +9 -0
- package/dist/kernel/manager/themeManager.js +75 -0
- package/dist/kernel/manager/themeManager.js.map +1 -0
- package/dist/kernel/types.cjs.map +1 -0
- package/dist/kernel/types.d.ts +72 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/library/storage/index.cjs +1 -1
- package/dist/library/storage/index.cjs.map +1 -1
- package/dist/library/storage/index.d.ts +1 -0
- package/dist/library/storage/index.js +1 -1
- package/dist/library/storage/index.js.map +1 -1
- package/dist/request/adapter.d.ts +1 -0
- package/dist/request/core.d.ts +1 -0
- package/dist/request/index.d.ts +1 -42
- package/dist/request/plugin/csrfPlugin.d.ts +2 -2
- package/dist/request/plugin/queue.d.ts +2 -2
- package/dist/request/plugin.d.ts +1 -0
- package/dist/request/runtime.d.ts +1 -0
- package/dist/request/types.d.ts +1 -394
- package/dist/request/utils.d.ts +1 -0
- package/dist/state.umd.js +1 -1
- package/dist/utils/csrf.cjs +13 -152
- package/dist/utils/csrf.cjs.map +1 -1
- package/dist/utils/csrf.d.ts +1 -72
- package/dist/utils/csrf.js +1 -142
- package/dist/utils/csrf.js.map +1 -1
- package/dist/utils/errors/ErrorCodes.cjs +6 -76
- package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
- package/dist/utils/errors/ErrorCodes.d.ts +1 -45
- package/dist/utils/errors/ErrorCodes.js +1 -84
- package/dist/utils/errors/ErrorCodes.js.map +1 -1
- package/dist/utils/errors.cjs +15 -344
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +1 -183
- package/dist/utils/errors.js +1 -352
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.cjs +5 -374
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.d.ts +2 -189
- package/dist/utils/logger.js +1 -379
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.types.cjs +3 -12
- package/dist/utils/logger.types.cjs.map +1 -1
- package/dist/utils/logger.types.d.ts +2 -57
- package/dist/utils/logger.types.js +1 -10
- package/dist/utils/logger.types.js.map +1 -1
- package/dist/utils/monitoring.cjs +11 -302
- package/dist/utils/monitoring.cjs.map +1 -1
- package/dist/utils/monitoring.d.ts +1 -163
- package/dist/utils/monitoring.js +1 -294
- package/dist/utils/monitoring.js.map +1 -1
- package/dist/utils/performance.cjs +5 -352
- package/dist/utils/performance.cjs.map +1 -1
- package/dist/utils/performance.d.ts +2 -246
- package/dist/utils/performance.js +1 -354
- package/dist/utils/performance.js.map +1 -1
- package/dist/utils/resourceLoader.cjs +5 -303
- package/dist/utils/resourceLoader.cjs.map +1 -1
- package/dist/utils/resourceLoader.d.ts +2 -130
- package/dist/utils/resourceLoader.js +1 -305
- package/dist/utils/resourceLoader.js.map +1 -1
- package/dist/utils/runtimeSecurity.cjs +2 -140
- package/dist/utils/runtimeSecurity.cjs.map +1 -1
- package/dist/utils/runtimeSecurity.d.ts +2 -104
- package/dist/utils/runtimeSecurity.js +1 -141
- package/dist/utils/runtimeSecurity.js.map +1 -1
- package/dist/utils/security.cjs +3 -314
- package/dist/utils/security.cjs.map +1 -1
- package/dist/utils/security.d.ts +2 -80
- package/dist/utils/security.js +1 -311
- package/dist/utils/security.js.map +1 -1
- package/dist/utils/traceId.cjs +10 -111
- package/dist/utils/traceId.cjs.map +1 -1
- package/dist/utils/traceId.d.ts +1 -63
- package/dist/utils/traceId.js +1 -116
- package/dist/utils/traceId.js.map +1 -1
- package/dist/utils/validation.cjs +3 -173
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.ts +2 -110
- package/dist/utils/validation.js +1 -175
- package/dist/utils/validation.js.map +1 -1
- package/package.json +98 -13
- package/dist/core/ui-adapter/adapters.cjs +0 -45
- package/dist/core/ui-adapter/adapters.cjs.map +0 -1
- package/dist/core/ui-adapter/adapters.d.ts +0 -4
- package/dist/core/ui-adapter/adapters.js +0 -27
- package/dist/core/ui-adapter/adapters.js.map +0 -1
- package/dist/core/ui-adapter/index.cjs +0 -21
- package/dist/core/ui-adapter/index.cjs.map +0 -1
- package/dist/core/ui-adapter/index.d.ts +0 -2
- package/dist/core/ui-adapter/index.js +0 -3
- package/dist/core/ui-adapter/index.js.map +0 -1
- package/dist/core/ui-adapter/types.cjs.map +0 -1
- package/dist/core/ui-adapter/types.d.ts +0 -24
- package/dist/core/ui-adapter/types.js.map +0 -1
- package/dist/request/adapter/RequestAdapter.cjs +0 -78
- package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
- package/dist/request/adapter/axiosAdapter.cjs +0 -164
- package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
- package/dist/request/adapter/fetchAdapter.cjs +0 -134
- package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
- package/dist/request/adapter/index.cjs +0 -80
- package/dist/request/adapter/index.cjs.map +0 -1
- package/dist/request/adapter/kyAdapter.cjs +0 -191
- package/dist/request/adapter/kyAdapter.cjs.map +0 -1
- package/dist/request/adapter/undiciAdapter.cjs +0 -213
- package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
- package/dist/request/core/RequestClient.cjs +0 -558
- package/dist/request/core/RequestClient.cjs.map +0 -1
- package/dist/request/core/index.cjs +0 -15
- package/dist/request/core/index.cjs.map +0 -1
- package/dist/request/index.cjs +0 -149
- package/dist/request/index.cjs.map +0 -1
- package/dist/request/plugin/RequestPlugin.cjs +0 -218
- package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
- package/dist/request/plugin/cache.cjs +0 -269
- package/dist/request/plugin/cache.cjs.map +0 -1
- package/dist/request/plugin/csrfPlugin.cjs +0 -40
- package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
- package/dist/request/plugin/index.cjs +0 -53
- package/dist/request/plugin/index.cjs.map +0 -1
- package/dist/request/plugin/monitoring.cjs +0 -216
- package/dist/request/plugin/monitoring.cjs.map +0 -1
- package/dist/request/plugin/queue.cjs +0 -140
- package/dist/request/plugin/queue.cjs.map +0 -1
- package/dist/request/plugin/retry.cjs +0 -98
- package/dist/request/plugin/retry.cjs.map +0 -1
- package/dist/request/plugin/validation.cjs +0 -121
- package/dist/request/plugin/validation.cjs.map +0 -1
- package/dist/request/runtime/RequestContext.cjs +0 -77
- package/dist/request/runtime/RequestContext.cjs.map +0 -1
- package/dist/request/runtime/index.cjs +0 -32
- package/dist/request/runtime/index.cjs.map +0 -1
- package/dist/request/types.cjs +0 -112
- package/dist/request/types.cjs.map +0 -1
- package/dist/request/utils/RequestQueueManager.cjs +0 -168
- package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
- package/dist/request/utils/dependencyCheck.cjs +0 -237
- package/dist/request/utils/dependencyCheck.cjs.map +0 -1
- package/dist/request/utils/index.cjs +0 -30
- package/dist/request/utils/index.cjs.map +0 -1
- package/dist/request.umd.js +0 -5392
- package/dist/request.umd.js.map +0 -1
- /package/dist/{core/ui-adapter → kernel}/types.cjs +0 -0
- /package/dist/{core/ui-adapter → kernel}/types.js +0 -0
|
@@ -1,86 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
* 错误码定义
|
|
3
|
-
* 提供统一的错误码和错误信息映射
|
|
4
|
-
*/ /**
|
|
5
|
-
* 错误码枚举
|
|
6
|
-
*/ export var ErrorCode = /*#__PURE__*/ function(ErrorCode) {
|
|
7
|
-
// 框架启动错误 (1000-1999)
|
|
8
|
-
ErrorCode[ErrorCode["CONTAINER_NOT_FOUND"] = 1001] = "CONTAINER_NOT_FOUND";
|
|
9
|
-
ErrorCode[ErrorCode["STARTUP_FAILED"] = 1002] = "STARTUP_FAILED";
|
|
10
|
-
ErrorCode[ErrorCode["INITIALIZATION_FAILED"] = 1003] = "INITIALIZATION_FAILED";
|
|
11
|
-
// 配置错误 (2000-2999)
|
|
12
|
-
ErrorCode[ErrorCode["CONFIG_LOAD_FAILED"] = 2001] = "CONFIG_LOAD_FAILED";
|
|
13
|
-
ErrorCode[ErrorCode["CONFIG_VALIDATION_FAILED"] = 2002] = "CONFIG_VALIDATION_FAILED";
|
|
14
|
-
ErrorCode[ErrorCode["CONFIG_FILE_NOT_FOUND"] = 2003] = "CONFIG_FILE_NOT_FOUND";
|
|
15
|
-
// 插件错误 (3000-3999)
|
|
16
|
-
ErrorCode[ErrorCode["PLUGIN_REGISTER_FAILED"] = 3001] = "PLUGIN_REGISTER_FAILED";
|
|
17
|
-
ErrorCode[ErrorCode["PLUGIN_EXECUTION_FAILED"] = 3002] = "PLUGIN_EXECUTION_FAILED";
|
|
18
|
-
ErrorCode[ErrorCode["PLUGIN_PERMISSION_DENIED"] = 3003] = "PLUGIN_PERMISSION_DENIED";
|
|
19
|
-
// 状态管理错误 (4000-4999)
|
|
20
|
-
ErrorCode[ErrorCode["STATE_MANAGER_NOT_INITIALIZED"] = 4001] = "STATE_MANAGER_NOT_INITIALIZED";
|
|
21
|
-
ErrorCode[ErrorCode["STATE_INSTANCE_NOT_FOUND"] = 4002] = "STATE_INSTANCE_NOT_FOUND";
|
|
22
|
-
ErrorCode[ErrorCode["STATE_SCOPE_NOT_FOUND"] = 4003] = "STATE_SCOPE_NOT_FOUND";
|
|
23
|
-
// 存储错误 (5000-5999)
|
|
24
|
-
ErrorCode[ErrorCode["STORAGE_INITIALIZATION_FAILED"] = 5001] = "STORAGE_INITIALIZATION_FAILED";
|
|
25
|
-
ErrorCode[ErrorCode["STORAGE_OPERATION_FAILED"] = 5002] = "STORAGE_OPERATION_FAILED";
|
|
26
|
-
// 网络错误 (6000-6999)
|
|
27
|
-
ErrorCode[ErrorCode["NETWORK_ERROR"] = 6001] = "NETWORK_ERROR";
|
|
28
|
-
ErrorCode[ErrorCode["NETWORK_TIMEOUT"] = 6002] = "NETWORK_TIMEOUT";
|
|
29
|
-
// 未知错误 (9999)
|
|
30
|
-
ErrorCode[ErrorCode["UNKNOWN_ERROR"] = 9999] = "UNKNOWN_ERROR";
|
|
31
|
-
return ErrorCode;
|
|
32
|
-
}({});
|
|
33
|
-
/**
|
|
34
|
-
* 错误信息映射
|
|
35
|
-
*/ export const ErrorMessages = {
|
|
36
|
-
[1001]: '未找到挂载容器,请确保页面中存在 id="root" 的元素或通过 container 选项指定容器',
|
|
37
|
-
[1002]: '框架启动失败',
|
|
38
|
-
[1003]: '初始化失败',
|
|
39
|
-
[2001]: '配置加载失败',
|
|
40
|
-
[2002]: '配置验证失败',
|
|
41
|
-
[2003]: '配置文件未找到',
|
|
42
|
-
[3001]: '插件注册失败',
|
|
43
|
-
[3002]: '插件执行失败',
|
|
44
|
-
[3003]: '插件权限不足',
|
|
45
|
-
[4001]: '状态管理器未初始化',
|
|
46
|
-
[4002]: '状态实例未找到',
|
|
47
|
-
[4003]: '状态作用域未找到',
|
|
48
|
-
[5001]: '存储初始化失败',
|
|
49
|
-
[5002]: '存储操作失败',
|
|
50
|
-
[6001]: '网络错误',
|
|
51
|
-
[6002]: '网络请求超时',
|
|
52
|
-
[9999]: '未知错误'
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* 获取错误信息
|
|
56
|
-
*
|
|
57
|
-
* @param code - 错误码
|
|
58
|
-
* @returns 错误信息
|
|
59
|
-
*/ export function getErrorMessage(code) {
|
|
60
|
-
return ErrorMessages[code] || ErrorMessages[9999];
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* 获取用户友好的错误提示
|
|
64
|
-
*
|
|
65
|
-
* @param code - 错误码
|
|
66
|
-
* @param details - 详细信息
|
|
67
|
-
* @returns 用户友好的错误提示
|
|
68
|
-
*/ export function getUserFriendlyMessage(code, details) {
|
|
69
|
-
const baseMessage = getErrorMessage(code);
|
|
70
|
-
if (details) {
|
|
71
|
-
return `${baseMessage}: ${details}`;
|
|
72
|
-
}
|
|
73
|
-
// 根据错误码提供修复建议
|
|
74
|
-
const suggestions = {
|
|
75
|
-
[1001]: '请检查HTML中是否存在id="root"的元素,或通过container选项指定容器',
|
|
76
|
-
[2002]: '请检查配置文件格式是否正确,参考文档进行配置',
|
|
77
|
-
[3003]: '请检查插件权限配置,确保插件有足够的权限'
|
|
78
|
-
};
|
|
79
|
-
const suggestion = suggestions[code];
|
|
80
|
-
if (suggestion) {
|
|
81
|
-
return `${baseMessage}\n建议: ${suggestion}`;
|
|
82
|
-
}
|
|
83
|
-
return baseMessage;
|
|
84
|
-
}
|
|
1
|
+
export { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage } from "@vlian/utils";
|
|
85
2
|
|
|
86
3
|
//# sourceMappingURL=ErrorCodes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/errors/ErrorCodes.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/errors/ErrorCodes.ts"],"sourcesContent":["export { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage } from '@vlian/utils';\n"],"names":["ErrorCode","ErrorMessages","getErrorMessage","getUserFriendlyMessage"],"mappings":"AAAA,SAASA,SAAS,EAAEC,aAAa,EAAEC,eAAe,EAAEC,sBAAsB,QAAQ,eAAe"}
|
package/dist/utils/errors.cjs
CHANGED
|
@@ -10,377 +10,48 @@ function _export(target, all) {
|
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
12
|
get ConfigError () {
|
|
13
|
-
return ConfigError;
|
|
13
|
+
return _utils.ConfigError;
|
|
14
14
|
},
|
|
15
15
|
get ErrorCode () {
|
|
16
|
-
return
|
|
16
|
+
return _utils.ErrorCode;
|
|
17
17
|
},
|
|
18
18
|
get ErrorMessages () {
|
|
19
|
-
return
|
|
19
|
+
return _utils.ErrorMessages;
|
|
20
20
|
},
|
|
21
21
|
get ErrorSeverity () {
|
|
22
|
-
return ErrorSeverity;
|
|
22
|
+
return _utils.ErrorSeverity;
|
|
23
23
|
},
|
|
24
24
|
get ErrorType () {
|
|
25
|
-
return ErrorType;
|
|
25
|
+
return _utils.ErrorType;
|
|
26
26
|
},
|
|
27
27
|
get FrameworkError () {
|
|
28
|
-
return FrameworkError;
|
|
28
|
+
return _utils.FrameworkError;
|
|
29
29
|
},
|
|
30
30
|
get InitializationError () {
|
|
31
|
-
return InitializationError;
|
|
31
|
+
return _utils.InitializationError;
|
|
32
32
|
},
|
|
33
33
|
get NetworkError () {
|
|
34
|
-
return NetworkError;
|
|
34
|
+
return _utils.NetworkError;
|
|
35
35
|
},
|
|
36
36
|
get SecurityError () {
|
|
37
|
-
return SecurityError;
|
|
37
|
+
return _utils.SecurityError;
|
|
38
38
|
},
|
|
39
39
|
get StorageError () {
|
|
40
|
-
return StorageError;
|
|
40
|
+
return _utils.StorageError;
|
|
41
41
|
},
|
|
42
42
|
get ValidationError () {
|
|
43
|
-
return ValidationError;
|
|
43
|
+
return _utils.ValidationError;
|
|
44
44
|
},
|
|
45
45
|
get errorUtils () {
|
|
46
|
-
return errorUtils;
|
|
46
|
+
return _utils.errorUtils;
|
|
47
47
|
},
|
|
48
48
|
get getErrorMessage () {
|
|
49
|
-
return
|
|
49
|
+
return _utils.getErrorMessage;
|
|
50
50
|
},
|
|
51
51
|
get getUserFriendlyMessage () {
|
|
52
|
-
return
|
|
52
|
+
return _utils.getUserFriendlyMessage;
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
|
-
const
|
|
56
|
-
function _define_property(obj, key, value) {
|
|
57
|
-
if (key in obj) {
|
|
58
|
-
Object.defineProperty(obj, key, {
|
|
59
|
-
value: value,
|
|
60
|
-
enumerable: true,
|
|
61
|
-
configurable: true,
|
|
62
|
-
writable: true
|
|
63
|
-
});
|
|
64
|
-
} else {
|
|
65
|
-
obj[key] = value;
|
|
66
|
-
}
|
|
67
|
-
return obj;
|
|
68
|
-
}
|
|
69
|
-
var ErrorType = /*#__PURE__*/ function(ErrorType) {
|
|
70
|
-
/**
|
|
71
|
-
* 初始化错误
|
|
72
|
-
*/ ErrorType["INITIALIZATION"] = "INITIALIZATION";
|
|
73
|
-
/**
|
|
74
|
-
* 配置错误
|
|
75
|
-
*/ ErrorType["CONFIG"] = "CONFIG";
|
|
76
|
-
/**
|
|
77
|
-
* 存储错误
|
|
78
|
-
*/ ErrorType["STORAGE"] = "STORAGE";
|
|
79
|
-
/**
|
|
80
|
-
* 网络错误
|
|
81
|
-
*/ ErrorType["NETWORK"] = "NETWORK";
|
|
82
|
-
/**
|
|
83
|
-
* 验证错误
|
|
84
|
-
*/ ErrorType["VALIDATION"] = "VALIDATION";
|
|
85
|
-
/**
|
|
86
|
-
* 安全错误
|
|
87
|
-
*/ ErrorType["SECURITY"] = "SECURITY";
|
|
88
|
-
/**
|
|
89
|
-
* 运行时错误
|
|
90
|
-
*/ ErrorType["RUNTIME"] = "RUNTIME";
|
|
91
|
-
/**
|
|
92
|
-
* 未知错误
|
|
93
|
-
*/ ErrorType["UNKNOWN"] = "UNKNOWN";
|
|
94
|
-
return ErrorType;
|
|
95
|
-
}({});
|
|
96
|
-
var ErrorSeverity = /*#__PURE__*/ function(ErrorSeverity) {
|
|
97
|
-
/**
|
|
98
|
-
* 低 - 不影响核心功能
|
|
99
|
-
*/ ErrorSeverity["LOW"] = "LOW";
|
|
100
|
-
/**
|
|
101
|
-
* 中 - 影响部分功能
|
|
102
|
-
*/ ErrorSeverity["MEDIUM"] = "MEDIUM";
|
|
103
|
-
/**
|
|
104
|
-
* 高 - 影响核心功能
|
|
105
|
-
*/ ErrorSeverity["HIGH"] = "HIGH";
|
|
106
|
-
/**
|
|
107
|
-
* 严重 - 导致应用无法使用
|
|
108
|
-
*/ ErrorSeverity["CRITICAL"] = "CRITICAL";
|
|
109
|
-
return ErrorSeverity;
|
|
110
|
-
}({});
|
|
111
|
-
let FrameworkError = class FrameworkError extends Error {
|
|
112
|
-
/**
|
|
113
|
-
* 转换为 JSON
|
|
114
|
-
*/ toJSON() {
|
|
115
|
-
return {
|
|
116
|
-
name: this.name,
|
|
117
|
-
message: this.message,
|
|
118
|
-
type: this.type,
|
|
119
|
-
severity: this.severity,
|
|
120
|
-
code: this.code,
|
|
121
|
-
recoverable: this.recoverable,
|
|
122
|
-
context: this.context,
|
|
123
|
-
stack: this.stack,
|
|
124
|
-
originalError: this.originalError ? {
|
|
125
|
-
name: this.originalError.name,
|
|
126
|
-
message: this.originalError.message,
|
|
127
|
-
stack: this.originalError.stack
|
|
128
|
-
} : undefined
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
constructor(message, type = "UNKNOWN", severity = "MEDIUM", options){
|
|
132
|
-
super(message), /**
|
|
133
|
-
* 错误类型
|
|
134
|
-
*/ _define_property(this, "type", void 0), /**
|
|
135
|
-
* 错误严重程度
|
|
136
|
-
*/ _define_property(this, "severity", void 0), /**
|
|
137
|
-
* 错误代码
|
|
138
|
-
*/ _define_property(this, "code", void 0), /**
|
|
139
|
-
* 原始错误
|
|
140
|
-
*/ _define_property(this, "originalError", void 0), /**
|
|
141
|
-
* 错误上下文
|
|
142
|
-
*/ _define_property(this, "context", void 0), /**
|
|
143
|
-
* 是否可恢复
|
|
144
|
-
*/ _define_property(this, "recoverable", void 0);
|
|
145
|
-
this.name = 'FrameworkError';
|
|
146
|
-
this.type = type;
|
|
147
|
-
this.severity = severity;
|
|
148
|
-
this.code = options?.code || `${type}_ERROR`;
|
|
149
|
-
this.originalError = options?.originalError;
|
|
150
|
-
this.context = options?.context;
|
|
151
|
-
this.recoverable = options?.recoverable ?? false;
|
|
152
|
-
// 保持正确的堆栈跟踪
|
|
153
|
-
if (Error.captureStackTrace) {
|
|
154
|
-
Error.captureStackTrace(this, FrameworkError);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
let InitializationError = class InitializationError extends FrameworkError {
|
|
159
|
-
constructor(message, originalError, context, errorCode){
|
|
160
|
-
const code = errorCode || _ErrorCodes.ErrorCode.INITIALIZATION_FAILED;
|
|
161
|
-
super((0, _ErrorCodes.getUserFriendlyMessage)(code, message), "INITIALIZATION", "CRITICAL", {
|
|
162
|
-
code: _ErrorCodes.ErrorCode[code],
|
|
163
|
-
originalError,
|
|
164
|
-
context,
|
|
165
|
-
recoverable: false
|
|
166
|
-
});
|
|
167
|
-
this.name = 'InitializationError';
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
let ConfigError = class ConfigError extends FrameworkError {
|
|
171
|
-
constructor(message, originalError, context, errorCode){
|
|
172
|
-
const code = errorCode || _ErrorCodes.ErrorCode.CONFIG_LOAD_FAILED;
|
|
173
|
-
super((0, _ErrorCodes.getUserFriendlyMessage)(code, message), "CONFIG", "HIGH", {
|
|
174
|
-
code: _ErrorCodes.ErrorCode[code],
|
|
175
|
-
originalError,
|
|
176
|
-
context,
|
|
177
|
-
recoverable: true
|
|
178
|
-
});
|
|
179
|
-
this.name = 'ConfigError';
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
let StorageError = class StorageError extends FrameworkError {
|
|
183
|
-
constructor(message, originalError, context){
|
|
184
|
-
super(message, "STORAGE", "MEDIUM", {
|
|
185
|
-
code: 'STORAGE_ERROR',
|
|
186
|
-
originalError,
|
|
187
|
-
context,
|
|
188
|
-
recoverable: true
|
|
189
|
-
});
|
|
190
|
-
this.name = 'StorageError';
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
let NetworkError = class NetworkError extends FrameworkError {
|
|
194
|
-
constructor(message, originalError, context, errorCode){
|
|
195
|
-
const code = errorCode || _ErrorCodes.ErrorCode.NETWORK_ERROR;
|
|
196
|
-
super((0, _ErrorCodes.getUserFriendlyMessage)(code, message), "NETWORK", "MEDIUM", {
|
|
197
|
-
code: _ErrorCodes.ErrorCode[code],
|
|
198
|
-
originalError,
|
|
199
|
-
context,
|
|
200
|
-
recoverable: true
|
|
201
|
-
});
|
|
202
|
-
this.name = 'NetworkError';
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
let ValidationError = class ValidationError extends FrameworkError {
|
|
206
|
-
constructor(message, context){
|
|
207
|
-
super(message, "VALIDATION", "LOW", {
|
|
208
|
-
code: 'VALIDATION_ERROR',
|
|
209
|
-
context,
|
|
210
|
-
recoverable: true
|
|
211
|
-
});
|
|
212
|
-
this.name = 'ValidationError';
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
let SecurityError = class SecurityError extends FrameworkError {
|
|
216
|
-
constructor(message, originalError, context){
|
|
217
|
-
super(message, "SECURITY", "HIGH", {
|
|
218
|
-
code: 'SECURITY_ERROR',
|
|
219
|
-
originalError,
|
|
220
|
-
context,
|
|
221
|
-
recoverable: false
|
|
222
|
-
});
|
|
223
|
-
this.name = 'SecurityError';
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
const errorUtils = {
|
|
227
|
-
/**
|
|
228
|
-
* 安全地将未知错误转换为可展示的消息
|
|
229
|
-
* 避免 String(error) 对 null-prototype 对象再次抛错
|
|
230
|
-
*/ getSafeErrorMessage (error) {
|
|
231
|
-
if (typeof error === 'string') {
|
|
232
|
-
return error;
|
|
233
|
-
}
|
|
234
|
-
if (typeof error === 'number' || typeof error === 'boolean' || typeof error === 'bigint' || typeof error === 'symbol' || error === null || error === undefined) {
|
|
235
|
-
try {
|
|
236
|
-
return String(error);
|
|
237
|
-
} catch {
|
|
238
|
-
return 'Unknown error';
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
if (typeof error === 'object') {
|
|
242
|
-
try {
|
|
243
|
-
const maybeMessage = error.message;
|
|
244
|
-
if (typeof maybeMessage === 'string' && maybeMessage.trim()) {
|
|
245
|
-
return maybeMessage;
|
|
246
|
-
}
|
|
247
|
-
} catch {
|
|
248
|
-
// ignore
|
|
249
|
-
}
|
|
250
|
-
try {
|
|
251
|
-
const json = JSON.stringify(error);
|
|
252
|
-
if (json) {
|
|
253
|
-
return json;
|
|
254
|
-
}
|
|
255
|
-
} catch {
|
|
256
|
-
// ignore
|
|
257
|
-
}
|
|
258
|
-
try {
|
|
259
|
-
return `Non-Error throwable: ${Object.prototype.toString.call(error)}`;
|
|
260
|
-
} catch {
|
|
261
|
-
return 'Non-Error throwable';
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
return String(error);
|
|
266
|
-
} catch {
|
|
267
|
-
return 'Unknown error';
|
|
268
|
-
}
|
|
269
|
-
},
|
|
270
|
-
/**
|
|
271
|
-
* 判断错误是否可恢复
|
|
272
|
-
*/ isRecoverable (error) {
|
|
273
|
-
if (error instanceof FrameworkError) {
|
|
274
|
-
return error.recoverable;
|
|
275
|
-
}
|
|
276
|
-
return false;
|
|
277
|
-
},
|
|
278
|
-
/**
|
|
279
|
-
* 获取错误类型
|
|
280
|
-
*/ getErrorType (error) {
|
|
281
|
-
if (error instanceof FrameworkError) {
|
|
282
|
-
return error.type;
|
|
283
|
-
}
|
|
284
|
-
return "UNKNOWN";
|
|
285
|
-
},
|
|
286
|
-
/**
|
|
287
|
-
* 获取错误严重程度
|
|
288
|
-
*/ getErrorSeverity (error) {
|
|
289
|
-
if (error instanceof FrameworkError) {
|
|
290
|
-
return error.severity;
|
|
291
|
-
}
|
|
292
|
-
return "MEDIUM";
|
|
293
|
-
},
|
|
294
|
-
/**
|
|
295
|
-
* 标准化错误对象
|
|
296
|
-
*/ normalizeError (error) {
|
|
297
|
-
if (error instanceof FrameworkError) {
|
|
298
|
-
return error;
|
|
299
|
-
}
|
|
300
|
-
if (error instanceof Error) {
|
|
301
|
-
return new FrameworkError(error.message, "UNKNOWN", "MEDIUM", {
|
|
302
|
-
originalError: error
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
return new FrameworkError(errorUtils.getSafeErrorMessage(error), "UNKNOWN", "MEDIUM");
|
|
306
|
-
},
|
|
307
|
-
/**
|
|
308
|
-
* 提取错误信息
|
|
309
|
-
*/ extractErrorInfo (error) {
|
|
310
|
-
const normalized = errorUtils.normalizeError(error);
|
|
311
|
-
return {
|
|
312
|
-
message: normalized.message,
|
|
313
|
-
type: normalized.type,
|
|
314
|
-
severity: normalized.severity,
|
|
315
|
-
code: normalized.code,
|
|
316
|
-
stack: normalized.stack
|
|
317
|
-
};
|
|
318
|
-
},
|
|
319
|
-
/**
|
|
320
|
-
* 获取错误修复建议
|
|
321
|
-
*
|
|
322
|
-
* 优化:根据错误类型和代码提供修复建议
|
|
323
|
-
*/ getErrorSuggestions (error) {
|
|
324
|
-
const normalized = errorUtils.normalizeError(error);
|
|
325
|
-
const suggestions = [];
|
|
326
|
-
// 根据错误代码提供建议
|
|
327
|
-
switch(normalized.code){
|
|
328
|
-
case 'CONTAINER_NOT_FOUND':
|
|
329
|
-
suggestions.push('请确保页面中存在 id="root" 的元素,或通过 container 选项指定挂载容器');
|
|
330
|
-
suggestions.push('检查 DOM 是否已加载完成,确保在 DOMContentLoaded 事件后调用 start()');
|
|
331
|
-
break;
|
|
332
|
-
case 'NETWORK_ERROR':
|
|
333
|
-
suggestions.push('检查网络连接是否正常');
|
|
334
|
-
suggestions.push('检查服务器是否正常运行');
|
|
335
|
-
suggestions.push('检查 CORS 配置是否正确');
|
|
336
|
-
break;
|
|
337
|
-
case 'TIMEOUT_ERROR':
|
|
338
|
-
suggestions.push('增加超时时间配置');
|
|
339
|
-
suggestions.push('检查网络连接是否稳定');
|
|
340
|
-
suggestions.push('检查服务器响应速度');
|
|
341
|
-
break;
|
|
342
|
-
case 'VALIDATION_ERROR':
|
|
343
|
-
suggestions.push('检查配置项是否符合要求');
|
|
344
|
-
suggestions.push('查看配置验证错误详情');
|
|
345
|
-
suggestions.push('参考配置文档确认配置格式');
|
|
346
|
-
break;
|
|
347
|
-
case 'INITIALIZATION_ERROR':
|
|
348
|
-
suggestions.push('检查初始化配置是否正确');
|
|
349
|
-
suggestions.push('查看初始化日志了解详细错误');
|
|
350
|
-
suggestions.push('尝试简化配置,逐步排查问题');
|
|
351
|
-
break;
|
|
352
|
-
default:
|
|
353
|
-
if (normalized.type === "SECURITY") {
|
|
354
|
-
suggestions.push('检查输入内容是否包含不安全字符');
|
|
355
|
-
suggestions.push('确保配置项来源可信');
|
|
356
|
-
suggestions.push('查看安全配置文档');
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
// 如果是可恢复的错误,提供恢复建议
|
|
360
|
-
if (normalized.recoverable) {
|
|
361
|
-
suggestions.push('此错误可以自动恢复,请稍后重试');
|
|
362
|
-
}
|
|
363
|
-
return suggestions;
|
|
364
|
-
},
|
|
365
|
-
/**
|
|
366
|
-
* 格式化错误信息(用于开发环境)
|
|
367
|
-
*
|
|
368
|
-
* 优化:提供更详细的错误信息,包括修复建议
|
|
369
|
-
*/ formatErrorForDev (error) {
|
|
370
|
-
const normalized = errorUtils.normalizeError(error);
|
|
371
|
-
const suggestions = errorUtils.getErrorSuggestions(error);
|
|
372
|
-
let message = `[${normalized.code}] ${normalized.message}`;
|
|
373
|
-
if (normalized.stack) {
|
|
374
|
-
message += `\n\n堆栈信息:\n${normalized.stack}`;
|
|
375
|
-
}
|
|
376
|
-
if (suggestions.length > 0) {
|
|
377
|
-
message += `\n\n修复建议:\n${suggestions.map((s, i)=>`${i + 1}. ${s}`).join('\n')}`;
|
|
378
|
-
}
|
|
379
|
-
if (normalized.context) {
|
|
380
|
-
message += `\n\n上下文信息:\n${JSON.stringify(normalized.context, null, 2)}`;
|
|
381
|
-
}
|
|
382
|
-
return message;
|
|
383
|
-
}
|
|
384
|
-
};
|
|
55
|
+
const _utils = require("@vlian/utils");
|
|
385
56
|
|
|
386
57
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["import { ErrorCode, getUserFriendlyMessage } from './errors/ErrorCodes';\n\n// 导出错误码相关类型和函数\nexport { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage } from './errors/ErrorCodes';\n\n/**\n * 错误类型枚举\n */\nexport enum ErrorType {\n /**\n * 初始化错误\n */\n INITIALIZATION = 'INITIALIZATION',\n /**\n * 配置错误\n */\n CONFIG = 'CONFIG',\n /**\n * 存储错误\n */\n STORAGE = 'STORAGE',\n /**\n * 网络错误\n */\n NETWORK = 'NETWORK',\n /**\n * 验证错误\n */\n VALIDATION = 'VALIDATION',\n /**\n * 安全错误\n */\n SECURITY = 'SECURITY',\n /**\n * 运行时错误\n */\n RUNTIME = 'RUNTIME',\n /**\n * 未知错误\n */\n UNKNOWN = 'UNKNOWN',\n}\n\n/**\n * 错误严重程度\n */\nexport enum ErrorSeverity {\n /**\n * 低 - 不影响核心功能\n */\n LOW = 'LOW',\n /**\n * 中 - 影响部分功能\n */\n MEDIUM = 'MEDIUM',\n /**\n * 高 - 影响核心功能\n */\n HIGH = 'HIGH',\n /**\n * 严重 - 导致应用无法使用\n */\n CRITICAL = 'CRITICAL',\n}\n\n/**\n * 框架错误基类\n */\nexport class FrameworkError extends Error {\n /**\n * 错误类型\n */\n public readonly type: ErrorType;\n\n /**\n * 错误严重程度\n */\n public readonly severity: ErrorSeverity;\n\n /**\n * 错误代码\n */\n public readonly code: string;\n\n /**\n * 原始错误\n */\n public readonly originalError?: Error;\n\n /**\n * 错误上下文\n */\n public readonly context?: Record<string, unknown>;\n\n /**\n * 是否可恢复\n */\n public readonly recoverable: boolean;\n\n constructor(\n message: string,\n type: ErrorType = ErrorType.UNKNOWN,\n severity: ErrorSeverity = ErrorSeverity.MEDIUM,\n options?: {\n code?: string;\n originalError?: Error;\n context?: Record<string, unknown>;\n recoverable?: boolean;\n }\n ) {\n super(message);\n this.name = 'FrameworkError';\n this.type = type;\n this.severity = severity;\n this.code = options?.code || `${type}_ERROR`;\n this.originalError = options?.originalError;\n this.context = options?.context;\n this.recoverable = options?.recoverable ?? false;\n\n // 保持正确的堆栈跟踪\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FrameworkError);\n }\n }\n\n /**\n * 转换为 JSON\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n type: this.type,\n severity: this.severity,\n code: this.code,\n recoverable: this.recoverable,\n context: this.context,\n stack: this.stack,\n originalError: this.originalError\n ? {\n name: this.originalError.name,\n message: this.originalError.message,\n stack: this.originalError.stack,\n }\n : undefined,\n };\n }\n}\n\n/**\n * 初始化错误\n */\nexport class InitializationError extends FrameworkError {\n constructor(\n message: string,\n originalError?: Error,\n context?: Record<string, unknown>,\n errorCode?: ErrorCode\n ) {\n const code = errorCode || ErrorCode.INITIALIZATION_FAILED;\n super(getUserFriendlyMessage(code, message), ErrorType.INITIALIZATION, ErrorSeverity.CRITICAL, {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: false,\n });\n this.name = 'InitializationError';\n }\n}\n\n/**\n * 配置错误\n */\nexport class ConfigError extends FrameworkError {\n constructor(\n message: string,\n originalError?: Error,\n context?: Record<string, unknown>,\n errorCode?: ErrorCode\n ) {\n const code = errorCode || ErrorCode.CONFIG_LOAD_FAILED;\n super(getUserFriendlyMessage(code, message), ErrorType.CONFIG, ErrorSeverity.HIGH, {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: true,\n });\n this.name = 'ConfigError';\n }\n}\n\n/**\n * 存储错误\n */\nexport class StorageError extends FrameworkError {\n constructor(message: string, originalError?: Error, context?: Record<string, unknown>) {\n super(message, ErrorType.STORAGE, ErrorSeverity.MEDIUM, {\n code: 'STORAGE_ERROR',\n originalError,\n context,\n recoverable: true,\n });\n this.name = 'StorageError';\n }\n}\n\n/**\n * 网络错误\n */\nexport class NetworkError extends FrameworkError {\n constructor(\n message: string,\n originalError?: Error,\n context?: Record<string, unknown>,\n errorCode?: ErrorCode\n ) {\n const code = errorCode || ErrorCode.NETWORK_ERROR;\n super(getUserFriendlyMessage(code, message), ErrorType.NETWORK, ErrorSeverity.MEDIUM, {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: true,\n });\n this.name = 'NetworkError';\n }\n}\n\n/**\n * 验证错误\n */\nexport class ValidationError extends FrameworkError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, ErrorType.VALIDATION, ErrorSeverity.LOW, {\n code: 'VALIDATION_ERROR',\n context,\n recoverable: true,\n });\n this.name = 'ValidationError';\n }\n}\n\n/**\n * 安全错误\n */\nexport class SecurityError extends FrameworkError {\n constructor(message: string, originalError?: Error, context?: Record<string, unknown>) {\n super(message, ErrorType.SECURITY, ErrorSeverity.HIGH, {\n code: 'SECURITY_ERROR',\n originalError,\n context,\n recoverable: false,\n });\n this.name = 'SecurityError';\n }\n}\n\n/**\n * 错误处理工具函数\n */\nexport const errorUtils = {\n /**\n * 安全地将未知错误转换为可展示的消息\n * 避免 String(error) 对 null-prototype 对象再次抛错\n */\n getSafeErrorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n\n if (\n typeof error === 'number' ||\n typeof error === 'boolean' ||\n typeof error === 'bigint' ||\n typeof error === 'symbol' ||\n error === null ||\n error === undefined\n ) {\n try {\n return String(error);\n } catch {\n return 'Unknown error';\n }\n }\n\n if (typeof error === 'object') {\n try {\n const maybeMessage = (error as { message?: unknown }).message;\n if (typeof maybeMessage === 'string' && maybeMessage.trim()) {\n return maybeMessage;\n }\n } catch {\n // ignore\n }\n\n try {\n const json = JSON.stringify(error);\n if (json) {\n return json;\n }\n } catch {\n // ignore\n }\n\n try {\n return `Non-Error throwable: ${Object.prototype.toString.call(error)}`;\n } catch {\n return 'Non-Error throwable';\n }\n }\n\n try {\n return String(error);\n } catch {\n return 'Unknown error';\n }\n },\n\n /**\n * 判断错误是否可恢复\n */\n isRecoverable(error: unknown): boolean {\n if (error instanceof FrameworkError) {\n return error.recoverable;\n }\n return false;\n },\n\n /**\n * 获取错误类型\n */\n getErrorType(error: unknown): ErrorType {\n if (error instanceof FrameworkError) {\n return error.type;\n }\n return ErrorType.UNKNOWN;\n },\n\n /**\n * 获取错误严重程度\n */\n getErrorSeverity(error: unknown): ErrorSeverity {\n if (error instanceof FrameworkError) {\n return error.severity;\n }\n return ErrorSeverity.MEDIUM;\n },\n\n /**\n * 标准化错误对象\n */\n normalizeError(error: unknown): FrameworkError {\n if (error instanceof FrameworkError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new FrameworkError(error.message, ErrorType.UNKNOWN, ErrorSeverity.MEDIUM, {\n originalError: error,\n });\n }\n\n return new FrameworkError(errorUtils.getSafeErrorMessage(error), ErrorType.UNKNOWN, ErrorSeverity.MEDIUM);\n },\n\n /**\n * 提取错误信息\n */\n extractErrorInfo(error: unknown): {\n message: string;\n type: ErrorType;\n severity: ErrorSeverity;\n code: string;\n stack?: string;\n } {\n const normalized = errorUtils.normalizeError(error);\n return {\n message: normalized.message,\n type: normalized.type,\n severity: normalized.severity,\n code: normalized.code,\n stack: normalized.stack,\n };\n },\n\n /**\n * 获取错误修复建议\n * \n * 优化:根据错误类型和代码提供修复建议\n */\n getErrorSuggestions(error: unknown): string[] {\n const normalized = errorUtils.normalizeError(error);\n const suggestions: string[] = [];\n\n // 根据错误代码提供建议\n switch (normalized.code) {\n case 'CONTAINER_NOT_FOUND':\n suggestions.push('请确保页面中存在 id=\"root\" 的元素,或通过 container 选项指定挂载容器');\n suggestions.push('检查 DOM 是否已加载完成,确保在 DOMContentLoaded 事件后调用 start()');\n break;\n case 'NETWORK_ERROR':\n suggestions.push('检查网络连接是否正常');\n suggestions.push('检查服务器是否正常运行');\n suggestions.push('检查 CORS 配置是否正确');\n break;\n case 'TIMEOUT_ERROR':\n suggestions.push('增加超时时间配置');\n suggestions.push('检查网络连接是否稳定');\n suggestions.push('检查服务器响应速度');\n break;\n case 'VALIDATION_ERROR':\n suggestions.push('检查配置项是否符合要求');\n suggestions.push('查看配置验证错误详情');\n suggestions.push('参考配置文档确认配置格式');\n break;\n case 'INITIALIZATION_ERROR':\n suggestions.push('检查初始化配置是否正确');\n suggestions.push('查看初始化日志了解详细错误');\n suggestions.push('尝试简化配置,逐步排查问题');\n break;\n default:\n if (normalized.type === ErrorType.SECURITY) {\n suggestions.push('检查输入内容是否包含不安全字符');\n suggestions.push('确保配置项来源可信');\n suggestions.push('查看安全配置文档');\n }\n }\n\n // 如果是可恢复的错误,提供恢复建议\n if (normalized.recoverable) {\n suggestions.push('此错误可以自动恢复,请稍后重试');\n }\n\n return suggestions;\n },\n\n /**\n * 格式化错误信息(用于开发环境)\n * \n * 优化:提供更详细的错误信息,包括修复建议\n */\n formatErrorForDev(error: unknown): string {\n const normalized = errorUtils.normalizeError(error);\n const suggestions = errorUtils.getErrorSuggestions(error);\n \n let message = `[${normalized.code}] ${normalized.message}`;\n \n if (normalized.stack) {\n message += `\\n\\n堆栈信息:\\n${normalized.stack}`;\n }\n \n if (suggestions.length > 0) {\n message += `\\n\\n修复建议:\\n${suggestions.map((s, i) => `${i + 1}. ${s}`).join('\\n')}`;\n }\n \n if (normalized.context) {\n message += `\\n\\n上下文信息:\\n${JSON.stringify(normalized.context, null, 2)}`;\n }\n \n return message;\n },\n};\n"],"names":["ConfigError","ErrorCode","ErrorMessages","ErrorSeverity","ErrorType","FrameworkError","InitializationError","NetworkError","SecurityError","StorageError","ValidationError","errorUtils","getErrorMessage","getUserFriendlyMessage","Error","toJSON","name","message","type","severity","code","recoverable","context","stack","originalError","undefined","options","captureStackTrace","errorCode","INITIALIZATION_FAILED","CONFIG_LOAD_FAILED","NETWORK_ERROR","getSafeErrorMessage","error","String","maybeMessage","trim","json","JSON","stringify","Object","prototype","toString","call","isRecoverable","getErrorType","getErrorSeverity","normalizeError","extractErrorInfo","normalized","getErrorSuggestions","suggestions","push","formatErrorForDev","length","map","s","i","join"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/errors.ts"],"sourcesContent":["export {\n ErrorCode,\n ErrorMessages,\n getErrorMessage,\n getUserFriendlyMessage,\n ErrorType,\n ErrorSeverity,\n FrameworkError,\n InitializationError,\n ConfigError,\n StorageError,\n NetworkError,\n ValidationError,\n SecurityError,\n errorUtils,\n} from '@vlian/utils';\n"],"names":["ConfigError","ErrorCode","ErrorMessages","ErrorSeverity","ErrorType","FrameworkError","InitializationError","NetworkError","SecurityError","StorageError","ValidationError","errorUtils","getErrorMessage","getUserFriendlyMessage"],"mappings":";;;;;;;;;;;QASEA;eAAAA,kBAAW;;QARXC;eAAAA,gBAAS;;QACTC;eAAAA,oBAAa;;QAIbC;eAAAA,oBAAa;;QADbC;eAAAA,gBAAS;;QAETC;eAAAA,qBAAc;;QACdC;eAAAA,0BAAmB;;QAGnBC;eAAAA,mBAAY;;QAEZC;eAAAA,oBAAa;;QAHbC;eAAAA,mBAAY;;QAEZC;eAAAA,sBAAe;;QAEfC;eAAAA,iBAAU;;QAXVC;eAAAA,sBAAe;;QACfC;eAAAA,6BAAsB;;;uBAWjB"}
|