@types/node 18.19.18 → 18.19.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
node v18.19/README.md CHANGED
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node/v18.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Thu, 22 Feb 2024 18:35:22 GMT
11
+ * Last updated: Wed, 28 Feb 2024 17:35:47 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
node v18.19/events.d.ts CHANGED
@@ -95,7 +95,23 @@ declare module "events" {
95
95
  interface StaticEventEmitterOptions {
96
96
  signal?: AbortSignal | undefined;
97
97
  }
98
- interface EventEmitter extends NodeJS.EventEmitter {}
98
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
99
+ type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
100
+ type DefaultEventMap = [never];
101
+ type AnyRest = [...args: any[]];
102
+ type Args<K, T> = T extends DefaultEventMap ? AnyRest : (
103
+ K extends keyof T ? T[K] : never
104
+ );
105
+ type Key<K, T> = T extends DefaultEventMap ? string | symbol : K | keyof T;
106
+ type Key2<K, T> = T extends DefaultEventMap ? string | symbol : K & keyof T;
107
+ type Listener<K, T, F> = T extends DefaultEventMap ? F : (
108
+ K extends keyof T ? (
109
+ T[K] extends unknown[] ? (...args: T[K]) => void : never
110
+ )
111
+ : never
112
+ );
113
+ type Listener1<K, T> = Listener<K, T, (...args: any[]) => void>;
114
+ type Listener2<K, T> = Listener<K, T, Function>;
99
115
  /**
100
116
  * The `EventEmitter` class is defined and exposed by the `events` module:
101
117
  *
@@ -109,10 +125,10 @@ declare module "events" {
109
125
  * It supports the following option:
110
126
  * @since v0.1.26
111
127
  */
112
- class EventEmitter {
128
+ class EventEmitter<T extends EventMap<T> = DefaultEventMap> {
113
129
  constructor(options?: EventEmitterOptions);
114
130
 
115
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
131
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
116
132
 
117
133
  /**
118
134
  * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
@@ -466,13 +482,13 @@ declare module "events" {
466
482
  }
467
483
  global {
468
484
  namespace NodeJS {
469
- interface EventEmitter {
470
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
485
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> {
486
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
471
487
  /**
472
488
  * Alias for `emitter.on(eventName, listener)`.
473
489
  * @since v0.1.26
474
490
  */
475
- addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
491
+ addListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
476
492
  /**
477
493
  * Adds the `listener` function to the end of the listeners array for the
478
494
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -503,7 +519,7 @@ declare module "events" {
503
519
  * @param eventName The name of the event.
504
520
  * @param listener The callback function
505
521
  */
506
- on(eventName: string | symbol, listener: (...args: any[]) => void): this;
522
+ on<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
507
523
  /**
508
524
  * Adds a **one-time**`listener` function for the event named `eventName`. The
509
525
  * next time `eventName` is triggered, this listener is removed and then invoked.
@@ -532,7 +548,7 @@ declare module "events" {
532
548
  * @param eventName The name of the event.
533
549
  * @param listener The callback function
534
550
  */
535
- once(eventName: string | symbol, listener: (...args: any[]) => void): this;
551
+ once<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
536
552
  /**
537
553
  * Removes the specified `listener` from the listener array for the event named`eventName`.
538
554
  *
@@ -612,12 +628,12 @@ declare module "events" {
612
628
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
613
629
  * @since v0.1.26
614
630
  */
615
- removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
631
+ removeListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
616
632
  /**
617
633
  * Alias for `emitter.removeListener()`.
618
634
  * @since v10.0.0
619
635
  */
620
- off(eventName: string | symbol, listener: (...args: any[]) => void): this;
636
+ off<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
621
637
  /**
622
638
  * Removes all listeners, or those of the specified `eventName`.
623
639
  *
@@ -628,7 +644,7 @@ declare module "events" {
628
644
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
629
645
  * @since v0.1.26
630
646
  */
631
- removeAllListeners(event?: string | symbol): this;
647
+ removeAllListeners(event?: Key<unknown, T>): this;
632
648
  /**
633
649
  * By default `EventEmitter`s will print a warning if more than `10` listeners are
634
650
  * added for a particular event. This is a useful default that helps finding
@@ -657,7 +673,7 @@ declare module "events" {
657
673
  * ```
658
674
  * @since v0.1.26
659
675
  */
660
- listeners(eventName: string | symbol): Function[];
676
+ listeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
661
677
  /**
662
678
  * Returns a copy of the array of listeners for the event named `eventName`,
663
679
  * including any wrappers (such as those created by `.once()`).
@@ -687,7 +703,7 @@ declare module "events" {
687
703
  * ```
688
704
  * @since v9.4.0
689
705
  */
690
- rawListeners(eventName: string | symbol): Function[];
706
+ rawListeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
691
707
  /**
692
708
  * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
693
709
  * to each.
@@ -728,7 +744,7 @@ declare module "events" {
728
744
  * ```
729
745
  * @since v0.1.26
730
746
  */
731
- emit(eventName: string | symbol, ...args: any[]): boolean;
747
+ emit<K>(eventName: Key<K, T>, ...args: Args<K, T>): boolean;
732
748
  /**
733
749
  * Returns the number of listeners listening to the event named `eventName`.
734
750
  *
@@ -738,7 +754,7 @@ declare module "events" {
738
754
  * @param eventName The name of the event being listened for
739
755
  * @param listener The event handler function
740
756
  */
741
- listenerCount(eventName: string | symbol, listener?: Function): number;
757
+ listenerCount<K>(eventName: Key<K, T>, listener?: Listener2<K, T>): number;
742
758
  /**
743
759
  * Adds the `listener` function to the _beginning_ of the listeners array for the
744
760
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -756,7 +772,7 @@ declare module "events" {
756
772
  * @param eventName The name of the event.
757
773
  * @param listener The callback function
758
774
  */
759
- prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
775
+ prependListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
760
776
  /**
761
777
  * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this
762
778
  * listener is removed, and then invoked.
@@ -772,7 +788,7 @@ declare module "events" {
772
788
  * @param eventName The name of the event.
773
789
  * @param listener The callback function
774
790
  */
775
- prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
791
+ prependOnceListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
776
792
  /**
777
793
  * Returns an array listing the events for which the emitter has registered
778
794
  * listeners. The values in the array are strings or `Symbol`s.
@@ -791,7 +807,7 @@ declare module "events" {
791
807
  * ```
792
808
  * @since v6.0.0
793
809
  */
794
- eventNames(): Array<string | symbol>;
810
+ eventNames(): Array<(string | symbol) & Key2<unknown, T>>;
795
811
  }
796
812
  }
797
813
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "18.19.18",
3
+ "version": "18.19.20",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -229,6 +229,6 @@
229
229
  "dependencies": {
230
230
  "undici-types": "~5.26.4"
231
231
  },
232
- "typesPublisherContentHash": "2a8db29cd67964b31d9f4802164e1f8c35323fc6abfcdaaf8bb63f432735cef0",
232
+ "typesPublisherContentHash": "60b8cb6fa4fee8f0fbe82feb9500f5299ee3edb2d5b4a76daf4d7026561bf980",
233
233
  "typeScriptVersion": "4.6"
234
234
  }
@@ -95,7 +95,23 @@ declare module "events" {
95
95
  interface StaticEventEmitterOptions {
96
96
  signal?: AbortSignal | undefined;
97
97
  }
98
- interface EventEmitter extends NodeJS.EventEmitter {}
98
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
99
+ type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
100
+ type DefaultEventMap = [never];
101
+ type AnyRest = [...args: any[]];
102
+ type Args<K, T> = T extends DefaultEventMap ? AnyRest : (
103
+ K extends keyof T ? T[K] : never
104
+ );
105
+ type Key<K, T> = T extends DefaultEventMap ? string | symbol : K | keyof T;
106
+ type Key2<K, T> = T extends DefaultEventMap ? string | symbol : K & keyof T;
107
+ type Listener<K, T, F> = T extends DefaultEventMap ? F : (
108
+ K extends keyof T ? (
109
+ T[K] extends unknown[] ? (...args: T[K]) => void : never
110
+ )
111
+ : never
112
+ );
113
+ type Listener1<K, T> = Listener<K, T, (...args: any[]) => void>;
114
+ type Listener2<K, T> = Listener<K, T, Function>;
99
115
  /**
100
116
  * The `EventEmitter` class is defined and exposed by the `events` module:
101
117
  *
@@ -109,10 +125,10 @@ declare module "events" {
109
125
  * It supports the following option:
110
126
  * @since v0.1.26
111
127
  */
112
- class EventEmitter {
128
+ class EventEmitter<T extends EventMap<T> = DefaultEventMap> {
113
129
  constructor(options?: EventEmitterOptions);
114
130
 
115
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
131
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
116
132
 
117
133
  /**
118
134
  * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
@@ -466,13 +482,13 @@ declare module "events" {
466
482
  }
467
483
  global {
468
484
  namespace NodeJS {
469
- interface EventEmitter {
470
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
485
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> {
486
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
471
487
  /**
472
488
  * Alias for `emitter.on(eventName, listener)`.
473
489
  * @since v0.1.26
474
490
  */
475
- addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
491
+ addListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
476
492
  /**
477
493
  * Adds the `listener` function to the end of the listeners array for the
478
494
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -503,7 +519,7 @@ declare module "events" {
503
519
  * @param eventName The name of the event.
504
520
  * @param listener The callback function
505
521
  */
506
- on(eventName: string | symbol, listener: (...args: any[]) => void): this;
522
+ on<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
507
523
  /**
508
524
  * Adds a **one-time**`listener` function for the event named `eventName`. The
509
525
  * next time `eventName` is triggered, this listener is removed and then invoked.
@@ -532,7 +548,7 @@ declare module "events" {
532
548
  * @param eventName The name of the event.
533
549
  * @param listener The callback function
534
550
  */
535
- once(eventName: string | symbol, listener: (...args: any[]) => void): this;
551
+ once<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
536
552
  /**
537
553
  * Removes the specified `listener` from the listener array for the event named`eventName`.
538
554
  *
@@ -612,12 +628,12 @@ declare module "events" {
612
628
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
613
629
  * @since v0.1.26
614
630
  */
615
- removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
631
+ removeListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
616
632
  /**
617
633
  * Alias for `emitter.removeListener()`.
618
634
  * @since v10.0.0
619
635
  */
620
- off(eventName: string | symbol, listener: (...args: any[]) => void): this;
636
+ off<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
621
637
  /**
622
638
  * Removes all listeners, or those of the specified `eventName`.
623
639
  *
@@ -628,7 +644,7 @@ declare module "events" {
628
644
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
629
645
  * @since v0.1.26
630
646
  */
631
- removeAllListeners(event?: string | symbol): this;
647
+ removeAllListeners(event?: Key<unknown, T>): this;
632
648
  /**
633
649
  * By default `EventEmitter`s will print a warning if more than `10` listeners are
634
650
  * added for a particular event. This is a useful default that helps finding
@@ -657,7 +673,7 @@ declare module "events" {
657
673
  * ```
658
674
  * @since v0.1.26
659
675
  */
660
- listeners(eventName: string | symbol): Function[];
676
+ listeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
661
677
  /**
662
678
  * Returns a copy of the array of listeners for the event named `eventName`,
663
679
  * including any wrappers (such as those created by `.once()`).
@@ -687,7 +703,7 @@ declare module "events" {
687
703
  * ```
688
704
  * @since v9.4.0
689
705
  */
690
- rawListeners(eventName: string | symbol): Function[];
706
+ rawListeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
691
707
  /**
692
708
  * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
693
709
  * to each.
@@ -728,7 +744,7 @@ declare module "events" {
728
744
  * ```
729
745
  * @since v0.1.26
730
746
  */
731
- emit(eventName: string | symbol, ...args: any[]): boolean;
747
+ emit<K>(eventName: Key<K, T>, ...args: Args<K, T>): boolean;
732
748
  /**
733
749
  * Returns the number of listeners listening to the event named `eventName`.
734
750
  *
@@ -738,7 +754,7 @@ declare module "events" {
738
754
  * @param eventName The name of the event being listened for
739
755
  * @param listener The event handler function
740
756
  */
741
- listenerCount(eventName: string | symbol, listener?: Function): number;
757
+ listenerCount<K>(eventName: Key<K, T>, listener?: Listener2<K, T>): number;
742
758
  /**
743
759
  * Adds the `listener` function to the _beginning_ of the listeners array for the
744
760
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -756,7 +772,7 @@ declare module "events" {
756
772
  * @param eventName The name of the event.
757
773
  * @param listener The callback function
758
774
  */
759
- prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
775
+ prependListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
760
776
  /**
761
777
  * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this
762
778
  * listener is removed, and then invoked.
@@ -772,7 +788,7 @@ declare module "events" {
772
788
  * @param eventName The name of the event.
773
789
  * @param listener The callback function
774
790
  */
775
- prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
791
+ prependOnceListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
776
792
  /**
777
793
  * Returns an array listing the events for which the emitter has registered
778
794
  * listeners. The values in the array are strings or `Symbol`s.
@@ -791,7 +807,7 @@ declare module "events" {
791
807
  * ```
792
808
  * @since v6.0.0
793
809
  */
794
- eventNames(): Array<string | symbol>;
810
+ eventNames(): Array<(string | symbol) & Key2<unknown, T>>;
795
811
  }
796
812
  }
797
813
  }