@audin.ai/operator-sdk
Version:
Headless browser SDK for the Audin operator softphone — make and receive calls over the Audin operator WebSockets.
22 lines (21 loc) • 1.17 kB
TypeScript
/**
* Tiny dependency-free typed event emitter.
*
* Browser `EventTarget` would force `CustomEvent` boxing and loses payload
* typing; this keeps strong types on `on`/`off`/`emit` with no runtime cost.
* Listener exceptions are isolated so one bad subscriber cannot break the
* emit loop or the SDK's internal state machine.
*/
export declare class TypedEmitter<EventMap> {
private readonly listeners;
/** Subscribe to `event`. Returns an unsubscribe function. */
on<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): () => void;
/** Subscribe once: the listener is removed after the first emit. */
once<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): () => void;
/** Unsubscribe a previously-registered listener. Idempotent. */
off<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): void;
/** Emit `event` to all current listeners. Listener errors are swallowed. */
protected emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
/** Remove every listener (used on teardown). */
protected removeAllListeners(): void;
}