| "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; |