@zdavison/matador 2.0.9 → 2.0.10

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 (259) hide show
  1. package/dist/checkpoint/context.d.ts +59 -0
  2. package/dist/checkpoint/context.d.ts.map +1 -0
  3. package/dist/checkpoint/context.js +140 -0
  4. package/dist/checkpoint/context.test.d.ts +2 -0
  5. package/dist/checkpoint/context.test.d.ts.map +1 -0
  6. package/dist/checkpoint/context.test.js +424 -0
  7. package/dist/checkpoint/index.d.ts +7 -0
  8. package/dist/checkpoint/index.d.ts.map +1 -0
  9. package/dist/checkpoint/index.js +6 -0
  10. package/dist/checkpoint/stores/memory.d.ts +29 -0
  11. package/dist/checkpoint/stores/memory.d.ts.map +1 -0
  12. package/dist/checkpoint/stores/memory.js +39 -0
  13. package/{src/checkpoint/stores/noop.ts → dist/checkpoint/stores/noop.d.ts} +5 -13
  14. package/dist/checkpoint/stores/noop.d.ts.map +1 -0
  15. package/dist/checkpoint/stores/noop.js +18 -0
  16. package/dist/checkpoint/stores/stores.test.d.ts +2 -0
  17. package/dist/checkpoint/stores/stores.test.d.ts.map +1 -0
  18. package/dist/checkpoint/stores/stores.test.js +146 -0
  19. package/dist/checkpoint/types.d.ts +119 -0
  20. package/dist/checkpoint/types.d.ts.map +1 -0
  21. package/dist/checkpoint/types.js +1 -0
  22. package/dist/codec/codec.d.ts +29 -0
  23. package/dist/codec/codec.d.ts.map +1 -0
  24. package/dist/codec/codec.js +15 -0
  25. package/dist/codec/header-aware-codec.d.ts +36 -0
  26. package/dist/codec/header-aware-codec.d.ts.map +1 -0
  27. package/dist/codec/header-aware-codec.js +1 -0
  28. package/{src/codec/index.ts → dist/codec/index.d.ts} +2 -7
  29. package/dist/codec/index.d.ts.map +1 -0
  30. package/dist/codec/index.js +3 -0
  31. package/dist/codec/json-codec.d.ts +13 -0
  32. package/dist/codec/json-codec.d.ts.map +1 -0
  33. package/dist/codec/json-codec.js +64 -0
  34. package/dist/codec/rabbitmq-codec.d.ts +28 -0
  35. package/dist/codec/rabbitmq-codec.d.ts.map +1 -0
  36. package/dist/codec/rabbitmq-codec.js +242 -0
  37. package/dist/codec/rabbitmq-codec.test.d.ts +2 -0
  38. package/dist/codec/rabbitmq-codec.test.d.ts.map +1 -0
  39. package/dist/codec/rabbitmq-codec.test.js +433 -0
  40. package/dist/core/fanout.d.ts +59 -0
  41. package/dist/core/fanout.d.ts.map +1 -0
  42. package/dist/core/fanout.js +121 -0
  43. package/dist/core/fanout.test.d.ts +2 -0
  44. package/dist/core/fanout.test.d.ts.map +1 -0
  45. package/dist/core/fanout.test.js +1054 -0
  46. package/{src/core/index.ts → dist/core/index.d.ts} +2 -7
  47. package/dist/core/index.d.ts.map +1 -0
  48. package/dist/core/index.js +3 -0
  49. package/dist/core/matador.d.ts +133 -0
  50. package/dist/core/matador.d.ts.map +1 -0
  51. package/dist/core/matador.js +228 -0
  52. package/dist/core/matador.test.d.ts +2 -0
  53. package/dist/core/matador.test.d.ts.map +1 -0
  54. package/dist/core/matador.test.js +446 -0
  55. package/dist/core/shutdown.d.ts +78 -0
  56. package/dist/core/shutdown.d.ts.map +1 -0
  57. package/dist/core/shutdown.js +111 -0
  58. package/dist/core/shutdown.test.d.ts +2 -0
  59. package/dist/core/shutdown.test.d.ts.map +1 -0
  60. package/dist/core/shutdown.test.js +524 -0
  61. package/dist/errors/checkpoint-errors.d.ts +30 -0
  62. package/dist/errors/checkpoint-errors.d.ts.map +1 -0
  63. package/dist/errors/checkpoint-errors.js +49 -0
  64. package/dist/errors/has-description.d.ts +18 -0
  65. package/dist/errors/has-description.d.ts.map +1 -0
  66. package/dist/errors/has-description.js +9 -0
  67. package/dist/errors/index.d.ts +6 -0
  68. package/dist/errors/index.d.ts.map +1 -0
  69. package/dist/errors/index.js +22 -0
  70. package/dist/errors/matador-errors.d.ts +183 -0
  71. package/dist/errors/matador-errors.d.ts.map +1 -0
  72. package/dist/errors/matador-errors.js +376 -0
  73. package/dist/errors/retry-errors.d.ts +102 -0
  74. package/dist/errors/retry-errors.d.ts.map +1 -0
  75. package/dist/errors/retry-errors.js +155 -0
  76. package/dist/errors/retry-errors.test.d.ts +2 -0
  77. package/dist/errors/retry-errors.test.d.ts.map +1 -0
  78. package/dist/errors/retry-errors.test.js +136 -0
  79. package/dist/hooks/index.d.ts +4 -0
  80. package/dist/hooks/index.d.ts.map +1 -0
  81. package/dist/hooks/index.js +2 -0
  82. package/dist/hooks/safe-hooks.d.ts +32 -0
  83. package/dist/hooks/safe-hooks.d.ts.map +1 -0
  84. package/dist/hooks/safe-hooks.js +120 -0
  85. package/dist/hooks/types.d.ts +172 -0
  86. package/dist/hooks/types.d.ts.map +1 -0
  87. package/dist/hooks/types.js +9 -0
  88. package/dist/index.cjs +3228 -0
  89. package/dist/index.cjs.map +1 -0
  90. package/dist/index.d.cts +23 -0
  91. package/dist/index.d.ts +23 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +31 -0
  94. package/dist/index.js.map +1 -0
  95. package/{src/pipeline/index.ts → dist/pipeline/index.d.ts} +1 -0
  96. package/dist/pipeline/index.d.ts.map +1 -0
  97. package/dist/pipeline/index.js +1 -0
  98. package/dist/pipeline/pipeline.d.ts +63 -0
  99. package/dist/pipeline/pipeline.d.ts.map +1 -0
  100. package/dist/pipeline/pipeline.js +273 -0
  101. package/dist/pipeline/pipeline.test.d.ts +2 -0
  102. package/dist/pipeline/pipeline.test.d.ts.map +1 -0
  103. package/dist/pipeline/pipeline.test.js +1112 -0
  104. package/{src/retry/index.ts → dist/retry/index.d.ts} +1 -1
  105. package/dist/retry/index.d.ts.map +1 -0
  106. package/dist/retry/index.js +1 -0
  107. package/dist/retry/policy.d.ts +43 -0
  108. package/dist/retry/policy.d.ts.map +1 -0
  109. package/dist/retry/policy.js +1 -0
  110. package/dist/retry/standard-policy.d.ts +44 -0
  111. package/dist/retry/standard-policy.d.ts.map +1 -0
  112. package/dist/retry/standard-policy.js +102 -0
  113. package/dist/retry/standard-policy.test.d.ts +2 -0
  114. package/dist/retry/standard-policy.test.d.ts.map +1 -0
  115. package/dist/retry/standard-policy.test.js +196 -0
  116. package/dist/schema/index.d.ts +4 -0
  117. package/dist/schema/index.d.ts.map +1 -0
  118. package/dist/schema/index.js +2 -0
  119. package/dist/schema/registry.d.ts +63 -0
  120. package/dist/schema/registry.d.ts.map +1 -0
  121. package/dist/schema/registry.js +174 -0
  122. package/dist/schema/registry.test.d.ts +2 -0
  123. package/dist/schema/registry.test.d.ts.map +1 -0
  124. package/dist/schema/registry.test.js +278 -0
  125. package/{src/schema/types.ts → dist/schema/types.d.ts} +29 -88
  126. package/dist/schema/types.d.ts.map +1 -0
  127. package/dist/schema/types.js +74 -0
  128. package/dist/schema/types.test.d.ts +2 -0
  129. package/dist/schema/types.test.d.ts.map +1 -0
  130. package/dist/schema/types.test.js +242 -0
  131. package/dist/topology/builder.d.ts +80 -0
  132. package/dist/topology/builder.d.ts.map +1 -0
  133. package/dist/topology/builder.js +165 -0
  134. package/dist/topology/builder.test.d.ts +2 -0
  135. package/dist/topology/builder.test.d.ts.map +1 -0
  136. package/dist/topology/builder.test.js +360 -0
  137. package/dist/topology/index.d.ts +5 -0
  138. package/dist/topology/index.d.ts.map +1 -0
  139. package/dist/topology/index.js +2 -0
  140. package/dist/topology/types.d.ts +128 -0
  141. package/dist/topology/types.d.ts.map +1 -0
  142. package/dist/topology/types.js +28 -0
  143. package/dist/transport/capabilities.d.ts +66 -0
  144. package/dist/transport/capabilities.d.ts.map +1 -0
  145. package/dist/transport/capabilities.js +18 -0
  146. package/dist/transport/connection-manager.d.ts +95 -0
  147. package/dist/transport/connection-manager.d.ts.map +1 -0
  148. package/dist/transport/connection-manager.js +144 -0
  149. package/dist/transport/index.d.ts +11 -0
  150. package/dist/transport/index.d.ts.map +1 -0
  151. package/dist/transport/index.js +5 -0
  152. package/dist/transport/local/local-transport.d.ts +62 -0
  153. package/dist/transport/local/local-transport.d.ts.map +1 -0
  154. package/dist/transport/local/local-transport.js +241 -0
  155. package/dist/transport/local/local-transport.test.d.ts +2 -0
  156. package/dist/transport/local/local-transport.test.d.ts.map +1 -0
  157. package/dist/transport/local/local-transport.test.js +192 -0
  158. package/dist/transport/multi/multi-transport.d.ts +94 -0
  159. package/dist/transport/multi/multi-transport.d.ts.map +1 -0
  160. package/dist/transport/multi/multi-transport.js +184 -0
  161. package/dist/transport/multi/multi-transport.test.d.ts +2 -0
  162. package/dist/transport/multi/multi-transport.test.d.ts.map +1 -0
  163. package/dist/transport/multi/multi-transport.test.js +236 -0
  164. package/dist/transport/rabbitmq/rabbitmq-transport.d.ts +83 -0
  165. package/dist/transport/rabbitmq/rabbitmq-transport.d.ts.map +1 -0
  166. package/dist/transport/rabbitmq/rabbitmq-transport.js +541 -0
  167. package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts +2 -0
  168. package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts.map +1 -0
  169. package/dist/transport/rabbitmq/rabbitmq-transport.test.js +100 -0
  170. package/dist/transport/transport.d.ts +152 -0
  171. package/dist/transport/transport.d.ts.map +1 -0
  172. package/dist/transport/transport.js +1 -0
  173. package/{src/types/common.ts → dist/types/common.d.ts} +8 -20
  174. package/dist/types/common.d.ts.map +1 -0
  175. package/dist/types/common.js +12 -0
  176. package/dist/types/dispatcher.d.ts +14 -0
  177. package/dist/types/dispatcher.d.ts.map +1 -0
  178. package/dist/types/dispatcher.js +1 -0
  179. package/dist/types/envelope.d.ts +131 -0
  180. package/dist/types/envelope.d.ts.map +1 -0
  181. package/dist/types/envelope.js +99 -0
  182. package/dist/types/event.d.ts +92 -0
  183. package/dist/types/event.d.ts.map +1 -0
  184. package/dist/types/event.js +26 -0
  185. package/dist/types/event.test.d.ts +2 -0
  186. package/dist/types/event.test.d.ts.map +1 -0
  187. package/dist/types/event.test.js +130 -0
  188. package/dist/types/index.d.ts +11 -0
  189. package/dist/types/index.d.ts.map +1 -0
  190. package/dist/types/index.js +4 -0
  191. package/dist/types/subscriber.d.ts +227 -0
  192. package/dist/types/subscriber.d.ts.map +1 -0
  193. package/dist/types/subscriber.js +97 -0
  194. package/package.json +6 -2
  195. package/examples/config.ts +0 -126
  196. package/examples/event.ts +0 -26
  197. package/examples/order-event.json +0 -19
  198. package/src/checkpoint/context.test.ts +0 -510
  199. package/src/checkpoint/context.ts +0 -213
  200. package/src/checkpoint/index.ts +0 -30
  201. package/src/checkpoint/stores/memory.ts +0 -47
  202. package/src/checkpoint/stores/stores.test.ts +0 -177
  203. package/src/checkpoint/types.ts +0 -147
  204. package/src/codec/codec.ts +0 -42
  205. package/src/codec/header-aware-codec.ts +0 -41
  206. package/src/codec/json-codec.ts +0 -69
  207. package/src/codec/rabbitmq-codec.test.ts +0 -516
  208. package/src/codec/rabbitmq-codec.ts +0 -336
  209. package/src/core/fanout.test.ts +0 -1350
  210. package/src/core/fanout.ts +0 -184
  211. package/src/core/matador.test.ts +0 -575
  212. package/src/core/matador.ts +0 -357
  213. package/src/core/shutdown.test.ts +0 -853
  214. package/src/core/shutdown.ts +0 -165
  215. package/src/errors/checkpoint-errors.ts +0 -62
  216. package/src/errors/has-description.ts +0 -25
  217. package/src/errors/index.ts +0 -58
  218. package/src/errors/matador-errors.ts +0 -477
  219. package/src/errors/retry-errors.test.ts +0 -175
  220. package/src/errors/retry-errors.ts +0 -188
  221. package/src/hooks/index.ts +0 -14
  222. package/src/hooks/safe-hooks.ts +0 -200
  223. package/src/hooks/types.ts +0 -226
  224. package/src/index.ts +0 -242
  225. package/src/pipeline/pipeline.test.ts +0 -1377
  226. package/src/pipeline/pipeline.ts +0 -393
  227. package/src/retry/policy.ts +0 -46
  228. package/src/retry/standard-policy.test.ts +0 -290
  229. package/src/retry/standard-policy.ts +0 -156
  230. package/src/schema/index.ts +0 -16
  231. package/src/schema/registry.test.ts +0 -339
  232. package/src/schema/registry.ts +0 -229
  233. package/src/schema/types.test.ts +0 -280
  234. package/src/topology/builder.test.ts +0 -451
  235. package/src/topology/builder.ts +0 -238
  236. package/src/topology/index.ts +0 -19
  237. package/src/topology/types.ts +0 -183
  238. package/src/transport/capabilities.ts +0 -88
  239. package/src/transport/connection-manager.ts +0 -218
  240. package/src/transport/index.ts +0 -42
  241. package/src/transport/local/local-transport.test.ts +0 -262
  242. package/src/transport/local/local-transport.ts +0 -330
  243. package/src/transport/multi/multi-transport.test.ts +0 -320
  244. package/src/transport/multi/multi-transport.ts +0 -294
  245. package/src/transport/rabbitmq/rabbitmq-transport.test.ts +0 -120
  246. package/src/transport/rabbitmq/rabbitmq-transport.ts +0 -782
  247. package/src/transport/transport.ts +0 -200
  248. package/src/types/dispatcher.ts +0 -18
  249. package/src/types/envelope.ts +0 -244
  250. package/src/types/event.test.ts +0 -157
  251. package/src/types/event.ts +0 -112
  252. package/src/types/index.ts +0 -62
  253. package/src/types/subscriber.ts +0 -333
  254. package/test/e2e/multi-transport.e2e.test.ts +0 -237
  255. package/test/e2e/rabbitmq-transport.e2e.test.ts +0 -618
  256. package/test/e2e/transport-compliance.e2e.test.ts +0 -506
  257. package/test/integration/matador.integration.test.ts +0 -634
  258. package/tsconfig.json +0 -29
  259. package/tsup.config.ts +0 -13
@@ -1,237 +0,0 @@
1
- import {
2
- afterAll,
3
- afterEach,
4
- beforeAll,
5
- beforeEach,
6
- describe,
7
- expect,
8
- it,
9
- } from 'bun:test';
10
- import {
11
- RabbitMQContainer,
12
- type StartedRabbitMQContainer,
13
- } from '@testcontainers/rabbitmq';
14
- import type { TransportFallbackContext } from '../../src/hooks/index.js';
15
- import type { Subscription } from '../../src/transport/index.js';
16
- import { LocalTransport } from '../../src/transport/local/local-transport.js';
17
- import { MultiTransport } from '../../src/transport/multi/multi-transport.js';
18
- import { RabbitMQTransport } from '../../src/transport/rabbitmq/rabbitmq-transport.js';
19
- import {
20
- createTestEnvelope,
21
- createTestTopology,
22
- } from './transport-compliance.e2e.test.js';
23
-
24
- // Skip tests if docker is not available
25
- const SKIP_E2E = process.env.SKIP_E2E_TESTS === 'true';
26
-
27
- describe.skipIf(SKIP_E2E)('MultiTransport E2E', () => {
28
- let container: StartedRabbitMQContainer;
29
- let connectionUrl: string;
30
-
31
- beforeAll(async () => {
32
- container = await new RabbitMQContainer('rabbitmq:3.13-management')
33
- .withExposedPorts(5672, 15672)
34
- .start();
35
-
36
- connectionUrl = container.getAmqpUrl();
37
- console.log(`RabbitMQ container started at ${connectionUrl}`);
38
- }, 120_000);
39
-
40
- afterAll(async () => {
41
- if (container) {
42
- await container.stop();
43
- }
44
- });
45
-
46
- describe('fallback to local transport when RabbitMQ fails', () => {
47
- let rabbitTransport: RabbitMQTransport;
48
- let localTransport: LocalTransport;
49
- let multiTransport: MultiTransport;
50
- let subscriptions: Subscription[];
51
- let fallbackEvents: TransportFallbackContext[];
52
-
53
- beforeEach(async () => {
54
- subscriptions = [];
55
- fallbackEvents = [];
56
-
57
- rabbitTransport = new RabbitMQTransport({
58
- url: connectionUrl,
59
- connectionName: 'matador-multi-transport-test',
60
- quorumQueues: false,
61
- });
62
-
63
- localTransport = new LocalTransport();
64
-
65
- multiTransport = new MultiTransport(
66
- { transports: [rabbitTransport, localTransport] },
67
- { onEnqueueFallback: (ctx) => fallbackEvents.push(ctx) },
68
- );
69
-
70
- await multiTransport.connect();
71
- });
72
-
73
- afterEach(async () => {
74
- for (const sub of subscriptions) {
75
- if (sub.isActive) {
76
- await sub.unsubscribe();
77
- }
78
- }
79
- if (multiTransport.isConnected()) {
80
- await multiTransport.disconnect();
81
- }
82
- });
83
-
84
- it('should send to RabbitMQ when healthy', async () => {
85
- const topology = createTestTopology(`healthy-${Date.now()}`);
86
- await multiTransport.applyTopology(topology);
87
- const queueName = `${topology.namespace}.events`;
88
-
89
- const receivedMessages: string[] = [];
90
-
91
- const subscription = await multiTransport.subscribe(
92
- queueName,
93
- async (env, receipt) => {
94
- receivedMessages.push(env.id);
95
- await multiTransport.complete(receipt);
96
- },
97
- );
98
- subscriptions.push(subscription);
99
-
100
- const envelope = createTestEnvelope();
101
- await multiTransport.send(queueName, envelope);
102
-
103
- await waitFor(() => receivedMessages.length >= 1, 5000);
104
-
105
- expect(receivedMessages).toContain(envelope.id);
106
- expect(fallbackEvents).toHaveLength(0); // No fallback occurred
107
- });
108
-
109
- it('should fallback to memory transport when RabbitMQ send fails', async () => {
110
- const topology = createTestTopology(`fallback-${Date.now()}`);
111
- await multiTransport.applyTopology(topology);
112
- const queueName = `${topology.namespace}.events`;
113
-
114
- const receivedMessages: string[] = [];
115
-
116
- // Subscribe BEFORE disconnecting RabbitMQ
117
- const subscription = await multiTransport.subscribe(
118
- queueName,
119
- async (env, receipt) => {
120
- receivedMessages.push(env.id);
121
- await multiTransport.complete(receipt);
122
- },
123
- );
124
- subscriptions.push(subscription);
125
-
126
- // Disconnect RabbitMQ to simulate failure
127
- await rabbitTransport.disconnect();
128
-
129
- // Send should fallback to memory transport
130
- const envelope = createTestEnvelope();
131
- await multiTransport.send(queueName, envelope);
132
-
133
- // Message should be processed by subscriber on memory transport
134
- await waitFor(() => receivedMessages.length >= 1, 5000);
135
-
136
- expect(receivedMessages).toContain(envelope.id);
137
-
138
- // Verify fallback was triggered
139
- expect(fallbackEvents).toHaveLength(1);
140
- expect(fallbackEvents[0]!.failedTransport).toBe('rabbitmq');
141
- expect(fallbackEvents[0]!.nextTransport).toBe('local');
142
- expect(fallbackEvents[0]!.queue).toBe(queueName);
143
- });
144
-
145
- it('should process multiple messages via fallback', async () => {
146
- const topology = createTestTopology(`multi-${Date.now()}`);
147
- await multiTransport.applyTopology(topology);
148
- const queueName = `${topology.namespace}.events`;
149
-
150
- const receivedMessages: string[] = [];
151
-
152
- const subscription = await multiTransport.subscribe(
153
- queueName,
154
- async (env, receipt) => {
155
- receivedMessages.push(env.id);
156
- await multiTransport.complete(receipt);
157
- },
158
- );
159
- subscriptions.push(subscription);
160
-
161
- // Disconnect RabbitMQ
162
- await rabbitTransport.disconnect();
163
-
164
- // Send multiple messages
165
- const envelopes = [
166
- createTestEnvelope({ id: 'msg-1' }),
167
- createTestEnvelope({ id: 'msg-2' }),
168
- createTestEnvelope({ id: 'msg-3' }),
169
- ];
170
-
171
- for (const env of envelopes) {
172
- await multiTransport.send(queueName, env);
173
- }
174
-
175
- await waitFor(() => receivedMessages.length >= 3, 5000);
176
-
177
- expect(receivedMessages).toContain('msg-1');
178
- expect(receivedMessages).toContain('msg-2');
179
- expect(receivedMessages).toContain('msg-3');
180
- expect(fallbackEvents).toHaveLength(3);
181
- });
182
-
183
- it('should handle mixed success/fallback sends', async () => {
184
- const topology = createTestTopology(`mixed-${Date.now()}`);
185
- await multiTransport.applyTopology(topology);
186
- const queueName = `${topology.namespace}.events`;
187
-
188
- const receivedMessages: string[] = [];
189
-
190
- const subscription = await multiTransport.subscribe(
191
- queueName,
192
- async (env, receipt) => {
193
- receivedMessages.push(env.id);
194
- await multiTransport.complete(receipt);
195
- },
196
- );
197
- subscriptions.push(subscription);
198
-
199
- // Send first message to RabbitMQ (should succeed)
200
- const env1 = createTestEnvelope({ id: 'rabbit-msg' });
201
- await multiTransport.send(queueName, env1);
202
-
203
- await waitFor(() => receivedMessages.includes('rabbit-msg'), 5000);
204
-
205
- // Disconnect RabbitMQ
206
- await rabbitTransport.disconnect();
207
-
208
- // Send second message (should fallback to memory)
209
- const env2 = createTestEnvelope({ id: 'memory-msg' });
210
- await multiTransport.send(queueName, env2);
211
-
212
- await waitFor(() => receivedMessages.includes('memory-msg'), 5000);
213
-
214
- expect(receivedMessages).toContain('rabbit-msg');
215
- expect(receivedMessages).toContain('memory-msg');
216
- expect(fallbackEvents).toHaveLength(1);
217
- expect(fallbackEvents[0]!.envelope.id).toBe('memory-msg');
218
- });
219
- });
220
- });
221
-
222
- /**
223
- * Waits for a condition to be true, with timeout.
224
- */
225
- async function waitFor(
226
- condition: () => boolean,
227
- timeoutMs: number,
228
- intervalMs = 50,
229
- ): Promise<void> {
230
- const startTime = Date.now();
231
- while (!condition()) {
232
- if (Date.now() - startTime > timeoutMs) {
233
- throw new Error(`Timeout waiting for condition after ${timeoutMs}ms`);
234
- }
235
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
236
- }
237
- }