@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
17 lines (16 loc) • 716 B
TypeScript
export type EventMap = Record<string, unknown[]>;
export type Callback<P extends unknown[]> = (...args: P) => void;
export type Listener<P extends unknown[]> = {
callback: Callback<P> | null;
next: Listener<P> | null;
};
export declare class Emitter<Events extends EventMap> {
listeners: {
[EventName in keyof Events]: Listener<Events[EventName]> | null;
};
constructor();
on<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this;
once<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this;
off<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this;
emit<E extends keyof Events>(event: E, ...args: Events[E]): boolean;
}