@orchestr-sh/orchestr 1.6.0 → 1.7.0

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 (227) hide show
  1. package/README.md +289 -22
  2. package/dist/Console/Commands/EventCacheCommand.d.ts +15 -0
  3. package/dist/Console/Commands/EventCacheCommand.d.ts.map +1 -0
  4. package/dist/Console/Commands/EventCacheCommand.js +99 -0
  5. package/dist/Console/Commands/EventCacheCommand.js.map +1 -0
  6. package/dist/Console/Commands/EventClearCommand.d.ts +15 -0
  7. package/dist/Console/Commands/EventClearCommand.d.ts.map +1 -0
  8. package/dist/Console/Commands/EventClearCommand.js +71 -0
  9. package/dist/Console/Commands/EventClearCommand.js.map +1 -0
  10. package/dist/Console/Commands/EventListCommand.d.ts +19 -0
  11. package/dist/Console/Commands/EventListCommand.d.ts.map +1 -0
  12. package/dist/Console/Commands/EventListCommand.js +106 -0
  13. package/dist/Console/Commands/EventListCommand.js.map +1 -0
  14. package/dist/Console/Commands/MakeEventCommand.d.ts +27 -0
  15. package/dist/Console/Commands/MakeEventCommand.d.ts.map +1 -0
  16. package/dist/Console/Commands/MakeEventCommand.js +117 -0
  17. package/dist/Console/Commands/MakeEventCommand.js.map +1 -0
  18. package/dist/Console/Commands/MakeListenerCommand.d.ts +27 -0
  19. package/dist/Console/Commands/MakeListenerCommand.d.ts.map +1 -0
  20. package/dist/Console/Commands/MakeListenerCommand.js +157 -0
  21. package/dist/Console/Commands/MakeListenerCommand.js.map +1 -0
  22. package/dist/Console/Commands/MigrateStatusCommand.d.ts.map +1 -1
  23. package/dist/Console/Commands/MigrateStatusCommand.js.map +1 -1
  24. package/dist/Console/orchestr.js +10 -0
  25. package/dist/Console/orchestr.js.map +1 -1
  26. package/dist/Container/Container.js.map +1 -1
  27. package/dist/Contracts/Events/Dispatcher.d.ts +94 -0
  28. package/dist/Contracts/Events/Dispatcher.d.ts.map +1 -0
  29. package/dist/Contracts/Events/Dispatcher.js +9 -0
  30. package/dist/Contracts/Events/Dispatcher.js.map +1 -0
  31. package/dist/Contracts/Events/index.d.ts +7 -0
  32. package/dist/Contracts/Events/index.d.ts.map +1 -0
  33. package/dist/Contracts/Events/index.js +8 -0
  34. package/dist/Contracts/Events/index.js.map +1 -0
  35. package/dist/Database/Connection.d.ts.map +1 -1
  36. package/dist/Database/Connection.js.map +1 -1
  37. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.d.ts.map +1 -1
  38. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js +43 -12
  39. package/dist/Database/Ensemble/Concerns/HasDynamicRelations.js.map +1 -1
  40. package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts.map +1 -1
  41. package/dist/Database/Ensemble/Concerns/HasRelationships.js +2 -5
  42. package/dist/Database/Ensemble/Concerns/HasRelationships.js.map +1 -1
  43. package/dist/Database/Ensemble/Ensemble.d.ts +7 -0
  44. package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -1
  45. package/dist/Database/Ensemble/Ensemble.js +134 -11
  46. package/dist/Database/Ensemble/Ensemble.js.map +1 -1
  47. package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -1
  48. package/dist/Database/Ensemble/EnsembleBuilder.js +7 -0
  49. package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -1
  50. package/dist/Database/Ensemble/Events/ModelCreated.d.ts +11 -0
  51. package/dist/Database/Ensemble/Events/ModelCreated.d.ts.map +1 -0
  52. package/dist/Database/Ensemble/Events/ModelCreated.js +16 -0
  53. package/dist/Database/Ensemble/Events/ModelCreated.js.map +1 -0
  54. package/dist/Database/Ensemble/Events/ModelCreating.d.ts +12 -0
  55. package/dist/Database/Ensemble/Events/ModelCreating.d.ts.map +1 -0
  56. package/dist/Database/Ensemble/Events/ModelCreating.js +17 -0
  57. package/dist/Database/Ensemble/Events/ModelCreating.js.map +1 -0
  58. package/dist/Database/Ensemble/Events/ModelDeleted.d.ts +11 -0
  59. package/dist/Database/Ensemble/Events/ModelDeleted.d.ts.map +1 -0
  60. package/dist/Database/Ensemble/Events/ModelDeleted.js +16 -0
  61. package/dist/Database/Ensemble/Events/ModelDeleted.js.map +1 -0
  62. package/dist/Database/Ensemble/Events/ModelDeleting.d.ts +12 -0
  63. package/dist/Database/Ensemble/Events/ModelDeleting.d.ts.map +1 -0
  64. package/dist/Database/Ensemble/Events/ModelDeleting.js +17 -0
  65. package/dist/Database/Ensemble/Events/ModelDeleting.js.map +1 -0
  66. package/dist/Database/Ensemble/Events/ModelEvent.d.ts +17 -0
  67. package/dist/Database/Ensemble/Events/ModelEvent.d.ts.map +1 -0
  68. package/dist/Database/Ensemble/Events/ModelEvent.js +22 -0
  69. package/dist/Database/Ensemble/Events/ModelEvent.js.map +1 -0
  70. package/dist/Database/Ensemble/Events/ModelRetrieved.d.ts +11 -0
  71. package/dist/Database/Ensemble/Events/ModelRetrieved.d.ts.map +1 -0
  72. package/dist/Database/Ensemble/Events/ModelRetrieved.js +16 -0
  73. package/dist/Database/Ensemble/Events/ModelRetrieved.js.map +1 -0
  74. package/dist/Database/Ensemble/Events/ModelSaved.d.ts +11 -0
  75. package/dist/Database/Ensemble/Events/ModelSaved.d.ts.map +1 -0
  76. package/dist/Database/Ensemble/Events/ModelSaved.js +16 -0
  77. package/dist/Database/Ensemble/Events/ModelSaved.js.map +1 -0
  78. package/dist/Database/Ensemble/Events/ModelSaving.d.ts +12 -0
  79. package/dist/Database/Ensemble/Events/ModelSaving.d.ts.map +1 -0
  80. package/dist/Database/Ensemble/Events/ModelSaving.js +17 -0
  81. package/dist/Database/Ensemble/Events/ModelSaving.js.map +1 -0
  82. package/dist/Database/Ensemble/Events/ModelUpdated.d.ts +11 -0
  83. package/dist/Database/Ensemble/Events/ModelUpdated.d.ts.map +1 -0
  84. package/dist/Database/Ensemble/Events/ModelUpdated.js +16 -0
  85. package/dist/Database/Ensemble/Events/ModelUpdated.js.map +1 -0
  86. package/dist/Database/Ensemble/Events/ModelUpdating.d.ts +12 -0
  87. package/dist/Database/Ensemble/Events/ModelUpdating.d.ts.map +1 -0
  88. package/dist/Database/Ensemble/Events/ModelUpdating.js +17 -0
  89. package/dist/Database/Ensemble/Events/ModelUpdating.js.map +1 -0
  90. package/dist/Database/Ensemble/Events/index.d.ts +16 -0
  91. package/dist/Database/Ensemble/Events/index.d.ts.map +1 -0
  92. package/dist/Database/Ensemble/Events/index.js +29 -0
  93. package/dist/Database/Ensemble/Events/index.js.map +1 -0
  94. package/dist/Database/Ensemble/Relations/BelongsTo.d.ts.map +1 -1
  95. package/dist/Database/Ensemble/Relations/BelongsTo.js.map +1 -1
  96. package/dist/Database/Ensemble/Relations/BelongsToMany.d.ts.map +1 -1
  97. package/dist/Database/Ensemble/Relations/BelongsToMany.js +1 -4
  98. package/dist/Database/Ensemble/Relations/BelongsToMany.js.map +1 -1
  99. package/dist/Database/Ensemble/Relations/HasMany.d.ts.map +1 -1
  100. package/dist/Database/Ensemble/Relations/HasMany.js.map +1 -1
  101. package/dist/Database/Ensemble/Relations/HasOne.d.ts.map +1 -1
  102. package/dist/Database/Ensemble/Relations/HasOne.js.map +1 -1
  103. package/dist/Database/Ensemble/Relations/MorphMany.d.ts.map +1 -1
  104. package/dist/Database/Ensemble/Relations/MorphMany.js +2 -6
  105. package/dist/Database/Ensemble/Relations/MorphMany.js.map +1 -1
  106. package/dist/Database/Ensemble/Relations/MorphOne.d.ts.map +1 -1
  107. package/dist/Database/Ensemble/Relations/MorphOne.js +2 -6
  108. package/dist/Database/Ensemble/Relations/MorphOne.js.map +1 -1
  109. package/dist/Database/Ensemble/Relations/MorphTo.d.ts.map +1 -1
  110. package/dist/Database/Ensemble/Relations/MorphTo.js +5 -11
  111. package/dist/Database/Ensemble/Relations/MorphTo.js.map +1 -1
  112. package/dist/Database/Ensemble/Relations/MorphToMany.d.ts.map +1 -1
  113. package/dist/Database/Ensemble/Relations/MorphToMany.js +1 -3
  114. package/dist/Database/Ensemble/Relations/MorphToMany.js.map +1 -1
  115. package/dist/Database/Ensemble/Relations/MorphedByMany.d.ts.map +1 -1
  116. package/dist/Database/Ensemble/Relations/MorphedByMany.js.map +1 -1
  117. package/dist/Database/Ensemble/Relations/Relation.d.ts.map +1 -1
  118. package/dist/Database/Ensemble/Relations/Relation.js +4 -2
  119. package/dist/Database/Ensemble/Relations/Relation.js.map +1 -1
  120. package/dist/Database/Migrations/MigrationRepository.d.ts.map +1 -1
  121. package/dist/Database/Migrations/MigrationRepository.js +4 -19
  122. package/dist/Database/Migrations/MigrationRepository.js.map +1 -1
  123. package/dist/Database/Migrations/SchemaBuilder.d.ts.map +1 -1
  124. package/dist/Database/Migrations/SchemaBuilder.js +5 -15
  125. package/dist/Database/Migrations/SchemaBuilder.js.map +1 -1
  126. package/dist/Database/Query/Builder.d.ts.map +1 -1
  127. package/dist/Database/Query/Builder.js +5 -4
  128. package/dist/Database/Query/Builder.js.map +1 -1
  129. package/dist/Events/Concerns/Dispatchable.d.ts +121 -0
  130. package/dist/Events/Concerns/Dispatchable.d.ts.map +1 -0
  131. package/dist/Events/Concerns/Dispatchable.js +165 -0
  132. package/dist/Events/Concerns/Dispatchable.js.map +1 -0
  133. package/dist/Events/Contracts/Dispatcher.d.ts +144 -0
  134. package/dist/Events/Contracts/Dispatcher.d.ts.map +1 -0
  135. package/dist/Events/Contracts/Dispatcher.js +3 -0
  136. package/dist/Events/Contracts/Dispatcher.js.map +1 -0
  137. package/dist/Events/Contracts/ShouldDispatchAfterCommit.d.ts +21 -0
  138. package/dist/Events/Contracts/ShouldDispatchAfterCommit.d.ts.map +1 -0
  139. package/dist/Events/Contracts/ShouldDispatchAfterCommit.js +3 -0
  140. package/dist/Events/Contracts/ShouldDispatchAfterCommit.js.map +1 -0
  141. package/dist/Events/Decorators/HandlesEvents.d.ts +83 -0
  142. package/dist/Events/Decorators/HandlesEvents.d.ts.map +1 -0
  143. package/dist/Events/Decorators/HandlesEvents.js +105 -0
  144. package/dist/Events/Decorators/HandlesEvents.js.map +1 -0
  145. package/dist/Events/Dispatcher.d.ts +201 -0
  146. package/dist/Events/Dispatcher.d.ts.map +1 -0
  147. package/dist/Events/Dispatcher.js +359 -0
  148. package/dist/Events/Dispatcher.js.map +1 -0
  149. package/dist/Events/Event.d.ts +140 -0
  150. package/dist/Events/Event.d.ts.map +1 -0
  151. package/dist/Events/Event.js +266 -0
  152. package/dist/Events/Event.js.map +1 -0
  153. package/dist/Events/EventDiscoveryCache.d.ts +205 -0
  154. package/dist/Events/EventDiscoveryCache.d.ts.map +1 -0
  155. package/dist/Events/EventDiscoveryCache.js +310 -0
  156. package/dist/Events/EventDiscoveryCache.js.map +1 -0
  157. package/dist/Events/EventServiceProvider.d.ts +148 -0
  158. package/dist/Events/EventServiceProvider.d.ts.map +1 -0
  159. package/dist/Events/EventServiceProvider.js +258 -0
  160. package/dist/Events/EventServiceProvider.js.map +1 -0
  161. package/dist/Events/NullDispatcher.d.ts +97 -0
  162. package/dist/Events/NullDispatcher.d.ts.map +1 -0
  163. package/dist/Events/NullDispatcher.js +118 -0
  164. package/dist/Events/NullDispatcher.js.map +1 -0
  165. package/dist/Events/PendingDispatch.d.ts +119 -0
  166. package/dist/Events/PendingDispatch.d.ts.map +1 -0
  167. package/dist/Events/PendingDispatch.js +162 -0
  168. package/dist/Events/PendingDispatch.js.map +1 -0
  169. package/dist/Events/index.d.ts +12 -0
  170. package/dist/Events/index.d.ts.map +1 -0
  171. package/dist/Events/index.js +20 -0
  172. package/dist/Events/index.js.map +1 -0
  173. package/dist/Events/types.d.ts +77 -0
  174. package/dist/Events/types.d.ts.map +1 -0
  175. package/dist/Events/types.js +3 -0
  176. package/dist/Events/types.js.map +1 -0
  177. package/dist/Facades/DB.d.ts.map +1 -1
  178. package/dist/Facades/DB.js.map +1 -1
  179. package/dist/Facades/Event.d.ts +200 -0
  180. package/dist/Facades/Event.d.ts.map +1 -0
  181. package/dist/Facades/Event.js +331 -0
  182. package/dist/Facades/Event.js.map +1 -0
  183. package/dist/Facades/Route.js +1 -1
  184. package/dist/Foundation/Application.d.ts +33 -0
  185. package/dist/Foundation/Application.d.ts.map +1 -1
  186. package/dist/Foundation/Application.js +43 -3
  187. package/dist/Foundation/Application.js.map +1 -1
  188. package/dist/Foundation/Config/Config.js +1 -1
  189. package/dist/Foundation/Config/Config.js.map +1 -1
  190. package/dist/Foundation/Http/FormRequest.d.ts.map +1 -1
  191. package/dist/Foundation/Http/FormRequest.js +2 -2
  192. package/dist/Foundation/Http/FormRequest.js.map +1 -1
  193. package/dist/Foundation/Http/Kernel.d.ts.map +1 -1
  194. package/dist/Foundation/Http/Kernel.js +1 -1
  195. package/dist/Foundation/Http/Kernel.js.map +1 -1
  196. package/dist/Foundation/Http/Validator.d.ts.map +1 -1
  197. package/dist/Foundation/Http/Validator.js +27 -22
  198. package/dist/Foundation/Http/Validator.js.map +1 -1
  199. package/dist/Listeners/Contracts/ShouldQueue.d.ts +142 -0
  200. package/dist/Listeners/Contracts/ShouldQueue.d.ts.map +1 -0
  201. package/dist/Listeners/Contracts/ShouldQueue.js +20 -0
  202. package/dist/Listeners/Contracts/ShouldQueue.js.map +1 -0
  203. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.d.ts +24 -0
  204. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.d.ts.map +1 -0
  205. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.js +3 -0
  206. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.js.map +1 -0
  207. package/dist/Routing/Request.js +1 -1
  208. package/dist/Routing/Request.js.map +1 -1
  209. package/dist/Routing/Route.js +1 -1
  210. package/dist/Routing/Route.js.map +1 -1
  211. package/dist/Routing/Router.d.ts.map +1 -1
  212. package/dist/Routing/Router.js +5 -6
  213. package/dist/Routing/Router.js.map +1 -1
  214. package/dist/Support/EventDiscovery.d.ts +142 -0
  215. package/dist/Support/EventDiscovery.d.ts.map +1 -0
  216. package/dist/Support/EventDiscovery.js +302 -0
  217. package/dist/Support/EventDiscovery.js.map +1 -0
  218. package/dist/Support/Facade.js +2 -2
  219. package/dist/Support/Testing/Fakes/EventFake.d.ts +291 -0
  220. package/dist/Support/Testing/Fakes/EventFake.d.ts.map +1 -0
  221. package/dist/Support/Testing/Fakes/EventFake.js +444 -0
  222. package/dist/Support/Testing/Fakes/EventFake.js.map +1 -0
  223. package/dist/index.d.ts +10 -4
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +11 -1
  226. package/dist/index.js.map +1 -1
  227. package/package.json +33 -12
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Dispatcher = void 0;
4
+ /**
5
+ * Event Dispatcher
6
+ *
7
+ * The core event dispatcher implementation. Manages event listeners,
8
+ * handles wildcard patterns, and dispatches events to registered listeners.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const dispatcher = new Dispatcher(container);
13
+ *
14
+ * // Register listeners
15
+ * dispatcher.listen('user.registered', SendWelcomeEmail);
16
+ * dispatcher.listen('user.*', LogUserActivity);
17
+ *
18
+ * // Dispatch events
19
+ * dispatcher.dispatch(new UserRegistered(user));
20
+ * ```
21
+ */
22
+ class Dispatcher {
23
+ container;
24
+ /**
25
+ * Registered event listeners (direct event name matches)
26
+ */
27
+ listeners = new Map();
28
+ /**
29
+ * Wildcard event listeners (patterns like 'user.*')
30
+ */
31
+ wildcards = new Map();
32
+ /**
33
+ * Queued events waiting to be flushed
34
+ */
35
+ queuedEvents = new Map();
36
+ /**
37
+ * Create a new event dispatcher
38
+ *
39
+ * @param container - The service container for resolving listeners
40
+ */
41
+ constructor(container) {
42
+ this.container = container;
43
+ }
44
+ /**
45
+ * Register an event listener
46
+ *
47
+ * Supports single events, multiple events, and wildcard patterns
48
+ *
49
+ * @param events - Event name(s) to listen for
50
+ * @param listener - Listener to invoke when event is dispatched
51
+ */
52
+ listen(events, listener) {
53
+ const eventArray = Array.isArray(events) ? events : [events];
54
+ for (const event of eventArray) {
55
+ if (event.includes('*')) {
56
+ this.setupWildcardListen(event, listener);
57
+ }
58
+ else {
59
+ if (!this.listeners.has(event)) {
60
+ this.listeners.set(event, []);
61
+ }
62
+ this.listeners.get(event).push(listener);
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Check if an event has any listeners
68
+ *
69
+ * Checks both direct listeners and wildcard matches
70
+ *
71
+ * @param eventName - The event name to check
72
+ * @returns True if the event has listeners
73
+ */
74
+ hasListeners(eventName) {
75
+ return this.getListeners(eventName).length > 0;
76
+ }
77
+ /**
78
+ * Register an event subscriber
79
+ *
80
+ * Subscribers can register multiple event listeners at once
81
+ *
82
+ * @param subscriber - The subscriber instance
83
+ */
84
+ subscribe(subscriber) {
85
+ const result = subscriber.subscribe(this);
86
+ // If the subscriber returns a mapping, register those listeners
87
+ if (result && typeof result === 'object') {
88
+ for (const [event, listeners] of Object.entries(result)) {
89
+ const listenerArray = Array.isArray(listeners) ? listeners : [listeners];
90
+ for (const listener of listenerArray) {
91
+ this.listen(event, listener);
92
+ }
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Dispatch an event to all listeners
98
+ *
99
+ * @param event - Event name or instance
100
+ * @param payload - Additional arguments to pass to listeners
101
+ * @param halt - Stop dispatching if a listener returns false
102
+ * @returns Array of results from listeners
103
+ */
104
+ dispatch(event, payload = [], halt = false) {
105
+ const [eventName, eventInstance] = this.parseEventAndPayload(event, payload);
106
+ // Check if we should broadcast this event (for future broadcasting support)
107
+ if (eventInstance) {
108
+ this.shouldBroadcast(eventInstance, payload);
109
+ }
110
+ const listeners = this.getListeners(eventName);
111
+ const responses = [];
112
+ for (const listener of listeners) {
113
+ const response = this.callListener(listener, eventInstance || eventName, payload);
114
+ // If halting and response is false, stop propagation
115
+ if (halt && response === false) {
116
+ return responses;
117
+ }
118
+ // Collect non-null responses
119
+ if (response !== null && response !== undefined) {
120
+ responses.push(response);
121
+ }
122
+ }
123
+ return responses;
124
+ }
125
+ /**
126
+ * Dispatch an event until a listener returns a non-null response
127
+ *
128
+ * @param event - Event name or instance
129
+ * @param payload - Additional arguments to pass to listeners
130
+ * @returns The first non-null response from a listener
131
+ */
132
+ until(event, payload = []) {
133
+ const [eventName, eventInstance] = this.parseEventAndPayload(event, payload);
134
+ const listeners = this.getListeners(eventName);
135
+ for (const listener of listeners) {
136
+ const response = this.callListener(listener, eventInstance || eventName, payload);
137
+ if (response !== null && response !== undefined) {
138
+ return response;
139
+ }
140
+ }
141
+ return null;
142
+ }
143
+ /**
144
+ * Queue an event for later dispatch
145
+ *
146
+ * @param event - Event name
147
+ * @param payload - Event payload
148
+ */
149
+ push(event, payload = []) {
150
+ if (!this.queuedEvents.has(event)) {
151
+ this.queuedEvents.set(event, []);
152
+ }
153
+ this.queuedEvents.get(event).push({ payload });
154
+ }
155
+ /**
156
+ * Flush (dispatch) all queued events for a specific event name
157
+ *
158
+ * @param event - Event name to flush
159
+ */
160
+ flush(event) {
161
+ const queued = this.queuedEvents.get(event);
162
+ if (!queued || queued.length === 0) {
163
+ return;
164
+ }
165
+ // Dispatch each queued event
166
+ for (const { payload } of queued) {
167
+ this.dispatch(event, payload);
168
+ }
169
+ // Clear the queue for this event
170
+ this.queuedEvents.delete(event);
171
+ }
172
+ /**
173
+ * Remove all listeners for an event
174
+ *
175
+ * @param event - Event name
176
+ */
177
+ forget(event) {
178
+ this.listeners.delete(event);
179
+ this.wildcards.delete(event);
180
+ }
181
+ /**
182
+ * Clear all queued events
183
+ */
184
+ forgetPushed() {
185
+ this.queuedEvents.clear();
186
+ }
187
+ /**
188
+ * Get raw listener mappings
189
+ *
190
+ * @returns Map of event names to their listeners
191
+ */
192
+ getRawListeners() {
193
+ return this.listeners;
194
+ }
195
+ /**
196
+ * Get all listeners for an event (direct + wildcard matches)
197
+ *
198
+ * @param eventName - The event name
199
+ * @returns Array of listeners
200
+ */
201
+ getListeners(eventName) {
202
+ const directListeners = this.listeners.get(eventName) || [];
203
+ const wildcardListeners = this.getWildcardListeners(eventName);
204
+ return [...directListeners, ...wildcardListeners];
205
+ }
206
+ /**
207
+ * Setup a wildcard listener
208
+ *
209
+ * @param event - Wildcard pattern (e.g., 'user.*')
210
+ * @param listener - Listener to invoke
211
+ */
212
+ setupWildcardListen(event, listener) {
213
+ if (!this.wildcards.has(event)) {
214
+ this.wildcards.set(event, []);
215
+ }
216
+ this.wildcards.get(event).push(listener);
217
+ }
218
+ /**
219
+ * Get all wildcard listeners matching an event name
220
+ *
221
+ * @param eventName - The event name to match
222
+ * @returns Array of matching listeners
223
+ */
224
+ getWildcardListeners(eventName) {
225
+ const matched = [];
226
+ for (const [pattern, listeners] of this.wildcards) {
227
+ if (this.wildcardMatch(pattern, eventName)) {
228
+ matched.push(...listeners);
229
+ }
230
+ }
231
+ return matched;
232
+ }
233
+ /**
234
+ * Check if an event name matches a wildcard pattern
235
+ *
236
+ * Supports patterns like:
237
+ * - 'event.*' - Matches 'event.created', 'event.updated', etc.
238
+ * - 'event.*.action' - Matches 'event.user.action', 'event.post.action', etc.
239
+ * - '*' - Matches everything
240
+ *
241
+ * @param pattern - Wildcard pattern
242
+ * @param eventName - Event name to test
243
+ * @returns True if the pattern matches
244
+ */
245
+ wildcardMatch(pattern, eventName) {
246
+ // Convert wildcard pattern to regex
247
+ // Escape special regex characters except *
248
+ const regexPattern = pattern
249
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
250
+ .replace(/\*/g, '.*');
251
+ const regex = new RegExp(`^${regexPattern}$`);
252
+ return regex.test(eventName);
253
+ }
254
+ /**
255
+ * Parse event and payload from dispatch arguments
256
+ *
257
+ * @param event - Event name or instance
258
+ * @param payload - Event payload
259
+ * @returns Tuple of [eventName, eventInstance]
260
+ */
261
+ parseEventAndPayload(event, payload) {
262
+ if (typeof event === 'string') {
263
+ return [event, null];
264
+ }
265
+ // Event is an object
266
+ return [event.constructor.name, event];
267
+ }
268
+ /**
269
+ * Call a listener with the event and payload
270
+ *
271
+ * Handles different listener types (closure, class instance, string reference)
272
+ *
273
+ * @param listener - The listener to call
274
+ * @param event - Event name or instance
275
+ * @param payload - Additional payload arguments
276
+ * @returns The result from the listener
277
+ */
278
+ callListener(listener, event, payload) {
279
+ try {
280
+ const callable = this.makeListener(listener);
281
+ return callable(event, ...payload);
282
+ }
283
+ catch (error) {
284
+ // Re-throw the error to allow application-level error handling
285
+ console.error(`Error calling event listener:`, error);
286
+ throw error;
287
+ }
288
+ }
289
+ /**
290
+ * Create a callable function from a listener
291
+ *
292
+ * Resolves string listeners from container and wraps class instances
293
+ *
294
+ * @param listener - The listener to convert
295
+ * @param wildcard - Whether this is for a wildcard listener
296
+ * @returns Callable function
297
+ */
298
+ makeListener(listener, wildcard = false) {
299
+ // If it's a string, resolve from container
300
+ if (typeof listener === 'string') {
301
+ return this.createClassListener(listener, wildcard);
302
+ }
303
+ // If it's a function (closure), return as-is
304
+ if (typeof listener === 'function') {
305
+ return listener;
306
+ }
307
+ // If it's a class instance with handle method
308
+ if (typeof listener === 'object' && 'handle' in listener) {
309
+ const instance = listener;
310
+ return (event, ...payload) => {
311
+ return instance.handle(event);
312
+ };
313
+ }
314
+ throw new Error(`Invalid listener type: ${typeof listener}`);
315
+ }
316
+ /**
317
+ * Create a listener from a class string reference
318
+ *
319
+ * Resolves the class from the container and calls its handle method
320
+ *
321
+ * @param listener - Class name/path to resolve
322
+ * @param wildcard - Whether this is for a wildcard listener
323
+ * @returns Callable function
324
+ */
325
+ createClassListener(listener, wildcard = false) {
326
+ return (event, ...payload) => {
327
+ // Resolve the listener class from the container
328
+ const instance = this.container.make(listener);
329
+ if (!instance || typeof instance.handle !== 'function') {
330
+ throw new Error(`Listener [${listener}] does not have a handle method`);
331
+ }
332
+ // Call the handle method
333
+ return instance.handle(event);
334
+ };
335
+ }
336
+ /**
337
+ * Check if an event should broadcast
338
+ *
339
+ * This is a placeholder for future broadcasting support
340
+ *
341
+ * @param event - The event instance
342
+ * @param payload - The event payload
343
+ * @returns True if should broadcast
344
+ */
345
+ shouldBroadcast(event, payload) {
346
+ // Check if event has shouldBroadcast method and it returns true
347
+ if (typeof event.shouldBroadcast === 'function') {
348
+ return event.shouldBroadcast();
349
+ }
350
+ // Check if event has broadcastOn method that returns channels
351
+ if (typeof event.broadcastOn === 'function') {
352
+ const channels = event.broadcastOn();
353
+ return Array.isArray(channels) ? channels.length > 0 : !!channels;
354
+ }
355
+ return false;
356
+ }
357
+ }
358
+ exports.Dispatcher = Dispatcher;
359
+ //# sourceMappingURL=Dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.js","sourceRoot":"","sources":["../../src/Events/Dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Event Base Class
3
+ *
4
+ * Base class for all events in the application
5
+ * Provides serialization support and broadcasting capabilities
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * class UserRegistered extends Event {
10
+ * constructor(public readonly user: User) {
11
+ * super();
12
+ * }
13
+ * }
14
+ *
15
+ * // Dispatch the event
16
+ * UserRegistered.dispatch(user);
17
+ * ```
18
+ */
19
+ /**
20
+ * Abstract Event base class
21
+ *
22
+ * All application events should extend this class.
23
+ * It provides:
24
+ * - Event metadata storage
25
+ * - Serialization for queueing
26
+ * - Broadcasting support
27
+ * - Static dispatch methods (via Dispatchable mixin)
28
+ */
29
+ export declare abstract class Event {
30
+ /**
31
+ * Properties to exclude from serialization
32
+ * Override in child classes to specify which properties should not be serialized
33
+ */
34
+ protected static serializable: string[];
35
+ /**
36
+ * The name of the connection the job should be sent to
37
+ * Used when queueing event listeners
38
+ */
39
+ connection?: string;
40
+ /**
41
+ * The name of the queue the job should be sent to
42
+ * Used when queueing event listeners
43
+ */
44
+ queue?: string;
45
+ /**
46
+ * The number of seconds before the job should be processed
47
+ * Used when queueing event listeners
48
+ */
49
+ delay?: number;
50
+ /**
51
+ * Convert event to JSON for queue serialization
52
+ *
53
+ * Serializes all public properties except those listed in the serializable array
54
+ *
55
+ * @returns Object representation of the event
56
+ */
57
+ toJSON(): Record<string, any>;
58
+ /**
59
+ * Serialize a value for JSON storage
60
+ *
61
+ * @param value - Value to serialize
62
+ * @returns Serialized value
63
+ */
64
+ protected serializeValue(value: any): any;
65
+ /**
66
+ * Recreate event from JSON
67
+ *
68
+ * This method should be overridden in child classes if custom deserialization is needed
69
+ *
70
+ * @param data - Serialized event data
71
+ * @returns Event instance
72
+ */
73
+ static fromJSON<T extends Event>(this: typeof Event & (new (...args: any[]) => T), data: Record<string, any>): T;
74
+ /**
75
+ * Deserialize a value from JSON
76
+ *
77
+ * @param value - Serialized value
78
+ * @returns Deserialized value
79
+ */
80
+ protected static deserializeValue(value: any): any;
81
+ /**
82
+ * Get the broadcast channel name(s)
83
+ *
84
+ * Override in child classes to specify which channels this event should broadcast on
85
+ *
86
+ * @returns Channel name(s) or empty array for no broadcasting
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * broadcastOn(): string | string[] {
91
+ * return 'users.' + this.user.id;
92
+ * }
93
+ * ```
94
+ */
95
+ broadcastOn(): string | string[];
96
+ /**
97
+ * Get the data to broadcast
98
+ *
99
+ * Override in child classes to customize the broadcast payload
100
+ * By default, returns all public properties
101
+ *
102
+ * @returns Data to broadcast
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * broadcastWith(): Record<string, any> {
107
+ * return {
108
+ * userId: this.user.id,
109
+ * userName: this.user.name,
110
+ * };
111
+ * }
112
+ * ```
113
+ */
114
+ broadcastWith(): Record<string, any>;
115
+ /**
116
+ * Get the broadcast event name
117
+ *
118
+ * Override in child classes to customize the event name sent to clients
119
+ * By default, returns the class name
120
+ *
121
+ * @returns Event name for broadcasting
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * broadcastAs(): string {
126
+ * return 'user.registered';
127
+ * }
128
+ * ```
129
+ */
130
+ broadcastAs(): string;
131
+ /**
132
+ * Determine if this event should broadcast
133
+ *
134
+ * Override in child classes to conditionally broadcast events
135
+ *
136
+ * @returns True if event should broadcast
137
+ */
138
+ shouldBroadcast(): boolean;
139
+ }
140
+ //# sourceMappingURL=Event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../src/Events/Event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;GASG;AACH,8BAAsB,KAAK;IACzB;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IAE7C;;;OAGG;IACI,UAAU,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACI,KAAK,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACI,KAAK,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAkC7B;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAqCzC;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;IAchH;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAkClD;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,MAAM,GAAG,MAAM,EAAE;IAIhC;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA0BpC;;;;;;;;;;;;;;OAcG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;CAI3B"}