Files
book-test/node_modules/concurrently/dist/lib/observables.js
T
chris a7524412f0
CI/CD Pipeline / test (push) Failing after 2m38s
CI/CD Pipeline / deploy-internal (push) Has been skipped
Add web front-end and fix API issues
2026-08-28 21:47:05 -04:00

21 lines
702 B
JavaScript

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;
}