@amqp-contract/worker 0.20.0 → 0.22.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.
package/docs/index.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ### MessageValidationError
10
10
 
11
- Defined in: packages/core/dist/index.d.mts:83
11
+ Defined in: packages/core/dist/index.d.mts:27
12
12
 
13
13
  Error thrown when message validation fails (payload or headers).
14
14
 
@@ -35,7 +35,7 @@ The validation issues from the Standard Schema validation
35
35
  new MessageValidationError(source, issues): MessageValidationError;
36
36
  ```
37
37
 
38
- Defined in: packages/core/dist/index.d.mts:86
38
+ Defined in: packages/core/dist/index.d.mts:30
39
39
 
40
40
  ###### Parameters
41
41
 
@@ -58,13 +58,13 @@ Error.constructor
58
58
 
59
59
  | Property | Modifier | Type | Description | Inherited from | Defined in |
60
60
  | ------ | ------ | ------ | ------ | ------ | ------ |
61
- | <a id="cause"></a> `cause?` | `public` | `unknown` | - | `Error.cause` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es2022.error.d.ts:26 |
62
- | <a id="issues"></a> `issues` | `readonly` | `unknown` | - | - | packages/core/dist/index.d.mts:85 |
63
- | <a id="message"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1077 |
64
- | <a id="name"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
65
- | <a id="source"></a> `source` | `readonly` | `string` | - | - | packages/core/dist/index.d.mts:84 |
66
- | <a id="stack"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1078 |
67
- | <a id="stacktracelimit"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:67 |
61
+ | <a id="cause"></a> `cause?` | `public` | `unknown` | - | `Error.cause` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es2022.error.d.ts:24 |
62
+ | <a id="issues"></a> `issues` | `readonly` | `unknown` | - | - | packages/core/dist/index.d.mts:29 |
63
+ | <a id="message"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1075 |
64
+ | <a id="name"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1074 |
65
+ | <a id="source"></a> `source` | `readonly` | `string` | - | - | packages/core/dist/index.d.mts:28 |
66
+ | <a id="stack"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
67
+ | <a id="stacktracelimit"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:68 |
68
68
 
69
69
  #### Methods
70
70
 
@@ -74,7 +74,7 @@ Error.constructor
74
74
  static captureStackTrace(targetObject, constructorOpt?): void;
75
75
  ```
76
76
 
77
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:51
77
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:52
78
78
 
79
79
  Creates a `.stack` property on `targetObject`, which when accessed returns
80
80
  a string representing the location in the code at which
@@ -143,7 +143,7 @@ Error.captureStackTrace
143
143
  static prepareStackTrace(err, stackTraces): any;
144
144
  ```
145
145
 
146
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:55
146
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:56
147
147
 
148
148
  ###### Parameters
149
149
 
@@ -170,7 +170,7 @@ Error.prepareStackTrace
170
170
 
171
171
  ### NonRetryableError
172
172
 
173
- Defined in: [packages/worker/src/errors.ts:34](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L34)
173
+ Defined in: [packages/worker/src/errors.ts:34](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L34)
174
174
 
175
175
  Non-retryable errors - permanent failures that should not be retried
176
176
  Examples: invalid data, business rule violations, permanent external failures
@@ -190,7 +190,7 @@ immediately sent to the dead letter queue (DLQ) if configured.
190
190
  new NonRetryableError(message, cause?): NonRetryableError;
191
191
  ```
192
192
 
193
- Defined in: [packages/worker/src/errors.ts:35](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L35)
193
+ Defined in: [packages/worker/src/errors.ts:35](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L35)
194
194
 
195
195
  ###### Parameters
196
196
 
@@ -213,11 +213,11 @@ Error.constructor
213
213
 
214
214
  | Property | Modifier | Type | Description | Inherited from | Defined in |
215
215
  | ------ | ------ | ------ | ------ | ------ | ------ |
216
- | <a id="cause-1"></a> `cause?` | `readonly` | `unknown` | - | `Error.cause` | [packages/worker/src/errors.ts:37](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L37) |
217
- | <a id="message-1"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1077 |
218
- | <a id="name-1"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
219
- | <a id="stack-1"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1078 |
220
- | <a id="stacktracelimit-1"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:67 |
216
+ | <a id="cause-1"></a> `cause?` | `readonly` | `unknown` | - | `Error.cause` | [packages/worker/src/errors.ts:37](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L37) |
217
+ | <a id="message-1"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1075 |
218
+ | <a id="name-1"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1074 |
219
+ | <a id="stack-1"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
220
+ | <a id="stacktracelimit-1"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:68 |
221
221
 
222
222
  #### Methods
223
223
 
@@ -227,7 +227,7 @@ Error.constructor
227
227
  static captureStackTrace(targetObject, constructorOpt?): void;
228
228
  ```
229
229
 
230
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:51
230
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:52
231
231
 
232
232
  Creates a `.stack` property on `targetObject`, which when accessed returns
233
233
  a string representing the location in the code at which
@@ -296,7 +296,7 @@ Error.captureStackTrace
296
296
  static prepareStackTrace(err, stackTraces): any;
297
297
  ```
298
298
 
299
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:55
299
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:56
300
300
 
301
301
  ###### Parameters
302
302
 
@@ -323,7 +323,7 @@ Error.prepareStackTrace
323
323
 
324
324
  ### RetryableError
325
325
 
326
- Defined in: [packages/worker/src/errors.ts:10](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L10)
326
+ Defined in: [packages/worker/src/errors.ts:10](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L10)
327
327
 
328
328
  Retryable errors - transient failures that may succeed on retry
329
329
  Examples: network timeouts, rate limiting, temporary service unavailability
@@ -343,7 +343,7 @@ The worker will apply exponential backoff and retry the message.
343
343
  new RetryableError(message, cause?): RetryableError;
344
344
  ```
345
345
 
346
- Defined in: [packages/worker/src/errors.ts:11](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L11)
346
+ Defined in: [packages/worker/src/errors.ts:11](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L11)
347
347
 
348
348
  ###### Parameters
349
349
 
@@ -366,11 +366,11 @@ Error.constructor
366
366
 
367
367
  | Property | Modifier | Type | Description | Inherited from | Defined in |
368
368
  | ------ | ------ | ------ | ------ | ------ | ------ |
369
- | <a id="cause-2"></a> `cause?` | `readonly` | `unknown` | - | `Error.cause` | [packages/worker/src/errors.ts:13](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L13) |
370
- | <a id="message-2"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1077 |
371
- | <a id="name-2"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
372
- | <a id="stack-2"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@5.9.3/node\_modules/typescript/lib/lib.es5.d.ts:1078 |
373
- | <a id="stacktracelimit-2"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:67 |
369
+ | <a id="cause-2"></a> `cause?` | `readonly` | `unknown` | - | `Error.cause` | [packages/worker/src/errors.ts:13](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L13) |
370
+ | <a id="message-2"></a> `message` | `public` | `string` | - | `Error.message` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1075 |
371
+ | <a id="name-2"></a> `name` | `public` | `string` | - | `Error.name` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1074 |
372
+ | <a id="stack-2"></a> `stack?` | `public` | `string` | - | `Error.stack` | node\_modules/.pnpm/typescript@6.0.3/node\_modules/typescript/lib/lib.es5.d.ts:1076 |
373
+ | <a id="stacktracelimit-2"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:68 |
374
374
 
375
375
  #### Methods
376
376
 
@@ -380,7 +380,7 @@ Error.constructor
380
380
  static captureStackTrace(targetObject, constructorOpt?): void;
381
381
  ```
382
382
 
383
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:51
383
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:52
384
384
 
385
385
  Creates a `.stack` property on `targetObject`, which when accessed returns
386
386
  a string representing the location in the code at which
@@ -449,7 +449,7 @@ Error.captureStackTrace
449
449
  static prepareStackTrace(err, stackTraces): any;
450
450
  ```
451
451
 
452
- Defined in: node\_modules/.pnpm/@types+node@25.3.0/node\_modules/@types/node/globals.d.ts:55
452
+ Defined in: node\_modules/.pnpm/@types+node@24.12.2/node\_modules/@types/node/globals.d.ts:56
453
453
 
454
454
  ###### Parameters
455
455
 
@@ -476,7 +476,7 @@ Error.prepareStackTrace
476
476
 
477
477
  ### TypedAmqpWorker
478
478
 
479
- Defined in: [packages/worker/src/worker.ts:158](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L158)
479
+ Defined in: [packages/worker/src/worker.ts:177](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L177)
480
480
 
481
481
  Type-safe AMQP worker for consuming messages from RabbitMQ.
482
482
 
@@ -490,7 +490,7 @@ import { TypedAmqpWorker } from '@amqp-contract/worker';
490
490
  import { defineQueue, defineMessage, defineContract, defineConsumer } from '@amqp-contract/contract';
491
491
  import { z } from 'zod';
492
492
 
493
- const orderQueue = defineQueue('order-processing', { durable: true });
493
+ const orderQueue = defineQueue('order-processing');
494
494
  const orderMessage = defineMessage(z.object({
495
495
  orderId: z.string(),
496
496
  amount: z.number()
@@ -531,7 +531,7 @@ await worker.close().resultToPromise();
531
531
  close(): Future<Result<void, TechnicalError>>;
532
532
  ```
533
533
 
534
- Defined in: [packages/worker/src/worker.ts:278](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L278)
534
+ Defined in: [packages/worker/src/worker.ts:339](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L339)
535
535
 
536
536
  Close the AMQP channel and connection.
537
537
 
@@ -559,7 +559,7 @@ if (closeResult.isOk()) {
559
559
  static create<TContract>(options): Future<Result<TypedAmqpWorker<TContract>, TechnicalError>>;
560
560
  ```
561
561
 
562
- Defined in: [packages/worker/src/worker.ts:235](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L235)
562
+ Defined in: [packages/worker/src/worker.ts:277](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L277)
563
563
 
564
564
  Create a type-safe AMQP worker from a contract.
565
565
 
@@ -603,13 +603,23 @@ const worker = await TypedAmqpWorker.create({
603
603
 
604
604
  ## Type Aliases
605
605
 
606
+ ### ConsumerOptions
607
+
608
+ ```ts
609
+ type ConsumerOptions = AmqpClientConsumerOptions;
610
+ ```
611
+
612
+ Defined in: [packages/worker/src/worker.ts:49](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L49)
613
+
614
+ ***
615
+
606
616
  ### CreateWorkerOptions
607
617
 
608
618
  ```ts
609
619
  type CreateWorkerOptions<TContract> = object;
610
620
  ```
611
621
 
612
- Defined in: [packages/worker/src/worker.ts:94](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L94)
622
+ Defined in: [packages/worker/src/worker.ts:96](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L96)
613
623
 
614
624
  Options for creating a type-safe AMQP worker.
615
625
 
@@ -634,6 +644,9 @@ const options: CreateWorkerOptions<typeof contract> = {
634
644
  ]
635
645
  },
636
646
  urls: ['amqp://localhost'],
647
+ defaultConsumerOptions: {
648
+ prefetch: 5,
649
+ },
637
650
  connectionOptions: {
638
651
  heartbeatIntervalInSeconds: 30
639
652
  },
@@ -654,12 +667,14 @@ not at the handler level. See `QueueDefinition.retry` for configuration options.
654
667
 
655
668
  | Property | Type | Description | Defined in |
656
669
  | ------ | ------ | ------ | ------ |
657
- | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/worker/src/worker.ts:106](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L106) |
658
- | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [packages/worker/src/worker.ts:96](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L96) |
659
- | <a id="handlers"></a> `handlers` | [`WorkerInferConsumerHandlers`](#workerinferconsumerhandlers)&lt;`TContract`&gt; | Handlers for each consumer defined in the contract. Handlers must return `Future<Result<void, HandlerError>>` for explicit error handling. Use defineHandler() to create handlers. | [packages/worker/src/worker.ts:102](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L102) |
660
- | <a id="logger"></a> `logger?` | `Logger` | Optional logger for logging message consumption and errors | [packages/worker/src/worker.ts:108](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L108) |
661
- | <a id="telemetry"></a> `telemetry?` | `TelemetryProvider` | Optional telemetry provider for tracing and metrics. If not provided, uses the default provider which attempts to load OpenTelemetry. OpenTelemetry instrumentation is automatically enabled if @opentelemetry/api is installed. | [packages/worker/src/worker.ts:114](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L114) |
662
- | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/worker/src/worker.ts:104](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/worker.ts#L104) |
670
+ | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/worker/src/worker.ts:113](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L113) |
671
+ | <a id="connecttimeoutms"></a> `connectTimeoutMs?` | `number` | Maximum time in ms to wait for the AMQP connection to become ready before `create()` resolves to `Result.Error<TechnicalError>`. Without this option, `create()` waits forever — the underlying amqp-connection-manager retries indefinitely. | [packages/worker/src/worker.ts:133](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L133) |
672
+ | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [packages/worker/src/worker.ts:98](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L98) |
673
+ | <a id="defaultconsumeroptions"></a> `defaultConsumerOptions?` | [`ConsumerOptions`](#consumeroptions) | Optional default consumer options applied to all consumer handlers. Handler-specific options provided in tuple form override these defaults. | [packages/worker/src/worker.ts:126](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L126) |
674
+ | <a id="handlers"></a> `handlers` | `WorkerInferHandlers`&lt;`TContract`&gt; | Handlers for each `consumers` and `rpcs` entry in the contract. - Regular consumers return `Future<Result<void, HandlerError>>`. - RPC handlers return `Future<Result<TResponse, HandlerError>>` where `TResponse` is inferred from the RPC's response message schema. Use `defineHandler` / `defineHandlers` to create handlers with full type inference. | [packages/worker/src/worker.ts:109](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L109) |
675
+ | <a id="logger"></a> `logger?` | `Logger` | Optional logger for logging message consumption and errors | [packages/worker/src/worker.ts:115](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L115) |
676
+ | <a id="telemetry"></a> `telemetry?` | `TelemetryProvider` | Optional telemetry provider for tracing and metrics. If not provided, uses the default provider which attempts to load OpenTelemetry. OpenTelemetry instrumentation is automatically enabled if @opentelemetry/api is installed. | [packages/worker/src/worker.ts:121](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L121) |
677
+ | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/worker/src/worker.ts:111](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L111) |
663
678
 
664
679
  ***
665
680
 
@@ -671,7 +686,7 @@ type HandlerError =
671
686
  | NonRetryableError;
672
687
  ```
673
688
 
674
- Defined in: [packages/worker/src/errors.ts:55](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L55)
689
+ Defined in: [packages/worker/src/errors.ts:55](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L55)
675
690
 
676
691
  Union type representing all handler errors.
677
692
  Use this type when defining handlers that explicitly signal error outcomes.
@@ -684,7 +699,7 @@ Use this type when defining handlers that explicitly signal error outcomes.
684
699
  type WorkerConsumedMessage<TPayload, THeaders> = object;
685
700
  ```
686
701
 
687
- Defined in: [packages/worker/src/types.ts:104](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L104)
702
+ Defined in: [packages/worker/src/types.ts:156](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L156)
688
703
 
689
704
  A consumed message containing parsed payload and headers.
690
705
 
@@ -694,7 +709,6 @@ It contains the validated payload and (if defined in the message schema) the val
694
709
  #### Example
695
710
 
696
711
  ```typescript
697
- // Handler receives the consumed message with typed payload and headers
698
712
  const handler = defineHandler(contract, 'processOrder', (message, rawMessage) => {
699
713
  console.log(message.payload.orderId); // Typed payload
700
714
  console.log(message.headers?.priority); // Typed headers (if defined)
@@ -714,8 +728,8 @@ const handler = defineHandler(contract, 'processOrder', (message, rawMessage) =>
714
728
 
715
729
  | Property | Type | Description | Defined in |
716
730
  | ------ | ------ | ------ | ------ |
717
- | <a id="headers"></a> `headers` | `THeaders` *extends* `undefined` ? `undefined` : `THeaders` | The validated message headers (present only when headers schema is defined) | [packages/worker/src/types.ts:108](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L108) |
718
- | <a id="payload"></a> `payload` | `TPayload` | The validated message payload | [packages/worker/src/types.ts:106](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L106) |
731
+ | <a id="headers"></a> `headers` | `THeaders` *extends* `undefined` ? `undefined` : `THeaders` | The validated message headers (present only when headers schema is defined) | [packages/worker/src/types.ts:160](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L160) |
732
+ | <a id="payload"></a> `payload` | `TPayload` | The validated message payload | [packages/worker/src/types.ts:158](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L158) |
719
733
 
720
734
  ***
721
735
 
@@ -725,10 +739,9 @@ const handler = defineHandler(contract, 'processOrder', (message, rawMessage) =>
725
739
  type WorkerInferConsumedMessage<TContract, TName> = WorkerConsumedMessage<WorkerInferConsumerPayload<TContract, TName>, WorkerInferConsumerHeaders<TContract, TName>>;
726
740
  ```
727
741
 
728
- Defined in: [packages/worker/src/types.ts:115](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L115)
742
+ Defined in: [packages/worker/src/types.ts:166](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L166)
729
743
 
730
- Infer the full consumed message type for a specific consumer.
731
- Includes both payload and headers (if defined).
744
+ Infer the full consumed message type for a regular consumer.
732
745
 
733
746
  #### Type Parameters
734
747
 
@@ -739,23 +752,16 @@ Includes both payload and headers (if defined).
739
752
 
740
753
  ***
741
754
 
742
- ### WorkerInferConsumerHandler()
755
+ ### WorkerInferConsumerHandler
743
756
 
744
757
  ```ts
745
758
  type WorkerInferConsumerHandler<TContract, TName> = (message, rawMessage) => Future<Result<void, HandlerError>>;
746
759
  ```
747
760
 
748
- Defined in: [packages/worker/src/types.ts:154](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L154)
761
+ Defined in: [packages/worker/src/types.ts:197](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L197)
749
762
 
750
- Consumer handler type for a specific consumer.
751
- Returns a `Future<Result<void, HandlerError>>` for explicit error handling.
752
-
753
- Error handling:
754
- - RetryableError: Message will be retried with exponential backoff
755
- - NonRetryableError: Message will be immediately sent to DLQ
756
-
757
- The `WorkerInfer*` naming pattern indicates type inference helpers that extract
758
- types from a contract definition at compile time.
763
+ Handler signature for a regular consumer (event/command). Returns
764
+ `Future<Result<void, HandlerError>>` there is no response message.
759
765
 
760
766
  #### Type Parameters
761
767
 
@@ -766,26 +772,15 @@ types from a contract definition at compile time.
766
772
 
767
773
  #### Parameters
768
774
 
769
- | Parameter | Type | Description |
770
- | ------ | ------ | ------ |
771
- | `message` | [`WorkerInferConsumedMessage`](#workerinferconsumedmessage)&lt;`TContract`, `TName`&gt; | The parsed message containing validated payload and headers |
772
- | `rawMessage` | `ConsumeMessage` | The raw AMQP message with all metadata (fields, properties, content) |
775
+ | Parameter | Type |
776
+ | ------ | ------ |
777
+ | `message` | [`WorkerInferConsumedMessage`](#workerinferconsumedmessage)&lt;`TContract`, `TName`&gt; |
778
+ | `rawMessage` | `ConsumeMessage` |
773
779
 
774
780
  #### Returns
775
781
 
776
782
  `Future`&lt;`Result`&lt;`void`, [`HandlerError`](#handlererror)&gt;&gt;
777
783
 
778
- #### Example
779
-
780
- ```typescript
781
- const handler: WorkerInferConsumerHandler<typeof contract, 'processOrder'> =
782
- ({ payload }, rawMessage) => {
783
- console.log(payload.orderId); // Typed payload
784
- console.log(rawMessage.fields.deliveryTag); // Raw AMQP message
785
- return Future.value(Result.Ok(undefined));
786
- };
787
- ```
788
-
789
784
  ***
790
785
 
791
786
  ### WorkerInferConsumerHandlerEntry
@@ -793,21 +788,12 @@ const handler: WorkerInferConsumerHandler<typeof contract, 'processOrder'> =
793
788
  ```ts
794
789
  type WorkerInferConsumerHandlerEntry<TContract, TName> =
795
790
  | WorkerInferConsumerHandler<TContract, TName>
796
- | readonly [WorkerInferConsumerHandler<TContract, TName>, {
797
- prefetch?: number;
798
- }];
791
+ | readonly [WorkerInferConsumerHandler<TContract, TName>, ConsumerOptions];
799
792
  ```
800
793
 
801
- Defined in: [packages/worker/src/types.ts:172](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L172)
794
+ Defined in: [packages/worker/src/types.ts:223](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L223)
802
795
 
803
- Handler entry for a consumer - either a function or a tuple of [handler, options].
804
-
805
- Two patterns are supported:
806
- 1. Simple handler: `({ payload }, rawMessage) => Future.value(Result.Ok(undefined))`
807
- 2. Handler with prefetch: `[({ payload }, rawMessage) => ..., { prefetch: 10 }]`
808
-
809
- Note: Retry configuration is now defined at the queue level in the contract,
810
- not at the handler level. See `QueueDefinition.retry` for configuration options.
796
+ Handler entry for a regular consumer function or `[handler, options]`.
811
797
 
812
798
  #### Type Parameters
813
799
 
@@ -818,16 +804,13 @@ not at the handler level. See `QueueDefinition.retry` for configuration options.
818
804
 
819
805
  ***
820
806
 
821
- ### WorkerInferConsumerHandlers
807
+ ### ~~WorkerInferConsumerHandlers~~
822
808
 
823
809
  ```ts
824
- type WorkerInferConsumerHandlers<TContract> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> };
810
+ type WorkerInferConsumerHandlers<TContract> = WorkerInferHandlers<TContract>;
825
811
  ```
826
812
 
827
- Defined in: [packages/worker/src/types.ts:193](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L193)
828
-
829
- Consumer handlers for a contract.
830
- All handlers return `Future<Result<void, HandlerError>>` for explicit error control.
813
+ Defined in: [packages/worker/src/types.ts:269](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L269)
831
814
 
832
815
  #### Type Parameters
833
816
 
@@ -835,29 +818,22 @@ All handlers return `Future<Result<void, HandlerError>>` for explicit error cont
835
818
  | ------ |
836
819
  | `TContract` *extends* `ContractDefinition` |
837
820
 
838
- #### Example
821
+ #### Deprecated
839
822
 
840
- ```typescript
841
- const handlers: WorkerInferConsumerHandlers<typeof contract> = {
842
- processOrder: ({ payload }) =>
843
- Future.fromPromise(processPayment(payload))
844
- .mapOk(() => undefined)
845
- .mapError((error) => new RetryableError('Payment failed', error)),
846
- };
847
- ```
823
+ Use `WorkerInferHandlers` — handlers now span consumers ∪ rpcs.
848
824
 
849
825
  ***
850
826
 
851
827
  ### WorkerInferConsumerHeaders
852
828
 
853
829
  ```ts
854
- type WorkerInferConsumerHeaders<TContract, TName> = ConsumerInferHeadersInput<InferConsumer<TContract, TName>>;
830
+ type WorkerInferConsumerHeaders<TContract, TName> = ConsumerInferHeadersOutput<InferConsumer<TContract, TName>>;
855
831
  ```
856
832
 
857
- Defined in: [packages/worker/src/types.ts:79](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/types.ts#L79)
833
+ Defined in: [packages/worker/src/types.ts:85](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L85)
858
834
 
859
- Infer the headers type for a specific consumer
860
- Returns undefined if no headers schema is defined
835
+ Infer the headers type for a regular consumer.
836
+ Returns undefined if no headers schema is defined.
861
837
 
862
838
  #### Type Parameters
863
839
 
@@ -879,7 +855,7 @@ function defineHandler<TContract, TName>(
879
855
  handler): WorkerInferConsumerHandlerEntry<TContract, TName>;
880
856
  ```
881
857
 
882
- Defined in: [packages/worker/src/handlers.ts:103](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/handlers.ts#L103)
858
+ Defined in: [packages/worker/src/handlers.ts:104](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L104)
883
859
 
884
860
  Define a type-safe handler for a specific consumer in a contract.
885
861
 
@@ -952,7 +928,7 @@ function defineHandler<TContract, TName>(
952
928
  options): WorkerInferConsumerHandlerEntry<TContract, TName>;
953
929
  ```
954
930
 
955
- Defined in: [packages/worker/src/handlers.ts:111](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/handlers.ts#L111)
931
+ Defined in: [packages/worker/src/handlers.ts:112](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L112)
956
932
 
957
933
  Define a type-safe handler for a specific consumer in a contract.
958
934
 
@@ -977,8 +953,7 @@ Supports two patterns:
977
953
  | `contract` | `TContract` | The contract definition containing the consumer |
978
954
  | `consumerName` | `TName` | The name of the consumer from the contract |
979
955
  | `handler` | [`WorkerInferConsumerHandler`](#workerinferconsumerhandler)&lt;`TContract`, `TName`&gt; | The handler function that returns `Future<Result<void, HandlerError>>` |
980
- | `options` | \{ `prefetch?`: `number`; \} | Optional consumer options (prefetch) |
981
- | `options.prefetch?` | `number` | - |
956
+ | `options` | `ConsumerOptions` | Optional consumer options (prefetch) |
982
957
 
983
958
  ##### Returns
984
959
 
@@ -1025,7 +1000,7 @@ const validateOrderHandler = defineHandler(
1025
1000
  function defineHandlers<TContract>(contract, handlers): WorkerInferConsumerHandlers<TContract>;
1026
1001
  ```
1027
1002
 
1028
- Defined in: [packages/worker/src/handlers.ts:166](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/handlers.ts#L166)
1003
+ Defined in: [packages/worker/src/handlers.ts:167](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L167)
1029
1004
 
1030
1005
  Define multiple type-safe handlers for consumers in a contract.
1031
1006
 
@@ -1078,7 +1053,7 @@ const handlers = defineHandlers(orderContract, {
1078
1053
  function isHandlerError(error): error is HandlerError;
1079
1054
  ```
1080
1055
 
1081
- Defined in: [packages/worker/src/errors.ts:131](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L131)
1056
+ Defined in: [packages/worker/src/errors.ts:131](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L131)
1082
1057
 
1083
1058
  Type guard to check if an error is any HandlerError (RetryableError or NonRetryableError).
1084
1059
 
@@ -1115,7 +1090,7 @@ function handleError(error: unknown) {
1115
1090
  function isNonRetryableError(error): error is NonRetryableError;
1116
1091
  ```
1117
1092
 
1118
- Defined in: [packages/worker/src/errors.ts:109](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L109)
1093
+ Defined in: [packages/worker/src/errors.ts:109](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L109)
1119
1094
 
1120
1095
  Type guard to check if an error is a NonRetryableError.
1121
1096
 
@@ -1155,7 +1130,7 @@ try {
1155
1130
  function isRetryableError(error): error is RetryableError;
1156
1131
  ```
1157
1132
 
1158
- Defined in: [packages/worker/src/errors.ts:84](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L84)
1133
+ Defined in: [packages/worker/src/errors.ts:84](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L84)
1159
1134
 
1160
1135
  Type guard to check if an error is a RetryableError.
1161
1136
 
@@ -1197,7 +1172,7 @@ try {
1197
1172
  function nonRetryable(message, cause?): NonRetryableError;
1198
1173
  ```
1199
1174
 
1200
- Defined in: [packages/worker/src/errors.ts:193](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L193)
1175
+ Defined in: [packages/worker/src/errors.ts:193](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L193)
1201
1176
 
1202
1177
  Create a NonRetryableError with less verbosity.
1203
1178
 
@@ -1242,7 +1217,7 @@ const handler = ({ payload }) => {
1242
1217
  function retryable(message, cause?): RetryableError;
1243
1218
  ```
1244
1219
 
1245
- Defined in: [packages/worker/src/errors.ts:163](https://github.com/btravers/amqp-contract/blob/04791f62e768b84b07aa5288adb8ab72296d6663/packages/worker/src/errors.ts#L163)
1220
+ Defined in: [packages/worker/src/errors.ts:163](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/errors.ts#L163)
1246
1221
 
1247
1222
  Create a RetryableError with less verbosity.
1248
1223
 
package/package.json CHANGED
@@ -1,34 +1,41 @@
1
1
  {
2
2
  "name": "@amqp-contract/worker",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "Worker utilities for consuming messages using amqp-contract",
5
5
  "keywords": [
6
6
  "amqp",
7
+ "consumer",
7
8
  "contract",
8
- "rabbitmq",
9
- "typescript",
10
- "worker",
11
- "nodejs",
9
+ "message-broker",
10
+ "message-queue",
12
11
  "messaging",
13
- "type-safe",
12
+ "nodejs",
13
+ "rabbitmq",
14
14
  "schema",
15
+ "type-safe",
16
+ "typescript",
15
17
  "validation",
16
- "message-broker",
17
- "message-queue",
18
- "consumer"
18
+ "worker"
19
19
  ],
20
20
  "homepage": "https://github.com/btravers/amqp-contract#readme",
21
21
  "bugs": {
22
22
  "url": "https://github.com/btravers/amqp-contract/issues"
23
23
  },
24
+ "license": "MIT",
25
+ "author": "Benoit TRAVERS <benoit.travers.fr@gmail.com>",
24
26
  "repository": {
25
27
  "type": "git",
26
28
  "url": "https://github.com/btravers/amqp-contract.git",
27
29
  "directory": "packages/worker"
28
30
  },
29
- "license": "MIT",
30
- "author": "Benoit TRAVERS <benoit.travers.fr@gmail.com>",
31
+ "files": [
32
+ "dist",
33
+ "docs"
34
+ ],
31
35
  "type": "module",
36
+ "main": "./dist/index.cjs",
37
+ "module": "./dist/index.mjs",
38
+ "types": "./dist/index.d.mts",
32
39
  "exports": {
33
40
  ".": {
34
41
  "import": {
@@ -42,32 +49,25 @@
42
49
  },
43
50
  "./package.json": "./package.json"
44
51
  },
45
- "main": "./dist/index.cjs",
46
- "module": "./dist/index.mjs",
47
- "types": "./dist/index.d.mts",
48
- "files": [
49
- "dist",
50
- "docs"
51
- ],
52
52
  "dependencies": {
53
53
  "@standard-schema/spec": "1.1.0",
54
54
  "@swan-io/boxed": "3.2.1",
55
- "@amqp-contract/core": "0.20.0",
56
- "@amqp-contract/contract": "0.20.0"
55
+ "@amqp-contract/contract": "0.22.0",
56
+ "@amqp-contract/core": "0.22.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/amqplib": "0.10.8",
60
- "@types/node": "25.3.0",
61
- "@vitest/coverage-v8": "4.0.18",
60
+ "@types/node": "24.12.2",
61
+ "@vitest/coverage-v8": "4.1.5",
62
62
  "amqp-connection-manager": "5.0.0",
63
- "amqplib": "0.10.9",
64
- "tsdown": "0.20.3",
65
- "typedoc": "0.28.17",
66
- "typedoc-plugin-markdown": "4.10.0",
67
- "typescript": "5.9.3",
68
- "vitest": "4.0.18",
63
+ "amqplib": "1.0.3",
64
+ "tsdown": "0.21.10",
65
+ "typedoc": "0.28.19",
66
+ "typedoc-plugin-markdown": "4.11.0",
67
+ "typescript": "6.0.3",
68
+ "vitest": "4.1.5",
69
69
  "zod": "4.3.6",
70
- "@amqp-contract/testing": "0.20.0",
70
+ "@amqp-contract/testing": "0.22.0",
71
71
  "@amqp-contract/tsconfig": "0.1.0",
72
72
  "@amqp-contract/typedoc": "0.1.0"
73
73
  },