UNPKG

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