@amqp-contract/worker 0.21.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
@@ -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/c4431c816689353f677718608623c58fd1757388/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/c4431c816689353f677718608623c58fd1757388/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,7 +213,7 @@ 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/c4431c816689353f677718608623c58fd1757388/packages/worker/src/errors.ts#L37) |
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
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
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
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 |
@@ -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/c4431c816689353f677718608623c58fd1757388/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/c4431c816689353f677718608623c58fd1757388/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,7 +366,7 @@ 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/c4431c816689353f677718608623c58fd1757388/packages/worker/src/errors.ts#L13) |
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
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
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
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 |
@@ -476,7 +476,7 @@ Error.prepareStackTrace
476
476
 
477
477
  ### TypedAmqpWorker
478
478
 
479
- Defined in: [packages/worker/src/worker.ts:153](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L153)
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
 
@@ -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:280](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L280)
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/c4431c816689353f677718608623c58fd1757388/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
 
@@ -609,7 +609,7 @@ const worker = await TypedAmqpWorker.create({
609
609
  type ConsumerOptions = AmqpClientConsumerOptions;
610
610
  ```
611
611
 
612
- Defined in: [packages/worker/src/worker.ts:37](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L37)
612
+ Defined in: [packages/worker/src/worker.ts:49](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L49)
613
613
 
614
614
  ***
615
615
 
@@ -619,7 +619,7 @@ Defined in: [packages/worker/src/worker.ts:37](https://github.com/btravers/amqp-
619
619
  type CreateWorkerOptions<TContract> = object;
620
620
  ```
621
621
 
622
- Defined in: [packages/worker/src/worker.ts:84](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L84)
622
+ Defined in: [packages/worker/src/worker.ts:96](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/worker.ts#L96)
623
623
 
624
624
  Options for creating a type-safe AMQP worker.
625
625
 
@@ -667,13 +667,14 @@ not at the handler level. See `QueueDefinition.retry` for configuration options.
667
667
 
668
668
  | Property | Type | Description | Defined in |
669
669
  | ------ | ------ | ------ | ------ |
670
- | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/worker/src/worker.ts:96](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L96) |
671
- | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [packages/worker/src/worker.ts:86](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L86) |
672
- | <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:109](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L109) |
673
- | <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:92](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L92) |
674
- | <a id="logger"></a> `logger?` | `Logger` | Optional logger for logging message consumption and errors | [packages/worker/src/worker.ts:98](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L98) |
675
- | <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:104](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L104) |
676
- | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/worker/src/worker.ts:94](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/worker.ts#L94) |
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) |
677
678
 
678
679
  ***
679
680
 
@@ -685,7 +686,7 @@ type HandlerError =
685
686
  | NonRetryableError;
686
687
  ```
687
688
 
688
- Defined in: [packages/worker/src/errors.ts:55](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
689
690
 
690
691
  Union type representing all handler errors.
691
692
  Use this type when defining handlers that explicitly signal error outcomes.
@@ -698,7 +699,7 @@ Use this type when defining handlers that explicitly signal error outcomes.
698
699
  type WorkerConsumedMessage<TPayload, THeaders> = object;
699
700
  ```
700
701
 
701
- Defined in: [packages/worker/src/types.ts:105](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L105)
702
+ Defined in: [packages/worker/src/types.ts:156](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L156)
702
703
 
703
704
  A consumed message containing parsed payload and headers.
704
705
 
@@ -708,7 +709,6 @@ It contains the validated payload and (if defined in the message schema) the val
708
709
  #### Example
709
710
 
710
711
  ```typescript
711
- // Handler receives the consumed message with typed payload and headers
712
712
  const handler = defineHandler(contract, 'processOrder', (message, rawMessage) => {
713
713
  console.log(message.payload.orderId); // Typed payload
714
714
  console.log(message.headers?.priority); // Typed headers (if defined)
@@ -728,8 +728,8 @@ const handler = defineHandler(contract, 'processOrder', (message, rawMessage) =>
728
728
 
729
729
  | Property | Type | Description | Defined in |
730
730
  | ------ | ------ | ------ | ------ |
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:109](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L109) |
732
- | <a id="payload"></a> `payload` | `TPayload` | The validated message payload | [packages/worker/src/types.ts:107](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L107) |
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) |
733
733
 
734
734
  ***
735
735
 
@@ -739,10 +739,9 @@ const handler = defineHandler(contract, 'processOrder', (message, rawMessage) =>
739
739
  type WorkerInferConsumedMessage<TContract, TName> = WorkerConsumedMessage<WorkerInferConsumerPayload<TContract, TName>, WorkerInferConsumerHeaders<TContract, TName>>;
740
740
  ```
741
741
 
742
- Defined in: [packages/worker/src/types.ts:116](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L116)
742
+ Defined in: [packages/worker/src/types.ts:166](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L166)
743
743
 
744
- Infer the full consumed message type for a specific consumer.
745
- Includes both payload and headers (if defined).
744
+ Infer the full consumed message type for a regular consumer.
746
745
 
747
746
  #### Type Parameters
748
747
 
@@ -759,17 +758,10 @@ Includes both payload and headers (if defined).
759
758
  type WorkerInferConsumerHandler<TContract, TName> = (message, rawMessage) => Future<Result<void, HandlerError>>;
760
759
  ```
761
760
 
762
- Defined in: [packages/worker/src/types.ts:155](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L155)
761
+ Defined in: [packages/worker/src/types.ts:197](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L197)
763
762
 
764
- Consumer handler type for a specific consumer.
765
- Returns a `Future<Result<void, HandlerError>>` for explicit error handling.
766
-
767
- Error handling:
768
- - RetryableError: Message will be retried with exponential backoff
769
- - NonRetryableError: Message will be immediately sent to DLQ
770
-
771
- The `WorkerInfer*` naming pattern indicates type inference helpers that extract
772
- 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.
773
765
 
774
766
  #### Type Parameters
775
767
 
@@ -780,26 +772,15 @@ types from a contract definition at compile time.
780
772
 
781
773
  #### Parameters
782
774
 
783
- | Parameter | Type | Description |
784
- | ------ | ------ | ------ |
785
- | `message` | [`WorkerInferConsumedMessage`](#workerinferconsumedmessage)&lt;`TContract`, `TName`&gt; | The parsed message containing validated payload and headers |
786
- | `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` |
787
779
 
788
780
  #### Returns
789
781
 
790
782
  `Future`&lt;`Result`&lt;`void`, [`HandlerError`](#handlererror)&gt;&gt;
791
783
 
792
- #### Example
793
-
794
- ```typescript
795
- const handler: WorkerInferConsumerHandler<typeof contract, 'processOrder'> =
796
- ({ payload }, rawMessage) => {
797
- console.log(payload.orderId); // Typed payload
798
- console.log(rawMessage.fields.deliveryTag); // Raw AMQP message
799
- return Future.value(Result.Ok(undefined));
800
- };
801
- ```
802
-
803
784
  ***
804
785
 
805
786
  ### WorkerInferConsumerHandlerEntry
@@ -810,16 +791,9 @@ type WorkerInferConsumerHandlerEntry<TContract, TName> =
810
791
  | readonly [WorkerInferConsumerHandler<TContract, TName>, ConsumerOptions];
811
792
  ```
812
793
 
813
- Defined in: [packages/worker/src/types.ts:173](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L173)
794
+ Defined in: [packages/worker/src/types.ts:223](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L223)
814
795
 
815
- Handler entry for a consumer - either a function or a tuple of [handler, options].
816
-
817
- Two patterns are supported:
818
- 1. Simple handler: `({ payload }, rawMessage) => Future.value(Result.Ok(undefined))`
819
- 2. Handler with prefetch: `[({ payload }, rawMessage) => ..., { prefetch: 10 }]`
820
-
821
- Note: Retry configuration is now defined at the queue level in the contract,
822
- not at the handler level. See `QueueDefinition.retry` for configuration options.
796
+ Handler entry for a regular consumer function or `[handler, options]`.
823
797
 
824
798
  #### Type Parameters
825
799
 
@@ -830,16 +804,13 @@ not at the handler level. See `QueueDefinition.retry` for configuration options.
830
804
 
831
805
  ***
832
806
 
833
- ### WorkerInferConsumerHandlers
807
+ ### ~~WorkerInferConsumerHandlers~~
834
808
 
835
809
  ```ts
836
- type WorkerInferConsumerHandlers<TContract> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> };
810
+ type WorkerInferConsumerHandlers<TContract> = WorkerInferHandlers<TContract>;
837
811
  ```
838
812
 
839
- Defined in: [packages/worker/src/types.ts:194](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L194)
840
-
841
- Consumer handlers for a contract.
842
- 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)
843
814
 
844
815
  #### Type Parameters
845
816
 
@@ -847,16 +818,9 @@ All handlers return `Future<Result<void, HandlerError>>` for explicit error cont
847
818
  | ------ |
848
819
  | `TContract` *extends* `ContractDefinition` |
849
820
 
850
- #### Example
821
+ #### Deprecated
851
822
 
852
- ```typescript
853
- const handlers: WorkerInferConsumerHandlers<typeof contract> = {
854
- processOrder: ({ payload }) =>
855
- Future.fromPromise(processPayment(payload))
856
- .mapOk(() => undefined)
857
- .mapError((error) => new RetryableError('Payment failed', error)),
858
- };
859
- ```
823
+ Use `WorkerInferHandlers` — handlers now span consumers ∪ rpcs.
860
824
 
861
825
  ***
862
826
 
@@ -866,10 +830,10 @@ const handlers: WorkerInferConsumerHandlers<typeof contract> = {
866
830
  type WorkerInferConsumerHeaders<TContract, TName> = ConsumerInferHeadersOutput<InferConsumer<TContract, TName>>;
867
831
  ```
868
832
 
869
- Defined in: [packages/worker/src/types.ts:80](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/types.ts#L80)
833
+ Defined in: [packages/worker/src/types.ts:85](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/types.ts#L85)
870
834
 
871
- Infer the headers type for a specific consumer
872
- 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.
873
837
 
874
838
  #### Type Parameters
875
839
 
@@ -891,7 +855,7 @@ function defineHandler<TContract, TName>(
891
855
  handler): WorkerInferConsumerHandlerEntry<TContract, TName>;
892
856
  ```
893
857
 
894
- Defined in: [packages/worker/src/handlers.ts:104](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/handlers.ts#L104)
858
+ Defined in: [packages/worker/src/handlers.ts:104](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L104)
895
859
 
896
860
  Define a type-safe handler for a specific consumer in a contract.
897
861
 
@@ -964,7 +928,7 @@ function defineHandler<TContract, TName>(
964
928
  options): WorkerInferConsumerHandlerEntry<TContract, TName>;
965
929
  ```
966
930
 
967
- Defined in: [packages/worker/src/handlers.ts:112](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/handlers.ts#L112)
931
+ Defined in: [packages/worker/src/handlers.ts:112](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L112)
968
932
 
969
933
  Define a type-safe handler for a specific consumer in a contract.
970
934
 
@@ -1036,7 +1000,7 @@ const validateOrderHandler = defineHandler(
1036
1000
  function defineHandlers<TContract>(contract, handlers): WorkerInferConsumerHandlers<TContract>;
1037
1001
  ```
1038
1002
 
1039
- Defined in: [packages/worker/src/handlers.ts:167](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/packages/worker/src/handlers.ts#L167)
1003
+ Defined in: [packages/worker/src/handlers.ts:167](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/worker/src/handlers.ts#L167)
1040
1004
 
1041
1005
  Define multiple type-safe handlers for consumers in a contract.
1042
1006
 
@@ -1089,7 +1053,7 @@ const handlers = defineHandlers(orderContract, {
1089
1053
  function isHandlerError(error): error is HandlerError;
1090
1054
  ```
1091
1055
 
1092
- Defined in: [packages/worker/src/errors.ts:131](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
1093
1057
 
1094
1058
  Type guard to check if an error is any HandlerError (RetryableError or NonRetryableError).
1095
1059
 
@@ -1126,7 +1090,7 @@ function handleError(error: unknown) {
1126
1090
  function isNonRetryableError(error): error is NonRetryableError;
1127
1091
  ```
1128
1092
 
1129
- Defined in: [packages/worker/src/errors.ts:109](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
1130
1094
 
1131
1095
  Type guard to check if an error is a NonRetryableError.
1132
1096
 
@@ -1166,7 +1130,7 @@ try {
1166
1130
  function isRetryableError(error): error is RetryableError;
1167
1131
  ```
1168
1132
 
1169
- Defined in: [packages/worker/src/errors.ts:84](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
1170
1134
 
1171
1135
  Type guard to check if an error is a RetryableError.
1172
1136
 
@@ -1208,7 +1172,7 @@ try {
1208
1172
  function nonRetryable(message, cause?): NonRetryableError;
1209
1173
  ```
1210
1174
 
1211
- Defined in: [packages/worker/src/errors.ts:193](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
1212
1176
 
1213
1177
  Create a NonRetryableError with less verbosity.
1214
1178
 
@@ -1253,7 +1217,7 @@ const handler = ({ payload }) => {
1253
1217
  function retryable(message, cause?): RetryableError;
1254
1218
  ```
1255
1219
 
1256
- Defined in: [packages/worker/src/errors.ts:163](https://github.com/btravers/amqp-contract/blob/c4431c816689353f677718608623c58fd1757388/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)
1257
1221
 
1258
1222
  Create a RetryableError with less verbosity.
1259
1223
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amqp-contract/worker",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Worker utilities for consuming messages using amqp-contract",
5
5
  "keywords": [
6
6
  "amqp",
@@ -52,8 +52,8 @@
52
52
  "dependencies": {
53
53
  "@standard-schema/spec": "1.1.0",
54
54
  "@swan-io/boxed": "3.2.1",
55
- "@amqp-contract/contract": "0.21.0",
56
- "@amqp-contract/core": "0.21.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",
@@ -61,13 +61,13 @@
61
61
  "@vitest/coverage-v8": "4.1.5",
62
62
  "amqp-connection-manager": "5.0.0",
63
63
  "amqplib": "1.0.3",
64
- "tsdown": "0.21.9",
64
+ "tsdown": "0.21.10",
65
65
  "typedoc": "0.28.19",
66
66
  "typedoc-plugin-markdown": "4.11.0",
67
67
  "typescript": "6.0.3",
68
68
  "vitest": "4.1.5",
69
69
  "zod": "4.3.6",
70
- "@amqp-contract/testing": "0.21.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
  },