jest-metadata
Version:
🦸♂️ Superhero power for your Jest reporters! 🦸♀️
31 lines (27 loc) • 1.19 kB
text/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>;
}