UNPKG

linkup-bot-lib

Version:

40 lines (35 loc) 969 B
import {EventEmitter} from "stream"; /** * This class is used for TypeSafe events. * @internal */ export class TypedEventEmitter<TEvents extends Record<string, any>> { private emitter = new EventEmitter() /** * @internal */ emit<TEventName extends keyof TEvents & string>( eventName: TEventName, ...eventArg: TEvents[TEventName] ) { this.emitter.emit(eventName, ...(eventArg as [])) } /** * @internal */ on<TEventName extends keyof TEvents & string>( eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void ) { this.emitter.on(eventName, handler as any) } /** * @internal */ off<TEventName extends keyof TEvents & string>( eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void ) { this.emitter.off(eventName, handler as any) } }