@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
|
@@ -19,7 +19,7 @@ _export(exports, {
|
|
|
19
19
|
return getAdapterManager;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
const
|
|
22
|
+
const _logger = require("@vlian/logger");
|
|
23
23
|
const _errors = require("../errors");
|
|
24
24
|
function _define_property(obj, key, value) {
|
|
25
25
|
if (key in obj) {
|
|
@@ -56,7 +56,7 @@ let AdapterManager = class AdapterManager {
|
|
|
56
56
|
};
|
|
57
57
|
// 注册适配器
|
|
58
58
|
this.adapters.set(registration.name, adapterRegistration);
|
|
59
|
-
|
|
59
|
+
_logger.logger.debug(`路由适配器已注册: ${registration.name}`);
|
|
60
60
|
// 如果没有默认适配器,设置为第一个注册的适配器
|
|
61
61
|
if (!this.defaultAdapterName) {
|
|
62
62
|
this.defaultAdapterName = registration.name;
|
|
@@ -80,7 +80,7 @@ let AdapterManager = class AdapterManager {
|
|
|
80
80
|
*/ unregister(name) {
|
|
81
81
|
if (this.adapters.has(name)) {
|
|
82
82
|
this.adapters.delete(name);
|
|
83
|
-
|
|
83
|
+
_logger.logger.debug(`路由适配器已取消注册: ${name}`);
|
|
84
84
|
// 如果取消的是默认适配器,重置默认适配器
|
|
85
85
|
if (this.defaultAdapterName === name) {
|
|
86
86
|
const firstAdapter = Array.from(this.adapters.keys())[0];
|
|
@@ -119,10 +119,10 @@ let AdapterManager = class AdapterManager {
|
|
|
119
119
|
}
|
|
120
120
|
// 初始化适配器
|
|
121
121
|
await adapter.initialize(config);
|
|
122
|
-
|
|
122
|
+
_logger.logger.info(`路由适配器已创建并初始化: ${adapterName}`);
|
|
123
123
|
return adapter;
|
|
124
124
|
} catch (error) {
|
|
125
|
-
|
|
125
|
+
_logger.logger.error(`创建路由适配器失败: ${adapterName}`, error);
|
|
126
126
|
const errorContext = {
|
|
127
127
|
adapterName
|
|
128
128
|
};
|
|
@@ -142,11 +142,11 @@ let AdapterManager = class AdapterManager {
|
|
|
142
142
|
try {
|
|
143
143
|
this.currentAdapter.destroy();
|
|
144
144
|
} catch (error) {
|
|
145
|
-
|
|
145
|
+
_logger.logger.warn('销毁旧适配器失败', error);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
this.currentAdapter = adapter;
|
|
149
|
-
|
|
149
|
+
_logger.logger.debug(`当前路由适配器已设置: ${adapter.name}`);
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
152
|
* 获取当前适配器
|
|
@@ -164,7 +164,7 @@ let AdapterManager = class AdapterManager {
|
|
|
164
164
|
throw new Error(`适配器不存在: ${name}`);
|
|
165
165
|
}
|
|
166
166
|
this.defaultAdapterName = name;
|
|
167
|
-
|
|
167
|
+
_logger.logger.debug(`默认路由适配器已设置: ${name}`);
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
170
|
* 获取默认适配器名称
|
|
@@ -203,13 +203,13 @@ let AdapterManager = class AdapterManager {
|
|
|
203
203
|
try {
|
|
204
204
|
this.currentAdapter.destroy();
|
|
205
205
|
} catch (error) {
|
|
206
|
-
|
|
206
|
+
_logger.logger.warn('销毁适配器失败', error);
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
this.adapters.clear();
|
|
210
210
|
this.currentAdapter = null;
|
|
211
211
|
this.defaultAdapterName = null;
|
|
212
|
-
|
|
212
|
+
_logger.logger.debug('所有路由适配器已清空');
|
|
213
213
|
}
|
|
214
214
|
/**
|
|
215
215
|
* 获取适配器数量
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/adapter/AdapterManager.ts"],"sourcesContent":["/**\n * 路由适配器管理器\n * 负责管理路由适配器的注册、创建和切换\n */\n\nimport { logger } from '../../../utils';\nimport type { IRouterAdapter, AdapterRegistration, RouterAdapterConfig } from './types';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 路由适配器管理器\n */\nexport class AdapterManager {\n private adapters: Map<string, AdapterRegistration> = new Map();\n private currentAdapter: IRouterAdapter | null = null;\n private defaultAdapterName: string | null = null;\n\n /**\n * 注册适配器\n * \n * @param registration - 适配器注册信息\n * @returns 取消注册函数\n */\n register(registration: AdapterRegistration): () => void {\n // 验证适配器\n if (!registration.name) {\n throw new Error('适配器必须提供名称');\n }\n\n if (!registration.factory || typeof registration.factory !== 'function') {\n throw new Error('适配器必须提供工厂函数');\n }\n\n // 设置默认值\n const adapterRegistration: AdapterRegistration = {\n priority: 100,\n enabled: true,\n ...registration,\n };\n\n // 注册适配器\n this.adapters.set(registration.name, adapterRegistration);\n\n logger.debug(`路由适配器已注册: ${registration.name}`);\n\n // 如果没有默认适配器,设置为第一个注册的适配器\n if (!this.defaultAdapterName) {\n this.defaultAdapterName = registration.name;\n }\n\n // 返回取消注册函数\n return () => {\n this.unregister(registration.name);\n };\n }\n\n /**\n * 批量注册适配器\n * \n * @param registrations - 适配器注册信息数组\n */\n registerBatch(registrations: AdapterRegistration[]): void {\n registrations.forEach((registration) => this.register(registration));\n }\n\n /**\n * 取消注册适配器\n * \n * @param name - 适配器名称\n */\n unregister(name: string): void {\n if (this.adapters.has(name)) {\n this.adapters.delete(name);\n logger.debug(`路由适配器已取消注册: ${name}`);\n\n // 如果取消的是默认适配器,重置默认适配器\n if (this.defaultAdapterName === name) {\n const firstAdapter = Array.from(this.adapters.keys())[0];\n this.defaultAdapterName = firstAdapter || null;\n }\n }\n }\n\n /**\n * 创建适配器实例\n * \n * @param name - 适配器名称(可选,使用默认适配器)\n * @param config - 适配器配置\n * @returns 适配器实例\n */\n async createAdapter(\n config: RouterAdapterConfig,\n name?: string\n ): Promise<IRouterAdapter> {\n const adapterName = name || this.defaultAdapterName;\n\n if (!adapterName) {\n throw new RouterError(\n '没有可用的路由适配器',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n const registration = this.adapters.get(adapterName);\n\n if (!registration) {\n throw new RouterError(\n `路由适配器不存在: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n if (!registration.enabled) {\n throw new RouterError(\n `路由适配器已禁用: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n try {\n // 创建适配器实例\n const adapter = await registration.factory(config);\n\n // 验证适配器\n if (!adapter || typeof adapter.initialize !== 'function') {\n throw new Error('适配器实例无效');\n }\n\n // 初始化适配器\n await adapter.initialize(config);\n\n logger.info(`路由适配器已创建并初始化: ${adapterName}`);\n\n return adapter;\n } catch (error) {\n logger.error(`创建路由适配器失败: ${adapterName}`, error);\n const errorContext: Record<string, unknown> = { adapterName };\n if (error instanceof Error) {\n errorContext.originalError = error;\n }\n throw new RouterError(\n `创建路由适配器失败: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n error instanceof Error ? error : undefined,\n errorContext\n );\n }\n }\n\n /**\n * 设置当前适配器\n * \n * @param adapter - 适配器实例\n */\n setCurrentAdapter(adapter: IRouterAdapter): void {\n // 销毁旧的适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁旧适配器失败', error);\n }\n }\n\n this.currentAdapter = adapter;\n logger.debug(`当前路由适配器已设置: ${adapter.name}`);\n }\n\n /**\n * 获取当前适配器\n * \n * @returns 当前适配器实例,如果不存在返回 null\n */\n getCurrentAdapter(): IRouterAdapter | null {\n return this.currentAdapter;\n }\n\n /**\n * 设置默认适配器\n * \n * @param name - 适配器名称\n */\n setDefaultAdapter(name: string): void {\n if (!this.adapters.has(name)) {\n throw new Error(`适配器不存在: ${name}`);\n }\n\n this.defaultAdapterName = name;\n logger.debug(`默认路由适配器已设置: ${name}`);\n }\n\n /**\n * 获取默认适配器名称\n * \n * @returns 默认适配器名称\n */\n getDefaultAdapterName(): string | null {\n return this.defaultAdapterName;\n }\n\n /**\n * 获取所有适配器\n * \n * @returns 适配器注册信息数组\n */\n getAllAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values());\n }\n\n /**\n * 获取启用的适配器\n * \n * @returns 启用的适配器注册信息数组\n */\n getEnabledAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values()).filter((a) => a.enabled !== false);\n }\n\n /**\n * 获取适配器\n * \n * @param name - 适配器名称\n * @returns 适配器注册信息,如果不存在返回 undefined\n */\n getAdapter(name: string): AdapterRegistration | undefined {\n return this.adapters.get(name);\n }\n\n /**\n * 清空所有适配器\n */\n clear(): void {\n // 销毁当前适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁适配器失败', error);\n }\n }\n\n this.adapters.clear();\n this.currentAdapter = null;\n this.defaultAdapterName = null;\n logger.debug('所有路由适配器已清空');\n }\n\n /**\n * 获取适配器数量\n * \n * @returns 适配器数量\n */\n getCount(): number {\n return this.adapters.size;\n }\n}\n\n/**\n * 获取路由适配器管理器单例\n */\nlet adapterManagerInstance: AdapterManager | null = null;\n\nexport function getAdapterManager(): AdapterManager {\n if (!adapterManagerInstance) {\n adapterManagerInstance = new AdapterManager();\n }\n return adapterManagerInstance;\n}\n"],"names":["AdapterManager","getAdapterManager","register","registration","name","Error","factory","adapterRegistration","priority","enabled","adapters","set","logger","debug","defaultAdapterName","unregister","registerBatch","registrations","forEach","has","delete","firstAdapter","Array","from","keys","createAdapter","config","adapterName","RouterError","RouterErrorCode","ROUTER_NOT_INITIALIZED","get","ROUTER_CONFIG_ERROR","undefined","adapter","initialize","info","error","errorContext","originalError","setCurrentAdapter","currentAdapter","destroy","warn","getCurrentAdapter","setDefaultAdapter","getDefaultAdapterName","getAllAdapters","values","getEnabledAdapters","filter","a","getAdapter","clear","getCount","size","Map","adapterManagerInstance"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/adapter/AdapterManager.ts"],"sourcesContent":["/**\n * 路由适配器管理器\n * 负责管理路由适配器的注册、创建和切换\n */\n\nimport { logger } from '@vlian/logger';\nimport type { IRouterAdapter, AdapterRegistration, RouterAdapterConfig } from './types';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 路由适配器管理器\n */\nexport class AdapterManager {\n private adapters: Map<string, AdapterRegistration> = new Map();\n private currentAdapter: IRouterAdapter | null = null;\n private defaultAdapterName: string | null = null;\n\n /**\n * 注册适配器\n * \n * @param registration - 适配器注册信息\n * @returns 取消注册函数\n */\n register(registration: AdapterRegistration): () => void {\n // 验证适配器\n if (!registration.name) {\n throw new Error('适配器必须提供名称');\n }\n\n if (!registration.factory || typeof registration.factory !== 'function') {\n throw new Error('适配器必须提供工厂函数');\n }\n\n // 设置默认值\n const adapterRegistration: AdapterRegistration = {\n priority: 100,\n enabled: true,\n ...registration,\n };\n\n // 注册适配器\n this.adapters.set(registration.name, adapterRegistration);\n\n logger.debug(`路由适配器已注册: ${registration.name}`);\n\n // 如果没有默认适配器,设置为第一个注册的适配器\n if (!this.defaultAdapterName) {\n this.defaultAdapterName = registration.name;\n }\n\n // 返回取消注册函数\n return () => {\n this.unregister(registration.name);\n };\n }\n\n /**\n * 批量注册适配器\n * \n * @param registrations - 适配器注册信息数组\n */\n registerBatch(registrations: AdapterRegistration[]): void {\n registrations.forEach((registration) => this.register(registration));\n }\n\n /**\n * 取消注册适配器\n * \n * @param name - 适配器名称\n */\n unregister(name: string): void {\n if (this.adapters.has(name)) {\n this.adapters.delete(name);\n logger.debug(`路由适配器已取消注册: ${name}`);\n\n // 如果取消的是默认适配器,重置默认适配器\n if (this.defaultAdapterName === name) {\n const firstAdapter = Array.from(this.adapters.keys())[0];\n this.defaultAdapterName = firstAdapter || null;\n }\n }\n }\n\n /**\n * 创建适配器实例\n * \n * @param name - 适配器名称(可选,使用默认适配器)\n * @param config - 适配器配置\n * @returns 适配器实例\n */\n async createAdapter(\n config: RouterAdapterConfig,\n name?: string\n ): Promise<IRouterAdapter> {\n const adapterName = name || this.defaultAdapterName;\n\n if (!adapterName) {\n throw new RouterError(\n '没有可用的路由适配器',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n const registration = this.adapters.get(adapterName);\n\n if (!registration) {\n throw new RouterError(\n `路由适配器不存在: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n if (!registration.enabled) {\n throw new RouterError(\n `路由适配器已禁用: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n try {\n // 创建适配器实例\n const adapter = await registration.factory(config);\n\n // 验证适配器\n if (!adapter || typeof adapter.initialize !== 'function') {\n throw new Error('适配器实例无效');\n }\n\n // 初始化适配器\n await adapter.initialize(config);\n\n logger.info(`路由适配器已创建并初始化: ${adapterName}`);\n\n return adapter;\n } catch (error) {\n logger.error(`创建路由适配器失败: ${adapterName}`, error);\n const errorContext: Record<string, unknown> = { adapterName };\n if (error instanceof Error) {\n errorContext.originalError = error;\n }\n throw new RouterError(\n `创建路由适配器失败: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n error instanceof Error ? error : undefined,\n errorContext\n );\n }\n }\n\n /**\n * 设置当前适配器\n * \n * @param adapter - 适配器实例\n */\n setCurrentAdapter(adapter: IRouterAdapter): void {\n // 销毁旧的适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁旧适配器失败', error);\n }\n }\n\n this.currentAdapter = adapter;\n logger.debug(`当前路由适配器已设置: ${adapter.name}`);\n }\n\n /**\n * 获取当前适配器\n * \n * @returns 当前适配器实例,如果不存在返回 null\n */\n getCurrentAdapter(): IRouterAdapter | null {\n return this.currentAdapter;\n }\n\n /**\n * 设置默认适配器\n * \n * @param name - 适配器名称\n */\n setDefaultAdapter(name: string): void {\n if (!this.adapters.has(name)) {\n throw new Error(`适配器不存在: ${name}`);\n }\n\n this.defaultAdapterName = name;\n logger.debug(`默认路由适配器已设置: ${name}`);\n }\n\n /**\n * 获取默认适配器名称\n * \n * @returns 默认适配器名称\n */\n getDefaultAdapterName(): string | null {\n return this.defaultAdapterName;\n }\n\n /**\n * 获取所有适配器\n * \n * @returns 适配器注册信息数组\n */\n getAllAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values());\n }\n\n /**\n * 获取启用的适配器\n * \n * @returns 启用的适配器注册信息数组\n */\n getEnabledAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values()).filter((a) => a.enabled !== false);\n }\n\n /**\n * 获取适配器\n * \n * @param name - 适配器名称\n * @returns 适配器注册信息,如果不存在返回 undefined\n */\n getAdapter(name: string): AdapterRegistration | undefined {\n return this.adapters.get(name);\n }\n\n /**\n * 清空所有适配器\n */\n clear(): void {\n // 销毁当前适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁适配器失败', error);\n }\n }\n\n this.adapters.clear();\n this.currentAdapter = null;\n this.defaultAdapterName = null;\n logger.debug('所有路由适配器已清空');\n }\n\n /**\n * 获取适配器数量\n * \n * @returns 适配器数量\n */\n getCount(): number {\n return this.adapters.size;\n }\n}\n\n/**\n * 获取路由适配器管理器单例\n */\nlet adapterManagerInstance: AdapterManager | null = null;\n\nexport function getAdapterManager(): AdapterManager {\n if (!adapterManagerInstance) {\n adapterManagerInstance = new AdapterManager();\n }\n return adapterManagerInstance;\n}\n"],"names":["AdapterManager","getAdapterManager","register","registration","name","Error","factory","adapterRegistration","priority","enabled","adapters","set","logger","debug","defaultAdapterName","unregister","registerBatch","registrations","forEach","has","delete","firstAdapter","Array","from","keys","createAdapter","config","adapterName","RouterError","RouterErrorCode","ROUTER_NOT_INITIALIZED","get","ROUTER_CONFIG_ERROR","undefined","adapter","initialize","info","error","errorContext","originalError","setCurrentAdapter","currentAdapter","destroy","warn","getCurrentAdapter","setDefaultAdapter","getDefaultAdapterName","getAllAdapters","values","getEnabledAdapters","filter","a","getAdapter","clear","getCount","size","Map","adapterManagerInstance"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ function _define_property(obj, key, value) {
|
|
|
14
14
|
/**
|
|
15
15
|
* 路由适配器管理器
|
|
16
16
|
* 负责管理路由适配器的注册、创建和切换
|
|
17
|
-
*/ import { logger } from "
|
|
17
|
+
*/ import { logger } from "@vlian/logger";
|
|
18
18
|
import { RouterError, RouterErrorCode } from "../errors";
|
|
19
19
|
/**
|
|
20
20
|
* 路由适配器管理器
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/adapter/AdapterManager.ts"],"sourcesContent":["/**\n * 路由适配器管理器\n * 负责管理路由适配器的注册、创建和切换\n */\n\nimport { logger } from '../../../utils';\nimport type { IRouterAdapter, AdapterRegistration, RouterAdapterConfig } from './types';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 路由适配器管理器\n */\nexport class AdapterManager {\n private adapters: Map<string, AdapterRegistration> = new Map();\n private currentAdapter: IRouterAdapter | null = null;\n private defaultAdapterName: string | null = null;\n\n /**\n * 注册适配器\n * \n * @param registration - 适配器注册信息\n * @returns 取消注册函数\n */\n register(registration: AdapterRegistration): () => void {\n // 验证适配器\n if (!registration.name) {\n throw new Error('适配器必须提供名称');\n }\n\n if (!registration.factory || typeof registration.factory !== 'function') {\n throw new Error('适配器必须提供工厂函数');\n }\n\n // 设置默认值\n const adapterRegistration: AdapterRegistration = {\n priority: 100,\n enabled: true,\n ...registration,\n };\n\n // 注册适配器\n this.adapters.set(registration.name, adapterRegistration);\n\n logger.debug(`路由适配器已注册: ${registration.name}`);\n\n // 如果没有默认适配器,设置为第一个注册的适配器\n if (!this.defaultAdapterName) {\n this.defaultAdapterName = registration.name;\n }\n\n // 返回取消注册函数\n return () => {\n this.unregister(registration.name);\n };\n }\n\n /**\n * 批量注册适配器\n * \n * @param registrations - 适配器注册信息数组\n */\n registerBatch(registrations: AdapterRegistration[]): void {\n registrations.forEach((registration) => this.register(registration));\n }\n\n /**\n * 取消注册适配器\n * \n * @param name - 适配器名称\n */\n unregister(name: string): void {\n if (this.adapters.has(name)) {\n this.adapters.delete(name);\n logger.debug(`路由适配器已取消注册: ${name}`);\n\n // 如果取消的是默认适配器,重置默认适配器\n if (this.defaultAdapterName === name) {\n const firstAdapter = Array.from(this.adapters.keys())[0];\n this.defaultAdapterName = firstAdapter || null;\n }\n }\n }\n\n /**\n * 创建适配器实例\n * \n * @param name - 适配器名称(可选,使用默认适配器)\n * @param config - 适配器配置\n * @returns 适配器实例\n */\n async createAdapter(\n config: RouterAdapterConfig,\n name?: string\n ): Promise<IRouterAdapter> {\n const adapterName = name || this.defaultAdapterName;\n\n if (!adapterName) {\n throw new RouterError(\n '没有可用的路由适配器',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n const registration = this.adapters.get(adapterName);\n\n if (!registration) {\n throw new RouterError(\n `路由适配器不存在: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n if (!registration.enabled) {\n throw new RouterError(\n `路由适配器已禁用: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n try {\n // 创建适配器实例\n const adapter = await registration.factory(config);\n\n // 验证适配器\n if (!adapter || typeof adapter.initialize !== 'function') {\n throw new Error('适配器实例无效');\n }\n\n // 初始化适配器\n await adapter.initialize(config);\n\n logger.info(`路由适配器已创建并初始化: ${adapterName}`);\n\n return adapter;\n } catch (error) {\n logger.error(`创建路由适配器失败: ${adapterName}`, error);\n const errorContext: Record<string, unknown> = { adapterName };\n if (error instanceof Error) {\n errorContext.originalError = error;\n }\n throw new RouterError(\n `创建路由适配器失败: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n error instanceof Error ? error : undefined,\n errorContext\n );\n }\n }\n\n /**\n * 设置当前适配器\n * \n * @param adapter - 适配器实例\n */\n setCurrentAdapter(adapter: IRouterAdapter): void {\n // 销毁旧的适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁旧适配器失败', error);\n }\n }\n\n this.currentAdapter = adapter;\n logger.debug(`当前路由适配器已设置: ${adapter.name}`);\n }\n\n /**\n * 获取当前适配器\n * \n * @returns 当前适配器实例,如果不存在返回 null\n */\n getCurrentAdapter(): IRouterAdapter | null {\n return this.currentAdapter;\n }\n\n /**\n * 设置默认适配器\n * \n * @param name - 适配器名称\n */\n setDefaultAdapter(name: string): void {\n if (!this.adapters.has(name)) {\n throw new Error(`适配器不存在: ${name}`);\n }\n\n this.defaultAdapterName = name;\n logger.debug(`默认路由适配器已设置: ${name}`);\n }\n\n /**\n * 获取默认适配器名称\n * \n * @returns 默认适配器名称\n */\n getDefaultAdapterName(): string | null {\n return this.defaultAdapterName;\n }\n\n /**\n * 获取所有适配器\n * \n * @returns 适配器注册信息数组\n */\n getAllAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values());\n }\n\n /**\n * 获取启用的适配器\n * \n * @returns 启用的适配器注册信息数组\n */\n getEnabledAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values()).filter((a) => a.enabled !== false);\n }\n\n /**\n * 获取适配器\n * \n * @param name - 适配器名称\n * @returns 适配器注册信息,如果不存在返回 undefined\n */\n getAdapter(name: string): AdapterRegistration | undefined {\n return this.adapters.get(name);\n }\n\n /**\n * 清空所有适配器\n */\n clear(): void {\n // 销毁当前适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁适配器失败', error);\n }\n }\n\n this.adapters.clear();\n this.currentAdapter = null;\n this.defaultAdapterName = null;\n logger.debug('所有路由适配器已清空');\n }\n\n /**\n * 获取适配器数量\n * \n * @returns 适配器数量\n */\n getCount(): number {\n return this.adapters.size;\n }\n}\n\n/**\n * 获取路由适配器管理器单例\n */\nlet adapterManagerInstance: AdapterManager | null = null;\n\nexport function getAdapterManager(): AdapterManager {\n if (!adapterManagerInstance) {\n adapterManagerInstance = new AdapterManager();\n }\n return adapterManagerInstance;\n}\n"],"names":["logger","RouterError","RouterErrorCode","AdapterManager","register","registration","name","Error","factory","adapterRegistration","priority","enabled","adapters","set","debug","defaultAdapterName","unregister","registerBatch","registrations","forEach","has","delete","firstAdapter","Array","from","keys","createAdapter","config","adapterName","ROUTER_NOT_INITIALIZED","get","ROUTER_CONFIG_ERROR","undefined","adapter","initialize","info","error","errorContext","originalError","setCurrentAdapter","currentAdapter","destroy","warn","getCurrentAdapter","setDefaultAdapter","getDefaultAdapterName","getAllAdapters","values","getEnabledAdapters","filter","a","getAdapter","clear","getCount","size","Map","adapterManagerInstance","getAdapterManager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/adapter/AdapterManager.ts"],"sourcesContent":["/**\n * 路由适配器管理器\n * 负责管理路由适配器的注册、创建和切换\n */\n\nimport { logger } from '@vlian/logger';\nimport type { IRouterAdapter, AdapterRegistration, RouterAdapterConfig } from './types';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 路由适配器管理器\n */\nexport class AdapterManager {\n private adapters: Map<string, AdapterRegistration> = new Map();\n private currentAdapter: IRouterAdapter | null = null;\n private defaultAdapterName: string | null = null;\n\n /**\n * 注册适配器\n * \n * @param registration - 适配器注册信息\n * @returns 取消注册函数\n */\n register(registration: AdapterRegistration): () => void {\n // 验证适配器\n if (!registration.name) {\n throw new Error('适配器必须提供名称');\n }\n\n if (!registration.factory || typeof registration.factory !== 'function') {\n throw new Error('适配器必须提供工厂函数');\n }\n\n // 设置默认值\n const adapterRegistration: AdapterRegistration = {\n priority: 100,\n enabled: true,\n ...registration,\n };\n\n // 注册适配器\n this.adapters.set(registration.name, adapterRegistration);\n\n logger.debug(`路由适配器已注册: ${registration.name}`);\n\n // 如果没有默认适配器,设置为第一个注册的适配器\n if (!this.defaultAdapterName) {\n this.defaultAdapterName = registration.name;\n }\n\n // 返回取消注册函数\n return () => {\n this.unregister(registration.name);\n };\n }\n\n /**\n * 批量注册适配器\n * \n * @param registrations - 适配器注册信息数组\n */\n registerBatch(registrations: AdapterRegistration[]): void {\n registrations.forEach((registration) => this.register(registration));\n }\n\n /**\n * 取消注册适配器\n * \n * @param name - 适配器名称\n */\n unregister(name: string): void {\n if (this.adapters.has(name)) {\n this.adapters.delete(name);\n logger.debug(`路由适配器已取消注册: ${name}`);\n\n // 如果取消的是默认适配器,重置默认适配器\n if (this.defaultAdapterName === name) {\n const firstAdapter = Array.from(this.adapters.keys())[0];\n this.defaultAdapterName = firstAdapter || null;\n }\n }\n }\n\n /**\n * 创建适配器实例\n * \n * @param name - 适配器名称(可选,使用默认适配器)\n * @param config - 适配器配置\n * @returns 适配器实例\n */\n async createAdapter(\n config: RouterAdapterConfig,\n name?: string\n ): Promise<IRouterAdapter> {\n const adapterName = name || this.defaultAdapterName;\n\n if (!adapterName) {\n throw new RouterError(\n '没有可用的路由适配器',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n const registration = this.adapters.get(adapterName);\n\n if (!registration) {\n throw new RouterError(\n `路由适配器不存在: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n if (!registration.enabled) {\n throw new RouterError(\n `路由适配器已禁用: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { adapterName }\n );\n }\n\n try {\n // 创建适配器实例\n const adapter = await registration.factory(config);\n\n // 验证适配器\n if (!adapter || typeof adapter.initialize !== 'function') {\n throw new Error('适配器实例无效');\n }\n\n // 初始化适配器\n await adapter.initialize(config);\n\n logger.info(`路由适配器已创建并初始化: ${adapterName}`);\n\n return adapter;\n } catch (error) {\n logger.error(`创建路由适配器失败: ${adapterName}`, error);\n const errorContext: Record<string, unknown> = { adapterName };\n if (error instanceof Error) {\n errorContext.originalError = error;\n }\n throw new RouterError(\n `创建路由适配器失败: ${adapterName}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n error instanceof Error ? error : undefined,\n errorContext\n );\n }\n }\n\n /**\n * 设置当前适配器\n * \n * @param adapter - 适配器实例\n */\n setCurrentAdapter(adapter: IRouterAdapter): void {\n // 销毁旧的适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁旧适配器失败', error);\n }\n }\n\n this.currentAdapter = adapter;\n logger.debug(`当前路由适配器已设置: ${adapter.name}`);\n }\n\n /**\n * 获取当前适配器\n * \n * @returns 当前适配器实例,如果不存在返回 null\n */\n getCurrentAdapter(): IRouterAdapter | null {\n return this.currentAdapter;\n }\n\n /**\n * 设置默认适配器\n * \n * @param name - 适配器名称\n */\n setDefaultAdapter(name: string): void {\n if (!this.adapters.has(name)) {\n throw new Error(`适配器不存在: ${name}`);\n }\n\n this.defaultAdapterName = name;\n logger.debug(`默认路由适配器已设置: ${name}`);\n }\n\n /**\n * 获取默认适配器名称\n * \n * @returns 默认适配器名称\n */\n getDefaultAdapterName(): string | null {\n return this.defaultAdapterName;\n }\n\n /**\n * 获取所有适配器\n * \n * @returns 适配器注册信息数组\n */\n getAllAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values());\n }\n\n /**\n * 获取启用的适配器\n * \n * @returns 启用的适配器注册信息数组\n */\n getEnabledAdapters(): AdapterRegistration[] {\n return Array.from(this.adapters.values()).filter((a) => a.enabled !== false);\n }\n\n /**\n * 获取适配器\n * \n * @param name - 适配器名称\n * @returns 适配器注册信息,如果不存在返回 undefined\n */\n getAdapter(name: string): AdapterRegistration | undefined {\n return this.adapters.get(name);\n }\n\n /**\n * 清空所有适配器\n */\n clear(): void {\n // 销毁当前适配器\n if (this.currentAdapter && this.currentAdapter.destroy) {\n try {\n this.currentAdapter.destroy();\n } catch (error) {\n logger.warn('销毁适配器失败', error);\n }\n }\n\n this.adapters.clear();\n this.currentAdapter = null;\n this.defaultAdapterName = null;\n logger.debug('所有路由适配器已清空');\n }\n\n /**\n * 获取适配器数量\n * \n * @returns 适配器数量\n */\n getCount(): number {\n return this.adapters.size;\n }\n}\n\n/**\n * 获取路由适配器管理器单例\n */\nlet adapterManagerInstance: AdapterManager | null = null;\n\nexport function getAdapterManager(): AdapterManager {\n if (!adapterManagerInstance) {\n adapterManagerInstance = new AdapterManager();\n }\n return adapterManagerInstance;\n}\n"],"names":["logger","RouterError","RouterErrorCode","AdapterManager","register","registration","name","Error","factory","adapterRegistration","priority","enabled","adapters","set","debug","defaultAdapterName","unregister","registerBatch","registrations","forEach","has","delete","firstAdapter","Array","from","keys","createAdapter","config","adapterName","ROUTER_NOT_INITIALIZED","get","ROUTER_CONFIG_ERROR","undefined","adapter","initialize","info","error","errorContext","originalError","setCurrentAdapter","currentAdapter","destroy","warn","getCurrentAdapter","setDefaultAdapter","getDefaultAdapterName","getAllAdapters","values","getEnabledAdapters","filter","a","getAdapter","clear","getCount","size","Map","adapterManagerInstance","getAdapterManager"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ _export(exports, {
|
|
|
21
21
|
const _reactrouterdom = require("react-router-dom");
|
|
22
22
|
const _transform = require("../../utils/adapters/react-router/transform");
|
|
23
23
|
const _transform1 = require("../../utils/transform");
|
|
24
|
-
const
|
|
24
|
+
const _logger = require("@vlian/logger");
|
|
25
25
|
function _define_property(obj, key, value) {
|
|
26
26
|
if (key in obj) {
|
|
27
27
|
Object.defineProperty(obj, key, {
|
|
@@ -53,7 +53,7 @@ let ReactRouterAdapter = class ReactRouterAdapter {
|
|
|
53
53
|
} else {
|
|
54
54
|
throw new Error(`不支持的路由模式: ${mode}`);
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
_logger.logger.debug('React Router 适配器初始化完成');
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* 挂载到应用实例
|
|
@@ -63,7 +63,7 @@ let ReactRouterAdapter = class ReactRouterAdapter {
|
|
|
63
63
|
}
|
|
64
64
|
// React Router 适配器通过 RouterProvider 挂载
|
|
65
65
|
// 实际的挂载逻辑在 renderApp 中处理
|
|
66
|
-
|
|
66
|
+
_logger.logger.debug('React Router 适配器已挂载');
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* 导航到指定路径
|
|
@@ -113,7 +113,7 @@ let ReactRouterAdapter = class ReactRouterAdapter {
|
|
|
113
113
|
* 销毁适配器
|
|
114
114
|
*/ destroy() {
|
|
115
115
|
this.router = null;
|
|
116
|
-
|
|
116
|
+
_logger.logger.debug('React Router 适配器已销毁');
|
|
117
117
|
}
|
|
118
118
|
constructor(){
|
|
119
119
|
_define_property(this, "name", 'react-router');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/router/adapter/react-router/ReactRouterAdapter.ts"],"sourcesContent":["/**\n * React Router 适配器实现\n */\n\nimport type { IRouterAdapter, RouterAdapterConfig } from '../types';\nimport type { RouteLocation, NavigateOptions } from '../../types';\nimport type { AppInstance } from '../../../startup/AppInstance';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter } from 'react-router-dom';\nimport { transformRoutesToReactRoutes } from '../../utils/adapters/react-router/transform';\nimport { transformRoutes } from '../../utils/transform';\nimport { logger } from '
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/router/adapter/react-router/ReactRouterAdapter.ts"],"sourcesContent":["/**\n * React Router 适配器实现\n */\n\nimport type { IRouterAdapter, RouterAdapterConfig } from '../types';\nimport type { RouteLocation, NavigateOptions } from '../../types';\nimport type { AppInstance } from '../../../startup/AppInstance';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter } from 'react-router-dom';\nimport { transformRoutesToReactRoutes } from '../../utils/adapters/react-router/transform';\nimport { transformRoutes } from '../../utils/transform';\nimport { logger } from '@vlian/logger';\n\n/**\n * React Router 适配器\n */\nexport class ReactRouterAdapter implements IRouterAdapter {\n readonly name = 'react-router';\n readonly version = '6.0.0';\n\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 初始化适配器\n */\n async initialize(config: RouterAdapterConfig): Promise<void> {\n\n // 转换路由配置\n const transformResult = await transformRoutes(config.routes);\n const reactRoutes = await transformRoutesToReactRoutes(\n transformResult.routes,\n transformResult,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData),\n );\n\n // 创建路由实例\n const mode = config.mode || 'browser';\n if (mode === 'browser') {\n this.router = createBrowserRouter(reactRoutes, config.options as any);\n } else if (mode === 'hash') {\n this.router = createHashRouter(reactRoutes, config.options as any);\n } else if (mode === 'memory') {\n this.router = createMemoryRouter(reactRoutes, config.options as any);\n } else {\n throw new Error(`不支持的路由模式: ${mode}`);\n }\n\n logger.debug('React Router 适配器初始化完成');\n }\n\n /**\n * 挂载到应用实例\n */\n mount(_app: AppInstance): void {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n // React Router 适配器通过 RouterProvider 挂载\n // 实际的挂载逻辑在 renderApp 中处理\n logger.debug('React Router 适配器已挂载');\n }\n\n /**\n * 导航到指定路径\n */\n navigate(to: string, options?: NavigateOptions): void {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n if (options?.replace) {\n this.router.navigate(to, { replace: true, state: options.state });\n } else {\n this.router.navigate(to, { state: options?.state });\n }\n }\n\n /**\n * 获取当前路由信息\n */\n getCurrentRoute(): RouteLocation {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n const state = this.router.state;\n const location = state.location;\n\n // 解析查询参数\n const query: Record<string, unknown> = {};\n if (location.search) {\n const params = new URLSearchParams(location.search);\n params.forEach((value, key) => {\n query[key] = value;\n });\n }\n\n return {\n path: location.pathname + location.hash,\n query,\n params: location.state as Record<string, unknown> | undefined,\n };\n }\n\n /**\n * 获取路由实例(用于 RouterProvider)\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 销毁适配器\n */\n destroy(): void {\n this.router = null;\n logger.debug('React Router 适配器已销毁');\n }\n}\n\n/**\n * 创建 React Router 适配器工厂函数\n */\nexport function createReactRouterAdapter(): (_config: RouterAdapterConfig) => IRouterAdapter {\n return (_config: RouterAdapterConfig) => {\n return new ReactRouterAdapter();\n };\n}\n"],"names":["ReactRouterAdapter","createReactRouterAdapter","initialize","config","transformResult","transformRoutes","routes","reactRoutes","transformRoutesToReactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","Boolean","options","hydrationData","mode","router","createBrowserRouter","createHashRouter","createMemoryRouter","Error","logger","debug","mount","_app","navigate","to","replace","state","getCurrentRoute","location","query","search","params","URLSearchParams","forEach","value","key","path","pathname","hash","getRouter","destroy","name","version","_config"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QAaYA;eAAAA;;QA8GGC;eAAAA;;;gCAtH0D;2BAC7B;4BACb;wBACT;;;;;;;;;;;;;;AAKhB,IAAA,AAAMD,qBAAN,MAAMA;IAMX;;GAEC,GACD,MAAME,WAAWC,MAA2B,EAAiB;QAE3D,SAAS;QACT,MAAMC,kBAAkB,MAAMC,IAAAA,2BAAe,EAACF,OAAOG,MAAM;QAC3D,MAAMC,cAAc,MAAMC,IAAAA,uCAA4B,EACpDJ,gBAAgBE,MAAM,EACtBF,iBACAD,OAAOM,0BAA0B,EACjCN,OAAOO,4BAA4B,EACnCC,QAASR,OAAOS,OAAO,EAA8CC;QAGvE,SAAS;QACT,MAAMC,OAAOX,OAAOW,IAAI,IAAI;QAC5B,IAAIA,SAAS,WAAW;YACtB,IAAI,CAACC,MAAM,GAAGC,IAAAA,mCAAmB,EAACT,aAAaJ,OAAOS,OAAO;QAC/D,OAAO,IAAIE,SAAS,QAAQ;YAC1B,IAAI,CAACC,MAAM,GAAGE,IAAAA,gCAAgB,EAACV,aAAaJ,OAAOS,OAAO;QAC5D,OAAO,IAAIE,SAAS,UAAU;YAC5B,IAAI,CAACC,MAAM,GAAGG,IAAAA,kCAAkB,EAACX,aAAaJ,OAAOS,OAAO;QAC9D,OAAO;YACL,MAAM,IAAIO,MAAM,CAAC,UAAU,EAAEL,MAAM;QACrC;QAEAM,cAAM,CAACC,KAAK,CAAC;IACf;IAEA;;GAEC,GACDC,MAAMC,IAAiB,EAAQ;QAC7B,IAAI,CAAC,IAAI,CAACR,MAAM,EAAE;YAChB,MAAM,IAAII,MAAM;QAClB;QAEA,uCAAuC;QACvC,yBAAyB;QACzBC,cAAM,CAACC,KAAK,CAAC;IACf;IAEA;;GAEC,GACDG,SAASC,EAAU,EAAEb,OAAyB,EAAQ;QACpD,IAAI,CAAC,IAAI,CAACG,MAAM,EAAE;YAChB,MAAM,IAAII,MAAM;QAClB;QAEA,IAAIP,SAASc,SAAS;YACpB,IAAI,CAACX,MAAM,CAACS,QAAQ,CAACC,IAAI;gBAAEC,SAAS;gBAAMC,OAAOf,QAAQe,KAAK;YAAC;QACjE,OAAO;YACL,IAAI,CAACZ,MAAM,CAACS,QAAQ,CAACC,IAAI;gBAAEE,OAAOf,SAASe;YAAM;QACnD;IACF;IAEA;;GAEC,GACDC,kBAAiC;QAC/B,IAAI,CAAC,IAAI,CAACb,MAAM,EAAE;YAChB,MAAM,IAAII,MAAM;QAClB;QAEA,MAAMQ,QAAQ,IAAI,CAACZ,MAAM,CAACY,KAAK;QAC/B,MAAME,WAAWF,MAAME,QAAQ;QAE/B,SAAS;QACT,MAAMC,QAAiC,CAAC;QACxC,IAAID,SAASE,MAAM,EAAE;YACnB,MAAMC,SAAS,IAAIC,gBAAgBJ,SAASE,MAAM;YAClDC,OAAOE,OAAO,CAAC,CAACC,OAAOC;gBACrBN,KAAK,CAACM,IAAI,GAAGD;YACf;QACF;QAEA,OAAO;YACLE,MAAMR,SAASS,QAAQ,GAAGT,SAASU,IAAI;YACvCT;YACAE,QAAQH,SAASF,KAAK;QACxB;IACF;IAEA;;GAEC,GACDa,YAA2D;QACzD,OAAO,IAAI,CAACzB,MAAM;IACpB;IAEA;;GAEC,GACD0B,UAAgB;QACd,IAAI,CAAC1B,MAAM,GAAG;QACdK,cAAM,CAACC,KAAK,CAAC;IACf;;QAvGA,uBAASqB,QAAO;QAChB,uBAASC,WAAU;QAEnB,uBAAQ5B,UAAwD;;AAqGlE;AAKO,SAASd;IACd,OAAO,CAAC2C;QACN,OAAO,IAAI5C;IACb;AACF"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { createBrowserRouter, createHashRouter, createMemoryRouter } from "react-router-dom";
|
|
17
17
|
import { transformRoutesToReactRoutes } from "../../utils/adapters/react-router/transform";
|
|
18
18
|
import { transformRoutes } from "../../utils/transform";
|
|
19
|
-
import { logger } from "
|
|
19
|
+
import { logger } from "@vlian/logger";
|
|
20
20
|
/**
|
|
21
21
|
* React Router 适配器
|
|
22
22
|
*/ export class ReactRouterAdapter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/router/adapter/react-router/ReactRouterAdapter.ts"],"sourcesContent":["/**\n * React Router 适配器实现\n */\n\nimport type { IRouterAdapter, RouterAdapterConfig } from '../types';\nimport type { RouteLocation, NavigateOptions } from '../../types';\nimport type { AppInstance } from '../../../startup/AppInstance';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter } from 'react-router-dom';\nimport { transformRoutesToReactRoutes } from '../../utils/adapters/react-router/transform';\nimport { transformRoutes } from '../../utils/transform';\nimport { logger } from '
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/router/adapter/react-router/ReactRouterAdapter.ts"],"sourcesContent":["/**\n * React Router 适配器实现\n */\n\nimport type { IRouterAdapter, RouterAdapterConfig } from '../types';\nimport type { RouteLocation, NavigateOptions } from '../../types';\nimport type { AppInstance } from '../../../startup/AppInstance';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter } from 'react-router-dom';\nimport { transformRoutesToReactRoutes } from '../../utils/adapters/react-router/transform';\nimport { transformRoutes } from '../../utils/transform';\nimport { logger } from '@vlian/logger';\n\n/**\n * React Router 适配器\n */\nexport class ReactRouterAdapter implements IRouterAdapter {\n readonly name = 'react-router';\n readonly version = '6.0.0';\n\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 初始化适配器\n */\n async initialize(config: RouterAdapterConfig): Promise<void> {\n\n // 转换路由配置\n const transformResult = await transformRoutes(config.routes);\n const reactRoutes = await transformRoutesToReactRoutes(\n transformResult.routes,\n transformResult,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData),\n );\n\n // 创建路由实例\n const mode = config.mode || 'browser';\n if (mode === 'browser') {\n this.router = createBrowserRouter(reactRoutes, config.options as any);\n } else if (mode === 'hash') {\n this.router = createHashRouter(reactRoutes, config.options as any);\n } else if (mode === 'memory') {\n this.router = createMemoryRouter(reactRoutes, config.options as any);\n } else {\n throw new Error(`不支持的路由模式: ${mode}`);\n }\n\n logger.debug('React Router 适配器初始化完成');\n }\n\n /**\n * 挂载到应用实例\n */\n mount(_app: AppInstance): void {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n // React Router 适配器通过 RouterProvider 挂载\n // 实际的挂载逻辑在 renderApp 中处理\n logger.debug('React Router 适配器已挂载');\n }\n\n /**\n * 导航到指定路径\n */\n navigate(to: string, options?: NavigateOptions): void {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n if (options?.replace) {\n this.router.navigate(to, { replace: true, state: options.state });\n } else {\n this.router.navigate(to, { state: options?.state });\n }\n }\n\n /**\n * 获取当前路由信息\n */\n getCurrentRoute(): RouteLocation {\n if (!this.router) {\n throw new Error('适配器未初始化');\n }\n\n const state = this.router.state;\n const location = state.location;\n\n // 解析查询参数\n const query: Record<string, unknown> = {};\n if (location.search) {\n const params = new URLSearchParams(location.search);\n params.forEach((value, key) => {\n query[key] = value;\n });\n }\n\n return {\n path: location.pathname + location.hash,\n query,\n params: location.state as Record<string, unknown> | undefined,\n };\n }\n\n /**\n * 获取路由实例(用于 RouterProvider)\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 销毁适配器\n */\n destroy(): void {\n this.router = null;\n logger.debug('React Router 适配器已销毁');\n }\n}\n\n/**\n * 创建 React Router 适配器工厂函数\n */\nexport function createReactRouterAdapter(): (_config: RouterAdapterConfig) => IRouterAdapter {\n return (_config: RouterAdapterConfig) => {\n return new ReactRouterAdapter();\n };\n}\n"],"names":["createBrowserRouter","createHashRouter","createMemoryRouter","transformRoutesToReactRoutes","transformRoutes","logger","ReactRouterAdapter","initialize","config","transformResult","routes","reactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","Boolean","options","hydrationData","mode","router","Error","debug","mount","_app","navigate","to","replace","state","getCurrentRoute","location","query","search","params","URLSearchParams","forEach","value","key","path","pathname","hash","getRouter","destroy","name","version","createReactRouterAdapter","_config"],"mappings":"AAAA;;CAEC;;;;;;;;;;;;;AAKD,SAASA,mBAAmB,EAAEC,gBAAgB,EAAEC,kBAAkB,QAAQ,mBAAmB;AAC7F,SAASC,4BAA4B,QAAQ,8CAA8C;AAC3F,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC;;CAEC,GACD,OAAO,MAAMC;IAMX;;GAEC,GACD,MAAMC,WAAWC,MAA2B,EAAiB;QAE3D,SAAS;QACT,MAAMC,kBAAkB,MAAML,gBAAgBI,OAAOE,MAAM;QAC3D,MAAMC,cAAc,MAAMR,6BACxBM,gBAAgBC,MAAM,EACtBD,iBACAD,OAAOI,0BAA0B,EACjCJ,OAAOK,4BAA4B,EACnCC,QAASN,OAAOO,OAAO,EAA8CC;QAGvE,SAAS;QACT,MAAMC,OAAOT,OAAOS,IAAI,IAAI;QAC5B,IAAIA,SAAS,WAAW;YACtB,IAAI,CAACC,MAAM,GAAGlB,oBAAoBW,aAAaH,OAAOO,OAAO;QAC/D,OAAO,IAAIE,SAAS,QAAQ;YAC1B,IAAI,CAACC,MAAM,GAAGjB,iBAAiBU,aAAaH,OAAOO,OAAO;QAC5D,OAAO,IAAIE,SAAS,UAAU;YAC5B,IAAI,CAACC,MAAM,GAAGhB,mBAAmBS,aAAaH,OAAOO,OAAO;QAC9D,OAAO;YACL,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEF,MAAM;QACrC;QAEAZ,OAAOe,KAAK,CAAC;IACf;IAEA;;GAEC,GACDC,MAAMC,IAAiB,EAAQ;QAC7B,IAAI,CAAC,IAAI,CAACJ,MAAM,EAAE;YAChB,MAAM,IAAIC,MAAM;QAClB;QAEA,uCAAuC;QACvC,yBAAyB;QACzBd,OAAOe,KAAK,CAAC;IACf;IAEA;;GAEC,GACDG,SAASC,EAAU,EAAET,OAAyB,EAAQ;QACpD,IAAI,CAAC,IAAI,CAACG,MAAM,EAAE;YAChB,MAAM,IAAIC,MAAM;QAClB;QAEA,IAAIJ,SAASU,SAAS;YACpB,IAAI,CAACP,MAAM,CAACK,QAAQ,CAACC,IAAI;gBAAEC,SAAS;gBAAMC,OAAOX,QAAQW,KAAK;YAAC;QACjE,OAAO;YACL,IAAI,CAACR,MAAM,CAACK,QAAQ,CAACC,IAAI;gBAAEE,OAAOX,SAASW;YAAM;QACnD;IACF;IAEA;;GAEC,GACDC,kBAAiC;QAC/B,IAAI,CAAC,IAAI,CAACT,MAAM,EAAE;YAChB,MAAM,IAAIC,MAAM;QAClB;QAEA,MAAMO,QAAQ,IAAI,CAACR,MAAM,CAACQ,KAAK;QAC/B,MAAME,WAAWF,MAAME,QAAQ;QAE/B,SAAS;QACT,MAAMC,QAAiC,CAAC;QACxC,IAAID,SAASE,MAAM,EAAE;YACnB,MAAMC,SAAS,IAAIC,gBAAgBJ,SAASE,MAAM;YAClDC,OAAOE,OAAO,CAAC,CAACC,OAAOC;gBACrBN,KAAK,CAACM,IAAI,GAAGD;YACf;QACF;QAEA,OAAO;YACLE,MAAMR,SAASS,QAAQ,GAAGT,SAASU,IAAI;YACvCT;YACAE,QAAQH,SAASF,KAAK;QACxB;IACF;IAEA;;GAEC,GACDa,YAA2D;QACzD,OAAO,IAAI,CAACrB,MAAM;IACpB;IAEA;;GAEC,GACDsB,UAAgB;QACd,IAAI,CAACtB,MAAM,GAAG;QACdb,OAAOe,KAAK,CAAC;IACf;;QAvGA,uBAASqB,QAAO;QAChB,uBAASC,WAAU;QAEnB,uBAAQxB,UAAwD;;AAqGlE;AAEA;;CAEC,GACD,OAAO,SAASyB;IACd,OAAO,CAACC;QACN,OAAO,IAAItC;IACb;AACF"}
|
|
@@ -19,7 +19,7 @@ _export(exports, {
|
|
|
19
19
|
return getDynamicRouteManager;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
const
|
|
22
|
+
const _logger = require("@vlian/logger");
|
|
23
23
|
const _RouterManager = require("../RouterManager");
|
|
24
24
|
const _transform = require("../utils/transform");
|
|
25
25
|
const _errors = require("../errors");
|
|
@@ -68,7 +68,7 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
68
68
|
]);
|
|
69
69
|
// 更新版本号
|
|
70
70
|
this.routeVersion++;
|
|
71
|
-
|
|
71
|
+
_logger.logger.info(`路由已注册: ${routes.length} 个路由到命名空间 "${ns}"`);
|
|
72
72
|
// 返回取消注册函数
|
|
73
73
|
return async ()=>{
|
|
74
74
|
await this.unregister(routes.map((r)=>r.name), ns);
|
|
@@ -85,7 +85,7 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
85
85
|
// 过滤掉要取消注册的路由
|
|
86
86
|
const filteredRoutes = routes.filter((r)=>!routeNames.includes(r.name));
|
|
87
87
|
if (filteredRoutes.length === routes.length) {
|
|
88
|
-
|
|
88
|
+
_logger.logger.warn(`未找到要取消注册的路由: ${routeNames.join(', ')}`);
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
// 更新注册表
|
|
@@ -96,7 +96,7 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
96
96
|
}
|
|
97
97
|
// 更新版本号
|
|
98
98
|
this.routeVersion++;
|
|
99
|
-
|
|
99
|
+
_logger.logger.info(`路由已取消注册: ${routeNames.length} 个路由从命名空间 "${ns}"`);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* 获取指定命名空间的路由
|
|
@@ -124,14 +124,14 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
124
124
|
const ns = namespace || 'default';
|
|
125
125
|
this.registeredRoutes.delete(ns);
|
|
126
126
|
this.routeVersion++;
|
|
127
|
-
|
|
127
|
+
_logger.logger.info(`路由命名空间已清空: "${ns}"`);
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
130
|
* 清空所有路由
|
|
131
131
|
*/ clearAll() {
|
|
132
132
|
this.registeredRoutes.clear();
|
|
133
133
|
this.routeVersion++;
|
|
134
|
-
|
|
134
|
+
_logger.logger.info('所有路由已清空');
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
137
137
|
* 获取路由版本号
|
|
@@ -166,7 +166,7 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
166
166
|
allRoutes.push(...routes);
|
|
167
167
|
});
|
|
168
168
|
if (allRoutes.length === 0) {
|
|
169
|
-
|
|
169
|
+
_logger.logger.warn('没有已注册的路由,无法重新加载');
|
|
170
170
|
return;
|
|
171
171
|
}
|
|
172
172
|
// 转换路由
|
|
@@ -175,7 +175,7 @@ let DynamicRouteManager = class DynamicRouteManager {
|
|
|
175
175
|
// 重新创建路由实例
|
|
176
176
|
// 注意:这里需要获取原始配置的模式和选项
|
|
177
177
|
// 由于当前架构限制,这里只是示例实现
|
|
178
|
-
|
|
178
|
+
_logger.logger.info('路由重新加载完成');
|
|
179
179
|
}
|
|
180
180
|
constructor(){
|
|
181
181
|
_define_property(this, "registeredRoutes", new Map());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/dynamic/DynamicRouteManager.ts"],"sourcesContent":["/**\n * 路由动态注册管理器\n * 支持运行时动态注册和卸载路由\n */\n\nimport { logger } from '
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/dynamic/DynamicRouteManager.ts"],"sourcesContent":["/**\n * 路由动态注册管理器\n * 支持运行时动态注册和卸载路由\n */\n\nimport { logger } from '@vlian/logger';\nimport type { RouteConfig } from '../types';\nimport { getRouterManager } from '../RouterManager';\nimport { transformRoutes } from '../utils/transform';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 动态路由注册管理器\n */\nexport class DynamicRouteManager {\n private registeredRoutes: Map<string, RouteConfig[]> = new Map();\n private routeVersion: number = 0;\n\n /**\n * 注册路由\n * \n * @param routes - 要注册的路由配置\n * @param namespace - 路由命名空间(可选,用于分组管理)\n * @returns 取消注册函数\n */\n async register(\n routes: RouteConfig[],\n namespace?: string\n ): Promise<() => Promise<void>> {\n const ns = namespace || 'default';\n\n // 验证路由配置\n if (!Array.isArray(routes) || routes.length === 0) {\n throw new RouterError(\n '路由配置必须是非空数组',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 检查路由名称是否冲突\n const existingRoutes = this.registeredRoutes.get(ns) || [];\n const existingNames = new Set(existingRoutes.map((r) => r.name));\n const newNames = routes.map((r) => r.name);\n const conflicts = newNames.filter((name) => existingNames.has(name));\n\n if (conflicts.length > 0) {\n throw new RouterError(\n `路由名称冲突: ${conflicts.join(', ')}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { conflicts, namespace: ns }\n );\n }\n\n // 添加到注册表\n const currentRoutes = this.registeredRoutes.get(ns) || [];\n this.registeredRoutes.set(ns, [...currentRoutes, ...routes]);\n\n // 更新版本号\n this.routeVersion++;\n\n logger.info(`路由已注册: ${routes.length} 个路由到命名空间 \"${ns}\"`);\n\n // 返回取消注册函数\n return async () => {\n await this.unregister(routes.map((r) => r.name), ns);\n };\n }\n\n /**\n * 取消注册路由\n * \n * @param routeNames - 要取消注册的路由名称数组\n * @param namespace - 路由命名空间(可选)\n */\n async unregister(routeNames: string[], namespace?: string): Promise<void> {\n const ns = namespace || 'default';\n const routes = this.registeredRoutes.get(ns) || [];\n\n // 过滤掉要取消注册的路由\n const filteredRoutes = routes.filter((r) => !routeNames.includes(r.name));\n\n if (filteredRoutes.length === routes.length) {\n logger.warn(`未找到要取消注册的路由: ${routeNames.join(', ')}`);\n return;\n }\n\n // 更新注册表\n if (filteredRoutes.length === 0) {\n this.registeredRoutes.delete(ns);\n } else {\n this.registeredRoutes.set(ns, filteredRoutes);\n }\n\n // 更新版本号\n this.routeVersion++;\n\n logger.info(\n `路由已取消注册: ${routeNames.length} 个路由从命名空间 \"${ns}\"`\n );\n }\n\n /**\n * 获取指定命名空间的路由\n * \n * @param namespace - 路由命名空间(可选)\n * @returns 路由配置数组\n */\n getRoutes(namespace?: string): RouteConfig[] {\n const ns = namespace || 'default';\n return [...(this.registeredRoutes.get(ns) || [])];\n }\n\n /**\n * 获取所有路由\n * \n * @returns 所有命名空间的路由配置\n */\n getAllRoutes(): Map<string, RouteConfig[]> {\n return new Map(this.registeredRoutes);\n }\n\n /**\n * 清空指定命名空间的路由\n * \n * @param namespace - 路由命名空间(可选)\n */\n clear(namespace?: string): void {\n const ns = namespace || 'default';\n this.registeredRoutes.delete(ns);\n this.routeVersion++;\n logger.info(`路由命名空间已清空: \"${ns}\"`);\n }\n\n /**\n * 清空所有路由\n */\n clearAll(): void {\n this.registeredRoutes.clear();\n this.routeVersion++;\n logger.info('所有路由已清空');\n }\n\n /**\n * 获取路由版本号\n * \n * @returns 路由版本号\n */\n getVersion(): number {\n return this.routeVersion;\n }\n\n /**\n * 检查路由是否已注册\n * \n * @param routeName - 路由名称\n * @param namespace - 路由命名空间(可选)\n * @returns 如果已注册返回 true,否则返回 false\n */\n isRegistered(routeName: string, namespace?: string): boolean {\n const ns = namespace || 'default';\n const routes = this.registeredRoutes.get(ns) || [];\n return routes.some((r) => r.name === routeName);\n }\n\n /**\n * 重新加载路由\n * \n * 注意:此方法会重新初始化路由管理器,需要谨慎使用\n */\n async reload(): Promise<void> {\n const routerManager = getRouterManager();\n if (!routerManager.isInitialized()) {\n throw new RouterError(\n '路由管理器未初始化',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n // 获取所有路由\n const allRoutes: RouteConfig[] = [];\n this.registeredRoutes.forEach((routes) => {\n allRoutes.push(...routes);\n });\n\n if (allRoutes.length === 0) {\n logger.warn('没有已注册的路由,无法重新加载');\n return;\n }\n\n // 转换路由\n await transformRoutes(allRoutes);\n // const reactRoutes = await transformRoutesToReactRoutes(result.routes, result);\n\n // 重新创建路由实例\n // 注意:这里需要获取原始配置的模式和选项\n // 由于当前架构限制,这里只是示例实现\n logger.info('路由重新加载完成');\n }\n}\n\n/**\n * 获取动态路由管理器单例\n */\nlet dynamicRouteManagerInstance: DynamicRouteManager | null = null;\n\nexport function getDynamicRouteManager(): DynamicRouteManager {\n if (!dynamicRouteManagerInstance) {\n dynamicRouteManagerInstance = new DynamicRouteManager();\n }\n return dynamicRouteManagerInstance;\n}\n"],"names":["DynamicRouteManager","getDynamicRouteManager","register","routes","namespace","ns","Array","isArray","length","RouterError","RouterErrorCode","ROUTER_CONFIG_ERROR","existingRoutes","registeredRoutes","get","existingNames","Set","map","r","name","newNames","conflicts","filter","has","join","undefined","currentRoutes","set","routeVersion","logger","info","unregister","routeNames","filteredRoutes","includes","warn","delete","getRoutes","getAllRoutes","Map","clear","clearAll","getVersion","isRegistered","routeName","some","reload","routerManager","getRouterManager","isInitialized","ROUTER_NOT_INITIALIZED","allRoutes","forEach","push","transformRoutes","dynamicRouteManagerInstance"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAWYA;eAAAA;;QAiMGC;eAAAA;;;wBA1MO;+BAEU;2BACD;wBACa;;;;;;;;;;;;;;AAKtC,IAAA,AAAMD,sBAAN,MAAMA;IAIX;;;;;;GAMC,GACD,MAAME,SACJC,MAAqB,EACrBC,SAAkB,EACY;QAC9B,MAAMC,KAAKD,aAAa;QAExB,SAAS;QACT,IAAI,CAACE,MAAMC,OAAO,CAACJ,WAAWA,OAAOK,MAAM,KAAK,GAAG;YACjD,MAAM,IAAIC,mBAAW,CACnB,eACAC,uBAAe,CAACC,mBAAmB;QAEvC;QAEA,aAAa;QACb,MAAMC,iBAAiB,IAAI,CAACC,gBAAgB,CAACC,GAAG,CAACT,OAAO,EAAE;QAC1D,MAAMU,gBAAgB,IAAIC,IAAIJ,eAAeK,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI;QAC9D,MAAMC,WAAWjB,OAAOc,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI;QACzC,MAAME,YAAYD,SAASE,MAAM,CAAC,CAACH,OAASJ,cAAcQ,GAAG,CAACJ;QAE9D,IAAIE,UAAUb,MAAM,GAAG,GAAG;YACxB,MAAM,IAAIC,mBAAW,CACnB,CAAC,QAAQ,EAAEY,UAAUG,IAAI,CAAC,OAAO,EACjCd,uBAAe,CAACC,mBAAmB,EACnCc,WACAA,WACA;gBAAEJ;gBAAWjB,WAAWC;YAAG;QAE/B;QAEA,SAAS;QACT,MAAMqB,gBAAgB,IAAI,CAACb,gBAAgB,CAACC,GAAG,CAACT,OAAO,EAAE;QACzD,IAAI,CAACQ,gBAAgB,CAACc,GAAG,CAACtB,IAAI;eAAIqB;eAAkBvB;SAAO;QAE3D,QAAQ;QACR,IAAI,CAACyB,YAAY;QAEjBC,cAAM,CAACC,IAAI,CAAC,CAAC,OAAO,EAAE3B,OAAOK,MAAM,CAAC,WAAW,EAAEH,GAAG,CAAC,CAAC;QAEtD,WAAW;QACX,OAAO;YACL,MAAM,IAAI,CAAC0B,UAAU,CAAC5B,OAAOc,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,GAAGd;QACnD;IACF;IAEA;;;;;GAKC,GACD,MAAM0B,WAAWC,UAAoB,EAAE5B,SAAkB,EAAiB;QACxE,MAAMC,KAAKD,aAAa;QACxB,MAAMD,SAAS,IAAI,CAACU,gBAAgB,CAACC,GAAG,CAACT,OAAO,EAAE;QAElD,cAAc;QACd,MAAM4B,iBAAiB9B,OAAOmB,MAAM,CAAC,CAACJ,IAAM,CAACc,WAAWE,QAAQ,CAAChB,EAAEC,IAAI;QAEvE,IAAIc,eAAezB,MAAM,KAAKL,OAAOK,MAAM,EAAE;YAC3CqB,cAAM,CAACM,IAAI,CAAC,CAAC,aAAa,EAAEH,WAAWR,IAAI,CAAC,OAAO;YACnD;QACF;QAEA,QAAQ;QACR,IAAIS,eAAezB,MAAM,KAAK,GAAG;YAC/B,IAAI,CAACK,gBAAgB,CAACuB,MAAM,CAAC/B;QAC/B,OAAO;YACL,IAAI,CAACQ,gBAAgB,CAACc,GAAG,CAACtB,IAAI4B;QAChC;QAEA,QAAQ;QACR,IAAI,CAACL,YAAY;QAEjBC,cAAM,CAACC,IAAI,CACT,CAAC,SAAS,EAAEE,WAAWxB,MAAM,CAAC,WAAW,EAAEH,GAAG,CAAC,CAAC;IAEpD;IAEA;;;;;GAKC,GACDgC,UAAUjC,SAAkB,EAAiB;QAC3C,MAAMC,KAAKD,aAAa;QACxB,OAAO;eAAK,IAAI,CAACS,gBAAgB,CAACC,GAAG,CAACT,OAAO,EAAE;SAAE;IACnD;IAEA;;;;GAIC,GACDiC,eAA2C;QACzC,OAAO,IAAIC,IAAI,IAAI,CAAC1B,gBAAgB;IACtC;IAEA;;;;GAIC,GACD2B,MAAMpC,SAAkB,EAAQ;QAC9B,MAAMC,KAAKD,aAAa;QACxB,IAAI,CAACS,gBAAgB,CAACuB,MAAM,CAAC/B;QAC7B,IAAI,CAACuB,YAAY;QACjBC,cAAM,CAACC,IAAI,CAAC,CAAC,YAAY,EAAEzB,GAAG,CAAC,CAAC;IAClC;IAEA;;GAEC,GACDoC,WAAiB;QACf,IAAI,CAAC5B,gBAAgB,CAAC2B,KAAK;QAC3B,IAAI,CAACZ,YAAY;QACjBC,cAAM,CAACC,IAAI,CAAC;IACd;IAEA;;;;GAIC,GACDY,aAAqB;QACnB,OAAO,IAAI,CAACd,YAAY;IAC1B;IAEA;;;;;;GAMC,GACDe,aAAaC,SAAiB,EAAExC,SAAkB,EAAW;QAC3D,MAAMC,KAAKD,aAAa;QACxB,MAAMD,SAAS,IAAI,CAACU,gBAAgB,CAACC,GAAG,CAACT,OAAO,EAAE;QAClD,OAAOF,OAAO0C,IAAI,CAAC,CAAC3B,IAAMA,EAAEC,IAAI,KAAKyB;IACvC;IAEA;;;;GAIC,GACD,MAAME,SAAwB;QAC5B,MAAMC,gBAAgBC,IAAAA,+BAAgB;QACtC,IAAI,CAACD,cAAcE,aAAa,IAAI;YAClC,MAAM,IAAIxC,mBAAW,CACnB,aACAC,uBAAe,CAACwC,sBAAsB;QAE1C;QAEA,SAAS;QACT,MAAMC,YAA2B,EAAE;QACnC,IAAI,CAACtC,gBAAgB,CAACuC,OAAO,CAAC,CAACjD;YAC7BgD,UAAUE,IAAI,IAAIlD;QACpB;QAEA,IAAIgD,UAAU3C,MAAM,KAAK,GAAG;YAC1BqB,cAAM,CAACM,IAAI,CAAC;YACZ;QACF;QAEA,OAAO;QACP,MAAMmB,IAAAA,0BAAe,EAACH;QACtB,iFAAiF;QAEjF,WAAW;QACX,sBAAsB;QACtB,oBAAoB;QACpBtB,cAAM,CAACC,IAAI,CAAC;IACd;;QAxLA,uBAAQjB,oBAA+C,IAAI0B;QAC3D,uBAAQX,gBAAuB;;AAwLjC;AAEA;;CAEC,GACD,IAAI2B,8BAA0D;AAEvD,SAAStD;IACd,IAAI,CAACsD,6BAA6B;QAChCA,8BAA8B,IAAIvD;IACpC;IACA,OAAOuD;AACT"}
|
|
@@ -14,7 +14,7 @@ function _define_property(obj, key, value) {
|
|
|
14
14
|
/**
|
|
15
15
|
* 路由动态注册管理器
|
|
16
16
|
* 支持运行时动态注册和卸载路由
|
|
17
|
-
*/ import { logger } from "
|
|
17
|
+
*/ import { logger } from "@vlian/logger";
|
|
18
18
|
import { getRouterManager } from "../RouterManager";
|
|
19
19
|
import { transformRoutes } from "../utils/transform";
|
|
20
20
|
import { RouterError, RouterErrorCode } from "../errors";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/dynamic/DynamicRouteManager.ts"],"sourcesContent":["/**\n * 路由动态注册管理器\n * 支持运行时动态注册和卸载路由\n */\n\nimport { logger } from '
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/dynamic/DynamicRouteManager.ts"],"sourcesContent":["/**\n * 路由动态注册管理器\n * 支持运行时动态注册和卸载路由\n */\n\nimport { logger } from '@vlian/logger';\nimport type { RouteConfig } from '../types';\nimport { getRouterManager } from '../RouterManager';\nimport { transformRoutes } from '../utils/transform';\nimport { RouterError, RouterErrorCode } from '../errors';\n\n/**\n * 动态路由注册管理器\n */\nexport class DynamicRouteManager {\n private registeredRoutes: Map<string, RouteConfig[]> = new Map();\n private routeVersion: number = 0;\n\n /**\n * 注册路由\n * \n * @param routes - 要注册的路由配置\n * @param namespace - 路由命名空间(可选,用于分组管理)\n * @returns 取消注册函数\n */\n async register(\n routes: RouteConfig[],\n namespace?: string\n ): Promise<() => Promise<void>> {\n const ns = namespace || 'default';\n\n // 验证路由配置\n if (!Array.isArray(routes) || routes.length === 0) {\n throw new RouterError(\n '路由配置必须是非空数组',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 检查路由名称是否冲突\n const existingRoutes = this.registeredRoutes.get(ns) || [];\n const existingNames = new Set(existingRoutes.map((r) => r.name));\n const newNames = routes.map((r) => r.name);\n const conflicts = newNames.filter((name) => existingNames.has(name));\n\n if (conflicts.length > 0) {\n throw new RouterError(\n `路由名称冲突: ${conflicts.join(', ')}`,\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { conflicts, namespace: ns }\n );\n }\n\n // 添加到注册表\n const currentRoutes = this.registeredRoutes.get(ns) || [];\n this.registeredRoutes.set(ns, [...currentRoutes, ...routes]);\n\n // 更新版本号\n this.routeVersion++;\n\n logger.info(`路由已注册: ${routes.length} 个路由到命名空间 \"${ns}\"`);\n\n // 返回取消注册函数\n return async () => {\n await this.unregister(routes.map((r) => r.name), ns);\n };\n }\n\n /**\n * 取消注册路由\n * \n * @param routeNames - 要取消注册的路由名称数组\n * @param namespace - 路由命名空间(可选)\n */\n async unregister(routeNames: string[], namespace?: string): Promise<void> {\n const ns = namespace || 'default';\n const routes = this.registeredRoutes.get(ns) || [];\n\n // 过滤掉要取消注册的路由\n const filteredRoutes = routes.filter((r) => !routeNames.includes(r.name));\n\n if (filteredRoutes.length === routes.length) {\n logger.warn(`未找到要取消注册的路由: ${routeNames.join(', ')}`);\n return;\n }\n\n // 更新注册表\n if (filteredRoutes.length === 0) {\n this.registeredRoutes.delete(ns);\n } else {\n this.registeredRoutes.set(ns, filteredRoutes);\n }\n\n // 更新版本号\n this.routeVersion++;\n\n logger.info(\n `路由已取消注册: ${routeNames.length} 个路由从命名空间 \"${ns}\"`\n );\n }\n\n /**\n * 获取指定命名空间的路由\n * \n * @param namespace - 路由命名空间(可选)\n * @returns 路由配置数组\n */\n getRoutes(namespace?: string): RouteConfig[] {\n const ns = namespace || 'default';\n return [...(this.registeredRoutes.get(ns) || [])];\n }\n\n /**\n * 获取所有路由\n * \n * @returns 所有命名空间的路由配置\n */\n getAllRoutes(): Map<string, RouteConfig[]> {\n return new Map(this.registeredRoutes);\n }\n\n /**\n * 清空指定命名空间的路由\n * \n * @param namespace - 路由命名空间(可选)\n */\n clear(namespace?: string): void {\n const ns = namespace || 'default';\n this.registeredRoutes.delete(ns);\n this.routeVersion++;\n logger.info(`路由命名空间已清空: \"${ns}\"`);\n }\n\n /**\n * 清空所有路由\n */\n clearAll(): void {\n this.registeredRoutes.clear();\n this.routeVersion++;\n logger.info('所有路由已清空');\n }\n\n /**\n * 获取路由版本号\n * \n * @returns 路由版本号\n */\n getVersion(): number {\n return this.routeVersion;\n }\n\n /**\n * 检查路由是否已注册\n * \n * @param routeName - 路由名称\n * @param namespace - 路由命名空间(可选)\n * @returns 如果已注册返回 true,否则返回 false\n */\n isRegistered(routeName: string, namespace?: string): boolean {\n const ns = namespace || 'default';\n const routes = this.registeredRoutes.get(ns) || [];\n return routes.some((r) => r.name === routeName);\n }\n\n /**\n * 重新加载路由\n * \n * 注意:此方法会重新初始化路由管理器,需要谨慎使用\n */\n async reload(): Promise<void> {\n const routerManager = getRouterManager();\n if (!routerManager.isInitialized()) {\n throw new RouterError(\n '路由管理器未初始化',\n RouterErrorCode.ROUTER_NOT_INITIALIZED\n );\n }\n\n // 获取所有路由\n const allRoutes: RouteConfig[] = [];\n this.registeredRoutes.forEach((routes) => {\n allRoutes.push(...routes);\n });\n\n if (allRoutes.length === 0) {\n logger.warn('没有已注册的路由,无法重新加载');\n return;\n }\n\n // 转换路由\n await transformRoutes(allRoutes);\n // const reactRoutes = await transformRoutesToReactRoutes(result.routes, result);\n\n // 重新创建路由实例\n // 注意:这里需要获取原始配置的模式和选项\n // 由于当前架构限制,这里只是示例实现\n logger.info('路由重新加载完成');\n }\n}\n\n/**\n * 获取动态路由管理器单例\n */\nlet dynamicRouteManagerInstance: DynamicRouteManager | null = null;\n\nexport function getDynamicRouteManager(): DynamicRouteManager {\n if (!dynamicRouteManagerInstance) {\n dynamicRouteManagerInstance = new DynamicRouteManager();\n }\n return dynamicRouteManagerInstance;\n}\n"],"names":["logger","getRouterManager","transformRoutes","RouterError","RouterErrorCode","DynamicRouteManager","register","routes","namespace","ns","Array","isArray","length","ROUTER_CONFIG_ERROR","existingRoutes","registeredRoutes","get","existingNames","Set","map","r","name","newNames","conflicts","filter","has","join","undefined","currentRoutes","set","routeVersion","info","unregister","routeNames","filteredRoutes","includes","warn","delete","getRoutes","getAllRoutes","Map","clear","clearAll","getVersion","isRegistered","routeName","some","reload","routerManager","isInitialized","ROUTER_NOT_INITIALIZED","allRoutes","forEach","push","dynamicRouteManagerInstance","getDynamicRouteManager"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ _export(exports, {
|
|
|
21
21
|
return createRouterError;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
-
const
|
|
24
|
+
const _utils = require("@vlian/utils");
|
|
25
25
|
var RouterErrorCode = /*#__PURE__*/ function(RouterErrorCode) {
|
|
26
26
|
/**
|
|
27
27
|
* 路由未初始化
|
|
@@ -46,9 +46,9 @@ var RouterErrorCode = /*#__PURE__*/ function(RouterErrorCode) {
|
|
|
46
46
|
*/ RouterErrorCode["ROUTE_TRANSFORM_FAILED"] = "ROUTE_TRANSFORM_FAILED";
|
|
47
47
|
return RouterErrorCode;
|
|
48
48
|
}({});
|
|
49
|
-
let RouterError = class RouterError extends
|
|
50
|
-
constructor(message, code, severity =
|
|
51
|
-
super(message,
|
|
49
|
+
let RouterError = class RouterError extends _utils.FrameworkError {
|
|
50
|
+
constructor(message, code, severity = _utils.ErrorSeverity.MEDIUM, cause, context){
|
|
51
|
+
super(message, _utils.ErrorType.RUNTIME, severity, {
|
|
52
52
|
code,
|
|
53
53
|
originalError: cause,
|
|
54
54
|
context: context || {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/errors/RouterError.ts"],"sourcesContent":["/**\n * 路由错误类型定义\n */\n\nimport { FrameworkError, ErrorSeverity, ErrorType } from '
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/errors/RouterError.ts"],"sourcesContent":["/**\n * 路由错误类型定义\n */\n\nimport { FrameworkError, ErrorSeverity, ErrorType } from '@vlian/utils';\n\n/**\n * 路由错误代码\n */\nexport enum RouterErrorCode {\n /**\n * 路由未初始化\n */\n ROUTER_NOT_INITIALIZED = 'ROUTER_NOT_INITIALIZED',\n\n /**\n * 路由配置错误\n */\n ROUTER_CONFIG_ERROR = 'ROUTER_CONFIG_ERROR',\n\n /**\n * 路由未找到\n */\n ROUTE_NOT_FOUND = 'ROUTE_NOT_FOUND',\n\n /**\n * 路由导航失败\n */\n ROUTE_NAVIGATION_FAILED = 'ROUTE_NAVIGATION_FAILED',\n\n /**\n * 路由权限不足\n */\n ROUTE_PERMISSION_DENIED = 'ROUTE_PERMISSION_DENIED',\n\n /**\n * 路由组件加载失败\n */\n ROUTE_COMPONENT_LOAD_FAILED = 'ROUTE_COMPONENT_LOAD_FAILED',\n\n /**\n * 路由转换失败\n */\n ROUTE_TRANSFORM_FAILED = 'ROUTE_TRANSFORM_FAILED',\n}\n\n/**\n * 路由错误\n */\nexport class RouterError extends FrameworkError {\n constructor(\n message: string,\n code: RouterErrorCode,\n severity: ErrorSeverity = ErrorSeverity.MEDIUM,\n cause?: Error,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorType.RUNTIME, severity, {\n code,\n originalError: cause,\n context: context || {},\n });\n this.name = 'RouterError';\n }\n}\n\n/**\n * 创建路由错误\n */\nexport function createRouterError(\n message: string,\n code: RouterErrorCode,\n severity?: ErrorSeverity,\n cause?: Error,\n context?: Record<string, unknown>\n): RouterError {\n return new RouterError(message, code, severity, cause, context);\n}\n"],"names":["RouterError","RouterErrorCode","createRouterError","FrameworkError","message","code","severity","ErrorSeverity","MEDIUM","cause","context","ErrorType","RUNTIME","originalError","name"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QA+CYA;eAAAA;;QAxCDC;eAAAA;;QA4DIC;eAAAA;;;uBAjEyC;AAKlD,IAAA,AAAKD,yCAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAjCSA;;AAwCL,IAAA,AAAMD,cAAN,MAAMA,oBAAoBG,qBAAc;IAC7C,YACEC,OAAe,EACfC,IAAqB,EACrBC,WAA0BC,oBAAa,CAACC,MAAM,EAC9CC,KAAa,EACbC,OAAiC,CACjC;QACA,KAAK,CAACN,SAASO,gBAAS,CAACC,OAAO,EAAEN,UAAU;YAC1CD;YACAQ,eAAeJ;YACfC,SAASA,WAAW,CAAC;QACvB;QACA,IAAI,CAACI,IAAI,GAAG;IACd;AACF;AAKO,SAASZ,kBACdE,OAAe,EACfC,IAAqB,EACrBC,QAAwB,EACxBG,KAAa,EACbC,OAAiC;IAEjC,OAAO,IAAIV,YAAYI,SAASC,MAAMC,UAAUG,OAAOC;AACzD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 路由错误类型定义
|
|
3
|
-
*/ import { FrameworkError, ErrorSeverity, ErrorType } from "
|
|
3
|
+
*/ import { FrameworkError, ErrorSeverity, ErrorType } from "@vlian/utils";
|
|
4
4
|
/**
|
|
5
5
|
* 路由错误代码
|
|
6
6
|
*/ export var RouterErrorCode = /*#__PURE__*/ function(RouterErrorCode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/router/errors/RouterError.ts"],"sourcesContent":["/**\n * 路由错误类型定义\n */\n\nimport { FrameworkError, ErrorSeverity, ErrorType } from '
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/router/errors/RouterError.ts"],"sourcesContent":["/**\n * 路由错误类型定义\n */\n\nimport { FrameworkError, ErrorSeverity, ErrorType } from '@vlian/utils';\n\n/**\n * 路由错误代码\n */\nexport enum RouterErrorCode {\n /**\n * 路由未初始化\n */\n ROUTER_NOT_INITIALIZED = 'ROUTER_NOT_INITIALIZED',\n\n /**\n * 路由配置错误\n */\n ROUTER_CONFIG_ERROR = 'ROUTER_CONFIG_ERROR',\n\n /**\n * 路由未找到\n */\n ROUTE_NOT_FOUND = 'ROUTE_NOT_FOUND',\n\n /**\n * 路由导航失败\n */\n ROUTE_NAVIGATION_FAILED = 'ROUTE_NAVIGATION_FAILED',\n\n /**\n * 路由权限不足\n */\n ROUTE_PERMISSION_DENIED = 'ROUTE_PERMISSION_DENIED',\n\n /**\n * 路由组件加载失败\n */\n ROUTE_COMPONENT_LOAD_FAILED = 'ROUTE_COMPONENT_LOAD_FAILED',\n\n /**\n * 路由转换失败\n */\n ROUTE_TRANSFORM_FAILED = 'ROUTE_TRANSFORM_FAILED',\n}\n\n/**\n * 路由错误\n */\nexport class RouterError extends FrameworkError {\n constructor(\n message: string,\n code: RouterErrorCode,\n severity: ErrorSeverity = ErrorSeverity.MEDIUM,\n cause?: Error,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorType.RUNTIME, severity, {\n code,\n originalError: cause,\n context: context || {},\n });\n this.name = 'RouterError';\n }\n}\n\n/**\n * 创建路由错误\n */\nexport function createRouterError(\n message: string,\n code: RouterErrorCode,\n severity?: ErrorSeverity,\n cause?: Error,\n context?: Record<string, unknown>\n): RouterError {\n return new RouterError(message, code, severity, cause, context);\n}\n"],"names":["FrameworkError","ErrorSeverity","ErrorType","RouterErrorCode","RouterError","message","code","severity","MEDIUM","cause","context","RUNTIME","originalError","name","createRouterError"],"mappings":"AAAA;;CAEC,GAED,SAASA,cAAc,EAAEC,aAAa,EAAEC,SAAS,QAAQ,eAAe;AAExE;;CAEC,GACD,OAAO,IAAA,AAAKC,yCAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAjCSA;MAmCX;AAED;;CAEC,GACD,OAAO,MAAMC,oBAAoBJ;IAC/B,YACEK,OAAe,EACfC,IAAqB,EACrBC,WAA0BN,cAAcO,MAAM,EAC9CC,KAAa,EACbC,OAAiC,CACjC;QACA,KAAK,CAACL,SAASH,UAAUS,OAAO,EAAEJ,UAAU;YAC1CD;YACAM,eAAeH;YACfC,SAASA,WAAW,CAAC;QACvB;QACA,IAAI,CAACG,IAAI,GAAG;IACd;AACF;AAEA;;CAEC,GACD,OAAO,SAASC,kBACdT,OAAe,EACfC,IAAqB,EACrBC,QAAwB,EACxBE,KAAa,EACbC,OAAiC;IAEjC,OAAO,IAAIN,YAAYC,SAASC,MAAMC,UAAUE,OAAOC;AACzD"}
|