@vlian/framework 1.2.59 → 1.2.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/analytics/index.cjs +1 -22
  2. package/dist/analytics.umd.js +1 -1
  3. package/dist/components/LocaleSwitch.cjs +1 -116
  4. package/dist/components/ThemeSwitch.cjs +1 -115
  5. package/dist/components/index.cjs +1 -20
  6. package/dist/components/persistence.cjs +1 -58
  7. package/dist/core/Test.cjs +1 -64
  8. package/dist/core/app/AppContext.cjs +1 -348
  9. package/dist/core/app/AppContext.types.cjs +1 -4
  10. package/dist/core/app/BasicLayout.cjs +1 -122
  11. package/dist/core/app/DefaultApp.cjs +1 -150
  12. package/dist/core/app/index.cjs +1 -41
  13. package/dist/core/config/AppConfig.cjs +1 -139
  14. package/dist/core/config/ConfigLoader.cjs +1 -323
  15. package/dist/core/config/ConfigValidator.cjs +2 -133
  16. package/dist/core/config/index.cjs +1 -28
  17. package/dist/core/dev/DevTools.cjs +1 -226
  18. package/dist/core/error/ErrorBoundary.cjs +1 -401
  19. package/dist/core/error/ErrorHandler.cjs +1 -275
  20. package/dist/core/error/index.cjs +1 -34
  21. package/dist/core/event/AppEventBus.cjs +1 -444
  22. package/dist/core/event/frameworkEvents.cjs +1 -141
  23. package/dist/core/event/hooks.cjs +1 -69
  24. package/dist/core/event/index.cjs +1 -41
  25. package/dist/core/event/types.cjs +1 -62
  26. package/dist/core/event/useEventBus.cjs +1 -25
  27. package/dist/core/index.cjs +1 -140
  28. package/dist/core/initialization/InitializationErrorThrower.cjs +1 -75
  29. package/dist/core/initialization/index.cjs +1 -26
  30. package/dist/core/initialization/initialization.cjs +1 -64
  31. package/dist/core/initialization/initializationErrorState.cjs +1 -66
  32. package/dist/core/kernel/defaultAdapters.cjs +1 -184
  33. package/dist/core/kernel/errors.cjs +1 -69
  34. package/dist/core/kernel/index.cjs +1 -20
  35. package/dist/core/kernel/startKernel.cjs +1 -200
  36. package/dist/core/kernel/types.cjs +1 -4
  37. package/dist/core/middleware.cjs +1 -73
  38. package/dist/core/plugin/PluginEventBus.cjs +1 -298
  39. package/dist/core/plugin/PluginSandbox.cjs +1 -137
  40. package/dist/core/plugin.cjs +1 -494
  41. package/dist/core/router/RouterManager.cjs +1 -286
  42. package/dist/core/router/adapter/AdapterManager.cjs +1 -235
  43. package/dist/core/router/adapter/index.cjs +1 -22
  44. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -128
  45. package/dist/core/router/adapter/react-router/index.cjs +1 -20
  46. package/dist/core/router/adapter/types.cjs +1 -6
  47. package/dist/core/router/dev/RouterDevTools.cjs +1 -260
  48. package/dist/core/router/dev/index.cjs +1 -20
  49. package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -193
  50. package/dist/core/router/dynamic/index.cjs +1 -20
  51. package/dist/core/router/errors/RouterError.cjs +1 -61
  52. package/dist/core/router/errors/index.cjs +1 -20
  53. package/dist/core/router/index.cjs +1 -36
  54. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -144
  55. package/dist/core/router/lifecycle/index.cjs +1 -20
  56. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -193
  57. package/dist/core/router/middleware/auth.cjs +1 -66
  58. package/dist/core/router/middleware/index.cjs +1 -22
  59. package/dist/core/router/middleware/types.cjs +1 -6
  60. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -227
  61. package/dist/core/router/monitoring/index.cjs +1 -20
  62. package/dist/core/router/navigation/RouterNavigation.cjs +1 -239
  63. package/dist/core/router/navigation/index.cjs +1 -20
  64. package/dist/core/router/performance/RouteCache.cjs +1 -305
  65. package/dist/core/router/performance/RoutePreloader.cjs +1 -292
  66. package/dist/core/router/performance/index.cjs +1 -21
  67. package/dist/core/router/plugin/RouterPluginManager.cjs +1 -262
  68. package/dist/core/router/plugin/index.cjs +1 -21
  69. package/dist/core/router/plugin/types.cjs +1 -39
  70. package/dist/core/router/types.cjs +1 -4
  71. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -129
  72. package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -250
  73. package/dist/core/router/utils/transform.cjs +1 -780
  74. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -83
  75. package/dist/core/router/validation/index.cjs +1 -21
  76. package/dist/core/router/validation/schema.cjs +1 -159
  77. package/dist/core/router/version/RouteVersionManager.cjs +1 -205
  78. package/dist/core/router/version/index.cjs +1 -20
  79. package/dist/core/splash/SplashScreen.cjs +1 -341
  80. package/dist/core/splash/index.cjs +1 -22
  81. package/dist/core/splash/splashScreenUtils.cjs +1 -38
  82. package/dist/core/startup/AppInstance.cjs +1 -239
  83. package/dist/core/startup/environment.cjs +1 -169
  84. package/dist/core/startup/index.cjs +1 -23
  85. package/dist/core/startup/initializeServices.cjs +1 -226
  86. package/dist/core/startup/performanceTracker.cjs +1 -179
  87. package/dist/core/startup/renderApp.cjs +1 -314
  88. package/dist/core/startup/startApp.cjs +1 -317
  89. package/dist/core/types.cjs +1 -4
  90. package/dist/index.cjs +1 -52
  91. package/dist/index.umd.cjs +1 -27
  92. package/dist/index.umd.js +1 -1
  93. package/dist/kernel/constants.cjs +1 -65
  94. package/dist/kernel/index.cjs +1 -38
  95. package/dist/kernel/kernel.cjs +1 -295
  96. package/dist/kernel/manager/cacheManager.cjs +1 -46
  97. package/dist/kernel/manager/i18n/I18nManager.cjs +1 -91
  98. package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -60
  99. package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -86
  100. package/dist/kernel/manager/i18n/index.cjs +1 -11
  101. package/dist/kernel/manager/i18nManager.cjs +1 -11
  102. package/dist/kernel/manager/index.cjs +1 -28
  103. package/dist/kernel/manager/logger/LoggerManager.cjs +1 -107
  104. package/dist/kernel/manager/logger/index.cjs +1 -11
  105. package/dist/kernel/manager/logger/logger.persistence.cjs +1 -62
  106. package/dist/kernel/manager/logger/logger.schema.cjs +1 -74
  107. package/dist/kernel/manager/loggerManager.cjs +1 -11
  108. package/dist/kernel/manager/theme/ThemeManager.cjs +1 -84
  109. package/dist/kernel/manager/theme/index.cjs +1 -11
  110. package/dist/kernel/manager/theme/theme.dom.cjs +1 -61
  111. package/dist/kernel/manager/theme/theme.persistence.cjs +1 -57
  112. package/dist/kernel/manager/theme/theme.schema.cjs +1 -122
  113. package/dist/kernel/manager/themeManager.cjs +1 -11
  114. package/dist/kernel/types.cjs +1 -4
  115. package/dist/library/index.cjs +1 -19
  116. package/dist/library/locale/index.cjs +1 -39
  117. package/dist/library/locale/langs/en-us/index.cjs +1 -32
  118. package/dist/library/locale/langs/zh-cn/index.cjs +1 -32
  119. package/dist/library/locale/types.cjs +1 -4
  120. package/dist/library/storage/cache.cjs +1 -243
  121. package/dist/library/storage/encryption.cjs +1 -147
  122. package/dist/library/storage/index.cjs +1 -124
  123. package/dist/state/StateManager.cjs +1 -166
  124. package/dist/state/adapters/AdapterFactory.cjs +1 -89
  125. package/dist/state/adapters/DefaultAdapter.cjs +1 -75
  126. package/dist/state/adapters/ReduxAdapter.cjs +1 -443
  127. package/dist/state/adapters/ZustandAdapter.cjs +1 -69
  128. package/dist/state/adapters/index.cjs +1 -44
  129. package/dist/state/adapters/types.cjs +1 -20
  130. package/dist/state/core/DerivedStateInstance.cjs +1 -174
  131. package/dist/state/core/StateInstance.cjs +1 -170
  132. package/dist/state/core/StateRegistry.cjs +1 -110
  133. package/dist/state/core/StateScope.cjs +1 -137
  134. package/dist/state/core/index.cjs +1 -30
  135. package/dist/state/index.cjs +1 -30
  136. package/dist/state/types.cjs +1 -12
  137. package/dist/state.umd.js +1 -1
  138. package/dist/types.cjs +1 -4
  139. package/dist/utils/analytics.cjs +1 -217
  140. package/dist/utils/configSecurity.cjs +3 -182
  141. package/dist/utils/csrf.cjs +1 -18
  142. package/dist/utils/errors/ErrorCodes.cjs +1 -25
  143. package/dist/utils/errors.cjs +1 -111
  144. package/dist/utils/index.cjs +1 -135
  145. package/dist/utils/logger.cjs +1 -25
  146. package/dist/utils/logger.types.cjs +1 -11
  147. package/dist/utils/monitoring.cjs +1 -18
  148. package/dist/utils/performance.cjs +1 -22
  149. package/dist/utils/resourceLoader.cjs +1 -22
  150. package/dist/utils/runtimeSecurity.cjs +1 -11
  151. package/dist/utils/security.cjs +1 -19
  152. package/dist/utils/traceId.cjs +1 -37
  153. package/dist/utils/validation.cjs +1 -19
  154. package/package.json +7 -3
@@ -1,286 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get RouterManager () {
13
- return RouterManager;
14
- },
15
- get getRouterManager () {
16
- return getRouterManager;
17
- }
18
- });
19
- const _logger = require("@vlian/logger");
20
- const _transform = require("./utils/transform");
21
- const _transform1 = require("./utils/adapters/react-router/transform");
22
- const _reactrouterdom = require("react-router-dom");
23
- const _validation = require("./validation");
24
- const _lifecycle = require("./lifecycle");
25
- const _middleware = require("./middleware");
26
- const _errors = require("./errors");
27
- const _RouteCache = require("./performance/RouteCache");
28
- const _RoutePreloader = require("./performance/RoutePreloader");
29
- const _plugin = require("./plugin");
30
- const _monitoring = require("./monitoring");
31
- const _adapter = require("./adapter");
32
- const _reactrouter = require("./adapter/react-router");
33
- function _define_property(obj, key, value) {
34
- if (key in obj) {
35
- Object.defineProperty(obj, key, {
36
- value: value,
37
- enumerable: true,
38
- configurable: true,
39
- writable: true
40
- });
41
- } else {
42
- obj[key] = value;
43
- }
44
- return obj;
45
- }
46
- let RouterManager = class RouterManager {
47
- /**
48
- * 获取单例实例
49
- */ static getInstance() {
50
- if (!RouterManager.instance) {
51
- RouterManager.instance = new RouterManager();
52
- }
53
- return RouterManager.instance;
54
- }
55
- /**
56
- * 初始化路由管理器
57
- *
58
- * @param config - 路由配置
59
- * @param _appInstance - 应用实例(保留用于兼容性,当前未使用)
60
- */ async initialize(config) {
61
- // 如果路由被禁用,直接返回
62
- if (config.enabled === false || config.enabled === 'disabled') {
63
- _logger.logger.info('路由系统已禁用');
64
- return;
65
- }
66
- // 配置验证(如果启用)
67
- if (config.enableValidation !== false) {
68
- try {
69
- _validation.RouterConfigValidator.validate(config);
70
- _logger.logger.debug('路由配置验证通过');
71
- } catch (error) {
72
- _logger.logger.error('路由配置验证失败', error);
73
- // 开发环境下抛出错误,生产环境下记录警告但继续执行
74
- if (process.env.NODE_ENV === 'development') {
75
- throw error;
76
- }
77
- }
78
- }
79
- // 执行插件钩子:路由初始化前
80
- await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.BEFORE_INIT, {
81
- config
82
- });
83
- // 注册生命周期钩子
84
- if (config.hooks) {
85
- const lifecycleManager = (0, _lifecycle.getRouterLifecycleManager)();
86
- lifecycleManager.register(config.hooks);
87
- _logger.logger.debug('路由生命周期钩子已注册');
88
- }
89
- // 转换数据(使用缓存)
90
- if (!config.routes) {
91
- throw new _errors.RouterError('路由配置不能为空', _errors.RouterErrorCode.ROUTER_CONFIG_ERROR);
92
- }
93
- // 更新预加载策略(默认关闭,按需懒加载)
94
- this.preloader.updateConfig(config.preload);
95
- this.preloader.clear();
96
- let result;
97
- const cacheKey = config.routes;
98
- const cachedResult = this.cache.get(cacheKey);
99
- if (cachedResult) {
100
- _logger.logger.debug('使用缓存的路由转换结果');
101
- result = cachedResult;
102
- } else {
103
- // 执行插件钩子:路由转换前
104
- await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.BEFORE_TRANSFORM, {
105
- config
106
- });
107
- result = await (0, _transform.transformRoutes)(config.routes, config.transformOptions);
108
- // 执行插件钩子:路由转换后
109
- await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.AFTER_TRANSFORM, {
110
- config,
111
- routes: result.routes
112
- });
113
- // 缓存转换结果
114
- this.cache.set(cacheKey, result);
115
- }
116
- const enableHydrateFallback = config.enableHydrateFallback ?? Boolean(config.options?.hydrationData);
117
- const reactRoutes = await (0, _transform1.transformRoutesToReactRoutes)(result.routes, result, config.defaultRouteErrorComponent, config.defaultRouteLoadingComponent, enableHydrateFallback);
118
- // 注册路由到预加载器
119
- if (result.routes) {
120
- this.preloader.registerRoutes(result.routes, result);
121
- // 开始预加载
122
- this.preloader.startPreload();
123
- }
124
- await this.resolveInitialLazyRoutes(reactRoutes, !enableHydrateFallback);
125
- let routerInstance = null;
126
- if (config.mode === 'browser') {
127
- routerInstance = (0, _reactrouterdom.createBrowserRouter)(reactRoutes, config.options);
128
- } else if (config.mode === 'hash') {
129
- routerInstance = (0, _reactrouterdom.createHashRouter)(reactRoutes, config.options);
130
- } else if (config.mode === 'memory') {
131
- routerInstance = (0, _reactrouterdom.createMemoryRouter)(reactRoutes, config.options);
132
- }
133
- if (!routerInstance) {
134
- throw new _errors.RouterError('路由模式不支持', _errors.RouterErrorCode.ROUTER_CONFIG_ERROR, undefined, undefined, {
135
- mode: config.mode
136
- });
137
- }
138
- // 只能在 initialize 方法中赋值
139
- this.router = routerInstance;
140
- this.initialized = true;
141
- // 执行插件钩子:路由初始化后
142
- await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.AFTER_INIT, {
143
- config,
144
- routes: result.routes
145
- });
146
- // 记录监控:路由初始化完成
147
- const initialPath = typeof window !== 'undefined' ? `${window.location.pathname}${window.location.search}${window.location.hash}` : this.router?.state?.location?.pathname ?? '/';
148
- this.monitoring.trackRouteAccess({
149
- path: initialPath,
150
- meta: {
151
- name: 'router-init'
152
- }
153
- }, undefined, true);
154
- _logger.logger.info('路由管理器初始化完成');
155
- }
156
- /**
157
- * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。
158
- * resolveAll=true 时会在初始化阶段解析全部 lazy 路由。
159
- */ async resolveInitialLazyRoutes(routes, resolveAll = false) {
160
- if (typeof window === 'undefined') {
161
- return;
162
- }
163
- let targetRoutes = [];
164
- if (resolveAll) {
165
- const stack = [
166
- ...routes
167
- ];
168
- while(stack.length > 0){
169
- const current = stack.shift();
170
- if (!current) {
171
- continue;
172
- }
173
- targetRoutes.push(current);
174
- if (current.children && current.children.length > 0) {
175
- stack.push(...current.children);
176
- }
177
- }
178
- } else {
179
- const matches = (0, _reactrouterdom.matchRoutes)(routes, window.location.pathname) ?? [];
180
- if (matches.length === 0) {
181
- return;
182
- }
183
- targetRoutes = matches.map((match)=>match.route);
184
- }
185
- await Promise.all(targetRoutes.map(async (route)=>{
186
- const lazy = route.lazy;
187
- if (typeof lazy !== 'function') {
188
- return;
189
- }
190
- try {
191
- const resolved = await lazy();
192
- Object.assign(route, resolved);
193
- delete route.lazy;
194
- } catch (error) {
195
- _logger.logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);
196
- }
197
- }));
198
- }
199
- /**
200
- * 获取路由实例
201
- *
202
- * @returns 路由实例,如果未初始化则返回 null
203
- */ getRouter() {
204
- return this.router;
205
- }
206
- /**
207
- * 检查是否已初始化
208
- *
209
- * @returns 如果已初始化返回 true,否则返回 false
210
- */ isInitialized() {
211
- return this.initialized;
212
- }
213
- /**
214
- * 销毁路由管理器
215
- */ destroy() {
216
- // 执行插件钩子:销毁
217
- this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.DESTROY, {
218
- config: {}
219
- });
220
- // 停止预加载
221
- this.preloader.stopPreload();
222
- this.router = null;
223
- this.initialized = false;
224
- // 清空生命周期钩子和中间件
225
- const lifecycleManager = (0, _lifecycle.getRouterLifecycleManager)();
226
- lifecycleManager.clear();
227
- const middlewareManager = (0, _middleware.getRouterMiddlewareManager)();
228
- middlewareManager.clear();
229
- _logger.logger.info('路由管理器已销毁');
230
- }
231
- /**
232
- * 获取路由缓存实例
233
- */ getCache() {
234
- return this.cache;
235
- }
236
- /**
237
- * 获取路由预加载器实例
238
- */ getPreloader() {
239
- return this.preloader;
240
- }
241
- /**
242
- * 获取路由插件管理器实例
243
- */ getPluginManager() {
244
- return this.pluginManager;
245
- }
246
- /**
247
- * 获取路由监控服务实例
248
- */ getMonitoring() {
249
- return this.monitoring;
250
- }
251
- constructor(){
252
- /**
253
- * 路由实例
254
- * 只能在 initialize 方法中赋值
255
- */ _define_property(this, "router", null);
256
- /**
257
- * 是否已初始化
258
- */ _define_property(this, "initialized", false);
259
- /**
260
- * 路由缓存实例
261
- */ _define_property(this, "cache", (0, _RouteCache.getRouteCache)());
262
- /**
263
- * 路由预加载器实例
264
- */ _define_property(this, "preloader", (0, _RoutePreloader.getRoutePreloader)());
265
- /**
266
- * 路由插件管理器实例
267
- */ _define_property(this, "pluginManager", (0, _plugin.getRouterPluginManager)());
268
- /**
269
- * 路由监控服务实例
270
- */ _define_property(this, "monitoring", (0, _monitoring.getRouterMonitoring)());
271
- /**
272
- * 路由适配器管理器实例
273
- */ _define_property(this, "adapterManager", (0, _adapter.getAdapterManager)());
274
- // 私有构造函数
275
- // 注册默认的 React Router 适配器
276
- this.adapterManager.register({
277
- name: 'react-router',
278
- factory: (0, _reactrouter.createReactRouterAdapter)(),
279
- priority: 10
280
- });
281
- }
282
- };
283
- _define_property(RouterManager, "instance", null);
284
- function getRouterManager() {
285
- return RouterManager.getInstance();
286
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get RouterManager(){return RouterManager},get getRouterManager(){return getRouterManager}});const _logger=require("@vlian/logger");const _transform=require("./utils/transform");const _transform1=require("./utils/adapters/react-router/transform");const _reactrouterdom=require("react-router-dom");const _validation=require("./validation");const _lifecycle=require("./lifecycle");const _middleware=require("./middleware");const _errors=require("./errors");const _RouteCache=require("./performance/RouteCache");const _RoutePreloader=require("./performance/RoutePreloader");const _plugin=require("./plugin");const _monitoring=require("./monitoring");const _adapter=require("./adapter");const _reactrouter=require("./adapter/react-router");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let RouterManager=class RouterManager{static getInstance(){if(!RouterManager.instance){RouterManager.instance=new RouterManager}return RouterManager.instance}async initialize(config){if(config.enabled===false||config.enabled==="disabled"){_logger.logger.info("路由系统已禁用");return}if(config.enableValidation!==false){try{_validation.RouterConfigValidator.validate(config);_logger.logger.debug("路由配置验证通过")}catch(error){_logger.logger.error("路由配置验证失败",error);if(process.env.NODE_ENV==="development"){throw error}}}await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.BEFORE_INIT,{config});if(config.hooks){const lifecycleManager=(0,_lifecycle.getRouterLifecycleManager)();lifecycleManager.register(config.hooks);_logger.logger.debug("路由生命周期钩子已注册")}if(!config.routes){throw new _errors.RouterError("路由配置不能为空",_errors.RouterErrorCode.ROUTER_CONFIG_ERROR)}this.preloader.updateConfig(config.preload);this.preloader.clear();let result;const cacheKey=config.routes;const cachedResult=this.cache.get(cacheKey);if(cachedResult){_logger.logger.debug("使用缓存的路由转换结果");result=cachedResult}else{await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.BEFORE_TRANSFORM,{config});result=await (0,_transform.transformRoutes)(config.routes,config.transformOptions);await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.AFTER_TRANSFORM,{config,routes:result.routes});this.cache.set(cacheKey,result)}const enableHydrateFallback=config.enableHydrateFallback??Boolean(config.options?.hydrationData);const reactRoutes=await (0,_transform1.transformRoutesToReactRoutes)(result.routes,result,config.defaultRouteErrorComponent,config.defaultRouteLoadingComponent,enableHydrateFallback);if(result.routes){this.preloader.registerRoutes(result.routes,result);this.preloader.startPreload()}await this.resolveInitialLazyRoutes(reactRoutes,!enableHydrateFallback);let routerInstance=null;if(config.mode==="browser"){routerInstance=(0,_reactrouterdom.createBrowserRouter)(reactRoutes,config.options)}else if(config.mode==="hash"){routerInstance=(0,_reactrouterdom.createHashRouter)(reactRoutes,config.options)}else if(config.mode==="memory"){routerInstance=(0,_reactrouterdom.createMemoryRouter)(reactRoutes,config.options)}if(!routerInstance){throw new _errors.RouterError("路由模式不支持",_errors.RouterErrorCode.ROUTER_CONFIG_ERROR,undefined,undefined,{mode:config.mode})}this.router=routerInstance;this.initialized=true;await this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.AFTER_INIT,{config,routes:result.routes});const initialPath=typeof window!=="undefined"?`${window.location.pathname}${window.location.search}${window.location.hash}`:this.router?.state?.location?.pathname??"/";this.monitoring.trackRouteAccess({path:initialPath,meta:{name:"router-init"}},undefined,true);_logger.logger.info("路由管理器初始化完成")}async resolveInitialLazyRoutes(routes,resolveAll=false){if(typeof window==="undefined"){return}let targetRoutes=[];if(resolveAll){const stack=[...routes];while(stack.length>0){const current=stack.shift();if(!current){continue}targetRoutes.push(current);if(current.children&&current.children.length>0){stack.push(...current.children)}}}else{const matches=(0,_reactrouterdom.matchRoutes)(routes,window.location.pathname)??[];if(matches.length===0){return}targetRoutes=matches.map(match=>match.route)}await Promise.all(targetRoutes.map(async route=>{const lazy=route.lazy;if(typeof lazy!=="function"){return}try{const resolved=await lazy();Object.assign(route,resolved);delete route.lazy}catch(error){_logger.logger.warn("首屏路由懒加载预解析失败,回退到 Router 默认懒加载",error)}}))}getRouter(){return this.router}isInitialized(){return this.initialized}destroy(){this.pluginManager.executeHooks(_plugin.PluginLifecycleStage.DESTROY,{config:{}});this.preloader.stopPreload();this.router=null;this.initialized=false;const lifecycleManager=(0,_lifecycle.getRouterLifecycleManager)();lifecycleManager.clear();const middlewareManager=(0,_middleware.getRouterMiddlewareManager)();middlewareManager.clear();_logger.logger.info("路由管理器已销毁")}getCache(){return this.cache}getPreloader(){return this.preloader}getPluginManager(){return this.pluginManager}getMonitoring(){return this.monitoring}constructor(){_define_property(this,"router",null);_define_property(this,"initialized",false);_define_property(this,"cache",(0,_RouteCache.getRouteCache)());_define_property(this,"preloader",(0,_RoutePreloader.getRoutePreloader)());_define_property(this,"pluginManager",(0,_plugin.getRouterPluginManager)());_define_property(this,"monitoring",(0,_monitoring.getRouterMonitoring)());_define_property(this,"adapterManager",(0,_adapter.getAdapterManager)());this.adapterManager.register({name:"react-router",factory:(0,_reactrouter.createReactRouterAdapter)(),priority:10})}};_define_property(RouterManager,"instance",null);function getRouterManager(){return RouterManager.getInstance()}
@@ -1,235 +1 @@
1
- /**
2
- * 路由适配器管理器
3
- * 负责管理路由适配器的注册、创建和切换
4
- */ "use strict";
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- function _export(target, all) {
9
- for(var name in all)Object.defineProperty(target, name, {
10
- enumerable: true,
11
- get: Object.getOwnPropertyDescriptor(all, name).get
12
- });
13
- }
14
- _export(exports, {
15
- get AdapterManager () {
16
- return AdapterManager;
17
- },
18
- get getAdapterManager () {
19
- return getAdapterManager;
20
- }
21
- });
22
- const _logger = require("@vlian/logger");
23
- const _errors = require("../errors");
24
- function _define_property(obj, key, value) {
25
- if (key in obj) {
26
- Object.defineProperty(obj, key, {
27
- value: value,
28
- enumerable: true,
29
- configurable: true,
30
- writable: true
31
- });
32
- } else {
33
- obj[key] = value;
34
- }
35
- return obj;
36
- }
37
- let AdapterManager = class AdapterManager {
38
- /**
39
- * 注册适配器
40
- *
41
- * @param registration - 适配器注册信息
42
- * @returns 取消注册函数
43
- */ register(registration) {
44
- // 验证适配器
45
- if (!registration.name) {
46
- throw new Error('适配器必须提供名称');
47
- }
48
- if (!registration.factory || typeof registration.factory !== 'function') {
49
- throw new Error('适配器必须提供工厂函数');
50
- }
51
- // 设置默认值
52
- const adapterRegistration = {
53
- priority: 100,
54
- enabled: true,
55
- ...registration
56
- };
57
- // 注册适配器
58
- this.adapters.set(registration.name, adapterRegistration);
59
- _logger.logger.debug(`路由适配器已注册: ${registration.name}`);
60
- // 如果没有默认适配器,设置为第一个注册的适配器
61
- if (!this.defaultAdapterName) {
62
- this.defaultAdapterName = registration.name;
63
- }
64
- // 返回取消注册函数
65
- return ()=>{
66
- this.unregister(registration.name);
67
- };
68
- }
69
- /**
70
- * 批量注册适配器
71
- *
72
- * @param registrations - 适配器注册信息数组
73
- */ registerBatch(registrations) {
74
- registrations.forEach((registration)=>this.register(registration));
75
- }
76
- /**
77
- * 取消注册适配器
78
- *
79
- * @param name - 适配器名称
80
- */ unregister(name) {
81
- if (this.adapters.has(name)) {
82
- this.adapters.delete(name);
83
- _logger.logger.debug(`路由适配器已取消注册: ${name}`);
84
- // 如果取消的是默认适配器,重置默认适配器
85
- if (this.defaultAdapterName === name) {
86
- const firstAdapter = Array.from(this.adapters.keys())[0];
87
- this.defaultAdapterName = firstAdapter || null;
88
- }
89
- }
90
- }
91
- /**
92
- * 创建适配器实例
93
- *
94
- * @param name - 适配器名称(可选,使用默认适配器)
95
- * @param config - 适配器配置
96
- * @returns 适配器实例
97
- */ async createAdapter(config, name) {
98
- const adapterName = name || this.defaultAdapterName;
99
- if (!adapterName) {
100
- throw new _errors.RouterError('没有可用的路由适配器', _errors.RouterErrorCode.ROUTER_NOT_INITIALIZED);
101
- }
102
- const registration = this.adapters.get(adapterName);
103
- if (!registration) {
104
- throw new _errors.RouterError(`路由适配器不存在: ${adapterName}`, _errors.RouterErrorCode.ROUTER_CONFIG_ERROR, undefined, undefined, {
105
- adapterName
106
- });
107
- }
108
- if (!registration.enabled) {
109
- throw new _errors.RouterError(`路由适配器已禁用: ${adapterName}`, _errors.RouterErrorCode.ROUTER_CONFIG_ERROR, undefined, undefined, {
110
- adapterName
111
- });
112
- }
113
- try {
114
- // 创建适配器实例
115
- const adapter = await registration.factory(config);
116
- // 验证适配器
117
- if (!adapter || typeof adapter.initialize !== 'function') {
118
- throw new Error('适配器实例无效');
119
- }
120
- // 初始化适配器
121
- await adapter.initialize(config);
122
- _logger.logger.info(`路由适配器已创建并初始化: ${adapterName}`);
123
- return adapter;
124
- } catch (error) {
125
- _logger.logger.error(`创建路由适配器失败: ${adapterName}`, error);
126
- const errorContext = {
127
- adapterName
128
- };
129
- if (error instanceof Error) {
130
- errorContext.originalError = error;
131
- }
132
- throw new _errors.RouterError(`创建路由适配器失败: ${adapterName}`, _errors.RouterErrorCode.ROUTER_CONFIG_ERROR, undefined, error instanceof Error ? error : undefined, errorContext);
133
- }
134
- }
135
- /**
136
- * 设置当前适配器
137
- *
138
- * @param adapter - 适配器实例
139
- */ setCurrentAdapter(adapter) {
140
- // 销毁旧的适配器
141
- if (this.currentAdapter && this.currentAdapter.destroy) {
142
- try {
143
- this.currentAdapter.destroy();
144
- } catch (error) {
145
- _logger.logger.warn('销毁旧适配器失败', error);
146
- }
147
- }
148
- this.currentAdapter = adapter;
149
- _logger.logger.debug(`当前路由适配器已设置: ${adapter.name}`);
150
- }
151
- /**
152
- * 获取当前适配器
153
- *
154
- * @returns 当前适配器实例,如果不存在返回 null
155
- */ getCurrentAdapter() {
156
- return this.currentAdapter;
157
- }
158
- /**
159
- * 设置默认适配器
160
- *
161
- * @param name - 适配器名称
162
- */ setDefaultAdapter(name) {
163
- if (!this.adapters.has(name)) {
164
- throw new Error(`适配器不存在: ${name}`);
165
- }
166
- this.defaultAdapterName = name;
167
- _logger.logger.debug(`默认路由适配器已设置: ${name}`);
168
- }
169
- /**
170
- * 获取默认适配器名称
171
- *
172
- * @returns 默认适配器名称
173
- */ getDefaultAdapterName() {
174
- return this.defaultAdapterName;
175
- }
176
- /**
177
- * 获取所有适配器
178
- *
179
- * @returns 适配器注册信息数组
180
- */ getAllAdapters() {
181
- return Array.from(this.adapters.values());
182
- }
183
- /**
184
- * 获取启用的适配器
185
- *
186
- * @returns 启用的适配器注册信息数组
187
- */ getEnabledAdapters() {
188
- return Array.from(this.adapters.values()).filter((a)=>a.enabled !== false);
189
- }
190
- /**
191
- * 获取适配器
192
- *
193
- * @param name - 适配器名称
194
- * @returns 适配器注册信息,如果不存在返回 undefined
195
- */ getAdapter(name) {
196
- return this.adapters.get(name);
197
- }
198
- /**
199
- * 清空所有适配器
200
- */ clear() {
201
- // 销毁当前适配器
202
- if (this.currentAdapter && this.currentAdapter.destroy) {
203
- try {
204
- this.currentAdapter.destroy();
205
- } catch (error) {
206
- _logger.logger.warn('销毁适配器失败', error);
207
- }
208
- }
209
- this.adapters.clear();
210
- this.currentAdapter = null;
211
- this.defaultAdapterName = null;
212
- _logger.logger.debug('所有路由适配器已清空');
213
- }
214
- /**
215
- * 获取适配器数量
216
- *
217
- * @returns 适配器数量
218
- */ getCount() {
219
- return this.adapters.size;
220
- }
221
- constructor(){
222
- _define_property(this, "adapters", new Map());
223
- _define_property(this, "currentAdapter", null);
224
- _define_property(this, "defaultAdapterName", null);
225
- }
226
- };
227
- /**
228
- * 获取路由适配器管理器单例
229
- */ let adapterManagerInstance = null;
230
- function getAdapterManager() {
231
- if (!adapterManagerInstance) {
232
- adapterManagerInstance = new AdapterManager();
233
- }
234
- return adapterManagerInstance;
235
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get AdapterManager(){return AdapterManager},get getAdapterManager(){return getAdapterManager}});const _logger=require("@vlian/logger");const _errors=require("../errors");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let AdapterManager=class AdapterManager{register(registration){if(!registration.name){throw new Error("适配器必须提供名称")}if(!registration.factory||typeof registration.factory!=="function"){throw new Error("适配器必须提供工厂函数")}const adapterRegistration={priority:100,enabled:true,...registration};this.adapters.set(registration.name,adapterRegistration);_logger.logger.debug(`路由适配器已注册: ${registration.name}`);if(!this.defaultAdapterName){this.defaultAdapterName=registration.name}return()=>{this.unregister(registration.name)}}registerBatch(registrations){registrations.forEach(registration=>this.register(registration))}unregister(name){if(this.adapters.has(name)){this.adapters.delete(name);_logger.logger.debug(`路由适配器已取消注册: ${name}`);if(this.defaultAdapterName===name){const firstAdapter=Array.from(this.adapters.keys())[0];this.defaultAdapterName=firstAdapter||null}}}async createAdapter(config,name){const adapterName=name||this.defaultAdapterName;if(!adapterName){throw new _errors.RouterError("没有可用的路由适配器",_errors.RouterErrorCode.ROUTER_NOT_INITIALIZED)}const registration=this.adapters.get(adapterName);if(!registration){throw new _errors.RouterError(`路由适配器不存在: ${adapterName}`,_errors.RouterErrorCode.ROUTER_CONFIG_ERROR,undefined,undefined,{adapterName})}if(!registration.enabled){throw new _errors.RouterError(`路由适配器已禁用: ${adapterName}`,_errors.RouterErrorCode.ROUTER_CONFIG_ERROR,undefined,undefined,{adapterName})}try{const adapter=await registration.factory(config);if(!adapter||typeof adapter.initialize!=="function"){throw new Error("适配器实例无效")}await adapter.initialize(config);_logger.logger.info(`路由适配器已创建并初始化: ${adapterName}`);return adapter}catch(error){_logger.logger.error(`创建路由适配器失败: ${adapterName}`,error);const errorContext={adapterName};if(error instanceof Error){errorContext.originalError=error}throw new _errors.RouterError(`创建路由适配器失败: ${adapterName}`,_errors.RouterErrorCode.ROUTER_CONFIG_ERROR,undefined,error instanceof Error?error:undefined,errorContext)}}setCurrentAdapter(adapter){if(this.currentAdapter&&this.currentAdapter.destroy){try{this.currentAdapter.destroy()}catch(error){_logger.logger.warn("销毁旧适配器失败",error)}}this.currentAdapter=adapter;_logger.logger.debug(`当前路由适配器已设置: ${adapter.name}`)}getCurrentAdapter(){return this.currentAdapter}setDefaultAdapter(name){if(!this.adapters.has(name)){throw new Error(`适配器不存在: ${name}`)}this.defaultAdapterName=name;_logger.logger.debug(`默认路由适配器已设置: ${name}`)}getDefaultAdapterName(){return this.defaultAdapterName}getAllAdapters(){return Array.from(this.adapters.values())}getEnabledAdapters(){return Array.from(this.adapters.values()).filter(a=>a.enabled!==false)}getAdapter(name){return this.adapters.get(name)}clear(){if(this.currentAdapter&&this.currentAdapter.destroy){try{this.currentAdapter.destroy()}catch(error){_logger.logger.warn("销毁适配器失败",error)}}this.adapters.clear();this.currentAdapter=null;this.defaultAdapterName=null;_logger.logger.debug("所有路由适配器已清空")}getCount(){return this.adapters.size}constructor(){_define_property(this,"adapters",new Map);_define_property(this,"currentAdapter",null);_define_property(this,"defaultAdapterName",null)}};let adapterManagerInstance=null;function getAdapterManager(){if(!adapterManagerInstance){adapterManagerInstance=new AdapterManager}return adapterManagerInstance}
@@ -1,22 +1 @@
1
- /**
2
- * 路由适配器模块入口
3
- */ "use strict";
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- _export_star(require("./types"), exports);
8
- _export_star(require("./AdapterManager"), exports);
9
- _export_star(require("./react-router"), exports);
10
- function _export_star(from, to) {
11
- Object.keys(from).forEach(function(k) {
12
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
13
- Object.defineProperty(to, k, {
14
- enumerable: true,
15
- get: function() {
16
- return from[k];
17
- }
18
- });
19
- }
20
- });
21
- return from;
22
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./types"),exports);_export_star(require("./AdapterManager"),exports);_export_star(require("./react-router"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}