UNPKG

2.59 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.StrictEventEmitter = void 0;
4const events_1 = require("events");
5/**
6 * Strictly typed version of an `EventEmitter`. A `TypedEventEmitter` takes type
7 * parameters for mappings of event names to event data types, and strictly
8 * types method calls to the `EventEmitter` according to these event maps.
9 *
10 * @typeParam ListenEvents - `EventsMap` of user-defined events that can be
11 * listened to with `on` or `once`
12 * @typeParam EmitEvents - `EventsMap` of user-defined events that can be
13 * emitted with `emit`
14 * @typeParam ReservedEvents - `EventsMap` of reserved events, that can be
15 * emitted by socket.io with `emitReserved`, and can be listened to with
16 * `listen`.
17 */
18class StrictEventEmitter extends events_1.EventEmitter {
19 /**
20 * Adds the `listener` function as an event listener for `ev`.
21 *
22 * @param ev Name of the event
23 * @param listener Callback function
24 */
25 on(ev, listener) {
26 return super.on(ev, listener);
27 }
28 /**
29 * Adds a one-time `listener` function as an event listener for `ev`.
30 *
31 * @param ev Name of the event
32 * @param listener Callback function
33 */
34 once(ev, listener) {
35 return super.once(ev, listener);
36 }
37 /**
38 * Emits an event.
39 *
40 * @param ev Name of the event
41 * @param args Values to send to listeners of this event
42 */
43 emit(ev, ...args) {
44 return super.emit(ev, ...args);
45 }
46 /**
47 * Emits a reserved event.
48 *
49 * This method is `protected`, so that only a class extending
50 * `StrictEventEmitter` can emit its own reserved events.
51 *
52 * @param ev Reserved event name
53 * @param args Arguments to emit along with the event
54 */
55 emitReserved(ev, ...args) {
56 return super.emit(ev, ...args);
57 }
58 /**
59 * Emits an event.
60 *
61 * This method is `protected`, so that only a class extending
62 * `StrictEventEmitter` can get around the strict typing. This is useful for
63 * calling `emit.apply`, which can be called as `emitUntyped.apply`.
64 *
65 * @param ev Event name
66 * @param args Arguments to emit along with the event
67 */
68 emitUntyped(ev, ...args) {
69 return super.emit(ev, ...args);
70 }
71 /**
72 * Returns the listeners listening to an event.
73 *
74 * @param event Event name
75 * @returns Array of listeners subscribed to `event`
76 */
77 listeners(event) {
78 return super.listeners(event);
79 }
80}
81exports.StrictEventEmitter = StrictEventEmitter;