@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/dist/index.cjs +371 -274
- package/dist/index.d.cts +99 -134
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +99 -134
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +371 -274
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +50 -86
- package/package.json +5 -5
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
671
|
-
| <a id="
|
|
672
|
-
| <a id="
|
|
673
|
-
| <a id="
|
|
674
|
-
| <a id="
|
|
675
|
-
| <a id="
|
|
676
|
-
| <a id="
|
|
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`<`TContract`> | 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/
|
|
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:
|
|
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:
|
|
732
|
-
| <a id="payload"></a> `payload` | `TPayload` | The validated message payload | [packages/worker/src/types.ts:
|
|
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:
|
|
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
|
|
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:
|
|
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
|
-
|
|
765
|
-
|
|
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 |
|
|
784
|
-
| ------ | ------ |
|
|
785
|
-
| `message` | [`WorkerInferConsumedMessage`](#workerinferconsumedmessage)<`TContract`, `TName`> |
|
|
786
|
-
| `rawMessage` | `ConsumeMessage` |
|
|
775
|
+
| Parameter | Type |
|
|
776
|
+
| ------ | ------ |
|
|
777
|
+
| `message` | [`WorkerInferConsumedMessage`](#workerinferconsumedmessage)<`TContract`, `TName`> |
|
|
778
|
+
| `rawMessage` | `ConsumeMessage` |
|
|
787
779
|
|
|
788
780
|
#### Returns
|
|
789
781
|
|
|
790
782
|
`Future`<`Result`<`void`, [`HandlerError`](#handlererror)>>
|
|
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:
|
|
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
|
|
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> =
|
|
810
|
+
type WorkerInferConsumerHandlers<TContract> = WorkerInferHandlers<TContract>;
|
|
837
811
|
```
|
|
838
812
|
|
|
839
|
-
Defined in: [packages/worker/src/types.ts:
|
|
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
|
-
####
|
|
821
|
+
#### Deprecated
|
|
851
822
|
|
|
852
|
-
|
|
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:
|
|
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
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|
|
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.
|
|
56
|
-
"@amqp-contract/core": "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.
|
|
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.
|
|
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
|
},
|