UNPKG

@cloudamqp/amqp-client

Version:

AMQP 0-9-1 client, both for browsers (WebSocket) and node (TCP Socket)

66 lines 2.85 kB
/** * Narrow structural interfaces for the high-level session/queue/exchange * surface. Use these in tests to declare typed mocks without having to * implement the full {@link AMQPSession} class (which carries private * fields, internal channels, reconnect state, etc). * * The real classes are structurally assignable to these — `AMQPSession` * satisfies `AMQPSessionLike` — so application code can keep using the * concrete classes while tests substitute lightweight fakes. * * @example * ```ts * import type { AMQPSessionLike, AMQPQueueLike } from "@cloudamqp/amqp-client" * * class FakeSession implements AMQPSessionLike { * async queue(): Promise<AMQPQueueLike> { return new FakeQueue() } * async stop(): Promise<void> {} * // ... * } * ``` */ import type { AMQPMessage } from "./amqp-message.js"; import type { ExchangeType } from "./amqp-channel.js"; import type { ExchangeOptions, QueueOptions } from "./amqp-session.js"; import type { AMQPProperties } from "./amqp-properties.js"; import type { QueueSubscribeParams } from "./amqp-queue.js"; /** Minimum surface a mock subscription must expose. */ export interface AMQPSubscriptionLike { cancel(): Promise<void>; } /** Minimum surface a mock queue handle must expose. */ export interface AMQPQueueLike { readonly name: string; publish(body: unknown, options?: AMQPProperties & { confirm?: boolean; mandatory?: boolean; }): Promise<unknown>; subscribe(params: QueueSubscribeParams, callback: (msg: AMQPMessage) => void | Promise<void>): Promise<AMQPSubscriptionLike>; bind(exchange: string, routingKey?: string, args?: Record<string, unknown>): Promise<unknown>; get(params?: { noAck?: boolean; }): Promise<AMQPMessage | null>; consumeOne(options?: { timeout?: number; }): Promise<AMQPMessage>; } /** Minimum surface a mock exchange handle must expose. */ export interface AMQPExchangeLike { publish(body: unknown, options?: AMQPProperties & { routingKey?: string; confirm?: boolean; mandatory?: boolean; }): Promise<unknown>; } /** Minimum surface a mock session must expose. */ export interface AMQPSessionLike { readonly closed: boolean; queue(name: string, options?: QueueOptions): Promise<AMQPQueueLike>; exchange(name: string, type: ExchangeType, options?: ExchangeOptions): Promise<AMQPExchangeLike>; directExchange(name?: string, options?: ExchangeOptions): Promise<AMQPExchangeLike>; fanoutExchange(name?: string, options?: ExchangeOptions): Promise<AMQPExchangeLike>; topicExchange(name?: string, options?: ExchangeOptions): Promise<AMQPExchangeLike>; headersExchange(name?: string, options?: ExchangeOptions): Promise<AMQPExchangeLike>; stop(reason?: string): Promise<void>; } //# sourceMappingURL=amqp-mockable.d.ts.map