@zdavison/matador 2.0.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 (256) hide show
  1. package/cli.ts +453 -0
  2. package/dist/checkpoint/context.d.ts +59 -0
  3. package/dist/checkpoint/context.d.ts.map +1 -0
  4. package/dist/checkpoint/context.js +140 -0
  5. package/dist/checkpoint/context.test.d.ts +2 -0
  6. package/dist/checkpoint/context.test.d.ts.map +1 -0
  7. package/dist/checkpoint/context.test.js +424 -0
  8. package/dist/checkpoint/index.d.ts +7 -0
  9. package/dist/checkpoint/index.d.ts.map +1 -0
  10. package/dist/checkpoint/index.js +6 -0
  11. package/dist/checkpoint/stores/memory.d.ts +29 -0
  12. package/dist/checkpoint/stores/memory.d.ts.map +1 -0
  13. package/dist/checkpoint/stores/memory.js +39 -0
  14. package/dist/checkpoint/stores/noop.d.ts +14 -0
  15. package/dist/checkpoint/stores/noop.d.ts.map +1 -0
  16. package/dist/checkpoint/stores/noop.js +18 -0
  17. package/dist/checkpoint/stores/stores.test.d.ts +2 -0
  18. package/dist/checkpoint/stores/stores.test.d.ts.map +1 -0
  19. package/dist/checkpoint/stores/stores.test.js +146 -0
  20. package/dist/checkpoint/types.d.ts +119 -0
  21. package/dist/checkpoint/types.d.ts.map +1 -0
  22. package/dist/checkpoint/types.js +1 -0
  23. package/dist/codec/codec.d.ts +29 -0
  24. package/dist/codec/codec.d.ts.map +1 -0
  25. package/dist/codec/codec.js +15 -0
  26. package/dist/codec/header-aware-codec.d.ts +36 -0
  27. package/dist/codec/header-aware-codec.d.ts.map +1 -0
  28. package/dist/codec/header-aware-codec.js +1 -0
  29. package/dist/codec/index.d.ts +6 -0
  30. package/dist/codec/index.d.ts.map +1 -0
  31. package/dist/codec/index.js +3 -0
  32. package/dist/codec/json-codec.d.ts +13 -0
  33. package/dist/codec/json-codec.d.ts.map +1 -0
  34. package/dist/codec/json-codec.js +64 -0
  35. package/dist/codec/rabbitmq-codec.d.ts +28 -0
  36. package/dist/codec/rabbitmq-codec.d.ts.map +1 -0
  37. package/dist/codec/rabbitmq-codec.js +242 -0
  38. package/dist/codec/rabbitmq-codec.test.d.ts +2 -0
  39. package/dist/codec/rabbitmq-codec.test.d.ts.map +1 -0
  40. package/dist/codec/rabbitmq-codec.test.js +433 -0
  41. package/dist/core/fanout.d.ts +59 -0
  42. package/dist/core/fanout.d.ts.map +1 -0
  43. package/dist/core/fanout.js +121 -0
  44. package/dist/core/fanout.test.d.ts +2 -0
  45. package/dist/core/fanout.test.d.ts.map +1 -0
  46. package/dist/core/fanout.test.js +1055 -0
  47. package/dist/core/index.d.ts +7 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +3 -0
  50. package/dist/core/matador.d.ts +133 -0
  51. package/dist/core/matador.d.ts.map +1 -0
  52. package/dist/core/matador.js +222 -0
  53. package/dist/core/matador.test.d.ts +2 -0
  54. package/dist/core/matador.test.d.ts.map +1 -0
  55. package/dist/core/matador.test.js +446 -0
  56. package/dist/core/shutdown.d.ts +78 -0
  57. package/dist/core/shutdown.d.ts.map +1 -0
  58. package/dist/core/shutdown.js +111 -0
  59. package/dist/core/shutdown.test.d.ts +2 -0
  60. package/dist/core/shutdown.test.d.ts.map +1 -0
  61. package/dist/core/shutdown.test.js +524 -0
  62. package/dist/errors/checkpoint-errors.d.ts +30 -0
  63. package/dist/errors/checkpoint-errors.d.ts.map +1 -0
  64. package/dist/errors/checkpoint-errors.js +49 -0
  65. package/dist/errors/has-description.d.ts +18 -0
  66. package/dist/errors/has-description.d.ts.map +1 -0
  67. package/dist/errors/has-description.js +9 -0
  68. package/dist/errors/index.d.ts +6 -0
  69. package/dist/errors/index.d.ts.map +1 -0
  70. package/dist/errors/index.js +22 -0
  71. package/dist/errors/matador-errors.d.ts +183 -0
  72. package/dist/errors/matador-errors.d.ts.map +1 -0
  73. package/dist/errors/matador-errors.js +376 -0
  74. package/dist/errors/retry-errors.d.ts +67 -0
  75. package/dist/errors/retry-errors.d.ts.map +1 -0
  76. package/dist/errors/retry-errors.js +108 -0
  77. package/dist/hooks/index.d.ts +4 -0
  78. package/dist/hooks/index.d.ts.map +1 -0
  79. package/dist/hooks/index.js +2 -0
  80. package/dist/hooks/safe-hooks.d.ts +34 -0
  81. package/dist/hooks/safe-hooks.d.ts.map +1 -0
  82. package/dist/hooks/safe-hooks.js +135 -0
  83. package/dist/hooks/types.d.ts +189 -0
  84. package/dist/hooks/types.d.ts.map +1 -0
  85. package/dist/hooks/types.js +9 -0
  86. package/dist/index.cjs +3156 -0
  87. package/dist/index.cjs.map +1 -0
  88. package/dist/index.d.cts +23 -0
  89. package/dist/index.d.ts +23 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +31 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/pipeline/index.d.ts +3 -0
  94. package/dist/pipeline/index.d.ts.map +1 -0
  95. package/dist/pipeline/index.js +1 -0
  96. package/dist/pipeline/pipeline.d.ts +60 -0
  97. package/dist/pipeline/pipeline.d.ts.map +1 -0
  98. package/dist/pipeline/pipeline.js +261 -0
  99. package/dist/pipeline/pipeline.test.d.ts +2 -0
  100. package/dist/pipeline/pipeline.test.d.ts.map +1 -0
  101. package/dist/pipeline/pipeline.test.js +1065 -0
  102. package/dist/retry/index.d.ts +4 -0
  103. package/dist/retry/index.d.ts.map +1 -0
  104. package/dist/retry/index.js +1 -0
  105. package/dist/retry/policy.d.ts +43 -0
  106. package/dist/retry/policy.d.ts.map +1 -0
  107. package/dist/retry/policy.js +1 -0
  108. package/dist/retry/standard-policy.d.ts +44 -0
  109. package/dist/retry/standard-policy.d.ts.map +1 -0
  110. package/dist/retry/standard-policy.js +102 -0
  111. package/dist/retry/standard-policy.test.d.ts +2 -0
  112. package/dist/retry/standard-policy.test.d.ts.map +1 -0
  113. package/dist/retry/standard-policy.test.js +190 -0
  114. package/dist/schema/index.d.ts +4 -0
  115. package/dist/schema/index.d.ts.map +1 -0
  116. package/dist/schema/index.js +2 -0
  117. package/dist/schema/registry.d.ts +63 -0
  118. package/dist/schema/registry.d.ts.map +1 -0
  119. package/dist/schema/registry.js +171 -0
  120. package/dist/schema/registry.test.d.ts +2 -0
  121. package/dist/schema/registry.test.d.ts.map +1 -0
  122. package/dist/schema/registry.test.js +278 -0
  123. package/dist/schema/types.d.ts +158 -0
  124. package/dist/schema/types.d.ts.map +1 -0
  125. package/dist/schema/types.js +74 -0
  126. package/dist/schema/types.test.d.ts +2 -0
  127. package/dist/schema/types.test.d.ts.map +1 -0
  128. package/dist/schema/types.test.js +243 -0
  129. package/dist/topology/builder.d.ts +66 -0
  130. package/dist/topology/builder.d.ts.map +1 -0
  131. package/dist/topology/builder.js +156 -0
  132. package/dist/topology/builder.test.d.ts +2 -0
  133. package/dist/topology/builder.test.d.ts.map +1 -0
  134. package/dist/topology/builder.test.js +222 -0
  135. package/dist/topology/index.d.ts +5 -0
  136. package/dist/topology/index.d.ts.map +1 -0
  137. package/dist/topology/index.js +2 -0
  138. package/dist/topology/types.d.ts +76 -0
  139. package/dist/topology/types.d.ts.map +1 -0
  140. package/dist/topology/types.js +18 -0
  141. package/dist/transport/capabilities.d.ts +66 -0
  142. package/dist/transport/capabilities.d.ts.map +1 -0
  143. package/dist/transport/capabilities.js +18 -0
  144. package/dist/transport/connection-manager.d.ts +95 -0
  145. package/dist/transport/connection-manager.d.ts.map +1 -0
  146. package/dist/transport/connection-manager.js +144 -0
  147. package/dist/transport/index.d.ts +11 -0
  148. package/dist/transport/index.d.ts.map +1 -0
  149. package/dist/transport/index.js +5 -0
  150. package/dist/transport/local/local-transport.d.ts +62 -0
  151. package/dist/transport/local/local-transport.d.ts.map +1 -0
  152. package/dist/transport/local/local-transport.js +241 -0
  153. package/dist/transport/local/local-transport.test.d.ts +2 -0
  154. package/dist/transport/local/local-transport.test.d.ts.map +1 -0
  155. package/dist/transport/local/local-transport.test.js +192 -0
  156. package/dist/transport/multi/multi-transport.d.ts +94 -0
  157. package/dist/transport/multi/multi-transport.d.ts.map +1 -0
  158. package/dist/transport/multi/multi-transport.js +184 -0
  159. package/dist/transport/multi/multi-transport.test.d.ts +2 -0
  160. package/dist/transport/multi/multi-transport.test.d.ts.map +1 -0
  161. package/dist/transport/multi/multi-transport.test.js +236 -0
  162. package/dist/transport/rabbitmq/rabbitmq-transport.d.ts +73 -0
  163. package/dist/transport/rabbitmq/rabbitmq-transport.d.ts.map +1 -0
  164. package/dist/transport/rabbitmq/rabbitmq-transport.js +518 -0
  165. package/dist/transport/transport.d.ts +152 -0
  166. package/dist/transport/transport.d.ts.map +1 -0
  167. package/dist/transport/transport.js +1 -0
  168. package/dist/types/common.d.ts +41 -0
  169. package/dist/types/common.d.ts.map +1 -0
  170. package/dist/types/common.js +12 -0
  171. package/dist/types/envelope.d.ts +82 -0
  172. package/dist/types/envelope.d.ts.map +1 -0
  173. package/dist/types/envelope.js +36 -0
  174. package/dist/types/event.d.ts +96 -0
  175. package/dist/types/event.d.ts.map +1 -0
  176. package/dist/types/event.js +26 -0
  177. package/dist/types/event.test.d.ts +2 -0
  178. package/dist/types/event.test.d.ts.map +1 -0
  179. package/dist/types/event.test.js +130 -0
  180. package/dist/types/index.d.ts +9 -0
  181. package/dist/types/index.d.ts.map +1 -0
  182. package/dist/types/index.js +4 -0
  183. package/dist/types/subscriber.d.ts +207 -0
  184. package/dist/types/subscriber.d.ts.map +1 -0
  185. package/dist/types/subscriber.js +99 -0
  186. package/examples/config.ts +126 -0
  187. package/examples/event.ts +26 -0
  188. package/examples/order-event.json +19 -0
  189. package/package.json +66 -0
  190. package/src/checkpoint/context.test.ts +510 -0
  191. package/src/checkpoint/context.ts +213 -0
  192. package/src/checkpoint/index.ts +30 -0
  193. package/src/checkpoint/stores/memory.ts +47 -0
  194. package/src/checkpoint/stores/noop.ts +22 -0
  195. package/src/checkpoint/stores/stores.test.ts +177 -0
  196. package/src/checkpoint/types.ts +147 -0
  197. package/src/codec/codec.ts +42 -0
  198. package/src/codec/header-aware-codec.ts +41 -0
  199. package/src/codec/index.ts +11 -0
  200. package/src/codec/json-codec.ts +69 -0
  201. package/src/codec/rabbitmq-codec.test.ts +516 -0
  202. package/src/codec/rabbitmq-codec.ts +336 -0
  203. package/src/core/fanout.test.ts +1351 -0
  204. package/src/core/fanout.ts +184 -0
  205. package/src/core/index.ts +12 -0
  206. package/src/core/matador.test.ts +575 -0
  207. package/src/core/matador.ts +344 -0
  208. package/src/core/shutdown.test.ts +853 -0
  209. package/src/core/shutdown.ts +165 -0
  210. package/src/errors/checkpoint-errors.ts +62 -0
  211. package/src/errors/has-description.ts +25 -0
  212. package/src/errors/index.ts +57 -0
  213. package/src/errors/matador-errors.ts +477 -0
  214. package/src/errors/retry-errors.ts +134 -0
  215. package/src/hooks/index.ts +15 -0
  216. package/src/hooks/safe-hooks.ts +223 -0
  217. package/src/hooks/types.ts +248 -0
  218. package/src/index.ts +231 -0
  219. package/src/pipeline/index.ts +2 -0
  220. package/src/pipeline/pipeline.test.ts +1317 -0
  221. package/src/pipeline/pipeline.ts +371 -0
  222. package/src/retry/index.ts +4 -0
  223. package/src/retry/policy.ts +46 -0
  224. package/src/retry/standard-policy.test.ts +282 -0
  225. package/src/retry/standard-policy.ts +156 -0
  226. package/src/schema/index.ts +16 -0
  227. package/src/schema/registry.test.ts +339 -0
  228. package/src/schema/registry.ts +226 -0
  229. package/src/schema/types.test.ts +281 -0
  230. package/src/schema/types.ts +217 -0
  231. package/src/topology/builder.test.ts +275 -0
  232. package/src/topology/builder.ts +199 -0
  233. package/src/topology/index.ts +15 -0
  234. package/src/topology/types.ts +109 -0
  235. package/src/transport/capabilities.ts +88 -0
  236. package/src/transport/connection-manager.ts +218 -0
  237. package/src/transport/index.ts +42 -0
  238. package/src/transport/local/local-transport.test.ts +262 -0
  239. package/src/transport/local/local-transport.ts +327 -0
  240. package/src/transport/multi/multi-transport.test.ts +320 -0
  241. package/src/transport/multi/multi-transport.ts +294 -0
  242. package/src/transport/rabbitmq/rabbitmq-transport.ts +753 -0
  243. package/src/transport/transport.ts +200 -0
  244. package/src/types/common.ts +53 -0
  245. package/src/types/envelope.ts +152 -0
  246. package/src/types/event.test.ts +157 -0
  247. package/src/types/event.ts +118 -0
  248. package/src/types/index.ts +52 -0
  249. package/src/types/subscriber.ts +310 -0
  250. package/test/e2e/multi-transport.e2e.test.ts +236 -0
  251. package/test/e2e/rabbitmq-transport.e2e.test.ts +327 -0
  252. package/test/e2e/transport-compliance.e2e.test.ts +505 -0
  253. package/test/integration/matador.integration.test.ts +634 -0
  254. package/tsconfig.json +29 -0
  255. package/tsconfig.tsbuildinfo +1 -0
  256. package/tsup.config.ts +13 -0
@@ -0,0 +1,165 @@
1
+ import { type Logger, consoleLogger } from '../hooks/index.js';
2
+
3
+ /**
4
+ * Shutdown state.
5
+ */
6
+ export type ShutdownState =
7
+ | 'running'
8
+ | 'stopping-receive'
9
+ | 'waiting-handlers'
10
+ | 'stopping-enqueue'
11
+ | 'disconnecting'
12
+ | 'stopped';
13
+
14
+ /**
15
+ * Configuration for shutdown manager.
16
+ */
17
+ export interface ShutdownConfig {
18
+ /** Timeout for graceful shutdown in milliseconds */
19
+ readonly gracefulShutdownTimeout: number;
20
+
21
+ /** Polling interval when waiting for handlers to idle */
22
+ readonly idlePollingInterval: number;
23
+
24
+ /** Logger for shutdown events (defaults to console) */
25
+ readonly logger: Logger;
26
+ }
27
+
28
+ /**
29
+ * Default shutdown configuration.
30
+ */
31
+ export const defaultShutdownConfig: ShutdownConfig = {
32
+ gracefulShutdownTimeout: 30000,
33
+ idlePollingInterval: 1000,
34
+ logger: consoleLogger,
35
+ };
36
+
37
+ /**
38
+ * Handler state tracking.
39
+ */
40
+ export interface HandlersState {
41
+ readonly eventsBeingProcessed: number;
42
+ readonly eventsBeingEnqueued: number;
43
+ readonly isIdle: boolean;
44
+ }
45
+
46
+ /**
47
+ * Manages graceful shutdown of Matador.
48
+ *
49
+ * Shutdown sequence:
50
+ * 1. Stop receiving new messages
51
+ * 2. Wait for in-flight processing to complete
52
+ * 3. Stop accepting new enqueue requests
53
+ * 4. Disconnect transport
54
+ */
55
+ export class ShutdownManager {
56
+ private _state: ShutdownState = 'running';
57
+ private readonly config: ShutdownConfig;
58
+ private eventsBeingProcessed = 0;
59
+ private acceptingEnqueue = true;
60
+
61
+ constructor(
62
+ private readonly getEnqueueCount: () => number,
63
+ private readonly stopReceiving: () => Promise<void>,
64
+ private readonly disconnectTransport: () => Promise<void>,
65
+ config: Partial<ShutdownConfig> = {},
66
+ ) {
67
+ this.config = { ...defaultShutdownConfig, ...config };
68
+ }
69
+
70
+ /**
71
+ * Current shutdown state.
72
+ */
73
+ get state(): ShutdownState {
74
+ return this._state;
75
+ }
76
+
77
+ /**
78
+ * Whether enqueue is currently allowed.
79
+ */
80
+ get isEnqueueAllowed(): boolean {
81
+ return this.acceptingEnqueue;
82
+ }
83
+
84
+ /**
85
+ * Gets current handler state.
86
+ */
87
+ getHandlersState(): HandlersState {
88
+ const eventsBeingEnqueued = this.getEnqueueCount();
89
+ return {
90
+ eventsBeingProcessed: this.eventsBeingProcessed,
91
+ eventsBeingEnqueued,
92
+ isIdle: this.eventsBeingProcessed === 0 && eventsBeingEnqueued === 0,
93
+ };
94
+ }
95
+
96
+ /**
97
+ * Increment processing counter.
98
+ */
99
+ incrementProcessing(): void {
100
+ this.eventsBeingProcessed++;
101
+ }
102
+
103
+ /**
104
+ * Decrement processing counter.
105
+ */
106
+ decrementProcessing(): void {
107
+ this.eventsBeingProcessed--;
108
+ }
109
+
110
+ /**
111
+ * Performs graceful shutdown.
112
+ */
113
+ async shutdown(): Promise<void> {
114
+ if (this._state !== 'running') {
115
+ return;
116
+ }
117
+
118
+ // 1. Stop receiving new messages
119
+ this._state = 'stopping-receive';
120
+ await this.stopReceiving();
121
+
122
+ // 2. Wait for handlers to idle
123
+ this._state = 'waiting-handlers';
124
+ await this.waitForIdle();
125
+
126
+ // 3. Stop accepting new enqueue requests
127
+ this._state = 'stopping-enqueue';
128
+ this.acceptingEnqueue = false;
129
+
130
+ // 4. Disconnect transport
131
+ this._state = 'disconnecting';
132
+ await this.disconnectTransport();
133
+
134
+ this._state = 'stopped';
135
+ }
136
+
137
+ /**
138
+ * Forcefully stops without waiting.
139
+ */
140
+ async forceStop(): Promise<void> {
141
+ this.acceptingEnqueue = false;
142
+ await this.stopReceiving();
143
+ await this.disconnectTransport();
144
+ this._state = 'stopped';
145
+ }
146
+
147
+ private async waitForIdle(): Promise<void> {
148
+ const deadline = Date.now() + this.config.gracefulShutdownTimeout;
149
+
150
+ while (!this.getHandlersState().isIdle) {
151
+ if (Date.now() > deadline) {
152
+ this.config.logger.warn(
153
+ `[Matador] ⚠️ Shutdown timeout reached with ${this.eventsBeingProcessed} events still processing`,
154
+ );
155
+ break;
156
+ }
157
+
158
+ await this.sleep(this.config.idlePollingInterval);
159
+ }
160
+ }
161
+
162
+ private sleep(ms: number): Promise<void> {
163
+ return new Promise((resolve) => setTimeout(resolve, ms));
164
+ }
165
+ }
@@ -0,0 +1,62 @@
1
+ import { MatadorError } from './matador-errors.js';
2
+
3
+ /**
4
+ * Thrown when a duplicate io() key is used within a single subscriber execution.
5
+ * Each io() call must have a unique key to prevent cache collisions.
6
+ */
7
+ export class DuplicateIoKeyError extends MatadorError {
8
+ readonly description =
9
+ 'The same io() key was used multiple times in a single subscriber execution. ' +
10
+ 'Each io() call must have a unique key to ensure correct checkpoint behavior. ' +
11
+ 'ACTION: Ensure all io() keys are unique within the subscriber. ' +
12
+ 'For dynamic operations (e.g., loops), include a unique identifier in the key ' +
13
+ '(e.g., `process-item-${item.id}`).';
14
+
15
+ constructor(
16
+ public readonly key: string,
17
+ public readonly subscriberName: string,
18
+ ) {
19
+ super(
20
+ `Duplicate io key "${key}" in subscriber "${subscriberName}". ` +
21
+ `Each io() call must have a unique key.`,
22
+ );
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Thrown when checkpoint store operations fail.
28
+ */
29
+ export class CheckpointStoreError extends MatadorError {
30
+ readonly description =
31
+ 'A checkpoint store operation failed. This may cause issues with resumable subscribers. ' +
32
+ 'ACTION: Check the underlying storage system (Redis, etc.) for connectivity issues. ' +
33
+ 'The subscriber may re-execute operations that were already completed.';
34
+
35
+ constructor(
36
+ public readonly operation: 'get' | 'set' | 'delete',
37
+ public readonly envelopeId: string,
38
+ public readonly cause: Error,
39
+ ) {
40
+ super(
41
+ `Checkpoint store ${operation} failed for envelope "${envelopeId}": ${cause.message}`,
42
+ );
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Type guard for DuplicateIoKeyError.
48
+ */
49
+ export function isDuplicateIoKeyError(
50
+ error: unknown,
51
+ ): error is DuplicateIoKeyError {
52
+ return error instanceof DuplicateIoKeyError;
53
+ }
54
+
55
+ /**
56
+ * Type guard for CheckpointStoreError.
57
+ */
58
+ export function isCheckpointStoreError(
59
+ error: unknown,
60
+ ): error is CheckpointStoreError {
61
+ return error instanceof CheckpointStoreError;
62
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Interface for errors that provide a human-readable description.
3
+ * The description explains what the error means and what actions
4
+ * users should take when encountering it in logs/observability.
5
+ */
6
+ export interface HasDescription {
7
+ /**
8
+ * Human-readable description of the error type.
9
+ * Intended for logging and observability to help users understand
10
+ * the error and determine appropriate remediation steps.
11
+ */
12
+ readonly description: string;
13
+ }
14
+
15
+ /**
16
+ * Type guard to check if an error implements HasDescription.
17
+ */
18
+ export function hasDescription(error: unknown): error is HasDescription {
19
+ return (
20
+ typeof error === 'object' &&
21
+ error !== null &&
22
+ 'description' in error &&
23
+ typeof (error as HasDescription).description === 'string'
24
+ );
25
+ }
@@ -0,0 +1,57 @@
1
+ export type { HasDescription } from './has-description.js';
2
+ export { hasDescription } from './has-description.js';
3
+
4
+ export {
5
+ DontRetry,
6
+ DoRetry,
7
+ EventAssertionError,
8
+ isAssertionError,
9
+ isDontRetry,
10
+ isDoRetry,
11
+ RetryControlError,
12
+ } from './retry-errors.js';
13
+
14
+ export {
15
+ // Base class
16
+ MatadorError,
17
+ isMatadorError,
18
+ // Lifecycle errors
19
+ NotStartedError,
20
+ isNotStartedError,
21
+ ShutdownInProgressError,
22
+ // Transport errors
23
+ TransportNotConnectedError,
24
+ isTransportNotConnectedError,
25
+ TransportClosedError,
26
+ TransportSendError,
27
+ AllTransportsFailedError,
28
+ DelayedMessagesNotSupportedError,
29
+ // Schema & configuration errors
30
+ EventNotRegisteredError,
31
+ isEventNotRegisteredError,
32
+ SubscriberNotRegisteredError,
33
+ isSubscriberNotRegisteredError,
34
+ NoSubscribersExistError,
35
+ InvalidSchemaError,
36
+ SubscriberIsStubError,
37
+ LocalTransportCannotProcessStubError,
38
+ // Queue errors
39
+ QueueNotFoundError,
40
+ // Event validation errors
41
+ InvalidEventError,
42
+ // Message processing errors
43
+ MessageMaybePoisonedError,
44
+ isMessageMaybePoisonedError,
45
+ IdempotentMessageCannotRetryError,
46
+ isIdempotentMessageCannotRetryError,
47
+ // Timeout errors
48
+ TimeoutError,
49
+ } from './matador-errors.js';
50
+
51
+ export {
52
+ // Checkpoint errors
53
+ CheckpointStoreError,
54
+ DuplicateIoKeyError,
55
+ isCheckpointStoreError,
56
+ isDuplicateIoKeyError,
57
+ } from './checkpoint-errors.js';