UNPKG

489 BPlain TextView Raw
1import { Observable } from 'rxjs';
2
3type O = Record<string, unknown>;
4
5export type Event<P extends O = any> = {
6 type: string;
7 payload: P;
8};
9
10export type FireEvent<E extends Event = Event> = (event: E) => void;
11
12export type EventBus<E extends Event = Event> = {
13 event$: Observable<E>;
14 fire: FireEvent<E>;
15 type<T extends Event>(): EventBus<T>;
16 filter<T extends Event = E>(fn: EventBusFilter<T>): EventBus<T>;
17};
18
19export type EventBusFilter<E extends Event> = (e: E) => boolean;