UNPKG

ts-bus

Version:

<p align="center"> <img src="logo.png" width="100" height="100"/> </p>

28 lines (27 loc) 1.25 kB
import { EventEmitter2 as EventEmitter } from "eventemitter2"; import { BusEvent, EventCreatorFn } from "./types"; export declare type PredicateFn<T> = (event: T) => boolean; declare type TestPredicateFn<P> = (payload: P) => boolean; declare type EventDefinitionOptions<P> = { test?: (payload: P) => boolean; }; export declare function createEventDefinition<P = void>(options?: EventDefinitionOptions<P> | TestPredicateFn<P>): <T extends string>(type: T) => { (payload: P): { type: T; payload: P; }; eventType: T; toString(): T; }; export declare function defineEvent<T extends BusEvent>(type: T["type"]): EventCreatorFn<T>; export declare class EventBus { emitter: EventEmitter; publish<T extends BusEvent>(event: T, meta?: any): void; subscribe<T extends BusEvent>(subscription: string, handler: (e: BusEvent) => void): () => void; subscribe<T extends BusEvent>(subscription: EventCreatorFn<T>, handler: (e: ReturnType<typeof subscription>) => void): () => void; subscribe<T extends BusEvent>(subscription: PredicateFn<T>, handler: (e: T) => void): () => void; subscribe<T extends { type: string; }>(subscription: T["type"], handler: (e: T) => void): () => void; } export {};