UNPKG

concurrently

Version:
21 lines (20 loc) 702 B
import { fromEvent, share } from 'rxjs'; const sharedEvents = new WeakMap(); /** * Creates an observable for a specific event of an `EventEmitter` instance. * * The underlying event listener is set up only once across the application for that event emitter/name pair. */ export function fromSharedEvent(emitter, event) { let emitterEvents = sharedEvents.get(emitter); if (!emitterEvents) { emitterEvents = new Map(); sharedEvents.set(emitter, emitterEvents); } let observable = emitterEvents.get(event); if (!observable) { observable = fromEvent(emitter, event).pipe(share()); emitterEvents.set(event, observable); } return observable; }