@vlian/framework 1.2.61 → 1.2.62

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 (260) hide show
  1. package/dist/analytics.umd.js +1 -1
  2. package/dist/components/index.cjs +1 -1
  3. package/dist/components/index.d.ts +0 -4
  4. package/dist/components/index.js +1 -1
  5. package/dist/core-bak/Test.cjs +1 -0
  6. package/dist/core-bak/Test.d.ts +5 -0
  7. package/dist/core-bak/Test.js +1 -0
  8. package/dist/core-bak/app/AppContext.cjs +1 -0
  9. package/dist/core-bak/app/AppContext.d.ts +113 -0
  10. package/dist/core-bak/app/AppContext.js +1 -0
  11. package/dist/core-bak/app/AppContext.types.cjs +1 -0
  12. package/dist/core-bak/app/AppContext.types.d.ts +146 -0
  13. package/dist/core-bak/app/AppContext.types.js +1 -0
  14. package/dist/core-bak/app/BasicLayout.cjs +1 -0
  15. package/dist/core-bak/app/BasicLayout.d.ts +15 -0
  16. package/dist/core-bak/app/BasicLayout.js +1 -0
  17. package/dist/core-bak/app/DefaultApp.cjs +1 -0
  18. package/dist/core-bak/app/DefaultApp.d.ts +10 -0
  19. package/dist/core-bak/app/DefaultApp.js +1 -0
  20. package/dist/core-bak/app/index.cjs +1 -0
  21. package/dist/core-bak/app/index.d.ts +8 -0
  22. package/dist/core-bak/app/index.js +1 -0
  23. package/dist/core-bak/config/AppConfig.cjs +1 -0
  24. package/dist/core-bak/config/AppConfig.d.ts +88 -0
  25. package/dist/core-bak/config/AppConfig.js +1 -0
  26. package/dist/core-bak/config/ConfigLoader.cjs +1 -0
  27. package/dist/core-bak/config/ConfigLoader.d.ts +118 -0
  28. package/dist/core-bak/config/ConfigLoader.js +1 -0
  29. package/dist/core-bak/config/ConfigValidator.cjs +2 -0
  30. package/dist/core-bak/config/ConfigValidator.d.ts +84 -0
  31. package/dist/core-bak/config/ConfigValidator.js +2 -0
  32. package/dist/core-bak/config/index.cjs +1 -0
  33. package/dist/core-bak/config/index.d.ts +6 -0
  34. package/dist/core-bak/config/index.js +1 -0
  35. package/dist/core-bak/dev/DevTools.cjs +1 -0
  36. package/dist/core-bak/dev/DevTools.d.ts +16 -0
  37. package/dist/core-bak/dev/DevTools.js +1 -0
  38. package/dist/core-bak/error/ErrorBoundary.cjs +1 -0
  39. package/dist/core-bak/error/ErrorBoundary.d.ts +121 -0
  40. package/dist/core-bak/error/ErrorBoundary.js +1 -0
  41. package/dist/core-bak/error/ErrorHandler.cjs +1 -0
  42. package/dist/core-bak/error/ErrorHandler.d.ts +171 -0
  43. package/dist/core-bak/error/ErrorHandler.js +1 -0
  44. package/dist/core-bak/error/index.cjs +1 -0
  45. package/dist/core-bak/error/index.d.ts +7 -0
  46. package/dist/core-bak/error/index.js +1 -0
  47. package/dist/core-bak/event/AppEventBus.cjs +1 -0
  48. package/dist/core-bak/event/AppEventBus.d.ts +178 -0
  49. package/dist/core-bak/event/AppEventBus.js +1 -0
  50. package/dist/core-bak/event/frameworkEvents.cjs +1 -0
  51. package/dist/core-bak/event/frameworkEvents.d.ts +69 -0
  52. package/dist/core-bak/event/frameworkEvents.js +1 -0
  53. package/dist/core-bak/event/hooks.cjs +1 -0
  54. package/dist/core-bak/event/hooks.d.ts +57 -0
  55. package/dist/core-bak/event/hooks.js +1 -0
  56. package/dist/core-bak/event/index.cjs +1 -0
  57. package/dist/core-bak/event/index.d.ts +10 -0
  58. package/dist/core-bak/event/index.js +1 -0
  59. package/dist/core-bak/event/types.cjs +1 -0
  60. package/dist/core-bak/event/types.d.ts +269 -0
  61. package/dist/core-bak/event/types.js +1 -0
  62. package/dist/core-bak/event/useEventBus.cjs +1 -0
  63. package/dist/core-bak/event/useEventBus.d.ts +28 -0
  64. package/dist/core-bak/event/useEventBus.js +1 -0
  65. package/dist/core-bak/index.cjs +1 -0
  66. package/dist/core-bak/index.d.ts +54 -0
  67. package/dist/core-bak/index.js +1 -0
  68. package/dist/core-bak/initialization/InitializationErrorThrower.cjs +1 -0
  69. package/dist/core-bak/initialization/InitializationErrorThrower.d.ts +7 -0
  70. package/dist/core-bak/initialization/InitializationErrorThrower.js +1 -0
  71. package/dist/core-bak/initialization/index.cjs +1 -0
  72. package/dist/core-bak/initialization/index.d.ts +7 -0
  73. package/dist/core-bak/initialization/index.js +1 -0
  74. package/dist/core-bak/initialization/initialization.cjs +1 -0
  75. package/dist/core-bak/initialization/initialization.d.ts +69 -0
  76. package/dist/core-bak/initialization/initialization.js +1 -0
  77. package/dist/core-bak/initialization/initializationErrorState.cjs +1 -0
  78. package/dist/core-bak/initialization/initializationErrorState.d.ts +35 -0
  79. package/dist/core-bak/initialization/initializationErrorState.js +1 -0
  80. package/dist/core-bak/kernel/defaultAdapters.cjs +1 -0
  81. package/dist/core-bak/kernel/defaultAdapters.d.ts +2 -0
  82. package/dist/core-bak/kernel/defaultAdapters.js +1 -0
  83. package/dist/core-bak/kernel/errors.cjs +1 -0
  84. package/dist/core-bak/kernel/errors.d.ts +18 -0
  85. package/dist/core-bak/kernel/errors.js +1 -0
  86. package/dist/core-bak/kernel/index.cjs +1 -0
  87. package/dist/core-bak/kernel/index.d.ts +3 -0
  88. package/dist/core-bak/kernel/index.js +1 -0
  89. package/dist/core-bak/kernel/startKernel.cjs +1 -0
  90. package/dist/core-bak/kernel/startKernel.d.ts +2 -0
  91. package/dist/core-bak/kernel/startKernel.js +1 -0
  92. package/dist/core-bak/kernel/types.cjs +1 -0
  93. package/dist/core-bak/kernel/types.d.ts +114 -0
  94. package/dist/core-bak/kernel/types.js +1 -0
  95. package/dist/core-bak/middleware.cjs +1 -0
  96. package/dist/core-bak/middleware.d.ts +36 -0
  97. package/dist/core-bak/middleware.js +1 -0
  98. package/dist/core-bak/plugin/PluginEventBus.cjs +1 -0
  99. package/dist/core-bak/plugin/PluginEventBus.d.ts +169 -0
  100. package/dist/core-bak/plugin/PluginEventBus.js +1 -0
  101. package/dist/core-bak/plugin/PluginSandbox.cjs +1 -0
  102. package/dist/core-bak/plugin/PluginSandbox.d.ts +101 -0
  103. package/dist/core-bak/plugin/PluginSandbox.js +1 -0
  104. package/dist/core-bak/plugin.cjs +1 -0
  105. package/dist/core-bak/plugin.d.ts +224 -0
  106. package/dist/core-bak/plugin.js +1 -0
  107. package/dist/core-bak/router/RouterManager.cjs +1 -0
  108. package/dist/core-bak/router/RouterManager.d.ts +87 -0
  109. package/dist/core-bak/router/RouterManager.js +1 -0
  110. package/dist/core-bak/router/adapter/AdapterManager.cjs +1 -0
  111. package/dist/core-bak/router/adapter/AdapterManager.d.ts +94 -0
  112. package/dist/core-bak/router/adapter/AdapterManager.js +1 -0
  113. package/dist/core-bak/router/adapter/index.cjs +1 -0
  114. package/dist/core-bak/router/adapter/index.d.ts +6 -0
  115. package/dist/core-bak/router/adapter/index.js +1 -0
  116. package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.cjs +1 -0
  117. package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.d.ts +43 -0
  118. package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.js +1 -0
  119. package/dist/core-bak/router/adapter/react-router/index.cjs +1 -0
  120. package/dist/core-bak/router/adapter/react-router/index.d.ts +4 -0
  121. package/dist/core-bak/router/adapter/react-router/index.js +1 -0
  122. package/dist/core-bak/router/adapter/types.cjs +1 -0
  123. package/dist/core-bak/router/adapter/types.d.ts +111 -0
  124. package/dist/core-bak/router/adapter/types.js +1 -0
  125. package/dist/core-bak/router/dev/RouterDevTools.cjs +1 -0
  126. package/dist/core-bak/router/dev/RouterDevTools.d.ts +5 -0
  127. package/dist/core-bak/router/dev/RouterDevTools.js +1 -0
  128. package/dist/core-bak/router/dev/index.cjs +1 -0
  129. package/dist/core-bak/router/dev/index.d.ts +4 -0
  130. package/dist/core-bak/router/dev/index.js +1 -0
  131. package/dist/core-bak/router/dynamic/DynamicRouteManager.cjs +1 -0
  132. package/dist/core-bak/router/dynamic/DynamicRouteManager.d.ts +71 -0
  133. package/dist/core-bak/router/dynamic/DynamicRouteManager.js +1 -0
  134. package/dist/core-bak/router/dynamic/index.cjs +1 -0
  135. package/dist/core-bak/router/dynamic/index.d.ts +4 -0
  136. package/dist/core-bak/router/dynamic/index.js +1 -0
  137. package/dist/core-bak/router/errors/RouterError.cjs +1 -0
  138. package/dist/core-bak/router/errors/RouterError.d.ts +48 -0
  139. package/dist/core-bak/router/errors/RouterError.js +1 -0
  140. package/dist/core-bak/router/errors/index.cjs +1 -0
  141. package/dist/core-bak/router/errors/index.d.ts +4 -0
  142. package/dist/core-bak/router/errors/index.js +1 -0
  143. package/dist/core-bak/router/index.cjs +1 -0
  144. package/dist/core-bak/router/index.d.ts +16 -0
  145. package/dist/core-bak/router/index.js +1 -0
  146. package/dist/core-bak/router/lifecycle/RouterLifecycleManager.cjs +1 -0
  147. package/dist/core-bak/router/lifecycle/RouterLifecycleManager.d.ts +56 -0
  148. package/dist/core-bak/router/lifecycle/RouterLifecycleManager.js +1 -0
  149. package/dist/core-bak/router/lifecycle/index.cjs +1 -0
  150. package/dist/core-bak/router/lifecycle/index.d.ts +4 -0
  151. package/dist/core-bak/router/lifecycle/index.js +1 -0
  152. package/dist/core-bak/router/middleware/RouterMiddlewareManager.cjs +1 -0
  153. package/dist/core-bak/router/middleware/RouterMiddlewareManager.d.ts +61 -0
  154. package/dist/core-bak/router/middleware/RouterMiddlewareManager.js +1 -0
  155. package/dist/core-bak/router/middleware/auth.cjs +1 -0
  156. package/dist/core-bak/router/middleware/auth.d.ts +54 -0
  157. package/dist/core-bak/router/middleware/auth.js +1 -0
  158. package/dist/core-bak/router/middleware/index.cjs +1 -0
  159. package/dist/core-bak/router/middleware/index.d.ts +6 -0
  160. package/dist/core-bak/router/middleware/index.js +1 -0
  161. package/dist/core-bak/router/middleware/types.cjs +1 -0
  162. package/dist/core-bak/router/middleware/types.d.ts +82 -0
  163. package/dist/core-bak/router/middleware/types.js +1 -0
  164. package/dist/core-bak/router/monitoring/RouterMonitoring.cjs +1 -0
  165. package/dist/core-bak/router/monitoring/RouterMonitoring.d.ts +134 -0
  166. package/dist/core-bak/router/monitoring/RouterMonitoring.js +1 -0
  167. package/dist/core-bak/router/monitoring/index.cjs +1 -0
  168. package/dist/core-bak/router/monitoring/index.d.ts +4 -0
  169. package/dist/core-bak/router/monitoring/index.js +1 -0
  170. package/dist/core-bak/router/navigation/RouterNavigation.cjs +1 -0
  171. package/dist/core-bak/router/navigation/RouterNavigation.d.ts +43 -0
  172. package/dist/core-bak/router/navigation/RouterNavigation.js +1 -0
  173. package/dist/core-bak/router/navigation/index.cjs +1 -0
  174. package/dist/core-bak/router/navigation/index.d.ts +4 -0
  175. package/dist/core-bak/router/navigation/index.js +1 -0
  176. package/dist/core-bak/router/performance/RouteCache.cjs +1 -0
  177. package/dist/core-bak/router/performance/RouteCache.d.ts +113 -0
  178. package/dist/core-bak/router/performance/RouteCache.js +1 -0
  179. package/dist/core-bak/router/performance/RoutePreloader.cjs +1 -0
  180. package/dist/core-bak/router/performance/RoutePreloader.d.ts +111 -0
  181. package/dist/core-bak/router/performance/RoutePreloader.js +1 -0
  182. package/dist/core-bak/router/performance/index.cjs +1 -0
  183. package/dist/core-bak/router/performance/index.d.ts +5 -0
  184. package/dist/core-bak/router/performance/index.js +1 -0
  185. package/dist/core-bak/router/plugin/RouterPluginManager.cjs +1 -0
  186. package/dist/core-bak/router/plugin/RouterPluginManager.d.ts +74 -0
  187. package/dist/core-bak/router/plugin/RouterPluginManager.js +1 -0
  188. package/dist/core-bak/router/plugin/index.cjs +1 -0
  189. package/dist/core-bak/router/plugin/index.d.ts +5 -0
  190. package/dist/core-bak/router/plugin/index.js +1 -0
  191. package/dist/core-bak/router/plugin/types.cjs +1 -0
  192. package/dist/core-bak/router/plugin/types.d.ts +153 -0
  193. package/dist/core-bak/router/plugin/types.js +1 -0
  194. package/dist/core-bak/router/types.cjs +1 -0
  195. package/dist/core-bak/router/types.d.ts +464 -0
  196. package/dist/core-bak/router/types.js +1 -0
  197. package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -0
  198. package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +2 -0
  199. package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.js +1 -0
  200. package/dist/core-bak/router/utils/adapters/react-router/transform.cjs +1 -0
  201. package/dist/core-bak/router/utils/adapters/react-router/transform.d.ts +5 -0
  202. package/dist/core-bak/router/utils/adapters/react-router/transform.js +1 -0
  203. package/dist/core-bak/router/utils/transform.cjs +1 -0
  204. package/dist/core-bak/router/utils/transform.d.ts +348 -0
  205. package/dist/core-bak/router/utils/transform.js +1 -0
  206. package/dist/core-bak/router/validation/RouterConfigValidator.cjs +2 -0
  207. package/dist/core-bak/router/validation/RouterConfigValidator.d.ts +121 -0
  208. package/dist/core-bak/router/validation/RouterConfigValidator.js +2 -0
  209. package/dist/core-bak/router/validation/index.cjs +1 -0
  210. package/dist/core-bak/router/validation/index.d.ts +5 -0
  211. package/dist/core-bak/router/validation/index.js +1 -0
  212. package/dist/core-bak/router/validation/schema.cjs +1 -0
  213. package/dist/core-bak/router/validation/schema.d.ts +180 -0
  214. package/dist/core-bak/router/validation/schema.js +1 -0
  215. package/dist/core-bak/router/version/RouteVersionManager.cjs +1 -0
  216. package/dist/core-bak/router/version/RouteVersionManager.d.ts +124 -0
  217. package/dist/core-bak/router/version/RouteVersionManager.js +1 -0
  218. package/dist/core-bak/router/version/index.cjs +1 -0
  219. package/dist/core-bak/router/version/index.d.ts +4 -0
  220. package/dist/core-bak/router/version/index.js +1 -0
  221. package/dist/core-bak/splash/SplashScreen.cjs +1 -0
  222. package/dist/core-bak/splash/SplashScreen.d.ts +14 -0
  223. package/dist/core-bak/splash/SplashScreen.js +1 -0
  224. package/dist/core-bak/splash/index.cjs +1 -0
  225. package/dist/core-bak/splash/index.d.ts +5 -0
  226. package/dist/core-bak/splash/index.js +1 -0
  227. package/dist/core-bak/splash/splashScreenUtils.cjs +1 -0
  228. package/dist/core-bak/splash/splashScreenUtils.d.ts +7 -0
  229. package/dist/core-bak/splash/splashScreenUtils.js +1 -0
  230. package/dist/core-bak/startup/AppInstance.cjs +1 -0
  231. package/dist/core-bak/startup/AppInstance.d.ts +138 -0
  232. package/dist/core-bak/startup/AppInstance.js +1 -0
  233. package/dist/core-bak/startup/environment.cjs +1 -0
  234. package/dist/core-bak/startup/environment.d.ts +87 -0
  235. package/dist/core-bak/startup/environment.js +1 -0
  236. package/dist/core-bak/startup/index.cjs +1 -0
  237. package/dist/core-bak/startup/index.d.ts +7 -0
  238. package/dist/core-bak/startup/index.js +1 -0
  239. package/dist/core-bak/startup/initializeServices.cjs +1 -0
  240. package/dist/core-bak/startup/initializeServices.d.ts +68 -0
  241. package/dist/core-bak/startup/initializeServices.js +1 -0
  242. package/dist/core-bak/startup/performanceTracker.cjs +1 -0
  243. package/dist/core-bak/startup/performanceTracker.d.ts +104 -0
  244. package/dist/core-bak/startup/performanceTracker.js +1 -0
  245. package/dist/core-bak/startup/renderApp.cjs +1 -0
  246. package/dist/core-bak/startup/renderApp.d.ts +70 -0
  247. package/dist/core-bak/startup/renderApp.js +1 -0
  248. package/dist/core-bak/startup/startApp.cjs +1 -0
  249. package/dist/core-bak/startup/startApp.d.ts +14 -0
  250. package/dist/core-bak/startup/startApp.js +1 -0
  251. package/dist/core-bak/types.cjs +1 -0
  252. package/dist/core-bak/types.d.ts +501 -0
  253. package/dist/core-bak/types.js +1 -0
  254. package/dist/index.cjs +1 -1
  255. package/dist/index.d.ts +0 -1
  256. package/dist/index.js +1 -1
  257. package/dist/index.umd.js +31 -246
  258. package/dist/kernel/types.d.ts +46 -3
  259. package/dist/state.umd.js +1 -1
  260. package/package.json +1 -11
@@ -0,0 +1,178 @@
1
+ /**
2
+ * 应用级事件总线
3
+ * 提供高性能、类型安全、可观测的事件通信能力
4
+ */
5
+ import type { EventListener, EventMetadata, EventMiddleware, EventListenerOptions, AppEventBusConfig, EventStats } from './types';
6
+ /**
7
+ * 事件历史记录
8
+ */
9
+ interface EventHistoryRecord {
10
+ event: string;
11
+ data: unknown;
12
+ metadata: EventMetadata;
13
+ executionTime?: number;
14
+ }
15
+ /**
16
+ * 应用事件总线
17
+ */
18
+ export declare class AppEventBus {
19
+ /**
20
+ * 事件监听器映射表
21
+ * 使用 Map + Set 结构提高性能
22
+ */
23
+ private listeners;
24
+ /**
25
+ * 事件历史记录
26
+ */
27
+ private eventHistory;
28
+ /**
29
+ * 事件中间件列表
30
+ */
31
+ private middlewares;
32
+ /**
33
+ * 事件统计信息
34
+ */
35
+ private stats;
36
+ /**
37
+ * 配置
38
+ */
39
+ private config;
40
+ /**
41
+ * 事件计数器(用于生成唯一事件ID)
42
+ */
43
+ private eventCounter;
44
+ /**
45
+ * 监听器ID计数器
46
+ */
47
+ private listenerIdCounter;
48
+ constructor(config?: AppEventBusConfig);
49
+ /**
50
+ * 订阅事件
51
+ *
52
+ * @param event - 事件名称
53
+ * @param listener - 事件监听器
54
+ * @param options - 监听器选项
55
+ * @returns 取消订阅函数
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const unsubscribe = eventBus.on('user:login', (data, metadata) => {
60
+ * console.log('用户登录:', data);
61
+ * });
62
+ *
63
+ * // 取消订阅
64
+ * unsubscribe();
65
+ * ```
66
+ */
67
+ on<T = unknown>(event: string, listener: EventListener<T>, options?: EventListenerOptions): () => void;
68
+ /**
69
+ * 取消订阅事件
70
+ *
71
+ * @param event - 事件名称
72
+ * @param listener - 事件监听器(可选,不提供则取消该事件的所有监听器)
73
+ */
74
+ off<T = unknown>(event: string, listener?: EventListener<T>): void;
75
+ /**
76
+ * 一次性订阅事件
77
+ *
78
+ * @param event - 事件名称
79
+ * @param listener - 事件监听器
80
+ * @param options - 监听器选项
81
+ */
82
+ once<T = unknown>(event: string, listener: EventListener<T>, options?: Omit<EventListenerOptions, 'once'>): () => void;
83
+ /**
84
+ * 发布事件
85
+ *
86
+ * @param event - 事件名称
87
+ * @param data - 事件数据
88
+ * @param metadata - 事件元数据(可选)
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * await eventBus.emit('user:login', {
93
+ * userId: '123',
94
+ * username: 'john',
95
+ * });
96
+ * ```
97
+ */
98
+ emit<T = unknown>(event: string, data?: T, metadata?: Partial<EventMetadata>): Promise<void>;
99
+ /**
100
+ * 同步发布事件(不等待异步监听器完成)
101
+ *
102
+ * @param event - 事件名称
103
+ * @param data - 事件数据
104
+ * @param metadata - 事件元数据(可选)
105
+ */
106
+ emitSync<T = unknown>(event: string, data?: T, metadata?: Partial<EventMetadata>): void;
107
+ /**
108
+ * 注册事件中间件
109
+ *
110
+ * @param middleware - 中间件函数
111
+ * @returns 取消注册函数
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * const unsubscribe = eventBus.use((event, data, metadata, next) => {
116
+ * console.log('事件触发:', event);
117
+ * return next();
118
+ * });
119
+ * ```
120
+ */
121
+ use(middleware: EventMiddleware): () => void;
122
+ /**
123
+ * 清空所有事件监听器
124
+ */
125
+ clear(): void;
126
+ /**
127
+ * 清空事件历史记录
128
+ */
129
+ clearHistory(): void;
130
+ /**
131
+ * 获取事件监听器数量
132
+ *
133
+ * @param event - 事件名称(可选,不提供则返回所有事件的监听器总数)
134
+ */
135
+ listenerCount(event?: string): number;
136
+ /**
137
+ * 获取所有事件名称
138
+ */
139
+ eventNames(): string[];
140
+ /**
141
+ * 获取事件历史记录
142
+ *
143
+ * @param event - 事件名称(可选,如果提供则只返回该事件的历史)
144
+ * @param limit - 限制返回的记录数
145
+ */
146
+ getEventHistory(event?: string, limit?: number): EventHistoryRecord[];
147
+ /**
148
+ * 获取事件统计信息
149
+ *
150
+ * @param event - 事件名称(可选,不提供则返回所有事件的统计)
151
+ */
152
+ getStats(event?: string): EventStats | Map<string, EventStats>;
153
+ /**
154
+ * 获取配置
155
+ */
156
+ getConfig(): AppEventBusConfig;
157
+ /**
158
+ * 更新配置
159
+ */
160
+ updateConfig(config: Partial<AppEventBusConfig>): void;
161
+ /**
162
+ * 销毁事件总线(清理所有资源)
163
+ */
164
+ destroy(): void;
165
+ /**
166
+ * 获取完整事件名称(包含命名空间前缀)
167
+ */
168
+ private getFullEventName;
169
+ /**
170
+ * 记录事件历史
171
+ */
172
+ private recordEventHistory;
173
+ /**
174
+ * 更新统计信息
175
+ */
176
+ private updateStats;
177
+ }
178
+ export {};
@@ -0,0 +1 @@
1
+ function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{logger}from"@vlian/logger";export class AppEventBus{on(event,listener,options={}){const fullEventName=this.getFullEventName(event);const listenerId=Symbol(`listener_${++this.listenerIdCounter}`);const listenerWithOptions={listener:listener,options:{priority:options.priority??100,once:options.once??false,namespace:options.namespace??this.config.namespacePrefix,async:options.async??true},id:listenerId};if(!this.listeners.has(fullEventName)){this.listeners.set(fullEventName,new Set)}const listeners=this.listeners.get(fullEventName);listeners.add(listenerWithOptions);const sortedListeners=Array.from(listeners).sort((a,b)=>a.options.priority-b.options.priority);this.listeners.set(fullEventName,new Set(sortedListeners));return()=>{const currentListeners=this.listeners.get(fullEventName);if(currentListeners){currentListeners.delete(listenerWithOptions);if(currentListeners.size===0){this.listeners.delete(fullEventName)}}}}off(event,listener){const fullEventName=this.getFullEventName(event);const listeners=this.listeners.get(fullEventName);if(!listeners){return}if(listener){for(const item of listeners){if(item.listener===listener){listeners.delete(item);break}}}else{listeners.clear()}if(listeners.size===0){this.listeners.delete(fullEventName)}}once(event,listener,options){return this.on(event,listener,{...options,once:true})}async emit(event,data,metadata){const fullEventName=this.getFullEventName(event);const startTime=this.config.enablePerformanceMonitoring?performance.now():0;if(this.config.enableValidation&&!this.config.validator(fullEventName,data)){logger.warn(`事件 ${fullEventName} 验证失败,已忽略`);return}if(this.config.enableSecurityMode&&metadata?.source){if(!this.config.allowedSources.includes(metadata.source)){logger.warn(`事件 ${fullEventName} 的来源 ${metadata.source} 不在白名单中,已忽略`);return}}const eventMetadata={source:metadata?.source,timestamp:metadata?.timestamp??Date.now(),eventId:metadata?.eventId??`event_${++this.eventCounter}`,priority:metadata?.priority??0,instanceId:metadata?.instanceId??this.config.instanceId,namespace:metadata?.namespace??this.config.namespacePrefix,...metadata};const eventWrapper={data:data,metadata:eventMetadata};if(this.middlewares.length>0){let middlewareIndex=0;let nextCalled=false;const executeMiddleware=async()=>{if(middlewareIndex<this.middlewares.length){nextCalled=false;const currentIndex=middlewareIndex;const middleware=this.middlewares[middlewareIndex++];const next=async()=>{nextCalled=true;if(currentIndex<this.middlewares.length-1){await executeMiddleware()}};await Promise.resolve(middleware(fullEventName,data,eventMetadata,next));if(!nextCalled){return}}};await executeMiddleware();if(!nextCalled&&this.middlewares.length>0){return}}const listeners=this.listeners.get(fullEventName);if(this.config.enableTracking){const executionTime=this.config.enablePerformanceMonitoring?performance.now()-startTime:undefined;this.recordEventHistory(fullEventName,data,eventMetadata,executionTime)}if(!listeners||listeners.size===0){this.updateStats(fullEventName,0);return}const executionPromises=[];const listenersToRemove=[];for(const listenerWithOptions of listeners){const executeListener=async()=>{try{if(listenerWithOptions.options.async){await Promise.resolve(listenerWithOptions.listener(eventWrapper.data,eventWrapper.metadata))}else{listenerWithOptions.listener(eventWrapper.data,eventWrapper.metadata)}if(listenerWithOptions.options.once){listenersToRemove.push(listenerWithOptions)}}catch(error){logger.error(`事件 ${fullEventName} 的监听器执行失败:`,error)}};executionPromises.push(executeListener())}await Promise.allSettled(executionPromises);for(const listenerToRemove of listenersToRemove){listeners.delete(listenerToRemove)}if(listeners.size===0){this.listeners.delete(fullEventName)}const executionTime=this.config.enablePerformanceMonitoring?performance.now()-startTime:0;this.updateStats(fullEventName,executionTime,listeners.size)}emitSync(event,data,metadata){this.emit(event,data,metadata).catch(error=>{logger.error(`同步发布事件 ${event} 失败:`,error)})}use(middleware){this.middlewares.push(middleware);return()=>{const index=this.middlewares.indexOf(middleware);if(index>-1){this.middlewares.splice(index,1)}}}clear(){this.listeners.clear()}clearHistory(){this.eventHistory=[]}listenerCount(event){if(event){const fullEventName=this.getFullEventName(event);return this.listeners.get(fullEventName)?.size||0}let count=0;for(const listeners of this.listeners.values()){count+=listeners.size}return count}eventNames(){return Array.from(this.listeners.keys())}getEventHistory(event,limit){if(!this.config.enableTracking){return[]}let history=this.eventHistory;if(event){const fullEventName=this.getFullEventName(event);history=history.filter(h=>h.event===fullEventName)}if(limit){history=history.slice(-limit)}return[...history]}getStats(event){if(event){const fullEventName=this.getFullEventName(event);return this.stats.get(fullEventName)||{event:fullEventName,count:0,avgExecutionTime:0,listenerCount:0,lastTriggered:0}}return new Map(this.stats)}getConfig(){return{...this.config}}updateConfig(config){this.config={...this.config,...config}}destroy(){this.clear();this.clearHistory();this.middlewares=[];this.stats.clear()}getFullEventName(event){if(this.config.namespacePrefix){return`${this.config.namespacePrefix}${event}`}return event}recordEventHistory(event,data,metadata,executionTime){this.eventHistory.push({event,data,metadata,executionTime});if(this.eventHistory.length>this.config.maxHistorySize){this.eventHistory.shift()}}updateStats(event,executionTime,listenerCount=0){if(!this.config.enablePerformanceMonitoring){return}const existingStats=this.stats.get(event);if(existingStats){const totalTime=existingStats.avgExecutionTime*existingStats.count+executionTime;const newCount=existingStats.count+1;this.stats.set(event,{...existingStats,count:newCount,avgExecutionTime:totalTime/newCount,listenerCount,lastTriggered:Date.now()})}else{this.stats.set(event,{event,count:1,avgExecutionTime:executionTime,listenerCount,lastTriggered:Date.now()})}}constructor(config={}){_define_property(this,"listeners",new Map);_define_property(this,"eventHistory",[]);_define_property(this,"middlewares",[]);_define_property(this,"stats",new Map);_define_property(this,"config",void 0);_define_property(this,"eventCounter",0);_define_property(this,"listenerIdCounter",0);this.config={enableTracking:config.enableTracking??process.env.NODE_ENV==="development",maxHistorySize:config.maxHistorySize??100,enableValidation:config.enableValidation??false,validator:config.validator??(()=>true),enablePerformanceMonitoring:config.enablePerformanceMonitoring??process.env.NODE_ENV==="development",namespacePrefix:config.namespacePrefix??"",instanceId:config.instanceId,enableSecurityMode:config.enableSecurityMode??false,allowedSources:config.allowedSources??[]}}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"FrameworkEventManager",{enumerable:true,get:function(){return FrameworkEventManager}});const _types=require("./types");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let FrameworkEventManager=class FrameworkEventManager{emitAppStart(instanceId){this.eventBus.emitSync(_types.FrameworkEventType.APP_START,{instanceId})}emitAppStarted(instanceId,duration){this.eventBus.emitSync(_types.FrameworkEventType.APP_STARTED,{instanceId,duration})}emitAppInitStart(instanceId){this.eventBus.emitSync(_types.FrameworkEventType.APP_INIT_START,{instanceId})}emitAppInitComplete(instanceId,context,duration){this.eventBus.emitSync(_types.FrameworkEventType.APP_INIT_COMPLETE,{instanceId,context,duration})}emitAppInitError(instanceId,error){this.eventBus.emitSync(_types.FrameworkEventType.APP_INIT_ERROR,{instanceId,error})}emitAppRenderStart(instanceId){this.eventBus.emitSync(_types.FrameworkEventType.APP_RENDER_START,{instanceId})}emitAppRenderComplete(instanceId,duration){this.eventBus.emitSync(_types.FrameworkEventType.APP_RENDER_COMPLETE,{instanceId,duration})}emitRouteChange(from,to,params){this.eventBus.emitSync(_types.FrameworkEventType.ROUTE_CHANGE,{from,to,params})}emitRouteNavigateStart(to,options){this.eventBus.emitSync(_types.FrameworkEventType.ROUTE_NAVIGATE_START,{to,options})}emitRouteNavigateComplete(to,duration){this.eventBus.emitSync(_types.FrameworkEventType.ROUTE_NAVIGATE_COMPLETE,{to,duration})}emitErrorOccurred(error,context){this.eventBus.emitSync(_types.FrameworkEventType.ERROR_OCCURRED,{error,context})}emitInstanceCreated(instanceId){this.eventBus.emitSync(_types.FrameworkEventType.INSTANCE_CREATED,{instanceId})}emitInstanceDestroyed(instanceId){this.eventBus.emitSync(_types.FrameworkEventType.INSTANCE_DESTROYED,{instanceId})}emitPerformanceUpdate(metrics){this.eventBus.emitSync(_types.FrameworkEventType.PERFORMANCE_UPDATE,{metrics})}constructor(eventBus){_define_property(this,"eventBus",void 0);this.eventBus=eventBus}};
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 框架生命周期事件集成
3
+ * 自动在框架关键节点触发事件
4
+ */
5
+ import type { AppEventBus } from './AppEventBus';
6
+ import type { InitializationContext } from '../initialization';
7
+ /**
8
+ * 框架事件管理器
9
+ */
10
+ export declare class FrameworkEventManager {
11
+ private eventBus;
12
+ constructor(eventBus: AppEventBus);
13
+ /**
14
+ * 触发应用启动事件
15
+ */
16
+ emitAppStart(instanceId?: string): void;
17
+ /**
18
+ * 触发应用启动完成事件
19
+ */
20
+ emitAppStarted(instanceId: string, duration: number): void;
21
+ /**
22
+ * 触发应用初始化开始事件
23
+ */
24
+ emitAppInitStart(instanceId?: string): void;
25
+ /**
26
+ * 触发应用初始化完成事件
27
+ */
28
+ emitAppInitComplete(instanceId: string, context: InitializationContext, duration: number): void;
29
+ /**
30
+ * 触发应用初始化错误事件
31
+ */
32
+ emitAppInitError(instanceId: string, error: Error): void;
33
+ /**
34
+ * 触发应用渲染开始事件
35
+ */
36
+ emitAppRenderStart(instanceId?: string): void;
37
+ /**
38
+ * 触发应用渲染完成事件
39
+ */
40
+ emitAppRenderComplete(instanceId: string, duration: number): void;
41
+ /**
42
+ * 触发路由变化事件
43
+ */
44
+ emitRouteChange(from: string, to: string, params?: Record<string, unknown>): void;
45
+ /**
46
+ * 触发路由导航开始事件
47
+ */
48
+ emitRouteNavigateStart(to: string, options?: unknown): void;
49
+ /**
50
+ * 触发路由导航完成事件
51
+ */
52
+ emitRouteNavigateComplete(to: string, duration: number): void;
53
+ /**
54
+ * 触发错误发生事件
55
+ */
56
+ emitErrorOccurred(error: Error, context?: unknown): void;
57
+ /**
58
+ * 触发实例创建事件
59
+ */
60
+ emitInstanceCreated(instanceId: string): void;
61
+ /**
62
+ * 触发实例销毁事件
63
+ */
64
+ emitInstanceDestroyed(instanceId: string): void;
65
+ /**
66
+ * 触发性能指标更新事件
67
+ */
68
+ emitPerformanceUpdate(metrics: Record<string, number>): void;
69
+ }
@@ -0,0 +1 @@
1
+ function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{FrameworkEventType}from"./types";export class FrameworkEventManager{emitAppStart(instanceId){this.eventBus.emitSync(FrameworkEventType.APP_START,{instanceId})}emitAppStarted(instanceId,duration){this.eventBus.emitSync(FrameworkEventType.APP_STARTED,{instanceId,duration})}emitAppInitStart(instanceId){this.eventBus.emitSync(FrameworkEventType.APP_INIT_START,{instanceId})}emitAppInitComplete(instanceId,context,duration){this.eventBus.emitSync(FrameworkEventType.APP_INIT_COMPLETE,{instanceId,context,duration})}emitAppInitError(instanceId,error){this.eventBus.emitSync(FrameworkEventType.APP_INIT_ERROR,{instanceId,error})}emitAppRenderStart(instanceId){this.eventBus.emitSync(FrameworkEventType.APP_RENDER_START,{instanceId})}emitAppRenderComplete(instanceId,duration){this.eventBus.emitSync(FrameworkEventType.APP_RENDER_COMPLETE,{instanceId,duration})}emitRouteChange(from,to,params){this.eventBus.emitSync(FrameworkEventType.ROUTE_CHANGE,{from,to,params})}emitRouteNavigateStart(to,options){this.eventBus.emitSync(FrameworkEventType.ROUTE_NAVIGATE_START,{to,options})}emitRouteNavigateComplete(to,duration){this.eventBus.emitSync(FrameworkEventType.ROUTE_NAVIGATE_COMPLETE,{to,duration})}emitErrorOccurred(error,context){this.eventBus.emitSync(FrameworkEventType.ERROR_OCCURRED,{error,context})}emitInstanceCreated(instanceId){this.eventBus.emitSync(FrameworkEventType.INSTANCE_CREATED,{instanceId})}emitInstanceDestroyed(instanceId){this.eventBus.emitSync(FrameworkEventType.INSTANCE_DESTROYED,{instanceId})}emitPerformanceUpdate(metrics){this.eventBus.emitSync(FrameworkEventType.PERFORMANCE_UPDATE,{metrics})}constructor(eventBus){_define_property(this,"eventBus",void 0);this.eventBus=eventBus}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get useAppEvent(){return useAppEvent},get useAppEventEmitter(){return useAppEventEmitter},get useAppEventOnce(){return useAppEventOnce}});const _react=require("react");function useAppEvent(eventBus,event,listener,options){const listenerRef=(0,_react.useRef)(listener);listenerRef.current=listener;const optionsRef=(0,_react.useRef)(options);optionsRef.current=options;(0,_react.useEffect)(()=>{const wrappedListener=(data,metadata)=>{return listenerRef.current(data,metadata)};const unsubscribe=eventBus.on(event,wrappedListener,optionsRef.current);return unsubscribe},[eventBus,event])}function useAppEventOnce(eventBus,event,listener,options){const listenerRef=(0,_react.useRef)(listener);listenerRef.current=listener;const optionsRef=(0,_react.useRef)(options);optionsRef.current=options;(0,_react.useEffect)(()=>{const wrappedListener=(data,metadata)=>{return listenerRef.current(data,metadata)};const unsubscribe=eventBus.once(event,wrappedListener,optionsRef.current);return unsubscribe},[eventBus,event])}function useAppEventEmitter(eventBus){return(0,_react.useCallback)((event,data,metadata)=>{return eventBus.emit(event,data,metadata)},[eventBus])}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * React Hooks 支持
3
+ * 提供便捷的 React 组件事件订阅能力
4
+ */
5
+ import type { EventListener, EventListenerOptions } from './types';
6
+ import type { AppEventBus } from './AppEventBus';
7
+ /**
8
+ * 使用事件总线的 Hook
9
+ *
10
+ * @param eventBus - 事件总线实例
11
+ * @param event - 事件名称
12
+ * @param listener - 事件监听器
13
+ * @param options - 监听器选项
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * import { useAppEventBus } from '@vlian/framework';
18
+ *
19
+ * function MyComponent() {
20
+ * useAppEvent('user:login', (data, metadata) => {
21
+ * console.log('用户登录:', data);
22
+ * });
23
+ *
24
+ * return <div>My Component</div>;
25
+ * }
26
+ * ```
27
+ */
28
+ export declare function useAppEvent<T = unknown>(eventBus: AppEventBus, event: string, listener: EventListener<T>, options?: EventListenerOptions): void;
29
+ /**
30
+ * 一次性事件订阅 Hook
31
+ *
32
+ * @param eventBus - 事件总线实例
33
+ * @param event - 事件名称
34
+ * @param listener - 事件监听器
35
+ * @param options - 监听器选项
36
+ */
37
+ export declare function useAppEventOnce<T = unknown>(eventBus: AppEventBus, event: string, listener: EventListener<T>, options?: Omit<EventListenerOptions, 'once'>): void;
38
+ /**
39
+ * 创建事件发射器 Hook
40
+ *
41
+ * @param eventBus - 事件总线实例
42
+ * @returns 事件发射函数
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * function MyComponent() {
47
+ * const emit = useAppEventEmitter(eventBus);
48
+ *
49
+ * const handleClick = () => {
50
+ * emit('button:click', { buttonId: 'submit' });
51
+ * };
52
+ *
53
+ * return <button onClick={handleClick}>Click</button>;
54
+ * }
55
+ * ```
56
+ */
57
+ export declare function useAppEventEmitter(eventBus: AppEventBus): <T = unknown>(event: string, data?: T, metadata?: Partial<import("./types").EventMetadata>) => Promise<void>;
@@ -0,0 +1 @@
1
+ import{useEffect,useRef,useCallback}from"react";export function useAppEvent(eventBus,event,listener,options){const listenerRef=useRef(listener);listenerRef.current=listener;const optionsRef=useRef(options);optionsRef.current=options;useEffect(()=>{const wrappedListener=(data,metadata)=>{return listenerRef.current(data,metadata)};const unsubscribe=eventBus.on(event,wrappedListener,optionsRef.current);return unsubscribe},[eventBus,event])}export function useAppEventOnce(eventBus,event,listener,options){const listenerRef=useRef(listener);listenerRef.current=listener;const optionsRef=useRef(options);optionsRef.current=options;useEffect(()=>{const wrappedListener=(data,metadata)=>{return listenerRef.current(data,metadata)};const unsubscribe=eventBus.once(event,wrappedListener,optionsRef.current);return unsubscribe},[eventBus,event])}export function useAppEventEmitter(eventBus){return useCallback((event,data,metadata)=>{return eventBus.emit(event,data,metadata)},[eventBus])}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get AppEventBus(){return _AppEventBus.AppEventBus},get FrameworkEventManager(){return _frameworkEvents.FrameworkEventManager},get FrameworkEventType(){return _types.FrameworkEventType},get useAppEvent(){return _hooks.useAppEvent},get useAppEventEmitter(){return _hooks.useAppEventEmitter},get useAppEventOnce(){return _hooks.useAppEventOnce},get useEventBus(){return _useEventBus.useEventBus}});const _AppEventBus=require("./AppEventBus");const _frameworkEvents=require("./frameworkEvents");const _hooks=require("./hooks");const _useEventBus=require("./useEventBus");const _types=require("./types");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 应用级事件系统
3
+ * 提供高性能、类型安全、可观测的事件通信能力
4
+ */
5
+ export { AppEventBus } from './AppEventBus';
6
+ export { FrameworkEventManager } from './frameworkEvents';
7
+ export { useAppEvent, useAppEventOnce, useAppEventEmitter, } from './hooks';
8
+ export { useEventBus } from './useEventBus';
9
+ export type { EventListener, EventMetadata, EventWrapper, EventMiddleware, EventListenerOptions, AppEventBusConfig, EventStats, FrameworkEventData, } from './types';
10
+ export { FrameworkEventType } from './types';
@@ -0,0 +1 @@
1
+ export{AppEventBus}from"./AppEventBus";export{FrameworkEventManager}from"./frameworkEvents";export{useAppEvent,useAppEventOnce,useAppEventEmitter}from"./hooks";export{useEventBus}from"./useEventBus";export{FrameworkEventType}from"./types";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"FrameworkEventType",{enumerable:true,get:function(){return FrameworkEventType}});var FrameworkEventType=/*#__PURE__*/function(FrameworkEventType){FrameworkEventType["APP_START"]="framework:app:start";FrameworkEventType["APP_STARTED"]="framework:app:started";FrameworkEventType["APP_INIT_START"]="framework:app:init:start";FrameworkEventType["APP_INIT_COMPLETE"]="framework:app:init:complete";FrameworkEventType["APP_INIT_ERROR"]="framework:app:init:error";FrameworkEventType["APP_RENDER_START"]="framework:app:render:start";FrameworkEventType["APP_RENDER_COMPLETE"]="framework:app:render:complete";FrameworkEventType["ROUTE_CHANGE"]="framework:route:change";FrameworkEventType["ROUTE_NAVIGATE_START"]="framework:route:navigate:start";FrameworkEventType["ROUTE_NAVIGATE_COMPLETE"]="framework:route:navigate:complete";FrameworkEventType["ERROR_OCCURRED"]="framework:error:occurred";FrameworkEventType["INSTANCE_CREATED"]="framework:instance:created";FrameworkEventType["INSTANCE_DESTROYED"]="framework:instance:destroyed";FrameworkEventType["PERFORMANCE_UPDATE"]="framework:performance:update";return FrameworkEventType}({});
@@ -0,0 +1,269 @@
1
+ /**
2
+ * 应用级事件系统类型定义
3
+ * 提供类型安全的事件通信能力
4
+ */
5
+ /**
6
+ * 事件监听器类型
7
+ *
8
+ * @template T - 事件数据类型
9
+ */
10
+ export type EventListener<T = unknown> = (data: T, metadata: EventMetadata) => void | Promise<void>;
11
+ /**
12
+ * 事件元数据
13
+ */
14
+ export interface EventMetadata {
15
+ /**
16
+ * 事件来源(模块/组件名称)
17
+ */
18
+ source?: string;
19
+ /**
20
+ * 事件时间戳
21
+ */
22
+ timestamp: number;
23
+ /**
24
+ * 事件ID(用于追踪)
25
+ */
26
+ eventId: string;
27
+ /**
28
+ * 事件优先级(数字越小优先级越高)
29
+ */
30
+ priority?: number;
31
+ /**
32
+ * 应用实例ID(多实例场景)
33
+ */
34
+ instanceId?: string;
35
+ /**
36
+ * 事件命名空间(用于作用域隔离)
37
+ */
38
+ namespace?: string;
39
+ /**
40
+ * 自定义元数据
41
+ */
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * 事件包装器
46
+ *
47
+ * @template T - 事件数据类型
48
+ */
49
+ export interface EventWrapper<T = unknown> {
50
+ /**
51
+ * 事件数据
52
+ */
53
+ data: T;
54
+ /**
55
+ * 事件元数据
56
+ */
57
+ metadata: EventMetadata;
58
+ }
59
+ /**
60
+ * 事件中间件函数类型
61
+ *
62
+ * @template T - 事件数据类型
63
+ */
64
+ export type EventMiddleware<T = unknown> = (event: string, data: T, metadata: EventMetadata, next: () => Promise<void>) => Promise<void> | void;
65
+ /**
66
+ * 事件监听器选项
67
+ */
68
+ export interface EventListenerOptions {
69
+ /**
70
+ * 监听器优先级(数字越小优先级越高)
71
+ */
72
+ priority?: number;
73
+ /**
74
+ * 是否只执行一次
75
+ */
76
+ once?: boolean;
77
+ /**
78
+ * 事件命名空间(用于作用域隔离)
79
+ */
80
+ namespace?: string;
81
+ /**
82
+ * 是否异步执行
83
+ */
84
+ async?: boolean;
85
+ }
86
+ /**
87
+ * 事件总线配置
88
+ */
89
+ export interface AppEventBusConfig {
90
+ /**
91
+ * 是否启用事件追踪
92
+ */
93
+ enableTracking?: boolean;
94
+ /**
95
+ * 最大事件历史记录数
96
+ */
97
+ maxHistorySize?: number;
98
+ /**
99
+ * 是否启用事件验证
100
+ */
101
+ enableValidation?: boolean;
102
+ /**
103
+ * 事件验证函数
104
+ */
105
+ validator?: (event: string, data: unknown) => boolean;
106
+ /**
107
+ * 是否启用性能监控
108
+ */
109
+ enablePerformanceMonitoring?: boolean;
110
+ /**
111
+ * 事件命名空间前缀(用于多实例隔离)
112
+ */
113
+ namespacePrefix?: string;
114
+ /**
115
+ * 应用实例ID(多实例场景)
116
+ */
117
+ instanceId?: string;
118
+ /**
119
+ * 是否启用安全模式(限制事件来源)
120
+ */
121
+ enableSecurityMode?: boolean;
122
+ /**
123
+ * 允许的事件来源白名单(安全模式)
124
+ */
125
+ allowedSources?: string[];
126
+ }
127
+ /**
128
+ * 事件统计信息
129
+ */
130
+ export interface EventStats {
131
+ /**
132
+ * 事件名称
133
+ */
134
+ event: string;
135
+ /**
136
+ * 触发次数
137
+ */
138
+ count: number;
139
+ /**
140
+ * 平均执行时间(毫秒)
141
+ */
142
+ avgExecutionTime: number;
143
+ /**
144
+ * 监听器数量
145
+ */
146
+ listenerCount: number;
147
+ /**
148
+ * 最后触发时间
149
+ */
150
+ lastTriggered: number;
151
+ }
152
+ /**
153
+ * 框架内置事件类型
154
+ */
155
+ export declare enum FrameworkEventType {
156
+ /**
157
+ * 应用启动开始
158
+ */
159
+ APP_START = "framework:app:start",
160
+ /**
161
+ * 应用启动完成
162
+ */
163
+ APP_STARTED = "framework:app:started",
164
+ /**
165
+ * 应用初始化开始
166
+ */
167
+ APP_INIT_START = "framework:app:init:start",
168
+ /**
169
+ * 应用初始化完成
170
+ */
171
+ APP_INIT_COMPLETE = "framework:app:init:complete",
172
+ /**
173
+ * 应用初始化失败
174
+ */
175
+ APP_INIT_ERROR = "framework:app:init:error",
176
+ /**
177
+ * 应用渲染开始
178
+ */
179
+ APP_RENDER_START = "framework:app:render:start",
180
+ /**
181
+ * 应用渲染完成
182
+ */
183
+ APP_RENDER_COMPLETE = "framework:app:render:complete",
184
+ /**
185
+ * 路由变化
186
+ */
187
+ ROUTE_CHANGE = "framework:route:change",
188
+ /**
189
+ * 路由导航开始
190
+ */
191
+ ROUTE_NAVIGATE_START = "framework:route:navigate:start",
192
+ /**
193
+ * 路由导航完成
194
+ */
195
+ ROUTE_NAVIGATE_COMPLETE = "framework:route:navigate:complete",
196
+ /**
197
+ * 错误发生
198
+ */
199
+ ERROR_OCCURRED = "framework:error:occurred",
200
+ /**
201
+ * 实例创建
202
+ */
203
+ INSTANCE_CREATED = "framework:instance:created",
204
+ /**
205
+ * 实例销毁
206
+ */
207
+ INSTANCE_DESTROYED = "framework:instance:destroyed",
208
+ /**
209
+ * 性能指标更新
210
+ */
211
+ PERFORMANCE_UPDATE = "framework:performance:update"
212
+ }
213
+ /**
214
+ * 框架事件数据类型定义
215
+ */
216
+ export interface FrameworkEventData {
217
+ [FrameworkEventType.APP_START]: {
218
+ instanceId?: string;
219
+ };
220
+ [FrameworkEventType.APP_STARTED]: {
221
+ instanceId?: string;
222
+ duration: number;
223
+ };
224
+ [FrameworkEventType.APP_INIT_START]: {
225
+ instanceId?: string;
226
+ };
227
+ [FrameworkEventType.APP_INIT_COMPLETE]: {
228
+ instanceId?: string;
229
+ context: unknown;
230
+ duration: number;
231
+ };
232
+ [FrameworkEventType.APP_INIT_ERROR]: {
233
+ instanceId?: string;
234
+ error: Error;
235
+ };
236
+ [FrameworkEventType.APP_RENDER_START]: {
237
+ instanceId?: string;
238
+ };
239
+ [FrameworkEventType.APP_RENDER_COMPLETE]: {
240
+ instanceId?: string;
241
+ duration: number;
242
+ };
243
+ [FrameworkEventType.ROUTE_CHANGE]: {
244
+ from: string;
245
+ to: string;
246
+ params?: Record<string, unknown>;
247
+ };
248
+ [FrameworkEventType.ROUTE_NAVIGATE_START]: {
249
+ to: string;
250
+ options?: unknown;
251
+ };
252
+ [FrameworkEventType.ROUTE_NAVIGATE_COMPLETE]: {
253
+ to: string;
254
+ duration: number;
255
+ };
256
+ [FrameworkEventType.ERROR_OCCURRED]: {
257
+ error: Error;
258
+ context?: unknown;
259
+ };
260
+ [FrameworkEventType.INSTANCE_CREATED]: {
261
+ instanceId: string;
262
+ };
263
+ [FrameworkEventType.INSTANCE_DESTROYED]: {
264
+ instanceId: string;
265
+ };
266
+ [FrameworkEventType.PERFORMANCE_UPDATE]: {
267
+ metrics: Record<string, number>;
268
+ };
269
+ }
@@ -0,0 +1 @@
1
+ export var FrameworkEventType=/*#__PURE__*/function(FrameworkEventType){FrameworkEventType["APP_START"]="framework:app:start";FrameworkEventType["APP_STARTED"]="framework:app:started";FrameworkEventType["APP_INIT_START"]="framework:app:init:start";FrameworkEventType["APP_INIT_COMPLETE"]="framework:app:init:complete";FrameworkEventType["APP_INIT_ERROR"]="framework:app:init:error";FrameworkEventType["APP_RENDER_START"]="framework:app:render:start";FrameworkEventType["APP_RENDER_COMPLETE"]="framework:app:render:complete";FrameworkEventType["ROUTE_CHANGE"]="framework:route:change";FrameworkEventType["ROUTE_NAVIGATE_START"]="framework:route:navigate:start";FrameworkEventType["ROUTE_NAVIGATE_COMPLETE"]="framework:route:navigate:complete";FrameworkEventType["ERROR_OCCURRED"]="framework:error:occurred";FrameworkEventType["INSTANCE_CREATED"]="framework:instance:created";FrameworkEventType["INSTANCE_DESTROYED"]="framework:instance:destroyed";FrameworkEventType["PERFORMANCE_UPDATE"]="framework:performance:update";return FrameworkEventType}({});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"useEventBus",{enumerable:true,get:function(){return useEventBus}});const _AppInstance=require("../startup/AppInstance");function useEventBus(){const instanceManager=(0,_AppInstance.getAppInstanceManager)();const instance=instanceManager.getInstance();if(!instance){throw new Error("应用实例未找到")}const eventBus=instance.getEventBus();if(!eventBus){throw new Error("事件总线未初始化")}return eventBus}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * 便捷的 Hook:获取当前应用实例的事件总线
3
+ */
4
+ import type { AppEventBus } from './AppEventBus';
5
+ /**
6
+ * 获取当前应用实例的事件总线
7
+ *
8
+ * @returns 事件总线实例
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * import { useEventBus } from '@vlian/framework';
13
+ *
14
+ * function MyComponent() {
15
+ * const eventBus = useEventBus();
16
+ *
17
+ * useEffect(() => {
18
+ * const unsubscribe = eventBus.on('user:login', (data) => {
19
+ * console.log('用户登录:', data);
20
+ * });
21
+ * return unsubscribe;
22
+ * }, [eventBus]);
23
+ *
24
+ * return <div>My Component</div>;
25
+ * }
26
+ * ```
27
+ */
28
+ export declare function useEventBus(): AppEventBus;
@@ -0,0 +1 @@
1
+ import{getAppInstanceManager}from"../startup/AppInstance";export function useEventBus(){const instanceManager=getAppInstanceManager();const instance=instanceManager.getInstance();if(!instance){throw new Error("应用实例未找到")}const eventBus=instance.getEventBus();if(!eventBus){throw new Error("事件总线未初始化")}return eventBus}