jest-metadata
Version:
🦸♂️ Superhero power for your Jest reporters! 🦸♀️
28 lines (27 loc) • 1.2 kB
TypeScript
export interface ReadonlyEmitter<Event extends {
type: string;
}> {
on(type: '*', listener: (event: Event) => unknown): this;
on<E extends Event>(type: E['type'], listener: (event: E) => unknown): this;
once(type: '*', listener: (event: Event) => unknown): this;
once<E extends Event>(type: E['type'], listener: (event: E) => unknown): this;
off(type: '*', listener: (event: Event) => unknown): this;
off<E extends Event>(type: E['type'], listener: (event: E) => unknown): this;
}
export interface ReadonlyAsyncEmitter<Event extends {
type: string;
}> {
on<E extends Event>(type: E['type'] | '*', listener: (event: E) => void | Promise<void>, weight?: number): this;
once<E extends Event>(type: E['type'] | '*', listener: (event: E) => void | Promise<void>, weight?: number): this;
off<E extends Event>(type: E['type'] | '*', listener: (event: E) => void | Promise<void>): this;
}
export interface Emitter<Event extends {
type: string;
}> extends ReadonlyEmitter<Event> {
emit(event: Event): void;
}
export interface AsyncEmitter<Event extends {
type: string;
}> extends ReadonlyAsyncEmitter<Event> {
emit(event: Event): Promise<void>;
}