82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.StrictEventEmitter = void 0;
|
||
|
const events_1 = require("events");
|
||
|
/**
|
||
|
* Strictly typed version of an `EventEmitter`. A `TypedEventEmitter` takes type
|
||
|
* parameters for mappings of event names to event data types, and strictly
|
||
|
* types method calls to the `EventEmitter` according to these event maps.
|
||
|
*
|
||
|
* @typeParam ListenEvents - `EventsMap` of user-defined events that can be
|
||
|
* listened to with `on` or `once`
|
||
|
* @typeParam EmitEvents - `EventsMap` of user-defined events that can be
|
||
|
* emitted with `emit`
|
||
|
* @typeParam ReservedEvents - `EventsMap` of reserved events, that can be
|
||
|
* emitted by socket.io with `emitReserved`, and can be listened to with
|
||
|
* `listen`.
|
||
|
*/
|
||
|
class StrictEventEmitter extends events_1.EventEmitter {
|
||
|
/**
|
||
|
* Adds the `listener` function as an event listener for `ev`.
|
||
|
*
|
||
|
* @param ev Name of the event
|
||
|
* @param listener Callback function
|
||
|
*/
|
||
|
on(ev, listener) {
|
||
|
return super.on(ev, listener);
|
||
|
}
|
||
|
/**
|
||
|
* Adds a one-time `listener` function as an event listener for `ev`.
|
||
|
*
|
||
|
* @param ev Name of the event
|
||
|
* @param listener Callback function
|
||
|
*/
|
||
|
once(ev, listener) {
|
||
|
return super.once(ev, listener);
|
||
|
}
|
||
|
/**
|
||
|
* Emits an event.
|
||
|
*
|
||
|
* @param ev Name of the event
|
||
|
* @param args Values to send to listeners of this event
|
||
|
*/
|
||
|
emit(ev, ...args) {
|
||
|
return super.emit(ev, ...args);
|
||
|
}
|
||
|
/**
|
||
|
* Emits a reserved event.
|
||
|
*
|
||
|
* This method is `protected`, so that only a class extending
|
||
|
* `StrictEventEmitter` can emit its own reserved events.
|
||
|
*
|
||
|
* @param ev Reserved event name
|
||
|
* @param args Arguments to emit along with the event
|
||
|
*/
|
||
|
emitReserved(ev, ...args) {
|
||
|
return super.emit(ev, ...args);
|
||
|
}
|
||
|
/**
|
||
|
* Emits an event.
|
||
|
*
|
||
|
* This method is `protected`, so that only a class extending
|
||
|
* `StrictEventEmitter` can get around the strict typing. This is useful for
|
||
|
* calling `emit.apply`, which can be called as `emitUntyped.apply`.
|
||
|
*
|
||
|
* @param ev Event name
|
||
|
* @param args Arguments to emit along with the event
|
||
|
*/
|
||
|
emitUntyped(ev, ...args) {
|
||
|
return super.emit(ev, ...args);
|
||
|
}
|
||
|
/**
|
||
|
* Returns the listeners listening to an event.
|
||
|
*
|
||
|
* @param event Event name
|
||
|
* @returns Array of listeners subscribed to `event`
|
||
|
*/
|
||
|
listeners(event) {
|
||
|
return super.listeners(event);
|
||
|
}
|
||
|
}
|
||
|
exports.StrictEventEmitter = StrictEventEmitter;
|