{"version":3,"sources":["../src/runtime/event-emitter.ts"],"names":[],"mappings":";;;;;AAEO,IAAM,eAAN,MAA4C;AAAA,EACzC,YAEJ,EAAC;AAAA,EAEL,EAAA,CACE,OACA,QAAA,EACM;AACN,IAAA,CAAC,KAAK,SAAA,CAAU,KAAK,MAAM,EAAC,EAAG,KAAK,QAAQ,CAAA;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,IAAA,CACE,OACA,QAAA,EACM;AACN,IAAA,MAAM,WAAA,GAAc,IAAI,IAAA,KAAoB;AAC1C,MAAA,IAAA,CAAK,GAAA,CAAI,OAAO,WAAW,CAAA;AAC3B,MAAA,QAAA,CAAS,GAAG,IAAI,CAAA;AAAA,IAClB,CAAA;AACA,IAAA,OAAO,IAAA,CAAK,EAAA,CAAG,KAAA,EAAO,WAAW,CAAA;AAAA,EACnC;AAAA,EAEA,GAAA,CACE,OACA,QAAA,EACM;AACN,IAAA,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAA,CAAK,IAAA,CAAK,UAAU,KAAK,CAAA,IAAK,EAAC,EAAG,MAAA;AAAA,MACpD,CAAC,MAAM,CAAA,KAAM;AAAA,KACf;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,IAAA,CAA6B,UAAa,IAAA,EAA0B;AAClE,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AAC/B,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,CAAG,MAAA,KAAW,GAAG,OAAO,KAAA;AACnC,IAAA,EAAA,CAAG,QAAQ,CAAC,QAAA,KAAa,QAAA,CAAS,GAAG,IAAI,CAAC,CAAA;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,mBAA2C,KAAA,EAAiB;AAC1D,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,YAAY,EAAC;AAAA,IACpB;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,IAAO,qBAAA,GAAQ","file":"event-emitter.cjs","sourcesContent":["type EventMap = Record<string, any[]>;\n\nexport class EventEmitter<Events extends EventMap> {\n  private listeners: {\n    [K in keyof Events]?: Array<(...args: Events[K]) => void>;\n  } = {};\n\n  on<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    (this.listeners[event] ??= []).push(listener);\n    return this;\n  }\n\n  once<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    const onceWrapper = (...args: Events[K]) => {\n      this.off(event, onceWrapper);\n      listener(...args);\n    };\n    return this.on(event, onceWrapper);\n  }\n\n  off<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    this.listeners[event] = (this.listeners[event] ?? []).filter(\n      (l) => l !== listener\n    );\n    return this;\n  }\n\n  emit<K extends keyof Events>(event: K, ...args: Events[K]): boolean {\n    const ls = this.listeners[event];\n    if (!ls || ls.length === 0) return false;\n    ls.forEach((listener) => listener(...args));\n    return true;\n  }\n\n  removeAllListeners<K extends keyof Events>(event?: K): this {\n    if (event) {\n      delete this.listeners[event];\n    } else {\n      this.listeners = {};\n    }\n    return this;\n  }\n}\n\nexport default EventEmitter;\n"]}