@amqp-contract/worker 0.24.0 → 0.25.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 +166 -99
- package/dist/index.d.cts +88 -54
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +88 -54
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +168 -102
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +564 -158
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -49,6 +49,18 @@ interface AmqpConnectionManagerOptions {
|
|
|
49
49
|
}
|
|
50
50
|
//#endregion
|
|
51
51
|
//#region src/errors.d.ts
|
|
52
|
+
/**
|
|
53
|
+
* Abstract base class for all handler-signalled errors.
|
|
54
|
+
*
|
|
55
|
+
* Concrete subclasses (`RetryableError`, `NonRetryableError`) discriminate on
|
|
56
|
+
* the `name` property so exhaustive narrowing in user code keeps working.
|
|
57
|
+
* `error instanceof HandlerError` is true for any handler error.
|
|
58
|
+
*/
|
|
59
|
+
declare abstract class HandlerError extends Error {
|
|
60
|
+
readonly cause?: unknown | undefined;
|
|
61
|
+
abstract readonly name: "RetryableError" | "NonRetryableError";
|
|
62
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
63
|
+
}
|
|
52
64
|
/**
|
|
53
65
|
* Retryable errors - transient failures that may succeed on retry
|
|
54
66
|
* Examples: network timeouts, rate limiting, temporary service unavailability
|
|
@@ -56,9 +68,8 @@ interface AmqpConnectionManagerOptions {
|
|
|
56
68
|
* Use this error type when the operation might succeed if retried.
|
|
57
69
|
* The worker will apply exponential backoff and retry the message.
|
|
58
70
|
*/
|
|
59
|
-
declare class RetryableError extends
|
|
60
|
-
readonly
|
|
61
|
-
constructor(message: string, cause?: unknown | undefined);
|
|
71
|
+
declare class RetryableError extends HandlerError {
|
|
72
|
+
readonly name: "RetryableError";
|
|
62
73
|
}
|
|
63
74
|
/**
|
|
64
75
|
* Non-retryable errors - permanent failures that should not be retried
|
|
@@ -67,15 +78,9 @@ declare class RetryableError extends Error {
|
|
|
67
78
|
* Use this error type when retrying would not help - the message will be
|
|
68
79
|
* immediately sent to the dead letter queue (DLQ) if configured.
|
|
69
80
|
*/
|
|
70
|
-
declare class NonRetryableError extends
|
|
71
|
-
readonly
|
|
72
|
-
constructor(message: string, cause?: unknown | undefined);
|
|
81
|
+
declare class NonRetryableError extends HandlerError {
|
|
82
|
+
readonly name: "NonRetryableError";
|
|
73
83
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Union type representing all handler errors.
|
|
76
|
-
* Use this type when defining handlers that explicitly signal error outcomes.
|
|
77
|
-
*/
|
|
78
|
-
type HandlerError = RetryableError | NonRetryableError;
|
|
79
84
|
/**
|
|
80
85
|
* Type guard to check if an error is a RetryableError.
|
|
81
86
|
*
|
|
@@ -315,10 +320,6 @@ type WorkerInferRpcHandlerEntry<TContract extends ContractDefinition, TName exte
|
|
|
315
320
|
* ```
|
|
316
321
|
*/
|
|
317
322
|
type WorkerInferHandlers<TContract extends ContractDefinition> = ([InferConsumerNames<TContract>] extends [never] ? {} : { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> }) & ([InferRpcNames<TContract>] extends [never] ? {} : { [K in InferRpcNames<TContract>]: WorkerInferRpcHandlerEntry<TContract, K> });
|
|
318
|
-
/**
|
|
319
|
-
* @deprecated Use `WorkerInferHandlers` — handlers now span consumers ∪ rpcs.
|
|
320
|
-
*/
|
|
321
|
-
type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = WorkerInferHandlers<TContract>;
|
|
322
323
|
//#endregion
|
|
323
324
|
//#region src/worker.d.ts
|
|
324
325
|
type ConsumerOptions = ConsumerOptions$1;
|
|
@@ -556,9 +557,42 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
556
557
|
* inbox.
|
|
557
558
|
*/
|
|
558
559
|
private publishRpcResponse;
|
|
560
|
+
/**
|
|
561
|
+
* Parse and validate the message; on failure, nack(requeue=false) so the
|
|
562
|
+
* queue's DLX (if configured) receives the poison message and bypass the
|
|
563
|
+
* retry pipeline — a malformed payload is deterministic and retrying it
|
|
564
|
+
* would burn the queue's retry budget on a guaranteed failure.
|
|
565
|
+
*/
|
|
566
|
+
private parseAndValidateOrNack;
|
|
567
|
+
/**
|
|
568
|
+
* Invoke the handler and ack the message on success. Returns the handler's
|
|
569
|
+
* response (RPC) or `undefined` (regular consumer). Errors propagate as
|
|
570
|
+
* `HandlerError` for downstream RPC reply publishing or routing via
|
|
571
|
+
* {@link handleError}.
|
|
572
|
+
*/
|
|
573
|
+
private runHandler;
|
|
574
|
+
/**
|
|
575
|
+
* For RPC handlers, validate and publish the reply on the caller's
|
|
576
|
+
* `replyTo` / `correlationId`. For non-RPC consumers, this is a no-op that
|
|
577
|
+
* resolves to `okAsync(undefined)`.
|
|
578
|
+
*/
|
|
579
|
+
private publishReplyIfRpc;
|
|
559
580
|
/**
|
|
560
581
|
* Process a single consumed message: validate, invoke handler, optionally
|
|
561
|
-
* publish the RPC response, record telemetry, and
|
|
582
|
+
* publish the RPC response, record telemetry, and route errors.
|
|
583
|
+
*
|
|
584
|
+
* The caller-supplied `state` is mutated as the message is ack'd/nack'd so
|
|
585
|
+
* the consume callback's catch-all guard can tell whether a defensive nack
|
|
586
|
+
* is still needed (see {@link consumeSingle}).
|
|
587
|
+
*
|
|
588
|
+
* Success-vs-failure telemetry is data-driven: the chain resolves to
|
|
589
|
+
* `ok(undefined)` only on handler success (and reply-publish success for
|
|
590
|
+
* RPC). Handler failures — even when {@link handleError} routes them
|
|
591
|
+
* successfully to retry/DLQ — are classified as failures for metrics by
|
|
592
|
+
* re-failing the chain with a `TechnicalError` whose `cause` is the
|
|
593
|
+
* original `HandlerError`. The terminal `orTee` unwraps the cause before
|
|
594
|
+
* recording the span exception so traces keep the original
|
|
595
|
+
* `RetryableError` / `NonRetryableError` class as the exception type.
|
|
562
596
|
*/
|
|
563
597
|
private processMessage;
|
|
564
598
|
/**
|
|
@@ -569,30 +603,32 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
569
603
|
//#endregion
|
|
570
604
|
//#region src/handlers.d.ts
|
|
571
605
|
/**
|
|
572
|
-
* Define a type-safe handler for a specific consumer in a contract.
|
|
606
|
+
* Define a type-safe handler for a specific consumer or RPC in a contract.
|
|
573
607
|
*
|
|
574
|
-
* **Recommended:** This function creates handlers that return
|
|
575
|
-
*
|
|
608
|
+
* **Recommended:** This function creates handlers that return
|
|
609
|
+
* `ResultAsync<void, HandlerError>` (consumers) or
|
|
610
|
+
* `ResultAsync<TResponse, HandlerError>` (RPCs), providing explicit error
|
|
611
|
+
* handling and better control over retry behavior.
|
|
576
612
|
*
|
|
577
613
|
* Supports two patterns:
|
|
578
614
|
* 1. Simple handler: just the function
|
|
579
|
-
* 2. Handler with options: [handler, { prefetch: 10 }]
|
|
615
|
+
* 2. Handler with options: `[handler, { prefetch: 10 }]`
|
|
580
616
|
*
|
|
581
617
|
* @template TContract - The contract definition type
|
|
582
|
-
* @template TName - The consumer name from the contract
|
|
583
|
-
* @param contract - The contract definition containing the consumer
|
|
584
|
-
* @param
|
|
585
|
-
* @param handler - The handler function
|
|
618
|
+
* @template TName - The consumer or RPC name from the contract
|
|
619
|
+
* @param contract - The contract definition containing the consumer or RPC
|
|
620
|
+
* @param name - The name of the consumer or RPC from the contract
|
|
621
|
+
* @param handler - The handler function — for consumers, returns
|
|
622
|
+
* `ResultAsync<void, HandlerError>`; for RPCs, returns
|
|
623
|
+
* `ResultAsync<TResponse, HandlerError>`.
|
|
586
624
|
* @param options - Optional consumer options (prefetch)
|
|
587
625
|
* @returns A type-safe handler that can be used with TypedAmqpWorker
|
|
588
626
|
*
|
|
589
|
-
* @example
|
|
627
|
+
* @example Consumer handler
|
|
590
628
|
* ```typescript
|
|
591
629
|
* import { defineHandler, RetryableError, NonRetryableError } from '@amqp-contract/worker';
|
|
592
630
|
* import { errAsync, okAsync, ResultAsync } from 'neverthrow';
|
|
593
|
-
* import { orderContract } from './contract';
|
|
594
631
|
*
|
|
595
|
-
* // Simple handler with explicit error handling
|
|
596
632
|
* const processOrderHandler = defineHandler(
|
|
597
633
|
* orderContract,
|
|
598
634
|
* 'processOrder',
|
|
@@ -602,39 +638,41 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
602
638
|
* (error) => new RetryableError('Payment failed', error),
|
|
603
639
|
* ).map(() => undefined),
|
|
604
640
|
* );
|
|
641
|
+
* ```
|
|
605
642
|
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
* // Won't be retried - goes directly to DLQ
|
|
613
|
-
* return errAsync(new NonRetryableError('Invalid order amount'));
|
|
614
|
-
* }
|
|
615
|
-
* return okAsync(undefined);
|
|
616
|
-
* },
|
|
643
|
+
* @example RPC handler
|
|
644
|
+
* ```typescript
|
|
645
|
+
* const calculateHandler = defineHandler(
|
|
646
|
+
* rpcContract,
|
|
647
|
+
* 'calculate',
|
|
648
|
+
* ({ payload }) => okAsync({ sum: payload.a + payload.b }),
|
|
617
649
|
* );
|
|
618
650
|
* ```
|
|
619
651
|
*/
|
|
620
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract,
|
|
621
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract,
|
|
652
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
653
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
654
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferRpcNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferRpcHandler<TContract, TName>): WorkerInferRpcHandlerEntry<TContract, TName>;
|
|
655
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferRpcNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferRpcHandler<TContract, TName>, options: ConsumerOptions): WorkerInferRpcHandlerEntry<TContract, TName>;
|
|
622
656
|
/**
|
|
623
|
-
* Define multiple type-safe handlers for consumers in a contract.
|
|
657
|
+
* Define multiple type-safe handlers for consumers and RPCs in a contract.
|
|
658
|
+
*
|
|
659
|
+
* **Recommended:** This function creates handlers that return
|
|
660
|
+
* `ResultAsync<void, HandlerError>` (consumers) or
|
|
661
|
+
* `ResultAsync<TResponse, HandlerError>` (RPCs), providing explicit error
|
|
662
|
+
* handling and better control over retry behavior.
|
|
624
663
|
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
664
|
+
* The handlers object must contain exactly one entry per `consumers` and
|
|
665
|
+
* `rpcs` key in the contract — see {@link WorkerInferHandlers}.
|
|
627
666
|
*
|
|
628
667
|
* @template TContract - The contract definition type
|
|
629
|
-
* @param contract - The contract definition containing the consumers
|
|
630
|
-
* @param handlers - An object with handler functions for each consumer
|
|
668
|
+
* @param contract - The contract definition containing the consumers and RPCs
|
|
669
|
+
* @param handlers - An object with handler functions for each consumer and RPC
|
|
631
670
|
* @returns A type-safe handlers object that can be used with TypedAmqpWorker
|
|
632
671
|
*
|
|
633
672
|
* @example
|
|
634
673
|
* ```typescript
|
|
635
674
|
* import { defineHandlers, RetryableError } from '@amqp-contract/worker';
|
|
636
|
-
* import { ResultAsync } from 'neverthrow';
|
|
637
|
-
* import { orderContract } from './contract';
|
|
675
|
+
* import { okAsync, ResultAsync } from 'neverthrow';
|
|
638
676
|
*
|
|
639
677
|
* const handlers = defineHandlers(orderContract, {
|
|
640
678
|
* processOrder: ({ payload }) =>
|
|
@@ -642,15 +680,11 @@ declare function defineHandler<TContract extends ContractDefinition, TName exten
|
|
|
642
680
|
* processPayment(payload),
|
|
643
681
|
* (error) => new RetryableError('Payment failed', error),
|
|
644
682
|
* ).map(() => undefined),
|
|
645
|
-
*
|
|
646
|
-
* ResultAsync.fromPromise(
|
|
647
|
-
* sendNotification(payload),
|
|
648
|
-
* (error) => new RetryableError('Notification failed', error),
|
|
649
|
-
* ).map(() => undefined),
|
|
683
|
+
* calculate: ({ payload }) => okAsync({ sum: payload.a + payload.b }),
|
|
650
684
|
* });
|
|
651
685
|
* ```
|
|
652
686
|
*/
|
|
653
|
-
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers:
|
|
687
|
+
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferHandlers<TContract>): WorkerInferHandlers<TContract>;
|
|
654
688
|
//#endregion
|
|
655
|
-
export { type ConsumerOptions, type CreateWorkerOptions,
|
|
689
|
+
export { type ConsumerOptions, type CreateWorkerOptions, HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHeaders, type WorkerInferHandlers, type WorkerInferRpcConsumedMessage, type WorkerInferRpcHandler, type WorkerInferRpcHandlerEntry, type WorkerInferRpcHeaders, type WorkerInferRpcRequest, type WorkerInferRpcResponse, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
656
690
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.10.9/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;KAKYM,aAAAA,YAAyBN,IAAAA,CAAKO,OAAAA,CAAQC,OAAAA;EAC9CE,GAAAA;EACAC,iBAAAA,GAAoBF,qBAAAA;AAAAA;AAAAA,KAcZA,qBAAAA,IAAyBN,iBAAAA,GAAoBD,oBAAAA;EACrDkB,OAAAA;EACAC,OAAAA;EACAC,SAAAA;EACAC,cAAAA;EACAC,gBAAAA;EACAC,WAAAA;IACIC,SAAAA;IACAC,QAAAA;IACAC,QAAAA;IACAC,QAAAA,QAAgBV,MAAAA;EAAAA;IAEhBO,SAAAA;IACAG,QAAAA,QAAgBV,MAAAA;EAAAA;AAAAA;AAAAA,UAGPW,4BAAAA;EAVbL;EAYAO,0BAAAA;EAVIL;;;;EAeJM,sBAAAA;EAVIJ;;;;AAGR;;;EAeIK,WAAAA,KAAgBE,QAAAA,GAAWD,IAAAA,EAAM7B,aAAAA,GAAgBA,aAAAA,+BAA4CyB,OAAAA,CAAQzB,aAAAA,GAAgBA,aAAAA;EAApEA;EAEjDK,iBAAAA,GAAoBF,qBAAAA;AAAAA;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.10.9/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -49,6 +49,18 @@ interface AmqpConnectionManagerOptions {
|
|
|
49
49
|
}
|
|
50
50
|
//#endregion
|
|
51
51
|
//#region src/errors.d.ts
|
|
52
|
+
/**
|
|
53
|
+
* Abstract base class for all handler-signalled errors.
|
|
54
|
+
*
|
|
55
|
+
* Concrete subclasses (`RetryableError`, `NonRetryableError`) discriminate on
|
|
56
|
+
* the `name` property so exhaustive narrowing in user code keeps working.
|
|
57
|
+
* `error instanceof HandlerError` is true for any handler error.
|
|
58
|
+
*/
|
|
59
|
+
declare abstract class HandlerError extends Error {
|
|
60
|
+
readonly cause?: unknown | undefined;
|
|
61
|
+
abstract readonly name: "RetryableError" | "NonRetryableError";
|
|
62
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
63
|
+
}
|
|
52
64
|
/**
|
|
53
65
|
* Retryable errors - transient failures that may succeed on retry
|
|
54
66
|
* Examples: network timeouts, rate limiting, temporary service unavailability
|
|
@@ -56,9 +68,8 @@ interface AmqpConnectionManagerOptions {
|
|
|
56
68
|
* Use this error type when the operation might succeed if retried.
|
|
57
69
|
* The worker will apply exponential backoff and retry the message.
|
|
58
70
|
*/
|
|
59
|
-
declare class RetryableError extends
|
|
60
|
-
readonly
|
|
61
|
-
constructor(message: string, cause?: unknown | undefined);
|
|
71
|
+
declare class RetryableError extends HandlerError {
|
|
72
|
+
readonly name: "RetryableError";
|
|
62
73
|
}
|
|
63
74
|
/**
|
|
64
75
|
* Non-retryable errors - permanent failures that should not be retried
|
|
@@ -67,15 +78,9 @@ declare class RetryableError extends Error {
|
|
|
67
78
|
* Use this error type when retrying would not help - the message will be
|
|
68
79
|
* immediately sent to the dead letter queue (DLQ) if configured.
|
|
69
80
|
*/
|
|
70
|
-
declare class NonRetryableError extends
|
|
71
|
-
readonly
|
|
72
|
-
constructor(message: string, cause?: unknown | undefined);
|
|
81
|
+
declare class NonRetryableError extends HandlerError {
|
|
82
|
+
readonly name: "NonRetryableError";
|
|
73
83
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Union type representing all handler errors.
|
|
76
|
-
* Use this type when defining handlers that explicitly signal error outcomes.
|
|
77
|
-
*/
|
|
78
|
-
type HandlerError = RetryableError | NonRetryableError;
|
|
79
84
|
/**
|
|
80
85
|
* Type guard to check if an error is a RetryableError.
|
|
81
86
|
*
|
|
@@ -315,10 +320,6 @@ type WorkerInferRpcHandlerEntry<TContract extends ContractDefinition, TName exte
|
|
|
315
320
|
* ```
|
|
316
321
|
*/
|
|
317
322
|
type WorkerInferHandlers<TContract extends ContractDefinition> = ([InferConsumerNames<TContract>] extends [never] ? {} : { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> }) & ([InferRpcNames<TContract>] extends [never] ? {} : { [K in InferRpcNames<TContract>]: WorkerInferRpcHandlerEntry<TContract, K> });
|
|
318
|
-
/**
|
|
319
|
-
* @deprecated Use `WorkerInferHandlers` — handlers now span consumers ∪ rpcs.
|
|
320
|
-
*/
|
|
321
|
-
type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = WorkerInferHandlers<TContract>;
|
|
322
323
|
//#endregion
|
|
323
324
|
//#region src/worker.d.ts
|
|
324
325
|
type ConsumerOptions = ConsumerOptions$1;
|
|
@@ -556,9 +557,42 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
556
557
|
* inbox.
|
|
557
558
|
*/
|
|
558
559
|
private publishRpcResponse;
|
|
560
|
+
/**
|
|
561
|
+
* Parse and validate the message; on failure, nack(requeue=false) so the
|
|
562
|
+
* queue's DLX (if configured) receives the poison message and bypass the
|
|
563
|
+
* retry pipeline — a malformed payload is deterministic and retrying it
|
|
564
|
+
* would burn the queue's retry budget on a guaranteed failure.
|
|
565
|
+
*/
|
|
566
|
+
private parseAndValidateOrNack;
|
|
567
|
+
/**
|
|
568
|
+
* Invoke the handler and ack the message on success. Returns the handler's
|
|
569
|
+
* response (RPC) or `undefined` (regular consumer). Errors propagate as
|
|
570
|
+
* `HandlerError` for downstream RPC reply publishing or routing via
|
|
571
|
+
* {@link handleError}.
|
|
572
|
+
*/
|
|
573
|
+
private runHandler;
|
|
574
|
+
/**
|
|
575
|
+
* For RPC handlers, validate and publish the reply on the caller's
|
|
576
|
+
* `replyTo` / `correlationId`. For non-RPC consumers, this is a no-op that
|
|
577
|
+
* resolves to `okAsync(undefined)`.
|
|
578
|
+
*/
|
|
579
|
+
private publishReplyIfRpc;
|
|
559
580
|
/**
|
|
560
581
|
* Process a single consumed message: validate, invoke handler, optionally
|
|
561
|
-
* publish the RPC response, record telemetry, and
|
|
582
|
+
* publish the RPC response, record telemetry, and route errors.
|
|
583
|
+
*
|
|
584
|
+
* The caller-supplied `state` is mutated as the message is ack'd/nack'd so
|
|
585
|
+
* the consume callback's catch-all guard can tell whether a defensive nack
|
|
586
|
+
* is still needed (see {@link consumeSingle}).
|
|
587
|
+
*
|
|
588
|
+
* Success-vs-failure telemetry is data-driven: the chain resolves to
|
|
589
|
+
* `ok(undefined)` only on handler success (and reply-publish success for
|
|
590
|
+
* RPC). Handler failures — even when {@link handleError} routes them
|
|
591
|
+
* successfully to retry/DLQ — are classified as failures for metrics by
|
|
592
|
+
* re-failing the chain with a `TechnicalError` whose `cause` is the
|
|
593
|
+
* original `HandlerError`. The terminal `orTee` unwraps the cause before
|
|
594
|
+
* recording the span exception so traces keep the original
|
|
595
|
+
* `RetryableError` / `NonRetryableError` class as the exception type.
|
|
562
596
|
*/
|
|
563
597
|
private processMessage;
|
|
564
598
|
/**
|
|
@@ -569,30 +603,32 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
569
603
|
//#endregion
|
|
570
604
|
//#region src/handlers.d.ts
|
|
571
605
|
/**
|
|
572
|
-
* Define a type-safe handler for a specific consumer in a contract.
|
|
606
|
+
* Define a type-safe handler for a specific consumer or RPC in a contract.
|
|
573
607
|
*
|
|
574
|
-
* **Recommended:** This function creates handlers that return
|
|
575
|
-
*
|
|
608
|
+
* **Recommended:** This function creates handlers that return
|
|
609
|
+
* `ResultAsync<void, HandlerError>` (consumers) or
|
|
610
|
+
* `ResultAsync<TResponse, HandlerError>` (RPCs), providing explicit error
|
|
611
|
+
* handling and better control over retry behavior.
|
|
576
612
|
*
|
|
577
613
|
* Supports two patterns:
|
|
578
614
|
* 1. Simple handler: just the function
|
|
579
|
-
* 2. Handler with options: [handler, { prefetch: 10 }]
|
|
615
|
+
* 2. Handler with options: `[handler, { prefetch: 10 }]`
|
|
580
616
|
*
|
|
581
617
|
* @template TContract - The contract definition type
|
|
582
|
-
* @template TName - The consumer name from the contract
|
|
583
|
-
* @param contract - The contract definition containing the consumer
|
|
584
|
-
* @param
|
|
585
|
-
* @param handler - The handler function
|
|
618
|
+
* @template TName - The consumer or RPC name from the contract
|
|
619
|
+
* @param contract - The contract definition containing the consumer or RPC
|
|
620
|
+
* @param name - The name of the consumer or RPC from the contract
|
|
621
|
+
* @param handler - The handler function — for consumers, returns
|
|
622
|
+
* `ResultAsync<void, HandlerError>`; for RPCs, returns
|
|
623
|
+
* `ResultAsync<TResponse, HandlerError>`.
|
|
586
624
|
* @param options - Optional consumer options (prefetch)
|
|
587
625
|
* @returns A type-safe handler that can be used with TypedAmqpWorker
|
|
588
626
|
*
|
|
589
|
-
* @example
|
|
627
|
+
* @example Consumer handler
|
|
590
628
|
* ```typescript
|
|
591
629
|
* import { defineHandler, RetryableError, NonRetryableError } from '@amqp-contract/worker';
|
|
592
630
|
* import { errAsync, okAsync, ResultAsync } from 'neverthrow';
|
|
593
|
-
* import { orderContract } from './contract';
|
|
594
631
|
*
|
|
595
|
-
* // Simple handler with explicit error handling
|
|
596
632
|
* const processOrderHandler = defineHandler(
|
|
597
633
|
* orderContract,
|
|
598
634
|
* 'processOrder',
|
|
@@ -602,39 +638,41 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
602
638
|
* (error) => new RetryableError('Payment failed', error),
|
|
603
639
|
* ).map(() => undefined),
|
|
604
640
|
* );
|
|
641
|
+
* ```
|
|
605
642
|
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
* // Won't be retried - goes directly to DLQ
|
|
613
|
-
* return errAsync(new NonRetryableError('Invalid order amount'));
|
|
614
|
-
* }
|
|
615
|
-
* return okAsync(undefined);
|
|
616
|
-
* },
|
|
643
|
+
* @example RPC handler
|
|
644
|
+
* ```typescript
|
|
645
|
+
* const calculateHandler = defineHandler(
|
|
646
|
+
* rpcContract,
|
|
647
|
+
* 'calculate',
|
|
648
|
+
* ({ payload }) => okAsync({ sum: payload.a + payload.b }),
|
|
617
649
|
* );
|
|
618
650
|
* ```
|
|
619
651
|
*/
|
|
620
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract,
|
|
621
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract,
|
|
652
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
653
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
654
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferRpcNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferRpcHandler<TContract, TName>): WorkerInferRpcHandlerEntry<TContract, TName>;
|
|
655
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferRpcNames<TContract>>(contract: TContract, name: TName, handler: WorkerInferRpcHandler<TContract, TName>, options: ConsumerOptions): WorkerInferRpcHandlerEntry<TContract, TName>;
|
|
622
656
|
/**
|
|
623
|
-
* Define multiple type-safe handlers for consumers in a contract.
|
|
657
|
+
* Define multiple type-safe handlers for consumers and RPCs in a contract.
|
|
658
|
+
*
|
|
659
|
+
* **Recommended:** This function creates handlers that return
|
|
660
|
+
* `ResultAsync<void, HandlerError>` (consumers) or
|
|
661
|
+
* `ResultAsync<TResponse, HandlerError>` (RPCs), providing explicit error
|
|
662
|
+
* handling and better control over retry behavior.
|
|
624
663
|
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
664
|
+
* The handlers object must contain exactly one entry per `consumers` and
|
|
665
|
+
* `rpcs` key in the contract — see {@link WorkerInferHandlers}.
|
|
627
666
|
*
|
|
628
667
|
* @template TContract - The contract definition type
|
|
629
|
-
* @param contract - The contract definition containing the consumers
|
|
630
|
-
* @param handlers - An object with handler functions for each consumer
|
|
668
|
+
* @param contract - The contract definition containing the consumers and RPCs
|
|
669
|
+
* @param handlers - An object with handler functions for each consumer and RPC
|
|
631
670
|
* @returns A type-safe handlers object that can be used with TypedAmqpWorker
|
|
632
671
|
*
|
|
633
672
|
* @example
|
|
634
673
|
* ```typescript
|
|
635
674
|
* import { defineHandlers, RetryableError } from '@amqp-contract/worker';
|
|
636
|
-
* import { ResultAsync } from 'neverthrow';
|
|
637
|
-
* import { orderContract } from './contract';
|
|
675
|
+
* import { okAsync, ResultAsync } from 'neverthrow';
|
|
638
676
|
*
|
|
639
677
|
* const handlers = defineHandlers(orderContract, {
|
|
640
678
|
* processOrder: ({ payload }) =>
|
|
@@ -642,15 +680,11 @@ declare function defineHandler<TContract extends ContractDefinition, TName exten
|
|
|
642
680
|
* processPayment(payload),
|
|
643
681
|
* (error) => new RetryableError('Payment failed', error),
|
|
644
682
|
* ).map(() => undefined),
|
|
645
|
-
*
|
|
646
|
-
* ResultAsync.fromPromise(
|
|
647
|
-
* sendNotification(payload),
|
|
648
|
-
* (error) => new RetryableError('Notification failed', error),
|
|
649
|
-
* ).map(() => undefined),
|
|
683
|
+
* calculate: ({ payload }) => okAsync({ sum: payload.a + payload.b }),
|
|
650
684
|
* });
|
|
651
685
|
* ```
|
|
652
686
|
*/
|
|
653
|
-
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers:
|
|
687
|
+
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferHandlers<TContract>): WorkerInferHandlers<TContract>;
|
|
654
688
|
//#endregion
|
|
655
|
-
export { type ConsumerOptions, type CreateWorkerOptions,
|
|
689
|
+
export { type ConsumerOptions, type CreateWorkerOptions, HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHeaders, type WorkerInferHandlers, type WorkerInferRpcConsumedMessage, type WorkerInferRpcHandler, type WorkerInferRpcHandlerEntry, type WorkerInferRpcHeaders, type WorkerInferRpcRequest, type WorkerInferRpcResponse, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
656
690
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.10.9/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;KAKYM,aAAAA,YAAyBN,IAAAA,CAAKO,OAAAA,CAAQC,OAAAA;EAC9CE,GAAAA;EACAC,iBAAAA,GAAoBF,qBAAAA;AAAAA;AAAAA,KAcZA,qBAAAA,IAAyBN,iBAAAA,GAAoBD,oBAAAA;EACrDkB,OAAAA;EACAC,OAAAA;EACAC,SAAAA;EACAC,cAAAA;EACAC,gBAAAA;EACAC,WAAAA;IACIC,SAAAA;IACAC,QAAAA;IACAC,QAAAA;IACAC,QAAAA,QAAgBV,MAAAA;EAAAA;IAEhBO,SAAAA;IACAG,QAAAA,QAAgBV,MAAAA;EAAAA;AAAAA;AAAAA,UAGPW,4BAAAA;EAVbL;EAYAO,0BAAAA;EAVIL;;;;EAeJM,sBAAAA;EAVIJ;;;;AAGR;;;EAeIK,WAAAA,KAAgBE,QAAAA,GAAWD,IAAAA,EAAM7B,aAAAA,GAAgBA,aAAAA,+BAA4CyB,OAAAA,CAAQzB,aAAAA,GAAgBA,aAAAA;EAApEA;EAEjDK,iBAAAA,GAAoBF,qBAAAA;AAAAA;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.10.9/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|