@types/node 20.11.20 → 20.11.22

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.
Files changed (4) hide show
  1. node/README.md +1 -1
  2. node/events.d.ts +35 -18
  3. node/package.json +2 -2
  4. node/ts4.8/events.d.ts +35 -18
node/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.
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/events.d.ts CHANGED
@@ -92,7 +92,24 @@ declare module "events" {
92
92
  interface StaticEventEmitterOptions {
93
93
  signal?: AbortSignal | undefined;
94
94
  }
95
- interface EventEmitter extends NodeJS.EventEmitter {}
95
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
96
+ type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
97
+ type DefaultEventMap = [never];
98
+ type AnyRest = [...args: any[]];
99
+ type Args<K, T> = T extends DefaultEventMap ? AnyRest : (
100
+ K extends keyof T ? T[K] : never
101
+ );
102
+ type Key<K, T> = T extends DefaultEventMap ? string | symbol : K | keyof T;
103
+ type Key2<K, T> = T extends DefaultEventMap ? string | symbol : K & keyof T;
104
+ type Listener<K, T, F> = T extends DefaultEventMap ? F : (
105
+ K extends keyof T ? (
106
+ T[K] extends unknown[] ? (...args: T[K]) => void : never
107
+ )
108
+ : never
109
+ );
110
+ type Listener1<K, T> = Listener<K, T, (...args: any[]) => void>;
111
+ type Listener2<K, T> = Listener<K, T, Function>;
112
+
96
113
  /**
97
114
  * The `EventEmitter` class is defined and exposed by the `node:events` module:
98
115
  *
@@ -106,10 +123,10 @@ declare module "events" {
106
123
  * It supports the following option:
107
124
  * @since v0.1.26
108
125
  */
109
- class EventEmitter {
126
+ class EventEmitter<T extends EventMap<T> = DefaultEventMap> {
110
127
  constructor(options?: EventEmitterOptions);
111
128
 
112
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
129
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
113
130
 
114
131
  /**
115
132
  * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
@@ -536,13 +553,13 @@ declare module "events" {
536
553
  }
537
554
  global {
538
555
  namespace NodeJS {
539
- interface EventEmitter {
540
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
556
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> {
557
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
541
558
  /**
542
559
  * Alias for `emitter.on(eventName, listener)`.
543
560
  * @since v0.1.26
544
561
  */
545
- addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
562
+ addListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
546
563
  /**
547
564
  * Adds the `listener` function to the end of the listeners array for the
548
565
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -574,7 +591,7 @@ declare module "events" {
574
591
  * @param eventName The name of the event.
575
592
  * @param listener The callback function
576
593
  */
577
- on(eventName: string | symbol, listener: (...args: any[]) => void): this;
594
+ on<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
578
595
  /**
579
596
  * Adds a **one-time**`listener` function for the event named `eventName`. The
580
597
  * next time `eventName` is triggered, this listener is removed and then invoked.
@@ -604,7 +621,7 @@ declare module "events" {
604
621
  * @param eventName The name of the event.
605
622
  * @param listener The callback function
606
623
  */
607
- once(eventName: string | symbol, listener: (...args: any[]) => void): this;
624
+ once<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
608
625
  /**
609
626
  * Removes the specified `listener` from the listener array for the event named`eventName`.
610
627
  *
@@ -687,12 +704,12 @@ declare module "events" {
687
704
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
688
705
  * @since v0.1.26
689
706
  */
690
- removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
707
+ removeListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
691
708
  /**
692
709
  * Alias for `emitter.removeListener()`.
693
710
  * @since v10.0.0
694
711
  */
695
- off(eventName: string | symbol, listener: (...args: any[]) => void): this;
712
+ off<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
696
713
  /**
697
714
  * Removes all listeners, or those of the specified `eventName`.
698
715
  *
@@ -703,7 +720,7 @@ declare module "events" {
703
720
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
704
721
  * @since v0.1.26
705
722
  */
706
- removeAllListeners(event?: string | symbol): this;
723
+ removeAllListeners(event?: Key<unknown, T>): this;
707
724
  /**
708
725
  * By default `EventEmitter`s will print a warning if more than `10` listeners are
709
726
  * added for a particular event. This is a useful default that helps finding
@@ -732,7 +749,7 @@ declare module "events" {
732
749
  * ```
733
750
  * @since v0.1.26
734
751
  */
735
- listeners(eventName: string | symbol): Function[];
752
+ listeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
736
753
  /**
737
754
  * Returns a copy of the array of listeners for the event named `eventName`,
738
755
  * including any wrappers (such as those created by `.once()`).
@@ -763,7 +780,7 @@ declare module "events" {
763
780
  * ```
764
781
  * @since v9.4.0
765
782
  */
766
- rawListeners(eventName: string | symbol): Function[];
783
+ rawListeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
767
784
  /**
768
785
  * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
769
786
  * to each.
@@ -804,7 +821,7 @@ declare module "events" {
804
821
  * ```
805
822
  * @since v0.1.26
806
823
  */
807
- emit(eventName: string | symbol, ...args: any[]): boolean;
824
+ emit<K>(eventName: Key<K, T>, ...args: Args<K, T>): boolean;
808
825
  /**
809
826
  * Returns the number of listeners listening for the event named `eventName`.
810
827
  * If `listener` is provided, it will return how many times the listener is found
@@ -813,7 +830,7 @@ declare module "events" {
813
830
  * @param eventName The name of the event being listened for
814
831
  * @param listener The event handler function
815
832
  */
816
- listenerCount(eventName: string | symbol, listener?: Function): number;
833
+ listenerCount<K>(eventName: Key<K, T>, listener?: Listener2<K, T>): number;
817
834
  /**
818
835
  * Adds the `listener` function to the _beginning_ of the listeners array for the
819
836
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -831,7 +848,7 @@ declare module "events" {
831
848
  * @param eventName The name of the event.
832
849
  * @param listener The callback function
833
850
  */
834
- prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
851
+ prependListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
835
852
  /**
836
853
  * 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
837
854
  * listener is removed, and then invoked.
@@ -847,7 +864,7 @@ declare module "events" {
847
864
  * @param eventName The name of the event.
848
865
  * @param listener The callback function
849
866
  */
850
- prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
867
+ prependOnceListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
851
868
  /**
852
869
  * Returns an array listing the events for which the emitter has registered
853
870
  * listeners. The values in the array are strings or `Symbol`s.
@@ -867,7 +884,7 @@ declare module "events" {
867
884
  * ```
868
885
  * @since v6.0.0
869
886
  */
870
- eventNames(): Array<string | symbol>;
887
+ eventNames(): Array<(string | symbol) & Key2<unknown, T>>;
871
888
  }
872
889
  }
873
890
  }
node/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "20.11.20",
3
+ "version": "20.11.22",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -224,6 +224,6 @@
224
224
  "dependencies": {
225
225
  "undici-types": "~5.26.4"
226
226
  },
227
- "typesPublisherContentHash": "dfa64fc9edf277014e0891497b18331e7e1a1eba3aaa4a672ff11b1ba8eb5da1",
227
+ "typesPublisherContentHash": "22bca6c00c1ff5a6ee266c15857a090c7538d380d2b735f404ffa90cc67128dd",
228
228
  "typeScriptVersion": "4.6"
229
229
  }
node/ts4.8/events.d.ts CHANGED
@@ -92,7 +92,24 @@ declare module "events" {
92
92
  interface StaticEventEmitterOptions {
93
93
  signal?: AbortSignal | undefined;
94
94
  }
95
- interface EventEmitter extends NodeJS.EventEmitter {}
95
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
96
+ type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
97
+ type DefaultEventMap = [never];
98
+ type AnyRest = [...args: any[]];
99
+ type Args<K, T> = T extends DefaultEventMap ? AnyRest : (
100
+ K extends keyof T ? T[K] : never
101
+ );
102
+ type Key<K, T> = T extends DefaultEventMap ? string | symbol : K | keyof T;
103
+ type Key2<K, T> = T extends DefaultEventMap ? string | symbol : K & keyof T;
104
+ type Listener<K, T, F> = T extends DefaultEventMap ? F : (
105
+ K extends keyof T ? (
106
+ T[K] extends unknown[] ? (...args: T[K]) => void : never
107
+ )
108
+ : never
109
+ );
110
+ type Listener1<K, T> = Listener<K, T, (...args: any[]) => void>;
111
+ type Listener2<K, T> = Listener<K, T, Function>;
112
+
96
113
  /**
97
114
  * The `EventEmitter` class is defined and exposed by the `node:events` module:
98
115
  *
@@ -106,10 +123,10 @@ declare module "events" {
106
123
  * It supports the following option:
107
124
  * @since v0.1.26
108
125
  */
109
- class EventEmitter {
126
+ class EventEmitter<T extends EventMap<T> = DefaultEventMap> {
110
127
  constructor(options?: EventEmitterOptions);
111
128
 
112
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
129
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
113
130
 
114
131
  /**
115
132
  * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
@@ -536,13 +553,13 @@ declare module "events" {
536
553
  }
537
554
  global {
538
555
  namespace NodeJS {
539
- interface EventEmitter {
540
- [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
556
+ interface EventEmitter<T extends EventMap<T> = DefaultEventMap> {
557
+ [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
541
558
  /**
542
559
  * Alias for `emitter.on(eventName, listener)`.
543
560
  * @since v0.1.26
544
561
  */
545
- addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
562
+ addListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
546
563
  /**
547
564
  * Adds the `listener` function to the end of the listeners array for the
548
565
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -574,7 +591,7 @@ declare module "events" {
574
591
  * @param eventName The name of the event.
575
592
  * @param listener The callback function
576
593
  */
577
- on(eventName: string | symbol, listener: (...args: any[]) => void): this;
594
+ on<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
578
595
  /**
579
596
  * Adds a **one-time**`listener` function for the event named `eventName`. The
580
597
  * next time `eventName` is triggered, this listener is removed and then invoked.
@@ -604,7 +621,7 @@ declare module "events" {
604
621
  * @param eventName The name of the event.
605
622
  * @param listener The callback function
606
623
  */
607
- once(eventName: string | symbol, listener: (...args: any[]) => void): this;
624
+ once<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
608
625
  /**
609
626
  * Removes the specified `listener` from the listener array for the event named`eventName`.
610
627
  *
@@ -687,12 +704,12 @@ declare module "events" {
687
704
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
688
705
  * @since v0.1.26
689
706
  */
690
- removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
707
+ removeListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
691
708
  /**
692
709
  * Alias for `emitter.removeListener()`.
693
710
  * @since v10.0.0
694
711
  */
695
- off(eventName: string | symbol, listener: (...args: any[]) => void): this;
712
+ off<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
696
713
  /**
697
714
  * Removes all listeners, or those of the specified `eventName`.
698
715
  *
@@ -703,7 +720,7 @@ declare module "events" {
703
720
  * Returns a reference to the `EventEmitter`, so that calls can be chained.
704
721
  * @since v0.1.26
705
722
  */
706
- removeAllListeners(event?: string | symbol): this;
723
+ removeAllListeners(event?: Key<unknown, T>): this;
707
724
  /**
708
725
  * By default `EventEmitter`s will print a warning if more than `10` listeners are
709
726
  * added for a particular event. This is a useful default that helps finding
@@ -732,7 +749,7 @@ declare module "events" {
732
749
  * ```
733
750
  * @since v0.1.26
734
751
  */
735
- listeners(eventName: string | symbol): Function[];
752
+ listeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
736
753
  /**
737
754
  * Returns a copy of the array of listeners for the event named `eventName`,
738
755
  * including any wrappers (such as those created by `.once()`).
@@ -763,7 +780,7 @@ declare module "events" {
763
780
  * ```
764
781
  * @since v9.4.0
765
782
  */
766
- rawListeners(eventName: string | symbol): Function[];
783
+ rawListeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
767
784
  /**
768
785
  * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
769
786
  * to each.
@@ -804,7 +821,7 @@ declare module "events" {
804
821
  * ```
805
822
  * @since v0.1.26
806
823
  */
807
- emit(eventName: string | symbol, ...args: any[]): boolean;
824
+ emit<K>(eventName: Key<K, T>, ...args: Args<K, T>): boolean;
808
825
  /**
809
826
  * Returns the number of listeners listening for the event named `eventName`.
810
827
  * If `listener` is provided, it will return how many times the listener is found
@@ -813,7 +830,7 @@ declare module "events" {
813
830
  * @param eventName The name of the event being listened for
814
831
  * @param listener The event handler function
815
832
  */
816
- listenerCount(eventName: string | symbol, listener?: Function): number;
833
+ listenerCount<K>(eventName: Key<K, T>, listener?: Listener2<K, T>): number;
817
834
  /**
818
835
  * Adds the `listener` function to the _beginning_ of the listeners array for the
819
836
  * event named `eventName`. No checks are made to see if the `listener` has
@@ -831,7 +848,7 @@ declare module "events" {
831
848
  * @param eventName The name of the event.
832
849
  * @param listener The callback function
833
850
  */
834
- prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
851
+ prependListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
835
852
  /**
836
853
  * 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
837
854
  * listener is removed, and then invoked.
@@ -847,7 +864,7 @@ declare module "events" {
847
864
  * @param eventName The name of the event.
848
865
  * @param listener The callback function
849
866
  */
850
- prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
867
+ prependOnceListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
851
868
  /**
852
869
  * Returns an array listing the events for which the emitter has registered
853
870
  * listeners. The values in the array are strings or `Symbol`s.
@@ -867,7 +884,7 @@ declare module "events" {
867
884
  * ```
868
885
  * @since v6.0.0
869
886
  */
870
- eventNames(): Array<string | symbol>;
887
+ eventNames(): Array<(string | symbol) & Key2<unknown, T>>;
871
888
  }
872
889
  }
873
890
  }