Skip to content

Commit 6daa5ed

Browse files
committed
Merge tag 'v22.18.0' into node-v22.18.0-nsolid-v6.0.0-release
2025-07-31 Node.js v22.18.0 Jod (LTS) Release Git-EVTag-v0-SHA512: 54697e2867b91f7258423437f182c3a27f45ba95f91e8446fa67397ab118011c5cf42f4e8b685bc6a73674ab5a82df8948c84b548a58d1b4e1ac81d2874276b8
2 parents f4e314c + c9ff1ae commit 6daa5ed

1,030 files changed

Lines changed: 18048 additions & 12417 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,3 +216,10 @@
216216
/src/node_options.* @nodejs/config
217217
/test/parallel/test-config-* @nodejs/config
218218
/test/parallel/test-dotenv-* @nodejs/config
219+
220+
# Inspector
221+
/src/inspector/* @nodejs/inspector
222+
/src/inspector_* @nodejs/inspector
223+
/lib/internal/inspector/* @nodejs/inspector
224+
/lib/internal/inspector_* @nodejs/inspector
225+
/lib/inspector.js @nodejs/inspector

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ jobs:
2727

2828
# Initializes the CodeQL tools for scanning.
2929
- name: Initialize CodeQL
30-
uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
30+
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
3131
with:
3232
languages: ${{ matrix.language }}
3333
config-file: ./.github/codeql-config.yml
3434

3535
- name: Autobuild
36-
uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
36+
uses: github/codeql-action/autobuild@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
3737

3838
- name: Perform CodeQL Analysis
39-
uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
39+
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
4040
with:
4141
category: /language:${{matrix.language}}

.github/workflows/commit-queue.yml

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This action requires the following secrets to be set on the repository:
2-
# GH_USER_NAME: GitHub user whose Jenkins and GitHub token are defined below
32
# GH_USER_TOKEN: GitHub user token, to be used by ncu and to push changes
3+
# JENKINS_USER: GitHub user whose Jenkins token is defined below
44
# JENKINS_TOKEN: Jenkins token, to be used to check CI status
55

66
name: Commit Queue
@@ -34,24 +34,24 @@ jobs:
3434
id: get_mergeable_prs
3535
run: |
3636
prs=$(gh pr list \
37-
--repo ${{ github.repository }} \
38-
--base ${{ github.ref_name }} \
37+
--repo "$GITHUB_REPOSITORY" \
38+
--base "$GITHUB_REF_NAME" \
3939
--label 'commit-queue' \
4040
--json 'number' \
4141
--search "created:<=$(date --date="2 days ago" +"%Y-%m-%dT%H:%M:%S%z") -label:blocked" \
4242
-t '{{ range . }}{{ .number }} {{ end }}' \
4343
--limit 100)
4444
fast_track_prs=$(gh pr list \
45-
--repo ${{ github.repository }} \
46-
--base ${{ github.ref_name }} \
45+
--repo "$GITHUB_REPOSITORY" \
46+
--base "$GITHUB_REF_NAME" \
4747
--label 'commit-queue' \
4848
--label 'fast-track' \
4949
--search "-label:blocked" \
5050
--json 'number' \
5151
-t '{{ range . }}{{ .number }} {{ end }}' \
5252
--limit 100)
5353
numbers=$(echo $prs' '$fast_track_prs | jq -r -s 'unique | join(" ")')
54-
echo "numbers=$numbers" >> $GITHUB_OUTPUT
54+
echo "numbers=$numbers" >> "$GITHUB_OUTPUT"
5555
env:
5656
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5757
commitQueue:
@@ -61,9 +61,6 @@ jobs:
6161
steps:
6262
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
6363
with:
64-
# Needs the whole git history for ncu to work
65-
# See https://github.com/nodejs/node-core-utils/pull/486
66-
fetch-depth: 0
6764
# A personal token is required because pushing with GITHUB_TOKEN will
6865
# prevent commits from running CI after they land. It needs
6966
# to be set here because `checkout` configures GitHub authentication
@@ -80,24 +77,23 @@ jobs:
8077

8178
- name: Set variables
8279
run: |
83-
echo "REPOSITORY=$(echo ${{ github.repository }} | cut -d/ -f2)" >> $GITHUB_ENV
84-
echo "OWNER=${{ github.repository_owner }}" >> $GITHUB_ENV
80+
echo "REPOSITORY=$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)" >> "$GITHUB_ENV"
8581
8682
- name: Configure @node-core/utils
8783
run: |
88-
ncu-config set branch ${GITHUB_REF_NAME}
84+
ncu-config set branch "${GITHUB_REF_NAME}"
8985
ncu-config set upstream origin
9086
ncu-config set username "$USERNAME"
91-
ncu-config set token "$GH_TOKEN"
87+
ncu-config set token "$GITHUB_TOKEN"
9288
ncu-config set jenkins_token "$JENKINS_TOKEN"
9389
ncu-config set repo "${REPOSITORY}"
94-
ncu-config set owner "${OWNER}"
90+
ncu-config set owner "${GITHUB_REPOSITORY_OWNER}"
9591
env:
9692
USERNAME: ${{ secrets.JENKINS_USER }}
97-
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
93+
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
9894
JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }}
9995

10096
- name: Start the Commit Queue
101-
run: ./tools/actions/commit-queue.sh ${{ env.OWNER }} ${{ env.REPOSITORY }} ${{ needs.get_mergeable_prs.outputs.numbers }}
97+
run: ./tools/actions/commit-queue.sh "${GITHUB_REPOSITORY_OWNER}" "${REPOSITORY}" ${{ needs.get_mergeable_prs.outputs.numbers }}
10298
env:
10399
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}

.github/workflows/scorecard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333

3434
steps:
3535
- name: Harden Runner
36-
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
36+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
3737
with:
3838
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
3939

@@ -73,6 +73,6 @@ jobs:
7373

7474
# Upload the results to GitHub's code scanning dashboard.
7575
- name: Upload to code-scanning
76-
uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
76+
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
7777
with:
7878
sarif_file: results.sarif

.mailmap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,8 @@ Rebecca Turner <me@re-becca.org> <rebecca@npmjs.com>
436436
Refael Ackermann <refack@gmail.com> <refael@empeeric.com>
437437
Reza Akhavan <reza@akhavan.me>
438438
Ricardo Sánchez Gregorio <me@richnologies.io>
439-
Richard Lau <rlau@redhat.com> <riclau@uk.ibm.com>
439+
Richard Lau <richard.lau@ibm.com> <riclau@uk.ibm.com>
440+
Richard Lau <richard.lau@ibm.com> <rlau@redhat.com>
440441
Rick Olson <technoweenie@gmail.com>
441442
rickyes <0x19951125@gmail.com> <ives199511@gmail.com>
442443
rickyes <0x19951125@gmail.com> <mail@zhoumq.cn>

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ release.
3737
</tr>
3838
<tr>
3939
<td valign="top">
40-
<b><a href="doc/changelogs/CHANGELOG_V22.md#22.17.1">22.17.1</a></b><br/>
40+
<b><a href="doc/changelogs/CHANGELOG_V22.md#22.18.0">22.18.0</a></b><br/>
41+
<a href="doc/changelogs/CHANGELOG_V22.md#22.17.1">22.17.1</a><br/>
4142
<a href="doc/changelogs/CHANGELOG_V22.md#22.17.0">22.17.0</a><br/>
4243
<a href="doc/changelogs/CHANGELOG_V22.md#22.16.0">22.16.0</a><br/>
4344
<a href="doc/changelogs/CHANGELOG_V22.md#22.15.1">22.15.1</a><br/>

GOVERNANCE.md

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,17 @@ Charter need approval by the OpenJS Foundation Cross-Project Council (CPC).
101101
The TSC meets in a video conference call. Each year, the TSC elects a chair to
102102
run the meetings. The TSC streams its meetings for public viewing on YouTube.
103103

104+
TSC meetings may consist of a public portion and a private portion. The private
105+
portion is used to discuss sensitive topics, such as personnel issues,
106+
security vulnerabilities, or other confidential matters. Private discussions
107+
should be avoided as much as possible, and the TSC should strive to keep
108+
discussions in the public portion of the meeting, but there are times when
109+
private discussions are necessary.
110+
104111
The TSC agenda includes issues that are at an impasse. The intention of the
105112
agenda is not to review or approve all patches. Collaborators review and approve
106-
patches on GitHub.
113+
patches on GitHub. The preference is to minimize the need for TSC meetings to
114+
make decisions that can otherwise be made by collaborators on GitHub.
107115

108116
Any community member can create a GitHub issue asking that the TSC review
109117
something. If consensus-seeking fails for an issue, a collaborator may apply the
@@ -113,21 +121,55 @@ Before each TSC meeting, the meeting chair will share the agenda with members of
113121
the TSC. TSC members can also add items to the agenda at the beginning of each
114122
meeting. The meeting chair and the TSC cannot veto or remove items.
115123

116-
The TSC may invite people to take part in a non-voting capacity.
117-
118-
During the meeting, the TSC chair ensures that someone takes minutes. After the
119-
meeting, the TSC chair ensures that someone opens a pull request with the
120-
minutes.
121-
122-
The TSC seeks to resolve as many issues as possible outside meetings using
123-
[the TSC issue tracker](https://github.com/nodejs/TSC/issues). The process in
124-
the issue tracker is:
124+
The TSC may invite people to take part in a non-voting capacity in either the
125+
public or private portions of the meeting.
126+
127+
During the public portion of the meeting, the TSC chair ensures that someone
128+
takes minutes that include a summary of the discussion and any
129+
decisions made. After the meeting, the TSC chair ensures that someone opens a
130+
public pull request with the minutes from the public portion of the meeting.
131+
132+
The public portion of the TSC meeting is expected to be recorded and made
133+
available for live streaming during the meeting or download by anyone after.
134+
This expectation is to be announced to all participants at the start of the
135+
each meeting before the recording is started. Continued participation in the
136+
public portion of the meeting after this announcement is interpreted as consent to the
137+
recording.
138+
139+
For the private portion of the meeting, the TSC chair ensures that someone
140+
produces a summary of the discussions, gets it reviewed by the attendees,
141+
and shares it to all the TSC members once approved by the attendees via a
142+
private discussion channel such as the TSC private mailing list. The summary
143+
may be made public if there is consensus within the TSC and the non-TSC
144+
attendees to make it public.
145+
146+
Recording the private portion of a meeting or maintaining or publishing a
147+
detailed transcript is only permitted when all participants present during the
148+
private portion of the meeting explicitly agree to the recording and/or
149+
transcript, in order to comply to privacy regulations.
150+
151+
All discussions made during meetings are considered provisional, receiving no
152+
objections from folks at the TSC meeting to take an action is not equivalent to
153+
the TSC endorsing that action.
154+
155+
If a quorum of TSC voting members is present, it is possible to call for an
156+
explicit vote, and take the vote immediately if there are no objections. The
157+
decision is considered confirmed once the rest of the TSC voting members have
158+
been informed and no objection for taking that vote has been raised in 48 hours.
159+
To clarify, TSC voting members can object to the vote taking place during the
160+
meeting, but not to the vote itself.
161+
162+
For discussions outside of meetings, the TSC uses
163+
[the TSC issue tracker](https://github.com/nodejs/TSC/issues) for public
164+
issues, and the private TSC email list for private matters. The process for
165+
public issues in the issue tracker is:
125166

126167
* A TSC member opens an issue explaining the proposal/issue and @-mentions
127168
@nodejs/tsc.
128169
* The proposal passes if, after 72 hours, there are two or more TSC voting
129170
member approvals and no TSC voting member opposition.
130-
* If there is an extended impasse, a TSC member may make a motion for a vote.
171+
* If there is an extended impasse, a TSC member may ask for the issue to be
172+
added to the TSC agenda, or make a motion for a vote.
131173

132174
## Collaborator nominations
133175

LICENSE

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,9 +1545,9 @@ The externally maintained libraries used by Node.js are:
15451545
- zlib, located at deps/zlib, is licensed as follows:
15461546
"""
15471547
zlib.h -- interface of the 'zlib' general purpose compression library
1548-
version 1.3.0.1, August xxth, 2023
1548+
version 1.3.1, January 22nd, 2024
15491549

1550-
Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler
1550+
Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
15511551

15521552
This software is provided 'as-is', without any express or implied
15531553
warranty. In no event will the authors be held liable for any damages

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ testclean: ## Remove test artifacts.
220220
distclean: ## Remove all build and test artifacts.
221221
$(RM) -r out
222222
$(RM) config.gypi icu_config.gypi
223-
$(RM) config.mk
223+
$(RM) config.mk config.status
224224
$(RM) -r $(NODE_EXE) $(NODE_G_EXE)
225225
$(RM) -r node_modules
226226
$(RM) -r deps/icu
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
'use strict';
2+
3+
const common = require('../common.js');
4+
const assert = require('assert');
5+
const fixtures = require('../../test/common/fixtures');
6+
7+
const bench = common.createBenchmark(
8+
main,
9+
{
10+
operation: [
11+
'findSourceMap-valid',
12+
'findSourceMap-generated-source',
13+
],
14+
n: [1e5],
15+
},
16+
);
17+
18+
function main({ operation, n }) {
19+
const Module = require('node:module');
20+
21+
Module.setSourceMapsSupport(true, {
22+
generatedCode: true,
23+
});
24+
const validFileName = fixtures.path('test-runner/source-maps/line-lengths/index.js');
25+
26+
const fileNameKey = '/source-map/disk.js';
27+
const generatedFileName = fixtures.path(fileNameKey);
28+
const generatedFileContent = fixtures.readSync(fileNameKey, 'utf8');
29+
const sourceMapUrl = generatedFileName.replace(/\.js$/, '.map');
30+
const sourceWithGeneratedSourceMap =
31+
`${generatedFileContent}\n//# sourceMappingURL=${sourceMapUrl}\n//# sourceURL=${generatedFileName}`;
32+
const generatedExpectedUrl = `file://${generatedFileName}`;
33+
34+
let sourceMap;
35+
switch (operation) {
36+
case 'findSourceMap-valid':
37+
require(validFileName);
38+
39+
bench.start();
40+
for (let i = 0; i < n; i++) {
41+
sourceMap = Module.findSourceMap(validFileName);
42+
}
43+
bench.end(n);
44+
break;
45+
46+
case 'findSourceMap-generated-source':
47+
eval(sourceWithGeneratedSourceMap);
48+
49+
bench.start();
50+
for (let i = 0; i < n; i++) {
51+
sourceMap = Module.findSourceMap(generatedExpectedUrl);
52+
}
53+
bench.end(n);
54+
break;
55+
56+
default:
57+
throw new Error(`Unknown operation: ${operation}`);
58+
}
59+
assert.ok(sourceMap);
60+
}

0 commit comments

Comments
 (0)