{"version":3,"sources":["../../src/eventEmitter.mts"],"sourcesContent":["export interface EventEmittor<T extends string[]> {\n  on(event: T[number], listener: (...args: any[]) => void): this;\n  off(event: T[number], listener: (...args: any[]) => void): this;\n  emit(event: T[number], ...args: any[]): Promise<boolean>;\n}\n\nexport class EventManager<T extends string[]> implements EventEmittor<T> {\n  private listeners: { [K in T[number]]?: Array<(...args: any[]) => void> } = {};\n\n  on(event: T[number], listener: (...args: any[]) => void): this {\n    if (!this.listeners[event]) {\n      this.listeners[event] = [];\n    }\n    this.listeners[event]!.push(listener);\n    return this;\n  }\n\n  off(event: T[number], listener: (...args: any[]) => void): this {\n    const arr = this.listeners[event];\n    if (arr) {\n      this.listeners[event] = arr.filter((l) => l !== listener);\n    }\n    return this;\n  }\n\n  async emit(event: T[number], ...args: any[]): Promise<boolean> {\n    const arr = this.listeners[event];\n    if (arr && arr.length > 0) {\n      await Promise.all(arr.map((listener) => listener(...args)));\n      return true;\n    }\n    return false;\n  }\n}\n\nexport class EventEmittorBase<T extends string[]> implements EventEmittor<T> {\n  protected event_manager = new EventManager<T>();\n\n  on(event: T[number], listener: (...args: any[]) => void): this {\n    this.event_manager.on(event, listener);\n    return this;\n  }\n\n  off(event: T[number], listener: (...args: any[]) => void): this {\n    this.event_manager.off(event, listener);\n    return this;\n  }\n\n  async emit(event: T[number], ...args: any[]): Promise<boolean> {\n    return await this.event_manager.emit(event, ...args);\n  }\n}\n"],"mappings":";;AAMO,MAAM,aAA4D;AAAA,EANzE,OAMyE;AAAA;AAAA;AAAA,EAC/D,YAAoE,CAAC;AAAA,EAE7E,GAAG,OAAkB,UAA0C;AAC7D,QAAI,CAAC,KAAK,UAAU,KAAK,GAAG;AAC1B,WAAK,UAAU,KAAK,IAAI,CAAC;AAAA,IAC3B;AACA,SAAK,UAAU,KAAK,EAAG,KAAK,QAAQ;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAkB,UAA0C;AAC9D,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,QAAI,KAAK;AACP,WAAK,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,MAAM,QAAQ;AAAA,IAC1D;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,UAAqB,MAA+B;AAC7D,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,QAAI,OAAO,IAAI,SAAS,GAAG;AACzB,YAAM,QAAQ,IAAI,IAAI,IAAI,CAAC,aAAa,SAAS,GAAG,IAAI,CAAC,CAAC;AAC1D,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,iBAAgE;AAAA,EAnC7E,OAmC6E;AAAA;AAAA;AAAA,EACjE,gBAAgB,IAAI,aAAgB;AAAA,EAE9C,GAAG,OAAkB,UAA0C;AAC7D,SAAK,cAAc,GAAG,OAAO,QAAQ;AACrC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAkB,UAA0C;AAC9D,SAAK,cAAc,IAAI,OAAO,QAAQ;AACtC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,UAAqB,MAA+B;AAC7D,WAAO,MAAM,KAAK,cAAc,KAAK,OAAO,GAAG,IAAI;AAAA,EACrD;AACF;","names":[]}