@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
1 lines • 2.46 kB
Source Map (JSON)
{"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"}