{"version":3,"file":"EventEmitter.mjs","names":[],"sources":["../../src/agent/EventEmitter.ts"],"sourcesContent":["import type { EventEmitter as NativeEventEmitter } from 'events'\nimport { fromEventPattern, Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { InjectionSymbols } from '../constants'\nimport { inject, injectable } from '../plugins'\nimport type { AgentDependencies } from './AgentDependencies'\nimport type { AgentContext } from './context'\nimport type { BaseEvent } from './Events'\n\ntype EmitEvent<T extends BaseEvent> = Omit<T, 'metadata'>\n\n@injectable()\nexport class EventEmitter {\n  private eventEmitter: NativeEventEmitter\n  private stop$: Subject<boolean>\n\n  public constructor(\n    @inject(InjectionSymbols.AgentDependencies) agentDependencies: AgentDependencies,\n    @inject(InjectionSymbols.Stop$) stop$: Subject<boolean>\n  ) {\n    this.eventEmitter = new agentDependencies.EventEmitterClass()\n    this.stop$ = stop$\n  }\n\n  // agentContext is currently not used, but already making required as it will be used soon\n  public emit<T extends BaseEvent>(agentContext: AgentContext, data: EmitEvent<T>) {\n    this.eventEmitter.emit(data.type, {\n      ...data,\n      metadata: {\n        contextCorrelationId: agentContext.contextCorrelationId,\n      },\n    })\n  }\n\n  public on<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>) {\n    this.eventEmitter.on(event, listener)\n  }\n\n  public off<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>) {\n    this.eventEmitter.off(event, listener)\n  }\n\n  public observable<T extends BaseEvent>(event: T['type']) {\n    return fromEventPattern<T>(\n      (handler) => this.on(event, handler),\n      (handler) => this.off(event, handler)\n    ).pipe(takeUntil(this.stop$))\n  }\n}\n"],"mappings":";;;;;;;;AAYO,IAAM,eAAN,MAAM,aAAa;CAIxB,YACE,mBACA,OACA;EACA,KAAK,eAAe,IAAI,kBAAkB,kBAAkB;EAC5D,KAAK,QAAQ;CACf;CAGA,KAAiC,cAA4B,MAAoB;EAC/E,KAAK,aAAa,KAAK,KAAK,MAAM;GAChC,GAAG;GACH,UAAU,EACR,sBAAsB,aAAa,qBACrC;EACF,CAAC;CACH;CAEA,GAA+B,OAAkB,UAA6C;EAC5F,KAAK,aAAa,GAAG,OAAO,QAAQ;CACtC;CAEA,IAAgC,OAAkB,UAA6C;EAC7F,KAAK,aAAa,IAAI,OAAO,QAAQ;CACvC;CAEA,WAAuC,OAAkB;EACvD,OAAO,kBACJ,YAAY,KAAK,GAAG,OAAO,OAAO,IAClC,YAAY,KAAK,IAAI,OAAO,OAAO,CACtC,CAAC,CAAC,KAAK,UAAU,KAAK,KAAK,CAAC;CAC9B;AACF;;CArCC,WAAW;CAMP,gBAAA,GAAA,OAAO,iBAAiB,iBAAiB,CAAA;CACzC,gBAAA,GAAA,OAAO,iBAAiB,KAAK,CAAA"}