@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.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 Error {
60
- readonly cause?: unknown | undefined;
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 Error {
71
- readonly cause?: unknown | undefined;
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 handle errors.
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 `ResultAsync<void, HandlerError>`,
575
- * providing explicit error handling and better control over retry behavior.
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 consumerName - The name of the consumer from the contract
585
- * @param handler - The handler function that returns `ResultAsync<void, HandlerError>`
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
- * // Handler with validation (non-retryable error)
607
- * const validateOrderHandler = defineHandler(
608
- * orderContract,
609
- * 'validateOrder',
610
- * ({ payload }) => {
611
- * if (payload.amount < 1) {
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, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
621
- declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
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
- * **Recommended:** This function creates handlers that return `ResultAsync<void, HandlerError>`,
626
- * providing explicit error handling and better control over retry behavior.
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
- * notifyOrder: ({ payload }) =>
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: WorkerInferConsumerHandlers<TContract>): WorkerInferConsumerHandlers<TContract>;
687
+ declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferHandlers<TContract>): WorkerInferHandlers<TContract>;
654
688
  //#endregion
655
- export { type ConsumerOptions, type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
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
@@ -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":"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"}
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 Error {
60
- readonly cause?: unknown | undefined;
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 Error {
71
- readonly cause?: unknown | undefined;
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 handle errors.
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 `ResultAsync<void, HandlerError>`,
575
- * providing explicit error handling and better control over retry behavior.
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 consumerName - The name of the consumer from the contract
585
- * @param handler - The handler function that returns `ResultAsync<void, HandlerError>`
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
- * // Handler with validation (non-retryable error)
607
- * const validateOrderHandler = defineHandler(
608
- * orderContract,
609
- * 'validateOrder',
610
- * ({ payload }) => {
611
- * if (payload.amount < 1) {
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, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
621
- declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
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
- * **Recommended:** This function creates handlers that return `ResultAsync<void, HandlerError>`,
626
- * providing explicit error handling and better control over retry behavior.
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
- * notifyOrder: ({ payload }) =>
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: WorkerInferConsumerHandlers<TContract>): WorkerInferConsumerHandlers<TContract>;
687
+ declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferHandlers<TContract>): WorkerInferHandlers<TContract>;
654
688
  //#endregion
655
- export { type ConsumerOptions, type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
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
@@ -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":"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"}
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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"}