UNPKG

3.48 kBTypeScriptView Raw
1declare module 'events' {
2 interface EventEmitterOptions {
3 /**
4 * Enables automatic capturing of promise rejection.
5 */
6 captureRejections?: boolean | undefined;
7 }
8
9 interface NodeEventTarget {
10 once(event: string | symbol, listener: (...args: any[]) => void): this;
11 }
12
13 interface DOMEventTarget {
14 addEventListener(event: string, listener: (...args: any[]) => void, opts?: { once: boolean }): any;
15 }
16
17 interface EventEmitter extends NodeJS.EventEmitter {}
18 class EventEmitter {
19 constructor(options?: EventEmitterOptions);
20
21 static once(emitter: NodeEventTarget, event: string | symbol): Promise<any[]>;
22 static once(emitter: DOMEventTarget, event: string): Promise<any[]>;
23 static on(emitter: NodeJS.EventEmitter, event: string): AsyncIterableIterator<any>;
24
25 /** @deprecated since v4.0.0 */
26 static listenerCount(emitter: NodeJS.EventEmitter, event: string | symbol): number;
27
28 /**
29 * This symbol shall be used to install a listener for only monitoring `'error'`
30 * events. Listeners installed using this symbol are called before the regular
31 * `'error'` listeners are called.
32 *
33 * Installing a listener using this symbol does not change the behavior once an
34 * `'error'` event is emitted, therefore the process will still crash if no
35 * regular `'error'` listener is installed.
36 */
37 static readonly errorMonitor: unique symbol;
38 static readonly captureRejectionSymbol: unique symbol;
39
40 /**
41 * Sets or gets the default captureRejection value for all emitters.
42 */
43 // TODO: These should be described using static getter/setter pairs:
44 static captureRejections: boolean;
45 static defaultMaxListeners: number;
46 }
47
48 import internal = require('events');
49 namespace EventEmitter {
50 // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4
51 export { internal as EventEmitter };
52 }
53
54 global {
55 namespace NodeJS {
56 interface EventEmitter {
57 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
58 on(event: string | symbol, listener: (...args: any[]) => void): this;
59 once(event: string | symbol, listener: (...args: any[]) => void): this;
60 removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
61 off(event: string | symbol, listener: (...args: any[]) => void): this;
62 removeAllListeners(event?: string | symbol): this;
63 setMaxListeners(n: number): this;
64 getMaxListeners(): number;
65 listeners(event: string | symbol): Function[];
66 rawListeners(event: string | symbol): Function[];
67 emit(event: string | symbol, ...args: any[]): boolean;
68 listenerCount(event: string | symbol): number;
69 // Added in Node 6...
70 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
71 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
72 eventNames(): Array<string | symbol>;
73 }
74 }
75 }
76
77 export = EventEmitter;
78}
79declare module 'node:events' {
80 import events = require('events');
81 export = events;
82}