@distributed-functions/core
Version:
Distributed Functions for TypeScript
28 lines (27 loc) • 1.44 kB
TypeScript
import { CallsRecord } from './call';
import { MessageFromEvent, Event, EventsRecord } from './event';
import { CallsToPublish, EventsToPublish } from './publishers';
export type PersistenceLevel = 'none' | 'single-node' | 'replication';
export type EventHandlerRun<E extends Event<any, any>, Ctx extends Record<any, any>, ER extends EventsRecord | undefined, CR extends CallsRecord | undefined> = (event: MessageFromEvent<E>, ctx: Ctx, transport: {
call: CallsToPublish<CR extends CallsRecord ? CR : any>;
event: EventsToPublish<ER extends EventsRecord ? ER : any>;
}) => Promise<void>;
export type EventHandler<E extends Event<any, any>, Ctx extends Record<any, any>, ER extends EventsRecord | undefined, CR extends CallsRecord | undefined> = {
event: E;
run: EventHandlerRun<E, Ctx, ER, CR>;
handlerName: string;
persistent?: PersistenceLevel;
callsToPublish?: CR;
eventsToPublish?: ER;
isEventHandler: true;
parallel?: number;
};
export declare const EventHandler: <E extends Event<any, any>, Ctx extends Record<any, any>, ER extends EventsRecord | undefined, CR extends CallsRecord | undefined>(props: {
event: E;
callsToPublish?: CR | undefined;
eventsToPublish?: ER | undefined;
handlerName?: string | undefined;
parallel?: number | undefined;
persistent?: PersistenceLevel | undefined;
run: EventHandlerRun<E, Ctx, ER, CR>;
}) => EventHandler<E, Ctx, ER, CR>;