@orchestr-sh/orchestr 1.6.1 → 1.7.1

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 (159) 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/orchestr.js +10 -0
  23. package/dist/Console/orchestr.js.map +1 -1
  24. package/dist/Contracts/Events/Dispatcher.d.ts +94 -0
  25. package/dist/Contracts/Events/Dispatcher.d.ts.map +1 -0
  26. package/dist/Contracts/Events/Dispatcher.js +9 -0
  27. package/dist/Contracts/Events/Dispatcher.js.map +1 -0
  28. package/dist/Contracts/Events/index.d.ts +7 -0
  29. package/dist/Contracts/Events/index.d.ts.map +1 -0
  30. package/dist/Contracts/Events/index.js +8 -0
  31. package/dist/Contracts/Events/index.js.map +1 -0
  32. package/dist/Database/Ensemble/Ensemble.d.ts +7 -0
  33. package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -1
  34. package/dist/Database/Ensemble/Ensemble.js +119 -0
  35. package/dist/Database/Ensemble/Ensemble.js.map +1 -1
  36. package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -1
  37. package/dist/Database/Ensemble/EnsembleBuilder.js +7 -0
  38. package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -1
  39. package/dist/Database/Ensemble/Events/ModelCreated.d.ts +11 -0
  40. package/dist/Database/Ensemble/Events/ModelCreated.d.ts.map +1 -0
  41. package/dist/Database/Ensemble/Events/ModelCreated.js +16 -0
  42. package/dist/Database/Ensemble/Events/ModelCreated.js.map +1 -0
  43. package/dist/Database/Ensemble/Events/ModelCreating.d.ts +12 -0
  44. package/dist/Database/Ensemble/Events/ModelCreating.d.ts.map +1 -0
  45. package/dist/Database/Ensemble/Events/ModelCreating.js +17 -0
  46. package/dist/Database/Ensemble/Events/ModelCreating.js.map +1 -0
  47. package/dist/Database/Ensemble/Events/ModelDeleted.d.ts +11 -0
  48. package/dist/Database/Ensemble/Events/ModelDeleted.d.ts.map +1 -0
  49. package/dist/Database/Ensemble/Events/ModelDeleted.js +16 -0
  50. package/dist/Database/Ensemble/Events/ModelDeleted.js.map +1 -0
  51. package/dist/Database/Ensemble/Events/ModelDeleting.d.ts +12 -0
  52. package/dist/Database/Ensemble/Events/ModelDeleting.d.ts.map +1 -0
  53. package/dist/Database/Ensemble/Events/ModelDeleting.js +17 -0
  54. package/dist/Database/Ensemble/Events/ModelDeleting.js.map +1 -0
  55. package/dist/Database/Ensemble/Events/ModelEvent.d.ts +17 -0
  56. package/dist/Database/Ensemble/Events/ModelEvent.d.ts.map +1 -0
  57. package/dist/Database/Ensemble/Events/ModelEvent.js +22 -0
  58. package/dist/Database/Ensemble/Events/ModelEvent.js.map +1 -0
  59. package/dist/Database/Ensemble/Events/ModelRetrieved.d.ts +11 -0
  60. package/dist/Database/Ensemble/Events/ModelRetrieved.d.ts.map +1 -0
  61. package/dist/Database/Ensemble/Events/ModelRetrieved.js +16 -0
  62. package/dist/Database/Ensemble/Events/ModelRetrieved.js.map +1 -0
  63. package/dist/Database/Ensemble/Events/ModelSaved.d.ts +11 -0
  64. package/dist/Database/Ensemble/Events/ModelSaved.d.ts.map +1 -0
  65. package/dist/Database/Ensemble/Events/ModelSaved.js +16 -0
  66. package/dist/Database/Ensemble/Events/ModelSaved.js.map +1 -0
  67. package/dist/Database/Ensemble/Events/ModelSaving.d.ts +12 -0
  68. package/dist/Database/Ensemble/Events/ModelSaving.d.ts.map +1 -0
  69. package/dist/Database/Ensemble/Events/ModelSaving.js +17 -0
  70. package/dist/Database/Ensemble/Events/ModelSaving.js.map +1 -0
  71. package/dist/Database/Ensemble/Events/ModelUpdated.d.ts +11 -0
  72. package/dist/Database/Ensemble/Events/ModelUpdated.d.ts.map +1 -0
  73. package/dist/Database/Ensemble/Events/ModelUpdated.js +16 -0
  74. package/dist/Database/Ensemble/Events/ModelUpdated.js.map +1 -0
  75. package/dist/Database/Ensemble/Events/ModelUpdating.d.ts +12 -0
  76. package/dist/Database/Ensemble/Events/ModelUpdating.d.ts.map +1 -0
  77. package/dist/Database/Ensemble/Events/ModelUpdating.js +17 -0
  78. package/dist/Database/Ensemble/Events/ModelUpdating.js.map +1 -0
  79. package/dist/Database/Ensemble/Events/index.d.ts +16 -0
  80. package/dist/Database/Ensemble/Events/index.d.ts.map +1 -0
  81. package/dist/Database/Ensemble/Events/index.js +29 -0
  82. package/dist/Database/Ensemble/Events/index.js.map +1 -0
  83. package/dist/Events/Concerns/Dispatchable.d.ts +121 -0
  84. package/dist/Events/Concerns/Dispatchable.d.ts.map +1 -0
  85. package/dist/Events/Concerns/Dispatchable.js +165 -0
  86. package/dist/Events/Concerns/Dispatchable.js.map +1 -0
  87. package/dist/Events/Contracts/Dispatcher.d.ts +144 -0
  88. package/dist/Events/Contracts/Dispatcher.d.ts.map +1 -0
  89. package/dist/Events/Contracts/Dispatcher.js +3 -0
  90. package/dist/Events/Contracts/Dispatcher.js.map +1 -0
  91. package/dist/Events/Contracts/ShouldDispatchAfterCommit.d.ts +21 -0
  92. package/dist/Events/Contracts/ShouldDispatchAfterCommit.d.ts.map +1 -0
  93. package/dist/Events/Contracts/ShouldDispatchAfterCommit.js +3 -0
  94. package/dist/Events/Contracts/ShouldDispatchAfterCommit.js.map +1 -0
  95. package/dist/Events/Decorators/HandlesEvents.d.ts +83 -0
  96. package/dist/Events/Decorators/HandlesEvents.d.ts.map +1 -0
  97. package/dist/Events/Decorators/HandlesEvents.js +105 -0
  98. package/dist/Events/Decorators/HandlesEvents.js.map +1 -0
  99. package/dist/Events/Dispatcher.d.ts +201 -0
  100. package/dist/Events/Dispatcher.d.ts.map +1 -0
  101. package/dist/Events/Dispatcher.js +359 -0
  102. package/dist/Events/Dispatcher.js.map +1 -0
  103. package/dist/Events/Event.d.ts +164 -0
  104. package/dist/Events/Event.d.ts.map +1 -0
  105. package/dist/Events/Event.js +266 -0
  106. package/dist/Events/Event.js.map +1 -0
  107. package/dist/Events/EventDiscoveryCache.d.ts +205 -0
  108. package/dist/Events/EventDiscoveryCache.d.ts.map +1 -0
  109. package/dist/Events/EventDiscoveryCache.js +310 -0
  110. package/dist/Events/EventDiscoveryCache.js.map +1 -0
  111. package/dist/Events/EventServiceProvider.d.ts +148 -0
  112. package/dist/Events/EventServiceProvider.d.ts.map +1 -0
  113. package/dist/Events/EventServiceProvider.js +258 -0
  114. package/dist/Events/EventServiceProvider.js.map +1 -0
  115. package/dist/Events/NullDispatcher.d.ts +97 -0
  116. package/dist/Events/NullDispatcher.d.ts.map +1 -0
  117. package/dist/Events/NullDispatcher.js +118 -0
  118. package/dist/Events/NullDispatcher.js.map +1 -0
  119. package/dist/Events/PendingDispatch.d.ts +119 -0
  120. package/dist/Events/PendingDispatch.d.ts.map +1 -0
  121. package/dist/Events/PendingDispatch.js +162 -0
  122. package/dist/Events/PendingDispatch.js.map +1 -0
  123. package/dist/Events/index.d.ts +13 -0
  124. package/dist/Events/index.d.ts.map +1 -0
  125. package/dist/Events/index.js +20 -0
  126. package/dist/Events/index.js.map +1 -0
  127. package/dist/Events/types.d.ts +77 -0
  128. package/dist/Events/types.d.ts.map +1 -0
  129. package/dist/Events/types.js +3 -0
  130. package/dist/Events/types.js.map +1 -0
  131. package/dist/Facades/Event.d.ts +200 -0
  132. package/dist/Facades/Event.d.ts.map +1 -0
  133. package/dist/Facades/Event.js +331 -0
  134. package/dist/Facades/Event.js.map +1 -0
  135. package/dist/Foundation/Application.d.ts +33 -0
  136. package/dist/Foundation/Application.d.ts.map +1 -1
  137. package/dist/Foundation/Application.js +40 -0
  138. package/dist/Foundation/Application.js.map +1 -1
  139. package/dist/Listeners/Contracts/ShouldQueue.d.ts +142 -0
  140. package/dist/Listeners/Contracts/ShouldQueue.d.ts.map +1 -0
  141. package/dist/Listeners/Contracts/ShouldQueue.js +20 -0
  142. package/dist/Listeners/Contracts/ShouldQueue.js.map +1 -0
  143. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.d.ts +24 -0
  144. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.d.ts.map +1 -0
  145. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.js +3 -0
  146. package/dist/Listeners/Contracts/ShouldQueueAfterCommit.js.map +1 -0
  147. package/dist/Support/EventDiscovery.d.ts +142 -0
  148. package/dist/Support/EventDiscovery.d.ts.map +1 -0
  149. package/dist/Support/EventDiscovery.js +302 -0
  150. package/dist/Support/EventDiscovery.js.map +1 -0
  151. package/dist/Support/Testing/Fakes/EventFake.d.ts +291 -0
  152. package/dist/Support/Testing/Fakes/EventFake.d.ts.map +1 -0
  153. package/dist/Support/Testing/Fakes/EventFake.js +444 -0
  154. package/dist/Support/Testing/Fakes/EventFake.js.map +1 -0
  155. package/dist/index.d.ts +6 -0
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +11 -1
  158. package/dist/index.js.map +1 -1
  159. package/package.json +3 -3
@@ -0,0 +1,83 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * HandlesEvents Decorator
4
+ *
5
+ * Decorator to explicitly specify which events a listener handles.
6
+ * This is particularly useful for:
7
+ * - Union types (TypeScript can't reflect union type information at runtime)
8
+ * - Multiple events handled by a single listener
9
+ * - Clarifying listener behavior
10
+ *
11
+ * The decorator stores the event types in metadata that can be read by
12
+ * the EventDiscovery system during listener scanning.
13
+ *
14
+ * @param events Array of event class constructors this listener handles
15
+ * @returns Class decorator function
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { HandlesEvents } from '@orchestr/Events/Decorators/HandlesEvents'
20
+ * import { UserRegistered } from '../Events/UserRegistered'
21
+ * import { UserUpdated } from '../Events/UserUpdated'
22
+ *
23
+ * // Single event
24
+ * @HandlesEvents([UserRegistered])
25
+ * class SendWelcomeEmail {
26
+ * handle(event: UserRegistered) {
27
+ * // Send welcome email
28
+ * }
29
+ * }
30
+ *
31
+ * // Multiple events (union type)
32
+ * @HandlesEvents([UserRegistered, UserUpdated])
33
+ * class UserNotificationListener {
34
+ * handle(event: UserRegistered | UserUpdated) {
35
+ * if (event instanceof UserRegistered) {
36
+ * // Handle registration
37
+ * } else {
38
+ * // Handle update
39
+ * }
40
+ * }
41
+ * }
42
+ *
43
+ * // With ShouldQueue
44
+ * @HandlesEvents([OrderPlaced])
45
+ * class ProcessOrderListener implements ShouldQueue {
46
+ * public queue = 'orders'
47
+ *
48
+ * async handle(event: OrderPlaced) {
49
+ * // Process order
50
+ * }
51
+ * }
52
+ * ```
53
+ */
54
+ export declare function HandlesEvents(events: Function[]): ClassDecorator;
55
+ /**
56
+ * Type guard to check if a class has the HandlesEvents decorator
57
+ *
58
+ * @param target Class to check
59
+ * @returns True if class has HandlesEvents metadata
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * if (hasHandlesEventsMetadata(MyListener)) {
64
+ * const events = getHandledEvents(MyListener)
65
+ * console.log('Listener handles:', events)
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function hasHandlesEventsMetadata(target: any): boolean;
70
+ /**
71
+ * Get the event types from a listener class decorated with @HandlesEvents
72
+ *
73
+ * @param target Listener class constructor
74
+ * @returns Array of event class constructors, or empty array if not decorated
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const events = getHandledEvents(SendWelcomeEmail)
79
+ * // Returns: [UserRegistered]
80
+ * ```
81
+ */
82
+ export declare function getHandledEvents(target: any): Function[];
83
+ //# sourceMappingURL=HandlesEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandlesEvents.d.ts","sourceRoot":"","sources":["../../../src/Events/Decorators/HandlesEvents.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAQhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAK7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,CAMxD"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HandlesEvents = HandlesEvents;
4
+ exports.hasHandlesEventsMetadata = hasHandlesEventsMetadata;
5
+ exports.getHandledEvents = getHandledEvents;
6
+ require("reflect-metadata");
7
+ /**
8
+ * HandlesEvents Decorator
9
+ *
10
+ * Decorator to explicitly specify which events a listener handles.
11
+ * This is particularly useful for:
12
+ * - Union types (TypeScript can't reflect union type information at runtime)
13
+ * - Multiple events handled by a single listener
14
+ * - Clarifying listener behavior
15
+ *
16
+ * The decorator stores the event types in metadata that can be read by
17
+ * the EventDiscovery system during listener scanning.
18
+ *
19
+ * @param events Array of event class constructors this listener handles
20
+ * @returns Class decorator function
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { HandlesEvents } from '@orchestr/Events/Decorators/HandlesEvents'
25
+ * import { UserRegistered } from '../Events/UserRegistered'
26
+ * import { UserUpdated } from '../Events/UserUpdated'
27
+ *
28
+ * // Single event
29
+ * @HandlesEvents([UserRegistered])
30
+ * class SendWelcomeEmail {
31
+ * handle(event: UserRegistered) {
32
+ * // Send welcome email
33
+ * }
34
+ * }
35
+ *
36
+ * // Multiple events (union type)
37
+ * @HandlesEvents([UserRegistered, UserUpdated])
38
+ * class UserNotificationListener {
39
+ * handle(event: UserRegistered | UserUpdated) {
40
+ * if (event instanceof UserRegistered) {
41
+ * // Handle registration
42
+ * } else {
43
+ * // Handle update
44
+ * }
45
+ * }
46
+ * }
47
+ *
48
+ * // With ShouldQueue
49
+ * @HandlesEvents([OrderPlaced])
50
+ * class ProcessOrderListener implements ShouldQueue {
51
+ * public queue = 'orders'
52
+ *
53
+ * async handle(event: OrderPlaced) {
54
+ * // Process order
55
+ * }
56
+ * }
57
+ * ```
58
+ */
59
+ function HandlesEvents(events) {
60
+ return function (target) {
61
+ // Store event types in metadata
62
+ // This metadata is read by EventDiscovery.extractEventTypes()
63
+ Reflect.defineMetadata('event:types', events, target);
64
+ return target;
65
+ };
66
+ }
67
+ /**
68
+ * Type guard to check if a class has the HandlesEvents decorator
69
+ *
70
+ * @param target Class to check
71
+ * @returns True if class has HandlesEvents metadata
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * if (hasHandlesEventsMetadata(MyListener)) {
76
+ * const events = getHandledEvents(MyListener)
77
+ * console.log('Listener handles:', events)
78
+ * }
79
+ * ```
80
+ */
81
+ function hasHandlesEventsMetadata(target) {
82
+ if (typeof target !== 'function')
83
+ return false;
84
+ const metadata = Reflect.getMetadata('event:types', target);
85
+ return metadata !== undefined && Array.isArray(metadata);
86
+ }
87
+ /**
88
+ * Get the event types from a listener class decorated with @HandlesEvents
89
+ *
90
+ * @param target Listener class constructor
91
+ * @returns Array of event class constructors, or empty array if not decorated
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const events = getHandledEvents(SendWelcomeEmail)
96
+ * // Returns: [UserRegistered]
97
+ * ```
98
+ */
99
+ function getHandledEvents(target) {
100
+ if (!hasHandlesEventsMetadata(target)) {
101
+ return [];
102
+ }
103
+ return Reflect.getMetadata('event:types', target) || [];
104
+ }
105
+ //# sourceMappingURL=HandlesEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandlesEvents.js","sourceRoot":"","sources":["../../../src/Events/Decorators/HandlesEvents.ts"],"names":[],"mappings":";;AAsDA,sCAQC;AAgBD,4DAKC;AAcD,4CAMC;AAvGD,4BAA0B;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,SAAgB,aAAa,CAAC,MAAkB;IAC9C,OAAO,UAAU,MAAW;QAC1B,gCAAgC;QAChC,8DAA8D;QAC9D,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,wBAAwB,CAAC,MAAW;IAClD,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAE/C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,gBAAgB,CAAC,MAAW;IAC1C,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,201 @@
1
+ import type { Container } from '../Container/Container';
2
+ import type { DispatcherContract } from './Contracts/Dispatcher';
3
+ import type { Event } from './Event';
4
+ import type { EventListener, EventSubscriber } from './types';
5
+ /**
6
+ * Event Dispatcher
7
+ *
8
+ * The core event dispatcher implementation. Manages event listeners,
9
+ * handles wildcard patterns, and dispatches events to registered listeners.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const dispatcher = new Dispatcher(container);
14
+ *
15
+ * // Register listeners
16
+ * dispatcher.listen('user.registered', SendWelcomeEmail);
17
+ * dispatcher.listen('user.*', LogUserActivity);
18
+ *
19
+ * // Dispatch events
20
+ * dispatcher.dispatch(new UserRegistered(user));
21
+ * ```
22
+ */
23
+ export declare class Dispatcher implements DispatcherContract {
24
+ protected container: Container;
25
+ /**
26
+ * Registered event listeners (direct event name matches)
27
+ */
28
+ protected listeners: Map<string, EventListener[]>;
29
+ /**
30
+ * Wildcard event listeners (patterns like 'user.*')
31
+ */
32
+ protected wildcards: Map<string, EventListener[]>;
33
+ /**
34
+ * Queued events waiting to be flushed
35
+ */
36
+ protected queuedEvents: Map<string, Array<{
37
+ payload: any[];
38
+ }>>;
39
+ /**
40
+ * Create a new event dispatcher
41
+ *
42
+ * @param container - The service container for resolving listeners
43
+ */
44
+ constructor(container: Container);
45
+ /**
46
+ * Register an event listener
47
+ *
48
+ * Supports single events, multiple events, and wildcard patterns
49
+ *
50
+ * @param events - Event name(s) to listen for
51
+ * @param listener - Listener to invoke when event is dispatched
52
+ */
53
+ listen(events: string | string[], listener: EventListener): void;
54
+ /**
55
+ * Check if an event has any listeners
56
+ *
57
+ * Checks both direct listeners and wildcard matches
58
+ *
59
+ * @param eventName - The event name to check
60
+ * @returns True if the event has listeners
61
+ */
62
+ hasListeners(eventName: string): boolean;
63
+ /**
64
+ * Register an event subscriber
65
+ *
66
+ * Subscribers can register multiple event listeners at once
67
+ *
68
+ * @param subscriber - The subscriber instance
69
+ */
70
+ subscribe(subscriber: EventSubscriber): void;
71
+ /**
72
+ * Dispatch an event to all listeners
73
+ *
74
+ * @param event - Event name or instance
75
+ * @param payload - Additional arguments to pass to listeners
76
+ * @param halt - Stop dispatching if a listener returns false
77
+ * @returns Array of results from listeners
78
+ */
79
+ dispatch(event: string | Event, payload?: any[], halt?: boolean): any[];
80
+ /**
81
+ * Dispatch an event until a listener returns a non-null response
82
+ *
83
+ * @param event - Event name or instance
84
+ * @param payload - Additional arguments to pass to listeners
85
+ * @returns The first non-null response from a listener
86
+ */
87
+ until(event: string | Event, payload?: any[]): any;
88
+ /**
89
+ * Queue an event for later dispatch
90
+ *
91
+ * @param event - Event name
92
+ * @param payload - Event payload
93
+ */
94
+ push(event: string, payload?: any[]): void;
95
+ /**
96
+ * Flush (dispatch) all queued events for a specific event name
97
+ *
98
+ * @param event - Event name to flush
99
+ */
100
+ flush(event: string): void;
101
+ /**
102
+ * Remove all listeners for an event
103
+ *
104
+ * @param event - Event name
105
+ */
106
+ forget(event: string): void;
107
+ /**
108
+ * Clear all queued events
109
+ */
110
+ forgetPushed(): void;
111
+ /**
112
+ * Get raw listener mappings
113
+ *
114
+ * @returns Map of event names to their listeners
115
+ */
116
+ getRawListeners(): Map<string, EventListener[]>;
117
+ /**
118
+ * Get all listeners for an event (direct + wildcard matches)
119
+ *
120
+ * @param eventName - The event name
121
+ * @returns Array of listeners
122
+ */
123
+ protected getListeners(eventName: string): EventListener[];
124
+ /**
125
+ * Setup a wildcard listener
126
+ *
127
+ * @param event - Wildcard pattern (e.g., 'user.*')
128
+ * @param listener - Listener to invoke
129
+ */
130
+ protected setupWildcardListen(event: string, listener: EventListener): void;
131
+ /**
132
+ * Get all wildcard listeners matching an event name
133
+ *
134
+ * @param eventName - The event name to match
135
+ * @returns Array of matching listeners
136
+ */
137
+ protected getWildcardListeners(eventName: string): EventListener[];
138
+ /**
139
+ * Check if an event name matches a wildcard pattern
140
+ *
141
+ * Supports patterns like:
142
+ * - 'event.*' - Matches 'event.created', 'event.updated', etc.
143
+ * - 'event.*.action' - Matches 'event.user.action', 'event.post.action', etc.
144
+ * - '*' - Matches everything
145
+ *
146
+ * @param pattern - Wildcard pattern
147
+ * @param eventName - Event name to test
148
+ * @returns True if the pattern matches
149
+ */
150
+ protected wildcardMatch(pattern: string, eventName: string): boolean;
151
+ /**
152
+ * Parse event and payload from dispatch arguments
153
+ *
154
+ * @param event - Event name or instance
155
+ * @param payload - Event payload
156
+ * @returns Tuple of [eventName, eventInstance]
157
+ */
158
+ protected parseEventAndPayload(event: string | Event, payload: any[]): [string, Event | null];
159
+ /**
160
+ * Call a listener with the event and payload
161
+ *
162
+ * Handles different listener types (closure, class instance, string reference)
163
+ *
164
+ * @param listener - The listener to call
165
+ * @param event - Event name or instance
166
+ * @param payload - Additional payload arguments
167
+ * @returns The result from the listener
168
+ */
169
+ protected callListener(listener: EventListener, event: string | Event, payload: any[]): any;
170
+ /**
171
+ * Create a callable function from a listener
172
+ *
173
+ * Resolves string listeners from container and wraps class instances
174
+ *
175
+ * @param listener - The listener to convert
176
+ * @param wildcard - Whether this is for a wildcard listener
177
+ * @returns Callable function
178
+ */
179
+ protected makeListener(listener: EventListener, wildcard?: boolean): Function;
180
+ /**
181
+ * Create a listener from a class string reference
182
+ *
183
+ * Resolves the class from the container and calls its handle method
184
+ *
185
+ * @param listener - Class name/path to resolve
186
+ * @param wildcard - Whether this is for a wildcard listener
187
+ * @returns Callable function
188
+ */
189
+ protected createClassListener(listener: string, wildcard?: boolean): Function;
190
+ /**
191
+ * Check if an event should broadcast
192
+ *
193
+ * This is a placeholder for future broadcasting support
194
+ *
195
+ * @param event - The event instance
196
+ * @param payload - The event payload
197
+ * @returns True if should broadcast
198
+ */
199
+ protected shouldBroadcast(event: Event, payload: any[]): boolean;
200
+ }
201
+ //# sourceMappingURL=Dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../src/Events/Dispatcher.ts"],"names":[],"mappings":"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"}