@zdavison/matador 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/index.cjs +48 -9
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/pipeline/pipeline.d.ts.map +1 -1
  5. package/dist/pipeline/pipeline.js +5 -1
  6. package/dist/retry/policy.d.ts +2 -0
  7. package/dist/retry/policy.d.ts.map +1 -1
  8. package/dist/retry/standard-policy.d.ts +16 -3
  9. package/dist/retry/standard-policy.d.ts.map +1 -1
  10. package/dist/retry/standard-policy.js +36 -9
  11. package/package.json +1 -1
  12. package/dist/checkpoint/context.test.d.ts +0 -2
  13. package/dist/checkpoint/context.test.d.ts.map +0 -1
  14. package/dist/checkpoint/context.test.js +0 -428
  15. package/dist/checkpoint/stores/stores.test.d.ts +0 -2
  16. package/dist/checkpoint/stores/stores.test.d.ts.map +0 -1
  17. package/dist/checkpoint/stores/stores.test.js +0 -146
  18. package/dist/codec/rabbitmq-codec.test.d.ts +0 -2
  19. package/dist/codec/rabbitmq-codec.test.d.ts.map +0 -1
  20. package/dist/codec/rabbitmq-codec.test.js +0 -428
  21. package/dist/core/fanout.test.d.ts +0 -2
  22. package/dist/core/fanout.test.d.ts.map +0 -1
  23. package/dist/core/fanout.test.js +0 -1970
  24. package/dist/core/matador.test.d.ts +0 -2
  25. package/dist/core/matador.test.d.ts.map +0 -1
  26. package/dist/core/matador.test.js +0 -906
  27. package/dist/core/shutdown.test.d.ts +0 -2
  28. package/dist/core/shutdown.test.d.ts.map +0 -1
  29. package/dist/core/shutdown.test.js +0 -599
  30. package/dist/errors/retry-errors.test.d.ts +0 -2
  31. package/dist/errors/retry-errors.test.d.ts.map +0 -1
  32. package/dist/errors/retry-errors.test.js +0 -136
  33. package/dist/pipeline/pipeline.test.d.ts +0 -2
  34. package/dist/pipeline/pipeline.test.d.ts.map +0 -1
  35. package/dist/pipeline/pipeline.test.js +0 -1247
  36. package/dist/retry/standard-policy.test.d.ts +0 -2
  37. package/dist/retry/standard-policy.test.d.ts.map +0 -1
  38. package/dist/retry/standard-policy.test.js +0 -261
  39. package/dist/schema/registry.test.d.ts +0 -2
  40. package/dist/schema/registry.test.d.ts.map +0 -1
  41. package/dist/schema/registry.test.js +0 -278
  42. package/dist/schema/types.test.d.ts +0 -2
  43. package/dist/schema/types.test.d.ts.map +0 -1
  44. package/dist/schema/types.test.js +0 -246
  45. package/dist/topology/builder.test.d.ts +0 -2
  46. package/dist/topology/builder.test.d.ts.map +0 -1
  47. package/dist/topology/builder.test.js +0 -554
  48. package/dist/transport/local/local-transport.test.d.ts +0 -2
  49. package/dist/transport/local/local-transport.test.d.ts.map +0 -1
  50. package/dist/transport/local/local-transport.test.js +0 -232
  51. package/dist/transport/multi/multi-transport.test.d.ts +0 -2
  52. package/dist/transport/multi/multi-transport.test.d.ts.map +0 -1
  53. package/dist/transport/multi/multi-transport.test.js +0 -322
  54. package/dist/transport/rabbitmq/rabbitmq-transport-reconnection.test.d.ts +0 -2
  55. package/dist/transport/rabbitmq/rabbitmq-transport-reconnection.test.d.ts.map +0 -1
  56. package/dist/transport/rabbitmq/rabbitmq-transport-reconnection.test.js +0 -149
  57. package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts +0 -2
  58. package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts.map +0 -1
  59. package/dist/transport/rabbitmq/rabbitmq-transport.test.js +0 -258
  60. package/dist/types/event.test.d.ts +0 -2
  61. package/dist/types/event.test.d.ts.map +0 -1
  62. package/dist/types/event.test.js +0 -130
@@ -1,146 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'bun:test';
2
- import { MemoryCheckpointStore } from './memory.js';
3
- import { NoOpCheckpointStore } from './noop.js';
4
- describe('MemoryCheckpointStore', () => {
5
- let store;
6
- beforeEach(() => {
7
- store = new MemoryCheckpointStore();
8
- });
9
- describe('get()', () => {
10
- it('should return undefined for non-existent checkpoint', async () => {
11
- const result = await store.get('non-existent');
12
- expect(result).toBeUndefined();
13
- });
14
- it('should return stored checkpoint', async () => {
15
- const checkpoint = {
16
- envelopeId: 'test-id',
17
- subscriberName: 'test-subscriber',
18
- completedSteps: { 'step-1': 'result-1' },
19
- };
20
- await store.set('test-id', checkpoint);
21
- const result = await store.get('test-id');
22
- expect(result).toEqual(checkpoint);
23
- });
24
- });
25
- describe('set()', () => {
26
- it('should store checkpoint', async () => {
27
- const checkpoint = {
28
- envelopeId: 'test-id',
29
- subscriberName: 'test-subscriber',
30
- completedSteps: {},
31
- };
32
- await store.set('test-id', checkpoint);
33
- expect(store.size).toBe(1);
34
- });
35
- it('should overwrite existing checkpoint', async () => {
36
- const checkpoint1 = {
37
- envelopeId: 'test-id',
38
- subscriberName: 'test-subscriber',
39
- completedSteps: { 'step-1': 'old' },
40
- };
41
- const checkpoint2 = {
42
- envelopeId: 'test-id',
43
- subscriberName: 'test-subscriber',
44
- completedSteps: { 'step-1': 'new', 'step-2': 'added' },
45
- };
46
- await store.set('test-id', checkpoint1);
47
- await store.set('test-id', checkpoint2);
48
- const result = await store.get('test-id');
49
- expect(result).toEqual(checkpoint2);
50
- expect(store.size).toBe(1);
51
- });
52
- });
53
- describe('delete()', () => {
54
- it('should delete checkpoint', async () => {
55
- const checkpoint = {
56
- envelopeId: 'test-id',
57
- subscriberName: 'test-subscriber',
58
- completedSteps: {},
59
- };
60
- await store.set('test-id', checkpoint);
61
- expect(store.size).toBe(1);
62
- await store.delete('test-id');
63
- expect(store.size).toBe(0);
64
- });
65
- it('should not throw when deleting non-existent checkpoint', async () => {
66
- await expect(store.delete('non-existent')).resolves.toBeUndefined();
67
- });
68
- });
69
- describe('utility methods', () => {
70
- it('size should return number of checkpoints', async () => {
71
- expect(store.size).toBe(0);
72
- await store.set('id-1', {
73
- envelopeId: 'id-1',
74
- subscriberName: 'sub',
75
- completedSteps: {},
76
- });
77
- expect(store.size).toBe(1);
78
- await store.set('id-2', {
79
- envelopeId: 'id-2',
80
- subscriberName: 'sub',
81
- completedSteps: {},
82
- });
83
- expect(store.size).toBe(2);
84
- });
85
- it('clear() should remove all checkpoints', async () => {
86
- await store.set('id-1', {
87
- envelopeId: 'id-1',
88
- subscriberName: 'sub',
89
- completedSteps: {},
90
- });
91
- await store.set('id-2', {
92
- envelopeId: 'id-2',
93
- subscriberName: 'sub',
94
- completedSteps: {},
95
- });
96
- expect(store.size).toBe(2);
97
- store.clear();
98
- expect(store.size).toBe(0);
99
- });
100
- it('keys() should return all checkpoint IDs', async () => {
101
- await store.set('id-1', {
102
- envelopeId: 'id-1',
103
- subscriberName: 'sub',
104
- completedSteps: {},
105
- });
106
- await store.set('id-2', {
107
- envelopeId: 'id-2',
108
- subscriberName: 'sub',
109
- completedSteps: {},
110
- });
111
- const keys = store.keys();
112
- expect(keys).toContain('id-1');
113
- expect(keys).toContain('id-2');
114
- expect(keys).toHaveLength(2);
115
- });
116
- });
117
- });
118
- describe('NoOpCheckpointStore', () => {
119
- let store;
120
- beforeEach(() => {
121
- store = new NoOpCheckpointStore();
122
- });
123
- describe('get()', () => {
124
- it('should always return undefined', async () => {
125
- const result = await store.get('any-id');
126
- expect(result).toBeUndefined();
127
- });
128
- });
129
- describe('set()', () => {
130
- it('should not store anything (no-op)', async () => {
131
- const checkpoint = {
132
- envelopeId: 'test-id',
133
- subscriberName: 'test-subscriber',
134
- completedSteps: { 'step-1': 'result-1' },
135
- };
136
- await store.set('test-id', checkpoint);
137
- const result = await store.get('test-id');
138
- expect(result).toBeUndefined();
139
- });
140
- });
141
- describe('delete()', () => {
142
- it('should not throw', async () => {
143
- await expect(store.delete('any-id')).resolves.toBeUndefined();
144
- });
145
- });
146
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=rabbitmq-codec.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rabbitmq-codec.test.d.ts","sourceRoot":"","sources":["../../src/codec/rabbitmq-codec.test.ts"],"names":[],"mappings":""}
@@ -1,428 +0,0 @@
1
- import { describe, expect, it } from 'bun:test';
2
- import { RabbitMQCodec } from './rabbitmq-codec.js';
3
- /**
4
- * Add your v1 message examples here.
5
- * Each fixture describes:
6
- * - name: A descriptive name for the test case
7
- * - body: The v1 message body (what goes in the RabbitMQ message content)
8
- * - headers: Optional RabbitMQ headers that accompany the message
9
- * - expected: The expected v2 envelope fields after translation
10
- */
11
- const V1_MESSAGE_FIXTURES = [
12
- // === BASIC EXAMPLES ===
13
- {
14
- name: 'minimal v1 message with only required fields',
15
- body: {
16
- key: 'user.created',
17
- data: { userId: '123' },
18
- targetSubscriber: 'email-service',
19
- },
20
- expected: {
21
- eventKey: 'user.created',
22
- targetSubscriber: 'email-service',
23
- data: { userId: '123' },
24
- attempts: 1,
25
- importance: 'should-investigate',
26
- },
27
- },
28
- {
29
- name: 'v1 message with metadata',
30
- body: {
31
- key: 'order.placed',
32
- data: { orderId: 'ORD-456', amount: 99.99 },
33
- metadata: { source: 'web', region: 'us-east' },
34
- targetSubscriber: 'fulfillment-service',
35
- },
36
- expected: {
37
- eventKey: 'order.placed',
38
- targetSubscriber: 'fulfillment-service',
39
- data: { orderId: 'ORD-456', amount: 99.99 },
40
- metadata: { source: 'web', region: 'us-east' },
41
- },
42
- },
43
- // === UNIVERSAL METADATA EXAMPLES ===
44
- {
45
- name: 'v1 message with universal.event_id',
46
- body: {
47
- key: 'payment.processed',
48
- data: { paymentId: 'PAY-789' },
49
- universal: {
50
- event_id: 'evt-abc-123',
51
- },
52
- targetSubscriber: 'notification-service',
53
- },
54
- expected: {
55
- id: 'evt-abc-123',
56
- eventKey: 'payment.processed',
57
- targetSubscriber: 'notification-service',
58
- data: { paymentId: 'PAY-789' },
59
- },
60
- },
61
- {
62
- name: 'v1 message with universal.user_id (merged into metadata)',
63
- body: {
64
- key: 'profile.updated',
65
- data: { field: 'email' },
66
- universal: {
67
- user_id: 'user-456',
68
- },
69
- targetSubscriber: 'audit-service',
70
- },
71
- expected: {
72
- eventKey: 'profile.updated',
73
- targetSubscriber: 'audit-service',
74
- data: { field: 'email' },
75
- metadata: { user_id: 'user-456' },
76
- },
77
- },
78
- {
79
- name: 'v1 message with universal.correlation_id',
80
- body: {
81
- key: 'request.received',
82
- data: { requestId: 'req-001' },
83
- universal: {
84
- correlation_id: 'corr-xyz-789',
85
- },
86
- targetSubscriber: 'logger-service',
87
- },
88
- expected: {
89
- eventKey: 'request.received',
90
- targetSubscriber: 'logger-service',
91
- data: { requestId: 'req-001' },
92
- correlationId: 'corr-xyz-789',
93
- },
94
- },
95
- {
96
- name: 'v1 message with all universal fields',
97
- body: {
98
- key: 'checkout.completed',
99
- data: { cartId: 'cart-999' },
100
- universal: {
101
- event_id: 'evt-full-123',
102
- user_id: 'user-777',
103
- correlation_id: 'corr-full-456',
104
- custom_field: 'custom_value',
105
- },
106
- targetSubscriber: 'analytics-service',
107
- },
108
- expected: {
109
- id: 'evt-full-123',
110
- eventKey: 'checkout.completed',
111
- targetSubscriber: 'analytics-service',
112
- data: { cartId: 'cart-999' },
113
- correlationId: 'corr-full-456',
114
- metadata: {
115
- user_id: 'user-777',
116
- custom_field: 'custom_value',
117
- },
118
- },
119
- },
120
- // === METADATA MERGING EXAMPLES ===
121
- {
122
- name: 'v1 message with both metadata and universal (merged)',
123
- body: {
124
- key: 'item.added',
125
- data: { itemId: 'item-123' },
126
- metadata: { category: 'electronics', priority: 'high' },
127
- universal: {
128
- user_id: 'user-888',
129
- tenant_id: 'tenant-001',
130
- },
131
- targetSubscriber: 'inventory-service',
132
- },
133
- expected: {
134
- eventKey: 'item.added',
135
- targetSubscriber: 'inventory-service',
136
- data: { itemId: 'item-123' },
137
- metadata: {
138
- category: 'electronics',
139
- priority: 'high',
140
- user_id: 'user-888',
141
- tenant_id: 'tenant-001',
142
- },
143
- },
144
- },
145
- // === HEADER-BASED EXAMPLES ===
146
- {
147
- name: 'v1 message with attempt count from header',
148
- body: {
149
- key: 'task.retry',
150
- data: { taskId: 'task-555' },
151
- targetSubscriber: 'worker-service',
152
- },
153
- headers: {
154
- 'x-matador-attempts': 3,
155
- },
156
- expected: {
157
- eventKey: 'task.retry',
158
- targetSubscriber: 'worker-service',
159
- data: { taskId: 'task-555' },
160
- attempts: 3,
161
- },
162
- },
163
- {
164
- name: 'v1 message with importance from header',
165
- body: {
166
- key: 'alert.triggered',
167
- data: { alertId: 'alert-111' },
168
- targetSubscriber: 'pager-service',
169
- },
170
- headers: {
171
- 'x-matador-importance': 'must-investigate',
172
- },
173
- expected: {
174
- eventKey: 'alert.triggered',
175
- targetSubscriber: 'pager-service',
176
- data: { alertId: 'alert-111' },
177
- importance: 'must-investigate',
178
- },
179
- },
180
- {
181
- name: 'v1 message with correlation_id from v1 header',
182
- body: {
183
- key: 'trace.event',
184
- data: { traceId: 'trace-222' },
185
- targetSubscriber: 'tracing-service',
186
- },
187
- headers: {
188
- 'x-correlation-id': 'header-corr-id',
189
- },
190
- expected: {
191
- eventKey: 'trace.event',
192
- targetSubscriber: 'tracing-service',
193
- data: { traceId: 'trace-222' },
194
- correlationId: 'header-corr-id',
195
- },
196
- },
197
- {
198
- name: 'v1 message with event_id from v1 header',
199
- body: {
200
- key: 'legacy.event',
201
- data: { legacyId: 'leg-333' },
202
- targetSubscriber: 'legacy-handler',
203
- },
204
- headers: {
205
- 'x-event-id': 'header-event-id-456',
206
- },
207
- expected: {
208
- id: 'header-event-id-456',
209
- eventKey: 'legacy.event',
210
- targetSubscriber: 'legacy-handler',
211
- data: { legacyId: 'leg-333' },
212
- },
213
- },
214
- // === EDGE CASES ===
215
- {
216
- name: 'v1 message with null universal fields (ignored)',
217
- body: {
218
- key: 'null.test',
219
- data: { test: true },
220
- universal: {
221
- event_id: null,
222
- user_id: null,
223
- correlation_id: null,
224
- },
225
- targetSubscriber: 'null-handler',
226
- },
227
- expected: {
228
- eventKey: 'null.test',
229
- targetSubscriber: 'null-handler',
230
- data: { test: true },
231
- },
232
- },
233
- {
234
- name: 'v1 message with empty metadata object',
235
- body: {
236
- key: 'empty.metadata',
237
- data: { value: 42 },
238
- metadata: {},
239
- targetSubscriber: 'empty-handler',
240
- },
241
- expected: {
242
- eventKey: 'empty.metadata',
243
- targetSubscriber: 'empty-handler',
244
- data: { value: 42 },
245
- },
246
- },
247
- {
248
- name: 'v1 message with complex nested data',
249
- body: {
250
- key: 'complex.event',
251
- data: {
252
- nested: {
253
- deeply: {
254
- value: [1, 2, { three: 'four' }],
255
- },
256
- },
257
- array: ['a', 'b', 'c'],
258
- },
259
- targetSubscriber: 'complex-handler',
260
- },
261
- expected: {
262
- eventKey: 'complex.event',
263
- targetSubscriber: 'complex-handler',
264
- data: {
265
- nested: {
266
- deeply: {
267
- value: [1, 2, { three: 'four' }],
268
- },
269
- },
270
- array: ['a', 'b', 'c'],
271
- },
272
- },
273
- },
274
- {
275
- name: 'v1 message with before field (ignored in v2)',
276
- body: {
277
- key: 'update.event',
278
- data: { newValue: 'after' },
279
- before: { oldValue: 'before' },
280
- targetSubscriber: 'update-handler',
281
- },
282
- expected: {
283
- eventKey: 'update.event',
284
- targetSubscriber: 'update-handler',
285
- data: { newValue: 'after' },
286
- },
287
- },
288
- // === ADD YOUR EXAMPLES BELOW ===
289
- // Copy this template and fill in your v1 message data:
290
- //
291
- // {
292
- // name: 'descriptive name for your test case',
293
- // body: {
294
- // key: 'your.event.key',
295
- // data: { /* your event data */ },
296
- // metadata: { /* optional metadata */ },
297
- // universal: {
298
- // event_id: 'optional-event-id',
299
- // user_id: 'optional-user-id',
300
- // correlation_id: 'optional-correlation-id',
301
- // // any other custom fields
302
- // },
303
- // before: { /* optional, will be ignored */ },
304
- // options: { delayMs: 1000 }, // optional
305
- // targetSubscriber: 'your-subscriber-name',
306
- // },
307
- // headers: {
308
- // // optional headers
309
- // 'x-matador-attempts': 1,
310
- // 'x-matador-importance': 'should-investigate',
311
- // 'x-event-id': 'header-event-id',
312
- // 'x-correlation-id': 'header-correlation-id',
313
- // },
314
- // expected: {
315
- // id: 'expected-id', // optional, will be generated if not in body/headers
316
- // eventKey: 'your.event.key',
317
- // targetSubscriber: 'your-subscriber-name',
318
- // data: { /* expected data */ },
319
- // metadata: { /* expected merged metadata */ },
320
- // correlationId: 'expected-correlation-id',
321
- // attempts: 1,
322
- // importance: 'should-investigate',
323
- // },
324
- // },
325
- ];
326
- const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
327
- const ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
328
- function assertV1Id(envelope, expectedId) {
329
- if (expectedId !== undefined) {
330
- expect(envelope.id).toBe(expectedId);
331
- }
332
- else {
333
- expect(envelope.id).toMatch(UUID_PATTERN);
334
- }
335
- }
336
- function assertV1Metadata(metadata, expected) {
337
- if (expected !== undefined) {
338
- expect(metadata).toEqual(expected);
339
- }
340
- else {
341
- expect(metadata === undefined || Object.keys(metadata).length === 0).toBe(true);
342
- }
343
- }
344
- function assertV1Translation(envelope, expected) {
345
- expect(envelope.docket.eventKey).toBe(expected.eventKey);
346
- expect(envelope.docket.targetSubscriber).toBe(expected.targetSubscriber);
347
- expect(envelope.data).toEqual(expected.data);
348
- assertV1Id(envelope, expected.id);
349
- assertV1Metadata(envelope.docket.metadata, expected.metadata);
350
- if (expected.correlationId !== undefined) {
351
- expect(envelope.docket.correlationId).toBe(expected.correlationId);
352
- }
353
- expect(envelope.docket.attempts).toBe(expected.attempts ?? 1);
354
- expect(envelope.docket.importance).toBe(expected.importance ?? 'should-investigate');
355
- expect(envelope.docket.createdAt).toMatch(ISO_DATE_PATTERN);
356
- }
357
- describe('RabbitMQCodec', () => {
358
- const codec = new RabbitMQCodec();
359
- describe('v1 to v2 translation', () => {
360
- for (const fixture of V1_MESSAGE_FIXTURES) {
361
- it(`should translate: ${fixture.name}`, () => {
362
- const body = new TextEncoder().encode(JSON.stringify(fixture.body));
363
- const headers = fixture.headers ?? {};
364
- const envelope = codec.decode(body, headers);
365
- assertV1Translation(envelope, fixture.expected);
366
- });
367
- }
368
- });
369
- describe('v1 edge cases', () => {
370
- it('should handle options.delayMs by setting scheduledFor', () => {
371
- const body = {
372
- key: 'delayed.event',
373
- data: { test: true },
374
- options: { delayMs: 5000 },
375
- targetSubscriber: 'delay-handler',
376
- };
377
- const encoded = new TextEncoder().encode(JSON.stringify(body));
378
- const before = Date.now();
379
- const envelope = codec.decode(encoded, {});
380
- const after = Date.now();
381
- const { scheduledFor } = envelope.docket;
382
- if (!scheduledFor)
383
- throw new Error('expected scheduledFor to be set');
384
- const scheduledTime = new Date(scheduledFor).getTime();
385
- expect(scheduledTime).toBeGreaterThanOrEqual(before + 5000);
386
- expect(scheduledTime).toBeLessThanOrEqual(after + 5000);
387
- });
388
- it('should prefer header event_id over body universal.event_id', () => {
389
- const body = {
390
- key: 'priority.test',
391
- data: {},
392
- universal: { event_id: 'body-event-id' },
393
- targetSubscriber: 'test-handler',
394
- };
395
- const encoded = new TextEncoder().encode(JSON.stringify(body));
396
- const envelope = codec.decode(encoded, {
397
- 'x-event-id': 'header-event-id',
398
- });
399
- expect(envelope.id).toBe('header-event-id');
400
- });
401
- it('should prefer v2 correlation header over v1 header', () => {
402
- const body = {
403
- key: 'corr.priority',
404
- data: {},
405
- targetSubscriber: 'test-handler',
406
- };
407
- const encoded = new TextEncoder().encode(JSON.stringify(body));
408
- const envelope = codec.decode(encoded, {
409
- 'x-matador-correlation-id': 'v2-corr-id',
410
- 'x-correlation-id': 'v1-corr-id',
411
- });
412
- expect(envelope.docket.correlationId).toBe('v2-corr-id');
413
- });
414
- it('should prefer header correlation_id over body universal.correlation_id', () => {
415
- const body = {
416
- key: 'corr.priority',
417
- data: {},
418
- universal: { correlation_id: 'body-corr-id' },
419
- targetSubscriber: 'test-handler',
420
- };
421
- const encoded = new TextEncoder().encode(JSON.stringify(body));
422
- const envelope = codec.decode(encoded, {
423
- 'x-correlation-id': 'header-corr-id',
424
- });
425
- expect(envelope.docket.correlationId).toBe('header-corr-id');
426
- });
427
- });
428
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fanout.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fanout.test.d.ts","sourceRoot":"","sources":["../../src/core/fanout.test.ts"],"names":[],"mappings":""}