UNPKG

@100mslive/hms-video-store

Version:

@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow

28 lines (25 loc) 926 B
import type { WaitForFilter, WaitForOptions } from 'eventemitter2'; import { EventEmitter2 as EventEmitter } from 'eventemitter2'; export class HMSInternalEvent<T> { constructor(private eventName: string, private eventEmitter: EventEmitter) {} publish = (event?: T) => { this.eventEmitter.emit(this.eventName, event); }; subscribe = (fn: (event: T) => void | Promise<void>) => { this.eventEmitter.on(this.eventName, fn); }; subscribeOnce = (fn: (event: T) => void | Promise<void>) => { this.eventEmitter.once(this.eventName, fn); }; unsubscribe = (fn: (event: T) => void | Promise<void>) => { this.eventEmitter.off(this.eventName, fn); }; waitFor = (predicate: WaitForFilter) => { return this.eventEmitter.waitFor(this.eventName, { filter: predicate, } as WaitForOptions); }; removeAllListeners = () => { this.eventEmitter.removeAllListeners(this.eventName); }; }