UNPKG

mediateur

Version:

A simple library allowing the implementation of the Mediator design pattern

23 lines (22 loc) 1.17 kB
import { Message } from './message'; import { MessageHandler } from './messageHandler'; import { MessageResult } from './messageResult'; export type Middleware<TMessage extends Message = Message> = (message: TMessage, next: () => Promise<MessageResult<TMessage>>) => Promise<MessageResult<TMessage>>; type AddMessageMiddlewaresOptions<TMessage extends Message> = { messageType: TMessage['type'] | Array<TMessage['type']>; middlewares: ReadonlyArray<Middleware<TMessage>>; }; type AddHandlerMiddlewaresOptions<TMessage extends Message> = { handler: MessageHandler<TMessage>; middlewares: ReadonlyArray<Middleware<TMessage>>; }; type AddGlobalMiddlewaresOptions = { middlewares: ReadonlyArray<Middleware>; }; export type AddOptions<TMessage extends Message> = AddMessageMiddlewaresOptions<TMessage> | AddHandlerMiddlewaresOptions<TMessage> | AddGlobalMiddlewaresOptions; export declare const middlewares: { add: <TMessage extends Message>(options: AddOptions<TMessage>) => void; apply: <TMessage extends Message>(messageType: TMessage["type"], handler: MessageHandler<TMessage>) => MessageHandler<TMessage>; clear: () => void; }; export {};