event-driven
Version:
makes building event-driven-architecture easy
23 lines (22 loc) • 901 B
TypeScript
import { Event } from './backend/models';
import { JsMsg, JetStreamClient } from 'nats';
import { EventConfig } from '.';
export interface BatchSubscriberEvent<ParentEvent extends Event<string>> {
input: ParentEvent['data'];
jsMsg: JsMsg;
fail: (error: Error) => Promise<void>;
}
export declare type BatchEventHandler<ParentEvent extends Event<string>> = ({ config, events, }: {
config: EventConfig;
events: BatchSubscriberEvent<ParentEvent>[];
}) => Promise<any>;
export declare type SubscribeBatch = <ParentEvent extends Event<string>>({ subject, batchEventHandlers, }: {
subject: ParentEvent['subject'];
batchEventHandlers: BatchEventHandler<ParentEvent>[];
}) => Promise<void>;
export declare const SubscriberBatch: ({ clientGroup, js, batch, expires, }: {
clientGroup: string;
js: JetStreamClient;
batch: number;
expires: number;
}) => SubscribeBatch;