@powerhousedao/reactor 5.0.0-staging.12 → 5.0.0-staging.13

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 (131) hide show
  1. package/dist/src/client/reactor-client.d.ts +103 -0
  2. package/dist/src/client/reactor-client.d.ts.map +1 -0
  3. package/dist/src/client/reactor-client.js +182 -0
  4. package/dist/src/client/reactor-client.js.map +1 -0
  5. package/dist/src/client/types.d.ts +213 -0
  6. package/dist/src/client/types.d.ts.map +1 -0
  7. package/dist/src/client/types.js +14 -0
  8. package/dist/src/client/types.js.map +1 -0
  9. package/dist/src/core/builder.d.ts +20 -0
  10. package/dist/src/core/builder.d.ts.map +1 -0
  11. package/dist/src/core/builder.js +47 -0
  12. package/dist/src/core/builder.js.map +1 -0
  13. package/dist/src/{reactor.d.ts → core/reactor.d.ts} +4 -5
  14. package/dist/src/core/reactor.d.ts.map +1 -0
  15. package/dist/src/{reactor.js → core/reactor.js} +37 -6
  16. package/dist/src/core/reactor.js.map +1 -0
  17. package/dist/src/{interfaces/reactor.d.ts → core/types.d.ts} +3 -3
  18. package/dist/src/core/types.d.ts.map +1 -0
  19. package/dist/src/core/types.js +2 -0
  20. package/dist/src/core/types.js.map +1 -0
  21. package/dist/src/{utils.d.ts → core/utils.d.ts} +1 -1
  22. package/dist/src/core/utils.d.ts.map +1 -0
  23. package/dist/src/core/utils.js.map +1 -0
  24. package/dist/src/index.d.ts +9 -2
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +8 -1
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/queue/queue.d.ts.map +1 -1
  29. package/dist/src/queue/queue.js +43 -28
  30. package/dist/src/queue/queue.js.map +1 -1
  31. package/dist/src/shared/awaiter.d.ts +32 -0
  32. package/dist/src/shared/awaiter.d.ts.map +1 -0
  33. package/dist/src/shared/awaiter.js +132 -0
  34. package/dist/src/shared/awaiter.js.map +1 -0
  35. package/dist/src/shared/types.d.ts +3 -0
  36. package/dist/src/shared/types.d.ts.map +1 -1
  37. package/dist/src/shared/types.js.map +1 -1
  38. package/dist/src/signer/passthrough-signer.d.ts +6 -0
  39. package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
  40. package/dist/src/signer/passthrough-signer.js +6 -0
  41. package/dist/src/signer/passthrough-signer.js.map +1 -0
  42. package/dist/src/signer/types.d.ts +15 -0
  43. package/dist/src/signer/types.d.ts.map +1 -0
  44. package/dist/src/signer/types.js +2 -0
  45. package/dist/src/signer/types.js.map +1 -0
  46. package/dist/src/subs/default-error-handler.d.ts +13 -0
  47. package/dist/src/subs/default-error-handler.d.ts.map +1 -0
  48. package/dist/src/subs/default-error-handler.js +27 -0
  49. package/dist/src/subs/default-error-handler.js.map +1 -0
  50. package/dist/src/subs/react-subscription-manager.d.ts +45 -0
  51. package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
  52. package/dist/src/subs/react-subscription-manager.js +185 -0
  53. package/dist/src/subs/react-subscription-manager.js.map +1 -0
  54. package/dist/src/subs/types.d.ts +64 -0
  55. package/dist/src/subs/types.d.ts.map +1 -0
  56. package/dist/src/subs/types.js +2 -0
  57. package/dist/src/subs/types.js.map +1 -0
  58. package/package.json +6 -6
  59. package/dist/bench/event-bus.bench.d.ts +0 -2
  60. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  61. package/dist/bench/event-bus.bench.js +0 -228
  62. package/dist/bench/event-bus.bench.js.map +0 -1
  63. package/dist/bench/queue-only.bench.d.ts +0 -2
  64. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  65. package/dist/bench/queue-only.bench.js +0 -46
  66. package/dist/bench/queue-only.bench.js.map +0 -1
  67. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  68. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  69. package/dist/bench/reactor-throughput.bench.js +0 -144
  70. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  71. package/dist/src/interfaces/reactor.d.ts.map +0 -1
  72. package/dist/src/interfaces/reactor.js +0 -2
  73. package/dist/src/interfaces/reactor.js.map +0 -1
  74. package/dist/src/reactor.d.ts.map +0 -1
  75. package/dist/src/reactor.js.map +0 -1
  76. package/dist/src/utils.d.ts.map +0 -1
  77. package/dist/src/utils.js.map +0 -1
  78. package/dist/test/event-bus.test.d.ts +0 -2
  79. package/dist/test/event-bus.test.d.ts.map +0 -1
  80. package/dist/test/event-bus.test.js +0 -541
  81. package/dist/test/event-bus.test.js.map +0 -1
  82. package/dist/test/executor/executor-integration.test.d.ts +0 -2
  83. package/dist/test/executor/executor-integration.test.d.ts.map +0 -1
  84. package/dist/test/executor/executor-integration.test.js +0 -287
  85. package/dist/test/executor/executor-integration.test.js.map +0 -1
  86. package/dist/test/executor/job-execution-handle.test.d.ts +0 -2
  87. package/dist/test/executor/job-execution-handle.test.d.ts.map +0 -1
  88. package/dist/test/executor/job-execution-handle.test.js +0 -272
  89. package/dist/test/executor/job-execution-handle.test.js.map +0 -1
  90. package/dist/test/executor/simple-job-executor-manager.test.d.ts +0 -2
  91. package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +0 -1
  92. package/dist/test/executor/simple-job-executor-manager.test.js +0 -132
  93. package/dist/test/executor/simple-job-executor-manager.test.js.map +0 -1
  94. package/dist/test/executor/simple-job-executor.test.d.ts +0 -2
  95. package/dist/test/executor/simple-job-executor.test.d.ts.map +0 -1
  96. package/dist/test/executor/simple-job-executor.test.js +0 -139
  97. package/dist/test/executor/simple-job-executor.test.js.map +0 -1
  98. package/dist/test/factories.d.ts +0 -123
  99. package/dist/test/factories.d.ts.map +0 -1
  100. package/dist/test/factories.js +0 -319
  101. package/dist/test/factories.js.map +0 -1
  102. package/dist/test/integration/document-drive-integration.test.d.ts +0 -2
  103. package/dist/test/integration/document-drive-integration.test.d.ts.map +0 -1
  104. package/dist/test/integration/document-drive-integration.test.js +0 -1102
  105. package/dist/test/integration/document-drive-integration.test.js.map +0 -1
  106. package/dist/test/integration/reactor-read.test.d.ts +0 -2
  107. package/dist/test/integration/reactor-read.test.d.ts.map +0 -1
  108. package/dist/test/integration/reactor-read.test.js +0 -291
  109. package/dist/test/integration/reactor-read.test.js.map +0 -1
  110. package/dist/test/queue/queue-integration.test.d.ts +0 -2
  111. package/dist/test/queue/queue-integration.test.d.ts.map +0 -1
  112. package/dist/test/queue/queue-integration.test.js +0 -322
  113. package/dist/test/queue/queue-integration.test.js.map +0 -1
  114. package/dist/test/queue/queue.test.d.ts +0 -2
  115. package/dist/test/queue/queue.test.d.ts.map +0 -1
  116. package/dist/test/queue/queue.test.js +0 -770
  117. package/dist/test/queue/queue.test.js.map +0 -1
  118. package/dist/test/registry/registry.test.d.ts +0 -2
  119. package/dist/test/registry/registry.test.d.ts.map +0 -1
  120. package/dist/test/registry/registry.test.js +0 -182
  121. package/dist/test/registry/registry.test.js.map +0 -1
  122. package/dist/test/utils.test.d.ts +0 -2
  123. package/dist/test/utils.test.d.ts.map +0 -1
  124. package/dist/test/utils.test.js +0 -66
  125. package/dist/test/utils.test.js.map +0 -1
  126. package/dist/tsconfig.tsbuildinfo +0 -1
  127. package/dist/vitest.config.d.ts +0 -3
  128. package/dist/vitest.config.d.ts.map +0 -1
  129. package/dist/vitest.config.js +0 -11
  130. package/dist/vitest.config.js.map +0 -1
  131. /package/dist/src/{utils.js → core/utils.js} +0 -0
@@ -1,541 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- import { EventBusAggregateError } from "../src/events/types.js";
4
- describe("EventBus", () => {
5
- describe("order of subscriber execution", () => {
6
- it("should execute subscribers in registration order", async () => {
7
- const eventBus = new EventBus();
8
- const executionOrder = [];
9
- const eventType = 1;
10
- // Register subscribers in specific order
11
- eventBus.subscribe(eventType, () => {
12
- executionOrder.push(1);
13
- });
14
- eventBus.subscribe(eventType, () => {
15
- executionOrder.push(2);
16
- });
17
- eventBus.subscribe(eventType, () => {
18
- executionOrder.push(3);
19
- });
20
- await eventBus.emit(eventType, {});
21
- expect(executionOrder).toEqual([1, 2, 3]);
22
- });
23
- it("should maintain order even with async subscribers", async () => {
24
- const eventBus = new EventBus();
25
- const executionOrder = [];
26
- const eventType = 1;
27
- // Mix of sync and async subscribers with different delays
28
- eventBus.subscribe(eventType, async () => {
29
- await new Promise((resolve) => setTimeout(resolve, 50));
30
- executionOrder.push(1);
31
- });
32
- eventBus.subscribe(eventType, () => {
33
- executionOrder.push(2);
34
- });
35
- eventBus.subscribe(eventType, async () => {
36
- await new Promise((resolve) => setTimeout(resolve, 10));
37
- executionOrder.push(3);
38
- });
39
- await eventBus.emit(eventType, {});
40
- // With sequential execution, order should be preserved regardless of delays
41
- expect(executionOrder).toEqual([1, 2, 3]);
42
- });
43
- it("should preserve order when subscribers are added during emission", async () => {
44
- const eventBus = new EventBus();
45
- const executionOrder = [];
46
- const eventType = 1;
47
- eventBus.subscribe(eventType, () => {
48
- executionOrder.push(1);
49
- // Add a new subscriber during emission
50
- eventBus.subscribe(eventType, () => {
51
- executionOrder.push(4);
52
- });
53
- });
54
- eventBus.subscribe(eventType, () => {
55
- executionOrder.push(2);
56
- });
57
- eventBus.subscribe(eventType, () => {
58
- executionOrder.push(3);
59
- });
60
- await eventBus.emit(eventType, {});
61
- // The subscriber added during emission should not be called in this cycle
62
- expect(executionOrder).toEqual([1, 2, 3]);
63
- // But should be called in the next emission
64
- executionOrder.length = 0;
65
- await eventBus.emit(eventType, {});
66
- expect(executionOrder).toEqual([1, 2, 3, 4]);
67
- });
68
- });
69
- describe("concurrent emits", () => {
70
- it("should handle multiple concurrent emits without blocking", async () => {
71
- const eventBus = new EventBus();
72
- const results = [];
73
- const eventType1 = 1;
74
- const eventType2 = 2;
75
- // Subscriber for event type 1 with delay
76
- eventBus.subscribe(eventType1, async (type, data) => {
77
- await new Promise((resolve) => setTimeout(resolve, 100));
78
- results.push({ eventType: type, data, timestampUtcMs: Date.now() });
79
- });
80
- // Subscriber for event type 2 with shorter delay
81
- eventBus.subscribe(eventType2, async (type, data) => {
82
- await new Promise((resolve) => setTimeout(resolve, 50));
83
- results.push({ eventType: type, data, timestampUtcMs: Date.now() });
84
- });
85
- const startTime = Date.now();
86
- // Emit both events concurrently
87
- const [result1, result2] = await Promise.all([
88
- eventBus.emit(eventType1, { message: "event1" }),
89
- eventBus.emit(eventType2, { message: "event2" }),
90
- ]);
91
- const endTime = Date.now();
92
- const totalTime = endTime - startTime;
93
- // Both emits should complete
94
- expect(result1).toBeUndefined();
95
- expect(result2).toBeUndefined();
96
- // Should have results for both events
97
- expect(results).toHaveLength(2);
98
- // Event 2 should complete first due to shorter delay
99
- expect(results[0].eventType).toBe(2);
100
- expect(results[1].eventType).toBe(1);
101
- // Total time should be closer to 100ms (longer delay) than 150ms (sum of delays)
102
- // This proves they ran concurrently
103
- expect(totalTime).toBeLessThan(150);
104
- expect(totalTime).toBeGreaterThan(90);
105
- });
106
- it("should handle concurrent emits of the same event type", async () => {
107
- const eventBus = new EventBus();
108
- const results = [];
109
- const eventType = 1;
110
- // Multiple subscribers with different delays
111
- eventBus.subscribe(eventType, async (type, data) => {
112
- await new Promise((resolve) => setTimeout(resolve, 30));
113
- results.push({
114
- emitId: data.emitId ?? "",
115
- subscriberId: 1,
116
- timestampUtcMs: Date.now(),
117
- });
118
- });
119
- eventBus.subscribe(eventType, async (type, data) => {
120
- await new Promise((resolve) => setTimeout(resolve, 20));
121
- results.push({
122
- emitId: data.emitId ?? "",
123
- subscriberId: 2,
124
- timestampUtcMs: Date.now(),
125
- });
126
- });
127
- // Emit the same event type concurrently
128
- await Promise.all([
129
- eventBus.emit(eventType, { emitId: "emit1" }),
130
- eventBus.emit(eventType, { emitId: "emit2" }),
131
- eventBus.emit(eventType, { emitId: "emit3" }),
132
- ]);
133
- // Should have 6 results total (3 emits × 2 subscribers)
134
- expect(results).toHaveLength(6);
135
- // Each emit should have triggered both subscribers
136
- const emit1Results = results.filter((r) => r.emitId === "emit1");
137
- const emit2Results = results.filter((r) => r.emitId === "emit2");
138
- const emit3Results = results.filter((r) => r.emitId === "emit3");
139
- expect(emit1Results).toHaveLength(2);
140
- expect(emit2Results).toHaveLength(2);
141
- expect(emit3Results).toHaveLength(2);
142
- });
143
- });
144
- describe("sync and async subscribers", () => {
145
- it("should handle mix of synchronous and asynchronous subscribers", async () => {
146
- const eventBus = new EventBus();
147
- const results = [];
148
- const eventType = 1;
149
- // Synchronous subscriber
150
- eventBus.subscribe(eventType, (type, data) => {
151
- results.push({ type: "sync", value: data.value ?? 0 });
152
- });
153
- // Asynchronous subscriber
154
- eventBus.subscribe(eventType, async (type, data) => {
155
- await new Promise((resolve) => setTimeout(resolve, 10));
156
- results.push({ type: "async", value: data.value ?? 0 });
157
- });
158
- // Another synchronous subscriber
159
- eventBus.subscribe(eventType, (type, data) => {
160
- results.push({ type: "sync2", value: data.value ?? 0 });
161
- });
162
- await eventBus.emit(eventType, { value: 42 });
163
- expect(results).toHaveLength(3);
164
- // With sequential execution, all subscribers complete in registration order
165
- expect(results[0]).toEqual({ type: "sync", value: 42 });
166
- expect(results[1]).toEqual({ type: "async", value: 42 });
167
- expect(results[2]).toEqual({ type: "sync2", value: 42 });
168
- });
169
- it("should handle subscribers that return promises vs void", async () => {
170
- const eventBus = new EventBus();
171
- const results = [];
172
- const eventType = 1;
173
- // Subscriber returning void
174
- eventBus.subscribe(eventType, () => {
175
- results.push("void");
176
- });
177
- // Subscriber returning Promise<void>
178
- eventBus.subscribe(eventType, async () => {
179
- await new Promise((resolve) => setTimeout(resolve, 10));
180
- results.push("promise-void");
181
- });
182
- // Subscriber returning a value (should be ignored)
183
- eventBus.subscribe(eventType, () => {
184
- results.push("value");
185
- // Don't return anything to avoid type error
186
- });
187
- await eventBus.emit(eventType, {});
188
- // With sequential execution, all complete in registration order
189
- expect(results).toEqual(["void", "promise-void", "value"]);
190
- });
191
- it("should handle synchronous errors in async context", async () => {
192
- const eventBus = new EventBus();
193
- const eventType = 1;
194
- eventBus.subscribe(eventType, () => {
195
- throw new Error("Sync error");
196
- });
197
- eventBus.subscribe(eventType, () => {
198
- throw new Error("Async error");
199
- });
200
- await expect(eventBus.emit(eventType, {})).rejects.toThrow(EventBusAggregateError);
201
- try {
202
- await eventBus.emit(eventType, {});
203
- }
204
- catch (error) {
205
- expect(error).toBeInstanceOf(EventBusAggregateError);
206
- expect(error.errors).toHaveLength(2);
207
- expect(error.errors[0].message).toBe("Sync error");
208
- expect(error.errors[1].message).toBe("Async error");
209
- }
210
- });
211
- });
212
- describe("unsubscribe safety", () => {
213
- it("should be safe to call unsubscribe multiple times", () => {
214
- const eventBus = new EventBus();
215
- const eventType = 1;
216
- let callCount = 0;
217
- const unsubscribe = eventBus.subscribe(eventType, () => {
218
- callCount++;
219
- });
220
- // Emit event before unsubscribing
221
- eventBus.emit(eventType, { data: "test" });
222
- expect(callCount).toBe(1);
223
- // Call unsubscribe multiple times
224
- unsubscribe();
225
- unsubscribe();
226
- unsubscribe();
227
- // Should not throw and should work correctly
228
- expect(() => unsubscribe()).not.toThrow();
229
- // Emit again to verify unsubscribe worked
230
- eventBus.emit(eventType, { data: "test" });
231
- expect(callCount).toBe(1); // Should still be 1
232
- });
233
- it("should handle unsubscribe during emission", async () => {
234
- const eventBus = new EventBus();
235
- const results = [];
236
- const eventType = 1;
237
- let unsubscribe2 = undefined;
238
- eventBus.subscribe(eventType, () => {
239
- results.push(1);
240
- // Unsubscribe subscriber 2 during emission
241
- if (unsubscribe2) {
242
- unsubscribe2();
243
- }
244
- });
245
- unsubscribe2 = eventBus.subscribe(eventType, () => {
246
- results.push(2);
247
- });
248
- eventBus.subscribe(eventType, () => {
249
- results.push(3);
250
- });
251
- await eventBus.emit(eventType, {});
252
- // Subscriber 2 should still be called since it was registered before emission started
253
- expect(results).toEqual([1, 2, 3]);
254
- // But should not be called in subsequent emissions
255
- results.length = 0;
256
- await eventBus.emit(eventType, {});
257
- expect(results).toEqual([1, 3]);
258
- });
259
- it("should clean up empty listener arrays", () => {
260
- const eventBus = new EventBus();
261
- const eventType = 1;
262
- const unsubscribe1 = eventBus.subscribe(eventType, () => { });
263
- const unsubscribe2 = eventBus.subscribe(eventType, () => { });
264
- // Verify listeners exist
265
- expect(eventBus.eventTypeToSubscribers.has(eventType)).toBe(true);
266
- expect(eventBus.eventTypeToSubscribers.get(eventType)).toHaveLength(2);
267
- // Unsubscribe first subscriber
268
- unsubscribe1();
269
- expect(eventBus.eventTypeToSubscribers.get(eventType)).toHaveLength(1);
270
- // Unsubscribe last subscriber - should clean up the map entry
271
- unsubscribe2();
272
- expect(eventBus.eventTypeToSubscribers.has(eventType)).toBe(false);
273
- });
274
- it("should handle unsubscribe of non-existent subscriber gracefully", () => {
275
- const eventBus = new EventBus();
276
- const eventType = 1;
277
- const unsubscribe = eventBus.subscribe(eventType, () => { });
278
- // Manually remove the subscriber to simulate edge case
279
- const listeners = eventBus.eventTypeToSubscribers.get(eventType);
280
- if (!listeners) {
281
- throw new Error("Listeners not found");
282
- }
283
- listeners.length = 0;
284
- // Should not throw
285
- expect(() => unsubscribe()).not.toThrow();
286
- });
287
- });
288
- describe("error handling", () => {
289
- it("should not affect other subscribers when one throws", async () => {
290
- const eventBus = new EventBus();
291
- const results = [];
292
- const eventType = 1;
293
- eventBus.subscribe(eventType, () => {
294
- results.push(1);
295
- });
296
- eventBus.subscribe(eventType, () => {
297
- throw new Error("Subscriber 2 error");
298
- });
299
- eventBus.subscribe(eventType, () => {
300
- results.push(3);
301
- });
302
- eventBus.subscribe(eventType, () => {
303
- throw new Error("Subscriber 4 error");
304
- });
305
- eventBus.subscribe(eventType, () => {
306
- results.push(5);
307
- });
308
- await expect(eventBus.emit(eventType, {})).rejects.toThrow(EventBusAggregateError);
309
- // All non-throwing subscribers should have been called
310
- expect(results).toEqual([1, 3, 5]);
311
- // Verify the aggregate error contains both errors
312
- try {
313
- await eventBus.emit(eventType, {});
314
- }
315
- catch (error) {
316
- expect(error).toBeInstanceOf(EventBusAggregateError);
317
- expect(error.errors).toHaveLength(2);
318
- expect(error.errors[0].message).toBe("Subscriber 2 error");
319
- expect(error.errors[1].message).toBe("Subscriber 4 error");
320
- }
321
- });
322
- it("should throw aggregate error when multiple subscribers throw", async () => {
323
- const eventBus = new EventBus();
324
- const eventType = 1;
325
- eventBus.subscribe(eventType, () => {
326
- throw new Error("First error");
327
- });
328
- eventBus.subscribe(eventType, () => {
329
- throw new Error("Second error");
330
- });
331
- eventBus.subscribe(eventType, () => {
332
- throw new Error("Third error");
333
- });
334
- await expect(eventBus.emit(eventType, {})).rejects.toThrow(EventBusAggregateError);
335
- try {
336
- await eventBus.emit(eventType, {});
337
- }
338
- catch (error) {
339
- expect(error).toBeInstanceOf(EventBusAggregateError);
340
- expect(error.errors).toHaveLength(3);
341
- expect(error.errors[0].message).toBe("First error");
342
- expect(error.errors[1].message).toBe("Second error");
343
- expect(error.errors[2].message).toBe("Third error");
344
- }
345
- });
346
- it("should handle async errors correctly", async () => {
347
- const eventBus = new EventBus();
348
- const results = [];
349
- const eventType = 1;
350
- eventBus.subscribe(eventType, async () => {
351
- await new Promise((resolve) => setTimeout(resolve, 10));
352
- results.push("success1");
353
- });
354
- eventBus.subscribe(eventType, async () => {
355
- await new Promise((resolve) => setTimeout(resolve, 20));
356
- throw new Error("Async error");
357
- });
358
- eventBus.subscribe(eventType, async () => {
359
- await new Promise((resolve) => setTimeout(resolve, 5));
360
- results.push("success2");
361
- });
362
- await expect(eventBus.emit(eventType, {})).rejects.toThrow(EventBusAggregateError);
363
- // All subscribers run sequentially, even if earlier ones throw errors
364
- expect(results).toEqual(["success1", "success2"]);
365
- // Verify the aggregate error contains the async error
366
- try {
367
- await eventBus.emit(eventType, {});
368
- }
369
- catch (error) {
370
- expect(error).toBeInstanceOf(EventBusAggregateError);
371
- expect(error.errors).toHaveLength(1);
372
- expect(error.errors[0].message).toBe("Async error");
373
- }
374
- });
375
- it("should handle mixed sync and async errors", async () => {
376
- const eventBus = new EventBus();
377
- const results = [];
378
- const eventType = 1;
379
- eventBus.subscribe(eventType, () => {
380
- results.push("sync-success");
381
- });
382
- eventBus.subscribe(eventType, () => {
383
- throw new Error("Sync error");
384
- });
385
- eventBus.subscribe(eventType, async () => {
386
- await new Promise((resolve) => setTimeout(resolve, 10));
387
- results.push("async-success");
388
- });
389
- eventBus.subscribe(eventType, async () => {
390
- await new Promise((resolve) => setTimeout(resolve, 5));
391
- throw new Error("Async error");
392
- });
393
- await expect(eventBus.emit(eventType, {})).rejects.toThrow(EventBusAggregateError);
394
- // Non-throwing subscribers should complete
395
- expect(results).toEqual(["sync-success", "async-success"]);
396
- // Verify the aggregate error contains both sync and async errors
397
- try {
398
- await eventBus.emit(eventType, {});
399
- }
400
- catch (error) {
401
- expect(error).toBeInstanceOf(EventBusAggregateError);
402
- expect(error.errors).toHaveLength(2);
403
- expect(error.errors[0].message).toBe("Sync error");
404
- expect(error.errors[1].message).toBe("Async error");
405
- }
406
- });
407
- it("should continue processing other event types when one fails", async () => {
408
- const eventBus = new EventBus();
409
- const results = [];
410
- eventBus.subscribe(1, () => {
411
- results.push({ eventType: 1, success: true });
412
- throw new Error("Event 1 error");
413
- });
414
- eventBus.subscribe(2, () => {
415
- results.push({ eventType: 2, success: true });
416
- });
417
- // Emit both events concurrently
418
- const [result1, result2] = await Promise.allSettled([
419
- eventBus.emit(1, {}),
420
- eventBus.emit(2, {}),
421
- ]);
422
- expect(result1.status).toBe("rejected");
423
- expect(result2.status).toBe("fulfilled");
424
- expect(results).toHaveLength(2);
425
- });
426
- });
427
- describe("edge cases", () => {
428
- it("should handle emit with no subscribers", async () => {
429
- const eventBus = new EventBus();
430
- // Should not throw and should complete immediately
431
- await expect(eventBus.emit(999, { data: "test" })).resolves.toBeUndefined();
432
- });
433
- it("should handle different event types independently", async () => {
434
- const eventBus = new EventBus();
435
- const results = [];
436
- eventBus.subscribe(1, (type, data) => {
437
- results.push({ eventType: type, data });
438
- });
439
- eventBus.subscribe(2, (type, data) => {
440
- results.push({ eventType: type, data });
441
- });
442
- await eventBus.emit(1, { message: "type1" });
443
- await eventBus.emit(2, { message: "type2" });
444
- await eventBus.emit(3, { message: "type3" }); // No subscribers
445
- expect(results).toHaveLength(2);
446
- expect(results[0]).toEqual({ eventType: 1, data: { message: "type1" } });
447
- expect(results[1]).toEqual({ eventType: 2, data: { message: "type2" } });
448
- });
449
- it("should handle rapid subscribe/unsubscribe cycles", async () => {
450
- const eventBus = new EventBus();
451
- const eventType = 1;
452
- const results = [];
453
- // Rapid subscribe/unsubscribe
454
- for (let i = 0; i < 100; i++) {
455
- const unsubscribe = eventBus.subscribe(eventType, () => {
456
- results.push(i);
457
- });
458
- if (i % 2 === 0) {
459
- unsubscribe();
460
- }
461
- }
462
- await eventBus.emit(eventType, {});
463
- // Should only have results from odd-numbered subscribers (not unsubscribed)
464
- expect(results).toHaveLength(50);
465
- expect(results.every((n) => n % 2 === 1)).toBe(true);
466
- });
467
- it("should maintain type safety with generic subscriber types", async () => {
468
- const eventBus = new EventBus();
469
- const eventType = 1;
470
- const results = [];
471
- eventBus.subscribe(eventType, (type, event) => {
472
- // TypeScript should infer event as TestEvent
473
- results.push(event);
474
- });
475
- const testEvent = { id: "test", value: 42 };
476
- await eventBus.emit(eventType, testEvent);
477
- expect(results).toHaveLength(1);
478
- expect(results[0]).toEqual(testEvent);
479
- });
480
- });
481
- describe("performance characteristics", () => {
482
- it("should handle large numbers of subscribers efficiently", async () => {
483
- const eventBus = new EventBus();
484
- const eventType = 1;
485
- const subscriberCount = 1000;
486
- let callCount = 0;
487
- // Add many subscribers
488
- for (let i = 0; i < subscriberCount; i++) {
489
- eventBus.subscribe(eventType, () => {
490
- callCount++;
491
- });
492
- }
493
- const startTime = Date.now();
494
- await eventBus.emit(eventType, {});
495
- const endTime = Date.now();
496
- expect(callCount).toBe(subscriberCount);
497
- // Should complete reasonably quickly (less than 100ms for 1000 subscribers)
498
- expect(endTime - startTime).toBeLessThan(100);
499
- });
500
- it("should handle many concurrent emits efficiently", async () => {
501
- const eventBus = new EventBus();
502
- const eventType = 1;
503
- const emitCount = 100;
504
- let totalCalls = 0;
505
- eventBus.subscribe(eventType, () => {
506
- totalCalls++;
507
- });
508
- const startTime = Date.now();
509
- const promises = Array.from({ length: emitCount }, () => eventBus.emit(eventType, {}));
510
- await Promise.all(promises);
511
- const endTime = Date.now();
512
- expect(totalCalls).toBe(emitCount);
513
- // Should complete reasonably quickly
514
- expect(endTime - startTime).toBeLessThan(100);
515
- });
516
- });
517
- });
518
- describe("EventBusAggregateError", () => {
519
- it("should create aggregate error with proper message and errors array", () => {
520
- const error1 = new Error("First error");
521
- const error2 = new Error("Second error");
522
- const error3 = "String error";
523
- const aggregateError = new EventBusAggregateError([error1, error2, error3]);
524
- expect(aggregateError).toBeInstanceOf(Error);
525
- expect(aggregateError).toBeInstanceOf(EventBusAggregateError);
526
- expect(aggregateError.name).toBe("EventBusAggregateError");
527
- expect(aggregateError.errors).toEqual([error1, error2, error3]);
528
- expect(aggregateError.message).toBe("EventBus emit failed with 3 error(s): First error; Second error; String error");
529
- });
530
- it("should handle errors without message property", () => {
531
- const error1 = new Error("Has message");
532
- const error2 = { code: "NO_MESSAGE" };
533
- const error3 = null;
534
- const aggregateError = new EventBusAggregateError([error1, error2, error3]);
535
- expect(aggregateError.errors).toHaveLength(3);
536
- expect(aggregateError.message).toContain("Has message");
537
- expect(aggregateError.message).toContain("[object Object]");
538
- expect(aggregateError.message).toContain("null");
539
- });
540
- });
541
- //# sourceMappingURL=event-bus.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.test.js","sourceRoot":"","sources":["../../test/event-bus.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=executor-integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor-integration.test.d.ts","sourceRoot":"","sources":["../../../test/executor/executor-integration.test.ts"],"names":[],"mappings":""}