UNPKG

event-driven

Version:

makes building event-driven-architecture easy

47 lines (46 loc) 1.98 kB
import { JetStreamClient, JsMsg } from 'nats'; import { Types } from 'mongoose'; import { Event } from '../backend'; export interface EventConfig { clientGroup: string; js: JetStreamClient; parentIds: Types.ObjectId[]; durableName?: string; } export interface SubscriberConfig { clientGroup: string; js: JetStreamClient; batch: number; expires: number; } interface ConvertedMsg<ParentEvent extends Event<string>> { jsMsg: JsMsg; parentId: Types.ObjectId; msgData: ParentEvent['data']; retryingDurableName: string | undefined; } export declare const getDurableName: (clientGroup: string, subject: string, i: number, type: 'PULL' | 'GROUP') => string; export declare const convertJsMsg: <ParentEvent extends Event<string>>(jsMsg: JsMsg) => ConvertedMsg<ParentEvent>; export declare const filterConvertedMsgs: (clientGroup: string, subject: string, eventHandlerOrder: number, showError: boolean, durableName: string, maxRetryCount: number) => <ParentEvent extends Event<string>>(args: ConvertedMsg<ParentEvent>) => boolean; export declare const groupByFn: <T, K extends string | number | symbol>(list: T[], getKey: (item: T) => K) => T[][]; export interface SubscriberEvent<ParentEvent extends Event<string>> { input: ParentEvent['data']; ack: () => void; fail: (error: Error) => Promise<void>; config: EventConfig; } export interface SubscriberGroupedEvent<ParentEvent extends Event<string>> { inputs: ParentEvent['data'][]; ack: () => void; fail: (error: Error) => Promise<void>; config: EventConfig; } export declare const autoAckOrFail: <T extends SubscriberEvent<Event<string>>>(fn: (args: { config: EventConfig; input: T["input"]; }) => any) => (events: T[]) => Promise<void[]>; export declare const autoGroupAckOrFail: <T extends SubscriberGroupedEvent<Event<string>>>(fn: (args: { config: EventConfig; inputs: T["inputs"]; }) => any) => (events: T[]) => Promise<void[]>; export {};