UNPKG

@cch137/emitter

Version:

`@cch137/emitter` is a versatile event emitter package designed to work seamlessly in both browser and Node.js environments. It provides a simple yet powerful interface for managing event-driven architecture in your applications.

17 lines 1.03 kB
export type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap; type DefaultEventMap = [never]; type Args<K, T> = T extends DefaultEventMap ? [...args: any[]] : K extends keyof T ? T[K] : never; type EventName<K, T> = T extends DefaultEventMap ? string | symbol | number : K | keyof T; type Listener<K, T> = T extends DefaultEventMap ? (...args: any[]) => void : K extends keyof T ? T[K] extends unknown[] ? (...args: T[K]) => void : never : never; export type ExtractEventMap<T> = T extends Emitter<infer U> ? U : never; export default class Emitter<T extends EventMap<T>> { private listeners; private onces; on<K>(eventName: EventName<K, T>, listener: Listener<K, T>): this; once<K>(eventName: EventName<K, T>, listener: Listener<K, T>): this; off<K>(eventName: EventName<K, T>, listener: Listener<K, T>): this; emit<K>(eventName: EventName<K, T>, ...args: Args<K, T>): boolean; clear<K>(eventName: EventName<K, T>, ...args: Args<K, T>): this; } export {}; //# sourceMappingURL=index.d.ts.map