mediasoup
Version:
Cutting Edge WebRTC Video Conferencing
89 lines (88 loc) • 2.6 kB
JavaScript
;
/* 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);
}