{"version":3,"sources":["../src/events/pubsub.ts","../src/events/event-emitter.ts"],"names":["EventEmitter"],"mappings":";;;;;;;;;AAEO,IAAe,SAAf,MAAsB;AAK7B;ACHO,IAAM,kBAAA,GAAN,cAAiC,MAAA,CAAO;AAAA,EACrC,OAAA;AAAA,EAER,YAAY,eAAA,EAAgC;AAC1C,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,OAAA,GAAU,eAAA,IAAmB,IAAIA,6BAAA,EAAa;AAAA,EACrD;AAAA,EAEA,MAAM,OAAA,CAAQ,KAAA,EAAe,KAAA,EAAuD;AAClF,IAAA,MAAM,EAAA,GAAK,OAAO,UAAA,EAAW;AAC7B,IAAA,MAAM,SAAA,uBAAgB,IAAA,EAAK;AAC3B,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,KAAA,EAAO;AAAA,MACvB,GAAG,KAAA;AAAA,MACH,EAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,SAAA,CAAU,KAAA,EAAe,EAAA,EAAsE;AACnG,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,KAAA,EAAO,EAAE,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAA,CAAY,KAAA,EAAe,EAAA,EAAsE;AACrG,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,EAAE,CAAA;AAAA,EAC5B;AAAA,EAEA,MAAM,KAAA,GAAuB;AAAA,EAE7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,QAAQ,kBAAA,EAAmB;AAAA,EAClC;AACF","file":"chunk-OQDRPRKM.cjs","sourcesContent":["import type { Event } from './types';\n\nexport abstract class PubSub {\n  abstract publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void>;\n  abstract subscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void>;\n  abstract unsubscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void>;\n  abstract flush(): Promise<void>;\n}\n","import EventEmitter from 'node:events';\nimport { PubSub } from './pubsub';\nimport type { Event } from './types';\n\nexport class EventEmitterPubSub extends PubSub {\n  private emitter: EventEmitter;\n\n  constructor(existingEmitter?: EventEmitter) {\n    super();\n    this.emitter = existingEmitter ?? new EventEmitter();\n  }\n\n  async publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void> {\n    const id = crypto.randomUUID();\n    const createdAt = new Date();\n    this.emitter.emit(topic, {\n      ...event,\n      id,\n      createdAt,\n    });\n  }\n\n  async subscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n    this.emitter.on(topic, cb);\n  }\n\n  async unsubscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n    this.emitter.off(topic, cb);\n  }\n\n  async flush(): Promise<void> {\n    // no-op\n  }\n\n  /**\n   * Clean up all listeners during graceful shutdown.\n   */\n  async close(): Promise<void> {\n    this.emitter.removeAllListeners();\n  }\n}\n"]}