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