@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.
Files changed (319) hide show
  1. package/dist/analytics.umd.js +208 -2395
  2. package/dist/analytics.umd.js.map +1 -1
  3. package/dist/core/Test.cjs +2 -2
  4. package/dist/core/Test.cjs.map +1 -1
  5. package/dist/core/Test.js +1 -1
  6. package/dist/core/Test.js.map +1 -1
  7. package/dist/core/config/ConfigLoader.cjs +7 -7
  8. package/dist/core/config/ConfigLoader.cjs.map +1 -1
  9. package/dist/core/config/ConfigLoader.js +1 -1
  10. package/dist/core/config/ConfigLoader.js.map +1 -1
  11. package/dist/core/error/ErrorBoundary.cjs +6 -6
  12. package/dist/core/error/ErrorBoundary.cjs.map +1 -1
  13. package/dist/core/error/ErrorBoundary.d.ts +1 -1
  14. package/dist/core/error/ErrorBoundary.js +2 -2
  15. package/dist/core/error/ErrorBoundary.js.map +1 -1
  16. package/dist/core/error/ErrorHandler.cjs +19 -19
  17. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  18. package/dist/core/error/ErrorHandler.d.ts +2 -2
  19. package/dist/core/error/ErrorHandler.js +2 -2
  20. package/dist/core/error/ErrorHandler.js.map +1 -1
  21. package/dist/core/event/AppEventBus.cjs +5 -5
  22. package/dist/core/event/AppEventBus.cjs.map +1 -1
  23. package/dist/core/event/AppEventBus.js +1 -1
  24. package/dist/core/event/AppEventBus.js.map +1 -1
  25. package/dist/core/initialization/InitializationErrorThrower.cjs.map +1 -1
  26. package/dist/core/initialization/InitializationErrorThrower.js.map +1 -1
  27. package/dist/core/initialization/initialization.cjs +3 -3
  28. package/dist/core/initialization/initialization.cjs.map +1 -1
  29. package/dist/core/initialization/initialization.d.ts +1 -1
  30. package/dist/core/initialization/initialization.js +1 -1
  31. package/dist/core/initialization/initialization.js.map +1 -1
  32. package/dist/core/initialization/initializationErrorState.cjs +2 -2
  33. package/dist/core/initialization/initializationErrorState.cjs.map +1 -1
  34. package/dist/core/initialization/initializationErrorState.d.ts +1 -1
  35. package/dist/core/initialization/initializationErrorState.js +1 -1
  36. package/dist/core/initialization/initializationErrorState.js.map +1 -1
  37. package/dist/core/kernel/defaultAdapters.cjs +14 -13
  38. package/dist/core/kernel/defaultAdapters.cjs.map +1 -1
  39. package/dist/core/kernel/defaultAdapters.js +2 -1
  40. package/dist/core/kernel/defaultAdapters.js.map +1 -1
  41. package/dist/core/kernel/types.d.ts +1 -1
  42. package/dist/core/kernel/types.js.map +1 -1
  43. package/dist/core/router/RouterManager.cjs +9 -9
  44. package/dist/core/router/RouterManager.cjs.map +1 -1
  45. package/dist/core/router/RouterManager.js +1 -1
  46. package/dist/core/router/RouterManager.js.map +1 -1
  47. package/dist/core/router/adapter/AdapterManager.cjs +10 -10
  48. package/dist/core/router/adapter/AdapterManager.cjs.map +1 -1
  49. package/dist/core/router/adapter/AdapterManager.js +1 -1
  50. package/dist/core/router/adapter/AdapterManager.js.map +1 -1
  51. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +4 -4
  52. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
  53. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -1
  54. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
  55. package/dist/core/router/dynamic/DynamicRouteManager.cjs +8 -8
  56. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +1 -1
  57. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -1
  58. package/dist/core/router/dynamic/DynamicRouteManager.js.map +1 -1
  59. package/dist/core/router/errors/RouterError.cjs +4 -4
  60. package/dist/core/router/errors/RouterError.cjs.map +1 -1
  61. package/dist/core/router/errors/RouterError.d.ts +1 -1
  62. package/dist/core/router/errors/RouterError.js +1 -1
  63. package/dist/core/router/errors/RouterError.js.map +1 -1
  64. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +8 -8
  65. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +1 -1
  66. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -1
  67. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +1 -1
  68. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +11 -11
  69. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
  70. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -1
  71. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
  72. package/dist/core/router/middleware/auth.cjs +4 -4
  73. package/dist/core/router/middleware/auth.cjs.map +1 -1
  74. package/dist/core/router/middleware/auth.js +1 -1
  75. package/dist/core/router/middleware/auth.js.map +1 -1
  76. package/dist/core/router/monitoring/RouterMonitoring.cjs +2 -2
  77. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  78. package/dist/core/router/monitoring/RouterMonitoring.js +2 -2
  79. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  80. package/dist/core/router/navigation/RouterNavigation.cjs +7 -7
  81. package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
  82. package/dist/core/router/navigation/RouterNavigation.js +1 -1
  83. package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
  84. package/dist/core/router/performance/RouteCache.cjs +7 -7
  85. package/dist/core/router/performance/RouteCache.cjs.map +1 -1
  86. package/dist/core/router/performance/RouteCache.js +1 -1
  87. package/dist/core/router/performance/RouteCache.js.map +1 -1
  88. package/dist/core/router/performance/RoutePreloader.cjs +6 -6
  89. package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
  90. package/dist/core/router/performance/RoutePreloader.js +1 -1
  91. package/dist/core/router/performance/RoutePreloader.js.map +1 -1
  92. package/dist/core/router/plugin/RouterPluginManager.cjs +8 -8
  93. package/dist/core/router/plugin/RouterPluginManager.cjs.map +1 -1
  94. package/dist/core/router/plugin/RouterPluginManager.js +1 -1
  95. package/dist/core/router/plugin/RouterPluginManager.js.map +1 -1
  96. package/dist/core/router/utils/adapters/react-router/transform.cjs +6 -2
  97. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  98. package/dist/core/router/utils/adapters/react-router/transform.js +5 -1
  99. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  100. package/dist/core/router/utils/transform.cjs +13 -12
  101. package/dist/core/router/utils/transform.cjs.map +1 -1
  102. package/dist/core/router/utils/transform.js +2 -1
  103. package/dist/core/router/utils/transform.js.map +1 -1
  104. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -2
  105. package/dist/core/router/validation/RouterConfigValidator.cjs.map +1 -1
  106. package/dist/core/router/validation/RouterConfigValidator.js +1 -1
  107. package/dist/core/router/validation/RouterConfigValidator.js.map +1 -1
  108. package/dist/core/router/version/RouteVersionManager.cjs +6 -6
  109. package/dist/core/router/version/RouteVersionManager.cjs.map +1 -1
  110. package/dist/core/router/version/RouteVersionManager.js +1 -1
  111. package/dist/core/router/version/RouteVersionManager.js.map +1 -1
  112. package/dist/core/splash/SplashScreen.cjs +4 -4
  113. package/dist/core/splash/SplashScreen.cjs.map +1 -1
  114. package/dist/core/splash/SplashScreen.js +1 -1
  115. package/dist/core/splash/SplashScreen.js.map +1 -1
  116. package/dist/core/startup/initializeServices.cjs +15 -15
  117. package/dist/core/startup/initializeServices.cjs.map +1 -1
  118. package/dist/core/startup/initializeServices.d.ts +2 -2
  119. package/dist/core/startup/initializeServices.js +3 -3
  120. package/dist/core/startup/initializeServices.js.map +1 -1
  121. package/dist/core/startup/performanceTracker.cjs.map +1 -1
  122. package/dist/core/startup/performanceTracker.d.ts +1 -1
  123. package/dist/core/startup/performanceTracker.js.map +1 -1
  124. package/dist/core/startup/renderApp.cjs +3 -3
  125. package/dist/core/startup/renderApp.cjs.map +1 -1
  126. package/dist/core/startup/renderApp.d.ts +1 -1
  127. package/dist/core/startup/renderApp.js +2 -2
  128. package/dist/core/startup/renderApp.js.map +1 -1
  129. package/dist/core/startup/startApp.cjs +24 -24
  130. package/dist/core/startup/startApp.cjs.map +1 -1
  131. package/dist/core/startup/startApp.js +5 -5
  132. package/dist/core/startup/startApp.js.map +1 -1
  133. package/dist/core/types.d.ts +3 -3
  134. package/dist/core/types.js.map +1 -1
  135. package/dist/index.cjs +15 -2
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.d.ts +6 -4
  138. package/dist/index.js +5 -4
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.umd.js +2150 -23125
  141. package/dist/index.umd.js.map +1 -1
  142. package/dist/kernel/constants.cjs +67 -0
  143. package/dist/kernel/constants.cjs.map +1 -0
  144. package/dist/kernel/constants.d.ts +5 -0
  145. package/dist/kernel/constants.js +43 -0
  146. package/dist/kernel/constants.js.map +1 -0
  147. package/dist/kernel/index.cjs +40 -0
  148. package/dist/kernel/index.cjs.map +1 -0
  149. package/dist/kernel/index.d.ts +3 -0
  150. package/dist/kernel/index.js +4 -0
  151. package/dist/kernel/index.js.map +1 -0
  152. package/dist/kernel/kernel.cjs +296 -0
  153. package/dist/kernel/kernel.cjs.map +1 -0
  154. package/dist/kernel/kernel.d.ts +40 -0
  155. package/dist/kernel/kernel.js +272 -0
  156. package/dist/kernel/kernel.js.map +1 -0
  157. package/dist/kernel/manager/cacheManager.cjs +46 -0
  158. package/dist/kernel/manager/cacheManager.cjs.map +1 -0
  159. package/dist/kernel/manager/cacheManager.d.ts +6 -0
  160. package/dist/kernel/manager/cacheManager.js +36 -0
  161. package/dist/kernel/manager/cacheManager.js.map +1 -0
  162. package/dist/kernel/manager/i18nManager.cjs +68 -0
  163. package/dist/kernel/manager/i18nManager.cjs.map +1 -0
  164. package/dist/kernel/manager/i18nManager.d.ts +8 -0
  165. package/dist/kernel/manager/i18nManager.js +58 -0
  166. package/dist/kernel/manager/i18nManager.js.map +1 -0
  167. package/dist/kernel/manager/index.cjs +30 -0
  168. package/dist/kernel/manager/index.cjs.map +1 -0
  169. package/dist/kernel/manager/index.d.ts +4 -0
  170. package/dist/kernel/manager/index.js +6 -0
  171. package/dist/kernel/manager/index.js.map +1 -0
  172. package/dist/kernel/manager/loggerManager.cjs +70 -0
  173. package/dist/kernel/manager/loggerManager.cjs.map +1 -0
  174. package/dist/kernel/manager/loggerManager.d.ts +14 -0
  175. package/dist/kernel/manager/loggerManager.js +60 -0
  176. package/dist/kernel/manager/loggerManager.js.map +1 -0
  177. package/dist/kernel/manager/persistence.cjs +93 -0
  178. package/dist/kernel/manager/persistence.cjs.map +1 -0
  179. package/dist/kernel/manager/persistence.d.ts +3 -0
  180. package/dist/kernel/manager/persistence.js +75 -0
  181. package/dist/kernel/manager/persistence.js.map +1 -0
  182. package/dist/kernel/manager/themeManager.cjs +85 -0
  183. package/dist/kernel/manager/themeManager.cjs.map +1 -0
  184. package/dist/kernel/manager/themeManager.d.ts +9 -0
  185. package/dist/kernel/manager/themeManager.js +75 -0
  186. package/dist/kernel/manager/themeManager.js.map +1 -0
  187. package/dist/kernel/types.cjs +6 -0
  188. package/dist/kernel/types.cjs.map +1 -0
  189. package/dist/kernel/types.d.ts +72 -0
  190. package/dist/kernel/types.js +3 -0
  191. package/dist/kernel/types.js.map +1 -0
  192. package/dist/library/storage/encryption.cjs +12 -13
  193. package/dist/library/storage/encryption.cjs.map +1 -1
  194. package/dist/library/storage/encryption.js +1 -2
  195. package/dist/library/storage/encryption.js.map +1 -1
  196. package/dist/request/adapter.d.ts +1 -0
  197. package/dist/request/core.d.ts +1 -0
  198. package/dist/request/index.d.ts +1 -42
  199. package/dist/request/plugin/csrfPlugin.d.ts +2 -2
  200. package/dist/request/plugin/queue.d.ts +2 -2
  201. package/dist/request/plugin.d.ts +1 -0
  202. package/dist/request/runtime.d.ts +1 -0
  203. package/dist/request/types.d.ts +1 -394
  204. package/dist/request/utils.d.ts +1 -0
  205. package/dist/state.umd.js +1 -1
  206. package/dist/utils/csrf.cjs +13 -152
  207. package/dist/utils/csrf.cjs.map +1 -1
  208. package/dist/utils/csrf.d.ts +1 -72
  209. package/dist/utils/csrf.js +1 -142
  210. package/dist/utils/csrf.js.map +1 -1
  211. package/dist/utils/errors/ErrorCodes.cjs +6 -76
  212. package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
  213. package/dist/utils/errors/ErrorCodes.d.ts +1 -45
  214. package/dist/utils/errors/ErrorCodes.js +1 -84
  215. package/dist/utils/errors/ErrorCodes.js.map +1 -1
  216. package/dist/utils/errors.cjs +53 -326
  217. package/dist/utils/errors.cjs.map +1 -1
  218. package/dist/utils/errors.d.ts +19 -172
  219. package/dist/utils/errors.js +16 -352
  220. package/dist/utils/errors.js.map +1 -1
  221. package/dist/utils/logger.cjs +5 -374
  222. package/dist/utils/logger.cjs.map +1 -1
  223. package/dist/utils/logger.d.ts +2 -189
  224. package/dist/utils/logger.js +1 -379
  225. package/dist/utils/logger.js.map +1 -1
  226. package/dist/utils/logger.types.cjs +3 -12
  227. package/dist/utils/logger.types.cjs.map +1 -1
  228. package/dist/utils/logger.types.d.ts +2 -57
  229. package/dist/utils/logger.types.js +1 -10
  230. package/dist/utils/logger.types.js.map +1 -1
  231. package/dist/utils/monitoring.cjs +11 -302
  232. package/dist/utils/monitoring.cjs.map +1 -1
  233. package/dist/utils/monitoring.d.ts +1 -163
  234. package/dist/utils/monitoring.js +1 -294
  235. package/dist/utils/monitoring.js.map +1 -1
  236. package/dist/utils/performance.cjs +5 -352
  237. package/dist/utils/performance.cjs.map +1 -1
  238. package/dist/utils/performance.d.ts +2 -246
  239. package/dist/utils/performance.js +1 -354
  240. package/dist/utils/performance.js.map +1 -1
  241. package/dist/utils/resourceLoader.cjs +5 -303
  242. package/dist/utils/resourceLoader.cjs.map +1 -1
  243. package/dist/utils/resourceLoader.d.ts +2 -130
  244. package/dist/utils/resourceLoader.js +1 -305
  245. package/dist/utils/resourceLoader.js.map +1 -1
  246. package/dist/utils/runtimeSecurity.cjs +2 -140
  247. package/dist/utils/runtimeSecurity.cjs.map +1 -1
  248. package/dist/utils/runtimeSecurity.d.ts +2 -104
  249. package/dist/utils/runtimeSecurity.js +1 -141
  250. package/dist/utils/runtimeSecurity.js.map +1 -1
  251. package/dist/utils/security.cjs +3 -314
  252. package/dist/utils/security.cjs.map +1 -1
  253. package/dist/utils/security.d.ts +2 -80
  254. package/dist/utils/security.js +1 -311
  255. package/dist/utils/security.js.map +1 -1
  256. package/dist/utils/traceId.cjs +10 -111
  257. package/dist/utils/traceId.cjs.map +1 -1
  258. package/dist/utils/traceId.d.ts +1 -63
  259. package/dist/utils/traceId.js +1 -116
  260. package/dist/utils/traceId.js.map +1 -1
  261. package/dist/utils/validation.cjs +3 -173
  262. package/dist/utils/validation.cjs.map +1 -1
  263. package/dist/utils/validation.d.ts +2 -110
  264. package/dist/utils/validation.js +1 -175
  265. package/dist/utils/validation.js.map +1 -1
  266. package/package.json +15 -24
  267. package/dist/lazy/index.cjs +0 -104
  268. package/dist/lazy/index.cjs.map +0 -1
  269. package/dist/lazy/index.d.ts +0 -19
  270. package/dist/lazy/index.js +0 -24
  271. package/dist/lazy/index.js.map +0 -1
  272. package/dist/request/adapter/RequestAdapter.cjs +0 -78
  273. package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
  274. package/dist/request/adapter/axiosAdapter.cjs +0 -164
  275. package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
  276. package/dist/request/adapter/fetchAdapter.cjs +0 -134
  277. package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
  278. package/dist/request/adapter/index.cjs +0 -80
  279. package/dist/request/adapter/index.cjs.map +0 -1
  280. package/dist/request/adapter/kyAdapter.cjs +0 -191
  281. package/dist/request/adapter/kyAdapter.cjs.map +0 -1
  282. package/dist/request/adapter/undiciAdapter.cjs +0 -213
  283. package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
  284. package/dist/request/core/RequestClient.cjs +0 -558
  285. package/dist/request/core/RequestClient.cjs.map +0 -1
  286. package/dist/request/core/index.cjs +0 -15
  287. package/dist/request/core/index.cjs.map +0 -1
  288. package/dist/request/index.cjs +0 -149
  289. package/dist/request/index.cjs.map +0 -1
  290. package/dist/request/plugin/RequestPlugin.cjs +0 -218
  291. package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
  292. package/dist/request/plugin/cache.cjs +0 -269
  293. package/dist/request/plugin/cache.cjs.map +0 -1
  294. package/dist/request/plugin/csrfPlugin.cjs +0 -40
  295. package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
  296. package/dist/request/plugin/index.cjs +0 -53
  297. package/dist/request/plugin/index.cjs.map +0 -1
  298. package/dist/request/plugin/monitoring.cjs +0 -216
  299. package/dist/request/plugin/monitoring.cjs.map +0 -1
  300. package/dist/request/plugin/queue.cjs +0 -140
  301. package/dist/request/plugin/queue.cjs.map +0 -1
  302. package/dist/request/plugin/retry.cjs +0 -98
  303. package/dist/request/plugin/retry.cjs.map +0 -1
  304. package/dist/request/plugin/validation.cjs +0 -121
  305. package/dist/request/plugin/validation.cjs.map +0 -1
  306. package/dist/request/runtime/RequestContext.cjs +0 -77
  307. package/dist/request/runtime/RequestContext.cjs.map +0 -1
  308. package/dist/request/runtime/index.cjs +0 -32
  309. package/dist/request/runtime/index.cjs.map +0 -1
  310. package/dist/request/types.cjs +0 -112
  311. package/dist/request/types.cjs.map +0 -1
  312. package/dist/request/utils/RequestQueueManager.cjs +0 -168
  313. package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
  314. package/dist/request/utils/dependencyCheck.cjs +0 -237
  315. package/dist/request/utils/dependencyCheck.cjs.map +0 -1
  316. package/dist/request/utils/index.cjs +0 -30
  317. package/dist/request/utils/index.cjs.map +0 -1
  318. package/dist/request.umd.js +0 -5392
  319. package/dist/request.umd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/initialization/initialization.ts"],"sourcesContent":["import { logger, LogLevel } from '../../utils';\nimport { setupI18n } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { ManagerLifecycle, StartOptions } from '../types';\nimport { pluginManager } from '../plugin';\n\n/**\n * 初始化上下文\n */\nexport interface InitializationContext {\n /**\n * 已加载的配置\n */\n config: Record<string, unknown>;\n\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 是否准备就绪\n */\n isReady: boolean;\n\n /**\n * 初始化耗时(毫秒)\n */\n duration: number;\n}\n\n/**\n * 初始化选项\n */\nexport interface InitializationOptions {\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n\n /**\n * 国际化配置\n */\n locale?: Record<LangType, Record<string, unknown>>;\n\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n}\n\n/**\n * 进度回调函数\n */\nexport type ProgressCallback = (progress: number, step?: string) => void;\n\n/**\n * 初始化方法\n * \n * 这是核心的初始化逻辑,可被启动页或直接调用\n * \n * @param options - 初始化选项\n * @param onProgress - 进度回调函数(可选)\n * @returns Promise<InitializationContext>\n * \n * @example\n * ```typescript\n * const context = await initialization({\n * loggerLevel: LogLevel.INFO,\n * lifecycle: {\n * initialization: async () => {\n * // 初始化逻辑\n * },\n * },\n * }, (progress, step) => {\n * console.log(`进度: ${progress}%, 步骤: ${step}`);\n * });\n * ```\n */\nexport async function initialization(\n options: StartOptions,\n onProgress?: ProgressCallback\n): Promise<InitializationContext> {\n const startTime = Date.now();\n let config: Record<string, unknown> = {};\n\n try {\n // 0. 执行插件初始化前钩子\n await pluginManager.executeBeforeInit(options);\n\n // 1. 设置日志级别\n onProgress?.(5, '初始化日志系统...');\n logger.setLevel(options.loggerLevel ?? LogLevel.INFO);\n\n // 2. 预留配置阶段\n onProgress?.(30);\n\n // 3. 初始化之前回调\n if (options.lifecycle?.beforeInitialization) {\n onProgress?.(35, '执行初始化前回调...');\n await options.lifecycle.beforeInitialization();\n }\n\n // 4. 国际化设置\n onProgress?.(40, '设置国际化...');\n setupI18n(options.locale || undefined);\n\n // 5. 核心初始化\n if (options.lifecycle?.initialization) {\n onProgress?.(50, '初始化核心功能...');\n await options.lifecycle.initialization();\n onProgress?.(70, '核心功能初始化完成');\n } else {\n onProgress?.(70);\n }\n\n onProgress?.(80, '准备完成...');\n\n const duration = Date.now() - startTime;\n\n const context: InitializationContext = {\n config,\n progress: 100,\n isReady: true,\n duration,\n };\n\n // 执行插件初始化钩子\n await pluginManager.executeInit(options, context);\n\n // 执行插件初始化后钩子\n await pluginManager.executeAfterInit(options, context);\n\n // 6. 初始化之后回调(在 context 创建后执行,可以访问完整的初始化上下文)\n if (options.lifecycle?.afterInitialization) {\n onProgress?.(90, '执行初始化后回调...');\n await options.lifecycle.afterInitialization(context);\n }\n\n onProgress?.(100, '初始化完成');\n\n return context;\n } catch (error) {\n logger.error('初始化失败:', error);\n throw error;\n }\n}\n"],"names":["logger","LogLevel","setupI18n","pluginManager","initialization","options","onProgress","startTime","Date","now","config","executeBeforeInit","setLevel","loggerLevel","INFO","lifecycle","beforeInitialization","locale","undefined","duration","context","progress","isReady","executeInit","executeAfterInit","afterInitialization","error"],"mappings":"AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,cAAc;AAC/C,SAASC,SAAS,QAAQ,gBAAgB;AAG1C,SAASC,aAAa,QAAQ,YAAY;AAoD1C;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,eAAeC,eACpBC,OAAqB,EACrBC,UAA6B;IAE7B,MAAMC,YAAYC,KAAKC,GAAG;IAC1B,IAAIC,SAAkC,CAAC;IAEvC,IAAI;QACF,gBAAgB;QAChB,MAAMP,cAAcQ,iBAAiB,CAACN;QAEtC,YAAY;QACZC,aAAa,GAAG;QAChBN,OAAOY,QAAQ,CAACP,QAAQQ,WAAW,IAAIZ,SAASa,IAAI;QAEpD,YAAY;QACZR,aAAa;QAEb,aAAa;QACb,IAAID,QAAQU,SAAS,EAAEC,sBAAsB;YAC3CV,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACC,oBAAoB;QAC9C;QAEA,WAAW;QACXV,aAAa,IAAI;QACjBJ,UAAUG,QAAQY,MAAM,IAAIC;QAE5B,WAAW;QACX,IAAIb,QAAQU,SAAS,EAAEX,gBAAgB;YACrCE,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACX,cAAc;YACtCE,aAAa,IAAI;QACnB,OAAO;YACLA,aAAa;QACf;QAEAA,aAAa,IAAI;QAEjB,MAAMa,WAAWX,KAAKC,GAAG,KAAKF;QAE9B,MAAMa,UAAiC;YACrCV;YACAW,UAAU;YACVC,SAAS;YACTH;QACF;QAEA,YAAY;QACZ,MAAMhB,cAAcoB,WAAW,CAAClB,SAASe;QAEzC,aAAa;QACb,MAAMjB,cAAcqB,gBAAgB,CAACnB,SAASe;QAE9C,4CAA4C;QAC5C,IAAIf,QAAQU,SAAS,EAAEU,qBAAqB;YAC1CnB,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACU,mBAAmB,CAACL;QAC9C;QAEAd,aAAa,KAAK;QAElB,OAAOc;IACT,EAAE,OAAOM,OAAO;QACd1B,OAAO0B,KAAK,CAAC,UAAUA;QACvB,MAAMA;IACR;AACF"}
1
+ {"version":3,"sources":["../../../src/core/initialization/initialization.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport { setupI18n } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { ManagerLifecycle, StartOptions } from '../types';\nimport { pluginManager } from '../plugin';\n\n/**\n * 初始化上下文\n */\nexport interface InitializationContext {\n /**\n * 已加载的配置\n */\n config: Record<string, unknown>;\n\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 是否准备就绪\n */\n isReady: boolean;\n\n /**\n * 初始化耗时(毫秒)\n */\n duration: number;\n}\n\n/**\n * 初始化选项\n */\nexport interface InitializationOptions {\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n\n /**\n * 国际化配置\n */\n locale?: Record<LangType, Record<string, unknown>>;\n\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n}\n\n/**\n * 进度回调函数\n */\nexport type ProgressCallback = (progress: number, step?: string) => void;\n\n/**\n * 初始化方法\n * \n * 这是核心的初始化逻辑,可被启动页或直接调用\n * \n * @param options - 初始化选项\n * @param onProgress - 进度回调函数(可选)\n * @returns Promise<InitializationContext>\n * \n * @example\n * ```typescript\n * const context = await initialization({\n * loggerLevel: LogLevel.INFO,\n * lifecycle: {\n * initialization: async () => {\n * // 初始化逻辑\n * },\n * },\n * }, (progress, step) => {\n * console.log(`进度: ${progress}%, 步骤: ${step}`);\n * });\n * ```\n */\nexport async function initialization(\n options: StartOptions,\n onProgress?: ProgressCallback\n): Promise<InitializationContext> {\n const startTime = Date.now();\n let config: Record<string, unknown> = {};\n\n try {\n // 0. 执行插件初始化前钩子\n await pluginManager.executeBeforeInit(options);\n\n // 1. 设置日志级别\n onProgress?.(5, '初始化日志系统...');\n logger.setLevel(options.loggerLevel ?? LogLevel.INFO);\n\n // 2. 预留配置阶段\n onProgress?.(30);\n\n // 3. 初始化之前回调\n if (options.lifecycle?.beforeInitialization) {\n onProgress?.(35, '执行初始化前回调...');\n await options.lifecycle.beforeInitialization();\n }\n\n // 4. 国际化设置\n onProgress?.(40, '设置国际化...');\n setupI18n(options.locale || undefined);\n\n // 5. 核心初始化\n if (options.lifecycle?.initialization) {\n onProgress?.(50, '初始化核心功能...');\n await options.lifecycle.initialization();\n onProgress?.(70, '核心功能初始化完成');\n } else {\n onProgress?.(70);\n }\n\n onProgress?.(80, '准备完成...');\n\n const duration = Date.now() - startTime;\n\n const context: InitializationContext = {\n config,\n progress: 100,\n isReady: true,\n duration,\n };\n\n // 执行插件初始化钩子\n await pluginManager.executeInit(options, context);\n\n // 执行插件初始化后钩子\n await pluginManager.executeAfterInit(options, context);\n\n // 6. 初始化之后回调(在 context 创建后执行,可以访问完整的初始化上下文)\n if (options.lifecycle?.afterInitialization) {\n onProgress?.(90, '执行初始化后回调...');\n await options.lifecycle.afterInitialization(context);\n }\n\n onProgress?.(100, '初始化完成');\n\n return context;\n } catch (error) {\n logger.error('初始化失败:', error);\n throw error;\n }\n}\n"],"names":["logger","LogLevel","setupI18n","pluginManager","initialization","options","onProgress","startTime","Date","now","config","executeBeforeInit","setLevel","loggerLevel","INFO","lifecycle","beforeInitialization","locale","undefined","duration","context","progress","isReady","executeInit","executeAfterInit","afterInitialization","error"],"mappings":"AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,gBAAgB;AACjD,SAASC,SAAS,QAAQ,gBAAgB;AAG1C,SAASC,aAAa,QAAQ,YAAY;AAoD1C;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,eAAeC,eACpBC,OAAqB,EACrBC,UAA6B;IAE7B,MAAMC,YAAYC,KAAKC,GAAG;IAC1B,IAAIC,SAAkC,CAAC;IAEvC,IAAI;QACF,gBAAgB;QAChB,MAAMP,cAAcQ,iBAAiB,CAACN;QAEtC,YAAY;QACZC,aAAa,GAAG;QAChBN,OAAOY,QAAQ,CAACP,QAAQQ,WAAW,IAAIZ,SAASa,IAAI;QAEpD,YAAY;QACZR,aAAa;QAEb,aAAa;QACb,IAAID,QAAQU,SAAS,EAAEC,sBAAsB;YAC3CV,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACC,oBAAoB;QAC9C;QAEA,WAAW;QACXV,aAAa,IAAI;QACjBJ,UAAUG,QAAQY,MAAM,IAAIC;QAE5B,WAAW;QACX,IAAIb,QAAQU,SAAS,EAAEX,gBAAgB;YACrCE,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACX,cAAc;YACtCE,aAAa,IAAI;QACnB,OAAO;YACLA,aAAa;QACf;QAEAA,aAAa,IAAI;QAEjB,MAAMa,WAAWX,KAAKC,GAAG,KAAKF;QAE9B,MAAMa,UAAiC;YACrCV;YACAW,UAAU;YACVC,SAAS;YACTH;QACF;QAEA,YAAY;QACZ,MAAMhB,cAAcoB,WAAW,CAAClB,SAASe;QAEzC,aAAa;QACb,MAAMjB,cAAcqB,gBAAgB,CAACnB,SAASe;QAE9C,4CAA4C;QAC5C,IAAIf,QAAQU,SAAS,EAAEU,qBAAqB;YAC1CnB,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACU,mBAAmB,CAACL;QAC9C;QAEAd,aAAa,KAAK;QAElB,OAAOc;IACT,EAAE,OAAOM,OAAO;QACd1B,OAAO0B,KAAK,CAAC,UAAUA;QACvB,MAAMA;IACR;AACF"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "initializationErrorState", {
8
8
  return initializationErrorState;
9
9
  }
10
10
  });
11
- const _errors = require("../../utils/errors");
11
+ const _utils = require("@vlian/utils");
12
12
  function _define_property(obj, key, value) {
13
13
  if (key in obj) {
14
14
  Object.defineProperty(obj, key, {
@@ -30,7 +30,7 @@ function _define_property(obj, key, value) {
30
30
  /**
31
31
  * 设置错误
32
32
  */ setError(error) {
33
- this.error = _errors.errorUtils.normalizeError(error);
33
+ this.error = _utils.errorUtils.normalizeError(error);
34
34
  // 通知所有监听器
35
35
  this.listeners.forEach((listener)=>listener());
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '../../utils/errors';\nimport { errorUtils } from '../../utils/errors';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["initializationErrorState","InitializationErrorState","setError","error","errorUtils","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set"],"mappings":";;;;+BAyDaA;;;eAAAA;;;wBAxDc;;;;;;;;;;;;;;AAE3B;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGC,kBAAU,CAACC,cAAc,CAACF;QACvC,UAAU;QACV,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACN,KAAK;IACnB;IAEA;;GAEC,GACDO,aAAmB;QACjB,IAAI,CAACP,KAAK,GAAG;QACb,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACX,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQG,aAA6B,IAAIS;;AA0C3C;AAKO,MAAMf,2BAA2B,IAAIC"}
1
+ {"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '@vlian/utils';\nimport { errorUtils } from '@vlian/utils';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["initializationErrorState","InitializationErrorState","setError","error","errorUtils","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set"],"mappings":";;;;+BAyDaA;;;eAAAA;;;uBAxDc;;;;;;;;;;;;;;AAE3B;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGC,iBAAU,CAACC,cAAc,CAACF;QACvC,UAAU;QACV,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACN,KAAK;IACnB;IAEA;;GAEC,GACDO,aAAmB;QACjB,IAAI,CAACP,KAAK,GAAG;QACb,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACX,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQG,aAA6B,IAAIS;;AA0C3C;AAKO,MAAMf,2BAA2B,IAAIC"}
@@ -1,4 +1,4 @@
1
- import type { FrameworkError } from '../../utils/errors';
1
+ import type { FrameworkError } from '@vlian/utils';
2
2
  /**
3
3
  * 初始化错误状态管理器
4
4
  *
@@ -11,7 +11,7 @@ function _define_property(obj, key, value) {
11
11
  }
12
12
  return obj;
13
13
  }
14
- import { errorUtils } from "../../utils/errors";
14
+ import { errorUtils } from "@vlian/utils";
15
15
  /**
16
16
  * 初始化错误状态管理器
17
17
  *
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '../../utils/errors';\nimport { errorUtils } from '../../utils/errors';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["errorUtils","InitializationErrorState","setError","error","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set","initializationErrorState"],"mappings":";;;;;;;;;;;;;AACA,SAASA,UAAU,QAAQ,qBAAqB;AAEhD;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGH,WAAWI,cAAc,CAACD;QACvC,UAAU;QACV,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACL,KAAK;IACnB;IAEA;;GAEC,GACDM,aAAmB;QACjB,IAAI,CAACN,KAAK,GAAG;QACb,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACV,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQE,aAA6B,IAAIS;;AA0C3C;AAEA;;CAEC,GACD,OAAO,MAAMC,2BAA2B,IAAId,2BAA2B"}
1
+ {"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '@vlian/utils';\nimport { errorUtils } from '@vlian/utils';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["errorUtils","InitializationErrorState","setError","error","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set","initializationErrorState"],"mappings":";;;;;;;;;;;;;AACA,SAASA,UAAU,QAAQ,eAAe;AAE1C;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGH,WAAWI,cAAc,CAACD;QACvC,UAAU;QACV,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACL,KAAK;IACnB;IAEA;;GAEC,GACDM,aAAmB;QACjB,IAAI,CAACN,KAAK,GAAG;QACb,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACV,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQE,aAA6B,IAAIS;;AA0C3C;AAEA;;CAEC,GACD,OAAO,MAAMC,2BAA2B,IAAId,2BAA2B"}
@@ -8,7 +8,8 @@ Object.defineProperty(exports, "resolveKernelAdapters", {
8
8
  return resolveKernelAdapters;
9
9
  }
10
10
  });
11
- const _utils = require("../../utils");
11
+ const _logger = require("@vlian/logger");
12
+ const _monitoring = require("@vlian/monitoring");
12
13
  const _state = require("../../state");
13
14
  const _AppEventBus = require("../event/AppEventBus");
14
15
  const _library = require("../../library");
@@ -28,45 +29,45 @@ function _define_property(obj, key, value) {
28
29
  const defaultLoggerAdapter = {
29
30
  initialize (options) {
30
31
  if (options.loggerLevel) {
31
- _utils.logger.setLevel(options.loggerLevel);
32
+ _logger.logger.setLevel(options.loggerLevel);
32
33
  }
33
34
  },
34
35
  setLevel (level) {
35
- _utils.logger.setLevel(level);
36
+ _logger.logger.setLevel(level);
36
37
  },
37
38
  debug (message, ...args) {
38
- _utils.logger.debug(message, ...args);
39
+ _logger.logger.debug(message, ...args);
39
40
  },
40
41
  info (message, ...args) {
41
- _utils.logger.info(message, ...args);
42
+ _logger.logger.info(message, ...args);
42
43
  },
43
44
  warn (message, ...args) {
44
- _utils.logger.warn(message, ...args);
45
+ _logger.logger.warn(message, ...args);
45
46
  },
46
47
  error (message, ...args) {
47
- _utils.logger.error(message, ...args);
48
+ _logger.logger.error(message, ...args);
48
49
  }
49
50
  };
50
51
  const defaultMonitoringAdapter = {
51
52
  initialize () {
52
- (0, _utils.initMonitoring)();
53
+ (0, _monitoring.initMonitoring)();
53
54
  },
54
55
  captureError (error, metadata) {
55
56
  try {
56
- const service = (0, _utils.initMonitoring)();
57
+ const service = (0, _monitoring.initMonitoring)();
57
58
  service.captureError(error, metadata);
58
59
  } catch {
59
- _utils.logger.error('监控适配器上报失败', error, metadata);
60
+ _logger.logger.error('监控适配器上报失败', error, metadata);
60
61
  }
61
62
  },
62
63
  reportMetric (name, value, tags) {
63
- _utils.logger.debug(`metric:${name}`, {
64
+ _logger.logger.debug(`metric:${name}`, {
64
65
  value,
65
66
  tags
66
67
  });
67
68
  },
68
69
  reportPhase (metric) {
69
- _utils.logger.debug('kernel.phase.metric', metric);
70
+ _logger.logger.debug('kernel.phase.metric', metric);
70
71
  }
71
72
  };
72
73
  let DefaultStateAdapter = class DefaultStateAdapter {
@@ -163,7 +164,7 @@ function applyThemeToDocument(theme) {
163
164
  }
164
165
  const defaultErrorHandler = {
165
166
  async handle (error) {
166
- _utils.logger.error('Kernel 启动失败', error);
167
+ _logger.logger.error('Kernel 启动失败', error);
167
168
  return {
168
169
  handled: true,
169
170
  shouldThrow: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger, initMonitoring } from '../../utils';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["resolveKernelAdapters","defaultLoggerAdapter","initialize","options","loggerLevel","logger","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","initMonitoring","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","StateManager","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","AppEventBus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","setupI18n","resources","setLang","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport { initMonitoring } from '@vlian/monitoring';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["resolveKernelAdapters","defaultLoggerAdapter","initialize","options","loggerLevel","logger","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","initMonitoring","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","StateManager","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","AppEventBus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","setupI18n","resources","setLang","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
@@ -11,7 +11,8 @@ function _define_property(obj, key, value) {
11
11
  }
12
12
  return obj;
13
13
  }
14
- import { logger, initMonitoring } from "../../utils";
14
+ import { logger } from "@vlian/logger";
15
+ import { initMonitoring } from "@vlian/monitoring";
15
16
  import { StateManager } from "../../state";
16
17
  import { AppEventBus } from "../event/AppEventBus";
17
18
  import { setupI18n, setLang } from "../../library";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger, initMonitoring } from '../../utils';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["logger","initMonitoring","StateManager","AppEventBus","setupI18n","setLang","defaultLoggerAdapter","initialize","options","loggerLevel","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","resources","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","resolveKernelAdapters","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport { initMonitoring } from '@vlian/monitoring';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["logger","initMonitoring","StateManager","AppEventBus","setupI18n","setLang","defaultLoggerAdapter","initialize","options","loggerLevel","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","resources","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","resolveKernelAdapters","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { LogLevel } from '../../utils';
1
+ import type { LogLevel } from '@vlian/logger';
2
2
  import type { LangType } from '../../library/locale/types';
3
3
  import type { InitializationContext } from '../initialization';
4
4
  export type ThemeMode = 'light' | 'dark' | 'system';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/kernel/types.ts"],"sourcesContent":["import type { LogLevel } from '../../utils';\nimport type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\nexport interface ThemeSnapshot {\n mode: ThemeMode;\n primaryColor?: string;\n tokens?: Record<string, string | number>;\n compatibility?: {\n antd?: Record<string, unknown>;\n shadcn?: Record<string, string | number>;\n };\n}\n\nexport interface I18nSnapshot {\n locale: LangType;\n resources?: Record<string, Record<string, unknown>>;\n}\n\nexport type KernelBootPhase =\n | 'prepare'\n | 'services'\n | 'config'\n | 'i18n'\n | 'theme'\n | 'init'\n | 'ready'\n | 'postReady';\n\nexport interface KernelPhaseMetric {\n phase: KernelBootPhase;\n startTime: number;\n endTime: number;\n duration: number;\n}\n\nexport interface KernelBootErrorLike {\n code: string;\n phase: KernelBootPhase;\n severity: 'low' | 'medium' | 'high' | 'critical';\n retryable: boolean;\n traceId: string;\n cause?: unknown;\n}\n\nexport interface KernelLoggerAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n setLevel?: (level: LogLevel) => void;\n debug: (message: string, ...args: unknown[]) => void;\n info: (message: string, ...args: unknown[]) => void;\n warn: (message: string, ...args: unknown[]) => void;\n error: (message: string, ...args: unknown[]) => void;\n}\n\nexport interface KernelMonitoringAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n captureError: (error: unknown, metadata?: Record<string, unknown>) => void;\n reportMetric?: (name: string, value: number, tags?: Record<string, string>) => void;\n reportPhase?: (metric: KernelPhaseMetric) => void;\n}\n\nexport interface KernelStateAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n getInstance: () => unknown;\n destroy?: () => void;\n}\n\nexport interface KernelEventBusAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n emit: (event: string, payload?: unknown) => void;\n on?: (event: string, handler: (payload?: unknown) => void) => () => void;\n destroy?: () => void;\n}\n\nexport interface KernelI18nAdapter {\n initialize: (snapshot: I18nSnapshot) => Promise<void> | void;\n setLocale: (locale: LangType) => Promise<void> | void;\n}\n\nexport interface KernelThemeAdapter {\n initialize?: (snapshot: ThemeSnapshot) => Promise<void> | void;\n apply: (snapshot: ThemeSnapshot) => Promise<void> | void;\n}\n\nexport interface KernelErrorHandlerResult {\n handled: boolean;\n shouldThrow: boolean;\n}\n\nexport interface KernelErrorHandler {\n handle: (error: KernelBootErrorLike) => Promise<KernelErrorHandlerResult> | KernelErrorHandlerResult;\n}\n\nexport interface KernelAdapters {\n logger?: KernelLoggerAdapter;\n monitoring?: KernelMonitoringAdapter;\n state?: KernelStateAdapter;\n eventBus?: KernelEventBusAdapter;\n i18n?: KernelI18nAdapter;\n theme?: KernelThemeAdapter;\n errorHandler?: KernelErrorHandler;\n}\n\nexport interface KernelPerformanceOptions {\n phaseTimeoutMs?: Partial<Record<KernelBootPhase, number>>;\n}\n\nexport interface KernelLifecycle {\n beforeInitialization?: () => Promise<void> | void;\n initialization?: () => Promise<void> | void;\n afterInitialization?: (context: InitializationContext) => Promise<void> | void;\n}\n\nexport interface KernelStartOptions {\n loggerLevel?: LogLevel;\n configLoader?: () => Promise<Record<string, unknown>>;\n configFallback?: Record<string, unknown>;\n lifecycle?: KernelLifecycle;\n locale?: I18nSnapshot;\n theme?: ThemeSnapshot;\n adapters?: KernelAdapters;\n performance?: KernelPerformanceOptions;\n enablePostReady?: boolean;\n enabledPhases?: Partial<Record<KernelBootPhase, boolean>>;\n}\n\nexport interface KernelRuntime {\n traceId: string;\n getTheme: () => ThemeSnapshot;\n setTheme: (partial: Partial<ThemeSnapshot>) => Promise<void>;\n setThemeMode: (mode: ThemeMode) => Promise<void>;\n getI18n: () => I18nSnapshot;\n setLocale: (locale: LangType) => Promise<void>;\n getConfig: () => Record<string, unknown>;\n getStateManager: () => unknown;\n getEventBus: () => KernelEventBusAdapter;\n getMetrics: () => KernelPhaseMetric[];\n destroy: () => void;\n}\n"],"names":[],"mappings":"AAgIA,WAYC"}
1
+ {"version":3,"sources":["../../../src/core/kernel/types.ts"],"sourcesContent":["import type { LogLevel } from '@vlian/logger';\nimport type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\nexport interface ThemeSnapshot {\n mode: ThemeMode;\n primaryColor?: string;\n tokens?: Record<string, string | number>;\n compatibility?: {\n antd?: Record<string, unknown>;\n shadcn?: Record<string, string | number>;\n };\n}\n\nexport interface I18nSnapshot {\n locale: LangType;\n resources?: Record<string, Record<string, unknown>>;\n}\n\nexport type KernelBootPhase =\n | 'prepare'\n | 'services'\n | 'config'\n | 'i18n'\n | 'theme'\n | 'init'\n | 'ready'\n | 'postReady';\n\nexport interface KernelPhaseMetric {\n phase: KernelBootPhase;\n startTime: number;\n endTime: number;\n duration: number;\n}\n\nexport interface KernelBootErrorLike {\n code: string;\n phase: KernelBootPhase;\n severity: 'low' | 'medium' | 'high' | 'critical';\n retryable: boolean;\n traceId: string;\n cause?: unknown;\n}\n\nexport interface KernelLoggerAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n setLevel?: (level: LogLevel) => void;\n debug: (message: string, ...args: unknown[]) => void;\n info: (message: string, ...args: unknown[]) => void;\n warn: (message: string, ...args: unknown[]) => void;\n error: (message: string, ...args: unknown[]) => void;\n}\n\nexport interface KernelMonitoringAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n captureError: (error: unknown, metadata?: Record<string, unknown>) => void;\n reportMetric?: (name: string, value: number, tags?: Record<string, string>) => void;\n reportPhase?: (metric: KernelPhaseMetric) => void;\n}\n\nexport interface KernelStateAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n getInstance: () => unknown;\n destroy?: () => void;\n}\n\nexport interface KernelEventBusAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n emit: (event: string, payload?: unknown) => void;\n on?: (event: string, handler: (payload?: unknown) => void) => () => void;\n destroy?: () => void;\n}\n\nexport interface KernelI18nAdapter {\n initialize: (snapshot: I18nSnapshot) => Promise<void> | void;\n setLocale: (locale: LangType) => Promise<void> | void;\n}\n\nexport interface KernelThemeAdapter {\n initialize?: (snapshot: ThemeSnapshot) => Promise<void> | void;\n apply: (snapshot: ThemeSnapshot) => Promise<void> | void;\n}\n\nexport interface KernelErrorHandlerResult {\n handled: boolean;\n shouldThrow: boolean;\n}\n\nexport interface KernelErrorHandler {\n handle: (error: KernelBootErrorLike) => Promise<KernelErrorHandlerResult> | KernelErrorHandlerResult;\n}\n\nexport interface KernelAdapters {\n logger?: KernelLoggerAdapter;\n monitoring?: KernelMonitoringAdapter;\n state?: KernelStateAdapter;\n eventBus?: KernelEventBusAdapter;\n i18n?: KernelI18nAdapter;\n theme?: KernelThemeAdapter;\n errorHandler?: KernelErrorHandler;\n}\n\nexport interface KernelPerformanceOptions {\n phaseTimeoutMs?: Partial<Record<KernelBootPhase, number>>;\n}\n\nexport interface KernelLifecycle {\n beforeInitialization?: () => Promise<void> | void;\n initialization?: () => Promise<void> | void;\n afterInitialization?: (context: InitializationContext) => Promise<void> | void;\n}\n\nexport interface KernelStartOptions {\n loggerLevel?: LogLevel;\n configLoader?: () => Promise<Record<string, unknown>>;\n configFallback?: Record<string, unknown>;\n lifecycle?: KernelLifecycle;\n locale?: I18nSnapshot;\n theme?: ThemeSnapshot;\n adapters?: KernelAdapters;\n performance?: KernelPerformanceOptions;\n enablePostReady?: boolean;\n enabledPhases?: Partial<Record<KernelBootPhase, boolean>>;\n}\n\nexport interface KernelRuntime {\n traceId: string;\n getTheme: () => ThemeSnapshot;\n setTheme: (partial: Partial<ThemeSnapshot>) => Promise<void>;\n setThemeMode: (mode: ThemeMode) => Promise<void>;\n getI18n: () => I18nSnapshot;\n setLocale: (locale: LangType) => Promise<void>;\n getConfig: () => Record<string, unknown>;\n getStateManager: () => unknown;\n getEventBus: () => KernelEventBusAdapter;\n getMetrics: () => KernelPhaseMetric[];\n destroy: () => void;\n}\n"],"names":[],"mappings":"AAgIA,WAYC"}
@@ -16,7 +16,7 @@ _export(exports, {
16
16
  return getRouterManager;
17
17
  }
18
18
  });
19
- const _utils = require("../../utils");
19
+ const _logger = require("@vlian/logger");
20
20
  const _transform = require("./utils/transform");
21
21
  const _transform1 = require("./utils/adapters/react-router/transform");
22
22
  const _reactrouterdom = require("react-router-dom");
@@ -60,16 +60,16 @@ let RouterManager = class RouterManager {
60
60
  */ async initialize(config) {
61
61
  // 如果路由被禁用,直接返回
62
62
  if (config.enabled === false || config.enabled === 'disabled') {
63
- _utils.logger.info('路由系统已禁用');
63
+ _logger.logger.info('路由系统已禁用');
64
64
  return;
65
65
  }
66
66
  // 配置验证(如果启用)
67
67
  if (config.enableValidation !== false) {
68
68
  try {
69
69
  _validation.RouterConfigValidator.validate(config);
70
- _utils.logger.debug('路由配置验证通过');
70
+ _logger.logger.debug('路由配置验证通过');
71
71
  } catch (error) {
72
- _utils.logger.error('路由配置验证失败', error);
72
+ _logger.logger.error('路由配置验证失败', error);
73
73
  // 开发环境下抛出错误,生产环境下记录警告但继续执行
74
74
  if (process.env.NODE_ENV === 'development') {
75
75
  throw error;
@@ -84,7 +84,7 @@ let RouterManager = class RouterManager {
84
84
  if (config.hooks) {
85
85
  const lifecycleManager = (0, _lifecycle.getRouterLifecycleManager)();
86
86
  lifecycleManager.register(config.hooks);
87
- _utils.logger.debug('路由生命周期钩子已注册');
87
+ _logger.logger.debug('路由生命周期钩子已注册');
88
88
  }
89
89
  // 转换数据(使用缓存)
90
90
  if (!config.routes) {
@@ -97,7 +97,7 @@ let RouterManager = class RouterManager {
97
97
  const cacheKey = config.routes;
98
98
  const cachedResult = this.cache.get(cacheKey);
99
99
  if (cachedResult) {
100
- _utils.logger.debug('使用缓存的路由转换结果');
100
+ _logger.logger.debug('使用缓存的路由转换结果');
101
101
  result = cachedResult;
102
102
  } else {
103
103
  // 执行插件钩子:路由转换前
@@ -151,7 +151,7 @@ let RouterManager = class RouterManager {
151
151
  name: 'router-init'
152
152
  }
153
153
  }, undefined, true);
154
- _utils.logger.info('路由管理器初始化完成');
154
+ _logger.logger.info('路由管理器初始化完成');
155
155
  }
156
156
  /**
157
157
  * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。
@@ -192,7 +192,7 @@ let RouterManager = class RouterManager {
192
192
  Object.assign(route, resolved);
193
193
  delete route.lazy;
194
194
  } catch (error) {
195
- _utils.logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);
195
+ _logger.logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);
196
196
  }
197
197
  }));
198
198
  }
@@ -226,7 +226,7 @@ let RouterManager = class RouterManager {
226
226
  lifecycleManager.clear();
227
227
  const middlewareManager = (0, _middleware.getRouterMiddlewareManager)();
228
228
  middlewareManager.clear();
229
- _utils.logger.info('路由管理器已销毁');
229
+ _logger.logger.info('路由管理器已销毁');
230
230
  }
231
231
  /**
232
232
  * 获取路由缓存实例
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/router/RouterManager.ts"],"sourcesContent":["import { logger } from '../../utils';\nimport type { RouterConfig } from './types';\nimport { transformRoutes } from './utils/transform';\nimport { transformRoutesToReactRoutes } from './utils/adapters/react-router/transform';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter, matchRoutes, type RouteObject } from 'react-router-dom';\nimport { RouterConfigValidator } from './validation';\nimport { getRouterLifecycleManager } from './lifecycle';\nimport { getRouterMiddlewareManager } from './middleware';\nimport { RouterError, RouterErrorCode } from './errors';\nimport { getRouteCache } from './performance/RouteCache';\nimport { getRoutePreloader } from './performance/RoutePreloader';\nimport { getRouterPluginManager, PluginLifecycleStage } from './plugin';\nimport { getRouterMonitoring } from './monitoring';\nimport { getAdapterManager } from './adapter';\nimport { createReactRouterAdapter } from './adapter/react-router';\n\nexport class RouterManager {\n private static instance: RouterManager | null = null;\n\n /**\n * 路由实例\n * 只能在 initialize 方法中赋值\n */\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 是否已初始化\n */\n private initialized = false;\n\n /**\n * 路由缓存实例\n */\n private cache = getRouteCache();\n\n /**\n * 路由预加载器实例\n */\n private preloader = getRoutePreloader();\n\n /**\n * 路由插件管理器实例\n */\n private pluginManager = getRouterPluginManager();\n\n /**\n * 路由监控服务实例\n */\n private monitoring = getRouterMonitoring();\n\n /**\n * 路由适配器管理器实例\n */\n private adapterManager = getAdapterManager();\n\n private constructor() {\n // 私有构造函数\n // 注册默认的 React Router 适配器\n this.adapterManager.register({\n name: 'react-router',\n factory: createReactRouterAdapter(),\n priority: 10,\n });\n }\n /**\n * 获取单例实例\n */\n static getInstance(): RouterManager {\n if (!RouterManager.instance) {\n RouterManager.instance = new RouterManager();\n }\n return RouterManager.instance;\n }\n /**\n * 初始化路由管理器\n * \n * @param config - 路由配置\n * @param _appInstance - 应用实例(保留用于兼容性,当前未使用)\n */\n async initialize(config: RouterConfig): Promise<void> {\n // 如果路由被禁用,直接返回\n if (config.enabled === false || config.enabled === 'disabled') {\n logger.info('路由系统已禁用');\n return;\n }\n\n // 配置验证(如果启用)\n if (config.enableValidation !== false) {\n try {\n RouterConfigValidator.validate(config);\n logger.debug('路由配置验证通过');\n } catch (error) {\n logger.error('路由配置验证失败', error);\n // 开发环境下抛出错误,生产环境下记录警告但继续执行\n if (process.env.NODE_ENV === 'development') {\n throw error;\n }\n }\n }\n\n // 执行插件钩子:路由初始化前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_INIT, {\n config,\n });\n\n // 注册生命周期钩子\n if (config.hooks) {\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.register(config.hooks);\n logger.debug('路由生命周期钩子已注册');\n }\n\n // 转换数据(使用缓存)\n if (!config.routes) {\n throw new RouterError(\n '路由配置不能为空',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 更新预加载策略(默认关闭,按需懒加载)\n this.preloader.updateConfig(config.preload);\n this.preloader.clear();\n\n let result;\n const cacheKey = config.routes;\n const cachedResult = this.cache.get(cacheKey);\n\n if (cachedResult) {\n logger.debug('使用缓存的路由转换结果');\n result = cachedResult;\n } else {\n // 执行插件钩子:路由转换前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_TRANSFORM, {\n config,\n });\n\n result = await transformRoutes(config.routes, config.transformOptions);\n\n // 执行插件钩子:路由转换后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_TRANSFORM, {\n config,\n routes: result.routes,\n });\n\n // 缓存转换结果\n this.cache.set(cacheKey, result);\n }\n\n const enableHydrateFallback =\n config.enableHydrateFallback\n ?? Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData);\n\n const reactRoutes = await transformRoutesToReactRoutes(\n result.routes,\n result,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n enableHydrateFallback,\n );\n\n // 注册路由到预加载器\n if (result.routes) {\n this.preloader.registerRoutes(result.routes, result);\n // 开始预加载\n this.preloader.startPreload();\n }\n\n await this.resolveInitialLazyRoutes(reactRoutes, !enableHydrateFallback);\n\n let routerInstance: ReturnType<typeof createBrowserRouter> | null = null;\n if (config.mode === 'browser') {\n routerInstance = createBrowserRouter(reactRoutes, config.options);\n } else if (config.mode === 'hash') {\n routerInstance = createHashRouter(reactRoutes, config.options);\n } else if (config.mode === 'memory') {\n routerInstance = createMemoryRouter(reactRoutes, config.options);\n }\n\n if (!routerInstance) {\n throw new RouterError(\n '路由模式不支持',\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { mode: config.mode }\n );\n }\n\n // 只能在 initialize 方法中赋值\n this.router = routerInstance;\n this.initialized = true;\n\n // 执行插件钩子:路由初始化后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_INIT, {\n config,\n routes: result.routes,\n });\n\n // 记录监控:路由初始化完成\n const initialPath = typeof window !== 'undefined'\n ? `${window.location.pathname}${window.location.search}${window.location.hash}`\n : this.router?.state?.location?.pathname ?? '/';\n\n this.monitoring.trackRouteAccess(\n {\n path: initialPath,\n meta: { name: 'router-init' },\n },\n undefined,\n true\n );\n\n logger.info('路由管理器初始化完成');\n }\n\n /**\n * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。\n * resolveAll=true 时会在初始化阶段解析全部 lazy 路由。\n */\n private async resolveInitialLazyRoutes(routes: RouteObject[], resolveAll: boolean = false): Promise<void> {\n if (typeof window === 'undefined') {\n return;\n }\n\n let targetRoutes: RouteObject[] = [];\n if (resolveAll) {\n const stack = [...routes];\n while (stack.length > 0) {\n const current = stack.shift();\n if (!current) {\n continue;\n }\n targetRoutes.push(current);\n if (current.children && current.children.length > 0) {\n stack.push(...current.children);\n }\n }\n } else {\n const matches = matchRoutes(routes, window.location.pathname) ?? [];\n if (matches.length === 0) {\n return;\n }\n targetRoutes = matches.map((match) => match.route);\n }\n\n await Promise.all(\n targetRoutes.map(async (route) => {\n const lazy = route.lazy;\n if (typeof lazy !== 'function') {\n return;\n }\n\n try {\n const resolved = await lazy();\n Object.assign(route, resolved);\n delete (route as RouteObject & { lazy?: unknown }).lazy;\n } catch (error) {\n logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);\n }\n }),\n );\n }\n\n /**\n * 获取路由实例\n * \n * @returns 路由实例,如果未初始化则返回 null\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 检查是否已初始化\n * \n * @returns 如果已初始化返回 true,否则返回 false\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * 销毁路由管理器\n */\n destroy(): void {\n // 执行插件钩子:销毁\n this.pluginManager.executeHooks(PluginLifecycleStage.DESTROY, {\n config: {} as RouterConfig,\n });\n\n // 停止预加载\n this.preloader.stopPreload();\n\n this.router = null;\n this.initialized = false;\n \n // 清空生命周期钩子和中间件\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.clear();\n \n const middlewareManager = getRouterMiddlewareManager();\n middlewareManager.clear();\n \n logger.info('路由管理器已销毁');\n }\n\n /**\n * 获取路由缓存实例\n */\n getCache() {\n return this.cache;\n }\n\n /**\n * 获取路由预加载器实例\n */\n getPreloader() {\n return this.preloader;\n }\n\n /**\n * 获取路由插件管理器实例\n */\n getPluginManager() {\n return this.pluginManager;\n }\n\n /**\n * 获取路由监控服务实例\n */\n getMonitoring() {\n return this.monitoring;\n }\n}\n\n/**\n * 获取路由管理器\n */\nexport function getRouterManager(): RouterManager {\n return RouterManager.getInstance();\n}\n"],"names":["RouterManager","getRouterManager","getInstance","instance","initialize","config","enabled","logger","info","enableValidation","RouterConfigValidator","validate","debug","error","process","env","NODE_ENV","pluginManager","executeHooks","PluginLifecycleStage","BEFORE_INIT","hooks","lifecycleManager","getRouterLifecycleManager","register","routes","RouterError","RouterErrorCode","ROUTER_CONFIG_ERROR","preloader","updateConfig","preload","clear","result","cacheKey","cachedResult","cache","get","BEFORE_TRANSFORM","transformRoutes","transformOptions","AFTER_TRANSFORM","set","enableHydrateFallback","Boolean","options","hydrationData","reactRoutes","transformRoutesToReactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","registerRoutes","startPreload","resolveInitialLazyRoutes","routerInstance","mode","createBrowserRouter","createHashRouter","createMemoryRouter","undefined","router","initialized","AFTER_INIT","initialPath","window","location","pathname","search","hash","state","monitoring","trackRouteAccess","path","meta","name","resolveAll","targetRoutes","stack","length","current","shift","push","children","matches","matchRoutes","map","match","route","Promise","all","lazy","resolved","Object","assign","warn","getRouter","isInitialized","destroy","DESTROY","stopPreload","middlewareManager","getRouterMiddlewareManager","getCache","getPreloader","getPluginManager","getMonitoring","getRouteCache","getRoutePreloader","getRouterPluginManager","getRouterMonitoring","adapterManager","getAdapterManager","factory","createReactRouterAdapter","priority"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/router/RouterManager.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport type { RouterConfig } from './types';\nimport { transformRoutes } from './utils/transform';\nimport { transformRoutesToReactRoutes } from './utils/adapters/react-router/transform';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter, matchRoutes, type RouteObject } from 'react-router-dom';\nimport { RouterConfigValidator } from './validation';\nimport { getRouterLifecycleManager } from './lifecycle';\nimport { getRouterMiddlewareManager } from './middleware';\nimport { RouterError, RouterErrorCode } from './errors';\nimport { getRouteCache } from './performance/RouteCache';\nimport { getRoutePreloader } from './performance/RoutePreloader';\nimport { getRouterPluginManager, PluginLifecycleStage } from './plugin';\nimport { getRouterMonitoring } from './monitoring';\nimport { getAdapterManager } from './adapter';\nimport { createReactRouterAdapter } from './adapter/react-router';\n\nexport class RouterManager {\n private static instance: RouterManager | null = null;\n\n /**\n * 路由实例\n * 只能在 initialize 方法中赋值\n */\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 是否已初始化\n */\n private initialized = false;\n\n /**\n * 路由缓存实例\n */\n private cache = getRouteCache();\n\n /**\n * 路由预加载器实例\n */\n private preloader = getRoutePreloader();\n\n /**\n * 路由插件管理器实例\n */\n private pluginManager = getRouterPluginManager();\n\n /**\n * 路由监控服务实例\n */\n private monitoring = getRouterMonitoring();\n\n /**\n * 路由适配器管理器实例\n */\n private adapterManager = getAdapterManager();\n\n private constructor() {\n // 私有构造函数\n // 注册默认的 React Router 适配器\n this.adapterManager.register({\n name: 'react-router',\n factory: createReactRouterAdapter(),\n priority: 10,\n });\n }\n /**\n * 获取单例实例\n */\n static getInstance(): RouterManager {\n if (!RouterManager.instance) {\n RouterManager.instance = new RouterManager();\n }\n return RouterManager.instance;\n }\n /**\n * 初始化路由管理器\n * \n * @param config - 路由配置\n * @param _appInstance - 应用实例(保留用于兼容性,当前未使用)\n */\n async initialize(config: RouterConfig): Promise<void> {\n // 如果路由被禁用,直接返回\n if (config.enabled === false || config.enabled === 'disabled') {\n logger.info('路由系统已禁用');\n return;\n }\n\n // 配置验证(如果启用)\n if (config.enableValidation !== false) {\n try {\n RouterConfigValidator.validate(config);\n logger.debug('路由配置验证通过');\n } catch (error) {\n logger.error('路由配置验证失败', error);\n // 开发环境下抛出错误,生产环境下记录警告但继续执行\n if (process.env.NODE_ENV === 'development') {\n throw error;\n }\n }\n }\n\n // 执行插件钩子:路由初始化前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_INIT, {\n config,\n });\n\n // 注册生命周期钩子\n if (config.hooks) {\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.register(config.hooks);\n logger.debug('路由生命周期钩子已注册');\n }\n\n // 转换数据(使用缓存)\n if (!config.routes) {\n throw new RouterError(\n '路由配置不能为空',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 更新预加载策略(默认关闭,按需懒加载)\n this.preloader.updateConfig(config.preload);\n this.preloader.clear();\n\n let result;\n const cacheKey = config.routes;\n const cachedResult = this.cache.get(cacheKey);\n\n if (cachedResult) {\n logger.debug('使用缓存的路由转换结果');\n result = cachedResult;\n } else {\n // 执行插件钩子:路由转换前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_TRANSFORM, {\n config,\n });\n\n result = await transformRoutes(config.routes, config.transformOptions);\n\n // 执行插件钩子:路由转换后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_TRANSFORM, {\n config,\n routes: result.routes,\n });\n\n // 缓存转换结果\n this.cache.set(cacheKey, result);\n }\n\n const enableHydrateFallback =\n config.enableHydrateFallback\n ?? Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData);\n\n const reactRoutes = await transformRoutesToReactRoutes(\n result.routes,\n result,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n enableHydrateFallback,\n );\n\n // 注册路由到预加载器\n if (result.routes) {\n this.preloader.registerRoutes(result.routes, result);\n // 开始预加载\n this.preloader.startPreload();\n }\n\n await this.resolveInitialLazyRoutes(reactRoutes, !enableHydrateFallback);\n\n let routerInstance: ReturnType<typeof createBrowserRouter> | null = null;\n if (config.mode === 'browser') {\n routerInstance = createBrowserRouter(reactRoutes, config.options);\n } else if (config.mode === 'hash') {\n routerInstance = createHashRouter(reactRoutes, config.options);\n } else if (config.mode === 'memory') {\n routerInstance = createMemoryRouter(reactRoutes, config.options);\n }\n\n if (!routerInstance) {\n throw new RouterError(\n '路由模式不支持',\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { mode: config.mode }\n );\n }\n\n // 只能在 initialize 方法中赋值\n this.router = routerInstance;\n this.initialized = true;\n\n // 执行插件钩子:路由初始化后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_INIT, {\n config,\n routes: result.routes,\n });\n\n // 记录监控:路由初始化完成\n const initialPath = typeof window !== 'undefined'\n ? `${window.location.pathname}${window.location.search}${window.location.hash}`\n : this.router?.state?.location?.pathname ?? '/';\n\n this.monitoring.trackRouteAccess(\n {\n path: initialPath,\n meta: { name: 'router-init' },\n },\n undefined,\n true\n );\n\n logger.info('路由管理器初始化完成');\n }\n\n /**\n * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。\n * resolveAll=true 时会在初始化阶段解析全部 lazy 路由。\n */\n private async resolveInitialLazyRoutes(routes: RouteObject[], resolveAll: boolean = false): Promise<void> {\n if (typeof window === 'undefined') {\n return;\n }\n\n let targetRoutes: RouteObject[] = [];\n if (resolveAll) {\n const stack = [...routes];\n while (stack.length > 0) {\n const current = stack.shift();\n if (!current) {\n continue;\n }\n targetRoutes.push(current);\n if (current.children && current.children.length > 0) {\n stack.push(...current.children);\n }\n }\n } else {\n const matches = matchRoutes(routes, window.location.pathname) ?? [];\n if (matches.length === 0) {\n return;\n }\n targetRoutes = matches.map((match) => match.route);\n }\n\n await Promise.all(\n targetRoutes.map(async (route) => {\n const lazy = route.lazy;\n if (typeof lazy !== 'function') {\n return;\n }\n\n try {\n const resolved = await lazy();\n Object.assign(route, resolved);\n delete (route as RouteObject & { lazy?: unknown }).lazy;\n } catch (error) {\n logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);\n }\n }),\n );\n }\n\n /**\n * 获取路由实例\n * \n * @returns 路由实例,如果未初始化则返回 null\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 检查是否已初始化\n * \n * @returns 如果已初始化返回 true,否则返回 false\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * 销毁路由管理器\n */\n destroy(): void {\n // 执行插件钩子:销毁\n this.pluginManager.executeHooks(PluginLifecycleStage.DESTROY, {\n config: {} as RouterConfig,\n });\n\n // 停止预加载\n this.preloader.stopPreload();\n\n this.router = null;\n this.initialized = false;\n \n // 清空生命周期钩子和中间件\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.clear();\n \n const middlewareManager = getRouterMiddlewareManager();\n middlewareManager.clear();\n \n logger.info('路由管理器已销毁');\n }\n\n /**\n * 获取路由缓存实例\n */\n getCache() {\n return this.cache;\n }\n\n /**\n * 获取路由预加载器实例\n */\n getPreloader() {\n return this.preloader;\n }\n\n /**\n * 获取路由插件管理器实例\n */\n getPluginManager() {\n return this.pluginManager;\n }\n\n /**\n * 获取路由监控服务实例\n */\n getMonitoring() {\n return this.monitoring;\n }\n}\n\n/**\n * 获取路由管理器\n */\nexport function getRouterManager(): RouterManager {\n return RouterManager.getInstance();\n}\n"],"names":["RouterManager","getRouterManager","getInstance","instance","initialize","config","enabled","logger","info","enableValidation","RouterConfigValidator","validate","debug","error","process","env","NODE_ENV","pluginManager","executeHooks","PluginLifecycleStage","BEFORE_INIT","hooks","lifecycleManager","getRouterLifecycleManager","register","routes","RouterError","RouterErrorCode","ROUTER_CONFIG_ERROR","preloader","updateConfig","preload","clear","result","cacheKey","cachedResult","cache","get","BEFORE_TRANSFORM","transformRoutes","transformOptions","AFTER_TRANSFORM","set","enableHydrateFallback","Boolean","options","hydrationData","reactRoutes","transformRoutesToReactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","registerRoutes","startPreload","resolveInitialLazyRoutes","routerInstance","mode","createBrowserRouter","createHashRouter","createMemoryRouter","undefined","router","initialized","AFTER_INIT","initialPath","window","location","pathname","search","hash","state","monitoring","trackRouteAccess","path","meta","name","resolveAll","targetRoutes","stack","length","current","shift","push","children","matches","matchRoutes","map","match","route","Promise","all","lazy","resolved","Object","assign","warn","getRouter","isInitialized","destroy","DESTROY","stopPreload","middlewareManager","getRouterMiddlewareManager","getCache","getPreloader","getPluginManager","getMonitoring","getRouteCache","getRoutePreloader","getRouterPluginManager","getRouterMonitoring","adapterManager","getAdapterManager","factory","createReactRouterAdapter","priority"],"mappings":"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"}
@@ -11,7 +11,7 @@ function _define_property(obj, key, value) {
11
11
  }
12
12
  return obj;
13
13
  }
14
- import { logger } from "../../utils";
14
+ import { logger } from "@vlian/logger";
15
15
  import { transformRoutes } from "./utils/transform";
16
16
  import { transformRoutesToReactRoutes } from "./utils/adapters/react-router/transform";
17
17
  import { createBrowserRouter, createHashRouter, createMemoryRouter, matchRoutes } from "react-router-dom";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/router/RouterManager.ts"],"sourcesContent":["import { logger } from '../../utils';\nimport type { RouterConfig } from './types';\nimport { transformRoutes } from './utils/transform';\nimport { transformRoutesToReactRoutes } from './utils/adapters/react-router/transform';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter, matchRoutes, type RouteObject } from 'react-router-dom';\nimport { RouterConfigValidator } from './validation';\nimport { getRouterLifecycleManager } from './lifecycle';\nimport { getRouterMiddlewareManager } from './middleware';\nimport { RouterError, RouterErrorCode } from './errors';\nimport { getRouteCache } from './performance/RouteCache';\nimport { getRoutePreloader } from './performance/RoutePreloader';\nimport { getRouterPluginManager, PluginLifecycleStage } from './plugin';\nimport { getRouterMonitoring } from './monitoring';\nimport { getAdapterManager } from './adapter';\nimport { createReactRouterAdapter } from './adapter/react-router';\n\nexport class RouterManager {\n private static instance: RouterManager | null = null;\n\n /**\n * 路由实例\n * 只能在 initialize 方法中赋值\n */\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 是否已初始化\n */\n private initialized = false;\n\n /**\n * 路由缓存实例\n */\n private cache = getRouteCache();\n\n /**\n * 路由预加载器实例\n */\n private preloader = getRoutePreloader();\n\n /**\n * 路由插件管理器实例\n */\n private pluginManager = getRouterPluginManager();\n\n /**\n * 路由监控服务实例\n */\n private monitoring = getRouterMonitoring();\n\n /**\n * 路由适配器管理器实例\n */\n private adapterManager = getAdapterManager();\n\n private constructor() {\n // 私有构造函数\n // 注册默认的 React Router 适配器\n this.adapterManager.register({\n name: 'react-router',\n factory: createReactRouterAdapter(),\n priority: 10,\n });\n }\n /**\n * 获取单例实例\n */\n static getInstance(): RouterManager {\n if (!RouterManager.instance) {\n RouterManager.instance = new RouterManager();\n }\n return RouterManager.instance;\n }\n /**\n * 初始化路由管理器\n * \n * @param config - 路由配置\n * @param _appInstance - 应用实例(保留用于兼容性,当前未使用)\n */\n async initialize(config: RouterConfig): Promise<void> {\n // 如果路由被禁用,直接返回\n if (config.enabled === false || config.enabled === 'disabled') {\n logger.info('路由系统已禁用');\n return;\n }\n\n // 配置验证(如果启用)\n if (config.enableValidation !== false) {\n try {\n RouterConfigValidator.validate(config);\n logger.debug('路由配置验证通过');\n } catch (error) {\n logger.error('路由配置验证失败', error);\n // 开发环境下抛出错误,生产环境下记录警告但继续执行\n if (process.env.NODE_ENV === 'development') {\n throw error;\n }\n }\n }\n\n // 执行插件钩子:路由初始化前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_INIT, {\n config,\n });\n\n // 注册生命周期钩子\n if (config.hooks) {\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.register(config.hooks);\n logger.debug('路由生命周期钩子已注册');\n }\n\n // 转换数据(使用缓存)\n if (!config.routes) {\n throw new RouterError(\n '路由配置不能为空',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 更新预加载策略(默认关闭,按需懒加载)\n this.preloader.updateConfig(config.preload);\n this.preloader.clear();\n\n let result;\n const cacheKey = config.routes;\n const cachedResult = this.cache.get(cacheKey);\n\n if (cachedResult) {\n logger.debug('使用缓存的路由转换结果');\n result = cachedResult;\n } else {\n // 执行插件钩子:路由转换前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_TRANSFORM, {\n config,\n });\n\n result = await transformRoutes(config.routes, config.transformOptions);\n\n // 执行插件钩子:路由转换后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_TRANSFORM, {\n config,\n routes: result.routes,\n });\n\n // 缓存转换结果\n this.cache.set(cacheKey, result);\n }\n\n const enableHydrateFallback =\n config.enableHydrateFallback\n ?? Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData);\n\n const reactRoutes = await transformRoutesToReactRoutes(\n result.routes,\n result,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n enableHydrateFallback,\n );\n\n // 注册路由到预加载器\n if (result.routes) {\n this.preloader.registerRoutes(result.routes, result);\n // 开始预加载\n this.preloader.startPreload();\n }\n\n await this.resolveInitialLazyRoutes(reactRoutes, !enableHydrateFallback);\n\n let routerInstance: ReturnType<typeof createBrowserRouter> | null = null;\n if (config.mode === 'browser') {\n routerInstance = createBrowserRouter(reactRoutes, config.options);\n } else if (config.mode === 'hash') {\n routerInstance = createHashRouter(reactRoutes, config.options);\n } else if (config.mode === 'memory') {\n routerInstance = createMemoryRouter(reactRoutes, config.options);\n }\n\n if (!routerInstance) {\n throw new RouterError(\n '路由模式不支持',\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { mode: config.mode }\n );\n }\n\n // 只能在 initialize 方法中赋值\n this.router = routerInstance;\n this.initialized = true;\n\n // 执行插件钩子:路由初始化后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_INIT, {\n config,\n routes: result.routes,\n });\n\n // 记录监控:路由初始化完成\n const initialPath = typeof window !== 'undefined'\n ? `${window.location.pathname}${window.location.search}${window.location.hash}`\n : this.router?.state?.location?.pathname ?? '/';\n\n this.monitoring.trackRouteAccess(\n {\n path: initialPath,\n meta: { name: 'router-init' },\n },\n undefined,\n true\n );\n\n logger.info('路由管理器初始化完成');\n }\n\n /**\n * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。\n * resolveAll=true 时会在初始化阶段解析全部 lazy 路由。\n */\n private async resolveInitialLazyRoutes(routes: RouteObject[], resolveAll: boolean = false): Promise<void> {\n if (typeof window === 'undefined') {\n return;\n }\n\n let targetRoutes: RouteObject[] = [];\n if (resolveAll) {\n const stack = [...routes];\n while (stack.length > 0) {\n const current = stack.shift();\n if (!current) {\n continue;\n }\n targetRoutes.push(current);\n if (current.children && current.children.length > 0) {\n stack.push(...current.children);\n }\n }\n } else {\n const matches = matchRoutes(routes, window.location.pathname) ?? [];\n if (matches.length === 0) {\n return;\n }\n targetRoutes = matches.map((match) => match.route);\n }\n\n await Promise.all(\n targetRoutes.map(async (route) => {\n const lazy = route.lazy;\n if (typeof lazy !== 'function') {\n return;\n }\n\n try {\n const resolved = await lazy();\n Object.assign(route, resolved);\n delete (route as RouteObject & { lazy?: unknown }).lazy;\n } catch (error) {\n logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);\n }\n }),\n );\n }\n\n /**\n * 获取路由实例\n * \n * @returns 路由实例,如果未初始化则返回 null\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 检查是否已初始化\n * \n * @returns 如果已初始化返回 true,否则返回 false\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * 销毁路由管理器\n */\n destroy(): void {\n // 执行插件钩子:销毁\n this.pluginManager.executeHooks(PluginLifecycleStage.DESTROY, {\n config: {} as RouterConfig,\n });\n\n // 停止预加载\n this.preloader.stopPreload();\n\n this.router = null;\n this.initialized = false;\n \n // 清空生命周期钩子和中间件\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.clear();\n \n const middlewareManager = getRouterMiddlewareManager();\n middlewareManager.clear();\n \n logger.info('路由管理器已销毁');\n }\n\n /**\n * 获取路由缓存实例\n */\n getCache() {\n return this.cache;\n }\n\n /**\n * 获取路由预加载器实例\n */\n getPreloader() {\n return this.preloader;\n }\n\n /**\n * 获取路由插件管理器实例\n */\n getPluginManager() {\n return this.pluginManager;\n }\n\n /**\n * 获取路由监控服务实例\n */\n getMonitoring() {\n return this.monitoring;\n }\n}\n\n/**\n * 获取路由管理器\n */\nexport function getRouterManager(): RouterManager {\n return RouterManager.getInstance();\n}\n"],"names":["logger","transformRoutes","transformRoutesToReactRoutes","createBrowserRouter","createHashRouter","createMemoryRouter","matchRoutes","RouterConfigValidator","getRouterLifecycleManager","getRouterMiddlewareManager","RouterError","RouterErrorCode","getRouteCache","getRoutePreloader","getRouterPluginManager","PluginLifecycleStage","getRouterMonitoring","getAdapterManager","createReactRouterAdapter","RouterManager","getInstance","instance","initialize","config","enabled","info","enableValidation","validate","debug","error","process","env","NODE_ENV","pluginManager","executeHooks","BEFORE_INIT","hooks","lifecycleManager","register","routes","ROUTER_CONFIG_ERROR","preloader","updateConfig","preload","clear","result","cacheKey","cachedResult","cache","get","BEFORE_TRANSFORM","transformOptions","AFTER_TRANSFORM","set","enableHydrateFallback","Boolean","options","hydrationData","reactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","registerRoutes","startPreload","resolveInitialLazyRoutes","routerInstance","mode","undefined","router","initialized","AFTER_INIT","initialPath","window","location","pathname","search","hash","state","monitoring","trackRouteAccess","path","meta","name","resolveAll","targetRoutes","stack","length","current","shift","push","children","matches","map","match","route","Promise","all","lazy","resolved","Object","assign","warn","getRouter","isInitialized","destroy","DESTROY","stopPreload","middlewareManager","getCache","getPreloader","getPluginManager","getMonitoring","adapterManager","factory","priority","getRouterManager"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/router/RouterManager.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport type { RouterConfig } from './types';\nimport { transformRoutes } from './utils/transform';\nimport { transformRoutesToReactRoutes } from './utils/adapters/react-router/transform';\nimport { createBrowserRouter, createHashRouter, createMemoryRouter, matchRoutes, type RouteObject } from 'react-router-dom';\nimport { RouterConfigValidator } from './validation';\nimport { getRouterLifecycleManager } from './lifecycle';\nimport { getRouterMiddlewareManager } from './middleware';\nimport { RouterError, RouterErrorCode } from './errors';\nimport { getRouteCache } from './performance/RouteCache';\nimport { getRoutePreloader } from './performance/RoutePreloader';\nimport { getRouterPluginManager, PluginLifecycleStage } from './plugin';\nimport { getRouterMonitoring } from './monitoring';\nimport { getAdapterManager } from './adapter';\nimport { createReactRouterAdapter } from './adapter/react-router';\n\nexport class RouterManager {\n private static instance: RouterManager | null = null;\n\n /**\n * 路由实例\n * 只能在 initialize 方法中赋值\n */\n private router: ReturnType<typeof createBrowserRouter> | null = null;\n\n /**\n * 是否已初始化\n */\n private initialized = false;\n\n /**\n * 路由缓存实例\n */\n private cache = getRouteCache();\n\n /**\n * 路由预加载器实例\n */\n private preloader = getRoutePreloader();\n\n /**\n * 路由插件管理器实例\n */\n private pluginManager = getRouterPluginManager();\n\n /**\n * 路由监控服务实例\n */\n private monitoring = getRouterMonitoring();\n\n /**\n * 路由适配器管理器实例\n */\n private adapterManager = getAdapterManager();\n\n private constructor() {\n // 私有构造函数\n // 注册默认的 React Router 适配器\n this.adapterManager.register({\n name: 'react-router',\n factory: createReactRouterAdapter(),\n priority: 10,\n });\n }\n /**\n * 获取单例实例\n */\n static getInstance(): RouterManager {\n if (!RouterManager.instance) {\n RouterManager.instance = new RouterManager();\n }\n return RouterManager.instance;\n }\n /**\n * 初始化路由管理器\n * \n * @param config - 路由配置\n * @param _appInstance - 应用实例(保留用于兼容性,当前未使用)\n */\n async initialize(config: RouterConfig): Promise<void> {\n // 如果路由被禁用,直接返回\n if (config.enabled === false || config.enabled === 'disabled') {\n logger.info('路由系统已禁用');\n return;\n }\n\n // 配置验证(如果启用)\n if (config.enableValidation !== false) {\n try {\n RouterConfigValidator.validate(config);\n logger.debug('路由配置验证通过');\n } catch (error) {\n logger.error('路由配置验证失败', error);\n // 开发环境下抛出错误,生产环境下记录警告但继续执行\n if (process.env.NODE_ENV === 'development') {\n throw error;\n }\n }\n }\n\n // 执行插件钩子:路由初始化前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_INIT, {\n config,\n });\n\n // 注册生命周期钩子\n if (config.hooks) {\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.register(config.hooks);\n logger.debug('路由生命周期钩子已注册');\n }\n\n // 转换数据(使用缓存)\n if (!config.routes) {\n throw new RouterError(\n '路由配置不能为空',\n RouterErrorCode.ROUTER_CONFIG_ERROR\n );\n }\n\n // 更新预加载策略(默认关闭,按需懒加载)\n this.preloader.updateConfig(config.preload);\n this.preloader.clear();\n\n let result;\n const cacheKey = config.routes;\n const cachedResult = this.cache.get(cacheKey);\n\n if (cachedResult) {\n logger.debug('使用缓存的路由转换结果');\n result = cachedResult;\n } else {\n // 执行插件钩子:路由转换前\n await this.pluginManager.executeHooks(PluginLifecycleStage.BEFORE_TRANSFORM, {\n config,\n });\n\n result = await transformRoutes(config.routes, config.transformOptions);\n\n // 执行插件钩子:路由转换后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_TRANSFORM, {\n config,\n routes: result.routes,\n });\n\n // 缓存转换结果\n this.cache.set(cacheKey, result);\n }\n\n const enableHydrateFallback =\n config.enableHydrateFallback\n ?? Boolean((config.options as { hydrationData?: unknown } | undefined)?.hydrationData);\n\n const reactRoutes = await transformRoutesToReactRoutes(\n result.routes,\n result,\n config.defaultRouteErrorComponent,\n config.defaultRouteLoadingComponent,\n enableHydrateFallback,\n );\n\n // 注册路由到预加载器\n if (result.routes) {\n this.preloader.registerRoutes(result.routes, result);\n // 开始预加载\n this.preloader.startPreload();\n }\n\n await this.resolveInitialLazyRoutes(reactRoutes, !enableHydrateFallback);\n\n let routerInstance: ReturnType<typeof createBrowserRouter> | null = null;\n if (config.mode === 'browser') {\n routerInstance = createBrowserRouter(reactRoutes, config.options);\n } else if (config.mode === 'hash') {\n routerInstance = createHashRouter(reactRoutes, config.options);\n } else if (config.mode === 'memory') {\n routerInstance = createMemoryRouter(reactRoutes, config.options);\n }\n\n if (!routerInstance) {\n throw new RouterError(\n '路由模式不支持',\n RouterErrorCode.ROUTER_CONFIG_ERROR,\n undefined,\n undefined,\n { mode: config.mode }\n );\n }\n\n // 只能在 initialize 方法中赋值\n this.router = routerInstance;\n this.initialized = true;\n\n // 执行插件钩子:路由初始化后\n await this.pluginManager.executeHooks(PluginLifecycleStage.AFTER_INIT, {\n config,\n routes: result.routes,\n });\n\n // 记录监控:路由初始化完成\n const initialPath = typeof window !== 'undefined'\n ? `${window.location.pathname}${window.location.search}${window.location.hash}`\n : this.router?.state?.location?.pathname ?? '/';\n\n this.monitoring.trackRouteAccess(\n {\n path: initialPath,\n meta: { name: 'router-init' },\n },\n undefined,\n true\n );\n\n logger.info('路由管理器初始化完成');\n }\n\n /**\n * 预解析 lazy 路由,避免首屏或重定向链路长时间停留在 hydrate fallback。\n * resolveAll=true 时会在初始化阶段解析全部 lazy 路由。\n */\n private async resolveInitialLazyRoutes(routes: RouteObject[], resolveAll: boolean = false): Promise<void> {\n if (typeof window === 'undefined') {\n return;\n }\n\n let targetRoutes: RouteObject[] = [];\n if (resolveAll) {\n const stack = [...routes];\n while (stack.length > 0) {\n const current = stack.shift();\n if (!current) {\n continue;\n }\n targetRoutes.push(current);\n if (current.children && current.children.length > 0) {\n stack.push(...current.children);\n }\n }\n } else {\n const matches = matchRoutes(routes, window.location.pathname) ?? [];\n if (matches.length === 0) {\n return;\n }\n targetRoutes = matches.map((match) => match.route);\n }\n\n await Promise.all(\n targetRoutes.map(async (route) => {\n const lazy = route.lazy;\n if (typeof lazy !== 'function') {\n return;\n }\n\n try {\n const resolved = await lazy();\n Object.assign(route, resolved);\n delete (route as RouteObject & { lazy?: unknown }).lazy;\n } catch (error) {\n logger.warn('首屏路由懒加载预解析失败,回退到 Router 默认懒加载', error);\n }\n }),\n );\n }\n\n /**\n * 获取路由实例\n * \n * @returns 路由实例,如果未初始化则返回 null\n */\n getRouter(): ReturnType<typeof createBrowserRouter> | null {\n return this.router;\n }\n\n /**\n * 检查是否已初始化\n * \n * @returns 如果已初始化返回 true,否则返回 false\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * 销毁路由管理器\n */\n destroy(): void {\n // 执行插件钩子:销毁\n this.pluginManager.executeHooks(PluginLifecycleStage.DESTROY, {\n config: {} as RouterConfig,\n });\n\n // 停止预加载\n this.preloader.stopPreload();\n\n this.router = null;\n this.initialized = false;\n \n // 清空生命周期钩子和中间件\n const lifecycleManager = getRouterLifecycleManager();\n lifecycleManager.clear();\n \n const middlewareManager = getRouterMiddlewareManager();\n middlewareManager.clear();\n \n logger.info('路由管理器已销毁');\n }\n\n /**\n * 获取路由缓存实例\n */\n getCache() {\n return this.cache;\n }\n\n /**\n * 获取路由预加载器实例\n */\n getPreloader() {\n return this.preloader;\n }\n\n /**\n * 获取路由插件管理器实例\n */\n getPluginManager() {\n return this.pluginManager;\n }\n\n /**\n * 获取路由监控服务实例\n */\n getMonitoring() {\n return this.monitoring;\n }\n}\n\n/**\n * 获取路由管理器\n */\nexport function getRouterManager(): RouterManager {\n return RouterManager.getInstance();\n}\n"],"names":["logger","transformRoutes","transformRoutesToReactRoutes","createBrowserRouter","createHashRouter","createMemoryRouter","matchRoutes","RouterConfigValidator","getRouterLifecycleManager","getRouterMiddlewareManager","RouterError","RouterErrorCode","getRouteCache","getRoutePreloader","getRouterPluginManager","PluginLifecycleStage","getRouterMonitoring","getAdapterManager","createReactRouterAdapter","RouterManager","getInstance","instance","initialize","config","enabled","info","enableValidation","validate","debug","error","process","env","NODE_ENV","pluginManager","executeHooks","BEFORE_INIT","hooks","lifecycleManager","register","routes","ROUTER_CONFIG_ERROR","preloader","updateConfig","preload","clear","result","cacheKey","cachedResult","cache","get","BEFORE_TRANSFORM","transformOptions","AFTER_TRANSFORM","set","enableHydrateFallback","Boolean","options","hydrationData","reactRoutes","defaultRouteErrorComponent","defaultRouteLoadingComponent","registerRoutes","startPreload","resolveInitialLazyRoutes","routerInstance","mode","undefined","router","initialized","AFTER_INIT","initialPath","window","location","pathname","search","hash","state","monitoring","trackRouteAccess","path","meta","name","resolveAll","targetRoutes","stack","length","current","shift","push","children","matches","map","match","route","Promise","all","lazy","resolved","Object","assign","warn","getRouter","isInitialized","destroy","DESTROY","stopPreload","middlewareManager","getCache","getPreloader","getPluginManager","getMonitoring","adapterManager","factory","priority","getRouterManager"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,4BAA4B,QAAQ,0CAA0C;AACvF,SAASC,mBAAmB,EAAEC,gBAAgB,EAAEC,kBAAkB,EAAEC,WAAW,QAA0B,mBAAmB;AAC5H,SAASC,qBAAqB,QAAQ,eAAe;AACrD,SAASC,yBAAyB,QAAQ,cAAc;AACxD,SAASC,0BAA0B,QAAQ,eAAe;AAC1D,SAASC,WAAW,EAAEC,eAAe,QAAQ,WAAW;AACxD,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,iBAAiB,QAAQ,+BAA+B;AACjE,SAASC,sBAAsB,EAAEC,oBAAoB,QAAQ,WAAW;AACxE,SAASC,mBAAmB,QAAQ,eAAe;AACnD,SAASC,iBAAiB,QAAQ,YAAY;AAC9C,SAASC,wBAAwB,QAAQ,yBAAyB;AAElE,OAAO,MAAMC;IAgDT;;KAEC,GACD,OAAOC,cAA6B;QAChC,IAAI,CAACD,cAAcE,QAAQ,EAAE;YACzBF,cAAcE,QAAQ,GAAG,IAAIF;QACjC;QACA,OAAOA,cAAcE,QAAQ;IACjC;IACA;;;;;KAKC,GACD,MAAMC,WAAWC,MAAoB,EAAiB;QAClD,eAAe;QACf,IAAIA,OAAOC,OAAO,KAAK,SAASD,OAAOC,OAAO,KAAK,YAAY;YAC3DxB,OAAOyB,IAAI,CAAC;YACZ;QACJ;QAEA,aAAa;QACb,IAAIF,OAAOG,gBAAgB,KAAK,OAAO;YACnC,IAAI;gBACAnB,sBAAsBoB,QAAQ,CAACJ;gBAC/BvB,OAAO4B,KAAK,CAAC;YACjB,EAAE,OAAOC,OAAO;gBACZ7B,OAAO6B,KAAK,CAAC,YAAYA;gBACzB,2BAA2B;gBAC3B,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;oBACxC,MAAMH;gBACV;YACJ;QACJ;QAEA,gBAAgB;QAChB,MAAM,IAAI,CAACI,aAAa,CAACC,YAAY,CAACnB,qBAAqBoB,WAAW,EAAE;YACpEZ;QACJ;QAEA,WAAW;QACX,IAAIA,OAAOa,KAAK,EAAE;YACd,MAAMC,mBAAmB7B;YACzB6B,iBAAiBC,QAAQ,CAACf,OAAOa,KAAK;YACtCpC,OAAO4B,KAAK,CAAC;QACjB;QAEA,aAAa;QACb,IAAI,CAACL,OAAOgB,MAAM,EAAE;YAChB,MAAM,IAAI7B,YACN,YACAC,gBAAgB6B,mBAAmB;QAE3C;QAEA,sBAAsB;QACtB,IAAI,CAACC,SAAS,CAACC,YAAY,CAACnB,OAAOoB,OAAO;QAC1C,IAAI,CAACF,SAAS,CAACG,KAAK;QAEpB,IAAIC;QACJ,MAAMC,WAAWvB,OAAOgB,MAAM;QAC9B,MAAMQ,eAAe,IAAI,CAACC,KAAK,CAACC,GAAG,CAACH;QAEpC,IAAIC,cAAc;YACd/C,OAAO4B,KAAK,CAAC;YACbiB,SAASE;QACb,OAAO;YACH,eAAe;YACf,MAAM,IAAI,CAACd,aAAa,CAACC,YAAY,CAACnB,qBAAqBmC,gBAAgB,EAAE;gBACzE3B;YACJ;YAEAsB,SAAS,MAAM5C,gBAAgBsB,OAAOgB,MAAM,EAAEhB,OAAO4B,gBAAgB;YAErE,eAAe;YACf,MAAM,IAAI,CAAClB,aAAa,CAACC,YAAY,CAACnB,qBAAqBqC,eAAe,EAAE;gBACxE7B;gBACAgB,QAAQM,OAAON,MAAM;YACzB;YAEA,SAAS;YACT,IAAI,CAACS,KAAK,CAACK,GAAG,CAACP,UAAUD;QAC7B;QAEA,MAAMS,wBACF/B,OAAO+B,qBAAqB,IACzBC,QAAShC,OAAOiC,OAAO,EAA8CC;QAE5E,MAAMC,cAAc,MAAMxD,6BACtB2C,OAAON,MAAM,EACbM,QACAtB,OAAOoC,0BAA0B,EACjCpC,OAAOqC,4BAA4B,EACnCN;QAGJ,YAAY;QACZ,IAAIT,OAAON,MAAM,EAAE;YACf,IAAI,CAACE,SAAS,CAACoB,cAAc,CAAChB,OAAON,MAAM,EAAEM;YAC7C,QAAQ;YACR,IAAI,CAACJ,SAAS,CAACqB,YAAY;QAC/B;QAEA,MAAM,IAAI,CAACC,wBAAwB,CAACL,aAAa,CAACJ;QAElD,IAAIU,iBAAgE;QACpE,IAAIzC,OAAO0C,IAAI,KAAK,WAAW;YAC3BD,iBAAiB7D,oBAAoBuD,aAAanC,OAAOiC,OAAO;QACpE,OAAO,IAAIjC,OAAO0C,IAAI,KAAK,QAAQ;YAC/BD,iBAAiB5D,iBAAiBsD,aAAanC,OAAOiC,OAAO;QACjE,OAAO,IAAIjC,OAAO0C,IAAI,KAAK,UAAU;YACjCD,iBAAiB3D,mBAAmBqD,aAAanC,OAAOiC,OAAO;QACnE;QAEA,IAAI,CAACQ,gBAAgB;YACjB,MAAM,IAAItD,YACN,WACAC,gBAAgB6B,mBAAmB,EACnC0B,WACAA,WACA;gBAAED,MAAM1C,OAAO0C,IAAI;YAAC;QAE5B;QAEA,uBAAuB;QACvB,IAAI,CAACE,MAAM,GAAGH;QACd,IAAI,CAACI,WAAW,GAAG;QAEnB,gBAAgB;QAChB,MAAM,IAAI,CAACnC,aAAa,CAACC,YAAY,CAACnB,qBAAqBsD,UAAU,EAAE;YACnE9C;YACAgB,QAAQM,OAAON,MAAM;QACzB;QAEA,eAAe;QACf,MAAM+B,cAAc,OAAOC,WAAW,cAChC,GAAGA,OAAOC,QAAQ,CAACC,QAAQ,GAAGF,OAAOC,QAAQ,CAACE,MAAM,GAAGH,OAAOC,QAAQ,CAACG,IAAI,EAAE,GAC7E,IAAI,CAACR,MAAM,EAAES,OAAOJ,UAAUC,YAAY;QAEhD,IAAI,CAACI,UAAU,CAACC,gBAAgB,CAC5B;YACIC,MAAMT;YACNU,MAAM;gBAAEC,MAAM;YAAc;QAChC,GACAf,WACA;QAGJlE,OAAOyB,IAAI,CAAC;IAChB;IAEA;;;KAGC,GACD,MAAcsC,yBAAyBxB,MAAqB,EAAE2C,aAAsB,KAAK,EAAiB;QACtG,IAAI,OAAOX,WAAW,aAAa;YAC/B;QACJ;QAEA,IAAIY,eAA8B,EAAE;QACpC,IAAID,YAAY;YACZ,MAAME,QAAQ;mBAAI7C;aAAO;YACzB,MAAO6C,MAAMC,MAAM,GAAG,EAAG;gBACrB,MAAMC,UAAUF,MAAMG,KAAK;gBAC3B,IAAI,CAACD,SAAS;oBACV;gBACJ;gBACAH,aAAaK,IAAI,CAACF;gBAClB,IAAIA,QAAQG,QAAQ,IAAIH,QAAQG,QAAQ,CAACJ,MAAM,GAAG,GAAG;oBACjDD,MAAMI,IAAI,IAAIF,QAAQG,QAAQ;gBAClC;YACJ;QACJ,OAAO;YACH,MAAMC,UAAUpF,YAAYiC,QAAQgC,OAAOC,QAAQ,CAACC,QAAQ,KAAK,EAAE;YACnE,IAAIiB,QAAQL,MAAM,KAAK,GAAG;gBACtB;YACJ;YACAF,eAAeO,QAAQC,GAAG,CAAC,CAACC,QAAUA,MAAMC,KAAK;QACrD;QAEA,MAAMC,QAAQC,GAAG,CACbZ,aAAaQ,GAAG,CAAC,OAAOE;YACpB,MAAMG,OAAOH,MAAMG,IAAI;YACvB,IAAI,OAAOA,SAAS,YAAY;gBAC5B;YACJ;YAEA,IAAI;gBACA,MAAMC,WAAW,MAAMD;gBACvBE,OAAOC,MAAM,CAACN,OAAOI;gBACrB,OAAO,AAACJ,MAA2CG,IAAI;YAC3D,EAAE,OAAOnE,OAAO;gBACZ7B,OAAOoG,IAAI,CAAC,iCAAiCvE;YACjD;QACJ;IAER;IAEA;;;;KAIC,GACDwE,YAA2D;QACvD,OAAO,IAAI,CAAClC,MAAM;IACtB;IAEA;;;;KAIC,GACDmC,gBAAyB;QACrB,OAAO,IAAI,CAAClC,WAAW;IAC3B;IAEA;;KAEC,GACDmC,UAAgB;QACZ,YAAY;QACZ,IAAI,CAACtE,aAAa,CAACC,YAAY,CAACnB,qBAAqByF,OAAO,EAAE;YAC1DjF,QAAQ,CAAC;QACb;QAEA,QAAQ;QACR,IAAI,CAACkB,SAAS,CAACgE,WAAW;QAE1B,IAAI,CAACtC,MAAM,GAAG;QACd,IAAI,CAACC,WAAW,GAAG;QAEnB,eAAe;QACf,MAAM/B,mBAAmB7B;QACzB6B,iBAAiBO,KAAK;QAEtB,MAAM8D,oBAAoBjG;QAC1BiG,kBAAkB9D,KAAK;QAEvB5C,OAAOyB,IAAI,CAAC;IAChB;IAEA;;KAEC,GACDkF,WAAW;QACP,OAAO,IAAI,CAAC3D,KAAK;IACrB;IAEA;;KAEC,GACD4D,eAAe;QACX,OAAO,IAAI,CAACnE,SAAS;IACzB;IAEA;;KAEC,GACDoE,mBAAmB;QACf,OAAO,IAAI,CAAC5E,aAAa;IAC7B;IAEA;;KAEC,GACD6E,gBAAgB;QACZ,OAAO,IAAI,CAACjC,UAAU;IAC1B;IAtRA,aAAsB;QApCtB;;;KAGC,GACD,uBAAQV,UAAwD;QAEhE;;KAEC,GACD,uBAAQC,eAAc;QAEtB;;KAEC,GACD,uBAAQpB,SAAQpC;QAEhB;;KAEC,GACD,uBAAQ6B,aAAY5B;QAEpB;;KAEC,GACD,uBAAQoB,iBAAgBnB;QAExB;;KAEC,GACD,uBAAQ+D,cAAa7D;QAErB;;KAEC,GACD,uBAAQ+F,kBAAiB9F;QAGrB,SAAS;QACT,yBAAyB;QACzB,IAAI,CAAC8F,cAAc,CAACzE,QAAQ,CAAC;YACzB2C,MAAM;YACN+B,SAAS9F;YACT+F,UAAU;QACd;IACJ;AA+QJ;AA7TI,iBADS9F,eACME,YAAiC;AA+TpD;;CAEC,GACD,OAAO,SAAS6F;IACZ,OAAO/F,cAAcC,WAAW;AACpC"}