UNPKG

@initbit/nestjs-jetstream

Version:
56 lines (55 loc) 2.53 kB
import { CustomTransportStrategy, MessageHandler, Server } from '@nestjs/microservices'; import { LoggerService } from '@nestjs/common'; import { AckPolicy, Codec, ConsumerOptsBuilder, DeliverPolicy, JetStreamClient, JetStreamManager, JsMsg, Msg, NatsConnection } from 'nats'; import { ConsumerOptions, StreamOptions } from './interfaces/nats-jetstream-options.interface'; import { JetStreamMapper } from './jetstream.types'; export declare class JetStream extends Server implements CustomTransportStrategy { private readonly options; protected readonly logger: LoggerService; protected nc?: NatsConnection; protected js?: JetStreamClient; protected jsm?: JetStreamManager; protected codec: Codec<unknown>; protected readonly durableName: string; private eventHandlers; private subjectToHandlerMapping; constructor(options: { servers: string | string[]; streamName?: string; durableName?: string; queue?: string; consumer?: (consumerOptions: ConsumerOptsBuilder) => void; deliverPolicy?: DeliverPolicy; ackPolicy?: AckPolicy; ackWait?: number; filterSubject?: string; filterSubjects?: string[]; logger?: LoggerService; stream?: StreamOptions; consumerOptions?: ConsumerOptions; mapper?: JetStreamMapper; defaultMapper?: 'subject' | 'envelope'; }); listen(callback: () => void): Promise<void>; close(): Promise<void>; on(event: string, callback: Function): void; unwrap<T>(value?: T): T; /** * Override addHandler to store subject-to-handler mapping when envelope mapping is used */ addHandler(pattern: any, callback: MessageHandler, isEventHandler?: boolean, extras?: Record<string, any>): void; /** * Get the subject-to-handler mapping for debugging and testing purposes * @returns Map of subject patterns to handler keys */ getSubjectToHandlerMapping(): Map<string, string>; ensureStream(jsm: JetStreamManager): Promise<void>; ensureConsumer(jsm: JetStreamManager): Promise<void>; subscribeToTopics(js: JetStreamClient): void; handleJetStreamMessage(message: JsMsg): Promise<void>; private invokeHandler; handleNatsMessage(message: Msg, handler: MessageHandler): Promise<void>; subscribeToEventPatterns(client: JetStreamClient): Promise<void>; subscribeToMessagePatterns(connection: NatsConnection): void; handleStatusUpdates(connection: NatsConnection): Promise<void>; }