UNPKG

mediasoup

Version:

Cutting Edge WebRTC Video Conferencing

89 lines (88 loc) 2.6 kB
"use strict"; /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); exports.EnhancedEventEmitter = void 0; exports.enhancedOnce = enhancedOnce; const node_events_1 = require("node:events"); class EnhancedEventEmitter extends node_events_1.EventEmitter { constructor() { super(); this.setMaxListeners(Infinity); } emit(eventName, ...args) { return super.emit(eventName, ...args); } /** * Special addition to the EventEmitter API. */ safeEmit(eventName, ...args) { try { return super.emit(eventName, ...args); } catch (error) { try { super.emit('listenererror', eventName, error); } catch (error2) { // Ignore it. } return Boolean(super.listenerCount(eventName)); } } on(eventName, listener) { super.on(eventName, listener); return this; } off(eventName, listener) { super.off(eventName, listener); return this; } addListener(eventName, listener) { super.on(eventName, listener); return this; } prependListener(eventName, listener) { super.prependListener(eventName, listener); return this; } once(eventName, listener) { super.once(eventName, listener); return this; } prependOnceListener(eventName, listener) { super.prependOnceListener(eventName, listener); return this; } removeListener(eventName, listener) { super.off(eventName, listener); return this; } removeAllListeners(eventName) { super.removeAllListeners(eventName); return this; } listenerCount(eventName) { return super.listenerCount(eventName); } // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type listeners(eventName) { return super.listeners(eventName); } // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type rawListeners(eventName) { return super.rawListeners(eventName); } } exports.EnhancedEventEmitter = EnhancedEventEmitter; /** * TypeScript version of events.once(): * https://nodejs.org/api/events.html#eventsonceemitter-name-options * * Usage example: * ```ts * await enhancedOnce<ConsumerEvents>(videoConsumer, 'producerpause'); * ``` */ async function enhancedOnce(emmiter, eventName, options) { return (0, node_events_1.once)(emmiter, eventName, options); }