@vlian/framework 1.2.25 → 1.2.38
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/Test.cjs +2 -2
- package/dist/core/Test.cjs.map +1 -1
- package/dist/core/Test.js +1 -1
- package/dist/core/Test.js.map +1 -1
- package/dist/core/config/ConfigLoader.cjs +7 -7
- package/dist/core/config/ConfigLoader.cjs.map +1 -1
- package/dist/core/config/ConfigLoader.js +1 -1
- package/dist/core/config/ConfigLoader.js.map +1 -1
- package/dist/core/error/ErrorBoundary.cjs +6 -6
- package/dist/core/error/ErrorBoundary.cjs.map +1 -1
- package/dist/core/error/ErrorBoundary.d.ts +1 -1
- package/dist/core/error/ErrorBoundary.js +2 -2
- package/dist/core/error/ErrorBoundary.js.map +1 -1
- package/dist/core/error/ErrorHandler.cjs +19 -19
- package/dist/core/error/ErrorHandler.cjs.map +1 -1
- package/dist/core/error/ErrorHandler.d.ts +2 -2
- package/dist/core/error/ErrorHandler.js +2 -2
- package/dist/core/error/ErrorHandler.js.map +1 -1
- package/dist/core/event/AppEventBus.cjs +5 -5
- package/dist/core/event/AppEventBus.cjs.map +1 -1
- package/dist/core/event/AppEventBus.js +1 -1
- package/dist/core/event/AppEventBus.js.map +1 -1
- package/dist/core/initialization/InitializationErrorThrower.cjs.map +1 -1
- package/dist/core/initialization/InitializationErrorThrower.js.map +1 -1
- package/dist/core/initialization/initialization.cjs +3 -3
- package/dist/core/initialization/initialization.cjs.map +1 -1
- package/dist/core/initialization/initialization.d.ts +1 -1
- package/dist/core/initialization/initialization.js +1 -1
- package/dist/core/initialization/initialization.js.map +1 -1
- package/dist/core/initialization/initializationErrorState.cjs +2 -2
- package/dist/core/initialization/initializationErrorState.cjs.map +1 -1
- package/dist/core/initialization/initializationErrorState.d.ts +1 -1
- package/dist/core/initialization/initializationErrorState.js +1 -1
- package/dist/core/initialization/initializationErrorState.js.map +1 -1
- package/dist/core/kernel/defaultAdapters.cjs +14 -13
- package/dist/core/kernel/defaultAdapters.cjs.map +1 -1
- package/dist/core/kernel/defaultAdapters.js +2 -1
- package/dist/core/kernel/defaultAdapters.js.map +1 -1
- package/dist/core/kernel/types.d.ts +1 -1
- package/dist/core/kernel/types.js.map +1 -1
- package/dist/core/router/RouterManager.cjs +9 -9
- package/dist/core/router/RouterManager.cjs.map +1 -1
- package/dist/core/router/RouterManager.js +1 -1
- package/dist/core/router/RouterManager.js.map +1 -1
- package/dist/core/router/adapter/AdapterManager.cjs +10 -10
- package/dist/core/router/adapter/AdapterManager.cjs.map +1 -1
- package/dist/core/router/adapter/AdapterManager.js +1 -1
- package/dist/core/router/adapter/AdapterManager.js.map +1 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +4 -4
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
- package/dist/core/router/dynamic/DynamicRouteManager.cjs +8 -8
- package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +1 -1
- package/dist/core/router/dynamic/DynamicRouteManager.js +1 -1
- package/dist/core/router/dynamic/DynamicRouteManager.js.map +1 -1
- package/dist/core/router/errors/RouterError.cjs +4 -4
- package/dist/core/router/errors/RouterError.cjs.map +1 -1
- package/dist/core/router/errors/RouterError.d.ts +1 -1
- package/dist/core/router/errors/RouterError.js +1 -1
- package/dist/core/router/errors/RouterError.js.map +1 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +8 -8
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +1 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +1 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +11 -11
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
- package/dist/core/router/middleware/auth.cjs +4 -4
- package/dist/core/router/middleware/auth.cjs.map +1 -1
- package/dist/core/router/middleware/auth.js +1 -1
- package/dist/core/router/middleware/auth.js.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs +2 -2
- package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.js +2 -2
- package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
- package/dist/core/router/navigation/RouterNavigation.cjs +7 -7
- package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
- package/dist/core/router/navigation/RouterNavigation.js +1 -1
- package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
- package/dist/core/router/performance/RouteCache.cjs +7 -7
- package/dist/core/router/performance/RouteCache.cjs.map +1 -1
- package/dist/core/router/performance/RouteCache.js +1 -1
- package/dist/core/router/performance/RouteCache.js.map +1 -1
- package/dist/core/router/performance/RoutePreloader.cjs +6 -6
- package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
- package/dist/core/router/performance/RoutePreloader.js +1 -1
- package/dist/core/router/performance/RoutePreloader.js.map +1 -1
- package/dist/core/router/plugin/RouterPluginManager.cjs +8 -8
- package/dist/core/router/plugin/RouterPluginManager.cjs.map +1 -1
- package/dist/core/router/plugin/RouterPluginManager.js +1 -1
- package/dist/core/router/plugin/RouterPluginManager.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +6 -2
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.js +5 -1
- package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
- package/dist/core/router/utils/transform.cjs +13 -12
- package/dist/core/router/utils/transform.cjs.map +1 -1
- package/dist/core/router/utils/transform.js +2 -1
- package/dist/core/router/utils/transform.js.map +1 -1
- package/dist/core/router/validation/RouterConfigValidator.cjs +2 -2
- package/dist/core/router/validation/RouterConfigValidator.cjs.map +1 -1
- package/dist/core/router/validation/RouterConfigValidator.js +1 -1
- package/dist/core/router/validation/RouterConfigValidator.js.map +1 -1
- package/dist/core/router/version/RouteVersionManager.cjs +6 -6
- package/dist/core/router/version/RouteVersionManager.cjs.map +1 -1
- package/dist/core/router/version/RouteVersionManager.js +1 -1
- package/dist/core/router/version/RouteVersionManager.js.map +1 -1
- package/dist/core/splash/SplashScreen.cjs +4 -4
- package/dist/core/splash/SplashScreen.cjs.map +1 -1
- package/dist/core/splash/SplashScreen.js +1 -1
- package/dist/core/splash/SplashScreen.js.map +1 -1
- package/dist/core/startup/initializeServices.cjs +15 -15
- package/dist/core/startup/initializeServices.cjs.map +1 -1
- package/dist/core/startup/initializeServices.d.ts +2 -2
- package/dist/core/startup/initializeServices.js +3 -3
- 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 +3 -3
- package/dist/core/startup/renderApp.cjs.map +1 -1
- package/dist/core/startup/renderApp.d.ts +1 -1
- package/dist/core/startup/renderApp.js +2 -2
- package/dist/core/startup/renderApp.js.map +1 -1
- package/dist/core/startup/startApp.cjs +24 -24
- package/dist/core/startup/startApp.cjs.map +1 -1
- package/dist/core/startup/startApp.js +5 -5
- package/dist/core/startup/startApp.js.map +1 -1
- package/dist/core/types.d.ts +3 -3
- 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 +2150 -23125
- 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 +6 -0
- package/dist/kernel/types.cjs.map +1 -0
- package/dist/kernel/types.d.ts +72 -0
- package/dist/kernel/types.js +3 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/library/storage/encryption.cjs +12 -13
- package/dist/library/storage/encryption.cjs.map +1 -1
- package/dist/library/storage/encryption.js +1 -2
- package/dist/library/storage/encryption.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 +53 -326
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +19 -172
- package/dist/utils/errors.js +16 -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 +15 -24
- package/dist/lazy/index.cjs +0 -104
- package/dist/lazy/index.cjs.map +0 -1
- package/dist/lazy/index.d.ts +0 -19
- package/dist/lazy/index.js +0 -24
- package/dist/lazy/index.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
|
@@ -8,14 +8,13 @@ Object.defineProperty(exports, "EncryptionUtils", {
|
|
|
8
8
|
return EncryptionUtils;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
12
|
-
const _errors = require("../../utils/errors");
|
|
11
|
+
const _utils = require("@vlian/utils");
|
|
13
12
|
let EncryptionUtils = class EncryptionUtils {
|
|
14
13
|
/**
|
|
15
14
|
* 生成加密密钥
|
|
16
15
|
*/ static async generateKey() {
|
|
17
16
|
if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
|
|
18
|
-
throw new
|
|
17
|
+
throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
|
|
19
18
|
}
|
|
20
19
|
try {
|
|
21
20
|
return await window.crypto.subtle.generateKey({
|
|
@@ -26,14 +25,14 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
26
25
|
'decrypt'
|
|
27
26
|
]);
|
|
28
27
|
} catch (error) {
|
|
29
|
-
throw new
|
|
28
|
+
throw new _utils.StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
/**
|
|
33
32
|
* 使用 PBKDF2 派生密钥
|
|
34
33
|
*/ static async deriveKey(password, salt, iterations = 100000) {
|
|
35
34
|
if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
|
|
36
|
-
throw new
|
|
35
|
+
throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
|
|
37
36
|
}
|
|
38
37
|
try {
|
|
39
38
|
// 导入密码
|
|
@@ -58,7 +57,7 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
58
57
|
'decrypt'
|
|
59
58
|
]);
|
|
60
59
|
} catch (error) {
|
|
61
|
-
throw new
|
|
60
|
+
throw new _utils.StorageError('密钥派生失败', error instanceof Error ? error : undefined);
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
63
|
/**
|
|
@@ -68,7 +67,7 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
68
67
|
* 建议在生产环境中使用固定的 salt 或从安全存储中获取。
|
|
69
68
|
*/ static async importKey(keyString, salt) {
|
|
70
69
|
if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
|
|
71
|
-
throw new
|
|
70
|
+
throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
|
|
72
71
|
}
|
|
73
72
|
try {
|
|
74
73
|
// 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的
|
|
@@ -90,14 +89,14 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
90
89
|
// 使用 PBKDF2 派生密钥
|
|
91
90
|
return await this.deriveKey(keyString, keySalt);
|
|
92
91
|
} catch (error) {
|
|
93
|
-
throw new
|
|
92
|
+
throw new _utils.StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
/**
|
|
97
96
|
* 加密数据
|
|
98
97
|
*/ static async encrypt(data, key) {
|
|
99
98
|
if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
|
|
100
|
-
throw new
|
|
99
|
+
throw new _utils.StorageError('加密功能需要浏览器支持 Web Crypto API');
|
|
101
100
|
}
|
|
102
101
|
try {
|
|
103
102
|
const encoder = new TextEncoder();
|
|
@@ -115,14 +114,14 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
115
114
|
// 转换为 Base64
|
|
116
115
|
return btoa(String.fromCharCode(...combined));
|
|
117
116
|
} catch (error) {
|
|
118
|
-
throw new
|
|
117
|
+
throw new _utils.StorageError('加密数据失败', error instanceof Error ? error : undefined);
|
|
119
118
|
}
|
|
120
119
|
}
|
|
121
120
|
/**
|
|
122
121
|
* 解密数据
|
|
123
122
|
*/ static async decrypt(encryptedData, key) {
|
|
124
123
|
if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {
|
|
125
|
-
throw new
|
|
124
|
+
throw new _utils.StorageError('解密功能需要浏览器支持 Web Crypto API');
|
|
126
125
|
}
|
|
127
126
|
try {
|
|
128
127
|
// 从 Base64 解码
|
|
@@ -137,13 +136,13 @@ let EncryptionUtils = class EncryptionUtils {
|
|
|
137
136
|
const decoder = new TextDecoder();
|
|
138
137
|
return decoder.decode(decrypted);
|
|
139
138
|
} catch (error) {
|
|
140
|
-
throw new
|
|
139
|
+
throw new _utils.StorageError('解密数据失败', error instanceof Error ? error : undefined);
|
|
141
140
|
}
|
|
142
141
|
}
|
|
143
142
|
/**
|
|
144
143
|
* 检查字段是否需要加密
|
|
145
144
|
*/ static shouldEncrypt(key) {
|
|
146
|
-
return
|
|
145
|
+
return _utils.SecurityUtils.isSensitiveField(key);
|
|
147
146
|
}
|
|
148
147
|
};
|
|
149
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils
|
|
1
|
+
{"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils, StorageError } from '@vlian/utils';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["EncryptionUtils","generateKey","window","crypto","subtle","StorageError","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","SecurityUtils","isSensitiveField"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils
|
|
1
|
+
{"version":3,"sources":["../../../src/library/storage/encryption.ts"],"sourcesContent":["import { SecurityUtils, StorageError } from '@vlian/utils';\n\n/**\n * 加密配置\n */\nexport interface EncryptionConfig {\n /**\n * 是否启用加密\n */\n enabled: boolean;\n /**\n * 加密密钥(可选,如果不提供则使用默认密钥)\n */\n key?: string;\n}\n\n/**\n * 加密工具类\n */\nexport class EncryptionUtils {\n\n /**\n * 生成加密密钥\n */\n static async generateKey(): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n return await window.crypto.subtle.generateKey(\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('生成加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 使用 PBKDF2 派生密钥\n */\n static async deriveKey(\n password: string,\n salt: Uint8Array,\n iterations: number = 100000\n ): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 导入密码\n const encoder = new TextEncoder();\n const passwordKey = await window.crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits', 'deriveKey']\n );\n\n // 使用 PBKDF2 派生密钥\n // 确保 salt 是 BufferSource 类型(使用类型断言)\n const saltBuffer: BufferSource = (salt instanceof Uint8Array \n ? salt \n : new Uint8Array(salt)) as BufferSource;\n return await window.crypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: saltBuffer,\n iterations: iterations,\n hash: 'SHA-256',\n },\n passwordKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n false,\n ['encrypt', 'decrypt']\n );\n } catch (error) {\n throw new StorageError('密钥派生失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 从字符串导入密钥(使用 PBKDF2 派生)\n * \n * 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。\n * 建议在生产环境中使用固定的 salt 或从安全存储中获取。\n */\n static async importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 如果没有提供 salt,尝试从 sessionStorage 获取或生成一个固定的\n let keySalt = salt;\n \n if (!keySalt) {\n // 尝试从 sessionStorage 获取固定的 salt(用于当前会话)\n const saltKey = '__encryption_salt__';\n const storedSalt = sessionStorage.getItem(saltKey);\n \n if (storedSalt) {\n // 从存储中恢复 salt\n const saltArray = Uint8Array.from(JSON.parse(storedSalt));\n keySalt = saltArray;\n } else {\n // 生成新的 salt 并存储(用于当前会话)\n keySalt = window.crypto.getRandomValues(new Uint8Array(16));\n sessionStorage.setItem(saltKey, JSON.stringify(Array.from(keySalt)));\n }\n }\n \n // 使用 PBKDF2 派生密钥\n return await this.deriveKey(keyString, keySalt);\n } catch (error) {\n throw new StorageError('导入加密密钥失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 加密数据\n */\n static async encrypt(data: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('加密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n // 生成随机 IV\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n\n const encrypted = await window.crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n dataBuffer\n );\n\n // 将 IV 和加密数据组合\n const combined = new Uint8Array(iv.length + encrypted.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(encrypted), iv.length);\n\n // 转换为 Base64\n return btoa(String.fromCharCode(...combined));\n } catch (error) {\n throw new StorageError('加密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 解密数据\n */\n static async decrypt(encryptedData: string, key: CryptoKey): Promise<string> {\n if (typeof window === 'undefined' || !window.crypto || !window.crypto.subtle) {\n throw new StorageError('解密功能需要浏览器支持 Web Crypto API');\n }\n\n try {\n // 从 Base64 解码\n const combined = Uint8Array.from(atob(encryptedData), (c) => c.charCodeAt(0));\n\n // 提取 IV 和加密数据\n const iv = combined.slice(0, 12);\n const encrypted = combined.slice(12);\n\n const decrypted = await window.crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: iv,\n },\n key,\n encrypted\n );\n\n const decoder = new TextDecoder();\n return decoder.decode(decrypted);\n } catch (error) {\n throw new StorageError('解密数据失败', error instanceof Error ? error : undefined);\n }\n }\n\n /**\n * 检查字段是否需要加密\n */\n static shouldEncrypt(key: string): boolean {\n return SecurityUtils.isSensitiveField(key);\n }\n}\n"],"names":["SecurityUtils","StorageError","EncryptionUtils","generateKey","window","crypto","subtle","name","length","error","Error","undefined","deriveKey","password","salt","iterations","encoder","TextEncoder","passwordKey","importKey","encode","saltBuffer","Uint8Array","hash","keyString","keySalt","saltKey","storedSalt","sessionStorage","getItem","saltArray","from","JSON","parse","getRandomValues","setItem","stringify","Array","encrypt","data","key","dataBuffer","iv","encrypted","combined","byteLength","set","btoa","String","fromCharCode","decrypt","encryptedData","atob","c","charCodeAt","slice","decrypted","decoder","TextDecoder","decode","shouldEncrypt","isSensitiveField"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@vlian/request/adapter';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@vlian/request/core';
|
package/dist/request/index.d.ts
CHANGED
|
@@ -1,42 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* 请求库主入口
|
|
3
|
-
*
|
|
4
|
-
* 提供企业级、可扩展、类型安全的 HTTP 请求能力
|
|
5
|
-
*/
|
|
6
|
-
export type { RequestOptions, Response, RequestContext, RequestHeaders, RequestQuery, RequestBody, HttpMethod, RetryConfig, CacheConfig, ValidationConfig, AdapterCapabilities, } from './types';
|
|
7
|
-
export { RequestError, RequestErrorType, RequestErrorCode, } from './types';
|
|
8
|
-
export { RequestClient } from './core/RequestClient';
|
|
9
|
-
export type { RequestClientConfig } from './types';
|
|
10
|
-
export type { RequestAdapter, AdapterFactory } from './adapter/RequestAdapter';
|
|
11
|
-
export { adapterRegistry } from './adapter/RequestAdapter';
|
|
12
|
-
export { fetchAdapter, kyAdapter, axiosAdapter } from './adapter';
|
|
13
|
-
export declare function undiciAdapter(): Promise<import("./adapter").RequestAdapter>;
|
|
14
|
-
export type { RequestPlugin } from './plugin/RequestPlugin';
|
|
15
|
-
export { PluginManager, PluginLifecycleStage, PluginPriority } from './plugin/RequestPlugin';
|
|
16
|
-
export { createCachePlugin, createRetryPlugin, createValidationPlugin, createMonitoringPlugin, createQueuePlugin, } from './plugin';
|
|
17
|
-
export type { CachePluginConfig, RetryPluginConfig, ValidationPluginConfig, MonitoringPluginConfig, MonitoringEvent, MonitoringReporter, QueuePluginConfig, QueueTriggerCondition, } from './plugin';
|
|
18
|
-
export { MonitoringEventType } from './plugin';
|
|
19
|
-
export { createRequestContext, updateRequestContext, completeRequestContext, failRequestContext, cancelRequestContext, } from './runtime/RequestContext';
|
|
20
|
-
/**
|
|
21
|
-
* 创建请求客户端实例
|
|
22
|
-
*
|
|
23
|
-
* @param config - 请求客户端配置
|
|
24
|
-
* @returns 请求客户端实例
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* import { createRequestClient } from '@vlian/framework/request';
|
|
29
|
-
*
|
|
30
|
-
* const client = createRequestClient({
|
|
31
|
-
* baseURL: 'https://api.example.com',
|
|
32
|
-
* defaultTimeout: 5000,
|
|
33
|
-
* plugins: [
|
|
34
|
-
* createCachePlugin(),
|
|
35
|
-
* createRetryPlugin(),
|
|
36
|
-
* ],
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* const response = await client.get<User>('/user/1');
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export declare function createRequestClient(config?: import('./types').RequestClientConfig): Promise<import(".").RequestClient>;
|
|
1
|
+
export * from '@vlian/request';
|
|
@@ -8,8 +8,8 @@ import type { RequestPlugin } from './RequestPlugin';
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
11
|
-
* import { createRequestClient } from '@vlian/
|
|
12
|
-
* import { createCSRFPlugin } from '@vlian/
|
|
11
|
+
* import { createRequestClient } from '@vlian/request';
|
|
12
|
+
* import { createCSRFPlugin } from '@vlian/request/plugin';
|
|
13
13
|
*
|
|
14
14
|
* const client = await createRequestClient({
|
|
15
15
|
* plugins: [
|
|
@@ -69,8 +69,8 @@ export interface QueuePluginConfig {
|
|
|
69
69
|
*
|
|
70
70
|
* @example
|
|
71
71
|
* ```typescript
|
|
72
|
-
* import { createRequestClient } from '@vlian/
|
|
73
|
-
* import { createQueuePlugin } from '@vlian/
|
|
72
|
+
* import { createRequestClient } from '@vlian/request';
|
|
73
|
+
* import { createQueuePlugin } from '@vlian/request/plugin';
|
|
74
74
|
*
|
|
75
75
|
* const client = await createRequestClient({
|
|
76
76
|
* plugins: [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@vlian/request/plugin';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@vlian/request/runtime';
|