@types/node 22.10.10 → 22.13.0

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: Thu, 23 Jan 2025 18:02:27 GMT
11
+ * Last updated: Fri, 31 Jan 2025 20:02:26 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
node/assert.d.ts CHANGED
@@ -956,6 +956,59 @@ declare module "assert" {
956
956
  * @since v13.6.0, v12.16.0
957
957
  */
958
958
  function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void;
959
+ /**
960
+ * `assert.partialDeepStrictEqual()` Asserts the equivalence between the `actual` and `expected` parameters through a
961
+ * deep comparison, ensuring that all properties in the `expected` parameter are
962
+ * present in the `actual` parameter with equivalent values, not allowing type coercion.
963
+ * The main difference with `assert.deepStrictEqual()` is that `assert.partialDeepStrictEqual()` does not require
964
+ * all properties in the `actual` parameter to be present in the `expected` parameter.
965
+ * This method should always pass the same test cases as `assert.deepStrictEqual()`, behaving as a super set of it.
966
+ *
967
+ * ```js
968
+ * import assert from 'node:assert';
969
+ *
970
+ * assert.partialDeepStrictEqual({ a: 1, b: 2 }, { a: 1, b: 2 });
971
+ * // OK
972
+ *
973
+ * assert.partialDeepStrictEqual({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } });
974
+ * // OK
975
+ *
976
+ * assert.partialDeepStrictEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 });
977
+ * // OK
978
+ *
979
+ * assert.partialDeepStrictEqual(new Set(['value1', 'value2']), new Set(['value1', 'value2']));
980
+ * // OK
981
+ *
982
+ * assert.partialDeepStrictEqual(new Map([['key1', 'value1']]), new Map([['key1', 'value1']]));
983
+ * // OK
984
+ *
985
+ * assert.partialDeepStrictEqual(new Uint8Array([1, 2, 3]), new Uint8Array([1, 2, 3]));
986
+ * // OK
987
+ *
988
+ * assert.partialDeepStrictEqual(/abc/, /abc/);
989
+ * // OK
990
+ *
991
+ * assert.partialDeepStrictEqual([{ a: 5 }, { b: 5 }], [{ a: 5 }]);
992
+ * // OK
993
+ *
994
+ * assert.partialDeepStrictEqual(new Set([{ a: 1 }, { b: 1 }]), new Set([{ a: 1 }]));
995
+ * // OK
996
+ *
997
+ * assert.partialDeepStrictEqual(new Date(0), new Date(0));
998
+ * // OK
999
+ *
1000
+ * assert.partialDeepStrictEqual({ a: 1 }, { a: 1, b: 2 });
1001
+ * // AssertionError
1002
+ *
1003
+ * assert.partialDeepStrictEqual({ a: 1, b: '2' }, { a: 1, b: 2 });
1004
+ * // AssertionError
1005
+ *
1006
+ * assert.partialDeepStrictEqual({ a: { b: 2 } }, { a: { b: '2' } });
1007
+ * // AssertionError
1008
+ * ```
1009
+ * @since v22.13.0
1010
+ */
1011
+ function partialDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void;
959
1012
  /**
960
1013
  * In strict assertion mode, non-strict methods behave like their corresponding strict methods. For example,
961
1014
  * {@link deepEqual} will behave like {@link deepStrictEqual}.
node/buffer.buffer.d.ts CHANGED
@@ -107,7 +107,8 @@ declare module "buffer" {
107
107
  *
108
108
  * If `totalLength` is provided, it is coerced to an unsigned integer. If the
109
109
  * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is
110
- * truncated to `totalLength`.
110
+ * truncated to `totalLength`. If the combined length of the `Buffer`s in `list` is
111
+ * less than `totalLength`, the remaining space is filled with zeros.
111
112
  *
112
113
  * ```js
113
114
  * import { Buffer } from 'node:buffer';
node/dgram.d.ts CHANGED
@@ -26,7 +26,7 @@
26
26
  * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/dgram.js)
27
27
  */
28
28
  declare module "dgram" {
29
- import { AddressInfo } from "node:net";
29
+ import { AddressInfo, BlockList } from "node:net";
30
30
  import * as dns from "node:dns";
31
31
  import { Abortable, EventEmitter } from "node:events";
32
32
  interface RemoteInfo {
@@ -45,6 +45,7 @@ declare module "dgram" {
45
45
  interface SocketOptions extends Abortable {
46
46
  type: SocketType;
47
47
  reuseAddr?: boolean | undefined;
48
+ reusePort?: boolean | undefined;
48
49
  /**
49
50
  * @default false
50
51
  */
@@ -58,6 +59,8 @@ declare module "dgram" {
58
59
  callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
59
60
  ) => void)
60
61
  | undefined;
62
+ receiveBlockList?: BlockList | undefined;
63
+ sendBlockList?: BlockList | undefined;
61
64
  }
62
65
  /**
63
66
  * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram
node/fs.d.ts CHANGED
@@ -3795,9 +3795,6 @@ declare module "fs" {
3795
3795
  flush?: boolean | undefined;
3796
3796
  }
3797
3797
  /**
3798
- * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream
3799
- * returned by this method has a default `highWaterMark` of 64 KiB.
3800
- *
3801
3798
  * `options` can include `start` and `end` values to read a range of bytes from
3802
3799
  * the file instead of the entire file. Both `start` and `end` are inclusive and
3803
3800
  * start counting at 0, allowed values are in the
node/http.d.ts CHANGED
@@ -223,6 +223,7 @@ declare module "http" {
223
223
  path?: string | null | undefined;
224
224
  port?: number | string | null | undefined;
225
225
  protocol?: string | null | undefined;
226
+ setDefaultHeaders?: boolean | undefined;
226
227
  setHost?: boolean | undefined;
227
228
  signal?: AbortSignal | undefined;
228
229
  socketPath?: string | undefined;
node/module.d.ts CHANGED
@@ -168,6 +168,80 @@ declare module "module" {
168
168
  options?: RegisterOptions<Data>,
169
169
  ): void;
170
170
  function register<Data = any>(specifier: string | URL, options?: RegisterOptions<Data>): void;
171
+ interface StripTypeScriptTypesOptions {
172
+ /**
173
+ * Possible values are:
174
+ * * `'strip'` Only strip type annotations without performing the transformation of TypeScript features.
175
+ * * `'transform'` Strip type annotations and transform TypeScript features to JavaScript.
176
+ * @default 'strip'
177
+ */
178
+ mode?: "strip" | "transform" | undefined;
179
+ /**
180
+ * Only when `mode` is `'transform'`, if `true`, a source map
181
+ * will be generated for the transformed code.
182
+ * @default false
183
+ */
184
+ sourceMap?: boolean | undefined;
185
+ /**
186
+ * Specifies the source url used in the source map.
187
+ */
188
+ sourceUrl?: string | undefined;
189
+ }
190
+ /**
191
+ * `module.stripTypeScriptTypes()` removes type annotations from TypeScript code. It
192
+ * can be used to strip type annotations from TypeScript code before running it
193
+ * with `vm.runInContext()` or `vm.compileFunction()`.
194
+ * By default, it will throw an error if the code contains TypeScript features
195
+ * that require transformation such as `Enums`,
196
+ * see [type-stripping](https://nodejs.org/docs/latest-v22.x/api/typescript.md#type-stripping) for more information.
197
+ * When mode is `'transform'`, it also transforms TypeScript features to JavaScript,
198
+ * see [transform TypeScript features](https://nodejs.org/docs/latest-v22.x/api/typescript.md#typescript-features) for more information.
199
+ * When mode is `'strip'`, source maps are not generated, because locations are preserved.
200
+ * If `sourceMap` is provided, when mode is `'strip'`, an error will be thrown.
201
+ *
202
+ * _WARNING_: The output of this function should not be considered stable across Node.js versions,
203
+ * due to changes in the TypeScript parser.
204
+ *
205
+ * ```js
206
+ * import { stripTypeScriptTypes } from 'node:module';
207
+ * const code = 'const a: number = 1;';
208
+ * const strippedCode = stripTypeScriptTypes(code);
209
+ * console.log(strippedCode);
210
+ * // Prints: const a = 1;
211
+ * ```
212
+ *
213
+ * If `sourceUrl` is provided, it will be used appended as a comment at the end of the output:
214
+ *
215
+ * ```js
216
+ * import { stripTypeScriptTypes } from 'node:module';
217
+ * const code = 'const a: number = 1;';
218
+ * const strippedCode = stripTypeScriptTypes(code, { mode: 'strip', sourceUrl: 'source.ts' });
219
+ * console.log(strippedCode);
220
+ * // Prints: const a = 1\n\n//# sourceURL=source.ts;
221
+ * ```
222
+ *
223
+ * When `mode` is `'transform'`, the code is transformed to JavaScript:
224
+ *
225
+ * ```js
226
+ * import { stripTypeScriptTypes } from 'node:module';
227
+ * const code = `
228
+ * namespace MathUtil {
229
+ * export const add = (a: number, b: number) => a + b;
230
+ * }`;
231
+ * const strippedCode = stripTypeScriptTypes(code, { mode: 'transform', sourceMap: true });
232
+ * console.log(strippedCode);
233
+ * // Prints:
234
+ * // var MathUtil;
235
+ * // (function(MathUtil) {
236
+ * // MathUtil.add = (a, b)=>a + b;
237
+ * // })(MathUtil || (MathUtil = {}));
238
+ * // # sourceMappingURL=data:application/json;base64, ...
239
+ * ```
240
+ * @since v22.13.0
241
+ * @param code The code to strip type annotations from.
242
+ * @returns The code with type annotations stripped.
243
+ */
244
+ function stripTypeScriptTypes(code: string, options?: StripTypeScriptTypesOptions): string;
171
245
  /* eslint-enable @definitelytyped/no-unnecessary-generics */
172
246
  /**
173
247
  * The `module.syncBuiltinESMExports()` method updates all the live bindings for
node/net.d.ts CHANGED
@@ -65,6 +65,7 @@ declare module "net" {
65
65
  * @since v18.13.0
66
66
  */
67
67
  autoSelectFamilyAttemptTimeout?: number | undefined;
68
+ blockList?: BlockList | undefined;
68
69
  }
69
70
  interface IpcSocketConnectOpts {
70
71
  path: string;
@@ -486,17 +487,18 @@ declare module "net" {
486
487
  prependOnceListener(event: "timeout", listener: () => void): this;
487
488
  }
488
489
  interface ListenOptions extends Abortable {
489
- port?: number | undefined;
490
- host?: string | undefined;
491
490
  backlog?: number | undefined;
492
- path?: string | undefined;
493
491
  exclusive?: boolean | undefined;
494
- readableAll?: boolean | undefined;
495
- writableAll?: boolean | undefined;
492
+ host?: string | undefined;
496
493
  /**
497
494
  * @default false
498
495
  */
499
496
  ipv6Only?: boolean | undefined;
497
+ reusePort?: boolean | undefined;
498
+ path?: string | undefined;
499
+ port?: number | undefined;
500
+ readableAll?: boolean | undefined;
501
+ writableAll?: boolean | undefined;
500
502
  }
501
503
  interface ServerOpts {
502
504
  /**
@@ -534,6 +536,15 @@ declare module "net" {
534
536
  * @since v18.17.0, v20.1.0
535
537
  */
536
538
  highWaterMark?: number | undefined;
539
+ /**
540
+ * `blockList` can be used for disabling inbound
541
+ * access to specific IP addresses, IP ranges, or IP subnets. This does not
542
+ * work if the server is behind a reverse proxy, NAT, etc. because the address
543
+ * checked against the block list is the address of the proxy, or the one
544
+ * specified by the NAT.
545
+ * @since v22.13.0
546
+ */
547
+ blockList?: BlockList | undefined;
537
548
  }
538
549
  interface DropArgument {
539
550
  localAddress?: string;
@@ -785,6 +796,12 @@ declare module "net" {
785
796
  * @since v15.0.0, v14.18.0
786
797
  */
787
798
  rules: readonly string[];
799
+ /**
800
+ * Returns `true` if the `value` is a `net.BlockList`.
801
+ * @since v22.13.0
802
+ * @param value Any JS value
803
+ */
804
+ static isBlockList(value: unknown): value is BlockList;
788
805
  }
789
806
  interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
790
807
  timeout?: number | undefined;
@@ -997,6 +1014,14 @@ declare module "net" {
997
1014
  * @since v15.14.0, v14.18.0
998
1015
  */
999
1016
  readonly flowlabel: number;
1017
+ /**
1018
+ * @since v22.13.0
1019
+ * @param input An input string containing an IP address and optional port,
1020
+ * e.g. `123.1.2.3:1234` or `[1::1]:1234`.
1021
+ * @returns Returns a `SocketAddress` if parsing was successful.
1022
+ * Otherwise returns `undefined`.
1023
+ */
1024
+ static parse(input: string): SocketAddress | undefined;
1000
1025
  }
1001
1026
  }
1002
1027
  declare module "node:net" {
node/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "22.10.10",
3
+ "version": "22.13.0",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -215,6 +215,6 @@
215
215
  "undici-types": "~6.20.0"
216
216
  },
217
217
  "peerDependencies": {},
218
- "typesPublisherContentHash": "473650c3cc1206a93e36487b99568f65b48fd9822931e9690fa0c31e93106b22",
218
+ "typesPublisherContentHash": "cd9e00a55264d2d3f1c6f5656282dac0031f1492460f59d56baa12fabccf6631",
219
219
  "typeScriptVersion": "5.0"
220
220
  }
node/perf_hooks.d.ts CHANGED
@@ -594,6 +594,11 @@ declare module "perf_hooks" {
594
594
  buffered?: boolean | undefined;
595
595
  },
596
596
  ): void;
597
+ /**
598
+ * @since v16.0.0
599
+ * @returns Current list of entries stored in the performance observer, emptying it out.
600
+ */
601
+ takeRecords(): PerformanceEntry[];
597
602
  }
598
603
  /**
599
604
  * Provides detailed network timing data regarding the loading of an application's resources.
node/process.d.ts CHANGED
@@ -186,7 +186,10 @@ declare module "process" {
186
186
  readonly inspector: boolean;
187
187
  /**
188
188
  * A boolean value that is `true` if the current Node.js build includes support for IPv6.
189
+ *
190
+ * Since all Node.js builds have IPv6 support, this value is always `true`.
189
191
  * @since v0.5.3
192
+ * @deprecated This property is always true, and any checks based on it are redundant.
190
193
  */
191
194
  readonly ipv6: boolean;
192
195
  /**
@@ -202,17 +205,29 @@ declare module "process" {
202
205
  readonly tls: boolean;
203
206
  /**
204
207
  * A boolean value that is `true` if the current Node.js build includes support for ALPN in TLS.
208
+ *
209
+ * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional ALPN support.
210
+ * This value is therefore identical to that of `process.features.tls`.
205
211
  * @since v4.8.0
212
+ * @deprecated Use `process.features.tls` instead.
206
213
  */
207
214
  readonly tls_alpn: boolean;
208
215
  /**
209
216
  * A boolean value that is `true` if the current Node.js build includes support for OCSP in TLS.
217
+ *
218
+ * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional OCSP support.
219
+ * This value is therefore identical to that of `process.features.tls`.
210
220
  * @since v0.11.13
221
+ * @deprecated Use `process.features.tls` instead.
211
222
  */
212
223
  readonly tls_ocsp: boolean;
213
224
  /**
214
225
  * A boolean value that is `true` if the current Node.js build includes support for SNI in TLS.
226
+ *
227
+ * In Node.js 11.0.0 and later versions, the OpenSSL dependencies feature unconditional SNI support.
228
+ * This value is therefore identical to that of `process.features.tls`.
215
229
  * @since v0.5.3
230
+ * @deprecated Use `process.features.tls` instead.
216
231
  */
217
232
  readonly tls_sni: boolean;
218
233
  /**
@@ -223,8 +238,10 @@ declare module "process" {
223
238
  readonly typescript: "strip" | "transform" | false;
224
239
  /**
225
240
  * A boolean value that is `true` if the current Node.js build includes support for libuv.
226
- * Since it's currently not possible to build Node.js without libuv, this value is always `true`.
241
+ *
242
+ * Since it's not possible to build Node.js without libuv, this value is always `true`.
227
243
  * @since v0.5.3
244
+ * @deprecated This property is always true, and any checks based on it are redundant.
228
245
  */
229
246
  readonly uv: boolean;
230
247
  }
@@ -1676,7 +1693,7 @@ declare module "process" {
1676
1693
  */
1677
1694
  nextTick(callback: Function, ...args: any[]): void;
1678
1695
  /**
1679
- * This API is available through the [--experimental-permission](https://nodejs.org/api/cli.html#--experimental-permission) flag.
1696
+ * This API is available through the [--permission](https://nodejs.org/api/cli.html#--permission) flag.
1680
1697
  *
1681
1698
  * `process.permission` is an object whose methods are used to manage permissions for the current process.
1682
1699
  * Additional documentation is available in the [Permission Model](https://nodejs.org/api/permissions.html#permission-model).
node/sea.d.ts CHANGED
@@ -149,5 +149,5 @@ declare module "node:sea" {
149
149
  * writes to the returned array buffer is likely to result in a crash.
150
150
  * @since v20.12.0
151
151
  */
152
- function getRawAsset(key: AssetKey): string | ArrayBuffer;
152
+ function getRawAsset(key: AssetKey): ArrayBuffer;
153
153
  }
node/sqlite.d.ts CHANGED
@@ -43,6 +43,7 @@
43
43
  * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/sqlite.js)
44
44
  */
45
45
  declare module "node:sqlite" {
46
+ type SupportedValueType = null | number | bigint | string | Uint8Array;
46
47
  interface DatabaseSyncOptions {
47
48
  /**
48
49
  * If `true`, the database is opened by the constructor. When
@@ -70,6 +71,76 @@ declare module "node:sqlite" {
70
71
  * @default false
71
72
  */
72
73
  enableDoubleQuotedStringLiterals?: boolean | undefined;
74
+ /**
75
+ * If `true`, the database is opened in read-only mode.
76
+ * If the database does not exist, opening it will fail.
77
+ * @since v22.12.0
78
+ * @default false
79
+ */
80
+ readOnly?: boolean | undefined;
81
+ /**
82
+ * If `true`, the `loadExtension` SQL function
83
+ * and the `loadExtension()` method are enabled.
84
+ * You can call `enableLoadExtension(false)` later to disable this feature.
85
+ * @since v22.13.0
86
+ * @default false
87
+ */
88
+ allowExtension?: boolean | undefined;
89
+ }
90
+ interface CreateSessionOptions {
91
+ /**
92
+ * A specific table to track changes for. By default, changes to all tables are tracked.
93
+ * @since v22.12.0
94
+ */
95
+ table?: string | undefined;
96
+ /**
97
+ * Name of the database to track. This is useful when multiple databases have been added using
98
+ * [`ATTACH DATABASE`](https://www.sqlite.org/lang_attach.html).
99
+ * @since v22.12.0
100
+ * @default 'main'
101
+ */
102
+ db?: string | undefined;
103
+ }
104
+ interface ApplyChangesetOptions {
105
+ /**
106
+ * Skip changes that, when targeted table name is supplied to this function, return a truthy value.
107
+ * By default, all changes are attempted.
108
+ * @since v22.12.0
109
+ */
110
+ filter?: ((tableName: string) => boolean) | undefined;
111
+ /**
112
+ * Determines how conflicts are handled. **Default**: `SQLITE_CHANGESET_ABORT`.
113
+ * @since v22.12.0
114
+ */
115
+ onConflict?: number | undefined;
116
+ }
117
+ interface FunctionOptions {
118
+ /**
119
+ * If `true`, the [`SQLITE_DETERMINISTIC`](https://www.sqlite.org/c3ref/c_deterministic.html) flag is
120
+ * set on the created function.
121
+ * @default false
122
+ */
123
+ deterministic?: boolean | undefined;
124
+ /**
125
+ * If `true`, the [`SQLITE_DIRECTONLY`](https://www.sqlite.org/c3ref/c_directonly.html) flag is set on
126
+ * the created function.
127
+ * @default false
128
+ */
129
+ directOnly?: boolean | undefined;
130
+ /**
131
+ * If `true`, integer arguments to `function`
132
+ * are converted to `BigInt`s. If `false`, integer arguments are passed as
133
+ * JavaScript numbers.
134
+ * @default false
135
+ */
136
+ useBigIntArguments?: boolean | undefined;
137
+ /**
138
+ * If `true`, `function` can accept a variable number of
139
+ * arguments. If `false`, `function` must be invoked with exactly
140
+ * `function.length` arguments.
141
+ * @default false
142
+ */
143
+ varargs?: boolean | undefined;
73
144
  }
74
145
  /**
75
146
  * This class represents a single [connection](https://www.sqlite.org/c3ref/sqlite3.html) to a SQLite database. All APIs
@@ -92,6 +163,22 @@ declare module "node:sqlite" {
92
163
  * @since v22.5.0
93
164
  */
94
165
  close(): void;
166
+ /**
167
+ * Loads a shared library into the database connection. This method is a wrapper
168
+ * around [`sqlite3_load_extension()`](https://www.sqlite.org/c3ref/load_extension.html). It is required to enable the
169
+ * `allowExtension` option when constructing the `DatabaseSync` instance.
170
+ * @since v22.13.0
171
+ * @param path The path to the shared library to load.
172
+ */
173
+ loadExtension(path: string): void;
174
+ /**
175
+ * Enables or disables the `loadExtension` SQL function, and the `loadExtension()`
176
+ * method. When `allowExtension` is `false` when constructing, you cannot enable
177
+ * loading extensions for security reasons.
178
+ * @since v22.13.0
179
+ * @param allow Whether to allow loading extensions.
180
+ */
181
+ enableLoadExtension(allow: boolean): void;
95
182
  /**
96
183
  * This method allows one or more SQL statements to be executed without returning
97
184
  * any results. This method is useful when executing SQL statements read from a
@@ -100,6 +187,21 @@ declare module "node:sqlite" {
100
187
  * @param sql A SQL string to execute.
101
188
  */
102
189
  exec(sql: string): void;
190
+ /**
191
+ * This method is used to create SQLite user-defined functions. This method is a
192
+ * wrapper around [`sqlite3_create_function_v2()`](https://www.sqlite.org/c3ref/create_function.html).
193
+ * @since v22.13.0
194
+ * @param name The name of the SQLite function to create.
195
+ * @param options Optional configuration settings for the function.
196
+ * @param func The JavaScript function to call when the SQLite
197
+ * function is invoked.
198
+ */
199
+ function(
200
+ name: string,
201
+ options: FunctionOptions,
202
+ func: (...args: SupportedValueType[]) => SupportedValueType,
203
+ ): void;
204
+ function(name: string, func: (...args: SupportedValueType[]) => SupportedValueType): void;
103
205
  /**
104
206
  * Opens the database specified in the `location` argument of the `DatabaseSync`constructor. This method should only be used when the database is not opened via
105
207
  * the constructor. An exception is thrown if the database is already open.
@@ -114,8 +216,73 @@ declare module "node:sqlite" {
114
216
  * @return The prepared statement.
115
217
  */
116
218
  prepare(sql: string): StatementSync;
219
+ /**
220
+ * Creates and attaches a session to the database. This method is a wrapper around
221
+ * [`sqlite3session_create()`](https://www.sqlite.org/session/sqlite3session_create.html) and
222
+ * [`sqlite3session_attach()`](https://www.sqlite.org/session/sqlite3session_attach.html).
223
+ * @param options The configuration options for the session.
224
+ * @returns A session handle.
225
+ * @since v22.12.0
226
+ */
227
+ createSession(options?: CreateSessionOptions): Session;
228
+ /**
229
+ * An exception is thrown if the database is not
230
+ * open. This method is a wrapper around
231
+ * [`sqlite3changeset_apply()`](https://www.sqlite.org/session/sqlite3changeset_apply.html).
232
+ *
233
+ * ```js
234
+ * const sourceDb = new DatabaseSync(':memory:');
235
+ * const targetDb = new DatabaseSync(':memory:');
236
+ *
237
+ * sourceDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)');
238
+ * targetDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)');
239
+ *
240
+ * const session = sourceDb.createSession();
241
+ *
242
+ * const insert = sourceDb.prepare('INSERT INTO data (key, value) VALUES (?, ?)');
243
+ * insert.run(1, 'hello');
244
+ * insert.run(2, 'world');
245
+ *
246
+ * const changeset = session.changeset();
247
+ * targetDb.applyChangeset(changeset);
248
+ * // Now that the changeset has been applied, targetDb contains the same data as sourceDb.
249
+ * ```
250
+ * @param changeset A binary changeset or patchset.
251
+ * @param options The configuration options for how the changes will be applied.
252
+ * @returns Whether the changeset was applied succesfully without being aborted.
253
+ * @since v22.12.0
254
+ */
255
+ applyChangeset(changeset: Uint8Array, options?: ApplyChangesetOptions): boolean;
256
+ }
257
+ /**
258
+ * @since v22.12.0
259
+ */
260
+ interface Session {
261
+ /**
262
+ * Retrieves a changeset containing all changes since the changeset was created. Can be called multiple times.
263
+ * An exception is thrown if the database or the session is not open. This method is a wrapper around
264
+ * [`sqlite3session_changeset()`](https://www.sqlite.org/session/sqlite3session_changeset.html).
265
+ * @returns Binary changeset that can be applied to other databases.
266
+ * @since v22.12.0
267
+ */
268
+ changeset(): Uint8Array;
269
+ /**
270
+ * Similar to the method above, but generates a more compact patchset. See
271
+ * [Changesets and Patchsets](https://www.sqlite.org/sessionintro.html#changesets_and_patchsets)
272
+ * in the documentation of SQLite. An exception is thrown if the database or the session is not open. This method is a
273
+ * wrapper around
274
+ * [`sqlite3session_patchset()`](https://www.sqlite.org/session/sqlite3session_patchset.html).
275
+ * @returns Binary patchset that can be applied to other databases.
276
+ * @since v22.12.0
277
+ */
278
+ patchset(): Uint8Array;
279
+ /**
280
+ * Closes the session. An exception is thrown if the database or the session is not open. This method is a
281
+ * wrapper around
282
+ * [`sqlite3session_delete()`](https://www.sqlite.org/session/sqlite3session_delete.html).
283
+ */
284
+ close(): void;
117
285
  }
118
- type SupportedValueType = null | number | bigint | string | Uint8Array;
119
286
  interface StatementResultingChanges {
120
287
  /**
121
288
  * The number of rows modified, inserted, or deleted by the most recently completed `INSERT`, `UPDATE`, or `DELETE` statement.
@@ -181,6 +348,24 @@ declare module "node:sqlite" {
181
348
  */
182
349
  get(...anonymousParameters: SupportedValueType[]): unknown;
183
350
  get(namedParameters: Record<string, SupportedValueType>, ...anonymousParameters: SupportedValueType[]): unknown;
351
+ /**
352
+ * This method executes a prepared statement and returns an iterator of
353
+ * objects. If the prepared statement does not return any results, this method
354
+ * returns an empty iterator. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using
355
+ * the values in `namedParameters` and `anonymousParameters`.
356
+ * @since v22.13.0
357
+ * @param namedParameters An optional object used to bind named parameters.
358
+ * The keys of this object are used to configure the mapping.
359
+ * @param anonymousParameters Zero or more values to bind to anonymous parameters.
360
+ * @returns An iterable iterator of objects. Each object corresponds to a row
361
+ * returned by executing the prepared statement. The keys and values of each
362
+ * object correspond to the column names and values of the row.
363
+ */
364
+ iterate(...anonymousParameters: SupportedValueType[]): NodeJS.Iterator<unknown>;
365
+ iterate(
366
+ namedParameters: Record<string, SupportedValueType>,
367
+ ...anonymousParameters: SupportedValueType[]
368
+ ): NodeJS.Iterator<unknown>;
184
369
  /**
185
370
  * This method executes a prepared statement and returns an object summarizing the
186
371
  * resulting changes. The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_blob.html) using the
@@ -231,4 +416,24 @@ declare module "node:sqlite" {
231
416
  */
232
417
  readonly sourceSQL: string;
233
418
  }
419
+ /**
420
+ * @since v22.13.0
421
+ */
422
+ namespace constants {
423
+ /**
424
+ * Conflicting changes are omitted.
425
+ * @since v22.12.0
426
+ */
427
+ const SQLITE_CHANGESET_OMIT: number;
428
+ /**
429
+ * Conflicting changes replace existing values.
430
+ * @since v22.12.0
431
+ */
432
+ const SQLITE_CHANGESET_REPLACE: number;
433
+ /**
434
+ * Abort when a change encounters a conflict and roll back database.
435
+ * @since v22.12.0
436
+ */
437
+ const SQLITE_CHANGESET_ABORT: number;
438
+ }
234
439
  }
node/test.d.ts CHANGED
@@ -887,10 +887,7 @@ declare module "node:test" {
887
887
  * });
888
888
  * });
889
889
  * ```
890
- *
891
- * Only available through the [--experimental-test-snapshots](https://nodejs.org/api/cli.html#--experimental-test-snapshots) flag.
892
890
  * @since v22.3.0
893
- * @experimental
894
891
  */
895
892
  snapshot(value: any, options?: AssertSnapshotOptions): void;
896
893
  }
@@ -1691,9 +1688,7 @@ declare module "node:test" {
1691
1688
  [Symbol.dispose](): void;
1692
1689
  }
1693
1690
  /**
1694
- * Only available through the [--experimental-test-snapshots](https://nodejs.org/api/cli.html#--experimental-test-snapshots) flag.
1695
1691
  * @since v22.3.0
1696
- * @experimental
1697
1692
  */
1698
1693
  namespace snapshot {
1699
1694
  /**
node/util.d.ts CHANGED
@@ -108,14 +108,14 @@ declare module "util" {
108
108
  export interface InspectOptionsStylized extends InspectOptions {
109
109
  stylize(text: string, styleType: Style): string;
110
110
  }
111
- export interface StacktraceObject {
111
+ export interface CallSiteObject {
112
112
  /**
113
- * Returns the name of the function associated with this stack frame.
113
+ * Returns the name of the function associated with this call site.
114
114
  */
115
115
  functionName: string;
116
116
  /**
117
117
  * Returns the name of the resource that contains the script for the
118
- * function for this StackFrame.
118
+ * function for this call site.
119
119
  */
120
120
  scriptName: string;
121
121
  /**
@@ -185,15 +185,22 @@ declare module "util" {
185
185
  * @since v10.0.0
186
186
  */
187
187
  export function formatWithOptions(inspectOptions: InspectOptions, format?: any, ...param: any[]): string;
188
+ interface GetCallSitesOptions {
189
+ /**
190
+ * Reconstruct the original location in the stacktrace from the source-map.
191
+ * Enabled by default with the flag `--enable-source-maps`.
192
+ */
193
+ sourceMap?: boolean | undefined;
194
+ }
188
195
  /**
189
- * Returns an array of stacktrace objects containing the stack of
196
+ * Returns an array of call site objects containing the stack of
190
197
  * the caller function.
191
198
  *
192
199
  * ```js
193
200
  * const util = require('node:util');
194
201
  *
195
202
  * function exampleFunction() {
196
- * const callSites = util.getCallSite();
203
+ * const callSites = util.getCallSites();
197
204
  *
198
205
  * console.log('Call Sites:');
199
206
  * callSites.forEach((callSite, index) => {
@@ -225,12 +232,40 @@ declare module "util" {
225
232
  *
226
233
  * anotherFunction();
227
234
  * ```
228
- * @param frames Number of frames returned in the stacktrace.
235
+ *
236
+ * It is possible to reconstruct the original locations by setting the option `sourceMap` to `true`.
237
+ * If the source map is not available, the original location will be the same as the current location.
238
+ * When the `--enable-source-maps` flag is enabled, for example when using `--experimental-transform-types`,
239
+ * `sourceMap` will be true by default.
240
+ *
241
+ * ```ts
242
+ * import util from 'node:util';
243
+ *
244
+ * interface Foo {
245
+ * foo: string;
246
+ * }
247
+ *
248
+ * const callSites = util.getCallSites({ sourceMap: true });
249
+ *
250
+ * // With sourceMap:
251
+ * // Function Name: ''
252
+ * // Script Name: example.js
253
+ * // Line Number: 7
254
+ * // Column Number: 26
255
+ *
256
+ * // Without sourceMap:
257
+ * // Function Name: ''
258
+ * // Script Name: example.js
259
+ * // Line Number: 2
260
+ * // Column Number: 26
261
+ * ```
262
+ * @param frameCount Number of frames to capture as call site objects.
229
263
  * **Default:** `10`. Allowable range is between 1 and 200.
230
- * @return An array of stacktrace objects
264
+ * @return An array of call site objects
231
265
  * @since v22.9.0
232
266
  */
233
- export function getCallSite(frames?: number): StacktraceObject[];
267
+ export function getCallSites(frameCount?: number, options?: GetCallSitesOptions): CallSiteObject[];
268
+ export function getCallSites(options: GetCallSitesOptions): CallSiteObject[];
234
269
  /**
235
270
  * Returns the string name for a numeric error code that comes from a Node.js API.
236
271
  * The mapping between error codes and error names is platform-dependent.
@@ -260,6 +295,20 @@ declare module "util" {
260
295
  * @since v16.0.0, v14.17.0
261
296
  */
262
297
  export function getSystemErrorMap(): Map<number, [string, string]>;
298
+ /**
299
+ * Returns the string message for a numeric error code that comes from a Node.js
300
+ * API.
301
+ * The mapping between error codes and string messages is platform-dependent.
302
+ *
303
+ * ```js
304
+ * fs.access('file/that/does/not/exist', (err) => {
305
+ * const name = util.getSystemErrorMessage(err.errno);
306
+ * console.error(name); // no such file or directory
307
+ * });
308
+ * ```
309
+ * @since v22.12.0
310
+ */
311
+ export function getSystemErrorMessage(err: number): string;
263
312
  /**
264
313
  * The `util.log()` method prints the given `string` to `stdout` with an included
265
314
  * timestamp.
@@ -303,27 +352,36 @@ declare module "util" {
303
352
  */
304
353
  export function transferableAbortSignal(signal: AbortSignal): AbortSignal;
305
354
  /**
306
- * Listens to abort event on the provided `signal` and
307
- * returns a promise that is fulfilled when the `signal` is
308
- * aborted. If the passed `resource` is garbage collected before the `signal` is
309
- * aborted, the returned promise shall remain pending indefinitely.
355
+ * Listens to abort event on the provided `signal` and returns a promise that resolves when the `signal` is aborted.
356
+ * If `resource` is provided, it weakly references the operation's associated object,
357
+ * so if `resource` is garbage collected before the `signal` aborts,
358
+ * then returned promise shall remain pending.
359
+ * This prevents memory leaks in long-running or non-cancelable operations.
310
360
  *
311
361
  * ```js
312
362
  * import { aborted } from 'node:util';
313
363
  *
364
+ * // Obtain an object with an abortable signal, like a custom resource or operation.
314
365
  * const dependent = obtainSomethingAbortable();
315
366
  *
367
+ * // Pass `dependent` as the resource, indicating the promise should only resolve
368
+ * // if `dependent` is still in memory when the signal is aborted.
316
369
  * aborted(dependent.signal, dependent).then(() => {
317
- * // Do something when dependent is aborted.
370
+ * // This code runs when `dependent` is aborted.
371
+ * console.log('Dependent resource was aborted.');
318
372
  * });
319
373
  *
374
+ * // Simulate an event that triggers the abort.
320
375
  * dependent.on('event', () => {
321
- * dependent.abort();
376
+ * dependent.abort(); // This will cause the `aborted` promise to resolve.
322
377
  * });
323
378
  * ```
324
379
  * @since v19.7.0
325
380
  * @experimental
326
- * @param resource Any non-null entity, reference to which is held weakly.
381
+ * @param resource Any non-null object tied to the abortable operation and held weakly.
382
+ * If `resource` is garbage collected before the `signal` aborts, the promise remains pending,
383
+ * allowing Node.js to stop tracking it.
384
+ * This helps prevent memory leaks in long-running or non-cancelable operations.
327
385
  */
328
386
  export function aborted(signal: AbortSignal, resource: any): Promise<void>;
329
387
  /**
@@ -1307,8 +1365,6 @@ declare module "util" {
1307
1365
  | "strikethrough"
1308
1366
  | "underline";
1309
1367
  /**
1310
- * Stability: 1.1 - Active development
1311
- *
1312
1368
  * This function returns a formatted text considering the `format` passed.
1313
1369
  *
1314
1370
  * ```js
@@ -1917,6 +1973,18 @@ declare module "util/types" {
1917
1973
  * @since v10.0.0
1918
1974
  */
1919
1975
  function isBigInt64Array(value: unknown): value is BigInt64Array;
1976
+ /**
1977
+ * Returns `true` if the value is a BigInt object, e.g. created
1978
+ * by `Object(BigInt(123))`.
1979
+ *
1980
+ * ```js
1981
+ * util.types.isBigIntObject(Object(BigInt(123))); // Returns true
1982
+ * util.types.isBigIntObject(BigInt(123)); // Returns false
1983
+ * util.types.isBigIntObject(123); // Returns false
1984
+ * ```
1985
+ * @since v10.4.0
1986
+ */
1987
+ function isBigIntObject(object: unknown): object is BigInt;
1920
1988
  /**
1921
1989
  * Returns `true` if the value is a `BigUint64Array` instance.
1922
1990
  *