mediateur
Version:
A simple library allowing the implementation of the Mediator design pattern
21 lines (20 loc) • 1.04 kB
TypeScript
import { Message } from './message';
import { MessageHandler } from './messageHandler';
import { MessageResult } from './messageResult';
import { AddOptions } from './middlewares';
import { Metadata } from './metadata';
type UseOptions<TMessage extends Message> = AddOptions<TMessage>;
declare const mediator: {
readonly register: <TKey extends string, TMessage extends Message<TKey>>(messageType: TKey, messageHandler: MessageHandler<TMessage>, metadata?: Metadata) => void;
readonly send: <TMessage extends Message>({ type, data, }: TMessage) => Promise<MessageResult<TMessage>>;
readonly publish: <TMessage extends Message>({ type, data }: TMessage) => Promise<void>;
readonly use: <TMessage extends Message>(options: UseOptions<TMessage>) => void;
readonly getMessageTypes: () => string[];
readonly getMetadata: (type: string) => Metadata | undefined;
readonly getAllMetadata: () => {
type: string;
metadata: Metadata;
}[];
};
declare const clear: () => void;
export { mediator, clear };