From 2e1d9581e01379c934ffddc7f1c89573693472e5 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 7 May 2025 20:31:21 +0100 Subject: [PATCH 01/16] Revert "buffer: move SlowBuffer to EOL" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0579e0ec9357247ab2ff3c759dad02d316916cef PR-URL: https://github.com/nodejs/node/pull/58211 Reviewed-By: Marco Ippolito Reviewed-By: LiviaMedeiros Reviewed-By: Antoine du Hamel Reviewed-By: Joyee Cheung Reviewed-By: Darshan Sen Reviewed-By: Luigi Pinca Reviewed-By: Chengzhong Wu Reviewed-By: Ruben Bridgewater Reviewed-By: Richard Lau Reviewed-By: Michaël Zasso Reviewed-By: Rafael Gonzaga Reviewed-By: Yagiz Nizipli Reviewed-By: Juan José Arboleda --- benchmark/buffers/buffer-iterate.js | 4 +-- .../buffers/buffer-read-with-byteLength.js | 3 +- benchmark/buffers/buffer-read.js | 3 +- benchmark/buffers/buffer-slice.js | 4 +-- benchmark/buffers/buffer-write.js | 4 +-- doc/api/buffer.md | 32 +++++++++++++++--- doc/api/cli.md | 4 ++- doc/api/deprecations.md | 8 ++--- .../writing-and-running-benchmarks.md | 7 ++-- doc/node.1 | 2 +- lib/buffer.js | 22 +++++++++++-- src/node_options.cc | 3 +- test/parallel/test-buffer-alloc.js | 7 ++-- test/parallel/test-buffer-bytelength.js | 3 +- .../test-buffer-failed-alloc-typed-arrays.js | 3 +- test/parallel/test-buffer-inspect.js | 4 +-- .../test-buffer-no-negative-allocation.js | 6 ++++ test/parallel/test-buffer-over-max-length.js | 2 ++ test/parallel/test-buffer-slow.js | 33 +++++++++++-------- .../test-buffer-tostring-rangeerror.js | 4 +-- test/parallel/test-buffer-zero-fill-cli.js | 7 ++-- test/parallel/test-icu-transcode.js | 2 +- .../test-buffer-large-size-slowbuffer.js | 12 +++---- 23 files changed, 118 insertions(+), 61 deletions(-) diff --git a/benchmark/buffers/buffer-iterate.js b/benchmark/buffers/buffer-iterate.js index 34c7d17b7f2abd..c1c4f6917501a1 100644 --- a/benchmark/buffers/buffer-iterate.js +++ b/benchmark/buffers/buffer-iterate.js @@ -1,5 +1,5 @@ 'use strict'; -const { Buffer } = require('buffer'); +const SlowBuffer = require('buffer').SlowBuffer; const common = require('../common.js'); const assert = require('assert'); @@ -19,7 +19,7 @@ const methods = { function main({ size, type, method, n }) { const buffer = type === 'fast' ? Buffer.alloc(size) : - Buffer.allocUnsafeSlow(size).fill(0); + SlowBuffer(size).fill(0); const fn = methods[method]; diff --git a/benchmark/buffers/buffer-read-with-byteLength.js b/benchmark/buffers/buffer-read-with-byteLength.js index 4cbe12ef4fe386..57e46b8ce4453f 100644 --- a/benchmark/buffers/buffer-read-with-byteLength.js +++ b/benchmark/buffers/buffer-read-with-byteLength.js @@ -1,6 +1,5 @@ 'use strict'; const common = require('../common.js'); -const { Buffer } = require('buffer'); const types = [ 'IntBE', @@ -19,7 +18,7 @@ const bench = common.createBenchmark(main, { function main({ n, buf, type, byteLength }) { const buff = buf === 'fast' ? Buffer.alloc(8) : - Buffer.allocUnsafeSlow(8); + require('buffer').SlowBuffer(8); const fn = `read${type}`; buff.writeDoubleLE(0, 0); diff --git a/benchmark/buffers/buffer-read.js b/benchmark/buffers/buffer-read.js index 2543db7f5d6d49..f3b2a5645174fe 100644 --- a/benchmark/buffers/buffer-read.js +++ b/benchmark/buffers/buffer-read.js @@ -1,6 +1,5 @@ 'use strict'; const common = require('../common.js'); -const { Buffer } = require('buffer'); const types = [ 'BigUInt64LE', @@ -28,7 +27,7 @@ const bench = common.createBenchmark(main, { function main({ n, buf, type }) { const buff = buf === 'fast' ? Buffer.alloc(8) : - Buffer.allocUnsafeSlow(8); + require('buffer').SlowBuffer(8); const fn = `read${type}`; buff.writeDoubleLE(0, 0); diff --git a/benchmark/buffers/buffer-slice.js b/benchmark/buffers/buffer-slice.js index e96a31f0b42ea9..cc6e1a8a1449fc 100644 --- a/benchmark/buffers/buffer-slice.js +++ b/benchmark/buffers/buffer-slice.js @@ -1,6 +1,6 @@ 'use strict'; const common = require('../common.js'); -const { Buffer } = require('buffer'); +const SlowBuffer = require('buffer').SlowBuffer; const bench = common.createBenchmark(main, { type: ['fast', 'slow', 'subarray'], @@ -8,7 +8,7 @@ const bench = common.createBenchmark(main, { }); const buf = Buffer.allocUnsafe(1024); -const slowBuf = Buffer.allocUnsafeSlow(1024); +const slowBuf = new SlowBuffer(1024); function main({ n, type }) { const b = type === 'slow' ? slowBuf : buf; diff --git a/benchmark/buffers/buffer-write.js b/benchmark/buffers/buffer-write.js index 25a3a04a130a2f..239abc8a0da69e 100644 --- a/benchmark/buffers/buffer-write.js +++ b/benchmark/buffers/buffer-write.js @@ -1,6 +1,6 @@ 'use strict'; const common = require('../common.js'); -const { Buffer } = require('buffer'); + const types = [ 'BigUInt64LE', 'BigUInt64BE', @@ -73,7 +73,7 @@ const byteLength = { function main({ n, buf, type }) { const buff = buf === 'fast' ? Buffer.alloc(8) : - Buffer.allocUnsafeSlow(8); + require('buffer').SlowBuffer(8); const fn = `write${type}`; if (!/\d/.test(fn)) diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 66e4aeb80386c4..d7ba1089a97e65 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -5340,6 +5340,28 @@ console.log(newBuf.toString('ascii')); Because the Euro (`€`) sign is not representable in US-ASCII, it is replaced with `?` in the transcoded `Buffer`. +### Class: `SlowBuffer` + + + +> Stability: 0 - Deprecated: Use [`Buffer.allocUnsafeSlow()`][] instead. + +See [`Buffer.allocUnsafeSlow()`][]. This was never a class in the sense that +the constructor always returned a `Buffer` instance, rather than a `SlowBuffer` +instance. + +#### `new SlowBuffer(size)` + + + +* `size` {integer} The desired length of the new `SlowBuffer`. + +See [`Buffer.allocUnsafeSlow()`][]. + ### Buffer constants -Automatically zero-fills all newly allocated [`Buffer`][] instances. +Automatically zero-fills all newly allocated [`Buffer`][] and [`SlowBuffer`][] +instances. ## Environment variables @@ -3886,6 +3887,7 @@ node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # prints 12 [`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`]: errors.md#err_unsupported_typescript_syntax [`NODE_OPTIONS`]: #node_optionsoptions [`NO_COLOR`]: https://no-color.org +[`SlowBuffer`]: buffer.md#class-slowbuffer [`Web Storage`]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API [`WebSocket`]: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket [`YoungGenerationSizeFromSemiSpaceSize`]: https://chromium.googlesource.com/v8/v8.git/+/refs/tags/10.3.129/src/heap/heap.cc#328 diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 4ae0abb17711ca..59ccb616adae1d 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -695,9 +695,6 @@ Type: End-of-Life -Type: End-of-Life +Type: Runtime -The `SlowBuffer` class has been removed. Please use +The [`SlowBuffer`][] class is deprecated. Please use [`Buffer.allocUnsafeSlow(size)`][] instead. ### DEP0031: `ecdh.setPublicKey()` @@ -3921,6 +3918,7 @@ upon `require('node:module').builtinModules`. [`ReadStream.open()`]: fs.md#class-fsreadstream [`Server.getConnections()`]: net.md#servergetconnectionscallback [`Server.listen({fd: })`]: net.md#serverlistenhandle-backlog-callback +[`SlowBuffer`]: buffer.md#class-slowbuffer [`String.prototype.toWellFormed`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toWellFormed [`WriteStream.open()`]: fs.md#class-fswritestream [`assert.CallTracker`]: assert.md#class-assertcalltracker diff --git a/doc/contributing/writing-and-running-benchmarks.md b/doc/contributing/writing-and-running-benchmarks.md index efe68920ef0f03..63fbf75c798833 100644 --- a/doc/contributing/writing-and-running-benchmarks.md +++ b/doc/contributing/writing-and-running-benchmarks.md @@ -572,7 +572,7 @@ the code inside the `main` function if it's more than just declaration. ```js 'use strict'; const common = require('../common.js'); -const { Buffer } = require('node:buffer'); +const { SlowBuffer } = require('node:buffer'); const configs = { // Number of operations, specified here so they show up in the report. @@ -603,11 +603,10 @@ function main(conf) { bench.start(); // Do operations here + const BufferConstructor = conf.type === 'fast' ? Buffer : SlowBuffer; for (let i = 0; i < conf.n; i++) { - conf.type === 'fast' ? - Buffer.allocUnsafe(conf.size) : - Buffer.allocUnsafeSlow(conf.size); + new BufferConstructor(conf.size); } // End the timer, pass in the number of operations diff --git a/doc/node.1 b/doc/node.1 index eac925c5fa690e..de6a3f7aa5f6fd 100644 --- a/doc/node.1 +++ b/doc/node.1 @@ -619,7 +619,7 @@ If set to 0 then V8 will choose an appropriate size of the thread pool based on If the value provided is larger than V8's maximum, then the largest value will be chosen. . .It Fl -zero-fill-buffers -Automatically zero-fills all newly allocated Buffer instances. +Automatically zero-fills all newly allocated Buffer and SlowBuffer instances. . .It Fl c , Fl -check Check the script's syntax without executing it. diff --git a/lib/buffer.js b/lib/buffer.js index ec3cdd434c2f99..22bbb95eaf79e6 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -52,6 +52,7 @@ const { TypedArrayPrototypeSet, TypedArrayPrototypeSlice, Uint8Array, + Uint8ArrayPrototype, } = primordials; const { @@ -88,6 +89,7 @@ const { kIsEncodingSymbol, defineLazyProperties, encodingsMap, + deprecate, } = require('internal/util'); const { isAnyArrayBuffer, @@ -409,15 +411,25 @@ Buffer.allocUnsafe = function allocUnsafe(size) { }; /** - * By default creates a non-zero-filled Buffer instance that is not allocated - * off the pre-initialized pool. If `--zero-fill-buffers` is set, will zero-fill - * the buffer. + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled + * Buffer instance that is not allocated off the pre-initialized pool. + * If `--zero-fill-buffers` is set, will zero-fill the buffer. */ Buffer.allocUnsafeSlow = function allocUnsafeSlow(size) { validateNumber(size, 'size', 0, kMaxLength); return createUnsafeBuffer(size); }; +// If --zero-fill-buffers command line argument is set, a zero-filled +// buffer is returned. +function SlowBuffer(size) { + validateNumber(size, 'size', 0, kMaxLength); + return createUnsafeBuffer(size); +} + +ObjectSetPrototypeOf(SlowBuffer.prototype, Uint8ArrayPrototype); +ObjectSetPrototypeOf(SlowBuffer, Uint8Array); + function allocate(size) { if (size <= 0) { return new FastBuffer(); @@ -1319,6 +1331,10 @@ function isAscii(input) { module.exports = { Buffer, + SlowBuffer: deprecate( + SlowBuffer, + 'SlowBuffer() is deprecated. Please use Buffer.allocUnsafeSlow()', + 'DEP0030'), transcode, isUtf8, isAscii, diff --git a/src/node_options.cc b/src/node_options.cc index f4d5170a629c31..c0a3384735c258 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -1052,7 +1052,8 @@ PerProcessOptionsParser::PerProcessOptionsParser( &PerProcessOptions::v8_thread_pool_size, kAllowedInEnvvar); AddOption("--zero-fill-buffers", - "automatically zero-fill all newly allocated Buffer instances", + "automatically zero-fill all newly allocated Buffer and " + "SlowBuffer instances", &PerProcessOptions::zero_fill_all_buffers, kAllowedInEnvvar); AddOption("--debug-arraybuffer-allocations", diff --git a/test/parallel/test-buffer-alloc.js b/test/parallel/test-buffer-alloc.js index 382cfbc93a6510..aad9c6bcab69e9 100644 --- a/test/parallel/test-buffer-alloc.js +++ b/test/parallel/test-buffer-alloc.js @@ -5,7 +5,7 @@ const assert = require('assert'); const vm = require('vm'); const { - Buffer, + SlowBuffer, kMaxLength, } = require('buffer'); @@ -1104,6 +1104,9 @@ assert.throws(() => Buffer.from(null), { // Test prototype getters don't throw assert.strictEqual(Buffer.prototype.parent, undefined); assert.strictEqual(Buffer.prototype.offset, undefined); +assert.strictEqual(SlowBuffer.prototype.parent, undefined); +assert.strictEqual(SlowBuffer.prototype.offset, undefined); + { // Test that large negative Buffer length inputs don't affect the pool offset. @@ -1136,7 +1139,7 @@ assert.throws(() => { a.copy(b, 0, 0x100000000, 0x100000001); }, outOfRangeError); -// Unpooled buffer +// Unpooled buffer (replaces SlowBuffer) { const ubuf = Buffer.allocUnsafeSlow(10); assert(ubuf); diff --git a/test/parallel/test-buffer-bytelength.js b/test/parallel/test-buffer-bytelength.js index 1013469181fa23..95d54d425bc252 100644 --- a/test/parallel/test-buffer-bytelength.js +++ b/test/parallel/test-buffer-bytelength.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const { Buffer } = require('buffer'); +const SlowBuffer = require('buffer').SlowBuffer; const vm = require('vm'); [ @@ -24,6 +24,7 @@ const vm = require('vm'); }); assert(ArrayBuffer.isView(new Buffer(10))); +assert(ArrayBuffer.isView(new SlowBuffer(10))); assert(ArrayBuffer.isView(Buffer.alloc(10))); assert(ArrayBuffer.isView(Buffer.allocUnsafe(10))); assert(ArrayBuffer.isView(Buffer.allocUnsafeSlow(10))); diff --git a/test/parallel/test-buffer-failed-alloc-typed-arrays.js b/test/parallel/test-buffer-failed-alloc-typed-arrays.js index ac519d2bf7a1ab..699475ad0a8b31 100644 --- a/test/parallel/test-buffer-failed-alloc-typed-arrays.js +++ b/test/parallel/test-buffer-failed-alloc-typed-arrays.js @@ -2,7 +2,7 @@ require('../common'); const assert = require('assert'); -const { Buffer } = require('buffer'); +const SlowBuffer = require('buffer').SlowBuffer; // Test failed or zero-sized Buffer allocations not affecting typed arrays. // This test exists because of a regression that occurred. Because Buffer @@ -15,6 +15,7 @@ const zeroArray = new Uint32Array(10).fill(0); const sizes = [1e20, 0, 0.1, -1, 'a', undefined, null, NaN]; const allocators = [ Buffer, + SlowBuffer, Buffer.alloc, Buffer.allocUnsafe, Buffer.allocUnsafeSlow, diff --git a/test/parallel/test-buffer-inspect.js b/test/parallel/test-buffer-inspect.js index 0dd15e5a97d3e9..1e8212e876344a 100644 --- a/test/parallel/test-buffer-inspect.js +++ b/test/parallel/test-buffer-inspect.js @@ -30,7 +30,7 @@ buffer.INSPECT_MAX_BYTES = 2; let b = Buffer.allocUnsafe(4); b.fill('1234'); -let s = Buffer.allocUnsafeSlow(4); +let s = buffer.SlowBuffer(4); s.fill('1234'); let expected = ''; @@ -41,7 +41,7 @@ assert.strictEqual(util.inspect(s), expected); b = Buffer.allocUnsafe(2); b.fill('12'); -s = Buffer.allocUnsafeSlow(2); +s = buffer.SlowBuffer(2); s.fill('12'); expected = ''; diff --git a/test/parallel/test-buffer-no-negative-allocation.js b/test/parallel/test-buffer-no-negative-allocation.js index e48d9c7545755d..055e2d5dc69bdd 100644 --- a/test/parallel/test-buffer-no-negative-allocation.js +++ b/test/parallel/test-buffer-no-negative-allocation.js @@ -2,6 +2,7 @@ require('../common'); const assert = require('assert'); +const { SlowBuffer } = require('buffer'); const msg = { code: 'ERR_OUT_OF_RANGE', @@ -29,3 +30,8 @@ assert.throws(() => Buffer.allocUnsafeSlow(-Buffer.poolSize), msg); assert.throws(() => Buffer.allocUnsafeSlow(-100), msg); assert.throws(() => Buffer.allocUnsafeSlow(-1), msg); assert.throws(() => Buffer.allocUnsafeSlow(NaN), msg); + +assert.throws(() => SlowBuffer(-Buffer.poolSize), msg); +assert.throws(() => SlowBuffer(-100), msg); +assert.throws(() => SlowBuffer(-1), msg); +assert.throws(() => SlowBuffer(NaN), msg); diff --git a/test/parallel/test-buffer-over-max-length.js b/test/parallel/test-buffer-over-max-length.js index 5ee07b14d2abb5..f29d6b62d4aa40 100644 --- a/test/parallel/test-buffer-over-max-length.js +++ b/test/parallel/test-buffer-over-max-length.js @@ -4,6 +4,7 @@ require('../common'); const assert = require('assert'); const buffer = require('buffer'); +const SlowBuffer = buffer.SlowBuffer; const kMaxLength = buffer.kMaxLength; const bufferMaxSizeMsg = { @@ -12,6 +13,7 @@ const bufferMaxSizeMsg = { }; assert.throws(() => Buffer(kMaxLength + 1), bufferMaxSizeMsg); +assert.throws(() => SlowBuffer(kMaxLength + 1), bufferMaxSizeMsg); assert.throws(() => Buffer.alloc(kMaxLength + 1), bufferMaxSizeMsg); assert.throws(() => Buffer.allocUnsafe(kMaxLength + 1), bufferMaxSizeMsg); assert.throws(() => Buffer.allocUnsafeSlow(kMaxLength + 1), bufferMaxSizeMsg); diff --git a/test/parallel/test-buffer-slow.js b/test/parallel/test-buffer-slow.js index bf104abf4fb0fa..0d89491cfbd155 100644 --- a/test/parallel/test-buffer-slow.js +++ b/test/parallel/test-buffer-slow.js @@ -1,13 +1,20 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); -const { Buffer, kMaxLength } = require('buffer'); +const buffer = require('buffer'); +const SlowBuffer = buffer.SlowBuffer; const ones = [1, 1, 1, 1]; +common.expectWarning( + 'DeprecationWarning', + 'SlowBuffer() is deprecated. Please use Buffer.allocUnsafeSlow()', + 'DEP0030' +); + // Should create a Buffer -let sb = Buffer.allocUnsafeSlow(4); +let sb = SlowBuffer(4); assert(sb instanceof Buffer); assert.strictEqual(sb.length, 4); sb.fill(1); @@ -19,7 +26,7 @@ for (const [key, value] of sb.entries()) { assert.strictEqual(sb.buffer.byteLength, 4); // Should work without new -sb = Buffer.allocUnsafeSlow(4); +sb = SlowBuffer(4); assert(sb instanceof Buffer); assert.strictEqual(sb.length, 4); sb.fill(1); @@ -28,7 +35,7 @@ for (const [key, value] of sb.entries()) { } // Should work with edge cases -assert.strictEqual(Buffer.allocUnsafeSlow(0).length, 0); +assert.strictEqual(SlowBuffer(0).length, 0); // Should throw with invalid length type const bufferInvalidTypeMsg = { @@ -36,17 +43,17 @@ const bufferInvalidTypeMsg = { name: 'TypeError', message: /^The "size" argument must be of type number/, }; -assert.throws(() => Buffer.allocUnsafeSlow(), bufferInvalidTypeMsg); -assert.throws(() => Buffer.allocUnsafeSlow({}), bufferInvalidTypeMsg); -assert.throws(() => Buffer.allocUnsafeSlow('6'), bufferInvalidTypeMsg); -assert.throws(() => Buffer.allocUnsafeSlow(true), bufferInvalidTypeMsg); +assert.throws(() => SlowBuffer(), bufferInvalidTypeMsg); +assert.throws(() => SlowBuffer({}), bufferInvalidTypeMsg); +assert.throws(() => SlowBuffer('6'), bufferInvalidTypeMsg); +assert.throws(() => SlowBuffer(true), bufferInvalidTypeMsg); // Should throw with invalid length value const bufferMaxSizeMsg = { code: 'ERR_OUT_OF_RANGE', name: 'RangeError', }; -assert.throws(() => Buffer.allocUnsafeSlow(NaN), bufferMaxSizeMsg); -assert.throws(() => Buffer.allocUnsafeSlow(Infinity), bufferMaxSizeMsg); -assert.throws(() => Buffer.allocUnsafeSlow(-1), bufferMaxSizeMsg); -assert.throws(() => Buffer.allocUnsafeSlow(kMaxLength + 1), bufferMaxSizeMsg); +assert.throws(() => SlowBuffer(NaN), bufferMaxSizeMsg); +assert.throws(() => SlowBuffer(Infinity), bufferMaxSizeMsg); +assert.throws(() => SlowBuffer(-1), bufferMaxSizeMsg); +assert.throws(() => SlowBuffer(buffer.kMaxLength + 1), bufferMaxSizeMsg); diff --git a/test/parallel/test-buffer-tostring-rangeerror.js b/test/parallel/test-buffer-tostring-rangeerror.js index 4b9357d85c62a4..0ebea759b5c42b 100644 --- a/test/parallel/test-buffer-tostring-rangeerror.js +++ b/test/parallel/test-buffer-tostring-rangeerror.js @@ -7,7 +7,7 @@ require('../common'); const assert = require('assert'); const { - Buffer, + SlowBuffer, constants: { MAX_STRING_LENGTH, }, @@ -19,7 +19,7 @@ const message = { name: 'Error', }; assert.throws(() => Buffer(len).toString('utf8'), message); -assert.throws(() => Buffer.allocUnsafeSlow(len).toString('utf8'), message); +assert.throws(() => SlowBuffer(len).toString('utf8'), message); assert.throws(() => Buffer.alloc(len).toString('utf8'), message); assert.throws(() => Buffer.allocUnsafe(len).toString('utf8'), message); assert.throws(() => Buffer.allocUnsafeSlow(len).toString('utf8'), message); diff --git a/test/parallel/test-buffer-zero-fill-cli.js b/test/parallel/test-buffer-zero-fill-cli.js index 663911b7188c85..4299f81039b0b5 100644 --- a/test/parallel/test-buffer-zero-fill-cli.js +++ b/test/parallel/test-buffer-zero-fill-cli.js @@ -1,11 +1,11 @@ 'use strict'; // Flags: --zero-fill-buffers -// when using --zero-fill-buffers, every Buffer +// when using --zero-fill-buffers, every Buffer and SlowBuffer // instance must be zero filled upon creation require('../common'); -const { Buffer } = require('buffer'); +const SlowBuffer = require('buffer').SlowBuffer; const assert = require('assert'); function isZeroFilled(buf) { @@ -22,8 +22,9 @@ for (let i = 0; i < 50; i++) { const bufs = [ Buffer.alloc(20), Buffer.allocUnsafe(20), - Buffer.allocUnsafeSlow(20), + SlowBuffer(20), Buffer(20), + new SlowBuffer(20), ]; for (const buf of bufs) { assert(isZeroFilled(buf)); diff --git a/test/parallel/test-icu-transcode.js b/test/parallel/test-icu-transcode.js index 875d954b6cab81..e9aced128eec21 100644 --- a/test/parallel/test-icu-transcode.js +++ b/test/parallel/test-icu-transcode.js @@ -86,5 +86,5 @@ assert.deepStrictEqual( // Test that it doesn't crash { - buffer.transcode(new buffer.Buffer.allocUnsafeSlow(1), 'utf16le', 'ucs2'); + buffer.transcode(new buffer.SlowBuffer(1), 'utf16le', 'ucs2'); } diff --git a/test/pummel/test-buffer-large-size-slowbuffer.js b/test/pummel/test-buffer-large-size-slowbuffer.js index b4670b4173004b..5ac058fb276a09 100644 --- a/test/pummel/test-buffer-large-size-slowbuffer.js +++ b/test/pummel/test-buffer-large-size-slowbuffer.js @@ -5,18 +5,18 @@ const common = require('../common'); common.skipIf32Bits(); const assert = require('node:assert'); -const { Buffer } = require('node:buffer'); +const { + SlowBuffer, +} = require('node:buffer'); const size = 2 ** 31; -// Test slow Buffer with size larger than integer range +// Test SlowBuffer with size larger than integer range try { - assert.throws(() => Buffer.allocUnsafeSlow(size).toString('utf8'), { - code: 'ERR_STRING_TOO_LONG', - }); + assert.throws(() => SlowBuffer(size).toString('utf8'), { code: 'ERR_STRING_TOO_LONG' }); } catch (e) { if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { throw e; } - common.skip('insufficient space for slow Buffer allocation'); + common.skip('insufficient space for SlowBuffer'); } From c8e8558958e9ee907ef70b5df6e05f13c082a459 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Sun, 13 Apr 2025 20:25:03 -0700 Subject: [PATCH 02/16] doc: clarify future Corepack removal in v25+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/57825 Reviewed-By: Jordan Harband Reviewed-By: Marco Ippolito Reviewed-By: Darshan Sen Reviewed-By: Ulises Gascón Reviewed-By: James M Snell Reviewed-By: Antoine du Hamel --- doc/api/corepack.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/api/corepack.md b/doc/api/corepack.md index 8bc9c134e2dc7c..b017f7570cb260 100644 --- a/doc/api/corepack.md +++ b/doc/api/corepack.md @@ -12,10 +12,9 @@ added: > Stability: 1 - Experimental -Documentation for this tool can be found on the [Corepack repository][]. +**Corepack will no longer be distributed starting with Node.js v25.** -Despite Corepack being distributed with default installs of Node.js, the package -managers managed by Corepack are not part of the Node.js distribution, and -Corepack itself will no longer be distributed with Node.js 25+. +Users currently depending on the bundled `corepack` executable from Node.js +can switch to using the userland-provided [corepack][] module. -[Corepack repository]: https://github.com/nodejs/corepack +[corepack]: https://github.com/nodejs/corepack From bc9f5a2e7945c8e6feac1fa707baae52b63cb058 Mon Sep 17 00:00:00 2001 From: yusheng chen Date: Sat, 3 May 2025 20:08:20 +0800 Subject: [PATCH 03/16] doc: fix typo of file `zlib.md` PR-URL: https://github.com/nodejs/node/pull/58093 Reviewed-By: Daeyeon Jeong Reviewed-By: LiviaMedeiros Reviewed-By: Chemi Atlow Reviewed-By: Luigi Pinca --- doc/api/zlib.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/zlib.md b/doc/api/zlib.md index d1efe90ee7de1d..a3695eb8991ece 100644 --- a/doc/api/zlib.md +++ b/doc/api/zlib.md @@ -12,7 +12,7 @@ Gzip, Deflate/Inflate, Brotli, and Zstd. To access it: ```mjs -import os from 'node:zlib'; +import zlib from 'node:zlib'; ``` ```cjs From 0708497c7f31e76eb67ce3f45838b9c8d6c37259 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 18:21:25 +0000 Subject: [PATCH 04/16] tools: bump the eslint group in /tools/eslint with 6 updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the eslint group in /tools/eslint with 6 updates: | Package | From | To | | --- | --- | --- | | [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.26.10` | `7.27.1` | | [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) | `7.27.0` | `7.27.1` | | [@babel/plugin-syntax-import-attributes](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-import-attributes) | `7.26.0` | `7.27.1` | | [@babel/plugin-syntax-import-source](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-import-source) | `7.25.9` | `7.27.1` | | [eslint](https://github.com/eslint/eslint) | `9.23.0` | `9.25.1` | | [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) | `50.6.9` | `50.6.11` | Updates `@babel/core` from 7.26.10 to 7.27.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.1/packages/babel-core) Updates `@babel/eslint-parser` from 7.27.0 to 7.27.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.1/eslint/babel-eslint-parser) Updates `@babel/plugin-syntax-import-attributes` from 7.26.0 to 7.27.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.1/packages/babel-plugin-syntax-import-attributes) Updates `@babel/plugin-syntax-import-source` from 7.25.9 to 7.27.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.1/packages/babel-plugin-syntax-import-source) Updates `eslint` from 9.23.0 to 9.25.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.23.0...v9.25.1) Updates `eslint-plugin-jsdoc` from 50.6.9 to 50.6.11 - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.9...v50.6.11) --- updated-dependencies: - dependency-name: "@babel/core" dependency-version: 7.27.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: eslint - dependency-name: "@babel/eslint-parser" dependency-version: 7.27.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: eslint - dependency-name: "@babel/plugin-syntax-import-attributes" dependency-version: 7.27.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: eslint - dependency-name: "@babel/plugin-syntax-import-source" dependency-version: 7.27.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: eslint - dependency-name: eslint dependency-version: 9.25.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: eslint - dependency-name: eslint-plugin-jsdoc dependency-version: 50.6.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: eslint ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/58105 Reviewed-By: Michaël Zasso Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca --- tools/eslint/package-lock.json | 362 +++++++++++++++------------------ tools/eslint/package.json | 12 +- 2 files changed, 170 insertions(+), 204 deletions(-) diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json index 1f7900556493cf..2447e83cf532c6 100644 --- a/tools/eslint/package-lock.json +++ b/tools/eslint/package-lock.json @@ -8,14 +8,14 @@ "name": "eslint-tools", "version": "0.0.0", "dependencies": { - "@babel/core": "^7.26.10", - "@babel/eslint-parser": "^7.27.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-import-source": "^7.25.9", + "@babel/core": "^7.27.1", + "@babel/eslint-parser": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-source": "^7.27.1", "@stylistic/eslint-plugin-js": "^4.2.0", - "eslint": "^9.21.0", + "eslint": "^9.25.1", "eslint-formatter-tap": "^8.40.0", - "eslint-plugin-jsdoc": "^50.6.9", + "eslint-plugin-jsdoc": "^50.6.11", "eslint-plugin-markdown": "^5.1.0", "globals": "^16.0.0" } @@ -34,43 +34,44 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", + "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -86,9 +87,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz", - "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.1.tgz", + "integrity": "sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q==", "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -104,13 +105,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -120,13 +121,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", + "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -136,25 +137,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -164,58 +167,61 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", "license": "MIT", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", + "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.0" + "@babel/types": "^7.27.1" }, "bin": { "parser": "bin/babel-parser.js" @@ -225,11 +231,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -239,12 +246,12 @@ } }, "node_modules/@babel/plugin-syntax-import-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-7.25.9.tgz", - "integrity": "sha512-LlPeWMhPqu2YV1LADbJ0aSXxxfEIszdjB6k2Ih+p8c/slDAygf8Iy2FO9QO55APNTj5kamdf8CKXvg7OXngt8Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-7.27.1.tgz", + "integrity": "sha512-8MOQQZ+gIKsoB0RK9rpVsX+EXgiLHDAf4gH8ko4dIki5w1VeM6uBLv7dPZb5gGFVxoo0135wmpZ930HPqMrINw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -254,30 +261,30 @@ } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", + "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -289,18 +296,19 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -355,9 +363,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.6", @@ -369,18 +377,18 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", - "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" @@ -425,9 +433,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -443,12 +451,12 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.12.0", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" }, "engines": { @@ -570,18 +578,6 @@ "eslint-scope": "5.1.1" } }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/@stylistic/eslint-plugin-js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-4.2.0.tgz", @@ -759,9 +755,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "version": "1.0.30001716", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz", + "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==", "funding": [ { "type": "opencollective", @@ -883,17 +879,11 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.90", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", - "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", + "version": "1.5.148", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.148.tgz", + "integrity": "sha512-8uc1QXwwqayD4mblcsQYZqoi+cOc97A2XmKSBOIRbEAvbp6vrqmSYs4dHD2qVygUgn7Mi0qdKgPaJ9WC8cv63A==", "license": "ISC" }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "license": "MIT" - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -904,19 +894,19 @@ } }, "node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", - "@eslint/plugin-kit": "^0.2.7", + "@eslint/js": "9.25.1", + "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -976,9 +966,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.6.9", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz", - "integrity": "sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==", + "version": "50.6.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz", + "integrity": "sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg==", "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.49.0", @@ -988,10 +978,9 @@ "escape-string-regexp": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.6.0", - "parse-imports": "^2.1.1", + "parse-imports-exports": "^0.2.4", "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "synckit": "^0.9.1" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": ">=18" @@ -1426,7 +1415,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -1449,9 +1439,10 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -1695,19 +1686,21 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-imports": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.1.1.tgz", - "integrity": "sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==", - "license": "Apache-2.0", + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "license": "MIT", "dependencies": { - "es-module-lexer": "^1.5.3", - "slashes": "^3.0.12" - }, - "engines": { - "node": ">= 18" + "parse-statements": "1.0.11" } }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1728,7 +1721,8 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -1785,12 +1779,6 @@ "node": ">=8" } }, - "node_modules/slashes": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", - "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", - "license": "ISC" - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -1837,28 +1825,6 @@ "node": ">=8" } }, - "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "license": "0BSD" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -1885,9 +1851,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", diff --git a/tools/eslint/package.json b/tools/eslint/package.json index da84af77f7822a..d0fbd7d433cc8a 100644 --- a/tools/eslint/package.json +++ b/tools/eslint/package.json @@ -3,14 +3,14 @@ "version": "0.0.0", "private": true, "dependencies": { - "@babel/core": "^7.26.10", - "@babel/eslint-parser": "^7.27.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-import-source": "^7.25.9", + "@babel/core": "^7.27.1", + "@babel/eslint-parser": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-source": "^7.27.1", "@stylistic/eslint-plugin-js": "^4.2.0", - "eslint": "^9.21.0", + "eslint": "^9.25.1", "eslint-formatter-tap": "^8.40.0", - "eslint-plugin-jsdoc": "^50.6.9", + "eslint-plugin-jsdoc": "^50.6.11", "eslint-plugin-markdown": "^5.1.0", "globals": "^16.0.0" } From 0ebb17a30080acdd85465e2866bafcdc8307205b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 19:04:32 +0000 Subject: [PATCH 05/16] meta: bump actions/setup-python from 5.5.0 to 5.6.0 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.5.0 to 5.6.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/8d9ed9ac5c53483de85588cdf95a591a75ab9f55...a26af69be951a213d495a4c3e4e4022e16d87065) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 5.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/58107 Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca --- .github/workflows/build-tarball.yml | 4 ++-- .github/workflows/coverage-linux-without-intl.yml | 2 +- .github/workflows/coverage-linux.yml | 2 +- .github/workflows/coverage-windows.yml | 2 +- .github/workflows/daily-wpt-fyi.yml | 2 +- .github/workflows/linters.yml | 8 ++++---- .github/workflows/test-internet.yml | 2 +- .github/workflows/test-linux.yml | 2 +- .github/workflows/test-macos.yml | 2 +- .github/workflows/tools.yml | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index a784b43cfc6268..5fae318569f7d0 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -46,7 +46,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up sccache @@ -76,7 +76,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up sccache diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml index a1f8f060ddab13..9cefdcff8754d5 100644 --- a/.github/workflows/coverage-linux-without-intl.yml +++ b/.github/workflows/coverage-linux-without-intl.yml @@ -52,7 +52,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up sccache diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml index 9305d5f02cad6f..bab1d81ed06c71 100644 --- a/.github/workflows/coverage-linux.yml +++ b/.github/workflows/coverage-linux.yml @@ -52,7 +52,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up sccache diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index a9e77b91d36b12..d014e5e2ed4afa 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -49,7 +49,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index f8664adb1eb582..db358bfe04bd1c 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -39,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 1a97aeec9fe5b9..a56c279cfce2e6 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -44,7 +44,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -64,7 +64,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -122,7 +122,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -139,7 +139,7 @@ jobs: with: persist-credentials: false - name: Use Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index 64229dcffc6ed5..7d25113c024f78 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -48,7 +48,7 @@ jobs: with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 2266d0da067cdd..ea4a6a138e21ad 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -46,7 +46,7 @@ jobs: persist-credentials: false path: node - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up sccache diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 53329afd930b46..c74e200acb0295 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -52,7 +52,7 @@ jobs: persist-credentials: false path: node - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up Xcode ${{ env.XCODE_VERSION }} diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 60781a8528cba5..e6bb4cef52c5bd 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -294,7 +294,7 @@ jobs: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} if: matrix.id == 'icu' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id) - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - run: ${{ matrix.run }} From b13d5d14bd64b11ffe567574022e26087ed515cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 19:04:40 +0000 Subject: [PATCH 06/16] meta: bump actions/setup-node from 4.3.0 to 4.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.3.0 to 4.4.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/cdca7365b2dadb8aad0a33bc7601856ffabcc48e...49933ea5288caeca8642d1e84afbd3f7d6820020) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 4.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/58111 Reviewed-By: Ulises Gascón Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca --- .github/workflows/auto-start-ci.yml | 2 +- .github/workflows/commit-lint.yml | 2 +- .github/workflows/commit-queue.yml | 2 +- .github/workflows/create-release-proposal.yml | 2 +- .github/workflows/daily-wpt-fyi.yml | 2 +- .github/workflows/daily.yml | 2 +- .github/workflows/doc.yml | 2 +- .github/workflows/find-inactive-collaborators.yml | 2 +- .github/workflows/find-inactive-tsc.yml | 2 +- .github/workflows/linters.yml | 6 +++--- .github/workflows/update-v8.yml | 2 +- .github/workflows/update-wpt.yml | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 97d9c9482b2754..2588bc82da3f66 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -50,7 +50,7 @@ jobs: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index f6273871a8a26b..4cd44c6d18538f 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -23,7 +23,7 @@ jobs: persist-credentials: false - run: git reset HEAD^2 - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Validate commit message diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index 556843635dd676..e9e151ba3d287c 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -72,7 +72,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install @node-core/utils diff --git a/.github/workflows/create-release-proposal.yml b/.github/workflows/create-release-proposal.yml index 0ce9a40541c87e..58cf5a0bba55f6 100644 --- a/.github/workflows/create-release-proposal.yml +++ b/.github/workflows/create-release-proposal.yml @@ -40,7 +40,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index db358bfe04bd1c..3cc6e6c54cd28c 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -51,7 +51,7 @@ jobs: run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-x64"))][0].version')" >> $GITHUB_ENV - name: Install Node.js id: setup-node - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NIGHTLY || matrix.node-version }} check-latest: true diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index b6ba485f48f072..ae2b7a577f7b0f 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -19,7 +19,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index c8a80d59e30948..1793edd12ce261 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 595751b6a455a9..269bc2db172be8 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -25,7 +25,7 @@ jobs: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index e553a5145128c7..9e294994ba8180 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -34,7 +34,7 @@ jobs: repository: nodejs/TSC - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index a56c279cfce2e6..b3db61eca640f7 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -29,7 +29,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -60,7 +60,7 @@ jobs: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -97,7 +97,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/update-v8.yml b/.github/workflows/update-v8.yml index a53f28ba4baf4c..0b290e41ada4a0 100644 --- a/.github/workflows/update-v8.yml +++ b/.github/workflows/update-v8.yml @@ -30,7 +30,7 @@ jobs: ~/.npm key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install @node-core/utils diff --git a/.github/workflows/update-wpt.yml b/.github/workflows/update-wpt.yml index 8052857405557a..bd43791e6c860b 100644 --- a/.github/workflows/update-wpt.yml +++ b/.github/workflows/update-wpt.yml @@ -32,7 +32,7 @@ jobs: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: ${{ env.NODE_VERSION }} From d49ff34adb3f8f68d98376502c2893f97c04083b Mon Sep 17 00:00:00 2001 From: Jimmy Leung <43258070+hkleungai@users.noreply.github.com> Date: Sun, 4 May 2025 03:24:42 +0800 Subject: [PATCH 07/16] doc: add missing options.signal to readlinePromises.createInterface() From the source code, `readlinePromises.createInterface()` calls `new Interface()` imported from `internal/readline/interface`, which works the same as the non-promise version. If non-promise version accepts options.signal, it should also work for `readlinePromises.createInterface()`. Hence this information need to be indicated in the documentation. Refs: https://github.com/nodejs/node/blob/main/lib/readline/promises.js PR-URL: https://github.com/nodejs/node/pull/55456 Reviewed-By: Luigi Pinca --- doc/api/readline.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/api/readline.md b/doc/api/readline.md index 4f191127fd1d04..e3cb1ed0da6d97 100644 --- a/doc/api/readline.md +++ b/doc/api/readline.md @@ -710,6 +710,7 @@ added: v17.0.0 **Default:** `500`. * `tabSize` {integer} The number of spaces a tab is equal to (minimum 1). **Default:** `8`. + * `signal` {AbortSignal} Allows closing the interface using an AbortSignal. * Returns: {readlinePromises.Interface} The `readlinePromises.createInterface()` method creates a new `readlinePromises.Interface` From a883b0c979616e3eebd155f714a47cb8634e752a Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Sun, 4 May 2025 10:37:28 +0200 Subject: [PATCH 08/16] build: use //third_party/simdutf by default in GN PR-URL: https://github.com/nodejs/node/pull/58115 Reviewed-By: Cheng Zhao Reviewed-By: Yagiz Nizipli Reviewed-By: Chengzhong Wu --- node.gni | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node.gni b/node.gni index a2123cc6c6d21c..35ccd0487f20ce 100644 --- a/node.gni +++ b/node.gni @@ -14,7 +14,7 @@ declare_args() { node_openssl_path = "$node_path/deps/openssl" # The location of simdutf - use the one from node's deps by default. - node_simdutf_path = "$node_path/deps/simdutf" + node_simdutf_path = "//third_party/simdutf" # The NODE_MODULE_VERSION defined in node_version.h. node_module_version = exec_script("$node_path/tools/getmoduleversion.py", [], "value") From d38e811c5bdc6941f1f623f901db1662d167e744 Mon Sep 17 00:00:00 2001 From: Miguel Marcondes Filho Date: Sun, 4 May 2025 16:55:30 -0300 Subject: [PATCH 09/16] benchmark: fix typo in method name for error-stack PR-URL: https://github.com/nodejs/node/pull/58128 Reviewed-By: Daeyeon Jeong Reviewed-By: Rafael Gonzaga Reviewed-By: Edy Silva --- benchmark/es/error-stack.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/es/error-stack.js b/benchmark/es/error-stack.js index 3b373dcdae63c8..2cc3321640c5cd 100644 --- a/benchmark/es/error-stack.js +++ b/benchmark/es/error-stack.js @@ -10,7 +10,7 @@ const bench = common.createBenchmark(main, { 'without-sourcemap', 'sourcemap', 'node-modules-without-sourcemap', - 'node-module-sourcemap'], + 'node-modules-sourcemap'], n: [1e5], }); From e732a8bfddba3448456c56602ffc37e1766fb324 Mon Sep 17 00:00:00 2001 From: Miguel Marcondes Filho Date: Sun, 4 May 2025 17:04:55 -0300 Subject: [PATCH 10/16] doc: fix typo in benchmark script path PR-URL: https://github.com/nodejs/node/pull/58129 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Reviewed-By: Darshan Sen Reviewed-By: Trivikram Kamat Reviewed-By: Daeyeon Jeong Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga --- doc/contributing/writing-and-running-benchmarks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contributing/writing-and-running-benchmarks.md b/doc/contributing/writing-and-running-benchmarks.md index 63fbf75c798833..1ff494c7c4d90f 100644 --- a/doc/contributing/writing-and-running-benchmarks.md +++ b/doc/contributing/writing-and-running-benchmarks.md @@ -101,7 +101,7 @@ benchmarks. This increases the likelihood of each benchmark achieving peak perfo according to the hardware. Therefore, run: ```console -$ ./benchmarks/cpu.sh fast +$ ./benchmark/cpu.sh fast ``` ### Running individual benchmarks From 5946785bf4a3e356b54d9d41ec125e8431763c43 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 4 May 2025 22:11:53 -0700 Subject: [PATCH 11/16] tools: exclude deps/v8/tools from CodeQL scans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will remove three of the four "A parse error occurred" issues during JavaScript CodeQL scans. (The fourth occurrence is in our code base, although it might be a false positive. Someone can figure that one out sooner or later, but we certainly can bypass scanning V8 tools.) PR-URL: https://github.com/nodejs/node/pull/58132 Reviewed-By: Juan José Arboleda Reviewed-By: Colin Ihrig Reviewed-By: Trivikram Kamat Reviewed-By: Ulises Gascón --- .github/codeql-config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml index 0d324d49dc0689..4e81d7e041e68a 100644 --- a/.github/codeql-config.yml +++ b/.github/codeql-config.yml @@ -3,3 +3,4 @@ name: CodeQL config paths-ignore: - test - deps/v8/test + - deps/v8/tools From 46bee52d57f14ff0d41b5e5e06e0e4c4e10f102e Mon Sep 17 00:00:00 2001 From: Jimmy Leung <43258070+hkleungai@users.noreply.github.com> Date: Tue, 6 May 2025 02:50:50 +0800 Subject: [PATCH 12/16] doc: fix misaligned options in vm.compileFunction() Current alignment mislead doc reader into thinking `importModuleDynamically` is a separate positional param right next to `options`, which is incorrect and need to be fixed. This misalignment is introduced in a PR merged in Feb 2024. I belive this doc fix applies to node v20 and above. Refs: https://github.com/nodejs/node/pull/51244 PR-URL: https://github.com/nodejs/node/pull/58145 Reviewed-By: Darshan Sen Reviewed-By: Daeyeon Jeong --- doc/api/vm.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/api/vm.md b/doc/api/vm.md index c7ca77fac93673..b0b550093d7f4d 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -1044,13 +1044,13 @@ changes: * `contextExtensions` {Object\[]} An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling. **Default:** `[]`. -* `importModuleDynamically` - {Function|vm.constants.USE\_MAIN\_CONTEXT\_DEFAULT\_LOADER} - Used to specify the how the modules should be loaded during the evaluation of - this function when `import()` is called. This option is part of the - experimental modules API. We do not recommend using it in a production - environment. For detailed information, see - [Support of dynamic `import()` in compilation APIs][]. + * `importModuleDynamically` + {Function|vm.constants.USE\_MAIN\_CONTEXT\_DEFAULT\_LOADER} + Used to specify the how the modules should be loaded during the evaluation of + this function when `import()` is called. This option is part of the + experimental modules API. We do not recommend using it in a production + environment. For detailed information, see + [Support of dynamic `import()` in compilation APIs][]. * Returns: {Function} Compiles the given code into the provided context (if no context is From 0b54f06b6f832d7892c6459455ba65f3e6661838 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Sun, 23 Mar 2025 16:31:45 -0500 Subject: [PATCH 13/16] doc: add ambassaor message PR-URL: https://github.com/nodejs/node/pull/57600 Reviewed-By: Moshe Atlow Reviewed-By: Michael Dawson Reviewed-By: Marco Ippolito --- .../advocacy-ambassador-program.md | 81 ++++++++++++++----- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/doc/contributing/advocacy-ambassador-program.md b/doc/contributing/advocacy-ambassador-program.md index 76f29b73586691..e8c7936c9412b4 100644 --- a/doc/contributing/advocacy-ambassador-program.md +++ b/doc/contributing/advocacy-ambassador-program.md @@ -123,29 +123,29 @@ when no longer relevant. The goal is to raise awareness of XYZ in the JavaScript ecosystem. -#### Related Links +##### Related Links -List of links with more information about the topic to provide brackground +List of links with more information about the topic to provide background or the information to be shared. -#### Project contacts +##### Project contacts Add a list of GitHub handles for those within the project that -have volunteered to be contacated when necessary by ambassadors +have volunteered to be contacted when necessary by ambassadors to get more info about the message to be promoted. #### Node.js is a great choice for a JavaScript runtime ##### Goal -Highlight the benefits of chosing Node.js as your backend JavaScript runtime. Focus on what is great +Highlight the benefits of choosing Node.js as your backend JavaScript runtime. Focus on what is great about Node.js without drawing comparisons to alternatives. We don't want to say negative things about other options, only highlight what is great about Node.js as a choice. Some of the things to highlight include: -* How widely it is used (you never get fired for chosing Node.js). -* The openess of the project. It is part of the OpenJS Foundation and it's governance is set up to avoid +* How widely it is used (you never get fired for choosing Node.js). +* The openness of the project. It is part of the OpenJS Foundation and it's governance is set up to avoid any one company from dominating the project. Decisions are made by the collaborators (of which there are quite a few) versus a small number of people. * It has predictable and stable releases and has delivered on the release schedule since 2015. @@ -157,7 +157,7 @@ Some of the things to highlight include: * Single threaded programming model enables very low resource consumption, making it ideal for containerised workloads. * Highly vibrant ecosystem with enterprise support from many vendors. -#### Related Links +##### Related Links * * @@ -165,13 +165,13 @@ Some of the things to highlight include: * for slide usage and topping recent surveys. -#### Project contacts +##### Project contacts * @mhdawson -### How things get done in the Node.js project +#### How things get done in the Node.js project -#### Goal +##### Goal Help people understand that no people are paid to answer their issues or implement their pull requests. Things get done based on what volunteers work on @@ -182,7 +182,7 @@ Some of the things to highlight include: * Nobody is paid specifically to answer issues, fix bugs or implement new features. * No company owns/supports Node.js. Most contributions are from individuals as opposed to organizations. When an individual becomes a collaborator - the access and priviledges are granted to the indidual, their employer does + the access and privileges are granted to the individual, their employer does not gain any additional rights in the project. * The governance of the project is specifically designed to prevent one or a small number of companies from dominating the project. @@ -198,10 +198,10 @@ Some of the things to highlight include: * People are volunteering their time to review your PRs and answer questions in the issues you open. Be mindfull of your asks for their time and acknowledge the gift of their time. Too many issues/PRs in a short period of time may - overwelm maintainers leading to less progress versus more, try to pace your + overwhelm maintainers leading to less progress versus more, try to pace your issues and PRs so that you don't have too many open at the same time. The - same goes for comments in discussions, try to avoid overwelming a discussion - with too many responses, even too much useful data can overwelm a discussion + same goes for comments in discussions, try to avoid overwhelming a discussion + with too many responses, even too much useful data can overwhelm a discussion leading to lower engagement. * While volunteers work to do the right thing for the community, the project does not owe anybody anything and does not tolerate abusive or @@ -210,11 +210,11 @@ Some of the things to highlight include: * If you depend on timely support or an SLA, contract with a company that provides paid support and will prioritize your issues. -#### Related Links +##### Related Links * -#### Project contacts +##### Project contacts * @mcollina * @mhdawson @@ -233,7 +233,7 @@ Some of the things to highlight include: * The `tsconfig.json` configuration options to use in combination for type checking. * Updates on the implementation advancements. -#### Related Links +##### Related Links @@ -245,6 +245,49 @@ Some of the things to highlight include: -#### Project contacts +##### Project contacts * @marco-ippolito + +#### Do I still need this dependency for my Node.js app? + +##### Goal + +Advancements over time in Node.js are improving the out of the box experience. +New versions are released all the time across Active LTS and Current development lines. +It's easy to miss something between the release notes and our busy work schedules. + +Each of these on its own is respectable, but together they make a more cohesive narrative. +This also shows a [healthy ecosystem at work](https://brianmuenzenmeyer.com/posts/2024-do-i-need-this-node-dependency/#oss-pace-layers), +with projects learning from one another and their users. + +"Recent" new or newish features, ordered by availability: + +| Feature | Introduced | Release Status | +| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------ | +| [testing source code](https://nodejs.org/api/test.html) | [16.17.0](https://nodejs.org/en/blog/release/v16.17.0) | Stable as of 20.0.0 | +| [watching source code](https://nodejs.org/api/cli.html#--watch) | [16.19.0](https://nodejs.org/en/blog/release/v16.19.0) | Stable as of 20.13.0 | +| [parsing arguments](https://nodejs.org/api/util.html#utilparseargsconfig) | [18.3.0](https://nodejs.org/en/blog/release/v18.3.0) | Stable as of 20.0.0 | +| [reading environment](https://nodejs.org/api/cli.html#--env-fileconfig) | [20.6.0](https://nodejs.org/en/blog/release/v20.6.0) | Active Development | +| [styling output](https://nodejs.org/docs/latest-v22.x/api/util.html#utilstyletextformat-text-options) | [20.12.0](https://nodejs.org/en/blog/release/v20.12.0) | Stable, as of [22.13.0](https://github.com/nodejs/node/pull/56329) | +| [run scripts](https://nodejs.org/docs/latest/api/cli.html#--run) | [22.0.0](https://nodejs.org/en/blog/release/v22.0.0) | Stable, as of 22.0.0 | +| [run TypeScript](https://nodejs.org/api/cli.html#--experimental-strip-types) | [22.6.0](https://nodejs.org/en/blog/release/v22.6.0) | Active Development | + +##### Related Links + + + +* +* +* +* +* +* +* +* + + + +##### Project contacts + +* @bmuenzenmeyer From 1e57cb686ef6f21037dfacb4a9d6488e00215df7 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 7 May 2025 09:30:48 +0200 Subject: [PATCH 14/16] doc: add history entries to `--input-type` section PR-URL: https://github.com/nodejs/node/pull/58175 Reviewed-By: Luigi Pinca Reviewed-By: James M Snell --- doc/api/cli.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index ea39f5e8f9f208..1c0dd834fbe2fe 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1457,12 +1457,21 @@ forked processes, or clustered processes. This configures Node.js to interpret `--eval` or `STDIN` input as CommonJS or as an ES module. Valid values are `"commonjs"`, `"module"`, `"module-typescript"` and `"commonjs-typescript"`. The `"-typescript"` values are not available with the flag `--no-experimental-strip-types`. -The default is `"commonjs"`. +The default is no value, or `"commonjs"` if `--no-experimental-detect-module` is passed. If `--input-type` is not provided, Node.js will try to detect the syntax with the following steps: From 3d84b5c7a4bb6a7cd9c452646726940212149884 Mon Sep 17 00:00:00 2001 From: Wiyeong Seo Date: Wed, 7 May 2025 21:26:33 -0500 Subject: [PATCH 15/16] doc: add HBSPS as triager PR-URL: https://github.com/nodejs/node/pull/57980 Reviewed-By: Daeyeon Jeong Reviewed-By: Luigi Pinca Reviewed-By: Chemi Atlow Reviewed-By: Xuguang Mei --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 38a0afaaa36361..a199de3cb9aa16 100644 --- a/README.md +++ b/README.md @@ -755,6 +755,8 @@ maintaining the Node.js project. **Gireesh Punathil** <> (he/him) * [gurgunday](https://github.com/gurgunday) - **Gürgün Dayıoğlu** <> +* [HBSPS](https://github.com/HBSPS) - + **Wiyeong Seo** <> * [iam-frankqiu](https://github.com/iam-frankqiu) - **Frank Qiu** <> (he/him) * [KevinEady](https://github.com/KevinEady) - From f7b92d7d6766a1c812004970227653071322bbd5 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Thu, 8 May 2025 04:10:18 -0400 Subject: [PATCH 16/16] 2025-05-08, Version 24.0.1 (Current) Notable changes: buffer: * Revert "buffer: move SlowBuffer to EOL (Filip Skokan) https://github.com/nodejs/node/pull/58211 PR-URL: https://github.com/nodejs/node/pull/58226 --- CHANGELOG.md | 3 ++- doc/changelogs/CHANGELOG_V24.md | 27 +++++++++++++++++++++++++++ src/node_version.h | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b679cbdb251f0..5aa090cbca3bf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,7 +40,8 @@ release. -24.0.0
+24.0.1
+24.0.0
23.11.0
diff --git a/doc/changelogs/CHANGELOG_V24.md b/doc/changelogs/CHANGELOG_V24.md index 0f9d6bb681be91..b98eea964bc857 100644 --- a/doc/changelogs/CHANGELOG_V24.md +++ b/doc/changelogs/CHANGELOG_V24.md @@ -8,6 +8,7 @@ +24.0.1
24.0.0
@@ -39,6 +40,32 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + + +## 2025-05-08, Version 24.0.1 (Current), @aduh95 + +### Notable Changes + +* \[[`2e1d9581e0`](https://github.com/nodejs/node/commit/2e1d9581e0)] - _**Revert**_ "**buffer**: move SlowBuffer to EOL" (Filip Skokan) [#58211](https://github.com/nodejs/node/pull/58211) + +### Commits + +* \[[`d38e811c5b`](https://github.com/nodejs/node/commit/d38e811c5b)] - **benchmark**: fix typo in method name for error-stack (Miguel Marcondes Filho) [#58128](https://github.com/nodejs/node/pull/58128) +* \[[`2e1d9581e0`](https://github.com/nodejs/node/commit/2e1d9581e0)] - _**Revert**_ "**buffer**: move SlowBuffer to EOL" (Filip Skokan) [#58211](https://github.com/nodejs/node/pull/58211) +* \[[`a883b0c979`](https://github.com/nodejs/node/commit/a883b0c979)] - **build**: use //third\_party/simdutf by default in GN (Shelley Vohr) [#58115](https://github.com/nodejs/node/pull/58115) +* \[[`3d84b5c7a4`](https://github.com/nodejs/node/commit/3d84b5c7a4)] - **doc**: add HBSPS as triager (Wiyeong Seo) [#57980](https://github.com/nodejs/node/pull/57980) +* \[[`1e57cb686e`](https://github.com/nodejs/node/commit/1e57cb686e)] - **doc**: add history entries to `--input-type` section (Antoine du Hamel) [#58175](https://github.com/nodejs/node/pull/58175) +* \[[`0b54f06b6f`](https://github.com/nodejs/node/commit/0b54f06b6f)] - **doc**: add ambassaor message (Brian Muenzenmeyer) [#57600](https://github.com/nodejs/node/pull/57600) +* \[[`46bee52d57`](https://github.com/nodejs/node/commit/46bee52d57)] - **doc**: fix misaligned options in vm.compileFunction() (Jimmy Leung) [#58145](https://github.com/nodejs/node/pull/58145) +* \[[`e732a8bfdd`](https://github.com/nodejs/node/commit/e732a8bfdd)] - **doc**: fix typo in benchmark script path (Miguel Marcondes Filho) [#58129](https://github.com/nodejs/node/pull/58129) +* \[[`d49ff34adb`](https://github.com/nodejs/node/commit/d49ff34adb)] - **doc**: add missing options.signal to readlinePromises.createInterface() (Jimmy Leung) [#55456](https://github.com/nodejs/node/pull/55456) +* \[[`bc9f5a2e79`](https://github.com/nodejs/node/commit/bc9f5a2e79)] - **doc**: fix typo of file `zlib.md` (yusheng chen) [#58093](https://github.com/nodejs/node/pull/58093) +* \[[`c8e8558958`](https://github.com/nodejs/node/commit/c8e8558958)] - **doc**: clarify future Corepack removal in v25+ (Trivikram Kamat) [#57825](https://github.com/nodejs/node/pull/57825) +* \[[`b13d5d14bd`](https://github.com/nodejs/node/commit/b13d5d14bd)] - **meta**: bump actions/setup-node from 4.3.0 to 4.4.0 (dependabot\[bot]) [#58111](https://github.com/nodejs/node/pull/58111) +* \[[`0ebb17a300`](https://github.com/nodejs/node/commit/0ebb17a300)] - **meta**: bump actions/setup-python from 5.5.0 to 5.6.0 (dependabot\[bot]) [#58107](https://github.com/nodejs/node/pull/58107) +* \[[`5946785bf4`](https://github.com/nodejs/node/commit/5946785bf4)] - **tools**: exclude deps/v8/tools from CodeQL scans (Rich Trott) [#58132](https://github.com/nodejs/node/pull/58132) +* \[[`0708497c7f`](https://github.com/nodejs/node/commit/0708497c7f)] - **tools**: bump the eslint group in /tools/eslint with 6 updates (dependabot\[bot]) [#58105](https://github.com/nodejs/node/pull/58105) + ## 2025-05-06, Version 24.0.0 (Current), @RafaelGSS and @juanarbol diff --git a/src/node_version.h b/src/node_version.h index 4796eb27d7a0f1..10034fecbdbe2b 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -29,7 +29,7 @@ #define NODE_VERSION_IS_LTS 0 #define NODE_VERSION_LTS_CODENAME "" -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)