@vlian/framework 1.2.56 → 1.2.59

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 (685) hide show
  1. package/README.md +15 -3
  2. package/dist/analytics/index.cjs +0 -2
  3. package/dist/analytics/index.js +1 -3
  4. package/dist/analytics.umd.js +8 -208
  5. package/dist/components/LocaleSwitch.cjs +0 -2
  6. package/dist/components/LocaleSwitch.js +1 -103
  7. package/dist/components/ThemeSwitch.cjs +0 -2
  8. package/dist/components/ThemeSwitch.js +1 -102
  9. package/dist/components/index.cjs +0 -2
  10. package/dist/components/index.js +1 -4
  11. package/dist/components/persistence.cjs +0 -2
  12. package/dist/components/persistence.js +1 -39
  13. package/dist/core/Test.cjs +0 -2
  14. package/dist/core/Test.js +1 -15
  15. package/dist/core/app/AppContext.cjs +0 -2
  16. package/dist/core/app/AppContext.js +1 -339
  17. package/dist/core/app/AppContext.types.cjs +0 -2
  18. package/dist/core/app/AppContext.types.js +1 -5
  19. package/dist/core/app/BasicLayout.cjs +0 -2
  20. package/dist/core/app/BasicLayout.js +1 -74
  21. package/dist/core/app/DefaultApp.cjs +0 -2
  22. package/dist/core/app/DefaultApp.js +1 -143
  23. package/dist/core/app/index.cjs +0 -2
  24. package/dist/core/app/index.js +1 -7
  25. package/dist/core/config/AppConfig.cjs +0 -2
  26. package/dist/core/config/AppConfig.js +1 -133
  27. package/dist/core/config/ConfigLoader.cjs +0 -2
  28. package/dist/core/config/ConfigLoader.js +1 -311
  29. package/dist/core/config/ConfigValidator.cjs +0 -2
  30. package/dist/core/config/ConfigValidator.js +2 -121
  31. package/dist/core/config/index.cjs +0 -2
  32. package/dist/core/config/index.js +1 -7
  33. package/dist/core/dev/DevTools.cjs +0 -2
  34. package/dist/core/dev/DevTools.js +1 -210
  35. package/dist/core/error/ErrorBoundary.cjs +0 -2
  36. package/dist/core/error/ErrorBoundary.js +1 -399
  37. package/dist/core/error/ErrorHandler.cjs +0 -2
  38. package/dist/core/error/ErrorHandler.js +1 -261
  39. package/dist/core/error/index.cjs +0 -2
  40. package/dist/core/error/index.js +1 -6
  41. package/dist/core/event/AppEventBus.cjs +0 -2
  42. package/dist/core/event/AppEventBus.js +1 -438
  43. package/dist/core/event/frameworkEvents.cjs +0 -2
  44. package/dist/core/event/frameworkEvents.js +1 -135
  45. package/dist/core/event/hooks.cjs +0 -2
  46. package/dist/core/event/hooks.js +1 -95
  47. package/dist/core/event/index.cjs +0 -2
  48. package/dist/core/event/index.js +1 -10
  49. package/dist/core/event/types.cjs +0 -2
  50. package/dist/core/event/types.js +1 -56
  51. package/dist/core/event/useEventBus.cjs +0 -2
  52. package/dist/core/event/useEventBus.js +1 -39
  53. package/dist/core/index.cjs +0 -2
  54. package/dist/core/index.js +1 -69
  55. package/dist/core/initialization/InitializationErrorThrower.cjs +0 -2
  56. package/dist/core/initialization/InitializationErrorThrower.js +1 -30
  57. package/dist/core/initialization/index.cjs +0 -2
  58. package/dist/core/initialization/index.js +1 -7
  59. package/dist/core/initialization/initialization.cjs +0 -2
  60. package/dist/core/initialization/initialization.js +1 -78
  61. package/dist/core/initialization/initializationErrorState.cjs +0 -2
  62. package/dist/core/initialization/initializationErrorState.js +1 -60
  63. package/dist/core/kernel/defaultAdapters.cjs +0 -2
  64. package/dist/core/kernel/defaultAdapters.js +1 -176
  65. package/dist/core/kernel/errors.cjs +0 -2
  66. package/dist/core/kernel/errors.js +1 -53
  67. package/dist/core/kernel/index.cjs +0 -2
  68. package/dist/core/kernel/index.js +1 -4
  69. package/dist/core/kernel/startKernel.cjs +0 -2
  70. package/dist/core/kernel/startKernel.js +1 -192
  71. package/dist/core/kernel/types.cjs +0 -2
  72. package/dist/core/kernel/types.js +1 -3
  73. package/dist/core/middleware.cjs +0 -2
  74. package/dist/core/middleware.js +1 -61
  75. package/dist/core/plugin/PluginEventBus.cjs +0 -2
  76. package/dist/core/plugin/PluginEventBus.js +1 -286
  77. package/dist/core/plugin/PluginSandbox.cjs +0 -2
  78. package/dist/core/plugin/PluginSandbox.js +1 -125
  79. package/dist/core/plugin.cjs +0 -2
  80. package/dist/core/plugin.js +1 -438
  81. package/dist/core/router/RouterManager.cjs +0 -2
  82. package/dist/core/router/RouterManager.js +1 -272
  83. package/dist/core/router/adapter/AdapterManager.cjs +0 -2
  84. package/dist/core/router/adapter/AdapterManager.js +1 -221
  85. package/dist/core/router/adapter/index.cjs +0 -2
  86. package/dist/core/router/adapter/index.js +1 -7
  87. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +0 -2
  88. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -116
  89. package/dist/core/router/adapter/react-router/index.cjs +0 -2
  90. package/dist/core/router/adapter/react-router/index.js +1 -5
  91. package/dist/core/router/adapter/types.cjs +0 -2
  92. package/dist/core/router/adapter/types.js +1 -7
  93. package/dist/core/router/dev/RouterDevTools.cjs +0 -2
  94. package/dist/core/router/dev/RouterDevTools.js +1 -211
  95. package/dist/core/router/dev/index.cjs +0 -2
  96. package/dist/core/router/dev/index.js +1 -5
  97. package/dist/core/router/dynamic/DynamicRouteManager.cjs +0 -2
  98. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -179
  99. package/dist/core/router/dynamic/index.cjs +0 -2
  100. package/dist/core/router/dynamic/index.js +1 -5
  101. package/dist/core/router/errors/RouterError.cjs +0 -2
  102. package/dist/core/router/errors/RouterError.js +1 -48
  103. package/dist/core/router/errors/index.cjs +0 -2
  104. package/dist/core/router/errors/index.js +1 -5
  105. package/dist/core/router/index.cjs +0 -2
  106. package/dist/core/router/index.js +1 -32
  107. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +0 -2
  108. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -130
  109. package/dist/core/router/lifecycle/index.cjs +0 -2
  110. package/dist/core/router/lifecycle/index.js +1 -5
  111. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +0 -2
  112. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -179
  113. package/dist/core/router/middleware/auth.cjs +0 -2
  114. package/dist/core/router/middleware/auth.js +1 -63
  115. package/dist/core/router/middleware/index.cjs +0 -2
  116. package/dist/core/router/middleware/index.js +1 -7
  117. package/dist/core/router/middleware/types.cjs +0 -2
  118. package/dist/core/router/middleware/types.js +1 -7
  119. package/dist/core/router/monitoring/RouterMonitoring.cjs +0 -2
  120. package/dist/core/router/monitoring/RouterMonitoring.js +1 -213
  121. package/dist/core/router/monitoring/index.cjs +0 -2
  122. package/dist/core/router/monitoring/index.js +1 -5
  123. package/dist/core/router/navigation/RouterNavigation.cjs +0 -2
  124. package/dist/core/router/navigation/RouterNavigation.js +1 -192
  125. package/dist/core/router/navigation/index.cjs +0 -2
  126. package/dist/core/router/navigation/index.js +1 -5
  127. package/dist/core/router/performance/RouteCache.cjs +0 -2
  128. package/dist/core/router/performance/RouteCache.js +1 -291
  129. package/dist/core/router/performance/RoutePreloader.cjs +0 -2
  130. package/dist/core/router/performance/RoutePreloader.js +1 -277
  131. package/dist/core/router/performance/index.cjs +0 -2
  132. package/dist/core/router/performance/index.js +1 -6
  133. package/dist/core/router/plugin/RouterPluginManager.cjs +0 -2
  134. package/dist/core/router/plugin/RouterPluginManager.js +1 -248
  135. package/dist/core/router/plugin/index.cjs +0 -2
  136. package/dist/core/router/plugin/index.js +1 -6
  137. package/dist/core/router/plugin/types.cjs +0 -2
  138. package/dist/core/router/plugin/types.js +1 -33
  139. package/dist/core/router/types.cjs +0 -2
  140. package/dist/core/router/types.js +1 -5
  141. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +0 -2
  142. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +1 -121
  143. package/dist/core/router/utils/adapters/react-router/transform.cjs +0 -2
  144. package/dist/core/router/utils/adapters/react-router/transform.js +1 -242
  145. package/dist/core/router/utils/transform.cjs +0 -2
  146. package/dist/core/router/utils/transform.js +1 -791
  147. package/dist/core/router/validation/RouterConfigValidator.cjs +0 -2
  148. package/dist/core/router/validation/RouterConfigValidator.js +2 -77
  149. package/dist/core/router/validation/index.cjs +0 -2
  150. package/dist/core/router/validation/index.js +1 -6
  151. package/dist/core/router/validation/schema.cjs +0 -2
  152. package/dist/core/router/validation/schema.js +1 -151
  153. package/dist/core/router/version/RouteVersionManager.cjs +0 -2
  154. package/dist/core/router/version/RouteVersionManager.js +1 -191
  155. package/dist/core/router/version/index.cjs +0 -2
  156. package/dist/core/router/version/index.js +1 -5
  157. package/dist/core/splash/SplashScreen.cjs +0 -2
  158. package/dist/core/splash/SplashScreen.js +1 -293
  159. package/dist/core/splash/index.cjs +0 -2
  160. package/dist/core/splash/index.js +1 -6
  161. package/dist/core/splash/splashScreenUtils.cjs +0 -2
  162. package/dist/core/splash/splashScreenUtils.js +1 -30
  163. package/dist/core/startup/AppInstance.cjs +0 -2
  164. package/dist/core/startup/AppInstance.js +1 -226
  165. package/dist/core/startup/environment.cjs +0 -2
  166. package/dist/core/startup/environment.js +1 -154
  167. package/dist/core/startup/index.cjs +0 -2
  168. package/dist/core/startup/index.js +1 -8
  169. package/dist/core/startup/initializeServices.cjs +0 -2
  170. package/dist/core/startup/initializeServices.js +1 -188
  171. package/dist/core/startup/performanceTracker.cjs +0 -2
  172. package/dist/core/startup/performanceTracker.js +1 -167
  173. package/dist/core/startup/renderApp.cjs +0 -2
  174. package/dist/core/startup/renderApp.js +1 -267
  175. package/dist/core/startup/startApp.cjs +0 -2
  176. package/dist/core/startup/startApp.js +1 -315
  177. package/dist/core/types.cjs +0 -2
  178. package/dist/core/types.js +1 -5
  179. package/dist/index.cjs +0 -2
  180. package/dist/index.js +1 -11
  181. package/dist/index.umd.cjs +0 -2
  182. package/dist/index.umd.js +362 -13230
  183. package/dist/kernel/constants.cjs +0 -2
  184. package/dist/kernel/constants.js +1 -43
  185. package/dist/kernel/index.cjs +0 -2
  186. package/dist/kernel/index.js +1 -4
  187. package/dist/kernel/kernel.cjs +1 -3
  188. package/dist/kernel/kernel.js +1 -273
  189. package/dist/kernel/manager/cacheManager.cjs +0 -2
  190. package/dist/kernel/manager/cacheManager.js +1 -38
  191. package/dist/kernel/manager/i18n/I18nManager.cjs +0 -2
  192. package/dist/kernel/manager/i18n/I18nManager.js +1 -83
  193. package/dist/kernel/manager/i18n/i18n.persistence.cjs +4 -3
  194. package/dist/kernel/manager/i18n/i18n.persistence.js +1 -38
  195. package/dist/kernel/manager/i18n/i18n.schema.cjs +0 -2
  196. package/dist/kernel/manager/i18n/i18n.schema.js +1 -64
  197. package/dist/kernel/manager/i18n/index.cjs +0 -2
  198. package/dist/kernel/manager/i18n/index.js +1 -3
  199. package/dist/kernel/manager/i18nManager.cjs +0 -2
  200. package/dist/kernel/manager/i18nManager.js +1 -3
  201. package/dist/kernel/manager/index.cjs +0 -2
  202. package/dist/kernel/manager/index.js +1 -6
  203. package/dist/kernel/manager/logger/LoggerManager.cjs +0 -2
  204. package/dist/kernel/manager/logger/LoggerManager.js +1 -99
  205. package/dist/kernel/manager/logger/index.cjs +0 -2
  206. package/dist/kernel/manager/logger/index.js +1 -3
  207. package/dist/kernel/manager/logger/logger.persistence.cjs +0 -2
  208. package/dist/kernel/manager/logger/logger.persistence.js +1 -43
  209. package/dist/kernel/manager/logger/logger.schema.cjs +0 -2
  210. package/dist/kernel/manager/logger/logger.schema.js +1 -55
  211. package/dist/kernel/manager/loggerManager.cjs +0 -2
  212. package/dist/kernel/manager/loggerManager.js +1 -3
  213. package/dist/kernel/manager/theme/ThemeManager.cjs +0 -2
  214. package/dist/kernel/manager/theme/ThemeManager.js +1 -76
  215. package/dist/kernel/manager/theme/index.cjs +0 -2
  216. package/dist/kernel/manager/theme/index.js +1 -3
  217. package/dist/kernel/manager/theme/theme.dom.cjs +0 -2
  218. package/dist/kernel/manager/theme/theme.dom.js +1 -45
  219. package/dist/kernel/manager/theme/theme.persistence.cjs +0 -2
  220. package/dist/kernel/manager/theme/theme.persistence.js +1 -38
  221. package/dist/kernel/manager/theme/theme.schema.cjs +0 -2
  222. package/dist/kernel/manager/theme/theme.schema.js +1 -97
  223. package/dist/kernel/manager/themeManager.cjs +0 -2
  224. package/dist/kernel/manager/themeManager.js +1 -3
  225. package/dist/kernel/types.cjs +0 -2
  226. package/dist/kernel/types.js +1 -3
  227. package/dist/library/index.cjs +0 -2
  228. package/dist/library/index.js +1 -4
  229. package/dist/library/locale/index.cjs +0 -2
  230. package/dist/library/locale/index.js +1 -12
  231. package/dist/library/locale/langs/en-us/index.cjs +0 -2
  232. package/dist/library/locale/langs/en-us/index.js +1 -24
  233. package/dist/library/locale/langs/zh-cn/index.cjs +0 -2
  234. package/dist/library/locale/langs/zh-cn/index.js +1 -24
  235. package/dist/library/locale/types.cjs +0 -2
  236. package/dist/library/locale/types.js +1 -3
  237. package/dist/library/storage/cache.cjs +0 -2
  238. package/dist/library/storage/cache.js +1 -237
  239. package/dist/library/storage/encryption.cjs +0 -2
  240. package/dist/library/storage/encryption.js +1 -141
  241. package/dist/library/storage/index.cjs +0 -2
  242. package/dist/library/storage/index.js +1 -106
  243. package/dist/state/StateManager.cjs +0 -2
  244. package/dist/state/StateManager.js +1 -160
  245. package/dist/state/adapters/AdapterFactory.cjs +0 -2
  246. package/dist/state/adapters/AdapterFactory.js +1 -85
  247. package/dist/state/adapters/DefaultAdapter.cjs +0 -2
  248. package/dist/state/adapters/DefaultAdapter.js +1 -71
  249. package/dist/state/adapters/ReduxAdapter.cjs +0 -2
  250. package/dist/state/adapters/ReduxAdapter.js +1 -439
  251. package/dist/state/adapters/ZustandAdapter.cjs +0 -2
  252. package/dist/state/adapters/ZustandAdapter.js +1 -70
  253. package/dist/state/adapters/index.cjs +0 -2
  254. package/dist/state/adapters/index.js +1 -9
  255. package/dist/state/adapters/types.cjs +0 -2
  256. package/dist/state/adapters/types.js +1 -5
  257. package/dist/state/core/DerivedStateInstance.cjs +0 -2
  258. package/dist/state/core/DerivedStateInstance.js +1 -173
  259. package/dist/state/core/StateInstance.cjs +0 -2
  260. package/dist/state/core/StateInstance.js +1 -168
  261. package/dist/state/core/StateRegistry.cjs +0 -2
  262. package/dist/state/core/StateRegistry.js +1 -106
  263. package/dist/state/core/StateScope.cjs +0 -2
  264. package/dist/state/core/StateScope.js +1 -133
  265. package/dist/state/core/index.cjs +0 -2
  266. package/dist/state/core/index.js +1 -8
  267. package/dist/state/index.cjs +0 -2
  268. package/dist/state/index.js +1 -12
  269. package/dist/state/types.cjs +0 -2
  270. package/dist/state/types.js +1 -13
  271. package/dist/state.umd.js +22 -1395
  272. package/dist/types.cjs +0 -2
  273. package/dist/types.js +1 -3
  274. package/dist/utils/analytics.cjs +0 -2
  275. package/dist/utils/analytics.js +1 -204
  276. package/dist/utils/configSecurity.cjs +0 -2
  277. package/dist/utils/configSecurity.js +3 -176
  278. package/dist/utils/csrf.cjs +0 -2
  279. package/dist/utils/csrf.js +1 -3
  280. package/dist/utils/errors/ErrorCodes.cjs +0 -2
  281. package/dist/utils/errors/ErrorCodes.js +1 -3
  282. package/dist/utils/errors.cjs +0 -2
  283. package/dist/utils/errors.js +1 -18
  284. package/dist/utils/index.cjs +0 -2
  285. package/dist/utils/index.js +1 -48
  286. package/dist/utils/logger.cjs +0 -2
  287. package/dist/utils/logger.js +1 -3
  288. package/dist/utils/logger.types.cjs +0 -2
  289. package/dist/utils/logger.types.js +1 -3
  290. package/dist/utils/monitoring.cjs +0 -2
  291. package/dist/utils/monitoring.js +1 -3
  292. package/dist/utils/performance.cjs +0 -2
  293. package/dist/utils/performance.js +1 -3
  294. package/dist/utils/resourceLoader.cjs +0 -2
  295. package/dist/utils/resourceLoader.js +1 -3
  296. package/dist/utils/runtimeSecurity.cjs +0 -2
  297. package/dist/utils/runtimeSecurity.js +1 -3
  298. package/dist/utils/security.cjs +0 -2
  299. package/dist/utils/security.js +1 -3
  300. package/dist/utils/traceId.cjs +0 -2
  301. package/dist/utils/traceId.js +1 -3
  302. package/dist/utils/validation.cjs +0 -2
  303. package/dist/utils/validation.js +1 -3
  304. package/package.json +3 -4
  305. package/dist/analytics/index.cjs.map +0 -1
  306. package/dist/analytics/index.js.map +0 -1
  307. package/dist/analytics.umd.js.map +0 -1
  308. package/dist/components/LocaleSwitch.cjs.map +0 -1
  309. package/dist/components/LocaleSwitch.js.map +0 -1
  310. package/dist/components/ThemeSwitch.cjs.map +0 -1
  311. package/dist/components/ThemeSwitch.js.map +0 -1
  312. package/dist/components/index.cjs.map +0 -1
  313. package/dist/components/index.js.map +0 -1
  314. package/dist/components/persistence.cjs.map +0 -1
  315. package/dist/components/persistence.js.map +0 -1
  316. package/dist/core/Test.cjs.map +0 -1
  317. package/dist/core/Test.js.map +0 -1
  318. package/dist/core/app/AppContext.cjs.map +0 -1
  319. package/dist/core/app/AppContext.js.map +0 -1
  320. package/dist/core/app/AppContext.types.cjs.map +0 -1
  321. package/dist/core/app/AppContext.types.js.map +0 -1
  322. package/dist/core/app/BasicLayout.cjs.map +0 -1
  323. package/dist/core/app/BasicLayout.js.map +0 -1
  324. package/dist/core/app/DefaultApp.cjs.map +0 -1
  325. package/dist/core/app/DefaultApp.js.map +0 -1
  326. package/dist/core/app/index.cjs.map +0 -1
  327. package/dist/core/app/index.js.map +0 -1
  328. package/dist/core/config/AppConfig.cjs.map +0 -1
  329. package/dist/core/config/AppConfig.js.map +0 -1
  330. package/dist/core/config/ConfigLoader.cjs.map +0 -1
  331. package/dist/core/config/ConfigLoader.js.map +0 -1
  332. package/dist/core/config/ConfigValidator.cjs.map +0 -1
  333. package/dist/core/config/ConfigValidator.js.map +0 -1
  334. package/dist/core/config/index.cjs.map +0 -1
  335. package/dist/core/config/index.js.map +0 -1
  336. package/dist/core/dev/DevTools.cjs.map +0 -1
  337. package/dist/core/dev/DevTools.js.map +0 -1
  338. package/dist/core/error/ErrorBoundary.cjs.map +0 -1
  339. package/dist/core/error/ErrorBoundary.js.map +0 -1
  340. package/dist/core/error/ErrorHandler.cjs.map +0 -1
  341. package/dist/core/error/ErrorHandler.js.map +0 -1
  342. package/dist/core/error/index.cjs.map +0 -1
  343. package/dist/core/error/index.js.map +0 -1
  344. package/dist/core/event/AppEventBus.cjs.map +0 -1
  345. package/dist/core/event/AppEventBus.js.map +0 -1
  346. package/dist/core/event/frameworkEvents.cjs.map +0 -1
  347. package/dist/core/event/frameworkEvents.js.map +0 -1
  348. package/dist/core/event/hooks.cjs.map +0 -1
  349. package/dist/core/event/hooks.js.map +0 -1
  350. package/dist/core/event/index.cjs.map +0 -1
  351. package/dist/core/event/index.js.map +0 -1
  352. package/dist/core/event/types.cjs.map +0 -1
  353. package/dist/core/event/types.js.map +0 -1
  354. package/dist/core/event/useEventBus.cjs.map +0 -1
  355. package/dist/core/event/useEventBus.js.map +0 -1
  356. package/dist/core/index.cjs.map +0 -1
  357. package/dist/core/index.js.map +0 -1
  358. package/dist/core/initialization/InitializationErrorThrower.cjs.map +0 -1
  359. package/dist/core/initialization/InitializationErrorThrower.js.map +0 -1
  360. package/dist/core/initialization/index.cjs.map +0 -1
  361. package/dist/core/initialization/index.js.map +0 -1
  362. package/dist/core/initialization/initialization.cjs.map +0 -1
  363. package/dist/core/initialization/initialization.js.map +0 -1
  364. package/dist/core/initialization/initializationErrorState.cjs.map +0 -1
  365. package/dist/core/initialization/initializationErrorState.js.map +0 -1
  366. package/dist/core/kernel/defaultAdapters.cjs.map +0 -1
  367. package/dist/core/kernel/defaultAdapters.js.map +0 -1
  368. package/dist/core/kernel/errors.cjs.map +0 -1
  369. package/dist/core/kernel/errors.js.map +0 -1
  370. package/dist/core/kernel/index.cjs.map +0 -1
  371. package/dist/core/kernel/index.js.map +0 -1
  372. package/dist/core/kernel/startKernel.cjs.map +0 -1
  373. package/dist/core/kernel/startKernel.js.map +0 -1
  374. package/dist/core/kernel/types.cjs.map +0 -1
  375. package/dist/core/kernel/types.js.map +0 -1
  376. package/dist/core/middleware.cjs.map +0 -1
  377. package/dist/core/middleware.js.map +0 -1
  378. package/dist/core/plugin/PluginEventBus.cjs.map +0 -1
  379. package/dist/core/plugin/PluginEventBus.js.map +0 -1
  380. package/dist/core/plugin/PluginSandbox.cjs.map +0 -1
  381. package/dist/core/plugin/PluginSandbox.js.map +0 -1
  382. package/dist/core/plugin.cjs.map +0 -1
  383. package/dist/core/plugin.js.map +0 -1
  384. package/dist/core/router/RouterManager.cjs.map +0 -1
  385. package/dist/core/router/RouterManager.js.map +0 -1
  386. package/dist/core/router/adapter/AdapterManager.cjs.map +0 -1
  387. package/dist/core/router/adapter/AdapterManager.js.map +0 -1
  388. package/dist/core/router/adapter/index.cjs.map +0 -1
  389. package/dist/core/router/adapter/index.js.map +0 -1
  390. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +0 -1
  391. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +0 -1
  392. package/dist/core/router/adapter/react-router/index.cjs.map +0 -1
  393. package/dist/core/router/adapter/react-router/index.js.map +0 -1
  394. package/dist/core/router/adapter/types.cjs.map +0 -1
  395. package/dist/core/router/adapter/types.js.map +0 -1
  396. package/dist/core/router/dev/RouterDevTools.cjs.map +0 -1
  397. package/dist/core/router/dev/RouterDevTools.js.map +0 -1
  398. package/dist/core/router/dev/index.cjs.map +0 -1
  399. package/dist/core/router/dev/index.js.map +0 -1
  400. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +0 -1
  401. package/dist/core/router/dynamic/DynamicRouteManager.js.map +0 -1
  402. package/dist/core/router/dynamic/index.cjs.map +0 -1
  403. package/dist/core/router/dynamic/index.js.map +0 -1
  404. package/dist/core/router/errors/RouterError.cjs.map +0 -1
  405. package/dist/core/router/errors/RouterError.js.map +0 -1
  406. package/dist/core/router/errors/index.cjs.map +0 -1
  407. package/dist/core/router/errors/index.js.map +0 -1
  408. package/dist/core/router/index.cjs.map +0 -1
  409. package/dist/core/router/index.js.map +0 -1
  410. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +0 -1
  411. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +0 -1
  412. package/dist/core/router/lifecycle/index.cjs.map +0 -1
  413. package/dist/core/router/lifecycle/index.js.map +0 -1
  414. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +0 -1
  415. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +0 -1
  416. package/dist/core/router/middleware/auth.cjs.map +0 -1
  417. package/dist/core/router/middleware/auth.js.map +0 -1
  418. package/dist/core/router/middleware/index.cjs.map +0 -1
  419. package/dist/core/router/middleware/index.js.map +0 -1
  420. package/dist/core/router/middleware/types.cjs.map +0 -1
  421. package/dist/core/router/middleware/types.js.map +0 -1
  422. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +0 -1
  423. package/dist/core/router/monitoring/RouterMonitoring.js.map +0 -1
  424. package/dist/core/router/monitoring/index.cjs.map +0 -1
  425. package/dist/core/router/monitoring/index.js.map +0 -1
  426. package/dist/core/router/navigation/RouterNavigation.cjs.map +0 -1
  427. package/dist/core/router/navigation/RouterNavigation.js.map +0 -1
  428. package/dist/core/router/navigation/index.cjs.map +0 -1
  429. package/dist/core/router/navigation/index.js.map +0 -1
  430. package/dist/core/router/performance/RouteCache.cjs.map +0 -1
  431. package/dist/core/router/performance/RouteCache.js.map +0 -1
  432. package/dist/core/router/performance/RoutePreloader.cjs.map +0 -1
  433. package/dist/core/router/performance/RoutePreloader.js.map +0 -1
  434. package/dist/core/router/performance/index.cjs.map +0 -1
  435. package/dist/core/router/performance/index.js.map +0 -1
  436. package/dist/core/router/plugin/RouterPluginManager.cjs.map +0 -1
  437. package/dist/core/router/plugin/RouterPluginManager.js.map +0 -1
  438. package/dist/core/router/plugin/index.cjs.map +0 -1
  439. package/dist/core/router/plugin/index.js.map +0 -1
  440. package/dist/core/router/plugin/types.cjs.map +0 -1
  441. package/dist/core/router/plugin/types.js.map +0 -1
  442. package/dist/core/router/types.cjs.map +0 -1
  443. package/dist/core/router/types.js.map +0 -1
  444. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +0 -1
  445. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +0 -1
  446. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +0 -1
  447. package/dist/core/router/utils/adapters/react-router/transform.js.map +0 -1
  448. package/dist/core/router/utils/transform.cjs.map +0 -1
  449. package/dist/core/router/utils/transform.js.map +0 -1
  450. package/dist/core/router/validation/RouterConfigValidator.cjs.map +0 -1
  451. package/dist/core/router/validation/RouterConfigValidator.js.map +0 -1
  452. package/dist/core/router/validation/index.cjs.map +0 -1
  453. package/dist/core/router/validation/index.js.map +0 -1
  454. package/dist/core/router/validation/schema.cjs.map +0 -1
  455. package/dist/core/router/validation/schema.js.map +0 -1
  456. package/dist/core/router/version/RouteVersionManager.cjs.map +0 -1
  457. package/dist/core/router/version/RouteVersionManager.js.map +0 -1
  458. package/dist/core/router/version/index.cjs.map +0 -1
  459. package/dist/core/router/version/index.js.map +0 -1
  460. package/dist/core/splash/SplashScreen.cjs.map +0 -1
  461. package/dist/core/splash/SplashScreen.js.map +0 -1
  462. package/dist/core/splash/index.cjs.map +0 -1
  463. package/dist/core/splash/index.js.map +0 -1
  464. package/dist/core/splash/splashScreenUtils.cjs.map +0 -1
  465. package/dist/core/splash/splashScreenUtils.js.map +0 -1
  466. package/dist/core/startup/AppInstance.cjs.map +0 -1
  467. package/dist/core/startup/AppInstance.js.map +0 -1
  468. package/dist/core/startup/environment.cjs.map +0 -1
  469. package/dist/core/startup/environment.js.map +0 -1
  470. package/dist/core/startup/index.cjs.map +0 -1
  471. package/dist/core/startup/index.js.map +0 -1
  472. package/dist/core/startup/initializeServices.cjs.map +0 -1
  473. package/dist/core/startup/initializeServices.js.map +0 -1
  474. package/dist/core/startup/performanceTracker.cjs.map +0 -1
  475. package/dist/core/startup/performanceTracker.js.map +0 -1
  476. package/dist/core/startup/renderApp.cjs.map +0 -1
  477. package/dist/core/startup/renderApp.js.map +0 -1
  478. package/dist/core/startup/startApp.cjs.map +0 -1
  479. package/dist/core/startup/startApp.js.map +0 -1
  480. package/dist/core/types.cjs.map +0 -1
  481. package/dist/core/types.js.map +0 -1
  482. package/dist/index.cjs.map +0 -1
  483. package/dist/index.js.map +0 -1
  484. package/dist/index.umd.cjs.map +0 -1
  485. package/dist/index.umd.js.map +0 -1
  486. package/dist/kernel/constants.cjs.map +0 -1
  487. package/dist/kernel/constants.js.map +0 -1
  488. package/dist/kernel/index.cjs.map +0 -1
  489. package/dist/kernel/index.js.map +0 -1
  490. package/dist/kernel/kernel.cjs.map +0 -1
  491. package/dist/kernel/kernel.js.map +0 -1
  492. package/dist/kernel/manager/cacheManager.cjs.map +0 -1
  493. package/dist/kernel/manager/cacheManager.js.map +0 -1
  494. package/dist/kernel/manager/i18n/I18nManager.cjs.map +0 -1
  495. package/dist/kernel/manager/i18n/I18nManager.js.map +0 -1
  496. package/dist/kernel/manager/i18n/i18n.persistence.cjs.map +0 -1
  497. package/dist/kernel/manager/i18n/i18n.persistence.js.map +0 -1
  498. package/dist/kernel/manager/i18n/i18n.schema.cjs.map +0 -1
  499. package/dist/kernel/manager/i18n/i18n.schema.js.map +0 -1
  500. package/dist/kernel/manager/i18n/index.cjs.map +0 -1
  501. package/dist/kernel/manager/i18n/index.js.map +0 -1
  502. package/dist/kernel/manager/i18nManager.cjs.map +0 -1
  503. package/dist/kernel/manager/i18nManager.js.map +0 -1
  504. package/dist/kernel/manager/index.cjs.map +0 -1
  505. package/dist/kernel/manager/index.js.map +0 -1
  506. package/dist/kernel/manager/logger/LoggerManager.cjs.map +0 -1
  507. package/dist/kernel/manager/logger/LoggerManager.js.map +0 -1
  508. package/dist/kernel/manager/logger/index.cjs.map +0 -1
  509. package/dist/kernel/manager/logger/index.js.map +0 -1
  510. package/dist/kernel/manager/logger/logger.persistence.cjs.map +0 -1
  511. package/dist/kernel/manager/logger/logger.persistence.js.map +0 -1
  512. package/dist/kernel/manager/logger/logger.schema.cjs.map +0 -1
  513. package/dist/kernel/manager/logger/logger.schema.js.map +0 -1
  514. package/dist/kernel/manager/loggerManager.cjs.map +0 -1
  515. package/dist/kernel/manager/loggerManager.js.map +0 -1
  516. package/dist/kernel/manager/persistence.cjs +0 -78
  517. package/dist/kernel/manager/persistence.cjs.map +0 -1
  518. package/dist/kernel/manager/persistence.d.ts +0 -3
  519. package/dist/kernel/manager/persistence.js +0 -60
  520. package/dist/kernel/manager/persistence.js.map +0 -1
  521. package/dist/kernel/manager/theme/ThemeManager.cjs.map +0 -1
  522. package/dist/kernel/manager/theme/ThemeManager.js.map +0 -1
  523. package/dist/kernel/manager/theme/index.cjs.map +0 -1
  524. package/dist/kernel/manager/theme/index.js.map +0 -1
  525. package/dist/kernel/manager/theme/theme.dom.cjs.map +0 -1
  526. package/dist/kernel/manager/theme/theme.dom.js.map +0 -1
  527. package/dist/kernel/manager/theme/theme.persistence.cjs.map +0 -1
  528. package/dist/kernel/manager/theme/theme.persistence.js.map +0 -1
  529. package/dist/kernel/manager/theme/theme.schema.cjs.map +0 -1
  530. package/dist/kernel/manager/theme/theme.schema.js.map +0 -1
  531. package/dist/kernel/manager/themeManager.cjs.map +0 -1
  532. package/dist/kernel/manager/themeManager.js.map +0 -1
  533. package/dist/kernel/types.cjs.map +0 -1
  534. package/dist/kernel/types.js.map +0 -1
  535. package/dist/library/index.cjs.map +0 -1
  536. package/dist/library/index.js.map +0 -1
  537. package/dist/library/locale/index.cjs.map +0 -1
  538. package/dist/library/locale/index.js.map +0 -1
  539. package/dist/library/locale/langs/en-us/index.cjs.map +0 -1
  540. package/dist/library/locale/langs/en-us/index.js.map +0 -1
  541. package/dist/library/locale/langs/zh-cn/index.cjs.map +0 -1
  542. package/dist/library/locale/langs/zh-cn/index.js.map +0 -1
  543. package/dist/library/locale/types.cjs.map +0 -1
  544. package/dist/library/locale/types.js.map +0 -1
  545. package/dist/library/storage/cache.cjs.map +0 -1
  546. package/dist/library/storage/cache.js.map +0 -1
  547. package/dist/library/storage/encryption.cjs.map +0 -1
  548. package/dist/library/storage/encryption.js.map +0 -1
  549. package/dist/library/storage/index.cjs.map +0 -1
  550. package/dist/library/storage/index.js.map +0 -1
  551. package/dist/request/adapter/RequestAdapter.d.ts +0 -85
  552. package/dist/request/adapter/RequestAdapter.js +0 -70
  553. package/dist/request/adapter/RequestAdapter.js.map +0 -1
  554. package/dist/request/adapter/axiosAdapter.d.ts +0 -10
  555. package/dist/request/adapter/axiosAdapter.js +0 -115
  556. package/dist/request/adapter/axiosAdapter.js.map +0 -1
  557. package/dist/request/adapter/fetchAdapter.d.ts +0 -10
  558. package/dist/request/adapter/fetchAdapter.js +0 -126
  559. package/dist/request/adapter/fetchAdapter.js.map +0 -1
  560. package/dist/request/adapter/index.d.ts +0 -9
  561. package/dist/request/adapter/index.js +0 -14
  562. package/dist/request/adapter/index.js.map +0 -1
  563. package/dist/request/adapter/kyAdapter.d.ts +0 -10
  564. package/dist/request/adapter/kyAdapter.js +0 -142
  565. package/dist/request/adapter/kyAdapter.js.map +0 -1
  566. package/dist/request/adapter/undiciAdapter.d.ts +0 -10
  567. package/dist/request/adapter/undiciAdapter.js +0 -164
  568. package/dist/request/adapter/undiciAdapter.js.map +0 -1
  569. package/dist/request/adapter.d.ts +0 -1
  570. package/dist/request/core/RequestClient.d.ts +0 -134
  571. package/dist/request/core/RequestClient.js +0 -509
  572. package/dist/request/core/RequestClient.js.map +0 -1
  573. package/dist/request/core/index.d.ts +0 -5
  574. package/dist/request/core/index.js +0 -5
  575. package/dist/request/core/index.js.map +0 -1
  576. package/dist/request/core.d.ts +0 -1
  577. package/dist/request/index.d.ts +0 -1
  578. package/dist/request/index.js +0 -50
  579. package/dist/request/index.js.map +0 -1
  580. package/dist/request/plugin/RequestPlugin.d.ts +0 -170
  581. package/dist/request/plugin/RequestPlugin.js +0 -203
  582. package/dist/request/plugin/RequestPlugin.js.map +0 -1
  583. package/dist/request/plugin/cache.d.ts +0 -33
  584. package/dist/request/plugin/cache.js +0 -264
  585. package/dist/request/plugin/cache.js.map +0 -1
  586. package/dist/request/plugin/csrfPlugin.d.ts +0 -21
  587. package/dist/request/plugin/csrfPlugin.js +0 -44
  588. package/dist/request/plugin/csrfPlugin.js.map +0 -1
  589. package/dist/request/plugin/index.d.ts +0 -11
  590. package/dist/request/plugin/index.js +0 -12
  591. package/dist/request/plugin/index.js.map +0 -1
  592. package/dist/request/plugin/monitoring.d.ts +0 -112
  593. package/dist/request/plugin/monitoring.js +0 -205
  594. package/dist/request/plugin/monitoring.js.map +0 -1
  595. package/dist/request/plugin/queue.d.ts +0 -91
  596. package/dist/request/plugin/queue.js +0 -156
  597. package/dist/request/plugin/queue.js.map +0 -1
  598. package/dist/request/plugin/retry.d.ts +0 -34
  599. package/dist/request/plugin/retry.js +0 -93
  600. package/dist/request/plugin/retry.js.map +0 -1
  601. package/dist/request/plugin/validation.d.ts +0 -26
  602. package/dist/request/plugin/validation.js +0 -116
  603. package/dist/request/plugin/validation.js.map +0 -1
  604. package/dist/request/plugin.d.ts +0 -1
  605. package/dist/request/runtime/RequestContext.d.ts +0 -50
  606. package/dist/request/runtime/RequestContext.js +0 -86
  607. package/dist/request/runtime/RequestContext.js.map +0 -1
  608. package/dist/request/runtime/index.d.ts +0 -4
  609. package/dist/request/runtime/index.js +0 -5
  610. package/dist/request/runtime/index.js.map +0 -1
  611. package/dist/request/runtime.d.ts +0 -1
  612. package/dist/request/types.d.ts +0 -1
  613. package/dist/request/types.js +0 -97
  614. package/dist/request/types.js.map +0 -1
  615. package/dist/request/utils/RequestQueueManager.d.ts +0 -74
  616. package/dist/request/utils/RequestQueueManager.js +0 -160
  617. package/dist/request/utils/RequestQueueManager.js.map +0 -1
  618. package/dist/request/utils/dependencyCheck.d.ts +0 -63
  619. package/dist/request/utils/dependencyCheck.js +0 -192
  620. package/dist/request/utils/dependencyCheck.js.map +0 -1
  621. package/dist/request/utils/index.d.ts +0 -5
  622. package/dist/request/utils/index.js +0 -6
  623. package/dist/request/utils/index.js.map +0 -1
  624. package/dist/request/utils.d.ts +0 -1
  625. package/dist/state/StateManager.cjs.map +0 -1
  626. package/dist/state/StateManager.js.map +0 -1
  627. package/dist/state/adapters/AdapterFactory.cjs.map +0 -1
  628. package/dist/state/adapters/AdapterFactory.js.map +0 -1
  629. package/dist/state/adapters/DefaultAdapter.cjs.map +0 -1
  630. package/dist/state/adapters/DefaultAdapter.js.map +0 -1
  631. package/dist/state/adapters/ReduxAdapter.cjs.map +0 -1
  632. package/dist/state/adapters/ReduxAdapter.js.map +0 -1
  633. package/dist/state/adapters/ZustandAdapter.cjs.map +0 -1
  634. package/dist/state/adapters/ZustandAdapter.js.map +0 -1
  635. package/dist/state/adapters/index.cjs.map +0 -1
  636. package/dist/state/adapters/index.js.map +0 -1
  637. package/dist/state/adapters/types.cjs.map +0 -1
  638. package/dist/state/adapters/types.js.map +0 -1
  639. package/dist/state/core/DerivedStateInstance.cjs.map +0 -1
  640. package/dist/state/core/DerivedStateInstance.js.map +0 -1
  641. package/dist/state/core/StateInstance.cjs.map +0 -1
  642. package/dist/state/core/StateInstance.js.map +0 -1
  643. package/dist/state/core/StateRegistry.cjs.map +0 -1
  644. package/dist/state/core/StateRegistry.js.map +0 -1
  645. package/dist/state/core/StateScope.cjs.map +0 -1
  646. package/dist/state/core/StateScope.js.map +0 -1
  647. package/dist/state/core/index.cjs.map +0 -1
  648. package/dist/state/core/index.js.map +0 -1
  649. package/dist/state/index.cjs.map +0 -1
  650. package/dist/state/index.js.map +0 -1
  651. package/dist/state/types.cjs.map +0 -1
  652. package/dist/state/types.js.map +0 -1
  653. package/dist/state.umd.js.map +0 -1
  654. package/dist/types.cjs.map +0 -1
  655. package/dist/types.js.map +0 -1
  656. package/dist/utils/analytics.cjs.map +0 -1
  657. package/dist/utils/analytics.js.map +0 -1
  658. package/dist/utils/configSecurity.cjs.map +0 -1
  659. package/dist/utils/configSecurity.js.map +0 -1
  660. package/dist/utils/csrf.cjs.map +0 -1
  661. package/dist/utils/csrf.js.map +0 -1
  662. package/dist/utils/errors/ErrorCodes.cjs.map +0 -1
  663. package/dist/utils/errors/ErrorCodes.js.map +0 -1
  664. package/dist/utils/errors.cjs.map +0 -1
  665. package/dist/utils/errors.js.map +0 -1
  666. package/dist/utils/index.cjs.map +0 -1
  667. package/dist/utils/index.js.map +0 -1
  668. package/dist/utils/logger.cjs.map +0 -1
  669. package/dist/utils/logger.js.map +0 -1
  670. package/dist/utils/logger.types.cjs.map +0 -1
  671. package/dist/utils/logger.types.js.map +0 -1
  672. package/dist/utils/monitoring.cjs.map +0 -1
  673. package/dist/utils/monitoring.js.map +0 -1
  674. package/dist/utils/performance.cjs.map +0 -1
  675. package/dist/utils/performance.js.map +0 -1
  676. package/dist/utils/resourceLoader.cjs.map +0 -1
  677. package/dist/utils/resourceLoader.js.map +0 -1
  678. package/dist/utils/runtimeSecurity.cjs.map +0 -1
  679. package/dist/utils/runtimeSecurity.js.map +0 -1
  680. package/dist/utils/security.cjs.map +0 -1
  681. package/dist/utils/security.js.map +0 -1
  682. package/dist/utils/traceId.cjs.map +0 -1
  683. package/dist/utils/traceId.js.map +0 -1
  684. package/dist/utils/validation.cjs.map +0 -1
  685. package/dist/utils/validation.js.map +0 -1
@@ -1 +0,0 @@
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) as any);\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":["initialization","options","onProgress","startTime","Date","now","config","pluginManager","executeBeforeInit","logger","setLevel","loggerLevel","LogLevel","INFO","lifecycle","beforeInitialization","setupI18n","locale","undefined","duration","context","progress","isReady","executeInit","executeAfterInit","afterInitialization","error"],"mappings":";;;;+BA+EsBA;;;eAAAA;;;wBA/EW;yBACP;wBAGI;AA2EvB,eAAeA,eACpBC,OAAqB,EACrBC,UAA6B;IAE7B,MAAMC,YAAYC,KAAKC,GAAG;IAC1B,IAAIC,SAAkC,CAAC;IAEvC,IAAI;QACF,gBAAgB;QAChB,MAAMC,qBAAa,CAACC,iBAAiB,CAACP;QAEtC,YAAY;QACZC,aAAa,GAAG;QAChBO,cAAM,CAACC,QAAQ,CAACT,QAAQU,WAAW,IAAIC,gBAAQ,CAACC,IAAI;QAEpD,YAAY;QACZX,aAAa;QAEb,aAAa;QACb,IAAID,QAAQa,SAAS,EAAEC,sBAAsB;YAC3Cb,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACC,oBAAoB;QAC9C;QAEA,WAAW;QACXb,aAAa,IAAI;QACjBc,IAAAA,kBAAS,EAAEf,QAAQgB,MAAM,IAAIC;QAE7B,WAAW;QACX,IAAIjB,QAAQa,SAAS,EAAEd,gBAAgB;YACrCE,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACd,cAAc;YACtCE,aAAa,IAAI;QACnB,OAAO;YACLA,aAAa;QACf;QAEAA,aAAa,IAAI;QAEjB,MAAMiB,WAAWf,KAAKC,GAAG,KAAKF;QAE9B,MAAMiB,UAAiC;YACrCd;YACAe,UAAU;YACVC,SAAS;YACTH;QACF;QAEA,YAAY;QACZ,MAAMZ,qBAAa,CAACgB,WAAW,CAACtB,SAASmB;QAEzC,aAAa;QACb,MAAMb,qBAAa,CAACiB,gBAAgB,CAACvB,SAASmB;QAE9C,4CAA4C;QAC5C,IAAInB,QAAQa,SAAS,EAAEW,qBAAqB;YAC1CvB,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACW,mBAAmB,CAACL;QAC9C;QAEAlB,aAAa,KAAK;QAElB,OAAOkB;IACT,EAAE,OAAOM,OAAO;QACdjB,cAAM,CAACiB,KAAK,CAAC,UAAUA;QACvB,MAAMA;IACR;AACF"}
@@ -1 +0,0 @@
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) as any);\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,UAAWG,QAAQY,MAAM,IAAIC;QAE7B,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 +0,0 @@
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 +0,0 @@
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"}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/errors.ts"],"sourcesContent":["import type { KernelBootErrorLike, KernelBootPhase } from './types';\n\nfunction inferRetryable(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return message.includes('timeout') || message.includes('network');\n }\n return false;\n}\n\nexport class KernelBootError extends Error implements KernelBootErrorLike {\n public readonly code: string;\n public readonly phase: KernelBootPhase;\n public readonly severity: 'low' | 'medium' | 'high' | 'critical';\n public readonly retryable: boolean;\n public readonly traceId: string;\n public readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n code: string;\n phase: KernelBootPhase;\n traceId: string;\n severity?: 'low' | 'medium' | 'high' | 'critical';\n retryable?: boolean;\n cause?: unknown;\n }\n ) {\n super(message);\n this.name = 'KernelBootError';\n this.code = options.code;\n this.phase = options.phase;\n this.traceId = options.traceId;\n this.severity = options.severity ?? 'high';\n this.retryable = options.retryable ?? inferRetryable(options.cause);\n this.cause = options.cause;\n }\n}\n\nexport function toKernelBootError(\n error: unknown,\n phase: KernelBootPhase,\n traceId: string\n): KernelBootError {\n if (error instanceof KernelBootError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new KernelBootError(error.message, {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n }\n\n return new KernelBootError(String(error), {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n}\n"],"names":["KernelBootError","toKernelBootError","inferRetryable","error","Error","message","toLowerCase","includes","options","code","phase","severity","retryable","traceId","cause","name","String"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QA8BGC;eAAAA;;;;;;;;;;;;;;;;AAtChB,SAASC,eAAeC,KAAc;IACpC,IAAIA,iBAAiBC,OAAO;QAC1B,MAAMC,UAAUF,MAAME,OAAO,CAACC,WAAW;QACzC,OAAOD,QAAQE,QAAQ,CAAC,cAAcF,QAAQE,QAAQ,CAAC;IACzD;IACA,OAAO;AACT;AAEO,IAAA,AAAMP,kBAAN,MAAMA,wBAAwBI;IAQnC,YACEC,OAAe,EACfG,OAOC,CACD;QACA,KAAK,CAACH,UAlBR,uBAAgBI,QAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA,IACA,uBAAgBC,YAAhB,KAAA,IACA,uBAAgBC,aAAhB,KAAA,IACA,uBAAgBC,WAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA;QAcE,IAAI,CAACC,IAAI,GAAG;QACZ,IAAI,CAACN,IAAI,GAAGD,QAAQC,IAAI;QACxB,IAAI,CAACC,KAAK,GAAGF,QAAQE,KAAK;QAC1B,IAAI,CAACG,OAAO,GAAGL,QAAQK,OAAO;QAC9B,IAAI,CAACF,QAAQ,GAAGH,QAAQG,QAAQ,IAAI;QACpC,IAAI,CAACC,SAAS,GAAGJ,QAAQI,SAAS,IAAIV,eAAeM,QAAQM,KAAK;QAClE,IAAI,CAACA,KAAK,GAAGN,QAAQM,KAAK;IAC5B;AACF;AAEO,SAASb,kBACdE,KAAc,EACdO,KAAsB,EACtBG,OAAe;IAEf,IAAIV,iBAAiBH,iBAAiB;QACpC,OAAOG;IACT;IAEA,IAAIA,iBAAiBC,OAAO;QAC1B,OAAO,IAAIJ,gBAAgBG,MAAME,OAAO,EAAE;YACxCI,MAAM;YACNC;YACAG;YACAC,OAAOX;QACT;IACF;IAEA,OAAO,IAAIH,gBAAgBgB,OAAOb,QAAQ;QACxCM,MAAM;QACNC;QACAG;QACAC,OAAOX;IACT;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/errors.ts"],"sourcesContent":["import type { KernelBootErrorLike, KernelBootPhase } from './types';\n\nfunction inferRetryable(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return message.includes('timeout') || message.includes('network');\n }\n return false;\n}\n\nexport class KernelBootError extends Error implements KernelBootErrorLike {\n public readonly code: string;\n public readonly phase: KernelBootPhase;\n public readonly severity: 'low' | 'medium' | 'high' | 'critical';\n public readonly retryable: boolean;\n public readonly traceId: string;\n public readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n code: string;\n phase: KernelBootPhase;\n traceId: string;\n severity?: 'low' | 'medium' | 'high' | 'critical';\n retryable?: boolean;\n cause?: unknown;\n }\n ) {\n super(message);\n this.name = 'KernelBootError';\n this.code = options.code;\n this.phase = options.phase;\n this.traceId = options.traceId;\n this.severity = options.severity ?? 'high';\n this.retryable = options.retryable ?? inferRetryable(options.cause);\n this.cause = options.cause;\n }\n}\n\nexport function toKernelBootError(\n error: unknown,\n phase: KernelBootPhase,\n traceId: string\n): KernelBootError {\n if (error instanceof KernelBootError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new KernelBootError(error.message, {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n }\n\n return new KernelBootError(String(error), {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n}\n"],"names":["inferRetryable","error","Error","message","toLowerCase","includes","KernelBootError","options","code","phase","severity","retryable","traceId","cause","name","toKernelBootError","String"],"mappings":";;;;;;;;;;;;;AAEA,SAASA,eAAeC,KAAc;IACpC,IAAIA,iBAAiBC,OAAO;QAC1B,MAAMC,UAAUF,MAAME,OAAO,CAACC,WAAW;QACzC,OAAOD,QAAQE,QAAQ,CAAC,cAAcF,QAAQE,QAAQ,CAAC;IACzD;IACA,OAAO;AACT;AAEA,OAAO,MAAMC,wBAAwBJ;IAQnC,YACEC,OAAe,EACfI,OAOC,CACD;QACA,KAAK,CAACJ,UAlBR,uBAAgBK,QAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA,IACA,uBAAgBC,YAAhB,KAAA,IACA,uBAAgBC,aAAhB,KAAA,IACA,uBAAgBC,WAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA;QAcE,IAAI,CAACC,IAAI,GAAG;QACZ,IAAI,CAACN,IAAI,GAAGD,QAAQC,IAAI;QACxB,IAAI,CAACC,KAAK,GAAGF,QAAQE,KAAK;QAC1B,IAAI,CAACG,OAAO,GAAGL,QAAQK,OAAO;QAC9B,IAAI,CAACF,QAAQ,GAAGH,QAAQG,QAAQ,IAAI;QACpC,IAAI,CAACC,SAAS,GAAGJ,QAAQI,SAAS,IAAIX,eAAeO,QAAQM,KAAK;QAClE,IAAI,CAACA,KAAK,GAAGN,QAAQM,KAAK;IAC5B;AACF;AAEA,OAAO,SAASE,kBACdd,KAAc,EACdQ,KAAsB,EACtBG,OAAe;IAEf,IAAIX,iBAAiBK,iBAAiB;QACpC,OAAOL;IACT;IAEA,IAAIA,iBAAiBC,OAAO;QAC1B,OAAO,IAAII,gBAAgBL,MAAME,OAAO,EAAE;YACxCK,MAAM;YACNC;YACAG;YACAC,OAAOZ;QACT;IACF;IAEA,OAAO,IAAIK,gBAAgBU,OAAOf,QAAQ;QACxCO,MAAM;QACNC;QACAG;QACAC,OAAOZ;IACT;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/index.ts"],"sourcesContent":["export { startKernel } from './startKernel';\nexport { KernelBootError } from './errors';\nexport type {\n ThemeMode,\n ThemeSnapshot,\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelBootErrorLike,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStateAdapter,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelThemeAdapter,\n KernelErrorHandler,\n KernelErrorHandlerResult,\n KernelAdapters,\n KernelPerformanceOptions,\n KernelLifecycle,\n KernelStartOptions,\n KernelRuntime,\n} from './types';\n"],"names":["KernelBootError","startKernel"],"mappings":";;;;;;;;;;;QACSA;eAAAA,uBAAe;;QADfC;eAAAA,wBAAW;;;6BAAQ;wBACI"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/index.ts"],"sourcesContent":["export { startKernel } from './startKernel';\nexport { KernelBootError } from './errors';\nexport type {\n ThemeMode,\n ThemeSnapshot,\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelBootErrorLike,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStateAdapter,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelThemeAdapter,\n KernelErrorHandler,\n KernelErrorHandlerResult,\n KernelAdapters,\n KernelPerformanceOptions,\n KernelLifecycle,\n KernelStartOptions,\n KernelRuntime,\n} from './types';\n"],"names":["startKernel","KernelBootError"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,eAAe,QAAQ,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/startKernel.ts"],"sourcesContent":["import { initialization } from '../initialization';\nimport { generateTraceId, initTraceIdGenerator, setCurrentTraceId } from '../../utils/traceId';\nimport { toKernelBootError } from './errors';\nimport { resolveKernelAdapters } from './defaultAdapters';\nimport type {\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelRuntime,\n KernelStartOptions,\n ThemeMode,\n ThemeSnapshot,\n} from './types';\n\nconst DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nconst DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nasync function withOptionalTimeout<T>(\n task: () => Promise<T>,\n timeoutMs?: number,\n timeoutMessage = 'Kernel phase timeout'\n): Promise<T> {\n if (!timeoutMs || timeoutMs <= 0) {\n return task();\n }\n\n return Promise.race([\n task(),\n new Promise<T>((_, reject) => {\n setTimeout(() => reject(new Error(timeoutMessage)), timeoutMs);\n }),\n ]);\n}\n\nexport async function startKernel(options: KernelStartOptions = {}): Promise<KernelRuntime> {\n initTraceIdGenerator('kernel');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n const adapters = resolveKernelAdapters(options);\n const metrics: KernelPhaseMetric[] = [];\n let config: Record<string, unknown> = {};\n let theme: ThemeSnapshot = { ...DEFAULT_THEME, ...(options.theme || {}) };\n let i18n: I18nSnapshot = { ...DEFAULT_I18N, ...(options.locale || {}) };\n\n const emitPhaseMetric = (metric: KernelPhaseMetric): void => {\n metrics.push(metric);\n adapters.monitoring.reportPhase?.(metric);\n adapters.monitoring.reportMetric?.('kernel.phase.duration', metric.duration, {\n phase: metric.phase,\n });\n adapters.eventBus.emit('kernel.phase.end', metric);\n };\n\n const runPhase = async (phase: KernelBootPhase, fn: () => Promise<void>): Promise<void> => {\n const enabled = options.enabledPhases?.[phase];\n if (enabled === false) {\n adapters.eventBus.emit('kernel.phase.skipped', { phase, traceId });\n return;\n }\n\n const startTime = performance.now();\n adapters.eventBus.emit('kernel.phase.start', { phase, traceId, startTime });\n\n try {\n await withOptionalTimeout(\n fn,\n options.performance?.phaseTimeoutMs?.[phase],\n `Kernel phase \"${phase}\" timeout`\n );\n emitPhaseMetric({\n phase,\n startTime,\n endTime: performance.now(),\n duration: performance.now() - startTime,\n });\n } catch (error) {\n const bootError = toKernelBootError(error, phase, traceId);\n adapters.monitoring.captureError(bootError, { phase, traceId });\n adapters.eventBus.emit('kernel.phase.error', bootError);\n\n const result = await adapters.errorHandler.handle(bootError);\n if (result.shouldThrow) {\n throw bootError;\n }\n }\n };\n\n await runPhase('prepare', async () => {\n adapters.logger.initialize?.(options);\n adapters.logger.info('Kernel 启动准备完成', { traceId });\n });\n\n await runPhase('services', async () => {\n await Promise.all([\n Promise.resolve(adapters.monitoring.initialize?.(options)),\n Promise.resolve(adapters.state.initialize?.(options)),\n Promise.resolve(adapters.eventBus.initialize?.(options)),\n ]);\n });\n\n await runPhase('config', async () => {\n if (options.configLoader) {\n try {\n config = await options.configLoader();\n } catch (error) {\n config = options.configFallback || {};\n }\n } else {\n config = options.configFallback || {};\n }\n });\n\n await runPhase('i18n', async () => {\n await adapters.i18n.initialize(i18n);\n });\n\n await runPhase('theme', async () => {\n await Promise.resolve(adapters.theme.initialize?.(theme));\n await adapters.theme.apply(theme);\n });\n\n await runPhase('init', async () => {\n await options.lifecycle?.beforeInitialization?.();\n const initContext = await initialization({\n loggerLevel: options.loggerLevel,\n locale: i18n.resources as any,\n lifecycle: options.lifecycle,\n });\n await options.lifecycle?.afterInitialization?.(initContext);\n });\n\n await runPhase('ready', async () => {\n adapters.eventBus.emit('kernel.ready', {\n traceId,\n theme,\n locale: i18n.locale,\n config,\n });\n });\n\n if (options.enablePostReady !== false) {\n await runPhase('postReady', async () => {\n adapters.eventBus.emit('kernel.postReady', { traceId });\n });\n }\n\n const setTheme = async (partial: Partial<ThemeSnapshot>): Promise<void> => {\n theme = { ...theme, ...partial };\n await adapters.theme.apply(theme);\n adapters.eventBus.emit('kernel.theme.changed', { traceId, theme });\n };\n\n const setThemeMode = async (mode: ThemeMode): Promise<void> => {\n await setTheme({ mode });\n };\n\n const setLocale = async (locale: I18nSnapshot['locale']): Promise<void> => {\n i18n = { ...i18n, locale };\n await adapters.i18n.setLocale(locale);\n adapters.eventBus.emit('kernel.i18n.changed', { traceId, locale });\n };\n\n return {\n traceId,\n getTheme: () => ({ ...theme }),\n setTheme,\n setThemeMode,\n getI18n: () => ({ ...i18n }),\n setLocale,\n getConfig: () => ({ ...config }),\n getStateManager: () => adapters.state.getInstance(),\n getEventBus: () => adapters.eventBus,\n getMetrics: () => [...metrics],\n destroy: () => {\n adapters.state.destroy?.();\n adapters.eventBus.destroy?.();\n adapters.eventBus.emit('kernel.destroyed', { traceId });\n },\n };\n}\n"],"names":["startKernel","DEFAULT_THEME","mode","DEFAULT_I18N","locale","withOptionalTimeout","task","timeoutMs","timeoutMessage","Promise","race","_","reject","setTimeout","Error","options","initTraceIdGenerator","traceId","generateTraceId","setCurrentTraceId","adapters","resolveKernelAdapters","metrics","config","theme","i18n","emitPhaseMetric","metric","push","monitoring","reportPhase","reportMetric","duration","phase","eventBus","emit","runPhase","fn","enabled","enabledPhases","startTime","performance","now","phaseTimeoutMs","endTime","error","bootError","toKernelBootError","captureError","result","errorHandler","handle","shouldThrow","logger","initialize","info","all","resolve","state","configLoader","configFallback","apply","lifecycle","beforeInitialization","initContext","initialization","loggerLevel","resources","afterInitialization","enablePostReady","setTheme","partial","setThemeMode","setLocale","getTheme","getI18n","getConfig","getStateManager","getInstance","getEventBus","getMetrics","destroy"],"mappings":";;;;+BAkCsBA;;;eAAAA;;;gCAlCS;yBAC0C;wBACvC;iCACI;AAWtC,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ;AACrD,MAAMC,eAA6B;IAAEC,QAAQ;AAAQ;AAErD,eAAeC,oBACbC,IAAsB,EACtBC,SAAkB,EAClBC,iBAAiB,sBAAsB;IAEvC,IAAI,CAACD,aAAaA,aAAa,GAAG;QAChC,OAAOD;IACT;IAEA,OAAOG,QAAQC,IAAI,CAAC;QAClBJ;QACA,IAAIG,QAAW,CAACE,GAAGC;YACjBC,WAAW,IAAMD,OAAO,IAAIE,MAAMN,kBAAkBD;QACtD;KACD;AACH;AAEO,eAAeP,YAAYe,UAA8B,CAAC,CAAC;IAChEC,IAAAA,6BAAoB,EAAC;IACrB,MAAMC,UAAUC,IAAAA,wBAAe;IAC/BC,IAAAA,0BAAiB,EAACF;IAElB,MAAMG,WAAWC,IAAAA,sCAAqB,EAACN;IACvC,MAAMO,UAA+B,EAAE;IACvC,IAAIC,SAAkC,CAAC;IACvC,IAAIC,QAAuB;QAAE,GAAGvB,aAAa;QAAE,GAAIc,QAAQS,KAAK,IAAI,CAAC,CAAC;IAAE;IACxE,IAAIC,OAAqB;QAAE,GAAGtB,YAAY;QAAE,GAAIY,QAAQX,MAAM,IAAI,CAAC,CAAC;IAAE;IAEtE,MAAMsB,kBAAkB,CAACC;QACvBL,QAAQM,IAAI,CAACD;QACbP,SAASS,UAAU,CAACC,WAAW,GAAGH;QAClCP,SAASS,UAAU,CAACE,YAAY,GAAG,yBAAyBJ,OAAOK,QAAQ,EAAE;YAC3EC,OAAON,OAAOM,KAAK;QACrB;QACAb,SAASc,QAAQ,CAACC,IAAI,CAAC,oBAAoBR;IAC7C;IAEA,MAAMS,WAAW,OAAOH,OAAwBI;QAC9C,MAAMC,UAAUvB,QAAQwB,aAAa,EAAE,CAACN,MAAM;QAC9C,IAAIK,YAAY,OAAO;YACrBlB,SAASc,QAAQ,CAACC,IAAI,CAAC,wBAAwB;gBAAEF;gBAAOhB;YAAQ;YAChE;QACF;QAEA,MAAMuB,YAAYC,YAAYC,GAAG;QACjCtB,SAASc,QAAQ,CAACC,IAAI,CAAC,sBAAsB;YAAEF;YAAOhB;YAASuB;QAAU;QAEzE,IAAI;YACF,MAAMnC,oBACJgC,IACAtB,QAAQ0B,WAAW,EAAEE,gBAAgB,CAACV,MAAM,EAC5C,CAAC,cAAc,EAAEA,MAAM,SAAS,CAAC;YAEnCP,gBAAgB;gBACdO;gBACAO;gBACAI,SAASH,YAAYC,GAAG;gBACxBV,UAAUS,YAAYC,GAAG,KAAKF;YAChC;QACF,EAAE,OAAOK,OAAO;YACd,MAAMC,YAAYC,IAAAA,yBAAiB,EAACF,OAAOZ,OAAOhB;YAClDG,SAASS,UAAU,CAACmB,YAAY,CAACF,WAAW;gBAAEb;gBAAOhB;YAAQ;YAC7DG,SAASc,QAAQ,CAACC,IAAI,CAAC,sBAAsBW;YAE7C,MAAMG,SAAS,MAAM7B,SAAS8B,YAAY,CAACC,MAAM,CAACL;YAClD,IAAIG,OAAOG,WAAW,EAAE;gBACtB,MAAMN;YACR;QACF;IACF;IAEA,MAAMV,SAAS,WAAW;QACxBhB,SAASiC,MAAM,CAACC,UAAU,GAAGvC;QAC7BK,SAASiC,MAAM,CAACE,IAAI,CAAC,iBAAiB;YAAEtC;QAAQ;IAClD;IAEA,MAAMmB,SAAS,YAAY;QACzB,MAAM3B,QAAQ+C,GAAG,CAAC;YAChB/C,QAAQgD,OAAO,CAACrC,SAASS,UAAU,CAACyB,UAAU,GAAGvC;YACjDN,QAAQgD,OAAO,CAACrC,SAASsC,KAAK,CAACJ,UAAU,GAAGvC;YAC5CN,QAAQgD,OAAO,CAACrC,SAASc,QAAQ,CAACoB,UAAU,GAAGvC;SAChD;IACH;IAEA,MAAMqB,SAAS,UAAU;QACvB,IAAIrB,QAAQ4C,YAAY,EAAE;YACxB,IAAI;gBACFpC,SAAS,MAAMR,QAAQ4C,YAAY;YACrC,EAAE,OAAOd,OAAO;gBACdtB,SAASR,QAAQ6C,cAAc,IAAI,CAAC;YACtC;QACF,OAAO;YACLrC,SAASR,QAAQ6C,cAAc,IAAI,CAAC;QACtC;IACF;IAEA,MAAMxB,SAAS,QAAQ;QACrB,MAAMhB,SAASK,IAAI,CAAC6B,UAAU,CAAC7B;IACjC;IAEA,MAAMW,SAAS,SAAS;QACtB,MAAM3B,QAAQgD,OAAO,CAACrC,SAASI,KAAK,CAAC8B,UAAU,GAAG9B;QAClD,MAAMJ,SAASI,KAAK,CAACqC,KAAK,CAACrC;IAC7B;IAEA,MAAMY,SAAS,QAAQ;QACrB,MAAMrB,QAAQ+C,SAAS,EAAEC;QACzB,MAAMC,cAAc,MAAMC,IAAAA,8BAAc,EAAC;YACvCC,aAAanD,QAAQmD,WAAW;YAChC9D,QAAQqB,KAAK0C,SAAS;YACtBL,WAAW/C,QAAQ+C,SAAS;QAC9B;QACA,MAAM/C,QAAQ+C,SAAS,EAAEM,sBAAsBJ;IACjD;IAEA,MAAM5B,SAAS,SAAS;QACtBhB,SAASc,QAAQ,CAACC,IAAI,CAAC,gBAAgB;YACrClB;YACAO;YACApB,QAAQqB,KAAKrB,MAAM;YACnBmB;QACF;IACF;IAEA,IAAIR,QAAQsD,eAAe,KAAK,OAAO;QACrC,MAAMjC,SAAS,aAAa;YAC1BhB,SAASc,QAAQ,CAACC,IAAI,CAAC,oBAAoB;gBAAElB;YAAQ;QACvD;IACF;IAEA,MAAMqD,WAAW,OAAOC;QACtB/C,QAAQ;YAAE,GAAGA,KAAK;YAAE,GAAG+C,OAAO;QAAC;QAC/B,MAAMnD,SAASI,KAAK,CAACqC,KAAK,CAACrC;QAC3BJ,SAASc,QAAQ,CAACC,IAAI,CAAC,wBAAwB;YAAElB;YAASO;QAAM;IAClE;IAEA,MAAMgD,eAAe,OAAOtE;QAC1B,MAAMoE,SAAS;YAAEpE;QAAK;IACxB;IAEA,MAAMuE,YAAY,OAAOrE;QACvBqB,OAAO;YAAE,GAAGA,IAAI;YAAErB;QAAO;QACzB,MAAMgB,SAASK,IAAI,CAACgD,SAAS,CAACrE;QAC9BgB,SAASc,QAAQ,CAACC,IAAI,CAAC,uBAAuB;YAAElB;YAASb;QAAO;IAClE;IAEA,OAAO;QACLa;QACAyD,UAAU,IAAO,CAAA;gBAAE,GAAGlD,KAAK;YAAC,CAAA;QAC5B8C;QACAE;QACAG,SAAS,IAAO,CAAA;gBAAE,GAAGlD,IAAI;YAAC,CAAA;QAC1BgD;QACAG,WAAW,IAAO,CAAA;gBAAE,GAAGrD,MAAM;YAAC,CAAA;QAC9BsD,iBAAiB,IAAMzD,SAASsC,KAAK,CAACoB,WAAW;QACjDC,aAAa,IAAM3D,SAASc,QAAQ;QACpC8C,YAAY,IAAM;mBAAI1D;aAAQ;QAC9B2D,SAAS;YACP7D,SAASsC,KAAK,CAACuB,OAAO;YACtB7D,SAASc,QAAQ,CAAC+C,OAAO;YACzB7D,SAASc,QAAQ,CAACC,IAAI,CAAC,oBAAoB;gBAAElB;YAAQ;QACvD;IACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/startKernel.ts"],"sourcesContent":["import { initialization } from '../initialization';\nimport { generateTraceId, initTraceIdGenerator, setCurrentTraceId } from '../../utils/traceId';\nimport { toKernelBootError } from './errors';\nimport { resolveKernelAdapters } from './defaultAdapters';\nimport type {\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelRuntime,\n KernelStartOptions,\n ThemeMode,\n ThemeSnapshot,\n} from './types';\n\nconst DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nconst DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nasync function withOptionalTimeout<T>(\n task: () => Promise<T>,\n timeoutMs?: number,\n timeoutMessage = 'Kernel phase timeout'\n): Promise<T> {\n if (!timeoutMs || timeoutMs <= 0) {\n return task();\n }\n\n return Promise.race([\n task(),\n new Promise<T>((_, reject) => {\n setTimeout(() => reject(new Error(timeoutMessage)), timeoutMs);\n }),\n ]);\n}\n\nexport async function startKernel(options: KernelStartOptions = {}): Promise<KernelRuntime> {\n initTraceIdGenerator('kernel');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n const adapters = resolveKernelAdapters(options);\n const metrics: KernelPhaseMetric[] = [];\n let config: Record<string, unknown> = {};\n let theme: ThemeSnapshot = { ...DEFAULT_THEME, ...(options.theme || {}) };\n let i18n: I18nSnapshot = { ...DEFAULT_I18N, ...(options.locale || {}) };\n\n const emitPhaseMetric = (metric: KernelPhaseMetric): void => {\n metrics.push(metric);\n adapters.monitoring.reportPhase?.(metric);\n adapters.monitoring.reportMetric?.('kernel.phase.duration', metric.duration, {\n phase: metric.phase,\n });\n adapters.eventBus.emit('kernel.phase.end', metric);\n };\n\n const runPhase = async (phase: KernelBootPhase, fn: () => Promise<void>): Promise<void> => {\n const enabled = options.enabledPhases?.[phase];\n if (enabled === false) {\n adapters.eventBus.emit('kernel.phase.skipped', { phase, traceId });\n return;\n }\n\n const startTime = performance.now();\n adapters.eventBus.emit('kernel.phase.start', { phase, traceId, startTime });\n\n try {\n await withOptionalTimeout(\n fn,\n options.performance?.phaseTimeoutMs?.[phase],\n `Kernel phase \"${phase}\" timeout`\n );\n emitPhaseMetric({\n phase,\n startTime,\n endTime: performance.now(),\n duration: performance.now() - startTime,\n });\n } catch (error) {\n const bootError = toKernelBootError(error, phase, traceId);\n adapters.monitoring.captureError(bootError, { phase, traceId });\n adapters.eventBus.emit('kernel.phase.error', bootError);\n\n const result = await adapters.errorHandler.handle(bootError);\n if (result.shouldThrow) {\n throw bootError;\n }\n }\n };\n\n await runPhase('prepare', async () => {\n adapters.logger.initialize?.(options);\n adapters.logger.info('Kernel 启动准备完成', { traceId });\n });\n\n await runPhase('services', async () => {\n await Promise.all([\n Promise.resolve(adapters.monitoring.initialize?.(options)),\n Promise.resolve(adapters.state.initialize?.(options)),\n Promise.resolve(adapters.eventBus.initialize?.(options)),\n ]);\n });\n\n await runPhase('config', async () => {\n if (options.configLoader) {\n try {\n config = await options.configLoader();\n } catch (error) {\n config = options.configFallback || {};\n }\n } else {\n config = options.configFallback || {};\n }\n });\n\n await runPhase('i18n', async () => {\n await adapters.i18n.initialize(i18n);\n });\n\n await runPhase('theme', async () => {\n await Promise.resolve(adapters.theme.initialize?.(theme));\n await adapters.theme.apply(theme);\n });\n\n await runPhase('init', async () => {\n await options.lifecycle?.beforeInitialization?.();\n const initContext = await initialization({\n loggerLevel: options.loggerLevel,\n locale: i18n.resources as any,\n lifecycle: options.lifecycle,\n });\n await options.lifecycle?.afterInitialization?.(initContext);\n });\n\n await runPhase('ready', async () => {\n adapters.eventBus.emit('kernel.ready', {\n traceId,\n theme,\n locale: i18n.locale,\n config,\n });\n });\n\n if (options.enablePostReady !== false) {\n await runPhase('postReady', async () => {\n adapters.eventBus.emit('kernel.postReady', { traceId });\n });\n }\n\n const setTheme = async (partial: Partial<ThemeSnapshot>): Promise<void> => {\n theme = { ...theme, ...partial };\n await adapters.theme.apply(theme);\n adapters.eventBus.emit('kernel.theme.changed', { traceId, theme });\n };\n\n const setThemeMode = async (mode: ThemeMode): Promise<void> => {\n await setTheme({ mode });\n };\n\n const setLocale = async (locale: I18nSnapshot['locale']): Promise<void> => {\n i18n = { ...i18n, locale };\n await adapters.i18n.setLocale(locale);\n adapters.eventBus.emit('kernel.i18n.changed', { traceId, locale });\n };\n\n return {\n traceId,\n getTheme: () => ({ ...theme }),\n setTheme,\n setThemeMode,\n getI18n: () => ({ ...i18n }),\n setLocale,\n getConfig: () => ({ ...config }),\n getStateManager: () => adapters.state.getInstance(),\n getEventBus: () => adapters.eventBus,\n getMetrics: () => [...metrics],\n destroy: () => {\n adapters.state.destroy?.();\n adapters.eventBus.destroy?.();\n adapters.eventBus.emit('kernel.destroyed', { traceId });\n },\n };\n}\n"],"names":["initialization","generateTraceId","initTraceIdGenerator","setCurrentTraceId","toKernelBootError","resolveKernelAdapters","DEFAULT_THEME","mode","DEFAULT_I18N","locale","withOptionalTimeout","task","timeoutMs","timeoutMessage","Promise","race","_","reject","setTimeout","Error","startKernel","options","traceId","adapters","metrics","config","theme","i18n","emitPhaseMetric","metric","push","monitoring","reportPhase","reportMetric","duration","phase","eventBus","emit","runPhase","fn","enabled","enabledPhases","startTime","performance","now","phaseTimeoutMs","endTime","error","bootError","captureError","result","errorHandler","handle","shouldThrow","logger","initialize","info","all","resolve","state","configLoader","configFallback","apply","lifecycle","beforeInitialization","initContext","loggerLevel","resources","afterInitialization","enablePostReady","setTheme","partial","setThemeMode","setLocale","getTheme","getI18n","getConfig","getStateManager","getInstance","getEventBus","getMetrics","destroy"],"mappings":"AAAA,SAASA,cAAc,QAAQ,oBAAoB;AACnD,SAASC,eAAe,EAAEC,oBAAoB,EAAEC,iBAAiB,QAAQ,sBAAsB;AAC/F,SAASC,iBAAiB,QAAQ,WAAW;AAC7C,SAASC,qBAAqB,QAAQ,oBAAoB;AAW1D,MAAMC,gBAA+B;IAAEC,MAAM;AAAQ;AACrD,MAAMC,eAA6B;IAAEC,QAAQ;AAAQ;AAErD,eAAeC,oBACbC,IAAsB,EACtBC,SAAkB,EAClBC,iBAAiB,sBAAsB;IAEvC,IAAI,CAACD,aAAaA,aAAa,GAAG;QAChC,OAAOD;IACT;IAEA,OAAOG,QAAQC,IAAI,CAAC;QAClBJ;QACA,IAAIG,QAAW,CAACE,GAAGC;YACjBC,WAAW,IAAMD,OAAO,IAAIE,MAAMN,kBAAkBD;QACtD;KACD;AACH;AAEA,OAAO,eAAeQ,YAAYC,UAA8B,CAAC,CAAC;IAChEnB,qBAAqB;IACrB,MAAMoB,UAAUrB;IAChBE,kBAAkBmB;IAElB,MAAMC,WAAWlB,sBAAsBgB;IACvC,MAAMG,UAA+B,EAAE;IACvC,IAAIC,SAAkC,CAAC;IACvC,IAAIC,QAAuB;QAAE,GAAGpB,aAAa;QAAE,GAAIe,QAAQK,KAAK,IAAI,CAAC,CAAC;IAAE;IACxE,IAAIC,OAAqB;QAAE,GAAGnB,YAAY;QAAE,GAAIa,QAAQZ,MAAM,IAAI,CAAC,CAAC;IAAE;IAEtE,MAAMmB,kBAAkB,CAACC;QACvBL,QAAQM,IAAI,CAACD;QACbN,SAASQ,UAAU,CAACC,WAAW,GAAGH;QAClCN,SAASQ,UAAU,CAACE,YAAY,GAAG,yBAAyBJ,OAAOK,QAAQ,EAAE;YAC3EC,OAAON,OAAOM,KAAK;QACrB;QACAZ,SAASa,QAAQ,CAACC,IAAI,CAAC,oBAAoBR;IAC7C;IAEA,MAAMS,WAAW,OAAOH,OAAwBI;QAC9C,MAAMC,UAAUnB,QAAQoB,aAAa,EAAE,CAACN,MAAM;QAC9C,IAAIK,YAAY,OAAO;YACrBjB,SAASa,QAAQ,CAACC,IAAI,CAAC,wBAAwB;gBAAEF;gBAAOb;YAAQ;YAChE;QACF;QAEA,MAAMoB,YAAYC,YAAYC,GAAG;QACjCrB,SAASa,QAAQ,CAACC,IAAI,CAAC,sBAAsB;YAAEF;YAAOb;YAASoB;QAAU;QAEzE,IAAI;YACF,MAAMhC,oBACJ6B,IACAlB,QAAQsB,WAAW,EAAEE,gBAAgB,CAACV,MAAM,EAC5C,CAAC,cAAc,EAAEA,MAAM,SAAS,CAAC;YAEnCP,gBAAgB;gBACdO;gBACAO;gBACAI,SAASH,YAAYC,GAAG;gBACxBV,UAAUS,YAAYC,GAAG,KAAKF;YAChC;QACF,EAAE,OAAOK,OAAO;YACd,MAAMC,YAAY5C,kBAAkB2C,OAAOZ,OAAOb;YAClDC,SAASQ,UAAU,CAACkB,YAAY,CAACD,WAAW;gBAAEb;gBAAOb;YAAQ;YAC7DC,SAASa,QAAQ,CAACC,IAAI,CAAC,sBAAsBW;YAE7C,MAAME,SAAS,MAAM3B,SAAS4B,YAAY,CAACC,MAAM,CAACJ;YAClD,IAAIE,OAAOG,WAAW,EAAE;gBACtB,MAAML;YACR;QACF;IACF;IAEA,MAAMV,SAAS,WAAW;QACxBf,SAAS+B,MAAM,CAACC,UAAU,GAAGlC;QAC7BE,SAAS+B,MAAM,CAACE,IAAI,CAAC,iBAAiB;YAAElC;QAAQ;IAClD;IAEA,MAAMgB,SAAS,YAAY;QACzB,MAAMxB,QAAQ2C,GAAG,CAAC;YAChB3C,QAAQ4C,OAAO,CAACnC,SAASQ,UAAU,CAACwB,UAAU,GAAGlC;YACjDP,QAAQ4C,OAAO,CAACnC,SAASoC,KAAK,CAACJ,UAAU,GAAGlC;YAC5CP,QAAQ4C,OAAO,CAACnC,SAASa,QAAQ,CAACmB,UAAU,GAAGlC;SAChD;IACH;IAEA,MAAMiB,SAAS,UAAU;QACvB,IAAIjB,QAAQuC,YAAY,EAAE;YACxB,IAAI;gBACFnC,SAAS,MAAMJ,QAAQuC,YAAY;YACrC,EAAE,OAAOb,OAAO;gBACdtB,SAASJ,QAAQwC,cAAc,IAAI,CAAC;YACtC;QACF,OAAO;YACLpC,SAASJ,QAAQwC,cAAc,IAAI,CAAC;QACtC;IACF;IAEA,MAAMvB,SAAS,QAAQ;QACrB,MAAMf,SAASI,IAAI,CAAC4B,UAAU,CAAC5B;IACjC;IAEA,MAAMW,SAAS,SAAS;QACtB,MAAMxB,QAAQ4C,OAAO,CAACnC,SAASG,KAAK,CAAC6B,UAAU,GAAG7B;QAClD,MAAMH,SAASG,KAAK,CAACoC,KAAK,CAACpC;IAC7B;IAEA,MAAMY,SAAS,QAAQ;QACrB,MAAMjB,QAAQ0C,SAAS,EAAEC;QACzB,MAAMC,cAAc,MAAMjE,eAAe;YACvCkE,aAAa7C,QAAQ6C,WAAW;YAChCzD,QAAQkB,KAAKwC,SAAS;YACtBJ,WAAW1C,QAAQ0C,SAAS;QAC9B;QACA,MAAM1C,QAAQ0C,SAAS,EAAEK,sBAAsBH;IACjD;IAEA,MAAM3B,SAAS,SAAS;QACtBf,SAASa,QAAQ,CAACC,IAAI,CAAC,gBAAgB;YACrCf;YACAI;YACAjB,QAAQkB,KAAKlB,MAAM;YACnBgB;QACF;IACF;IAEA,IAAIJ,QAAQgD,eAAe,KAAK,OAAO;QACrC,MAAM/B,SAAS,aAAa;YAC1Bf,SAASa,QAAQ,CAACC,IAAI,CAAC,oBAAoB;gBAAEf;YAAQ;QACvD;IACF;IAEA,MAAMgD,WAAW,OAAOC;QACtB7C,QAAQ;YAAE,GAAGA,KAAK;YAAE,GAAG6C,OAAO;QAAC;QAC/B,MAAMhD,SAASG,KAAK,CAACoC,KAAK,CAACpC;QAC3BH,SAASa,QAAQ,CAACC,IAAI,CAAC,wBAAwB;YAAEf;YAASI;QAAM;IAClE;IAEA,MAAM8C,eAAe,OAAOjE;QAC1B,MAAM+D,SAAS;YAAE/D;QAAK;IACxB;IAEA,MAAMkE,YAAY,OAAOhE;QACvBkB,OAAO;YAAE,GAAGA,IAAI;YAAElB;QAAO;QACzB,MAAMc,SAASI,IAAI,CAAC8C,SAAS,CAAChE;QAC9Bc,SAASa,QAAQ,CAACC,IAAI,CAAC,uBAAuB;YAAEf;YAASb;QAAO;IAClE;IAEA,OAAO;QACLa;QACAoD,UAAU,IAAO,CAAA;gBAAE,GAAGhD,KAAK;YAAC,CAAA;QAC5B4C;QACAE;QACAG,SAAS,IAAO,CAAA;gBAAE,GAAGhD,IAAI;YAAC,CAAA;QAC1B8C;QACAG,WAAW,IAAO,CAAA;gBAAE,GAAGnD,MAAM;YAAC,CAAA;QAC9BoD,iBAAiB,IAAMtD,SAASoC,KAAK,CAACmB,WAAW;QACjDC,aAAa,IAAMxD,SAASa,QAAQ;QACpC4C,YAAY,IAAM;mBAAIxD;aAAQ;QAC9ByD,SAAS;YACP1D,SAASoC,KAAK,CAACsB,OAAO;YACtB1D,SAASa,QAAQ,CAAC6C,OAAO;YACzB1D,SAASa,QAAQ,CAACC,IAAI,CAAC,oBAAoB;gBAAEf;YAAQ;QACvD;IACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/kernel/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/middleware.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\n\n/**\n * 中间件类型\n */\nexport type Middleware = (\n options: StartOptions,\n next: () => Promise<InitializationContext>\n) => Promise<InitializationContext>;\n\n/**\n * 中间件管理器\n */\nexport class MiddlewareManager {\n private middlewares: Middleware[] = [];\n\n /**\n * 添加中间件\n */\n use(middleware: Middleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * 移除中间件\n */\n remove(middleware: Middleware): void {\n const index = this.middlewares.indexOf(middleware);\n if (index > -1) {\n this.middlewares.splice(index, 1);\n }\n }\n\n /**\n * 清空所有中间件\n */\n clear(): void {\n this.middlewares = [];\n }\n\n /**\n * 执行中间件链\n */\n async execute(\n options: StartOptions,\n finalHandler: () => Promise<InitializationContext>\n ): Promise<InitializationContext> {\n let index = 0;\n\n const next = async (): Promise<InitializationContext> => {\n if (index >= this.middlewares.length) {\n return finalHandler();\n }\n\n const middleware = this.middlewares[index++];\n return middleware(options, next);\n };\n\n return next();\n }\n\n /**\n * 获取中间件数量\n */\n get count(): number {\n return this.middlewares.length;\n }\n}\n\n/**\n * 默认中间件管理器\n */\nexport const middlewareManager = new MiddlewareManager();\n"],"names":["MiddlewareManager","middlewareManager","use","middleware","middlewares","push","remove","index","indexOf","splice","clear","execute","options","finalHandler","next","length","count"],"mappings":";;;;;;;;;;;QAcaA;eAAAA;;QA2DAC;eAAAA;;;;;;;;;;;;;;;;AA3DN,IAAA,AAAMD,oBAAN,MAAMA;IAGX;;GAEC,GACDE,IAAIC,UAAsB,EAAQ;QAChC,IAAI,CAACC,WAAW,CAACC,IAAI,CAACF;IACxB;IAEA;;GAEC,GACDG,OAAOH,UAAsB,EAAQ;QACnC,MAAMI,QAAQ,IAAI,CAACH,WAAW,CAACI,OAAO,CAACL;QACvC,IAAII,QAAQ,CAAC,GAAG;YACd,IAAI,CAACH,WAAW,CAACK,MAAM,CAACF,OAAO;QACjC;IACF;IAEA;;GAEC,GACDG,QAAc;QACZ,IAAI,CAACN,WAAW,GAAG,EAAE;IACvB;IAEA;;GAEC,GACD,MAAMO,QACJC,OAAqB,EACrBC,YAAkD,EAClB;QAChC,IAAIN,QAAQ;QAEZ,MAAMO,OAAO;YACX,IAAIP,SAAS,IAAI,CAACH,WAAW,CAACW,MAAM,EAAE;gBACpC,OAAOF;YACT;YAEA,MAAMV,aAAa,IAAI,CAACC,WAAW,CAACG,QAAQ;YAC5C,OAAOJ,WAAWS,SAASE;QAC7B;QAEA,OAAOA;IACT;IAEA;;GAEC,GACD,IAAIE,QAAgB;QAClB,OAAO,IAAI,CAACZ,WAAW,CAACW,MAAM;IAChC;;QApDA,uBAAQX,eAA4B,EAAE;;AAqDxC;AAKO,MAAMH,oBAAoB,IAAID"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/middleware.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\n\n/**\n * 中间件类型\n */\nexport type Middleware = (\n options: StartOptions,\n next: () => Promise<InitializationContext>\n) => Promise<InitializationContext>;\n\n/**\n * 中间件管理器\n */\nexport class MiddlewareManager {\n private middlewares: Middleware[] = [];\n\n /**\n * 添加中间件\n */\n use(middleware: Middleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * 移除中间件\n */\n remove(middleware: Middleware): void {\n const index = this.middlewares.indexOf(middleware);\n if (index > -1) {\n this.middlewares.splice(index, 1);\n }\n }\n\n /**\n * 清空所有中间件\n */\n clear(): void {\n this.middlewares = [];\n }\n\n /**\n * 执行中间件链\n */\n async execute(\n options: StartOptions,\n finalHandler: () => Promise<InitializationContext>\n ): Promise<InitializationContext> {\n let index = 0;\n\n const next = async (): Promise<InitializationContext> => {\n if (index >= this.middlewares.length) {\n return finalHandler();\n }\n\n const middleware = this.middlewares[index++];\n return middleware(options, next);\n };\n\n return next();\n }\n\n /**\n * 获取中间件数量\n */\n get count(): number {\n return this.middlewares.length;\n }\n}\n\n/**\n * 默认中间件管理器\n */\nexport const middlewareManager = new MiddlewareManager();\n"],"names":["MiddlewareManager","use","middleware","middlewares","push","remove","index","indexOf","splice","clear","execute","options","finalHandler","next","length","count","middlewareManager"],"mappings":";;;;;;;;;;;;;AAWA;;CAEC,GACD,OAAO,MAAMA;IAGX;;GAEC,GACDC,IAAIC,UAAsB,EAAQ;QAChC,IAAI,CAACC,WAAW,CAACC,IAAI,CAACF;IACxB;IAEA;;GAEC,GACDG,OAAOH,UAAsB,EAAQ;QACnC,MAAMI,QAAQ,IAAI,CAACH,WAAW,CAACI,OAAO,CAACL;QACvC,IAAII,QAAQ,CAAC,GAAG;YACd,IAAI,CAACH,WAAW,CAACK,MAAM,CAACF,OAAO;QACjC;IACF;IAEA;;GAEC,GACDG,QAAc;QACZ,IAAI,CAACN,WAAW,GAAG,EAAE;IACvB;IAEA;;GAEC,GACD,MAAMO,QACJC,OAAqB,EACrBC,YAAkD,EAClB;QAChC,IAAIN,QAAQ;QAEZ,MAAMO,OAAO;YACX,IAAIP,SAAS,IAAI,CAACH,WAAW,CAACW,MAAM,EAAE;gBACpC,OAAOF;YACT;YAEA,MAAMV,aAAa,IAAI,CAACC,WAAW,CAACG,QAAQ;YAC5C,OAAOJ,WAAWS,SAASE;QAC7B;QAEA,OAAOA;IACT;IAEA;;GAEC,GACD,IAAIE,QAAgB;QAClB,OAAO,IAAI,CAACZ,WAAW,CAACW,MAAM;IAChC;;QApDA,uBAAQX,eAA4B,EAAE;;AAqDxC;AAEA;;CAEC,GACD,OAAO,MAAMa,oBAAoB,IAAIhB,oBAAoB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/plugin/PluginEventBus.ts"],"sourcesContent":["/**\n * 插件事件总线\n * 用于插件间通信\n */\n\n/**\n * 事件监听器类型\n */\nexport type EventListener<T = unknown> = (data: T) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(插件名称)\n */\n source?: string;\n /**\n * 事件时间戳\n */\n timestamp: number;\n /**\n * 事件ID(用于追踪)\n */\n eventId?: string;\n /**\n * 事件优先级\n */\n priority?: number;\n}\n\n/**\n * 事件包装器\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件总线配置\n */\nexport interface PluginEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n}\n\n/**\n * 事件总线\n */\nexport class PluginEventBus {\n private listeners: Map<string, Set<EventListener>> = new Map();\n private eventHistory: Array<{ event: string; data: unknown; metadata: EventMetadata }> = [];\n private config: Required<PluginEventBusConfig>;\n private eventCounter: number = 0;\n\n /**\n * 订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器(可以接收 EventWrapper 或直接数据)\n * @returns 取消订阅函数\n */\n on<T = unknown>(event: string, listener: EventListener<T | EventWrapper<T>>): () => void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n listeners.add(listener as EventListener);\n\n // 返回取消订阅函数\n return () => {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n };\n }\n\n /**\n * 取消订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n off<T = unknown>(event: string, listener: EventListener<T>): void {\n const listeners = this.listeners.get(event);\n if (listeners) {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n }\n\n constructor(config: PluginEventBusConfig = {}) {\n this.config = {\n enableTracking: config.enableTracking ?? false,\n maxHistorySize: config.maxHistorySize ?? 100,\n enableValidation: config.enableValidation ?? false,\n validator: config.validator ?? (() => true),\n };\n }\n\n /**\n * 发布事件\n * \n * @param event - 事件名称\n * @param data - 事件数据\n * @param metadata - 事件元数据(可选)\n */\n async emit<T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<EventMetadata>\n ): Promise<void> {\n // 事件验证\n if (this.config.enableValidation && !this.config.validator(event, data)) {\n console.warn(`事件 ${event} 验证失败,已忽略`);\n return;\n }\n\n // 构建事件元数据\n const eventMetadata: EventMetadata = {\n source: metadata?.source,\n timestamp: metadata?.timestamp ?? Date.now(),\n eventId: metadata?.eventId ?? `event_${++this.eventCounter}`,\n priority: metadata?.priority ?? 0,\n };\n\n // 记录事件历史\n if (this.config.enableTracking) {\n this.eventHistory.push({\n event,\n data,\n metadata: eventMetadata,\n });\n\n // 限制历史记录大小\n if (this.eventHistory.length > this.config.maxHistorySize) {\n this.eventHistory.shift();\n }\n }\n\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n\n // 创建事件包装器\n const eventWrapper: EventWrapper<T> = {\n data: data as T,\n metadata: eventMetadata,\n };\n\n // 按优先级排序监听器(如果有优先级)\n const sortedListeners = Array.from(listeners);\n\n // 并行执行所有监听器\n const promises = sortedListeners.map((listener) => {\n try {\n return Promise.resolve(listener(eventWrapper));\n } catch (error) {\n console.error(`事件 ${event} 的监听器执行失败:`, error);\n return Promise.resolve();\n }\n });\n\n await Promise.allSettled(promises);\n }\n\n /**\n * 发布事件(仅数据,向后兼容)\n * \n * @param event - 事件名称\n * @param data - 事件数据\n */\n async emitData<T = unknown>(event: string, data?: T): Promise<void> {\n return this.emit(event, data);\n }\n\n /**\n * 一次性订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n once<T = unknown>(event: string, listener: EventListener<T>): void {\n const wrappedListener: EventListener<T | EventWrapper<T>> = async (data) => {\n // 处理 EventWrapper 或直接数据\n const actualData = (data as EventWrapper<T>).data !== undefined \n ? (data as EventWrapper<T>).data \n : data as T;\n await listener(actualData);\n this.off(event, wrappedListener);\n };\n this.on(event, wrappedListener);\n }\n\n /**\n * 清空所有事件监听器\n */\n clear(): void {\n this.listeners.clear();\n }\n\n /**\n * 获取事件监听器数量\n * \n * @param event - 事件名称,如果不提供则返回所有事件的监听器总数\n */\n listenerCount(event?: string): number {\n if (event) {\n return this.listeners.get(event)?.size || 0;\n }\n\n let count = 0;\n for (const listeners of this.listeners.values()) {\n count += listeners.size;\n }\n return count;\n }\n\n /**\n * 获取所有事件名称\n */\n eventNames(): string[] {\n return Array.from(this.listeners.keys());\n }\n\n /**\n * 获取事件历史记录\n * \n * @param event - 事件名称(可选,如果提供则只返回该事件的历史)\n * @param limit - 限制返回的记录数\n * @returns 事件历史记录\n */\n getEventHistory(event?: string, limit?: number): Array<{ event: string; data: unknown; metadata: EventMetadata }> {\n if (!this.config.enableTracking) {\n return [];\n }\n\n let history = this.eventHistory;\n if (event) {\n history = history.filter((h) => h.event === event);\n }\n\n if (limit) {\n history = history.slice(-limit);\n }\n\n return [...history];\n }\n\n /**\n * 清空事件历史记录\n */\n clearHistory(): void {\n this.eventHistory = [];\n }\n\n /**\n * 请求-响应模式:发送请求并等待响应\n * \n * @param event - 事件名称\n * @param data - 请求数据\n * @param timeout - 超时时间(毫秒)\n * @returns 响应数据\n */\n async request<TRequest = unknown, TResponse = unknown>(\n event: string,\n data?: TRequest,\n timeout: number = 5000\n ): Promise<TResponse> {\n return new Promise((resolve, reject) => {\n const responseEvent = `${event}:response`;\n const requestId = `req_${Date.now()}_${Math.random()}`;\n\n // 设置超时\n const timeoutId = setTimeout(() => {\n this.off(responseEvent, responseHandler);\n reject(new Error(`请求 ${event} 超时`));\n }, timeout);\n\n // 响应处理器\n const responseHandler = (response: EventWrapper<{ requestId: string; data: TResponse }> | { requestId: string; data: TResponse }) => {\n // 处理 EventWrapper 或直接数据\n const actualResponse = (response as EventWrapper<{ requestId: string; data: TResponse }>).data !== undefined\n ? (response as EventWrapper<{ requestId: string; data: TResponse }>).data\n : response as { requestId: string; data: TResponse };\n \n if (actualResponse.requestId === requestId) {\n clearTimeout(timeoutId);\n this.off(responseEvent, responseHandler);\n resolve(actualResponse.data);\n }\n };\n\n // 订阅响应事件\n this.on(responseEvent, responseHandler);\n\n // 发送请求\n this.emit(`${event}:request`, {\n requestId,\n data,\n } as TRequest);\n });\n }\n\n /**\n * 请求-响应模式:注册请求处理器\n * \n * @param event - 事件名称\n * @param handler - 请求处理器\n * @returns 取消注册函数\n */\n onRequest<TRequest = unknown, TResponse = unknown>(\n event: string,\n handler: (data: TRequest, metadata: EventMetadata) => Promise<TResponse> | TResponse\n ): () => void {\n const requestEvent = `${event}:request`;\n const responseEvent = `${event}:response`;\n\n return this.on(requestEvent, async (wrapper: EventWrapper<{ requestId: string; data: TRequest }> | { requestId: string; data: TRequest }) => {\n try {\n // 处理 EventWrapper 或直接数据\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest }, metadata: { timestamp: Date.now() } as EventMetadata };\n \n const response = await handler(actualWrapper.data.data, actualWrapper.metadata);\n this.emit(responseEvent, {\n requestId: actualWrapper.data.requestId,\n data: response,\n });\n } catch (error) {\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest } };\n \n this.emit(`${responseEvent}:error`, {\n requestId: actualWrapper.data.requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n }\n\n /**\n * 获取配置\n */\n getConfig(): PluginEventBusConfig {\n return { ...this.config };\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<PluginEventBusConfig>): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n}\n\n/**\n * 全局插件事件总线实例\n */\nexport const pluginEventBus = new PluginEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n});\n"],"names":["PluginEventBus","pluginEventBus","on","event","listener","listeners","has","set","Set","get","add","delete","size","off","emit","data","metadata","config","enableValidation","validator","console","warn","eventMetadata","source","timestamp","Date","now","eventId","eventCounter","priority","enableTracking","eventHistory","push","length","maxHistorySize","shift","eventWrapper","sortedListeners","Array","from","promises","map","Promise","resolve","error","allSettled","emitData","once","wrappedListener","actualData","undefined","clear","listenerCount","count","values","eventNames","keys","getEventHistory","limit","history","filter","h","slice","clearHistory","request","timeout","reject","responseEvent","requestId","Math","random","timeoutId","setTimeout","responseHandler","Error","response","actualResponse","clearTimeout","onRequest","handler","requestEvent","wrapper","actualWrapper","message","String","getConfig","updateConfig","Map","process","env","NODE_ENV"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/plugin/PluginEventBus.ts"],"sourcesContent":["/**\n * 插件事件总线\n * 用于插件间通信\n */\n\n/**\n * 事件监听器类型\n */\nexport type EventListener<T = unknown> = (data: T) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(插件名称)\n */\n source?: string;\n /**\n * 事件时间戳\n */\n timestamp: number;\n /**\n * 事件ID(用于追踪)\n */\n eventId?: string;\n /**\n * 事件优先级\n */\n priority?: number;\n}\n\n/**\n * 事件包装器\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件总线配置\n */\nexport interface PluginEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n}\n\n/**\n * 事件总线\n */\nexport class PluginEventBus {\n private listeners: Map<string, Set<EventListener>> = new Map();\n private eventHistory: Array<{ event: string; data: unknown; metadata: EventMetadata }> = [];\n private config: Required<PluginEventBusConfig>;\n private eventCounter: number = 0;\n\n /**\n * 订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器(可以接收 EventWrapper 或直接数据)\n * @returns 取消订阅函数\n */\n on<T = unknown>(event: string, listener: EventListener<T | EventWrapper<T>>): () => void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n listeners.add(listener as EventListener);\n\n // 返回取消订阅函数\n return () => {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n };\n }\n\n /**\n * 取消订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n off<T = unknown>(event: string, listener: EventListener<T>): void {\n const listeners = this.listeners.get(event);\n if (listeners) {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n }\n\n constructor(config: PluginEventBusConfig = {}) {\n this.config = {\n enableTracking: config.enableTracking ?? false,\n maxHistorySize: config.maxHistorySize ?? 100,\n enableValidation: config.enableValidation ?? false,\n validator: config.validator ?? (() => true),\n };\n }\n\n /**\n * 发布事件\n * \n * @param event - 事件名称\n * @param data - 事件数据\n * @param metadata - 事件元数据(可选)\n */\n async emit<T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<EventMetadata>\n ): Promise<void> {\n // 事件验证\n if (this.config.enableValidation && !this.config.validator(event, data)) {\n console.warn(`事件 ${event} 验证失败,已忽略`);\n return;\n }\n\n // 构建事件元数据\n const eventMetadata: EventMetadata = {\n source: metadata?.source,\n timestamp: metadata?.timestamp ?? Date.now(),\n eventId: metadata?.eventId ?? `event_${++this.eventCounter}`,\n priority: metadata?.priority ?? 0,\n };\n\n // 记录事件历史\n if (this.config.enableTracking) {\n this.eventHistory.push({\n event,\n data,\n metadata: eventMetadata,\n });\n\n // 限制历史记录大小\n if (this.eventHistory.length > this.config.maxHistorySize) {\n this.eventHistory.shift();\n }\n }\n\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n\n // 创建事件包装器\n const eventWrapper: EventWrapper<T> = {\n data: data as T,\n metadata: eventMetadata,\n };\n\n // 按优先级排序监听器(如果有优先级)\n const sortedListeners = Array.from(listeners);\n\n // 并行执行所有监听器\n const promises = sortedListeners.map((listener) => {\n try {\n return Promise.resolve(listener(eventWrapper));\n } catch (error) {\n console.error(`事件 ${event} 的监听器执行失败:`, error);\n return Promise.resolve();\n }\n });\n\n await Promise.allSettled(promises);\n }\n\n /**\n * 发布事件(仅数据,向后兼容)\n * \n * @param event - 事件名称\n * @param data - 事件数据\n */\n async emitData<T = unknown>(event: string, data?: T): Promise<void> {\n return this.emit(event, data);\n }\n\n /**\n * 一次性订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n once<T = unknown>(event: string, listener: EventListener<T>): void {\n const wrappedListener: EventListener<T | EventWrapper<T>> = async (data) => {\n // 处理 EventWrapper 或直接数据\n const actualData = (data as EventWrapper<T>).data !== undefined \n ? (data as EventWrapper<T>).data \n : data as T;\n await listener(actualData);\n this.off(event, wrappedListener);\n };\n this.on(event, wrappedListener);\n }\n\n /**\n * 清空所有事件监听器\n */\n clear(): void {\n this.listeners.clear();\n }\n\n /**\n * 获取事件监听器数量\n * \n * @param event - 事件名称,如果不提供则返回所有事件的监听器总数\n */\n listenerCount(event?: string): number {\n if (event) {\n return this.listeners.get(event)?.size || 0;\n }\n\n let count = 0;\n for (const listeners of this.listeners.values()) {\n count += listeners.size;\n }\n return count;\n }\n\n /**\n * 获取所有事件名称\n */\n eventNames(): string[] {\n return Array.from(this.listeners.keys());\n }\n\n /**\n * 获取事件历史记录\n * \n * @param event - 事件名称(可选,如果提供则只返回该事件的历史)\n * @param limit - 限制返回的记录数\n * @returns 事件历史记录\n */\n getEventHistory(event?: string, limit?: number): Array<{ event: string; data: unknown; metadata: EventMetadata }> {\n if (!this.config.enableTracking) {\n return [];\n }\n\n let history = this.eventHistory;\n if (event) {\n history = history.filter((h) => h.event === event);\n }\n\n if (limit) {\n history = history.slice(-limit);\n }\n\n return [...history];\n }\n\n /**\n * 清空事件历史记录\n */\n clearHistory(): void {\n this.eventHistory = [];\n }\n\n /**\n * 请求-响应模式:发送请求并等待响应\n * \n * @param event - 事件名称\n * @param data - 请求数据\n * @param timeout - 超时时间(毫秒)\n * @returns 响应数据\n */\n async request<TRequest = unknown, TResponse = unknown>(\n event: string,\n data?: TRequest,\n timeout: number = 5000\n ): Promise<TResponse> {\n return new Promise((resolve, reject) => {\n const responseEvent = `${event}:response`;\n const requestId = `req_${Date.now()}_${Math.random()}`;\n\n // 设置超时\n const timeoutId = setTimeout(() => {\n this.off(responseEvent, responseHandler);\n reject(new Error(`请求 ${event} 超时`));\n }, timeout);\n\n // 响应处理器\n const responseHandler = (response: EventWrapper<{ requestId: string; data: TResponse }> | { requestId: string; data: TResponse }) => {\n // 处理 EventWrapper 或直接数据\n const actualResponse = (response as EventWrapper<{ requestId: string; data: TResponse }>).data !== undefined\n ? (response as EventWrapper<{ requestId: string; data: TResponse }>).data\n : response as { requestId: string; data: TResponse };\n \n if (actualResponse.requestId === requestId) {\n clearTimeout(timeoutId);\n this.off(responseEvent, responseHandler);\n resolve(actualResponse.data);\n }\n };\n\n // 订阅响应事件\n this.on(responseEvent, responseHandler);\n\n // 发送请求\n this.emit(`${event}:request`, {\n requestId,\n data,\n } as TRequest);\n });\n }\n\n /**\n * 请求-响应模式:注册请求处理器\n * \n * @param event - 事件名称\n * @param handler - 请求处理器\n * @returns 取消注册函数\n */\n onRequest<TRequest = unknown, TResponse = unknown>(\n event: string,\n handler: (data: TRequest, metadata: EventMetadata) => Promise<TResponse> | TResponse\n ): () => void {\n const requestEvent = `${event}:request`;\n const responseEvent = `${event}:response`;\n\n return this.on(requestEvent, async (wrapper: EventWrapper<{ requestId: string; data: TRequest }> | { requestId: string; data: TRequest }) => {\n try {\n // 处理 EventWrapper 或直接数据\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest }, metadata: { timestamp: Date.now() } as EventMetadata };\n \n const response = await handler(actualWrapper.data.data, actualWrapper.metadata);\n this.emit(responseEvent, {\n requestId: actualWrapper.data.requestId,\n data: response,\n });\n } catch (error) {\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest } };\n \n this.emit(`${responseEvent}:error`, {\n requestId: actualWrapper.data.requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n }\n\n /**\n * 获取配置\n */\n getConfig(): PluginEventBusConfig {\n return { ...this.config };\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<PluginEventBusConfig>): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n}\n\n/**\n * 全局插件事件总线实例\n */\nexport const pluginEventBus = new PluginEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n});\n"],"names":["PluginEventBus","on","event","listener","listeners","has","set","Set","get","add","delete","size","off","emit","data","metadata","config","enableValidation","validator","console","warn","eventMetadata","source","timestamp","Date","now","eventId","eventCounter","priority","enableTracking","eventHistory","push","length","maxHistorySize","shift","eventWrapper","sortedListeners","Array","from","promises","map","Promise","resolve","error","allSettled","emitData","once","wrappedListener","actualData","undefined","clear","listenerCount","count","values","eventNames","keys","getEventHistory","limit","history","filter","h","slice","clearHistory","request","timeout","reject","responseEvent","requestId","Math","random","timeoutId","setTimeout","responseHandler","Error","response","actualResponse","clearTimeout","onRequest","handler","requestEvent","wrapper","actualWrapper","message","String","getConfig","updateConfig","Map","pluginEventBus","process","env","NODE_ENV"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/plugin/PluginSandbox.ts"],"sourcesContent":["/**\n * 插件沙箱\n * 用于插件隔离和权限控制\n */\n\nimport type { StartOptions } from '../types';\n\n/**\n * 插件权限\n */\nexport enum PluginPermission {\n /**\n * 访问配置\n */\n ACCESS_CONFIG = 'access_config',\n\n /**\n * 访问状态管理器\n */\n ACCESS_STATE_MANAGER = 'access_state_manager',\n\n /**\n * 访问存储\n */\n ACCESS_STORAGE = 'access_storage',\n\n /**\n * 发布事件\n */\n EMIT_EVENTS = 'emit_events',\n\n /**\n * 订阅事件\n */\n SUBSCRIBE_EVENTS = 'subscribe_events',\n}\n\n/**\n * 插件沙箱配置\n */\nexport interface PluginSandboxConfig {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 允许的权限列表\n */\n permissions?: PluginPermission[];\n\n /**\n * 允许访问的配置键(白名单)\n */\n configWhitelist?: string[];\n\n /**\n * 允许访问的状态作用域(白名单)\n */\n stateScopeWhitelist?: (string | symbol)[];\n\n /**\n * 是否启用严格模式(默认true)\n */\n strictMode?: boolean;\n}\n\n/**\n * 插件沙箱\n */\nexport class PluginSandbox {\n private config: PluginSandboxConfig;\n private permissions: Set<PluginPermission>;\n\n constructor(config: PluginSandboxConfig) {\n this.config = {\n strictMode: true,\n ...config,\n };\n this.permissions = new Set(config.permissions || []);\n }\n\n /**\n * 检查权限\n * \n * @param permission - 权限\n * @returns 是否有权限\n */\n hasPermission(permission: PluginPermission): boolean {\n if (!this.config.strictMode) {\n return true; // 非严格模式,允许所有权限\n }\n\n return this.permissions.has(permission);\n }\n\n /**\n * 检查是否可以访问配置键\n * \n * @param key - 配置键\n * @returns 是否可以访问\n */\n canAccessConfig(key: string): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return false;\n }\n\n if (this.config.configWhitelist && this.config.configWhitelist.length > 0) {\n return this.config.configWhitelist.includes(key);\n }\n\n return true;\n }\n\n /**\n * 检查是否可以访问状态作用域\n * \n * @param scope - 状态作用域\n * @returns 是否可以访问\n */\n canAccessStateScope(scope: string | symbol): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_STATE_MANAGER)) {\n return false;\n }\n\n if (this.config.stateScopeWhitelist && this.config.stateScopeWhitelist.length > 0) {\n return this.config.stateScopeWhitelist.includes(scope);\n }\n\n return true;\n }\n\n /**\n * 过滤配置(根据白名单)\n * \n * @param config - 完整配置\n * @returns 过滤后的配置\n */\n filterConfig(config: StartOptions): Partial<StartOptions> {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return {};\n }\n\n if (!this.config.configWhitelist || this.config.configWhitelist.length === 0) {\n return config;\n }\n\n const filtered: Partial<StartOptions> = {};\n for (const key of this.config.configWhitelist) {\n if (key in config) {\n (filtered as any)[key] = (config as any)[key];\n }\n }\n\n return filtered;\n }\n\n /**\n * 获取沙箱配置\n */\n getConfig(): PluginSandboxConfig {\n return { ...this.config };\n }\n\n /**\n * 更新权限\n * \n * @param permissions - 权限列表\n */\n updatePermissions(permissions: PluginPermission[]): void {\n this.permissions = new Set(permissions);\n this.config.permissions = permissions;\n }\n}\n"],"names":["PluginPermission","PluginSandbox","hasPermission","permission","config","strictMode","permissions","has","canAccessConfig","key","configWhitelist","length","includes","canAccessStateScope","scope","stateScopeWhitelist","filterConfig","filtered","getConfig","updatePermissions","Set"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAOWA;eAAAA;;QA4DCC;eAAAA;;;;;;;;;;;;;;;;AA5DN,IAAA,AAAKD,0CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAvBSA;;AA4DL,IAAA,AAAMC,gBAAN,MAAMA;IAYX;;;;;GAKC,GACDC,cAAcC,UAA4B,EAAW;QACnD,IAAI,CAAC,IAAI,CAACC,MAAM,CAACC,UAAU,EAAE;YAC3B,OAAO,MAAM,eAAe;QAC9B;QAEA,OAAO,IAAI,CAACC,WAAW,CAACC,GAAG,CAACJ;IAC9B;IAEA;;;;;GAKC,GACDK,gBAAgBC,GAAW,EAAW;QACpC,IAAI,CAAC,IAAI,CAACP,aAAa,mBAAkC;YACvD,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,GAAG,GAAG;YACzE,OAAO,IAAI,CAACP,MAAM,CAACM,eAAe,CAACE,QAAQ,CAACH;QAC9C;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDI,oBAAoBC,KAAsB,EAAW;QACnD,IAAI,CAAC,IAAI,CAACZ,aAAa,0BAAyC;YAC9D,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACW,mBAAmB,IAAI,IAAI,CAACX,MAAM,CAACW,mBAAmB,CAACJ,MAAM,GAAG,GAAG;YACjF,OAAO,IAAI,CAACP,MAAM,CAACW,mBAAmB,CAACH,QAAQ,CAACE;QAClD;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDE,aAAaZ,MAAoB,EAAyB;QACxD,IAAI,CAAC,IAAI,CAACF,aAAa,mBAAkC;YACvD,OAAO,CAAC;QACV;QAEA,IAAI,CAAC,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,KAAK,GAAG;YAC5E,OAAOP;QACT;QAEA,MAAMa,WAAkC,CAAC;QACzC,KAAK,MAAMR,OAAO,IAAI,CAACL,MAAM,CAACM,eAAe,CAAE;YAC7C,IAAID,OAAOL,QAAQ;gBAChBa,QAAgB,CAACR,IAAI,GAAG,AAACL,MAAc,CAACK,IAAI;YAC/C;QACF;QAEA,OAAOQ;IACT;IAEA;;GAEC,GACDC,YAAiC;QAC/B,OAAO;YAAE,GAAG,IAAI,CAACd,MAAM;QAAC;IAC1B;IAEA;;;;GAIC,GACDe,kBAAkBb,WAA+B,EAAQ;QACvD,IAAI,CAACA,WAAW,GAAG,IAAIc,IAAId;QAC3B,IAAI,CAACF,MAAM,CAACE,WAAW,GAAGA;IAC5B;IAlGA,YAAYF,MAA2B,CAAE;QAHzC,uBAAQA,UAAR,KAAA;QACA,uBAAQE,eAAR,KAAA;QAGE,IAAI,CAACF,MAAM,GAAG;YACZC,YAAY;YACZ,GAAGD,MAAM;QACX;QACA,IAAI,CAACE,WAAW,GAAG,IAAIc,IAAIhB,OAAOE,WAAW,IAAI,EAAE;IACrD;AA6FF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/plugin/PluginSandbox.ts"],"sourcesContent":["/**\n * 插件沙箱\n * 用于插件隔离和权限控制\n */\n\nimport type { StartOptions } from '../types';\n\n/**\n * 插件权限\n */\nexport enum PluginPermission {\n /**\n * 访问配置\n */\n ACCESS_CONFIG = 'access_config',\n\n /**\n * 访问状态管理器\n */\n ACCESS_STATE_MANAGER = 'access_state_manager',\n\n /**\n * 访问存储\n */\n ACCESS_STORAGE = 'access_storage',\n\n /**\n * 发布事件\n */\n EMIT_EVENTS = 'emit_events',\n\n /**\n * 订阅事件\n */\n SUBSCRIBE_EVENTS = 'subscribe_events',\n}\n\n/**\n * 插件沙箱配置\n */\nexport interface PluginSandboxConfig {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 允许的权限列表\n */\n permissions?: PluginPermission[];\n\n /**\n * 允许访问的配置键(白名单)\n */\n configWhitelist?: string[];\n\n /**\n * 允许访问的状态作用域(白名单)\n */\n stateScopeWhitelist?: (string | symbol)[];\n\n /**\n * 是否启用严格模式(默认true)\n */\n strictMode?: boolean;\n}\n\n/**\n * 插件沙箱\n */\nexport class PluginSandbox {\n private config: PluginSandboxConfig;\n private permissions: Set<PluginPermission>;\n\n constructor(config: PluginSandboxConfig) {\n this.config = {\n strictMode: true,\n ...config,\n };\n this.permissions = new Set(config.permissions || []);\n }\n\n /**\n * 检查权限\n * \n * @param permission - 权限\n * @returns 是否有权限\n */\n hasPermission(permission: PluginPermission): boolean {\n if (!this.config.strictMode) {\n return true; // 非严格模式,允许所有权限\n }\n\n return this.permissions.has(permission);\n }\n\n /**\n * 检查是否可以访问配置键\n * \n * @param key - 配置键\n * @returns 是否可以访问\n */\n canAccessConfig(key: string): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return false;\n }\n\n if (this.config.configWhitelist && this.config.configWhitelist.length > 0) {\n return this.config.configWhitelist.includes(key);\n }\n\n return true;\n }\n\n /**\n * 检查是否可以访问状态作用域\n * \n * @param scope - 状态作用域\n * @returns 是否可以访问\n */\n canAccessStateScope(scope: string | symbol): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_STATE_MANAGER)) {\n return false;\n }\n\n if (this.config.stateScopeWhitelist && this.config.stateScopeWhitelist.length > 0) {\n return this.config.stateScopeWhitelist.includes(scope);\n }\n\n return true;\n }\n\n /**\n * 过滤配置(根据白名单)\n * \n * @param config - 完整配置\n * @returns 过滤后的配置\n */\n filterConfig(config: StartOptions): Partial<StartOptions> {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return {};\n }\n\n if (!this.config.configWhitelist || this.config.configWhitelist.length === 0) {\n return config;\n }\n\n const filtered: Partial<StartOptions> = {};\n for (const key of this.config.configWhitelist) {\n if (key in config) {\n (filtered as any)[key] = (config as any)[key];\n }\n }\n\n return filtered;\n }\n\n /**\n * 获取沙箱配置\n */\n getConfig(): PluginSandboxConfig {\n return { ...this.config };\n }\n\n /**\n * 更新权限\n * \n * @param permissions - 权限列表\n */\n updatePermissions(permissions: PluginPermission[]): void {\n this.permissions = new Set(permissions);\n this.config.permissions = permissions;\n }\n}\n"],"names":["PluginPermission","PluginSandbox","hasPermission","permission","config","strictMode","permissions","has","canAccessConfig","key","configWhitelist","length","includes","canAccessStateScope","scope","stateScopeWhitelist","filterConfig","filtered","getConfig","updatePermissions","Set"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;;;AAID;;CAEC,GACD,OAAO,IAAA,AAAKA,0CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAvBSA;MAyBX;AAgCD;;CAEC,GACD,OAAO,MAAMC;IAYX;;;;;GAKC,GACDC,cAAcC,UAA4B,EAAW;QACnD,IAAI,CAAC,IAAI,CAACC,MAAM,CAACC,UAAU,EAAE;YAC3B,OAAO,MAAM,eAAe;QAC9B;QAEA,OAAO,IAAI,CAACC,WAAW,CAACC,GAAG,CAACJ;IAC9B;IAEA;;;;;GAKC,GACDK,gBAAgBC,GAAW,EAAW;QACpC,IAAI,CAAC,IAAI,CAACP,aAAa,mBAAkC;YACvD,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,GAAG,GAAG;YACzE,OAAO,IAAI,CAACP,MAAM,CAACM,eAAe,CAACE,QAAQ,CAACH;QAC9C;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDI,oBAAoBC,KAAsB,EAAW;QACnD,IAAI,CAAC,IAAI,CAACZ,aAAa,0BAAyC;YAC9D,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACW,mBAAmB,IAAI,IAAI,CAACX,MAAM,CAACW,mBAAmB,CAACJ,MAAM,GAAG,GAAG;YACjF,OAAO,IAAI,CAACP,MAAM,CAACW,mBAAmB,CAACH,QAAQ,CAACE;QAClD;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDE,aAAaZ,MAAoB,EAAyB;QACxD,IAAI,CAAC,IAAI,CAACF,aAAa,mBAAkC;YACvD,OAAO,CAAC;QACV;QAEA,IAAI,CAAC,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,KAAK,GAAG;YAC5E,OAAOP;QACT;QAEA,MAAMa,WAAkC,CAAC;QACzC,KAAK,MAAMR,OAAO,IAAI,CAACL,MAAM,CAACM,eAAe,CAAE;YAC7C,IAAID,OAAOL,QAAQ;gBAChBa,QAAgB,CAACR,IAAI,GAAG,AAACL,MAAc,CAACK,IAAI;YAC/C;QACF;QAEA,OAAOQ;IACT;IAEA;;GAEC,GACDC,YAAiC;QAC/B,OAAO;YAAE,GAAG,IAAI,CAACd,MAAM;QAAC;IAC1B;IAEA;;;;GAIC,GACDe,kBAAkBb,WAA+B,EAAQ;QACvD,IAAI,CAACA,WAAW,GAAG,IAAIc,IAAId;QAC3B,IAAI,CAACF,MAAM,CAACE,WAAW,GAAGA;IAC5B;IAlGA,YAAYF,MAA2B,CAAE;QAHzC,uBAAQA,UAAR,KAAA;QACA,uBAAQE,eAAR,KAAA;QAGE,IAAI,CAACF,MAAM,GAAG;YACZC,YAAY;YACZ,GAAGD,MAAM;QACX;QACA,IAAI,CAACE,WAAW,GAAG,IAAIc,IAAIhB,OAAOE,WAAW,IAAI,EAAE;IACrD;AA6FF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/plugin.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\nimport { PluginSandbox, type PluginSandboxConfig } from './plugin/PluginSandbox';\nimport { pluginEventBus, type PluginEventBus } from './plugin/PluginEventBus';\n\n/**\n * 插件接口\n */\nexport interface Plugin<TOption = unknown> {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 插件版本\n */\n version?: string;\n\n /**\n * 插件依赖列表(插件名称数组)\n * 优化:支持插件依赖管理\n */\n dependencies?: string[];\n\n /**\n * 插件优先级(数字越小优先级越高)\n * 优化:支持插件加载顺序控制\n */\n priority?: number;\n\n /**\n * 插件沙箱配置(用于权限控制)\n */\n sandbox?: PluginSandboxConfig;\n\n /**\n * 初始化前钩子\n */\n beforeInit?: (options: Partial<StartOptions>, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 初始化钩子\n */\n init?: (options: Partial<StartOptions>, context: InitializationContext, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 初始化后钩子\n */\n afterInit?: (options: Partial<StartOptions>, context: InitializationContext, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 销毁钩子\n */\n destroy?: () => Promise<void> | void;\n\n /**\n * 自定义属性\n */\n readonly option?: Readonly<TOption>;\n}\n\n/**\n * 插件加载选项\n */\nexport interface PluginLoadOptions {\n /**\n * 插件URL(用于动态加载)\n */\n url?: string;\n /**\n * 插件模块路径(用于动态导入)\n */\n modulePath?: string;\n /**\n * 是否立即初始化\n */\n initialize?: boolean;\n /**\n * 初始化上下文(如果立即初始化)\n */\n initContext?: InitializationContext;\n /**\n * 启动选项(如果立即初始化)\n */\n startOptions?: StartOptions;\n}\n\n/**\n * 插件管理器\n *\n * 优化:\n * 1. 支持插件依赖管理\n * 2. 支持插件优先级控制\n * 3. 支持插件生命周期管理\n * 4. 支持插件热插拔(动态加载/卸载)\n */\nexport class PluginManager {\n private plugins: Map<string, Plugin> = new Map();\n private sandboxes: Map<string, PluginSandbox> = new Map();\n private pluginStatus: Map<string, 'registered' | 'initialized' | 'destroyed' | 'loading'> = new Map();\n private pluginLoaders: Map<string, () => Promise<Plugin>> = new Map();\n\n /**\n * 注册插件\n *\n * 优化:检查插件依赖是否已注册\n */\n register(plugin: Plugin): void {\n if (this.plugins.has(plugin.name)) {\n console.warn(`插件 ${plugin.name} 已存在,将被覆盖`);\n }\n\n // 检查依赖是否已注册\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n const missingDeps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(dep)\n );\n if (missingDeps.length > 0) {\n console.warn(\n `插件 ${plugin.name} 的依赖未注册: ${missingDeps.join(', ')}`\n );\n }\n }\n\n this.plugins.set(plugin.name, plugin);\n this.pluginStatus.set(plugin.name, 'registered');\n\n // 创建插件沙箱\n if (plugin.sandbox) {\n const sandbox = new PluginSandbox({\n ...plugin.sandbox,\n name: plugin.name,\n });\n this.sandboxes.set(plugin.name, sandbox);\n } else {\n // 如果没有配置沙箱,创建默认沙箱(非严格模式)\n const sandbox = new PluginSandbox({\n strictMode: false,\n name: plugin.name,\n });\n this.sandboxes.set(plugin.name, sandbox);\n }\n }\n\n /**\n * 获取插件加载顺序(考虑依赖和优先级)\n *\n * @returns 插件名称数组,按加载顺序排列\n */\n private getLoadOrder(): string[] {\n const plugins = Array.from(this.plugins.values());\n\n // 按优先级排序\n const sortedPlugins = plugins.sort((a, b) => {\n const priorityA = a.priority ?? 100;\n const priorityB = b.priority ?? 100;\n return priorityA - priorityB;\n });\n\n // 构建依赖图并拓扑排序\n const visited = new Set<string>();\n const visiting = new Set<string>();\n const result: string[] = [];\n\n const visit = (pluginName: string): void => {\n if (visiting.has(pluginName)) {\n console.warn(`检测到循环依赖,涉及插件: ${pluginName}`);\n return;\n }\n if (visited.has(pluginName)) {\n return;\n }\n\n visiting.add(pluginName);\n const plugin = this.plugins.get(pluginName);\n if (plugin?.dependencies) {\n for (const dep of plugin.dependencies) {\n visit(dep);\n }\n }\n visiting.delete(pluginName);\n visited.add(pluginName);\n result.push(pluginName);\n };\n\n for (const plugin of sortedPlugins) {\n visit(plugin.name);\n }\n\n return result;\n }\n\n /**\n * 注销插件\n */\n unregister(name: string): void {\n const plugin = this.plugins.get(name);\n if (plugin && plugin.destroy) {\n plugin.destroy();\n }\n this.plugins.delete(name);\n this.sandboxes.delete(name);\n this.pluginStatus.delete(name);\n this.pluginLoaders.delete(name);\n }\n\n /**\n * 动态加载插件(热插拔)\n *\n * @param options - 插件加载选项\n * @returns 加载的插件\n */\n async loadPlugin(options: PluginLoadOptions): Promise<Plugin> {\n let plugin: Plugin;\n\n if (options.url) {\n // 从URL加载插件\n const response = await fetch(options.url);\n if (!response.ok) {\n throw new Error(`无法加载插件: ${options.url} (${response.status})`);\n }\n const pluginModule = await response.json();\n plugin = pluginModule.default || pluginModule;\n } else if (options.modulePath) {\n // 从模块路径动态导入\n const pluginModule = await import(/* @vite-ignore */ options.modulePath);\n plugin = pluginModule.default || pluginModule;\n } else {\n throw new Error('必须提供 url 或 modulePath');\n }\n\n if (!plugin || !plugin.name) {\n throw new Error('插件格式无效:必须包含 name 属性');\n }\n\n // 检查插件是否已加载\n if (this.plugins.has(plugin.name)) {\n throw new Error(`插件 ${plugin.name} 已加载`);\n }\n\n // 设置加载状态\n this.pluginStatus.set(plugin.name, 'loading');\n\n try {\n // 注册插件\n this.register(plugin);\n\n // 如果要求立即初始化\n if (options.initialize && options.initContext && options.startOptions) {\n await this.initializePlugin(plugin.name, options.startOptions, options.initContext);\n }\n\n return plugin;\n } catch (error) {\n this.pluginStatus.delete(plugin.name);\n throw error;\n }\n }\n\n /**\n * 初始化单个插件\n *\n * @param name - 插件名称\n * @param options - 启动选项\n * @param context - 初始化上下文\n */\n async initializePlugin(\n name: string,\n options: StartOptions,\n context: InitializationContext\n ): Promise<void> {\n const plugin = this.plugins.get(name);\n if (!plugin) {\n throw new Error(`插件 ${name} 未注册`);\n }\n\n const status = this.pluginStatus.get(name);\n if (status === 'initialized') {\n return; // 已经初始化\n }\n\n try {\n const sandbox = this.sandboxes.get(name);\n if (!sandbox) {\n throw new Error(`插件 ${name} 的沙箱未找到`);\n }\n\n // 执行初始化钩子\n if (plugin.init) {\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.init(filteredOptions, context, sandbox, pluginEventBus);\n }\n\n this.pluginStatus.set(name, 'initialized');\n } catch (error) {\n console.error(`插件 ${name} 初始化失败:`, error);\n throw error;\n }\n }\n\n /**\n * 卸载插件(热插拔)\n *\n * @param name - 插件名称\n * @param force - 是否强制卸载(即使有依赖)\n */\n async unloadPlugin(name: string, force: boolean = false): Promise<void> {\n const plugin = this.plugins.get(name);\n if (!plugin) {\n throw new Error(`插件 ${name} 未加载`);\n }\n\n // 检查是否有其他插件依赖此插件\n if (!force) {\n const dependents = Array.from(this.plugins.values()).filter(\n (p) => p.dependencies && p.dependencies.includes(name)\n );\n if (dependents.length > 0) {\n throw new Error(\n `无法卸载插件 ${name},以下插件依赖它: ${dependents.map((p) => p.name).join(', ')}`\n );\n }\n }\n\n // 执行销毁钩子\n if (plugin.destroy) {\n try {\n await plugin.destroy();\n } catch (error) {\n console.error(`插件 ${name} 的 destroy 钩子执行失败:`, error);\n }\n }\n\n // 从事件总线移除相关监听器(如果有)\n // 注意:事件总线是全局的,这里只移除插件相关的事件\n // 实际实现可能需要更细粒度的控制\n\n // 清理插件\n this.unregister(name);\n this.pluginStatus.set(name, 'destroyed');\n }\n\n /**\n * 检查插件是否可以热加载\n *\n * @param plugin - 插件\n * @returns 是否可以热加载\n */\n canHotLoad(plugin: Plugin): boolean {\n // 检查依赖是否都已加载\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n const missingDeps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(dep)\n );\n if (missingDeps.length > 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * 注册插件加载器(用于延迟加载)\n *\n * @param name - 插件名称\n * @param loader - 加载器函数\n */\n registerLoader(name: string, loader: () => Promise<Plugin>): void {\n this.pluginLoaders.set(name, loader);\n }\n\n /**\n * 使用加载器加载插件\n *\n * @param name - 插件名称\n * @param options - 加载选项\n * @returns 加载的插件\n */\n async loadPluginByLoader(\n name: string,\n options?: Omit<PluginLoadOptions, 'url' | 'modulePath'>\n ): Promise<Plugin> {\n const loader = this.pluginLoaders.get(name);\n if (!loader) {\n throw new Error(`插件 ${name} 的加载器未注册`);\n }\n\n const plugin = await loader();\n\n if (!plugin || !plugin.name) {\n throw new Error('插件格式无效:必须包含 name 属性');\n }\n\n if (plugin.name !== name) {\n throw new Error(`插件名称不匹配: 期望 ${name},实际 ${plugin.name}`);\n }\n\n // 检查插件是否已加载\n if (this.plugins.has(plugin.name)) {\n return this.plugins.get(plugin.name)!;\n }\n\n // 设置加载状态\n this.pluginStatus.set(plugin.name, 'loading');\n\n try {\n // 注册插件\n this.register(plugin);\n\n // 如果要求立即初始化\n if (options?.initialize && options.initContext && options.startOptions) {\n await this.initializePlugin(plugin.name, options.startOptions, options.initContext);\n }\n\n return plugin;\n } catch (error) {\n this.pluginStatus.delete(plugin.name);\n throw error;\n }\n }\n\n /**\n * 获取插件\n */\n get(name: string): Plugin | undefined {\n return this.plugins.get(name);\n }\n\n /**\n * 获取所有插件\n */\n getAll(): Plugin[] {\n return Array.from(this.plugins.values());\n }\n\n /**\n * 执行初始化前钩子\n *\n * 优化:按依赖顺序执行\n */\n async executeBeforeInit(options: StartOptions): Promise<void> {\n const loadOrder = this.getLoadOrder();\n\n for (const pluginName of loadOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.beforeInit) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.beforeInit(filteredOptions, sandbox, pluginEventBus);\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 beforeInit 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 执行初始化钩子\n *\n * 优化:按依赖顺序执行,并更新插件状态\n */\n async executeInit(options: StartOptions, context: InitializationContext): Promise<void> {\n const loadOrder = this.getLoadOrder();\n\n for (const pluginName of loadOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.init) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.init(filteredOptions, context, sandbox, pluginEventBus);\n this.pluginStatus.set(plugin.name, 'initialized');\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 init 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 执行初始化后钩子\n *\n * 优化:按依赖顺序执行(逆序,确保依赖插件先执行)\n */\n async executeAfterInit(options: StartOptions, context: InitializationContext): Promise<void> {\n const loadOrder = this.getLoadOrder();\n // 逆序执行,确保依赖插件先执行\n const reverseOrder = [...loadOrder].reverse();\n\n for (const pluginName of reverseOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.afterInit) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.afterInit(filteredOptions, context, sandbox, pluginEventBus);\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 afterInit 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 获取插件状态\n *\n * @param name - 插件名称\n * @returns 插件状态\n */\n getPluginStatus(name: string): 'registered' | 'initialized' | 'destroyed' | 'loading' | undefined {\n return this.pluginStatus.get(name);\n }\n\n /**\n * 检查插件是否已加载\n *\n * @param name - 插件名称\n * @returns 是否已加载\n */\n isLoaded(name: string): boolean {\n return this.plugins.has(name);\n }\n\n /**\n * 获取已加载的插件列表\n *\n * @returns 插件名称数组\n */\n getLoadedPlugins(): string[] {\n return Array.from(this.plugins.keys());\n }\n\n /**\n * 获取所有插件状态\n *\n * @returns 插件状态映射\n */\n getAllPluginStatus(): Map<string, 'registered' | 'initialized' | 'destroyed' | 'loading'> {\n return new Map(this.pluginStatus);\n }\n\n /**\n * 获取插件沙箱\n *\n * @param name - 插件名称\n * @returns 插件沙箱或undefined\n */\n getSandbox(name: string): PluginSandbox | undefined {\n return this.sandboxes.get(name);\n }\n\n /**\n * 获取事件总线\n */\n getEventBus(): PluginEventBus {\n return pluginEventBus;\n }\n\n /**\n * 销毁所有插件\n */\n async destroyAll(): Promise<void> {\n for (const plugin of this.plugins.values()) {\n if (plugin.destroy) {\n try {\n await plugin.destroy();\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 destroy 钩子执行失败:`, error);\n }\n }\n }\n this.plugins.clear();\n }\n}\n\n/**\n * 默认插件管理器\n */\nexport const pluginManager = new PluginManager();\n\n// 导出插件相关类型和工具\nexport { PluginSandbox, PluginPermission, type PluginSandboxConfig } from './plugin/PluginSandbox';\nexport {\n PluginEventBus,\n pluginEventBus,\n type EventListener,\n type EventMetadata,\n type EventWrapper,\n type PluginEventBusConfig,\n} from './plugin/PluginEventBus';\n"],"names":["PluginEventBus","PluginManager","PluginPermission","PluginSandbox","pluginEventBus","pluginManager","register","plugin","plugins","has","name","console","warn","dependencies","length","missingDeps","filter","dep","join","set","pluginStatus","sandbox","sandboxes","strictMode","getLoadOrder","Array","from","values","sortedPlugins","sort","a","b","priorityA","priority","priorityB","visited","Set","visiting","result","visit","pluginName","add","get","delete","push","unregister","destroy","pluginLoaders","loadPlugin","options","url","response","fetch","ok","Error","status","pluginModule","json","default","modulePath","initialize","initContext","startOptions","initializePlugin","error","context","init","filteredOptions","filterConfig","unloadPlugin","force","dependents","p","includes","map","canHotLoad","registerLoader","loader","loadPluginByLoader","getAll","executeBeforeInit","loadOrder","beforeInit","executeInit","executeAfterInit","reverseOrder","reverse","afterInit","getPluginStatus","isLoaded","getLoadedPlugins","keys","getAllPluginStatus","Map","getSandbox","getEventBus","destroyAll","clear"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/plugin.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\nimport { PluginSandbox, type PluginSandboxConfig } from './plugin/PluginSandbox';\nimport { pluginEventBus, type PluginEventBus } from './plugin/PluginEventBus';\n\n/**\n * 插件接口\n */\nexport interface Plugin<TOption = unknown> {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 插件版本\n */\n version?: string;\n\n /**\n * 插件依赖列表(插件名称数组)\n * 优化:支持插件依赖管理\n */\n dependencies?: string[];\n\n /**\n * 插件优先级(数字越小优先级越高)\n * 优化:支持插件加载顺序控制\n */\n priority?: number;\n\n /**\n * 插件沙箱配置(用于权限控制)\n */\n sandbox?: PluginSandboxConfig;\n\n /**\n * 初始化前钩子\n */\n beforeInit?: (options: Partial<StartOptions>, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 初始化钩子\n */\n init?: (options: Partial<StartOptions>, context: InitializationContext, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 初始化后钩子\n */\n afterInit?: (options: Partial<StartOptions>, context: InitializationContext, sandbox: PluginSandbox, eventBus: PluginEventBus) => Promise<void> | void;\n\n /**\n * 销毁钩子\n */\n destroy?: () => Promise<void> | void;\n\n /**\n * 自定义属性\n */\n readonly option?: Readonly<TOption>;\n}\n\n/**\n * 插件加载选项\n */\nexport interface PluginLoadOptions {\n /**\n * 插件URL(用于动态加载)\n */\n url?: string;\n /**\n * 插件模块路径(用于动态导入)\n */\n modulePath?: string;\n /**\n * 是否立即初始化\n */\n initialize?: boolean;\n /**\n * 初始化上下文(如果立即初始化)\n */\n initContext?: InitializationContext;\n /**\n * 启动选项(如果立即初始化)\n */\n startOptions?: StartOptions;\n}\n\n/**\n * 插件管理器\n *\n * 优化:\n * 1. 支持插件依赖管理\n * 2. 支持插件优先级控制\n * 3. 支持插件生命周期管理\n * 4. 支持插件热插拔(动态加载/卸载)\n */\nexport class PluginManager {\n private plugins: Map<string, Plugin> = new Map();\n private sandboxes: Map<string, PluginSandbox> = new Map();\n private pluginStatus: Map<string, 'registered' | 'initialized' | 'destroyed' | 'loading'> = new Map();\n private pluginLoaders: Map<string, () => Promise<Plugin>> = new Map();\n\n /**\n * 注册插件\n *\n * 优化:检查插件依赖是否已注册\n */\n register(plugin: Plugin): void {\n if (this.plugins.has(plugin.name)) {\n console.warn(`插件 ${plugin.name} 已存在,将被覆盖`);\n }\n\n // 检查依赖是否已注册\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n const missingDeps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(dep)\n );\n if (missingDeps.length > 0) {\n console.warn(\n `插件 ${plugin.name} 的依赖未注册: ${missingDeps.join(', ')}`\n );\n }\n }\n\n this.plugins.set(plugin.name, plugin);\n this.pluginStatus.set(plugin.name, 'registered');\n\n // 创建插件沙箱\n if (plugin.sandbox) {\n const sandbox = new PluginSandbox({\n ...plugin.sandbox,\n name: plugin.name,\n });\n this.sandboxes.set(plugin.name, sandbox);\n } else {\n // 如果没有配置沙箱,创建默认沙箱(非严格模式)\n const sandbox = new PluginSandbox({\n strictMode: false,\n name: plugin.name,\n });\n this.sandboxes.set(plugin.name, sandbox);\n }\n }\n\n /**\n * 获取插件加载顺序(考虑依赖和优先级)\n *\n * @returns 插件名称数组,按加载顺序排列\n */\n private getLoadOrder(): string[] {\n const plugins = Array.from(this.plugins.values());\n\n // 按优先级排序\n const sortedPlugins = plugins.sort((a, b) => {\n const priorityA = a.priority ?? 100;\n const priorityB = b.priority ?? 100;\n return priorityA - priorityB;\n });\n\n // 构建依赖图并拓扑排序\n const visited = new Set<string>();\n const visiting = new Set<string>();\n const result: string[] = [];\n\n const visit = (pluginName: string): void => {\n if (visiting.has(pluginName)) {\n console.warn(`检测到循环依赖,涉及插件: ${pluginName}`);\n return;\n }\n if (visited.has(pluginName)) {\n return;\n }\n\n visiting.add(pluginName);\n const plugin = this.plugins.get(pluginName);\n if (plugin?.dependencies) {\n for (const dep of plugin.dependencies) {\n visit(dep);\n }\n }\n visiting.delete(pluginName);\n visited.add(pluginName);\n result.push(pluginName);\n };\n\n for (const plugin of sortedPlugins) {\n visit(plugin.name);\n }\n\n return result;\n }\n\n /**\n * 注销插件\n */\n unregister(name: string): void {\n const plugin = this.plugins.get(name);\n if (plugin && plugin.destroy) {\n plugin.destroy();\n }\n this.plugins.delete(name);\n this.sandboxes.delete(name);\n this.pluginStatus.delete(name);\n this.pluginLoaders.delete(name);\n }\n\n /**\n * 动态加载插件(热插拔)\n *\n * @param options - 插件加载选项\n * @returns 加载的插件\n */\n async loadPlugin(options: PluginLoadOptions): Promise<Plugin> {\n let plugin: Plugin;\n\n if (options.url) {\n // 从URL加载插件\n const response = await fetch(options.url);\n if (!response.ok) {\n throw new Error(`无法加载插件: ${options.url} (${response.status})`);\n }\n const pluginModule = await response.json();\n plugin = pluginModule.default || pluginModule;\n } else if (options.modulePath) {\n // 从模块路径动态导入\n const pluginModule = await import(/* @vite-ignore */ options.modulePath);\n plugin = pluginModule.default || pluginModule;\n } else {\n throw new Error('必须提供 url 或 modulePath');\n }\n\n if (!plugin || !plugin.name) {\n throw new Error('插件格式无效:必须包含 name 属性');\n }\n\n // 检查插件是否已加载\n if (this.plugins.has(plugin.name)) {\n throw new Error(`插件 ${plugin.name} 已加载`);\n }\n\n // 设置加载状态\n this.pluginStatus.set(plugin.name, 'loading');\n\n try {\n // 注册插件\n this.register(plugin);\n\n // 如果要求立即初始化\n if (options.initialize && options.initContext && options.startOptions) {\n await this.initializePlugin(plugin.name, options.startOptions, options.initContext);\n }\n\n return plugin;\n } catch (error) {\n this.pluginStatus.delete(plugin.name);\n throw error;\n }\n }\n\n /**\n * 初始化单个插件\n *\n * @param name - 插件名称\n * @param options - 启动选项\n * @param context - 初始化上下文\n */\n async initializePlugin(\n name: string,\n options: StartOptions,\n context: InitializationContext\n ): Promise<void> {\n const plugin = this.plugins.get(name);\n if (!plugin) {\n throw new Error(`插件 ${name} 未注册`);\n }\n\n const status = this.pluginStatus.get(name);\n if (status === 'initialized') {\n return; // 已经初始化\n }\n\n try {\n const sandbox = this.sandboxes.get(name);\n if (!sandbox) {\n throw new Error(`插件 ${name} 的沙箱未找到`);\n }\n\n // 执行初始化钩子\n if (plugin.init) {\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.init(filteredOptions, context, sandbox, pluginEventBus);\n }\n\n this.pluginStatus.set(name, 'initialized');\n } catch (error) {\n console.error(`插件 ${name} 初始化失败:`, error);\n throw error;\n }\n }\n\n /**\n * 卸载插件(热插拔)\n *\n * @param name - 插件名称\n * @param force - 是否强制卸载(即使有依赖)\n */\n async unloadPlugin(name: string, force: boolean = false): Promise<void> {\n const plugin = this.plugins.get(name);\n if (!plugin) {\n throw new Error(`插件 ${name} 未加载`);\n }\n\n // 检查是否有其他插件依赖此插件\n if (!force) {\n const dependents = Array.from(this.plugins.values()).filter(\n (p) => p.dependencies && p.dependencies.includes(name)\n );\n if (dependents.length > 0) {\n throw new Error(\n `无法卸载插件 ${name},以下插件依赖它: ${dependents.map((p) => p.name).join(', ')}`\n );\n }\n }\n\n // 执行销毁钩子\n if (plugin.destroy) {\n try {\n await plugin.destroy();\n } catch (error) {\n console.error(`插件 ${name} 的 destroy 钩子执行失败:`, error);\n }\n }\n\n // 从事件总线移除相关监听器(如果有)\n // 注意:事件总线是全局的,这里只移除插件相关的事件\n // 实际实现可能需要更细粒度的控制\n\n // 清理插件\n this.unregister(name);\n this.pluginStatus.set(name, 'destroyed');\n }\n\n /**\n * 检查插件是否可以热加载\n *\n * @param plugin - 插件\n * @returns 是否可以热加载\n */\n canHotLoad(plugin: Plugin): boolean {\n // 检查依赖是否都已加载\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n const missingDeps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(dep)\n );\n if (missingDeps.length > 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * 注册插件加载器(用于延迟加载)\n *\n * @param name - 插件名称\n * @param loader - 加载器函数\n */\n registerLoader(name: string, loader: () => Promise<Plugin>): void {\n this.pluginLoaders.set(name, loader);\n }\n\n /**\n * 使用加载器加载插件\n *\n * @param name - 插件名称\n * @param options - 加载选项\n * @returns 加载的插件\n */\n async loadPluginByLoader(\n name: string,\n options?: Omit<PluginLoadOptions, 'url' | 'modulePath'>\n ): Promise<Plugin> {\n const loader = this.pluginLoaders.get(name);\n if (!loader) {\n throw new Error(`插件 ${name} 的加载器未注册`);\n }\n\n const plugin = await loader();\n\n if (!plugin || !plugin.name) {\n throw new Error('插件格式无效:必须包含 name 属性');\n }\n\n if (plugin.name !== name) {\n throw new Error(`插件名称不匹配: 期望 ${name},实际 ${plugin.name}`);\n }\n\n // 检查插件是否已加载\n if (this.plugins.has(plugin.name)) {\n return this.plugins.get(plugin.name)!;\n }\n\n // 设置加载状态\n this.pluginStatus.set(plugin.name, 'loading');\n\n try {\n // 注册插件\n this.register(plugin);\n\n // 如果要求立即初始化\n if (options?.initialize && options.initContext && options.startOptions) {\n await this.initializePlugin(plugin.name, options.startOptions, options.initContext);\n }\n\n return plugin;\n } catch (error) {\n this.pluginStatus.delete(plugin.name);\n throw error;\n }\n }\n\n /**\n * 获取插件\n */\n get(name: string): Plugin | undefined {\n return this.plugins.get(name);\n }\n\n /**\n * 获取所有插件\n */\n getAll(): Plugin[] {\n return Array.from(this.plugins.values());\n }\n\n /**\n * 执行初始化前钩子\n *\n * 优化:按依赖顺序执行\n */\n async executeBeforeInit(options: StartOptions): Promise<void> {\n const loadOrder = this.getLoadOrder();\n\n for (const pluginName of loadOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.beforeInit) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.beforeInit(filteredOptions, sandbox, pluginEventBus);\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 beforeInit 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 执行初始化钩子\n *\n * 优化:按依赖顺序执行,并更新插件状态\n */\n async executeInit(options: StartOptions, context: InitializationContext): Promise<void> {\n const loadOrder = this.getLoadOrder();\n\n for (const pluginName of loadOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.init) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.init(filteredOptions, context, sandbox, pluginEventBus);\n this.pluginStatus.set(plugin.name, 'initialized');\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 init 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 执行初始化后钩子\n *\n * 优化:按依赖顺序执行(逆序,确保依赖插件先执行)\n */\n async executeAfterInit(options: StartOptions, context: InitializationContext): Promise<void> {\n const loadOrder = this.getLoadOrder();\n // 逆序执行,确保依赖插件先执行\n const reverseOrder = [...loadOrder].reverse();\n\n for (const pluginName of reverseOrder) {\n const plugin = this.plugins.get(pluginName);\n if (!plugin || !plugin.afterInit) {\n continue;\n }\n\n try {\n const sandbox = this.sandboxes.get(plugin.name);\n if (!sandbox) {\n console.warn(`插件 ${plugin.name} 的沙箱未找到`);\n continue;\n }\n\n // 根据沙箱配置过滤选项\n const filteredOptions = sandbox.filterConfig(options);\n await plugin.afterInit(filteredOptions, context, sandbox, pluginEventBus);\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 afterInit 钩子执行失败:`, error);\n }\n }\n }\n\n /**\n * 获取插件状态\n *\n * @param name - 插件名称\n * @returns 插件状态\n */\n getPluginStatus(name: string): 'registered' | 'initialized' | 'destroyed' | 'loading' | undefined {\n return this.pluginStatus.get(name);\n }\n\n /**\n * 检查插件是否已加载\n *\n * @param name - 插件名称\n * @returns 是否已加载\n */\n isLoaded(name: string): boolean {\n return this.plugins.has(name);\n }\n\n /**\n * 获取已加载的插件列表\n *\n * @returns 插件名称数组\n */\n getLoadedPlugins(): string[] {\n return Array.from(this.plugins.keys());\n }\n\n /**\n * 获取所有插件状态\n *\n * @returns 插件状态映射\n */\n getAllPluginStatus(): Map<string, 'registered' | 'initialized' | 'destroyed' | 'loading'> {\n return new Map(this.pluginStatus);\n }\n\n /**\n * 获取插件沙箱\n *\n * @param name - 插件名称\n * @returns 插件沙箱或undefined\n */\n getSandbox(name: string): PluginSandbox | undefined {\n return this.sandboxes.get(name);\n }\n\n /**\n * 获取事件总线\n */\n getEventBus(): PluginEventBus {\n return pluginEventBus;\n }\n\n /**\n * 销毁所有插件\n */\n async destroyAll(): Promise<void> {\n for (const plugin of this.plugins.values()) {\n if (plugin.destroy) {\n try {\n await plugin.destroy();\n } catch (error) {\n console.error(`插件 ${plugin.name} 的 destroy 钩子执行失败:`, error);\n }\n }\n }\n this.plugins.clear();\n }\n}\n\n/**\n * 默认插件管理器\n */\nexport const pluginManager = new PluginManager();\n\n// 导出插件相关类型和工具\nexport { PluginSandbox, PluginPermission, type PluginSandboxConfig } from './plugin/PluginSandbox';\nexport {\n PluginEventBus,\n pluginEventBus,\n type EventListener,\n type EventMetadata,\n type EventWrapper,\n type PluginEventBusConfig,\n} from './plugin/PluginEventBus';\n"],"names":["PluginSandbox","pluginEventBus","PluginManager","register","plugin","plugins","has","name","console","warn","dependencies","length","missingDeps","filter","dep","join","set","pluginStatus","sandbox","sandboxes","strictMode","getLoadOrder","Array","from","values","sortedPlugins","sort","a","b","priorityA","priority","priorityB","visited","Set","visiting","result","visit","pluginName","add","get","delete","push","unregister","destroy","pluginLoaders","loadPlugin","options","url","response","fetch","ok","Error","status","pluginModule","json","default","modulePath","initialize","initContext","startOptions","initializePlugin","error","context","init","filteredOptions","filterConfig","unloadPlugin","force","dependents","p","includes","map","canHotLoad","registerLoader","loader","loadPluginByLoader","getAll","executeBeforeInit","loadOrder","beforeInit","executeInit","executeAfterInit","reverseOrder","reverse","afterInit","getPluginStatus","isLoaded","getLoadedPlugins","keys","getAllPluginStatus","Map","getSandbox","getEventBus","destroyAll","clear","pluginManager","PluginPermission","PluginEventBus"],"mappings":"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"}
@@ -1 +0,0 @@
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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"}