@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,106 @@
1
+ "use strict";
2
+ /**
3
+ * EventListCommand
4
+ *
5
+ * List all registered events and their listeners following Laravel's Artisan pattern
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EventListCommand = void 0;
9
+ const Command_1 = require("../Command");
10
+ class EventListCommand extends Command_1.Command {
11
+ app;
12
+ signature = 'event:list [--event=]';
13
+ description = 'List the application\'s events and listeners';
14
+ constructor(app) {
15
+ super();
16
+ this.app = app;
17
+ }
18
+ async handle(args, options) {
19
+ try {
20
+ // Try to get the dispatcher - will fail gracefully if not available yet
21
+ const dispatcher = this.app.make('events');
22
+ const listeners = dispatcher.getRawListeners();
23
+ if (listeners.size === 0) {
24
+ this.comment('No events have been registered.');
25
+ return;
26
+ }
27
+ const filter = options.event;
28
+ const rows = [];
29
+ for (const [event, listenerList] of listeners) {
30
+ // Filter if event option provided
31
+ if (filter && !event.includes(filter)) {
32
+ continue;
33
+ }
34
+ if (listenerList.length === 0) {
35
+ rows.push([event, 'No listeners']);
36
+ }
37
+ else {
38
+ listenerList.forEach((listener, index) => {
39
+ rows.push([
40
+ index === 0 ? event : '',
41
+ this.formatListener(listener)
42
+ ]);
43
+ });
44
+ }
45
+ // Add separator between events
46
+ if (rows.length > 0 && rows[rows.length - 1][0] !== '') {
47
+ rows.push(['', '']);
48
+ }
49
+ }
50
+ // Remove trailing separator
51
+ if (rows.length > 0 && rows[rows.length - 1][0] === '') {
52
+ rows.pop();
53
+ }
54
+ if (rows.length === 0) {
55
+ this.comment(`No events found matching: ${filter}`);
56
+ return;
57
+ }
58
+ this.newLine();
59
+ this.info('Registered Events and Listeners:');
60
+ this.newLine();
61
+ // Display results in a formatted table
62
+ const maxEventLength = Math.max(...rows.map(row => row[0].length), 'Event'.length);
63
+ const maxListenerLength = Math.max(...rows.map(row => row[1].length), 'Listeners'.length);
64
+ // Header
65
+ this.line(`${'Event'.padEnd(maxEventLength + 2)} ${'Listeners'.padEnd(maxListenerLength)}`);
66
+ this.line('-'.repeat(maxEventLength + maxListenerLength + 3));
67
+ // Rows
68
+ for (const [event, listener] of rows) {
69
+ if (event === '' && listener === '') {
70
+ this.line('');
71
+ }
72
+ else {
73
+ this.line(`${event.padEnd(maxEventLength + 2)} ${listener}`);
74
+ }
75
+ }
76
+ this.newLine();
77
+ this.comment(`Total events: ${listeners.size}`);
78
+ }
79
+ catch (error) {
80
+ if (error.message?.includes('events')) {
81
+ this.error('Event dispatcher not registered.');
82
+ this.comment('Make sure the EventServiceProvider is registered in your application.');
83
+ }
84
+ else {
85
+ throw error;
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Format a listener for display
91
+ */
92
+ formatListener(listener) {
93
+ if (typeof listener === 'string') {
94
+ return listener;
95
+ }
96
+ if (typeof listener === 'function') {
97
+ return listener.name || '<Closure>';
98
+ }
99
+ if (typeof listener === 'object' && listener.constructor) {
100
+ return listener.constructor.name;
101
+ }
102
+ return '<Unknown>';
103
+ }
104
+ }
105
+ exports.EventListCommand = EventListCommand;
106
+ //# sourceMappingURL=EventListCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventListCommand.js","sourceRoot":"","sources":["../../../src/Console/Commands/EventListCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MakeEventCommand
3
+ *
4
+ * Create a new event class following Laravel's Artisan pattern
5
+ */
6
+ import { Command, CommandOptions } from '../Command';
7
+ import { Application } from '../../Foundation/Application';
8
+ export declare class MakeEventCommand extends Command {
9
+ protected app: Application;
10
+ signature: string;
11
+ description: string;
12
+ constructor(app: Application);
13
+ handle(args: string[], options: CommandOptions): Promise<void>;
14
+ /**
15
+ * Get the destination path for the event class
16
+ */
17
+ protected getPath(options: CommandOptions): string;
18
+ /**
19
+ * Check if a file exists
20
+ */
21
+ protected fileExists(filePath: string): Promise<boolean>;
22
+ /**
23
+ * Get the stub template for the event class
24
+ */
25
+ protected getStub(): string;
26
+ }
27
+ //# sourceMappingURL=MakeEventCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeEventCommand.d.ts","sourceRoot":"","sources":["../../../src/Console/Commands/MakeEventCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,qBAAa,gBAAiB,SAAQ,OAAO;IAI/B,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,SAAuB;IAChC,WAAW,SAA8B;gBAEnB,GAAG,EAAE,WAAW;IAIhC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCpE;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAIlD;;OAEG;cACa,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM;CAc5B"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * MakeEventCommand
4
+ *
5
+ * Create a new event class following Laravel's Artisan pattern
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.MakeEventCommand = void 0;
42
+ const Command_1 = require("../Command");
43
+ const fs = __importStar(require("fs/promises"));
44
+ const path = __importStar(require("path"));
45
+ class MakeEventCommand extends Command_1.Command {
46
+ app;
47
+ signature = 'make:event <name>';
48
+ description = 'Create a new event class';
49
+ constructor(app) {
50
+ super();
51
+ this.app = app;
52
+ }
53
+ async handle(args, options) {
54
+ const name = args[0];
55
+ if (!name) {
56
+ this.error('Event name is required.');
57
+ this.line('Usage: make:event <name>');
58
+ return;
59
+ }
60
+ const eventsPath = this.getPath(options);
61
+ const filePath = path.join(eventsPath, `${name}.ts`);
62
+ // Check if file already exists
63
+ if (await this.fileExists(filePath)) {
64
+ this.error(`Event already exists: ${filePath}`);
65
+ return;
66
+ }
67
+ // Create directory if it doesn't exist
68
+ await fs.mkdir(eventsPath, { recursive: true });
69
+ // Generate file content
70
+ const content = this.getStub()
71
+ .replace(/\{\{className\}\}/g, name);
72
+ // Write file
73
+ await fs.writeFile(filePath, content);
74
+ this.info(`Event created successfully: ${filePath}`);
75
+ this.newLine();
76
+ this.comment('Next steps:');
77
+ this.comment('1. Add properties to the event constructor');
78
+ this.comment(`2. Create a listener with: make:listener <name> --event=${name}`);
79
+ }
80
+ /**
81
+ * Get the destination path for the event class
82
+ */
83
+ getPath(options) {
84
+ return options.path || this.app.path('Events');
85
+ }
86
+ /**
87
+ * Check if a file exists
88
+ */
89
+ async fileExists(filePath) {
90
+ try {
91
+ await fs.access(filePath);
92
+ return true;
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ /**
99
+ * Get the stub template for the event class
100
+ */
101
+ getStub() {
102
+ return `/**
103
+ * {{className}} Event
104
+ *
105
+ * This event is dispatched when...
106
+ */
107
+ export class {{className}} {
108
+ constructor(
109
+ // Add your event properties here
110
+ // Example: public readonly user: User
111
+ ) {}
112
+ }
113
+ `;
114
+ }
115
+ }
116
+ exports.MakeEventCommand = MakeEventCommand;
117
+ //# sourceMappingURL=MakeEventCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeEventCommand.js","sourceRoot":"","sources":["../../../src/Console/Commands/MakeEventCommand.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,wCAAqD;AAErD,gDAAkC;AAClC,2CAA6B;AAE7B,MAAa,gBAAiB,SAAQ,iBAAO;IAIrB;IAHtB,SAAS,GAAG,mBAAmB,CAAC;IAChC,WAAW,GAAG,0BAA0B,CAAC;IAEzC,YAAsB,GAAgB;QACpC,KAAK,EAAE,CAAC;QADY,QAAG,GAAH,GAAG,CAAa;IAEtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAc,EAAE,OAAuB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAErD,+BAA+B;QAC/B,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;aAC3B,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAEvC,aAAa;QACb,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,OAAuB;QACvC,OAAQ,OAAO,CAAC,IAAe,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CAAC,QAAgB;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACO,OAAO;QACf,OAAO;;;;;;;;;;;CAWV,CAAC;IACA,CAAC;CACF;AA/ED,4CA+EC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MakeListenerCommand
3
+ *
4
+ * Create a new event listener class following Laravel's Artisan pattern
5
+ */
6
+ import { Command, CommandOptions } from '../Command';
7
+ import { Application } from '../../Foundation/Application';
8
+ export declare class MakeListenerCommand extends Command {
9
+ protected app: Application;
10
+ signature: string;
11
+ description: string;
12
+ constructor(app: Application);
13
+ handle(args: string[], options: CommandOptions): Promise<void>;
14
+ /**
15
+ * Get the destination path for the listener class
16
+ */
17
+ protected getPath(options: CommandOptions): string;
18
+ /**
19
+ * Check if a file exists
20
+ */
21
+ protected fileExists(filePath: string): Promise<boolean>;
22
+ /**
23
+ * Get the stub template for the listener class
24
+ */
25
+ protected getStub(queued: boolean, event?: string): string;
26
+ }
27
+ //# sourceMappingURL=MakeListenerCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeListenerCommand.d.ts","sourceRoot":"","sources":["../../../src/Console/Commands/MakeListenerCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,qBAAa,mBAAoB,SAAQ,OAAO;IAIlC,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,SAAgD;IACzD,WAAW,SAAuC;gBAE5B,GAAG,EAAE,WAAW;IAIhC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CpE;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAIlD;;OAEG;cACa,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CA6C3D"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ /**
3
+ * MakeListenerCommand
4
+ *
5
+ * Create a new event listener class following Laravel's Artisan pattern
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.MakeListenerCommand = void 0;
42
+ const Command_1 = require("../Command");
43
+ const fs = __importStar(require("fs/promises"));
44
+ const path = __importStar(require("path"));
45
+ class MakeListenerCommand extends Command_1.Command {
46
+ app;
47
+ signature = 'make:listener <name> [--event=] [--queued]';
48
+ description = 'Create a new event listener class';
49
+ constructor(app) {
50
+ super();
51
+ this.app = app;
52
+ }
53
+ async handle(args, options) {
54
+ const name = args[0];
55
+ if (!name) {
56
+ this.error('Listener name is required.');
57
+ this.line('Usage: make:listener <name> [--event=EventName] [--queued]');
58
+ return;
59
+ }
60
+ const event = options.event;
61
+ const queued = options.queued === true;
62
+ const listenersPath = this.getPath(options);
63
+ const filePath = path.join(listenersPath, `${name}.ts`);
64
+ // Check if file already exists
65
+ if (await this.fileExists(filePath)) {
66
+ this.error(`Listener already exists: ${filePath}`);
67
+ return;
68
+ }
69
+ // Create directory if it doesn't exist
70
+ await fs.mkdir(listenersPath, { recursive: true });
71
+ // Generate file content
72
+ const content = this.getStub(queued, event)
73
+ .replace(/\{\{className\}\}/g, name)
74
+ .replace(/\{\{eventClass\}\}/g, event || 'Event');
75
+ // Write file
76
+ await fs.writeFile(filePath, content);
77
+ this.info(`Listener created successfully: ${filePath}`);
78
+ if (event) {
79
+ this.newLine();
80
+ this.comment('Don\'t forget to register this listener in your EventServiceProvider:');
81
+ this.comment(` protected listen = {`);
82
+ this.comment(` ${event}: '${name}',`);
83
+ this.comment(` }`);
84
+ }
85
+ else {
86
+ this.newLine();
87
+ this.comment('Remember to specify the event type in the handle method.');
88
+ }
89
+ }
90
+ /**
91
+ * Get the destination path for the listener class
92
+ */
93
+ getPath(options) {
94
+ return options.path || this.app.path('Listeners');
95
+ }
96
+ /**
97
+ * Check if a file exists
98
+ */
99
+ async fileExists(filePath) {
100
+ try {
101
+ await fs.access(filePath);
102
+ return true;
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ }
108
+ /**
109
+ * Get the stub template for the listener class
110
+ */
111
+ getStub(queued, event) {
112
+ if (queued) {
113
+ return `import { ShouldQueue } from '../../Listeners/Contracts/ShouldQueue';${event ? `\nimport { ${event} } from '../Events/${event}';` : ''}
114
+
115
+ /**
116
+ * {{className}} Listener
117
+ *
118
+ * This listener will be queued automatically
119
+ */
120
+ export class {{className}} implements ShouldQueue {
121
+ // Queue configuration
122
+ public connection = 'default';
123
+ public queue = 'listeners';
124
+ public tries = 3;
125
+
126
+ /**
127
+ * Handle the event
128
+ */
129
+ async handle(event: {{eventClass}}): Promise<void> {
130
+ // Handle the event
131
+ }
132
+
133
+ /**
134
+ * Handle a job failure
135
+ */
136
+ async failed(event: {{eventClass}}, error: Error): Promise<void> {
137
+ // Handle the failure
138
+ }
139
+ }
140
+ `;
141
+ }
142
+ return `${event ? `import { ${event} } from '../Events/${event}';\n\n` : ''}/**
143
+ * {{className}} Listener
144
+ */
145
+ export class {{className}} {
146
+ /**
147
+ * Handle the event
148
+ */
149
+ handle(event: {{eventClass}}): void {
150
+ // Handle the event
151
+ }
152
+ }
153
+ `;
154
+ }
155
+ }
156
+ exports.MakeListenerCommand = MakeListenerCommand;
157
+ //# sourceMappingURL=MakeListenerCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeListenerCommand.js","sourceRoot":"","sources":["../../../src/Console/Commands/MakeListenerCommand.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,wCAAqD;AAErD,gDAAkC;AAClC,2CAA6B;AAE7B,MAAa,mBAAoB,SAAQ,iBAAO;IAIxB;IAHtB,SAAS,GAAG,4CAA4C,CAAC;IACzD,WAAW,GAAG,mCAAmC,CAAC;IAElD,YAAsB,GAAgB;QACpC,KAAK,EAAE,CAAC;QADY,QAAG,GAAH,GAAG,CAAa;IAEtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAc,EAAE,OAAuB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;QAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAExD,+BAA+B;QAC/B,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;aACxC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;aACnC,OAAO,CAAC,qBAAqB,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC;QAEpD,aAAa;QACb,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QAExD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC;YACtF,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,OAAuB;QACvC,OAAQ,OAAO,CAAC,IAAe,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CAAC,QAAgB;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,MAAe,EAAE,KAAc;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,uEAAuE,KAAK,CAAC,CAAC,CAAC,cAAc,KAAK,sBAAsB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlJ,CAAC;QACE,CAAC;QAED,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;CAW9E,CAAC;IACA,CAAC;CACF;AAzHD,kDAyHC"}
@@ -17,6 +17,11 @@ const MigrateStatusCommand_1 = require("./Commands/MigrateStatusCommand");
17
17
  const MakeMigrationCommand_1 = require("./Commands/MakeMigrationCommand");
18
18
  const SeedCommand_1 = require("./Commands/SeedCommand");
19
19
  const MakeSeederCommand_1 = require("./Commands/MakeSeederCommand");
20
+ const MakeEventCommand_1 = require("./Commands/MakeEventCommand");
21
+ const MakeListenerCommand_1 = require("./Commands/MakeListenerCommand");
22
+ const EventListCommand_1 = require("./Commands/EventListCommand");
23
+ const EventCacheCommand_1 = require("./Commands/EventCacheCommand");
24
+ const EventClearCommand_1 = require("./Commands/EventClearCommand");
20
25
  // Create application instance
21
26
  const app = new Application_1.Application();
22
27
  // Create console kernel
@@ -33,6 +38,11 @@ class OrchestrKernel extends ConsoleKernel_1.ConsoleKernel {
33
38
  new MakeMigrationCommand_1.MakeMigrationCommand(this.app),
34
39
  new SeedCommand_1.SeedCommand(this.app),
35
40
  new MakeSeederCommand_1.MakeSeederCommand(this.app),
41
+ new MakeEventCommand_1.MakeEventCommand(this.app),
42
+ new MakeListenerCommand_1.MakeListenerCommand(this.app),
43
+ new EventListCommand_1.EventListCommand(this.app),
44
+ new EventCacheCommand_1.EventCacheCommand(this.app),
45
+ new EventClearCommand_1.EventClearCommand(this.app),
36
46
  ]);
37
47
  }
38
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestr.js","sourceRoot":"","sources":["../../src/Console/orchestr.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,2DAAwD;AACxD,mDAAgD;AAChD,8DAA2D;AAC3D,8EAA2E;AAC3E,wEAAqE;AACrE,4EAAyE;AACzE,wEAAqE;AACrE,0EAAuE;AACvE,0EAAuE;AACvE,wDAAqD;AACrD,oEAAiE;AAEjE,8BAA8B;AAC9B,MAAM,GAAG,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE9B,wBAAwB;AACxB,MAAM,cAAe,SAAQ,6BAAa;IAC9B,gBAAgB;QACxB,8BAA8B;QAC9B,IAAI,CAAC,YAAY,CAAC;YAChB,IAAI,+BAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,IAAI,+CAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;YACpC,IAAI,yCAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,6CAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC,IAAI,yCAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,IAAI,yBAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACzB,IAAI,qCAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;CACF;AAED,cAAc;AACd,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"orchestr.js","sourceRoot":"","sources":["../../src/Console/orchestr.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,2DAAwD;AACxD,mDAAgD;AAChD,8DAA2D;AAC3D,8EAA2E;AAC3E,wEAAqE;AACrE,4EAAyE;AACzE,wEAAqE;AACrE,0EAAuE;AACvE,0EAAuE;AACvE,wDAAqD;AACrD,oEAAiE;AACjE,kEAA+D;AAC/D,wEAAqE;AACrE,kEAA+D;AAC/D,oEAAiE;AACjE,oEAAiE;AAEjE,8BAA8B;AAC9B,MAAM,GAAG,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE9B,wBAAwB;AACxB,MAAM,cAAe,SAAQ,6BAAa;IAC9B,gBAAgB;QACxB,8BAA8B;QAC9B,IAAI,CAAC,YAAY,CAAC;YAChB,IAAI,+BAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,IAAI,+CAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;YACpC,IAAI,yCAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,6CAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC,IAAI,yCAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,IAAI,yBAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACzB,IAAI,qCAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,IAAI,mCAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,IAAI,yCAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,IAAI,mCAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,IAAI,qCAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,IAAI,qCAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;CACF;AAED,cAAc;AACd,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Dispatcher Contract
3
+ *
4
+ * Defines the interface for the event dispatcher
5
+ * This is the minimum contract needed for Task 3 implementation
6
+ */
7
+ import type { Event } from '../../Events/Event';
8
+ /**
9
+ * Event listener type
10
+ * Can be a class instance, closure, or string reference
11
+ */
12
+ export type EventListener<TEvent extends Event = Event> = {
13
+ handle(event: TEvent): void | false | Promise<void | false>;
14
+ } | ((event: TEvent) => void | false | Promise<void | false>) | string;
15
+ /**
16
+ * Event subscriber interface
17
+ */
18
+ export interface EventSubscriber {
19
+ subscribe(events: DispatcherContract): void | Record<string, string | string[]>;
20
+ }
21
+ /**
22
+ * Dispatcher Contract Interface
23
+ *
24
+ * Provides event dispatching, listener registration, and queue management
25
+ */
26
+ export interface DispatcherContract {
27
+ /**
28
+ * Register an event listener with the dispatcher
29
+ *
30
+ * @param events - Event name(s) to listen for
31
+ * @param listener - Listener callback or class
32
+ */
33
+ listen(events: string | string[], listener: EventListener): void;
34
+ /**
35
+ * Determine if a given event has listeners
36
+ *
37
+ * @param eventName - Name of the event
38
+ * @returns True if listeners exist
39
+ */
40
+ hasListeners(eventName: string): boolean;
41
+ /**
42
+ * Register an event subscriber with the dispatcher
43
+ *
44
+ * @param subscriber - Event subscriber instance
45
+ */
46
+ subscribe(subscriber: EventSubscriber): void;
47
+ /**
48
+ * Dispatch an event and call the listeners
49
+ *
50
+ * @param event - Event name or instance
51
+ * @param payload - Additional data to pass to listeners
52
+ * @param halt - Stop on first non-null response
53
+ * @returns Array of listener responses
54
+ */
55
+ dispatch(event: string | Event, payload?: any[], halt?: boolean): any[];
56
+ /**
57
+ * Dispatch an event until the first non-null response
58
+ *
59
+ * @param event - Event name or instance
60
+ * @param payload - Additional data to pass to listeners
61
+ * @returns First non-null response
62
+ */
63
+ until(event: string | Event, payload?: any[]): any;
64
+ /**
65
+ * Push an event onto the queue for later dispatch
66
+ *
67
+ * @param event - Event name
68
+ * @param payload - Event data
69
+ */
70
+ push(event: string, payload?: any[]): void;
71
+ /**
72
+ * Flush a set of pushed events
73
+ *
74
+ * @param event - Event name to flush
75
+ */
76
+ flush(event: string): void;
77
+ /**
78
+ * Remove all listeners for an event
79
+ *
80
+ * @param event - Event name
81
+ */
82
+ forget(event: string): void;
83
+ /**
84
+ * Forget all pushed events
85
+ */
86
+ forgetPushed(): void;
87
+ /**
88
+ * Get the raw listeners registered with the dispatcher
89
+ *
90
+ * @returns Map of event names to listeners
91
+ */
92
+ getRawListeners(): Map<string, EventListener[]>;
93
+ }
94
+ //# sourceMappingURL=Dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../../src/Contracts/Events/Dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,IAClD;IAAE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;CAAE,GAC/D,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GACzD,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CACjF;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEjE;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IAE7C;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,CAAC;IAExE;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAEnD;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE3C;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;;;OAIG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;CACjD"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Dispatcher Contract
4
+ *
5
+ * Defines the interface for the event dispatcher
6
+ * This is the minimum contract needed for Task 3 implementation
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=Dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.js","sourceRoot":"","sources":["../../../src/Contracts/Events/Dispatcher.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Event Contracts
3
+ *
4
+ * Type definitions and interfaces for the events system
5
+ */
6
+ export type { DispatcherContract, EventListener, EventSubscriber } from './Dispatcher';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Contracts/Events/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Event Contracts
4
+ *
5
+ * Type definitions and interfaces for the events system
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Contracts/Events/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -289,5 +289,12 @@ export declare abstract class Ensemble extends HasRelationshipsMixin {
289
289
  * Get the name of the "created at" column
290
290
  */
291
291
  getCreatedAtColumn(): string | null;
292
+ /**
293
+ * Fire the given model event
294
+ *
295
+ * @param event - Event name (saving, saved, creating, created, etc.)
296
+ * @returns false if event is halting and a listener returned false, undefined otherwise
297
+ */
298
+ protected fireModelEvent(event: string): Promise<boolean | undefined>;
292
299
  }
293
300
  //# sourceMappingURL=Ensemble.d.ts.map