@types/node 20.10.8 → 20.11.1

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/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: Tue, 09 Jan 2024 15:35:40 GMT
11
+ * Last updated: Mon, 15 Jan 2024 04:07:53 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
node/buffer.d.ts CHANGED
@@ -564,7 +564,7 @@ declare module "buffer" {
564
564
  *
565
565
  * The `Buffer` module pre-allocates an internal `Buffer` instance of
566
566
  * size `Buffer.poolSize` that is used as a pool for the fast allocation of new`Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`,
567
- * and `Buffer.concat()` only when `size` is less than or equal to`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two).
567
+ * and `Buffer.concat()` only when `size` is less than`Buffer.poolSize >>> 1` (floor of `Buffer.poolSize` divided by two).
568
568
  *
569
569
  * Use of this pre-allocated internal memory pool is a key difference between
570
570
  * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
node/crypto.d.ts CHANGED
@@ -638,9 +638,10 @@ declare module "crypto" {
638
638
  export(options?: KeyExportOptions<"der">): Buffer;
639
639
  export(options?: JwkKeyExportOptions): JsonWebKey;
640
640
  /**
641
- * Returns `true` or `false` depending on whether the keys have exactly the same type, value, and parameters.
642
- * This method is not [constant time](https://en.wikipedia.org/wiki/Timing_attack).
643
- * @since v16.15.0
641
+ * Returns `true` or `false` depending on whether the keys have exactly the same
642
+ * type, value, and parameters. This method is not [constant time](https://en.wikipedia.org/wiki/Timing_attack).
643
+ * @since v17.7.0, v16.15.0
644
+ * @param otherKeyObject A `KeyObject` with which to compare `keyObject`.
644
645
  */
645
646
  equals(otherKeyObject: KeyObject): boolean;
646
647
  /**
node/dgram.d.ts CHANGED
@@ -228,13 +228,13 @@ declare module "dgram" {
228
228
  */
229
229
  getSendBufferSize(): number;
230
230
  /**
231
- * @since v18.8.0,v16.19.0
232
- * @return the number of bytes queued for sending.
231
+ * @since v18.8.0, v16.19.0
232
+ * @return Number of bytes queued for sending.
233
233
  */
234
234
  getSendQueueSize(): number;
235
235
  /**
236
- * @since v18.8.0,v16.19.0
237
- * @return the number of send requests currently in the queue awaiting to be processed.
236
+ * @since v18.8.0, v16.19.0
237
+ * @return Number of send requests currently in the queue awaiting to be processed.
238
238
  */
239
239
  getSendQueueCount(): number;
240
240
  /**
node/http.d.ts CHANGED
@@ -9,12 +9,12 @@
9
9
  *
10
10
  * HTTP message headers are represented by an object like this:
11
11
  *
12
- * ```js
13
- * { 'content-length': '123',
14
- * 'content-type': 'text/plain',
15
- * 'connection': 'keep-alive',
16
- * 'host': 'example.com',
17
- * 'accept': '*' }
12
+ * ```json
13
+ * { "content-length": "123",
14
+ * "content-type": "text/plain",
15
+ * "connection": "keep-alive",
16
+ * "host": "example.com",
17
+ * "accept": "*" }
18
18
  * ```
19
19
  *
20
20
  * Keys are lowercased. Values are not modified.
@@ -1814,7 +1814,6 @@ declare module "http" {
1814
1814
  *
1815
1815
  * It is not necessary to use this method before passing headers to an HTTP request
1816
1816
  * or response. The HTTP module will automatically validate such headers.
1817
- * Examples:
1818
1817
  *
1819
1818
  * Example:
1820
1819
  *
node/module.d.ts CHANGED
@@ -276,6 +276,20 @@ declare module "module" {
276
276
  }
277
277
  global {
278
278
  interface ImportMeta {
279
+ /**
280
+ * The directory name of the current module. This is the same as the `path.dirname()` of the `import.meta.filename`.
281
+ * **Caveat:** only present on `file:` modules.
282
+ */
283
+ dirname?: string;
284
+ /**
285
+ * The full absolute path and filename of the current module, with symlinks resolved.
286
+ * This is the same as the `url.fileURLToPath()` of the `import.meta.url`.
287
+ * **Caveat:** only local modules support this property. Modules not using the `file:` protocol will not provide it.
288
+ */
289
+ filename?: string;
290
+ /**
291
+ * The absolute `file:` URL of the module.
292
+ */
279
293
  url: string;
280
294
  /**
281
295
  * Provides a module-relative resolution function scoped to each module, returning
node/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "20.10.8",
3
+ "version": "20.11.1",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -224,7 +224,7 @@
224
224
  "dependencies": {
225
225
  "undici-types": "~5.26.4"
226
226
  },
227
- "typesPublisherContentHash": "81a6ffec7851a9499bdc79517eb318d5db43383eae84c65f2509a4319d302d31",
227
+ "typesPublisherContentHash": "72bb627c28cb083a2dfb425e00616f0537b9722bf7784a8bebbe37aad9154842",
228
228
  "typeScriptVersion": "4.6",
229
229
  "nonNpm": true
230
230
  }
node/perf_hooks.d.ts CHANGED
@@ -314,13 +314,15 @@ declare module "perf_hooks" {
314
314
  * * name: 'test',
315
315
  * * entryType: 'mark',
316
316
  * * startTime: 81.465639,
317
- * * duration: 0
317
+ * * duration: 0,
318
+ * * detail: null
318
319
  * * },
319
320
  * * PerformanceEntry {
320
321
  * * name: 'meow',
321
322
  * * entryType: 'mark',
322
323
  * * startTime: 81.860064,
323
- * * duration: 0
324
+ * * duration: 0,
325
+ * * detail: null
324
326
  * * }
325
327
  * * ]
326
328
  *
@@ -355,7 +357,8 @@ declare module "perf_hooks" {
355
357
  * * name: 'meow',
356
358
  * * entryType: 'mark',
357
359
  * * startTime: 98.545991,
358
- * * duration: 0
360
+ * * duration: 0,
361
+ * * detail: null
359
362
  * * }
360
363
  * * ]
361
364
  *
@@ -368,7 +371,8 @@ declare module "perf_hooks" {
368
371
  * * name: 'test',
369
372
  * * entryType: 'mark',
370
373
  * * startTime: 63.518931,
371
- * * duration: 0
374
+ * * duration: 0,
375
+ * * detail: null
372
376
  * * }
373
377
  * * ]
374
378
  *
@@ -404,13 +408,15 @@ declare module "perf_hooks" {
404
408
  * * name: 'test',
405
409
  * * entryType: 'mark',
406
410
  * * startTime: 55.897834,
407
- * * duration: 0
411
+ * * duration: 0,
412
+ * * detail: null
408
413
  * * },
409
414
  * * PerformanceEntry {
410
415
  * * name: 'meow',
411
416
  * * entryType: 'mark',
412
417
  * * startTime: 56.350146,
413
- * * duration: 0
418
+ * * duration: 0,
419
+ * * detail: null
414
420
  * * }
415
421
  * * ]
416
422
  *
node/process.d.ts CHANGED
@@ -903,9 +903,14 @@ declare module "process" {
903
903
  */
904
904
  readonly sourceMapsEnabled: boolean;
905
905
  /**
906
- * This function enables or disables the Source Map v3 support for stack traces.
907
- * It provides same features as launching Node.js process with commandline options --enable-source-maps.
908
- * @since v16.6.0
906
+ * This function enables or disables the [Source Map v3](https://sourcemaps.info/spec.html) support for
907
+ * stack traces.
908
+ *
909
+ * It provides same features as launching Node.js process with commandline options`--enable-source-maps`.
910
+ *
911
+ * Only source maps in JavaScript files that are loaded after source maps has been
912
+ * enabled will be parsed and loaded.
913
+ * @since v16.6.0, v14.18.0
909
914
  * @experimental
910
915
  */
911
916
  setSourceMapsEnabled(value: boolean): void;
@@ -1311,6 +1316,23 @@ declare module "process" {
1311
1316
  */
1312
1317
  uptime(): number;
1313
1318
  hrtime: HRTime;
1319
+ /**
1320
+ * If the Node.js process was spawned with an IPC channel, the process.channel property is a reference to the IPC channel.
1321
+ * If no IPC channel exists, this property is undefined.
1322
+ * @since v7.1.0
1323
+ */
1324
+ channel?: {
1325
+ /**
1326
+ * This method makes the IPC channel keep the event loop of the process running if .unref() has been called before.
1327
+ * @since v7.1.0
1328
+ */
1329
+ ref(): void;
1330
+ /**
1331
+ * This method makes the IPC channel not keep the event loop of the process running, and lets it finish even while the channel is open.
1332
+ * @since v7.1.0
1333
+ */
1334
+ unref(): void;
1335
+ };
1314
1336
  /**
1315
1337
  * If Node.js is spawned with an IPC channel, the `process.send()` method can be
1316
1338
  * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object.
node/querystring.d.ts CHANGED
@@ -74,10 +74,10 @@ declare module "querystring" {
74
74
  *
75
75
  * For example, the query string `'foo=bar&#x26;abc=xyz&#x26;abc=123'` is parsed into:
76
76
  *
77
- * ```js
77
+ * ```json
78
78
  * {
79
- * foo: 'bar',
80
- * abc: ['xyz', '123']
79
+ * "foo": "bar",
80
+ * "abc": ["xyz", "123"]
81
81
  * }
82
82
  * ```
83
83
  *
node/test.d.ts CHANGED
@@ -82,6 +82,11 @@ declare module "node:test" {
82
82
  import { Readable } from "node:stream";
83
83
  import { AsyncResource } from "node:async_hooks";
84
84
  /**
85
+ * **Note:**`shard` is used to horizontally parallelize test running across
86
+ * machines or processes, ideal for large-scale executions across varied
87
+ * environments. It's incompatible with `watch` mode, tailored for rapid
88
+ * code iteration by automatically rerunning tests on file changes.
89
+ *
85
90
  * ```js
86
91
  * import { tap } from 'node:test/reporters';
87
92
  * import { run } from 'node:test';
@@ -1013,6 +1018,8 @@ declare module "node:test" {
1013
1018
  * control the behavior of timers, such as `setInterval` and `setTimeout`,
1014
1019
  * without actually waiting for the specified time intervals.
1015
1020
  *
1021
+ * MockTimers is also able to mock the `Date` object.
1022
+ *
1016
1023
  * The `MockTracker` provides a top-level `timers` export
1017
1024
  * which is a `MockTimers` instance.
1018
1025
  * @since v20.4.0
@@ -1025,21 +1032,38 @@ declare module "node:test" {
1025
1032
  * **Note:** When you enable mocking for a specific timer, its associated
1026
1033
  * clear function will also be implicitly mocked.
1027
1034
  *
1028
- * Example usage:
1035
+ * **Note:** Mocking `Date` will affect the behavior of the mocked timers
1036
+ * as they use the same internal clock.
1037
+ *
1038
+ * Example usage without setting initial time:
1029
1039
  *
1030
1040
  * ```js
1031
1041
  * import { mock } from 'node:test';
1032
- * mock.timers.enable(['setInterval']);
1042
+ * mock.timers.enable({ apis: ['setInterval'] });
1033
1043
  * ```
1034
1044
  *
1035
1045
  * The above example enables mocking for the `setInterval` timer and
1036
1046
  * implicitly mocks the `clearInterval` function. Only the `setInterval`and `clearInterval` functions from `node:timers`,`node:timers/promises`, and`globalThis` will be mocked.
1037
1047
  *
1048
+ * Example usage with initial time set
1049
+ *
1050
+ * ```js
1051
+ * import { mock } from 'node:test';
1052
+ * mock.timers.enable({ apis: ['Date'], now: 1000 });
1053
+ * ```
1054
+ *
1055
+ * Example usage with initial Date object as time set
1056
+ *
1057
+ * ```js
1058
+ * import { mock } from 'node:test';
1059
+ * mock.timers.enable({ apis: ['Date'], now: new Date() });
1060
+ * ```
1061
+ *
1038
1062
  * Alternatively, if you call `mock.timers.enable()` without any parameters:
1039
1063
  *
1040
1064
  * All timers (`'setInterval'`, `'clearInterval'`, `'setTimeout'`, and `'clearTimeout'`)
1041
1065
  * will be mocked. The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout`functions from `node:timers`, `node:timers/promises`,
1042
- * and `globalThis` will be mocked.
1066
+ * and `globalThis` will be mocked. As well as the global `Date` object.
1043
1067
  * @since v20.4.0
1044
1068
  */
1045
1069
  enable(timers?: Timer[]): void;
@@ -1076,7 +1100,7 @@ declare module "node:test" {
1076
1100
  * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1077
1101
  * const fn = context.mock.fn();
1078
1102
  *
1079
- * context.mock.timers.enable(['setTimeout']);
1103
+ * context.mock.timers.enable({ apis: ['setTimeout'] });
1080
1104
  *
1081
1105
  * setTimeout(fn, 9999);
1082
1106
  *
@@ -1097,7 +1121,7 @@ declare module "node:test" {
1097
1121
  *
1098
1122
  * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1099
1123
  * const fn = context.mock.fn();
1100
- * context.mock.timers.enable(['setTimeout']);
1124
+ * context.mock.timers.enable({ apis: ['setTimeout'] });
1101
1125
  * const nineSecs = 9000;
1102
1126
  * setTimeout(fn, nineSecs);
1103
1127
  *
@@ -1109,11 +1133,35 @@ declare module "node:test" {
1109
1133
  * assert.strictEqual(fn.mock.callCount(), 1);
1110
1134
  * });
1111
1135
  * ```
1136
+ *
1137
+ * Advancing time using `.tick` will also advance the time for any `Date` object
1138
+ * created after the mock was enabled (if `Date` was also set to be mocked).
1139
+ *
1140
+ * ```js
1141
+ * import assert from 'node:assert';
1142
+ * import { test } from 'node:test';
1143
+ *
1144
+ * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1145
+ * const fn = context.mock.fn();
1146
+ *
1147
+ * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
1148
+ * setTimeout(fn, 9999);
1149
+ *
1150
+ * assert.strictEqual(fn.mock.callCount(), 0);
1151
+ * assert.strictEqual(Date.now(), 0);
1152
+ *
1153
+ * // Advance in time
1154
+ * context.mock.timers.tick(9999);
1155
+ * assert.strictEqual(fn.mock.callCount(), 1);
1156
+ * assert.strictEqual(Date.now(), 9999);
1157
+ * });
1158
+ * ```
1112
1159
  * @since v20.4.0
1113
1160
  */
1114
1161
  tick(milliseconds: number): void;
1115
1162
  /**
1116
- * Triggers all pending mocked timers immediately.
1163
+ * Triggers all pending mocked timers immediately. If the `Date` object is also
1164
+ * mocked, it will also advance the `Date` object to the furthest timer's time.
1117
1165
  *
1118
1166
  * The example below triggers all pending timers immediately,
1119
1167
  * causing them to execute without any delay.
@@ -1123,7 +1171,7 @@ declare module "node:test" {
1123
1171
  * import { test } from 'node:test';
1124
1172
  *
1125
1173
  * test('runAll functions following the given order', (context) => {
1126
- * context.mock.timers.enable(['setTimeout']);
1174
+ * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
1127
1175
  * const results = [];
1128
1176
  * setTimeout(() => results.push(1), 9999);
1129
1177
  *
@@ -1135,8 +1183,9 @@ declare module "node:test" {
1135
1183
  * assert.deepStrictEqual(results, []);
1136
1184
  *
1137
1185
  * context.mock.timers.runAll();
1138
- *
1139
1186
  * assert.deepStrictEqual(results, [3, 2, 1]);
1187
+ * // The Date object is also advanced to the furthest timer's time
1188
+ * assert.strictEqual(Date.now(), 9999);
1140
1189
  * });
1141
1190
  * ```
1142
1191
  *
@@ -1343,7 +1392,7 @@ interface TestDequeue extends TestLocationInfo {
1343
1392
  * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/test/reporters.js)
1344
1393
  */
1345
1394
  declare module "node:test/reporters" {
1346
- import { Transform } from "node:stream";
1395
+ import { Transform, TransformOptions } from "node:stream";
1347
1396
 
1348
1397
  type TestEvent =
1349
1398
  | { type: "test:diagnostic"; data: DiagnosticData }
@@ -1378,5 +1427,8 @@ declare module "node:test/reporters" {
1378
1427
  * The `junit` reporter outputs test results in a jUnit XML format
1379
1428
  */
1380
1429
  function junit(source: TestEventGenerator): AsyncGenerator<string, void>;
1381
- export { dot, junit, Spec as spec, tap, TestEvent };
1430
+ class Lcov extends Transform {
1431
+ constructor(opts?: TransformOptions);
1432
+ }
1433
+ export { dot, junit, Lcov as lcov, Spec as spec, tap, TestEvent };
1382
1434
  }
node/ts4.8/buffer.d.ts CHANGED
@@ -564,7 +564,7 @@ declare module "buffer" {
564
564
  *
565
565
  * The `Buffer` module pre-allocates an internal `Buffer` instance of
566
566
  * size `Buffer.poolSize` that is used as a pool for the fast allocation of new`Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`,
567
- * and `Buffer.concat()` only when `size` is less than or equal to`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two).
567
+ * and `Buffer.concat()` only when `size` is less than`Buffer.poolSize >>> 1` (floor of `Buffer.poolSize` divided by two).
568
568
  *
569
569
  * Use of this pre-allocated internal memory pool is a key difference between
570
570
  * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
node/ts4.8/crypto.d.ts CHANGED
@@ -638,9 +638,10 @@ declare module "crypto" {
638
638
  export(options?: KeyExportOptions<"der">): Buffer;
639
639
  export(options?: JwkKeyExportOptions): JsonWebKey;
640
640
  /**
641
- * Returns `true` or `false` depending on whether the keys have exactly the same type, value, and parameters.
642
- * This method is not [constant time](https://en.wikipedia.org/wiki/Timing_attack).
643
- * @since v16.15.0
641
+ * Returns `true` or `false` depending on whether the keys have exactly the same
642
+ * type, value, and parameters. This method is not [constant time](https://en.wikipedia.org/wiki/Timing_attack).
643
+ * @since v17.7.0, v16.15.0
644
+ * @param otherKeyObject A `KeyObject` with which to compare `keyObject`.
644
645
  */
645
646
  equals(otherKeyObject: KeyObject): boolean;
646
647
  /**
node/ts4.8/dgram.d.ts CHANGED
@@ -228,13 +228,13 @@ declare module "dgram" {
228
228
  */
229
229
  getSendBufferSize(): number;
230
230
  /**
231
- * @since v18.8.0,v16.19.0
232
- * @return the number of bytes queued for sending.
231
+ * @since v18.8.0, v16.19.0
232
+ * @return Number of bytes queued for sending.
233
233
  */
234
234
  getSendQueueSize(): number;
235
235
  /**
236
- * @since v18.8.0,v16.19.0
237
- * @return the number of send requests currently in the queue awaiting to be processed.
236
+ * @since v18.8.0, v16.19.0
237
+ * @return Number of send requests currently in the queue awaiting to be processed.
238
238
  */
239
239
  getSendQueueCount(): number;
240
240
  /**
node/ts4.8/http.d.ts CHANGED
@@ -9,12 +9,12 @@
9
9
  *
10
10
  * HTTP message headers are represented by an object like this:
11
11
  *
12
- * ```js
13
- * { 'content-length': '123',
14
- * 'content-type': 'text/plain',
15
- * 'connection': 'keep-alive',
16
- * 'host': 'example.com',
17
- * 'accept': '*' }
12
+ * ```json
13
+ * { "content-length": "123",
14
+ * "content-type": "text/plain",
15
+ * "connection": "keep-alive",
16
+ * "host": "example.com",
17
+ * "accept": "*" }
18
18
  * ```
19
19
  *
20
20
  * Keys are lowercased. Values are not modified.
@@ -1814,7 +1814,6 @@ declare module "http" {
1814
1814
  *
1815
1815
  * It is not necessary to use this method before passing headers to an HTTP request
1816
1816
  * or response. The HTTP module will automatically validate such headers.
1817
- * Examples:
1818
1817
  *
1819
1818
  * Example:
1820
1819
  *
node/ts4.8/module.d.ts CHANGED
@@ -276,6 +276,20 @@ declare module "module" {
276
276
  }
277
277
  global {
278
278
  interface ImportMeta {
279
+ /**
280
+ * The directory name of the current module. This is the same as the `path.dirname()` of the `import.meta.filename`.
281
+ * **Caveat:** only present on `file:` modules.
282
+ */
283
+ dirname?: string;
284
+ /**
285
+ * The full absolute path and filename of the current module, with symlinks resolved.
286
+ * This is the same as the `url.fileURLToPath()` of the `import.meta.url`.
287
+ * **Caveat:** only local modules support this property. Modules not using the `file:` protocol will not provide it.
288
+ */
289
+ filename?: string;
290
+ /**
291
+ * The absolute `file:` URL of the module.
292
+ */
279
293
  url: string;
280
294
  /**
281
295
  * Provides a module-relative resolution function scoped to each module, returning
@@ -31,7 +31,7 @@
31
31
  */
32
32
  declare module "perf_hooks" {
33
33
  import { AsyncResource } from "node:async_hooks";
34
- type EntryType = "node" | "mark" | "measure" | "gc" | "function" | "http2" | "http";
34
+ type EntryType = "node" | "mark" | "measure" | "gc" | "function" | "http2" | "http" | "dns" | "net";
35
35
  interface NodeGCPerformanceDetail {
36
36
  /**
37
37
  * When `performanceEntry.entryType` is equal to 'gc', `the performance.kind` property identifies
@@ -314,13 +314,15 @@ declare module "perf_hooks" {
314
314
  * * name: 'test',
315
315
  * * entryType: 'mark',
316
316
  * * startTime: 81.465639,
317
- * * duration: 0
317
+ * * duration: 0,
318
+ * * detail: null
318
319
  * * },
319
320
  * * PerformanceEntry {
320
321
  * * name: 'meow',
321
322
  * * entryType: 'mark',
322
323
  * * startTime: 81.860064,
323
- * * duration: 0
324
+ * * duration: 0,
325
+ * * detail: null
324
326
  * * }
325
327
  * * ]
326
328
  *
@@ -355,7 +357,8 @@ declare module "perf_hooks" {
355
357
  * * name: 'meow',
356
358
  * * entryType: 'mark',
357
359
  * * startTime: 98.545991,
358
- * * duration: 0
360
+ * * duration: 0,
361
+ * * detail: null
359
362
  * * }
360
363
  * * ]
361
364
  *
@@ -368,7 +371,8 @@ declare module "perf_hooks" {
368
371
  * * name: 'test',
369
372
  * * entryType: 'mark',
370
373
  * * startTime: 63.518931,
371
- * * duration: 0
374
+ * * duration: 0,
375
+ * * detail: null
372
376
  * * }
373
377
  * * ]
374
378
  *
@@ -404,13 +408,15 @@ declare module "perf_hooks" {
404
408
  * * name: 'test',
405
409
  * * entryType: 'mark',
406
410
  * * startTime: 55.897834,
407
- * * duration: 0
411
+ * * duration: 0,
412
+ * * detail: null
408
413
  * * },
409
414
  * * PerformanceEntry {
410
415
  * * name: 'meow',
411
416
  * * entryType: 'mark',
412
417
  * * startTime: 56.350146,
413
- * * duration: 0
418
+ * * duration: 0,
419
+ * * detail: null
414
420
  * * }
415
421
  * * ]
416
422
  *
node/ts4.8/process.d.ts CHANGED
@@ -903,9 +903,14 @@ declare module "process" {
903
903
  */
904
904
  readonly sourceMapsEnabled: boolean;
905
905
  /**
906
- * This function enables or disables the Source Map v3 support for stack traces.
907
- * It provides same features as launching Node.js process with commandline options --enable-source-maps.
908
- * @since v16.6.0
906
+ * This function enables or disables the [Source Map v3](https://sourcemaps.info/spec.html) support for
907
+ * stack traces.
908
+ *
909
+ * It provides same features as launching Node.js process with commandline options`--enable-source-maps`.
910
+ *
911
+ * Only source maps in JavaScript files that are loaded after source maps has been
912
+ * enabled will be parsed and loaded.
913
+ * @since v16.6.0, v14.18.0
909
914
  * @experimental
910
915
  */
911
916
  setSourceMapsEnabled(value: boolean): void;
@@ -1311,6 +1316,23 @@ declare module "process" {
1311
1316
  */
1312
1317
  uptime(): number;
1313
1318
  hrtime: HRTime;
1319
+ /**
1320
+ * If the Node.js process was spawned with an IPC channel, the process.channel property is a reference to the IPC channel.
1321
+ * If no IPC channel exists, this property is undefined.
1322
+ * @since v7.1.0
1323
+ */
1324
+ channel?: {
1325
+ /**
1326
+ * This method makes the IPC channel keep the event loop of the process running if .unref() has been called before.
1327
+ * @since v7.1.0
1328
+ */
1329
+ ref(): void;
1330
+ /**
1331
+ * This method makes the IPC channel not keep the event loop of the process running, and lets it finish even while the channel is open.
1332
+ * @since v7.1.0
1333
+ */
1334
+ unref(): void;
1335
+ };
1314
1336
  /**
1315
1337
  * If Node.js is spawned with an IPC channel, the `process.send()` method can be
1316
1338
  * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object.
@@ -74,10 +74,10 @@ declare module "querystring" {
74
74
  *
75
75
  * For example, the query string `'foo=bar&#x26;abc=xyz&#x26;abc=123'` is parsed into:
76
76
  *
77
- * ```js
77
+ * ```json
78
78
  * {
79
- * foo: 'bar',
80
- * abc: ['xyz', '123']
79
+ * "foo": "bar",
80
+ * "abc": ["xyz", "123"]
81
81
  * }
82
82
  * ```
83
83
  *
node/ts4.8/test.d.ts CHANGED
@@ -82,6 +82,11 @@ declare module "node:test" {
82
82
  import { Readable } from "node:stream";
83
83
  import { AsyncResource } from "node:async_hooks";
84
84
  /**
85
+ * **Note:**`shard` is used to horizontally parallelize test running across
86
+ * machines or processes, ideal for large-scale executions across varied
87
+ * environments. It's incompatible with `watch` mode, tailored for rapid
88
+ * code iteration by automatically rerunning tests on file changes.
89
+ *
85
90
  * ```js
86
91
  * import { tap } from 'node:test/reporters';
87
92
  * import { run } from 'node:test';
@@ -1013,6 +1018,8 @@ declare module "node:test" {
1013
1018
  * control the behavior of timers, such as `setInterval` and `setTimeout`,
1014
1019
  * without actually waiting for the specified time intervals.
1015
1020
  *
1021
+ * MockTimers is also able to mock the `Date` object.
1022
+ *
1016
1023
  * The `MockTracker` provides a top-level `timers` export
1017
1024
  * which is a `MockTimers` instance.
1018
1025
  * @since v20.4.0
@@ -1025,21 +1032,38 @@ declare module "node:test" {
1025
1032
  * **Note:** When you enable mocking for a specific timer, its associated
1026
1033
  * clear function will also be implicitly mocked.
1027
1034
  *
1028
- * Example usage:
1035
+ * **Note:** Mocking `Date` will affect the behavior of the mocked timers
1036
+ * as they use the same internal clock.
1037
+ *
1038
+ * Example usage without setting initial time:
1029
1039
  *
1030
1040
  * ```js
1031
1041
  * import { mock } from 'node:test';
1032
- * mock.timers.enable(['setInterval']);
1042
+ * mock.timers.enable({ apis: ['setInterval'] });
1033
1043
  * ```
1034
1044
  *
1035
1045
  * The above example enables mocking for the `setInterval` timer and
1036
1046
  * implicitly mocks the `clearInterval` function. Only the `setInterval`and `clearInterval` functions from `node:timers`,`node:timers/promises`, and`globalThis` will be mocked.
1037
1047
  *
1048
+ * Example usage with initial time set
1049
+ *
1050
+ * ```js
1051
+ * import { mock } from 'node:test';
1052
+ * mock.timers.enable({ apis: ['Date'], now: 1000 });
1053
+ * ```
1054
+ *
1055
+ * Example usage with initial Date object as time set
1056
+ *
1057
+ * ```js
1058
+ * import { mock } from 'node:test';
1059
+ * mock.timers.enable({ apis: ['Date'], now: new Date() });
1060
+ * ```
1061
+ *
1038
1062
  * Alternatively, if you call `mock.timers.enable()` without any parameters:
1039
1063
  *
1040
1064
  * All timers (`'setInterval'`, `'clearInterval'`, `'setTimeout'`, and `'clearTimeout'`)
1041
1065
  * will be mocked. The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout`functions from `node:timers`, `node:timers/promises`,
1042
- * and `globalThis` will be mocked.
1066
+ * and `globalThis` will be mocked. As well as the global `Date` object.
1043
1067
  * @since v20.4.0
1044
1068
  */
1045
1069
  enable(timers?: Timer[]): void;
@@ -1076,7 +1100,7 @@ declare module "node:test" {
1076
1100
  * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1077
1101
  * const fn = context.mock.fn();
1078
1102
  *
1079
- * context.mock.timers.enable(['setTimeout']);
1103
+ * context.mock.timers.enable({ apis: ['setTimeout'] });
1080
1104
  *
1081
1105
  * setTimeout(fn, 9999);
1082
1106
  *
@@ -1097,7 +1121,7 @@ declare module "node:test" {
1097
1121
  *
1098
1122
  * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1099
1123
  * const fn = context.mock.fn();
1100
- * context.mock.timers.enable(['setTimeout']);
1124
+ * context.mock.timers.enable({ apis: ['setTimeout'] });
1101
1125
  * const nineSecs = 9000;
1102
1126
  * setTimeout(fn, nineSecs);
1103
1127
  *
@@ -1109,11 +1133,35 @@ declare module "node:test" {
1109
1133
  * assert.strictEqual(fn.mock.callCount(), 1);
1110
1134
  * });
1111
1135
  * ```
1136
+ *
1137
+ * Advancing time using `.tick` will also advance the time for any `Date` object
1138
+ * created after the mock was enabled (if `Date` was also set to be mocked).
1139
+ *
1140
+ * ```js
1141
+ * import assert from 'node:assert';
1142
+ * import { test } from 'node:test';
1143
+ *
1144
+ * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
1145
+ * const fn = context.mock.fn();
1146
+ *
1147
+ * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
1148
+ * setTimeout(fn, 9999);
1149
+ *
1150
+ * assert.strictEqual(fn.mock.callCount(), 0);
1151
+ * assert.strictEqual(Date.now(), 0);
1152
+ *
1153
+ * // Advance in time
1154
+ * context.mock.timers.tick(9999);
1155
+ * assert.strictEqual(fn.mock.callCount(), 1);
1156
+ * assert.strictEqual(Date.now(), 9999);
1157
+ * });
1158
+ * ```
1112
1159
  * @since v20.4.0
1113
1160
  */
1114
1161
  tick(milliseconds: number): void;
1115
1162
  /**
1116
- * Triggers all pending mocked timers immediately.
1163
+ * Triggers all pending mocked timers immediately. If the `Date` object is also
1164
+ * mocked, it will also advance the `Date` object to the furthest timer's time.
1117
1165
  *
1118
1166
  * The example below triggers all pending timers immediately,
1119
1167
  * causing them to execute without any delay.
@@ -1123,7 +1171,7 @@ declare module "node:test" {
1123
1171
  * import { test } from 'node:test';
1124
1172
  *
1125
1173
  * test('runAll functions following the given order', (context) => {
1126
- * context.mock.timers.enable(['setTimeout']);
1174
+ * context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
1127
1175
  * const results = [];
1128
1176
  * setTimeout(() => results.push(1), 9999);
1129
1177
  *
@@ -1135,8 +1183,9 @@ declare module "node:test" {
1135
1183
  * assert.deepStrictEqual(results, []);
1136
1184
  *
1137
1185
  * context.mock.timers.runAll();
1138
- *
1139
1186
  * assert.deepStrictEqual(results, [3, 2, 1]);
1187
+ * // The Date object is also advanced to the furthest timer's time
1188
+ * assert.strictEqual(Date.now(), 9999);
1140
1189
  * });
1141
1190
  * ```
1142
1191
  *
@@ -1343,7 +1392,7 @@ interface TestDequeue extends TestLocationInfo {
1343
1392
  * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/test/reporters.js)
1344
1393
  */
1345
1394
  declare module "node:test/reporters" {
1346
- import { Transform } from "node:stream";
1395
+ import { Transform, TransformOptions } from "node:stream";
1347
1396
 
1348
1397
  type TestEvent =
1349
1398
  | { type: "test:diagnostic"; data: DiagnosticData }
@@ -1378,5 +1427,8 @@ declare module "node:test/reporters" {
1378
1427
  * The `junit` reporter outputs test results in a jUnit XML format
1379
1428
  */
1380
1429
  function junit(source: TestEventGenerator): AsyncGenerator<string, void>;
1381
- export { dot, junit, Spec as spec, tap, TestEvent };
1430
+ class Lcov extends Transform {
1431
+ constructor(opts?: TransformOptions);
1432
+ }
1433
+ export { dot, junit, Lcov as lcov, Spec as spec, tap, TestEvent };
1382
1434
  }
node/ts4.8/wasi.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  /**
2
- * The WASI API provides an implementation of the [WebAssembly System Interface](https://wasi.dev/) specification. WASI gives sandboxed WebAssembly applications access to the
3
- * underlying operating system via a collection of POSIX-like functions.
2
+ * **The `node:wasi` module does not currently provide the**
3
+ * **comprehensive file system security properties provided by some WASI runtimes.**
4
+ * **Full support for secure file system sandboxing may or may not be implemented in**
5
+ * **future. In the mean time, do not rely on it to run untrusted code.**
6
+ *
7
+ * The WASI API provides an implementation of the [WebAssembly System Interface](https://wasi.dev/) specification. WASI gives WebAssembly applications access to the underlying
8
+ * operating system via a collection of POSIX-like functions.
4
9
  *
5
10
  * ```js
6
11
  * import { readFile } from 'node:fs/promises';
@@ -12,7 +17,7 @@
12
17
  * args: argv,
13
18
  * env,
14
19
  * preopens: {
15
- * '/sandbox': '/some/real/path/that/wasm/can/access',
20
+ * '/local': '/some/real/path/that/wasm/can/access',
16
21
  * },
17
22
  * });
18
23
  *
@@ -117,8 +122,7 @@ declare module "wasi" {
117
122
  /**
118
123
  * The `WASI` class provides the WASI system call API and additional convenience
119
124
  * methods for working with WASI-based applications. Each `WASI` instance
120
- * represents a distinct sandbox environment. For security purposes, each `WASI`instance must have its command-line arguments, environment variables, and
121
- * sandbox directory structure configured explicitly.
125
+ * represents a distinct environment.
122
126
  * @since v13.3.0, v12.16.0
123
127
  */
124
128
  class WASI {
node/wasi.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  /**
2
- * The WASI API provides an implementation of the [WebAssembly System Interface](https://wasi.dev/) specification. WASI gives sandboxed WebAssembly applications access to the
3
- * underlying operating system via a collection of POSIX-like functions.
2
+ * **The `node:wasi` module does not currently provide the**
3
+ * **comprehensive file system security properties provided by some WASI runtimes.**
4
+ * **Full support for secure file system sandboxing may or may not be implemented in**
5
+ * **future. In the mean time, do not rely on it to run untrusted code.**
6
+ *
7
+ * The WASI API provides an implementation of the [WebAssembly System Interface](https://wasi.dev/) specification. WASI gives WebAssembly applications access to the underlying
8
+ * operating system via a collection of POSIX-like functions.
4
9
  *
5
10
  * ```js
6
11
  * import { readFile } from 'node:fs/promises';
@@ -12,7 +17,7 @@
12
17
  * args: argv,
13
18
  * env,
14
19
  * preopens: {
15
- * '/sandbox': '/some/real/path/that/wasm/can/access',
20
+ * '/local': '/some/real/path/that/wasm/can/access',
16
21
  * },
17
22
  * });
18
23
  *
@@ -117,8 +122,7 @@ declare module "wasi" {
117
122
  /**
118
123
  * The `WASI` class provides the WASI system call API and additional convenience
119
124
  * methods for working with WASI-based applications. Each `WASI` instance
120
- * represents a distinct sandbox environment. For security purposes, each `WASI`instance must have its command-line arguments, environment variables, and
121
- * sandbox directory structure configured explicitly.
125
+ * represents a distinct environment.
122
126
  * @since v13.3.0, v12.16.0
123
127
  */
124
128
  class WASI {