@amqp-contract/client
@amqp-contract/client
Classes
MessageValidationError
Defined in: packages/core/dist/index.d.mts:454
Error thrown when message validation fails (payload or headers).
Used by both the client (publish-time payload validation) and the worker (consume-time payload and headers validation). Carries a _tag of "@amqp-contract/MessageValidationError" (namespaced to avoid collisions); the Error.name is kept bare ("MessageValidationError").
Param
source
The name of the publisher or consumer that triggered the validation
Param
issues
The validation issues from the Standard Schema validation
Extends
MessageValidationError_base<{issues:unknown;source:string; }>
Constructors
Constructor
new MessageValidationError(source, issues): MessageValidationError;Defined in: packages/core/dist/index.d.mts:458
Parameters
| Parameter | Type |
|---|---|
source | string |
issues | unknown |
Returns
Overrides
MessageValidationError_base<{
source: string;
issues: unknown;
}>.constructorProperties
RpcCancelledError
Defined in: packages/client/src/errors.ts:34
Returned from any in-flight RPC call when the client is closed before the reply is received. The correlation map is cleared on close and every pending caller's promise resolves with Err(RpcCancelledError). Carries a namespaced _tag of "@amqp-contract/RpcCancelledError"; the Error.name is kept bare ("RpcCancelledError").
Extends
TaggedErrorInstance<"@amqp-contract/RpcCancelledError", {rpcName:string; }>
Constructors
Constructor
new RpcCancelledError(rpcName): RpcCancelledError;Defined in: packages/client/src/errors.ts:39
Parameters
| Parameter | Type |
|---|---|
rpcName | string |
Returns
Overrides
TaggedError("@amqp-contract/RpcCancelledError", {
name: "RpcCancelledError",
})<{
rpcName: string;
}>.constructorProperties
| Property | Modifier | Type | Inherited from | Defined in |
|---|---|---|---|---|
_tag | readonly | "@amqp-contract/RpcCancelledError" | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", })._tag | node_modules/.pnpm/unthrown@5.1.0/node_modules/unthrown/dist/index.d.mts:1941 |
cause? | public | unknown | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", }).cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
message | public | string | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", }).message | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075 |
name | public | string | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", }).name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
rpcName | readonly | string | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", }).rpcName | packages/client/src/errors.ts:37 |
stack? | public | string | TaggedError("@amqp-contract/RpcCancelledError", { name: "RpcCancelledError", }).stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
RpcError
Defined in: packages/core/dist/index.d.mts:498
A typed, contract-declared RPC error — the business-failure channel of an RPC, as opposed to transport failures (which surface as a Defect with a TechnicalError cause).
Declared per-RPC via defineRpc(queue, { request, response, errors }), where each error code maps to a message definition validating the error's data payload. A worker handler surfaces one by returning Err(rpcError(code, data)); the worker validates data against the declared schema, publishes an error reply, and acks the request (business errors are not retried). The caller's client.call(...) resolves to Err(RpcError<code, data>) with data re-validated on arrival.
Carries a _tag of "@amqp-contract/RpcError" for exhaustive dispatch via the error matcher (result.match({ ok, defect, errCases: (matcher) => matcher.with(P.tag("@amqp-contract/RpcError"), …) })); the Error.name is kept bare ("RpcError"). Discriminate between codes on the code property.
Extends
RpcError_base<{code:string;data:unknown; }>
Type Parameters
| Type Parameter | Default type |
|---|---|
TCode extends string | string |
TData | unknown |
Constructors
Constructor
new RpcError<TCode, TData>(
code,
data,
message?): RpcError<TCode, TData>;Defined in: packages/core/dist/index.d.mts:504
Parameters
| Parameter | Type |
|---|---|
code | TCode |
data | TData |
message? | string |
Returns
RpcError<TCode, TData>
Overrides
RpcError_base<{
code: string;
data: unknown;
}>.constructorProperties
RpcTimeoutError
Defined in: packages/client/src/errors.ts:15
Returned from TypedAmqpClient.call() when the configured timeoutMs elapses before the RPC server publishes a reply with the matching correlationId.
The pending call is removed from the in-memory correlation map; if a reply arrives after the timeout it is dropped (and a debug log is emitted by the client if a logger is configured). Carries a namespaced _tag of "@amqp-contract/RpcTimeoutError"; the Error.name is kept bare ("RpcTimeoutError").
Extends
TaggedErrorInstance<"@amqp-contract/RpcTimeoutError", {rpcName:string;timeoutMs:number; }>
Constructors
Constructor
new RpcTimeoutError(rpcName, timeoutMs): RpcTimeoutError;Defined in: packages/client/src/errors.ts:21
Parameters
| Parameter | Type |
|---|---|
rpcName | string |
timeoutMs | number |
Returns
Overrides
TaggedError("@amqp-contract/RpcTimeoutError", {
name: "RpcTimeoutError",
})<{
rpcName: string;
timeoutMs: number;
}>.constructorProperties
| Property | Modifier | Type | Inherited from | Defined in |
|---|---|---|---|---|
_tag | readonly | "@amqp-contract/RpcTimeoutError" | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", })._tag | node_modules/.pnpm/unthrown@5.1.0/node_modules/unthrown/dist/index.d.mts:1941 |
cause? | public | unknown | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
message | public | string | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).message | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075 |
name | public | string | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
rpcName | readonly | string | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).rpcName | packages/client/src/errors.ts:18 |
stack? | public | string | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
timeoutMs | readonly | number | TaggedError("@amqp-contract/RpcTimeoutError", { name: "RpcTimeoutError", }).timeoutMs | packages/client/src/errors.ts:19 |
TechnicalError
Defined in: packages/core/dist/index.d.mts:437
Error for technical/runtime failures that cannot be prevented by TypeScript.
This includes AMQP connection failures, channel issues, compression/parse faults, and other unexpected runtime errors. Shared across core, worker, and client packages.
These failures are unexpected, so @amqp-contract surfaces them through unthrown's defect channel, not the modeled E channel: a TechnicalError instance is carried as the cause of a Defect (so its message/cause survive for logging), and is handled in the defect arm of result.match({ ok, errCases, defect }) — or via recoverDefect / tapDefect — never matched in errCases. It is deliberately absent from every operation's E (only anticipated domain failures live there).
Built on unthrown's TaggedError, so it carries a _tag of "@amqp-contract/TechnicalError" (namespaced to avoid colliding with other libraries' tags); the human-facing Error.name is kept bare ("TechnicalError"). Remains a real Error.
Extends
TechnicalError_base<{cause?:unknown; }>
Constructors
Constructor
new TechnicalError(message, cause?): TechnicalError;Defined in: packages/core/dist/index.d.mts:440
Parameters
| Parameter | Type |
|---|---|
message | string |
cause? | unknown |
Returns
Overrides
TechnicalError_base<{
cause?: unknown;
}>.constructorProperties
| Property | Modifier | Type | Inherited from | Defined in |
|---|---|---|---|---|
_tag | readonly | "@amqp-contract/TechnicalError" | TechnicalError_base._tag | node_modules/.pnpm/unthrown@5.1.0/node_modules/unthrown/dist/index.d.mts:1941 |
cause? | public | unknown | MessageValidationError.cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
message | public | string | TechnicalError_base.message | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075 |
name | public | string | TechnicalError_base.name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | TechnicalError_base.stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
TypedAmqpClient
Defined in: packages/client/src/client.ts:172
Type-safe AMQP client for publishing messages
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
Methods
call()
call<TName>(
rpcName,
request,
options): AsyncResult<ClientInferRpcResponseOutput<TContract, TName>,
| MessageValidationError
| RpcTimeoutError
| RpcCancelledError
| ClientInferRpcErrors<TContract, TName>>;Defined in: packages/client/src/client.ts:564
Invoke an RPC defined via defineRpc and await the typed response.
The request payload is validated against the RPC's request schema, then published to the AMQP default exchange with the server's queue name as routing key, replyTo set to amq.rabbitmq.reply-to, and a fresh UUID correlationId. The returned AsyncResult resolves once a matching reply arrives and validates against the response schema, or once timeoutMs elapses (whichever comes first).
Type Parameters
| Type Parameter |
|---|
TName extends string | number | symbol |
Parameters
| Parameter | Type |
|---|---|
rpcName | TName |
request | ClientInferRpcRequestInput<TContract, TName> |
options | CallOptions |
Returns
AsyncResult<ClientInferRpcResponseOutput<TContract, TName>, | MessageValidationError | RpcTimeoutError | RpcCancelledError | ClientInferRpcErrors<TContract, TName>>
Example
const result = await client.call('calculate', { a: 1, b: 2 }, { timeoutMs: 5_000 });
result.match({
ok: (value) => console.log(value.sum), // 3
errCases: (matcher) =>
matcher.with(
P.tag("@amqp-contract/MessageValidationError"),
P.tag("@amqp-contract/RpcTimeoutError"),
P.tag("@amqp-contract/RpcCancelledError"),
P.tag("@amqp-contract/RpcError"),
(error) => console.error(error),
),
// Transport/infrastructure failures surface here, never in `errCases`.
defect: (cause) => console.error(cause),
});close()
close(): AsyncResult<void, never>;Defined in: packages/client/src/client.ts:754
Close the channel and connection. Cancels the reply consumer (if any) and rejects every in-flight RPC call with RpcCancelledError.
Returns
AsyncResult<void, never>
publish()
publish<TName>(
publisherName,
message,
options?): AsyncResult<void, MessageValidationError>;Defined in: packages/client/src/client.ts:421
Publish a message using a defined publisher.
Type Parameters
| Type Parameter |
|---|
TName extends string | number | symbol |
Parameters
| Parameter | Type | Description |
|---|---|---|
publisherName | TName | The name of the publisher to use |
message | ClientInferPublisherInput<TContract, TName> | The message to publish |
options? | PublishOptions | Optional publish options including compression, headers, priority, etc. |
Returns
AsyncResult<void, MessageValidationError>
Remarks
If options.compression is specified, the message will be compressed before publishing and the contentEncoding property will be set automatically. Any contentEncoding value already in options will be overwritten by the compression algorithm.
create()
static create<TContract>(__namedParameters): AsyncResult<TypedAmqpClient<TContract>, never>;Defined in: packages/client/src/client.ts:205
Create a type-safe AMQP client from a contract.
Connection management (including automatic reconnection) is handled internally by amqp-connection-manager via the AmqpClient. The client establishes infrastructure asynchronously in the background once the connection is ready.
Connections are automatically shared across clients with the same URLs and connection options, following RabbitMQ best practices.
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
Parameters
| Parameter | Type |
|---|---|
__namedParameters | CreateClientOptions<TContract> |
Returns
AsyncResult<TypedAmqpClient<TContract>, never>
Type Aliases
CallError
type CallError =
| MessageValidationError
| RpcTimeoutError
| RpcCancelledError
| RpcError;Defined in: packages/client/src/interceptors.ts:20
Error union a call interceptor chain resolves with. The RpcError member is the widened (untyped) form; the public client.call(...) signature narrows it to the RPC's declared error union. Infrastructure failures are not modeled here: they surface through the Defect channel.
CallInterceptor
type CallInterceptor = (args, next) => AsyncResult<unknown, CallError>;Defined in: packages/client/src/interceptors.ts:112
Intercepts client.call(...): wraps the full request/reply round trip, so it can adjust timeouts, stamp request headers, observe replies and typed errors, or retry by calling next again. The first interceptor in the array is the outermost.
Parameters
| Parameter | Type |
|---|---|
args | CallInterceptorArgs |
next | CallInterceptorNext |
Returns
AsyncResult<unknown, CallError>
Example
Retry timed-out calls once
import { ErrAsync, P } from "unthrown";
const retryOnce: CallInterceptor = (args, next) =>
next().flatMapErrCases((matcher) =>
matcher.with(
P.tag("@amqp-contract/MessageValidationError"),
P.tag("@amqp-contract/RpcTimeoutError"),
P.tag("@amqp-contract/RpcCancelledError"),
P.tag("@amqp-contract/RpcError"),
(error) => (error instanceof RpcTimeoutError ? next() : ErrAsync(error)),
),
);CallInterceptorArgs
type CallInterceptorArgs = object;Defined in: packages/client/src/interceptors.ts:72
Arguments a call interceptor observes. request is the pre-validation request payload.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
options | CallOptions | Per-call options (timeoutMs, publishOptions). | packages/client/src/interceptors.ts:78 |
request | unknown | The (not yet validated) request payload. | packages/client/src/interceptors.ts:76 |
rpcName | string | The contract rpcs key being called. | packages/client/src/interceptors.ts:74 |
CallInterceptorNext
type CallInterceptorNext = (patch?) => AsyncResult<unknown, CallError>;Defined in: packages/client/src/interceptors.ts:85
Continuation a call interceptor calls to run the rest of the chain. The resolved value is the RPC response (typed at the public call() boundary).
Parameters
| Parameter | Type |
|---|---|
patch? | { options?: CallOptions; request?: unknown; } |
patch.options? | CallOptions |
patch.request? | unknown |
Returns
AsyncResult<unknown, CallError>
CallOptions
type CallOptions = object;Defined in: packages/client/src/client.ts:152
Per-call options for client.call().
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
publishOptions? | Omit<AmqpPublishOptions, "replyTo" | "correlationId"> | Optional AMQP message properties to merge into the request. replyTo and correlationId are managed by the client and cannot be overridden. | packages/client/src/client.ts:166 |
timeoutMs | number | Maximum time in ms to wait for an RPC reply. If exceeded, the call resolves to Err(RpcTimeoutError) and the in-memory correlation entry is cleared. A late reply arriving after the timeout is silently dropped. Required: RPC without a timeout is a footgun. | packages/client/src/client.ts:160 |
ClientInferCallError
type ClientInferCallError<TContract, TName> =
| MessageValidationError
| RpcTimeoutError
| RpcCancelledError
| ClientInferRpcErrors<TContract, TName>;Defined in: packages/client/src/types.ts:115
The complete error union of client.call(name, ...) for a given RPC: MessageValidationError | RpcTimeoutError | RpcCancelledError plus the RPC's declared typed errors (ClientInferRpcErrors). Use it to name a call's result in wrappers and helper signatures:
function callWithRetry<TName extends InferRpcNames<typeof contract>>(
name: TName,
): AsyncResult<ClientInferRpcResponseOutput<typeof contract, TName>, ClientInferCallError<typeof contract, TName>> { ... }Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
TName extends InferRpcNames<TContract> |
ClientInferPublisherInput
type ClientInferPublisherInput<TContract, TName> = PublisherInferInput<InferPublisher<TContract, TName>>;Defined in: packages/client/src/types.ts:38
Input type accepted by client.publish(name, ...) for a specific publisher.
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
TName extends InferPublisherNames<TContract> |
ClientInferRpcErrors
type ClientInferRpcErrors<TContract, TName> = InferRpc<TContract, TName> extends RpcDefinition<MessageDefinition, MessageDefinition, QueueDefinition, infer TErrors> ? TErrors extends RpcErrorMap ? { [K in keyof TErrors & string]: RpcError<K, InferSchemaOutput<TErrors[K]["data"]>> }[keyof TErrors & string] : never : never;Defined in: packages/client/src/types.ts:86
Typed error union for client.call(name, ...) — one RpcError<code, data> member per entry in the RPC's declared errors map, with data typed as the declared schema's output (the client re-validates error data when the reply arrives). Resolves to never when the RPC declares no errors, so the call's error union stays purely transport-level.
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
TName extends InferRpcNames<TContract> |
ClientInferRpcRequestInput
type ClientInferRpcRequestInput<TContract, TName> = InferRpc<TContract, TName> extends RpcDefinition<infer TRequest, MessageDefinition> ? TRequest extends MessageDefinition ? InferSchemaInput<TRequest["payload"]> : never : never;Defined in: packages/client/src/types.ts:56
Input type accepted by client.call(name, request, ...).
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
TName extends InferRpcNames<TContract> |
ClientInferRpcResponseOutput
type ClientInferRpcResponseOutput<TContract, TName> = InferRpc<TContract, TName> extends RpcDefinition<MessageDefinition, infer TResponse> ? TResponse extends MessageDefinition ? InferSchemaOutput<TResponse["payload"]> : never : never;Defined in: packages/client/src/types.ts:69
Output (validated) response type returned by client.call(name, ...).
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
TName extends InferRpcNames<TContract> |
CreateClientOptions
type CreateClientOptions<TContract> = object;Defined in: packages/client/src/client.ts:100
Options for creating a client
Type Parameters
| Type Parameter |
|---|
TContract extends ContractDefinition |
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
callInterceptors? | readonly CallInterceptor[] | Interceptors wrapping every call(...) round trip (request validation, publish, reply await): the first entry is the outermost. | packages/client/src/client.ts:146 |
connectionOptions? | AmqpConnectionManagerOptions | - | packages/client/src/client.ts:103 |
connectTimeoutMs? | number | null | Maximum time in ms to wait for the AMQP connection to become ready before create() resolves to a Defect (a TechnicalError cause). Defaults to 30s (the AmqpClient's DEFAULT_CONNECT_TIMEOUT_MS). Pass null to disable the timeout and let amqp-connection-manager retry indefinitely. | packages/client/src/client.ts:123 |
contract | TContract | - | packages/client/src/client.ts:101 |
defaultPublishOptions? | PublishOptions | Default publish options that will be applied to all publish operations. These can be overridden by options passed to the publish method. By default, persistent is set to true for message durability. | packages/client/src/client.ts:116 |
logger? | Logger | - | packages/client/src/client.ts:104 |
publishInterceptors? | readonly PublishInterceptor[] | Interceptors wrapping every publish(...): the first entry is the outermost. Each can patch the message/options, observe the outcome, retry by calling next again, or short-circuit. A patched message is validated exactly like the caller's original. | packages/client/src/client.ts:141 |
publishTimeoutMs? | number | null | Maximum time in ms a publish may sit buffered waiting for the broker before its promise settles with a timeout failure (surfaced as a Defect). Maps to amqp-connection-manager's channel-level publishTimeout. Defaults to 30s (the AmqpClient's DEFAULT_PUBLISH_TIMEOUT_MS). Pass null to disable, restoring unbounded buffering — a publish issued during an outage then never settles. Applies to publish(...) and to the request publish of call(...) alike. | packages/client/src/client.ts:134 |
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/client/src/client.ts:110 |
urls | ConnectionUrl[] | - | packages/client/src/client.ts:102 |
Logger
type Logger = object;Defined in: packages/core/dist/index.d.mts:35
Logger interface for amqp-contract packages.
Provides a simple logging abstraction that can be implemented by users to integrate with their preferred logging framework.
Example
// Simple console logger implementation
const logger: Logger = {
debug: (message, context) => console.debug(message, context),
info: (message, context) => console.info(message, context),
warn: (message, context) => console.warn(message, context),
error: (message, context) => console.error(message, context),
};Methods
debug()
debug(message, context?): void;Defined in: packages/core/dist/index.d.mts:41
Log debug level messages
Parameters
| Parameter | Type | Description |
|---|---|---|
message | string | The log message |
context? | LoggerContext | Optional context to include with the log |
Returns
void
error()
error(message, context?): void;Defined in: packages/core/dist/index.d.mts:59
Log error level messages
Parameters
| Parameter | Type | Description |
|---|---|---|
message | string | The log message |
context? | LoggerContext | Optional context to include with the log |
Returns
void
info()
info(message, context?): void;Defined in: packages/core/dist/index.d.mts:47
Log info level messages
Parameters
| Parameter | Type | Description |
|---|---|---|
message | string | The log message |
context? | LoggerContext | Optional context to include with the log |
Returns
void
warn()
warn(message, context?): void;Defined in: packages/core/dist/index.d.mts:53
Log warning level messages
Parameters
| Parameter | Type | Description |
|---|---|---|
message | string | The log message |
context? | LoggerContext | Optional context to include with the log |
Returns
void
LoggerContext
type LoggerContext = Record<string, unknown> & object;Defined in: packages/core/dist/index.d.mts:15
Context object for logger methods.
This type includes reserved keys that provide consistent naming for common logging context properties.
Type Declaration
| Name | Type | Defined in |
|---|---|---|
error? | unknown | packages/core/dist/index.d.mts:16 |
PublishError
type PublishError = MessageValidationError;Defined in: packages/client/src/interceptors.ts:12
Error union a publish interceptor chain resolves with — identical to the error channel of client.publish(...). Infrastructure failures are not modeled here: they surface through the Defect channel.
PublishInterceptor
type PublishInterceptor = (args, next) => AsyncResult<void, PublishError>;Defined in: packages/client/src/interceptors.ts:63
Intercepts client.publish(...): runs outside validation and publishing, so it can stamp headers (e.g. trace context), transform the payload, retry by calling next again, or short-circuit by returning without calling next. The first interceptor in the array is the outermost.
Parameters
| Parameter | Type |
|---|---|
args | PublishInterceptorArgs |
next | PublishInterceptorNext |
Returns
AsyncResult<void, PublishError>
Example
Stamp a correlation header on every outgoing message
const stampTenant: PublishInterceptor = (args, next) =>
next({
options: {
...args.options,
headers: { ...args.options.headers, 'x-tenant-id': currentTenant() },
},
});PublishInterceptorArgs
type PublishInterceptorArgs = object;Defined in: packages/client/src/interceptors.ts:27
Arguments a publish interceptor observes. message is the pre-validation payload — a patched message goes through schema validation exactly like the caller's original.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
message | unknown | The (not yet validated) message payload. | packages/client/src/interceptors.ts:31 |
options | PublishOptions | Per-call publish options (defaults are merged later, inside the client). | packages/client/src/interceptors.ts:33 |
publisherName | string | The contract publishers key being published. | packages/client/src/interceptors.ts:29 |
PublishInterceptorNext
type PublishInterceptorNext = (patch?) => AsyncResult<void, PublishError>;Defined in: packages/client/src/interceptors.ts:41
Continuation a publish interceptor calls to run the rest of the chain. The optional patch replaces message and/or options for everything downstream (inner interceptors, validation, and the publish itself).
Parameters
| Parameter | Type |
|---|---|
patch? | { message?: unknown; options?: PublishOptions; } |
patch.message? | unknown |
patch.options? | PublishOptions |
Returns
AsyncResult<void, PublishError>
PublishOptions
type PublishOptions = AmqpPublishOptions & object;Defined in: packages/client/src/client.ts:88
Publish options that extend core's AmqpPublishOptions with optional compression support.
Type Declaration
| Name | Type | Description | Defined in |
|---|---|---|---|
compression? | CompressionAlgorithm | Optional compression algorithm to use for the message payload. When specified, the message will be compressed using the chosen algorithm and the contentEncoding header will be set automatically. | packages/client/src/client.ts:94 |
TelemetryProvider
type TelemetryProvider = object;Defined in: packages/core/dist/telemetry-BtfQAlOJ.d.mts:59
Telemetry provider for AMQP operations. Uses lazy loading to gracefully handle cases where OpenTelemetry is not installed.
Properties
Functions
isMessageValidationError()
function isMessageValidationError(error): error is MessageValidationError;Defined in: packages/core/dist/index.d.mts:468
Type guard to check if an error is a MessageValidationError.
Parameters
| Parameter | Type |
|---|---|
error | unknown |
Returns
error is MessageValidationError
isRpcError()
function isRpcError(error): error is RpcError<string, unknown>;Defined in: packages/core/dist/index.d.mts:513
Type guard to check if an error is an RpcError.
Narrowing to a specific code (and thus a typed data) is done on the code property after the guard, or via the error matcher on the _tag (matcher.with(P.tag("@amqp-contract/RpcError"), …)).
Parameters
| Parameter | Type |
|---|---|
error | unknown |
Returns
error is RpcError<string, unknown>
isTechnicalError()
function isTechnicalError(error): error is TechnicalError;Defined in: packages/core/dist/index.d.mts:464
Type guard to check if an error is a TechnicalError — the cause carried by every infrastructure Defect this library produces.
Parameters
| Parameter | Type |
|---|---|
error | unknown |
Returns
error is TechnicalError