Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net: introduce net.BlockList #34625

Closed
wants to merge 1 commit into from
Closed

Conversation

jasnell
Copy link
Member

@jasnell jasnell commented Aug 4, 2020

This PR introduces the net.BlockList object:

net.BlockList provides an object intended to be used by net APIs to specify rules for disallowing network activity with specific IP addresses. This commit adds the basic mechanism but does not add the
specific uses.

For instance:

const blockList = new net.BlockList();
blockList.addAddress('123.123.123.123');
blockList.addAddress('::f8f8', 'ipv6');
blockList.addRange('10.0.0.1', '10.0.0.10');
blockList.addSubnet('123.123.0.0', 16); // subnet 123.123.0.0/16

console.log(blockList.check('123.123.123.123'));   // true!

// IPv6 notation for IPv4 addresses is supported:
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6'));   // true!

While the BlockList can be used on it's own, the intent is for the BlockList object to be passed into existing net APIs. For listen(), the BlockList will be checked as close to the libuv code that accepts the incoming connection as possible. For connect(), it would check as early as possible. These uses have not yet be implemented, however. Those would come in separate PRs.

The QUIC implementation will be the immediate first use of this:

const blockList = new BlockList();
// ... add rules

const sock = net.createQuicSocket({ blockList });
sock.listen();

When listening for new QUIC session requests, any received from blocked IP addresses will be automatically rejected.

The QUIC implementation would also have a setting that would allow misbehaving IP addresses to automatically be added to the configured BlockList (if provided) when a bad behavior threshhold has been reached.

const blockList = new BlockList();
// ... add rules

const sock = net.createQuicSocket({ blockList, autoBlock: true });
sock.listen();

If the QUIC implementation detects, for instance, that a remote IP is misbehaving, after a certain number of detected failures, the remote address would be added automatically to the given blockList if the autoBlock option is true.

The implementation is intentionally not specific to QUIC, however, and may be retrofitted into any of the other net systems.

Some discussion points:

  1. This is a block list only. There are no "allow" rules. So, specifically, it would not be possible to say "block everything except this IP". The reason for that choice is Node.js legacy -- the fact that accept everything has always been the default. I'm not intending to change the default behavior, I want to make it easier to respond to bad behavior as it is detected.

  2. Once an individual rule has been added, there's no way to remove it individually. There's only a single clear() operation that removes all rules. This is for simplicity in the overall API design and implementation. We can always go back and add the ability to remove individual rules later if necessary.

  3. This is implemented at the C++ layer for performance reasons. The overwhelming majority of times this will be used will be with servers, with the check happening as close to libuv as possible. I do not want to incur a JS call cost when performing the check.

  4. The internal implementation is not completed. Right now, this only implements the single address rule. Ranges and subnets are not yet implemented.

  5. For the initial implementation, I'm focusing on just getting it working. I'm sure there will be better ways of implementing the rules internally and those can be incremented on.

  6. There are no JS tests yet, those will come as the implementation continues.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. labels Aug 4, 2020
@jasnell jasnell added the net Issues and PRs related to the net subsystem. label Aug 4, 2020
test/cctest/test_sockaddr.cc Outdated Show resolved Hide resolved
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's not clear how a BlockList is configured on a tcp/udp server.

@jasnell
Copy link
Member Author

jasnell commented Aug 5, 2020

@mcollina the specifics on that would come later but.. the general idea is that the block list would either...

  1. Be specified as an option when creating the tcp or udp socket, or
  2. Be specified as an option when calling listen or bind, or
  3. Be created automatically when the tcp or udp socket is created and accessed via a property.

The first two mean that the BlockList does not exist without usercode. The third makes it always available.

@bmeck
Copy link
Member

bmeck commented Aug 5, 2020

Per topics:

  1. This seems good, I think a different configuration mechanism to opt into an accept list approach is reasonable and it would be unreasonable and confusing to change the default without a completely separate mechanism (cli flag, policies, whatever).

  2. I think we need to be careful about what gives access to the .clear API. Likely I feel this should be an own property rather than a prototype method (may be an API change if so). In particular I would want to avoid snooping/intercepting via prototype crawling or the ability to intercept already existing BlockLists when code is running. We could state that people using the API must save the safe references like we do in primordials but if the main goal of this includes usability it seems some safe defaults would be good. I feel somewhat less strongly about the additive methods since I don't think adding addresses after startup is as common as at startup, but I do still feel that having the API leak could cause minor issues.


Is it possible we might extend other APIs to use a BlockList like when connecting to things using DNS / do we expect growth of use? E.G. if a domain has 2 IPs, blocking 1 would ensure the other is used.


It would be nice as a follow on PR to add some kind of way to configure this on the whole process, but I would not want it via a JS API.

src/node_sockaddr.h Outdated Show resolved Hide resolved
src/node_sockaddr.h Outdated Show resolved Hide resolved
@jasnell
Copy link
Member Author

jasnell commented Aug 5, 2020

@bmeck:

I think we need to be careful about what gives access to the .clear API.

Currently, the only reason clear() exists is address the possibility that an automatic blocking mechanism could cause legitimate IP addresses to get blocked and we'd need a reset. That's an edge case that could be solved in other ways. I'd be fine with not exposing clear() to JavaScript code at all.

@jasnell
Copy link
Member Author

jasnell commented Aug 5, 2020

@bmeck:

Is it possible we might extend other APIs to use a BlockList like when connecting to things using DNS / do we expect growth of use? E.G. if a domain has 2 IPs, blocking 1 would ensure the other is used.

I'd think so yes. Allowing for that kind of flexibility is a key part of the design of this as a standalone component.

It would be nice as a follow on PR to add some kind of way to configure this on the whole process, but I would not want it via a JS API.

Yeah, I've been thinking about that also. What might make sense is allowing BlockList instances to be hierarchical. That would allow us to set a process wide policy while still giving users the flexibility to define their own.

@jasnell
Copy link
Member Author

jasnell commented Aug 5, 2020

One key question on this: Is blocking a specific range of IPs important enough to warrant it's own rule vs. blocking a subnet? e.g. 10.0.0.1-10.0.0.10 (blocks only 10 ips) vs. 10.0.0.0/24 (blocks 255).

@bmeck
Copy link
Member

bmeck commented Aug 5, 2020

@jasnell our internal libs use subnets (even for small sizes of ranges) to my knowledge this is due to CIDR being automatically generated for lots of things. I'm unfamiliar with tools generating that range syntax using -.

@jasnell
Copy link
Member Author

jasnell commented Aug 5, 2020

Ok all, the implementation has been updated significantly.

  • @bmeck -- I've removed the clear() API. We can address that again later if necessary.
  • @addaleax -- the memory tracking has been implemented also

@jasnell jasnell added the semver-minor PRs that contain new features and should be released in the next minor version. label Aug 6, 2020
@jasnell jasnell marked this pull request as ready for review August 6, 2020 00:11
@nodejs-github-bot

This comment has been minimized.

@nodejs-github-bot
Copy link
Collaborator

@dougwilson
Copy link
Member

Sorry for what maybe a dumb question, but doesn't the lack of an API to remove IPs from the block list make this not very usable for limiting bad behavior in a UDP server (like QUIC)? I don't know what the intention for the QUIC autoBlock feature is, of course, but since it is trivial to spoof the source address in a datagram, a block list that will block indefinitely seems of limited use, as it would simply subject the servers that use it to a denial of service type attack, where the attacker sends datagrams spoofed as if they are coming from their target, with the intention to get the IP blocked.

This of course is not the fault of the block list itself, but how one would use it. Unless the user is careful to only add an IP once it can be verified that the source address of a datagram can be trusted (after the completion of a three way handshake or similar), it seems like an easy method of abuse.

Of course, IP block issues are not limited to just UDP, but even TCP is susceptible, as long as both the attacker and the target are behind the same NAT, so the server sees both parties as having the same IP address.

My point here is not to say this should solve that somehow, but only to say that the lack of an API to remove IPs from the block list seems like a feature that would make a block list unusable, since one could not implement a block list with time-based blocking, for example.

Anyway, I just wanted to throw this out there in case it hasn't been considered yet. I'm not here to say don't land this or anything, etc. Great work!

@jasnell
Copy link
Member Author

jasnell commented Aug 6, 2020

@dougwilson ... Yeah, you're absolutely correct about the concern there, and that's why I've gone back and forth. For the QUIC autoBlock idea, an IP would only be added if it has demonstrated definitively bad behavior -- such as repeatedly ignoring retry and stateless reset frames. QUIC does include path validation to detect address spoofing but that's not a mechanism we can fully rely on at this level. So you're absolutely right that it's a risk. Perhaps the compromise here is to allow the low level (C++) api to have the ability to remove individually added IP addresses and for QUIC autoBlock to be time based... More of a penalty box for a limited period of time?

@nodejs-github-bot

This comment has been minimized.

jasnell added a commit that referenced this pull request Aug 11, 2020
`net.BlockList` provides an object intended to be used by net APIs to
specify rules for disallowing network activity with specific IP
addresses. This commit adds the basic mechanism but does not add the
specific uses.

PR-URL: #34625
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
@MylesBorins
Copy link
Contributor

This does not land cleanly on v14.x, @jasnell would you be able to backport?

MylesBorins pushed a commit that referenced this pull request Aug 17, 2020
The test was missing an initialization of the global `ref` variable
because there was also an unused local one, leading to failures
like the one seen in #34625.

PR-URL: #34726
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
BethGriggs pushed a commit that referenced this pull request Aug 20, 2020
The test was missing an initialization of the global `ref` variable
because there was also an unused local one, leading to failures
like the one seen in #34625.

PR-URL: #34726
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
addaleax added a commit that referenced this pull request Sep 22, 2020
The test was missing an initialization of the global `ref` variable
because there was also an unused local one, leading to failures
like the one seen in #34625.

PR-URL: #34726
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
addaleax added a commit that referenced this pull request Sep 22, 2020
The test was missing an initialization of the global `ref` variable
because there was also an unused local one, leading to failures
like the one seen in #34625.

PR-URL: #34726
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
@jimmywarting
Copy link

jimmywarting commented Feb 25, 2021

Hi, i just discovered this. would it be possible to add a ip range using something like
blockList.addRange('192.168.0.0/16') where the 2nd end argument is optional? or can you do it with addAddress? it only says you can add a address that is IPv4 or IPv6 not a range which i guess addRange is meant for

@targos
Copy link
Member

targos commented Aug 8, 2021

Lands cleanly on v14.x if I pull 6d1f0ae first 🎉

targos pushed a commit that referenced this pull request Aug 8, 2021
`net.BlockList` provides an object intended to be used by net APIs to
specify rules for disallowing network activity with specific IP
addresses. This commit adds the basic mechanism but does not add the
specific uses.

PR-URL: #34625
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
BethGriggs pushed a commit that referenced this pull request Aug 12, 2021
`net.BlockList` provides an object intended to be used by net APIs to
specify rules for disallowing network activity with specific IP
addresses. This commit adds the basic mechanism but does not add the
specific uses.

PR-URL: #34625
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
MylesBorins pushed a commit that referenced this pull request Aug 31, 2021
`net.BlockList` provides an object intended to be used by net APIs to
specify rules for disallowing network activity with specific IP
addresses. This commit adds the basic mechanism but does not add the
specific uses.

PR-URL: #34625
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
targos added a commit that referenced this pull request Sep 4, 2021
Notable changes:

assert:
  * change status of legacy asserts (James M Snell) #38113
async_hooks:
  * (SEMVER-MINOR) use new v8::Context PromiseHook API (Stephen Belanger) #36394
buffer:
  * (SEMVER-MINOR) introduce Blob (James M Snell) #36811
  * (SEMVER-MINOR) add base64url encoding option (Filip Skokan) #36952
child_process:
  * (SEMVER-MINOR) allow `options.cwd` receive a URL (Khaidi Chu) #38862
  * (SEMVER-MINOR) add timeout to spawn and fork (Nitzan Uziely) #37256
  * (SEMVER-MINOR) allow promisified exec to be cancel (Carlos Fuentes) #34249
  * (SEMVER-MINOR) add 'overlapped' stdio flag (Thiago Padilha) #29412
cli:
  * (SEMVER-MINOR) add -C alias for --conditions flag (Guy Bedford) #38755
  * (SEMVER-MINOR) add --node-memory-debug option (Anna Henningsen) #35537
deps:
  * (SEMVER-MINOR) V8: cherry-pick fa4cb172cde2 (Stephen Belanger) #38577
  * (SEMVER-MINOR) V8: cherry-pick 4c074516397b (Stephen Belanger) #36394
  * (SEMVER-MINOR) V8: cherry-pick 5f4413194480 (Stephen Belanger) #36394
  * (SEMVER-MINOR) V8: cherry-pick 272445f10927 (Stephen Belanger) #36394
  * (SEMVER-MINOR) V8: backport c0fceaa0669b (Stephen Belanger) #36394
dns:
  * (SEMVER-MINOR) add "tries" option to Resolve options (Luan Devecchi) #39610
  * (SEMVER-MINOR) allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) #38099
doc:
  * (SEMVER-MINOR) add missing change to resolver ctor (Luan Devecchi) #39610
  * refactor fs docs structure (Michaël Zasso) #37170
errors:
  * (SEMVER-MINOR) remove experimental from --enable-source-maps (Benjamin Coe) #37362
esm:
  * deprecate legacy main lookup for modules (Guy Bedford) #36918
fs:
  * (SEMVER-MINOR) allow empty string for temp directory prefix (Voltrex) #39028
  * (SEMVER-MINOR) allow no-params fsPromises fileHandle read (Nitzan Uziely) #38287
  * (SEMVER-MINOR) add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) #37490
  * improve fsPromises readFile performance (Nitzan Uziely) #37608
  * (SEMVER-MINOR) add fsPromises.watch() (James M Snell) #37179
  * (SEMVER-MINOR) allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) #36190
http2:
  * (SEMVER-MINOR) add support for sensitive headers (Anna Henningsen) #34145
  * (SEMVER-MINOR) allow setting the local window size of a session (Yongsheng Zhang) #35978
inspector:
  * mark as stable (Gireesh Punathil) #37748
module:
  * (SEMVER-MINOR) add support for `URL` to `import.meta.resolve` (Antoine du Hamel) #38587
  * (SEMVER-MINOR) add support for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
net:
  * (SEMVER-MINOR) allow net.BlockList to use net.SocketAddress objects (James M Snell) #37917
  * (SEMVER-MINOR) add SocketAddress class (James M Snell) #37917
  * (SEMVER-MINOR) make net.BlockList cloneable (James M Snell) #37917
  * (SEMVER-MINOR) make blocklist family case insensitive (James M Snell) #34864
  * (SEMVER-MINOR) introduce net.BlockList (James M Snell) #34625
node-api:
  * (SEMVER-MINOR) allow retrieval of add-on file name (Gabriel Schulhof) #37195
os:
  * (SEMVER-MINOR) add os.devNull (Luigi Pinca) #38569
perf_hooks:
  * (SEMVER-MINOR) introduce createHistogram (James M Snell) #37155
process:
  * (SEMVER-MINOR) add api to enable source-maps programmatically (legendecas) #39085
  * (SEMVER-MINOR) add `'worker'` event (James M Snell) #38659
  * (SEMVER-MINOR) add direct access to rss without iterating pages (Adrien Maret) #34291
readline:
  * (SEMVER-MINOR) add AbortSignal support to interface (Nitzan Uziely) #37932
  * (SEMVER-MINOR) add support for the AbortController to the question method (Mattias Runge-Broberg) #33676
  * (SEMVER-MINOR) add history event and option to set initial history (Mattias Runge-Broberg) #33662
repl:
  * (SEMVER-MINOR) add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
src:
  * (SEMVER-MINOR) call overload ctor from the original ctor (Darshan Sen) #39768
  * (SEMVER-MINOR) add a constructor overload for CallbackScope (Darshan Sen) #39768
  * (SEMVER-MINOR) fix align in cares_wrap.h (Luan) #39610
  * (SEMVER-MINOR) allow to negate boolean CLI flags (Michaël Zasso) #39023
  * (SEMVER-MINOR) add --heapsnapshot-near-heap-limit option (Joyee Cheung) #33010
  * (SEMVER-MINOR) move node_binding to modern THROW_ERR* (James M Snell) #35469
  * (SEMVER-MINOR) add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441
  * (SEMVER-MINOR) allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447
  * (SEMVER-MINOR) add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #35486
stream:
  * (SEMVER-MINOR) add readableDidRead if has been read from (Robert Nagy) #39589
  * (SEMVER-MINOR) pipeline accept Buffer as a valid first argument (Nitzan Uziely) #37739
test:
  * (SEMVER-MINOR) add wpt tests for Blob (Michaël Zasso) #36811
tls:
  * (SEMVER-MINOR) allow reading data into a static buffer (Andrey Pechkurov) #35753
tools:
  * (SEMVER-MINOR) add `Worker` to type-parser (James M Snell) #38659
url:
  * (SEMVER-MINOR) expose urlToHttpOptions utility (Yongsheng Zhang) #35960
util:
  * (SEMVER-MINOR) expose toUSVString (Robert Nagy) #39814
v8:
  * (SEMVER-MINOR) implement v8.stopCoverage() (Joyee Cheung) #33807
  * (SEMVER-MINOR) implement v8.takeCoverage() (Joyee Cheung) #33807
worker:
  * (SEMVER-MINOR) add setEnvironmentData/getEnvironmentData (James M Snell) #37486

PR-URL: TODO
targos added a commit that referenced this pull request Sep 4, 2021
Notable changes:

assert:
  * change status of legacy asserts (James M Snell) #38113
buffer:
  * (SEMVER-MINOR) introduce Blob (James M Snell) #36811
  * (SEMVER-MINOR) add base64url encoding option (Filip Skokan) #36952
child_process:
  * (SEMVER-MINOR) allow `options.cwd` receive a URL (Khaidi Chu) #38862
  * (SEMVER-MINOR) add timeout to spawn and fork (Nitzan Uziely) #37256
  * (SEMVER-MINOR) allow promisified exec to be cancel (Carlos Fuentes) #34249
  * (SEMVER-MINOR) add 'overlapped' stdio flag (Thiago Padilha) #29412
cli:
  * (SEMVER-MINOR) add -C alias for --conditions flag (Guy Bedford) #38755
  * (SEMVER-MINOR) add --node-memory-debug option (Anna Henningsen) #35537
dns:
  * (SEMVER-MINOR) add "tries" option to Resolve options (Luan Devecchi) #39610
  * (SEMVER-MINOR) allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) #38099
doc:
  * (SEMVER-MINOR) add missing change to resolver ctor (Luan Devecchi) #39610
  * refactor fs docs structure (James M Snell) #37170
errors:
  * (SEMVER-MINOR) remove experimental from --enable-source-maps (Benjamin Coe) #37362
esm:
  * deprecate legacy main lookup for modules (Guy Bedford) #36918
fs:
  * (SEMVER-MINOR) allow empty string for temp directory prefix (Voltrex) #39028
  * (SEMVER-MINOR) allow no-params fsPromises fileHandle read (Nitzan Uziely) #38287
  * (SEMVER-MINOR) add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) #37490
  * improve fsPromises readFile performance (Nitzan Uziely) #37608
  * (SEMVER-MINOR) add fsPromises.watch() (James M Snell) #37179
  * (SEMVER-MINOR) allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) #36190
http2:
  * (SEMVER-MINOR) add support for sensitive headers (Anna Henningsen) #34145
  * (SEMVER-MINOR) allow setting the local window size of a session (Yongsheng Zhang) #35978
inspector:
  * mark as stable (Gireesh Punathil) #37748
module:
  * (SEMVER-MINOR) add support for `URL` to `import.meta.resolve` (Antoine du Hamel) #38587
  * (SEMVER-MINOR) add support for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
net:
  * (SEMVER-MINOR) introduce net.BlockList (James M Snell) #34625
node-api:
  * (SEMVER-MINOR) allow retrieval of add-on file name (Gabriel Schulhof) #37195
os:
  * (SEMVER-MINOR) add os.devNull (Luigi Pinca) #38569
perf_hooks:
  * (SEMVER-MINOR) introduce createHistogram (James M Snell) #37155
process:
  * (SEMVER-MINOR) add api to enable source-maps programmatically (legendecas) #39085
  * (SEMVER-MINOR) add `'worker'` event (James M Snell) #38659
  * (SEMVER-MINOR) add direct access to rss without iterating pages (Adrien Maret) #34291
readline:
  * (SEMVER-MINOR) add AbortSignal support to interface (Nitzan Uziely) #37932
  * (SEMVER-MINOR) add support for the AbortController to the question method (Mattias Runge-Broberg) #33676
  * (SEMVER-MINOR) add history event and option to set initial history (Mattias Runge-Broberg) #33662
repl:
  * (SEMVER-MINOR) add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
src:
  * (SEMVER-MINOR) call overload ctor from the original ctor (Darshan Sen) #39768
  * (SEMVER-MINOR) add a constructor overload for CallbackScope (Darshan Sen) #39768
  * (SEMVER-MINOR) allow to negate boolean CLI flags (Michaël Zasso) #39023
  * (SEMVER-MINOR) add --heapsnapshot-near-heap-limit option (Joyee Cheung) #33010
  * (SEMVER-MINOR) add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441
  * (SEMVER-MINOR) allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447
  * (SEMVER-MINOR) add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #35486
stream:
  * (SEMVER-MINOR) add readableDidRead if has been read from (Robert Nagy) #39589
  * (SEMVER-MINOR) pipeline accept Buffer as a valid first argument (Nitzan Uziely) #37739
tls:
  * (SEMVER-MINOR) allow reading data into a static buffer (Andrey Pechkurov) #35753
tools:
  * (SEMVER-MINOR) add `Worker` to type-parser (James M Snell) #38659
url:
  * (SEMVER-MINOR) expose urlToHttpOptions utility (Yongsheng Zhang) #35960
util:
  * (SEMVER-MINOR) expose toUSVString (Robert Nagy) #39814
v8:
  * (SEMVER-MINOR) implement v8.stopCoverage() (Joyee Cheung) #33807
  * (SEMVER-MINOR) implement v8.takeCoverage() (Joyee Cheung) #33807
worker:
  * (SEMVER-MINOR) add setEnvironmentData/getEnvironmentData (James M Snell) #37486

PR-URL: #39990
targos added a commit that referenced this pull request Sep 7, 2021
Notable changes:

assert:
  * change status of legacy asserts (James M Snell) #38113
buffer:
  * (SEMVER-MINOR) introduce Blob (James M Snell) #36811
  * (SEMVER-MINOR) add base64url encoding option (Filip Skokan) #36952
child_process:
  * (SEMVER-MINOR) allow `options.cwd` receive a URL (Khaidi Chu) #38862
  * (SEMVER-MINOR) add timeout to spawn and fork (Nitzan Uziely) #37256
  * (SEMVER-MINOR) allow promisified exec to be cancel (Carlos Fuentes) #34249
  * (SEMVER-MINOR) add 'overlapped' stdio flag (Thiago Padilha) #29412
cli:
  * (SEMVER-MINOR) add -C alias for --conditions flag (Guy Bedford) #38755
  * (SEMVER-MINOR) add --node-memory-debug option (Anna Henningsen) #35537
dns:
  * (SEMVER-MINOR) add "tries" option to Resolve options (Luan Devecchi) #39610
  * (SEMVER-MINOR) allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) #38099
doc:
  * (SEMVER-MINOR) add missing change to resolver ctor (Luan Devecchi) #39610
  * refactor fs docs structure (James M Snell) #37170
errors:
  * (SEMVER-MINOR) remove experimental from --enable-source-maps (Benjamin Coe) #37362
esm:
  * deprecate legacy main lookup for modules (Guy Bedford) #36918
fs:
  * (SEMVER-MINOR) allow empty string for temp directory prefix (Voltrex) #39028
  * (SEMVER-MINOR) allow no-params fsPromises fileHandle read (Nitzan Uziely) #38287
  * (SEMVER-MINOR) add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) #37490
  * improve fsPromises readFile performance (Nitzan Uziely) #37608
  * (SEMVER-MINOR) add fsPromises.watch() (James M Snell) #37179
  * (SEMVER-MINOR) allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) #36190
http2:
  * (SEMVER-MINOR) add support for sensitive headers (Anna Henningsen) #34145
  * (SEMVER-MINOR) allow setting the local window size of a session (Yongsheng Zhang) #35978
inspector:
  * mark as stable (Gireesh Punathil) #37748
module:
  * (SEMVER-MINOR) add support for `URL` to `import.meta.resolve` (Antoine du Hamel) #38587
  * (SEMVER-MINOR) add support for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
net:
  * (SEMVER-MINOR) introduce net.BlockList (James M Snell) #34625
node-api:
  * (SEMVER-MINOR) allow retrieval of add-on file name (Gabriel Schulhof) #37195
os:
  * (SEMVER-MINOR) add os.devNull (Luigi Pinca) #38569
perf_hooks:
  * (SEMVER-MINOR) introduce createHistogram (James M Snell) #37155
process:
  * (SEMVER-MINOR) add api to enable source-maps programmatically (legendecas) #39085
  * (SEMVER-MINOR) add `'worker'` event (James M Snell) #38659
  * (SEMVER-MINOR) add direct access to rss without iterating pages (Adrien Maret) #34291
readline:
  * (SEMVER-MINOR) add AbortSignal support to interface (Nitzan Uziely) #37932
  * (SEMVER-MINOR) add support for the AbortController to the question method (Mattias Runge-Broberg) #33676
  * (SEMVER-MINOR) add history event and option to set initial history (Mattias Runge-Broberg) #33662
repl:
  * (SEMVER-MINOR) add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
src:
  * (SEMVER-MINOR) call overload ctor from the original ctor (Darshan Sen) #39768
  * (SEMVER-MINOR) add a constructor overload for CallbackScope (Darshan Sen) #39768
  * (SEMVER-MINOR) allow to negate boolean CLI flags (Michaël Zasso) #39023
  * (SEMVER-MINOR) add --heapsnapshot-near-heap-limit option (Joyee Cheung) #33010
  * (SEMVER-MINOR) add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441
  * (SEMVER-MINOR) allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447
  * (SEMVER-MINOR) add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #35486
stream:
  * (SEMVER-MINOR) add readableDidRead if has been read from (Robert Nagy) #39589
  * (SEMVER-MINOR) pipeline accept Buffer as a valid first argument (Nitzan Uziely) #37739
tls:
  * (SEMVER-MINOR) allow reading data into a static buffer (Andrey Pechkurov) #35753
tools:
  * (SEMVER-MINOR) add `Worker` to type-parser (James M Snell) #38659
url:
  * (SEMVER-MINOR) expose urlToHttpOptions utility (Yongsheng Zhang) #35960
util:
  * (SEMVER-MINOR) expose toUSVString (Robert Nagy) #39814
v8:
  * (SEMVER-MINOR) implement v8.stopCoverage() (Joyee Cheung) #33807
  * (SEMVER-MINOR) implement v8.takeCoverage() (Joyee Cheung) #33807
worker:
  * (SEMVER-MINOR) add setEnvironmentData/getEnvironmentData (James M Snell) #37486

PR-URL: #39990
targos added a commit that referenced this pull request Sep 28, 2021
Notable changes:

assert:
  * change status of legacy asserts (James M Snell) #38113
buffer:
  * (SEMVER-MINOR) introduce Blob (James M Snell) #36811
  * (SEMVER-MINOR) add base64url encoding option (Filip Skokan) #36952
child_process:
  * (SEMVER-MINOR) allow `options.cwd` receive a URL (Khaidi Chu) #38862
  * (SEMVER-MINOR) add timeout to spawn and fork (Nitzan Uziely) #37256
  * (SEMVER-MINOR) allow promisified exec to be cancel (Carlos Fuentes) #34249
  * (SEMVER-MINOR) add 'overlapped' stdio flag (Thiago Padilha) #29412
cli:
  * (SEMVER-MINOR) add -C alias for --conditions flag (Guy Bedford) #38755
  * (SEMVER-MINOR) add --node-memory-debug option (Anna Henningsen) #35537
dns:
  * (SEMVER-MINOR) add "tries" option to Resolve options (Luan Devecchi) #39610
  * (SEMVER-MINOR) allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) #38099
doc:
  * (SEMVER-MINOR) add missing change to resolver ctor (Luan Devecchi) #39610
  * refactor fs docs structure (James M Snell) #37170
errors:
  * (SEMVER-MINOR) remove experimental from --enable-source-maps (Benjamin Coe) #37362
esm:
  * deprecate legacy main lookup for modules (Guy Bedford) #36918
fs:
  * (SEMVER-MINOR) allow empty string for temp directory prefix (Voltrex) #39028
  * (SEMVER-MINOR) allow no-params fsPromises fileHandle read (Nitzan Uziely) #38287
  * (SEMVER-MINOR) add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) #37490
  * improve fsPromises readFile performance (Nitzan Uziely) #37608
  * (SEMVER-MINOR) add fsPromises.watch() (James M Snell) #37179
  * (SEMVER-MINOR) allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) #36190
http2:
  * (SEMVER-MINOR) add support for sensitive headers (Anna Henningsen) #34145
  * (SEMVER-MINOR) allow setting the local window size of a session (Yongsheng Zhang) #35978
inspector:
  * mark as stable (Gireesh Punathil) #37748
module:
  * (SEMVER-MINOR) add support for `URL` to `import.meta.resolve` (Antoine du Hamel) #38587
  * (SEMVER-MINOR) add support for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
net:
  * (SEMVER-MINOR) introduce net.BlockList (James M Snell) #34625
node-api:
  * (SEMVER-MINOR) allow retrieval of add-on file name (Gabriel Schulhof) #37195
os:
  * (SEMVER-MINOR) add os.devNull (Luigi Pinca) #38569
perf_hooks:
  * (SEMVER-MINOR) introduce createHistogram (James M Snell) #37155
process:
  * (SEMVER-MINOR) add api to enable source-maps programmatically (legendecas) #39085
  * (SEMVER-MINOR) add `'worker'` event (James M Snell) #38659
  * (SEMVER-MINOR) add direct access to rss without iterating pages (Adrien Maret) #34291
readline:
  * (SEMVER-MINOR) add AbortSignal support to interface (Nitzan Uziely) #37932
  * (SEMVER-MINOR) add support for the AbortController to the question method (Mattias Runge-Broberg) #33676
  * (SEMVER-MINOR) add history event and option to set initial history (Mattias Runge-Broberg) #33662
repl:
  * (SEMVER-MINOR) add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) #37246
src:
  * (SEMVER-MINOR) call overload ctor from the original ctor (Darshan Sen) #39768
  * (SEMVER-MINOR) add a constructor overload for CallbackScope (Darshan Sen) #39768
  * (SEMVER-MINOR) allow to negate boolean CLI flags (Michaël Zasso) #39023
  * (SEMVER-MINOR) add --heapsnapshot-near-heap-limit option (Joyee Cheung) #33010
  * (SEMVER-MINOR) add way to get IsolateData and allocator from Environment (Anna Henningsen) #36441
  * (SEMVER-MINOR) allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #36447
  * (SEMVER-MINOR) add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #35486
stream:
  * (SEMVER-MINOR) add readableDidRead if has been read from (Robert Nagy) #39589
  * (SEMVER-MINOR) pipeline accept Buffer as a valid first argument (Nitzan Uziely) #37739
tls:
  * (SEMVER-MINOR) allow reading data into a static buffer (Andrey Pechkurov) #35753
tools:
  * (SEMVER-MINOR) add `Worker` to type-parser (James M Snell) #38659
url:
  * (SEMVER-MINOR) expose urlToHttpOptions utility (Yongsheng Zhang) #35960
util:
  * (SEMVER-MINOR) expose toUSVString (Robert Nagy) #39814
v8:
  * (SEMVER-MINOR) implement v8.stopCoverage() (Joyee Cheung) #33807
  * (SEMVER-MINOR) implement v8.takeCoverage() (Joyee Cheung) #33807
worker:
  * (SEMVER-MINOR) add setEnvironmentData/getEnvironmentData (James M Snell) #37486

PR-URL: #39990
mwalbeck pushed a commit to mwalbeck/docker-jellyfin-livestream that referenced this pull request Oct 6, 2021
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://github.com/nodejs/node) | stage | minor | `14.17.6-buster` -> `14.18.0-buster` |

---

### Release Notes

<details>
<summary>nodejs/node</summary>

### [`v14.18.0`](https://github.com/nodejs/node/releases/v14.18.0)

[Compare Source](https://github.com/nodejs/node/compare/v14.17.6...v14.18.0)

##### Notable Changes

-   \[[`3a60de0135`](https://github.com/nodejs/node/commit/3a60de0135)] - **assert**: change status of legacy asserts (James M Snell) [#&#8203;38113](https://github.com/nodejs/node/pull/38113)
-   \[[`df37c106a7`](https://github.com/nodejs/node/commit/df37c106a7)] - **(SEMVER-MINOR)** **buffer**: introduce Blob (James M Snell) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`223494c548`](https://github.com/nodejs/node/commit/223494c548)] - **(SEMVER-MINOR)** **buffer**: add base64url encoding option (Filip Skokan) [#&#8203;36952](https://github.com/nodejs/node/pull/36952)
-   \[[`14fc4ddabc`](https://github.com/nodejs/node/commit/14fc4ddabc)] - **(SEMVER-MINOR)** **child_process**: allow `options.cwd` receive a URL (Khaidi Chu) [#&#8203;38862](https://github.com/nodejs/node/pull/38862)
-   \[[`b68b13acb3`](https://github.com/nodejs/node/commit/b68b13acb3)] - **(SEMVER-MINOR)** **child_process**: add timeout to spawn and fork (Nitzan Uziely) [#&#8203;37256](https://github.com/nodejs/node/pull/37256)
-   \[[`da98c9f99b`](https://github.com/nodejs/node/commit/da98c9f99b)] - **(SEMVER-MINOR)** **child_process**: allow promisified exec to be cancel (Carlos Fuentes) [#&#8203;34249](https://github.com/nodejs/node/pull/34249)
-   \[[`779310ac87`](https://github.com/nodejs/node/commit/779310ac87)] - **(SEMVER-MINOR)** **child_process**: add 'overlapped' stdio flag (Thiago Padilha) [#&#8203;29412](https://github.com/nodejs/node/pull/29412)
-   \[[`40eb3b79f1`](https://github.com/nodejs/node/commit/40eb3b79f1)] - **(SEMVER-MINOR)** **cli**: add -C alias for --conditions flag (Guy Bedford) [#&#8203;38755](https://github.com/nodejs/node/pull/38755)
-   \[[`39eba0a2e1`](https://github.com/nodejs/node/commit/39eba0a2e1)] - **(SEMVER-MINOR)** **cli**: add --node-memory-debug option (Anna Henningsen) [#&#8203;35537](https://github.com/nodejs/node/pull/35537)
-   \[[`d8d9a9628a`](https://github.com/nodejs/node/commit/d8d9a9628a)] - **(SEMVER-MINOR)** **dns**: add "tries" option to Resolve options (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`15ba19b020`](https://github.com/nodejs/node/commit/15ba19b020)] - **(SEMVER-MINOR)** **dns**: allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) [#&#8203;38099](https://github.com/nodejs/node/pull/38099)
-   \[[`307c1d817f`](https://github.com/nodejs/node/commit/307c1d817f)] - **doc**: refactor fs docs structure (James M Snell) [#&#8203;37170](https://github.com/nodejs/node/pull/37170)
-   \[[`9ee3f77e32`](https://github.com/nodejs/node/commit/9ee3f77e32)] - **(SEMVER-MINOR)** **errors**: remove experimental from --enable-source-maps (Benjamin Coe) [#&#8203;37362](https://github.com/nodejs/node/pull/37362)
-   \[[`e73bfed2f4`](https://github.com/nodejs/node/commit/e73bfed2f4)] - **esm**: deprecate legacy main lookup for modules (Guy Bedford) [#&#8203;36918](https://github.com/nodejs/node/pull/36918)
-   \[[`989c204a58`](https://github.com/nodejs/node/commit/989c204a58)] - **(SEMVER-MINOR)** **fs**: allow empty string for temp directory prefix (Voltrex) [#&#8203;39028](https://github.com/nodejs/node/pull/39028)
-   \[[`ef72490cde`](https://github.com/nodejs/node/commit/ef72490cde)] - **(SEMVER-MINOR)** **fs**: allow no-params fsPromises fileHandle read (Nitzan Uziely) [#&#8203;38287](https://github.com/nodejs/node/pull/38287)
-   \[[`cad9d20f64`](https://github.com/nodejs/node/commit/cad9d20f64)] - **(SEMVER-MINOR)** **fs**: add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) [#&#8203;37490](https://github.com/nodejs/node/pull/37490)
-   \[[`2b0e2706c0`](https://github.com/nodejs/node/commit/2b0e2706c0)] - **fs**: improve fsPromises readFile performance (Nitzan Uziely) [#&#8203;37608](https://github.com/nodejs/node/pull/37608)
-   \[[`fe12cc07b3`](https://github.com/nodejs/node/commit/fe12cc07b3)] - **(SEMVER-MINOR)** **fs**: add fsPromises.watch() (James M Snell) [#&#8203;37179](https://github.com/nodejs/node/pull/37179)
-   \[[`2459c115a8`](https://github.com/nodejs/node/commit/2459c115a8)] - **(SEMVER-MINOR)** **fs**: allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) [#&#8203;36190](https://github.com/nodejs/node/pull/36190)
-   \[[`6544cfb4b9`](https://github.com/nodejs/node/commit/6544cfb4b9)] - **(SEMVER-MINOR)** **http2**: add support for sensitive headers (Anna Henningsen) [#&#8203;34145](https://github.com/nodejs/node/pull/34145)
-   \[[`a6c6cbb4e6`](https://github.com/nodejs/node/commit/a6c6cbb4e6)] - **(SEMVER-MINOR)** **http2**: allow setting the local window size of a session (Yongsheng Zhang) [#&#8203;35978](https://github.com/nodejs/node/pull/35978)
-   \[[`1e5aca550c`](https://github.com/nodejs/node/commit/1e5aca550c)] - **inspector**: mark as stable (Gireesh Punathil) [#&#8203;37748](https://github.com/nodejs/node/pull/37748)
-   \[[`93af04afbb`](https://github.com/nodejs/node/commit/93af04afbb)] - **(SEMVER-MINOR)** **module**: add support for `URL` to `import.meta.resolve` (Antoine du Hamel) [#&#8203;38587](https://github.com/nodejs/node/pull/38587)
-   \[[`f9f9389d83`](https://github.com/nodejs/node/commit/f9f9389d83)] - **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`87c71065eb`](https://github.com/nodejs/node/commit/87c71065eb)] - **(SEMVER-MINOR)** **net**: introduce net.BlockList (James M Snell) [#&#8203;34625](https://github.com/nodejs/node/pull/34625)
-   \[[`b421d99a48`](https://github.com/nodejs/node/commit/b421d99a48)] - **(SEMVER-MINOR)** **node-api**: allow retrieval of add-on file name (Gabriel Schulhof) [#&#8203;37195](https://github.com/nodejs/node/pull/37195)
-   \[[`6a4811df8a`](https://github.com/nodejs/node/commit/6a4811df8a)] - **(SEMVER-MINOR)** **os**: add os.devNull (Luigi Pinca) [#&#8203;38569](https://github.com/nodejs/node/pull/38569)
-   \[[`4a88ddeeca`](https://github.com/nodejs/node/commit/4a88ddeeca)] - **(SEMVER-MINOR)** **perf_hooks**: introduce createHistogram (James M Snell) [#&#8203;37155](https://github.com/nodejs/node/pull/37155)
-   \[[`1a6bf1c4a3`](https://github.com/nodejs/node/commit/1a6bf1c4a3)] - **(SEMVER-MINOR)** **process**: add api to enable source-maps programmatically (legendecas) [#&#8203;39085](https://github.com/nodejs/node/pull/39085)
-   \[[`99735a6fe8`](https://github.com/nodejs/node/commit/99735a6fe8)] - **(SEMVER-MINOR)** **process**: add `'worker'` event (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`3982919317`](https://github.com/nodejs/node/commit/3982919317)] - **(SEMVER-MINOR)** **process**: add direct access to rss without iterating pages (Adrien Maret) [#&#8203;34291](https://github.com/nodejs/node/pull/34291)
-   \[[`526e6c7bde`](https://github.com/nodejs/node/commit/526e6c7bde)] - **(SEMVER-MINOR)** **readline**: add AbortSignal support to interface (Nitzan Uziely) [#&#8203;37932](https://github.com/nodejs/node/pull/37932)
-   \[[`e6eee08692`](https://github.com/nodejs/node/commit/e6eee08692)] - **(SEMVER-MINOR)** **readline**: add support for the AbortController to the question method (Mattias Runge-Broberg) [#&#8203;33676](https://github.com/nodejs/node/pull/33676)
-   \[[`32de361d70`](https://github.com/nodejs/node/commit/32de361d70)] - **(SEMVER-MINOR)** **readline**: add history event and option to set initial history (Mattias Runge-Broberg) [#&#8203;33662](https://github.com/nodejs/node/pull/33662)
-   \[[`797f7f8a38`](https://github.com/nodejs/node/commit/797f7f8a38)] - **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`abfd71b64c`](https://github.com/nodejs/node/commit/abfd71b64c)] - **(SEMVER-MINOR)** **src**: call overload ctor from the original ctor (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1efae01b18`](https://github.com/nodejs/node/commit/1efae01b18)] - **(SEMVER-MINOR)** **src**: add a constructor overload for CallbackScope (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`f7933804ba`](https://github.com/nodejs/node/commit/f7933804ba)] - **(SEMVER-MINOR)** **src**: allow to negate boolean CLI flags (Michaël Zasso) [#&#8203;39023](https://github.com/nodejs/node/pull/39023)
-   \[[`6d06ac2202`](https://github.com/nodejs/node/commit/6d06ac2202)] - **(SEMVER-MINOR)** **src**: add --heapsnapshot-near-heap-limit option (Joyee Cheung) [#&#8203;33010](https://github.com/nodejs/node/pull/33010)
-   \[[`577d228ca0`](https://github.com/nodejs/node/commit/577d228ca0)] - **(SEMVER-MINOR)** **src**: add way to get IsolateData and allocator from Environment (Anna Henningsen) [#&#8203;36441](https://github.com/nodejs/node/pull/36441)
-   \[[`658a266cd4`](https://github.com/nodejs/node/commit/658a266cd4)] - **(SEMVER-MINOR)** **src**: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) [#&#8203;36447](https://github.com/nodejs/node/pull/36447)
-   \[[`f421422ea4`](https://github.com/nodejs/node/commit/f421422ea4)] - **(SEMVER-MINOR)** **src**: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) [#&#8203;35486](https://github.com/nodejs/node/pull/35486)
-   \[[`a62d4d60f4`](https://github.com/nodejs/node/commit/a62d4d60f4)] - **(SEMVER-MINOR)** **stream**: add readableDidRead if has been read from (Robert Nagy) [#&#8203;39589](https://github.com/nodejs/node/pull/39589)
-   \[[`63502131a3`](https://github.com/nodejs/node/commit/63502131a3)] - **(SEMVER-MINOR)** **stream**: pipeline accept Buffer as a valid first argument (Nitzan Uziely) [#&#8203;37739](https://github.com/nodejs/node/pull/37739)
-   \[[`68bbebd42c`](https://github.com/nodejs/node/commit/68bbebd42c)] - **(SEMVER-MINOR)** **tls**: allow reading data into a static buffer (Andrey Pechkurov) [#&#8203;35753](https://github.com/nodejs/node/pull/35753)
-   \[[`1cbb74d63d`](https://github.com/nodejs/node/commit/1cbb74d63d)] - **(SEMVER-MINOR)** **url**: expose urlToHttpOptions utility (Yongsheng Zhang) [#&#8203;35960](https://github.com/nodejs/node/pull/35960)
-   \[[`8eb11356dd`](https://github.com/nodejs/node/commit/8eb11356dd)] - **(SEMVER-MINOR)** **util**: expose toUSVString (Robert Nagy) [#&#8203;39814](https://github.com/nodejs/node/pull/39814)
-   \[[`84fcdc3074`](https://github.com/nodejs/node/commit/84fcdc3074)] - **(SEMVER-MINOR)** **v8**: implement v8.stopCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`b238b6bf17`](https://github.com/nodejs/node/commit/b238b6bf17)] - **(SEMVER-MINOR)** **v8**: implement v8.takeCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`9f6bc58da8`](https://github.com/nodejs/node/commit/9f6bc58da8)] - **(SEMVER-MINOR)** **worker**: add setEnvironmentData/getEnvironmentData (James M Snell) [#&#8203;37486](https://github.com/nodejs/node/pull/37486)

##### Commits

##### Semver-minor commits

-   \[[`f3563d3197`](https://github.com/nodejs/node/commit/f3563d3197)] - **(SEMVER-MINOR)** **async_hooks**: use new v8::Context PromiseHook API (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`df37c106a7`](https://github.com/nodejs/node/commit/df37c106a7)] - **(SEMVER-MINOR)** **buffer**: introduce Blob (James M Snell) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`223494c548`](https://github.com/nodejs/node/commit/223494c548)] - **(SEMVER-MINOR)** **buffer**: add base64url encoding option (Filip Skokan) [#&#8203;36952](https://github.com/nodejs/node/pull/36952)
-   \[[`14fc4ddabc`](https://github.com/nodejs/node/commit/14fc4ddabc)] - **(SEMVER-MINOR)** **child_process**: allow `options.cwd` receive a URL (Khaidi Chu) [#&#8203;38862](https://github.com/nodejs/node/pull/38862)
-   \[[`b68b13acb3`](https://github.com/nodejs/node/commit/b68b13acb3)] - **(SEMVER-MINOR)** **child_process**: add timeout to spawn and fork (Nitzan Uziely) [#&#8203;37256](https://github.com/nodejs/node/pull/37256)
-   \[[`da98c9f99b`](https://github.com/nodejs/node/commit/da98c9f99b)] - **(SEMVER-MINOR)** **child_process**: allow promisified exec to be cancel (Carlos Fuentes) [#&#8203;34249](https://github.com/nodejs/node/pull/34249)
-   \[[`779310ac87`](https://github.com/nodejs/node/commit/779310ac87)] - **(SEMVER-MINOR)** **child_process**: add 'overlapped' stdio flag (Thiago Padilha) [#&#8203;29412](https://github.com/nodejs/node/pull/29412)
-   \[[`40eb3b79f1`](https://github.com/nodejs/node/commit/40eb3b79f1)] - **(SEMVER-MINOR)** **cli**: add -C alias for --conditions flag (Guy Bedford) [#&#8203;38755](https://github.com/nodejs/node/pull/38755)
-   \[[`39eba0a2e1`](https://github.com/nodejs/node/commit/39eba0a2e1)] - **(SEMVER-MINOR)** **cli**: add --node-memory-debug option (Anna Henningsen) [#&#8203;35537](https://github.com/nodejs/node/pull/35537)
-   \[[`d9b58a0262`](https://github.com/nodejs/node/commit/d9b58a0262)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`fa4cb17`](https://github.com/nodejs/node/commit/fa4cb172cde2) (Stephen Belanger) [#&#8203;38577](https://github.com/nodejs/node/pull/38577)
-   \[[`9d7177c152`](https://github.com/nodejs/node/commit/9d7177c152)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`4c07451`](https://github.com/nodejs/node/commit/4c074516397b) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`ec0f0ef8ef`](https://github.com/nodejs/node/commit/ec0f0ef8ef)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`5f44131`](https://github.com/nodejs/node/commit/5f4413194480) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`3e7238e45a`](https://github.com/nodejs/node/commit/3e7238e45a)] - **(SEMVER-MINOR)** **deps**: V8: cherry-pick [`272445f`](https://github.com/nodejs/node/commit/272445f10927) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`214e568597`](https://github.com/nodejs/node/commit/214e568597)] - **(SEMVER-MINOR)** **deps**: V8: backport [`c0fceaa`](https://github.com/nodejs/node/commit/c0fceaa0669b) (Stephen Belanger) [#&#8203;36394](https://github.com/nodejs/node/pull/36394)
-   \[[`d8d9a9628a`](https://github.com/nodejs/node/commit/d8d9a9628a)] - **(SEMVER-MINOR)** **dns**: add "tries" option to Resolve options (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`15ba19b020`](https://github.com/nodejs/node/commit/15ba19b020)] - **(SEMVER-MINOR)** **dns**: allow `--dns-result-order` to change default dns verbatim (Ouyang Yadong) [#&#8203;38099](https://github.com/nodejs/node/pull/38099)
-   \[[`defb77cac9`](https://github.com/nodejs/node/commit/defb77cac9)] - **(SEMVER-MINOR)** **doc**: add missing change to resolver ctor (Luan Devecchi) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`9ee3f77e32`](https://github.com/nodejs/node/commit/9ee3f77e32)] - **(SEMVER-MINOR)** **errors**: remove experimental from --enable-source-maps (Benjamin Coe) [#&#8203;37362](https://github.com/nodejs/node/pull/37362)
-   \[[`989c204a58`](https://github.com/nodejs/node/commit/989c204a58)] - **(SEMVER-MINOR)** **fs**: allow empty string for temp directory prefix (Voltrex) [#&#8203;39028](https://github.com/nodejs/node/pull/39028)
-   \[[`ef72490cde`](https://github.com/nodejs/node/commit/ef72490cde)] - **(SEMVER-MINOR)** **fs**: allow no-params fsPromises fileHandle read (Nitzan Uziely) [#&#8203;38287](https://github.com/nodejs/node/pull/38287)
-   \[[`cad9d20f64`](https://github.com/nodejs/node/commit/cad9d20f64)] - **(SEMVER-MINOR)** **fs**: add support for async iterators to `fsPromises.writeFile` (HiroyukiYagihashi) [#&#8203;37490](https://github.com/nodejs/node/pull/37490)
-   \[[`fe12cc07b3`](https://github.com/nodejs/node/commit/fe12cc07b3)] - **(SEMVER-MINOR)** **fs**: add fsPromises.watch() (James M Snell) [#&#8203;37179](https://github.com/nodejs/node/pull/37179)
-   \[[`2459c115a8`](https://github.com/nodejs/node/commit/2459c115a8)] - **(SEMVER-MINOR)** **fs**: allow `position` parameter to be a `BigInt` in read and readSync (Darshan Sen) [#&#8203;36190](https://github.com/nodejs/node/pull/36190)
-   \[[`6544cfb4b9`](https://github.com/nodejs/node/commit/6544cfb4b9)] - **(SEMVER-MINOR)** **http2**: add support for sensitive headers (Anna Henningsen) [#&#8203;34145](https://github.com/nodejs/node/pull/34145)
-   \[[`a6c6cbb4e6`](https://github.com/nodejs/node/commit/a6c6cbb4e6)] - **(SEMVER-MINOR)** **http2**: allow setting the local window size of a session (Yongsheng Zhang) [#&#8203;35978](https://github.com/nodejs/node/pull/35978)
-   \[[`93af04afbb`](https://github.com/nodejs/node/commit/93af04afbb)] - **(SEMVER-MINOR)** **module**: add support for `URL` to `import.meta.resolve` (Antoine du Hamel) [#&#8203;38587](https://github.com/nodejs/node/pull/38587)
-   \[[`f9f9389d83`](https://github.com/nodejs/node/commit/f9f9389d83)] - **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`76d4f22bab`](https://github.com/nodejs/node/commit/76d4f22bab)] - **(SEMVER-MINOR)** **net**: allow net.BlockList to use net.SocketAddress objects (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`82363d864d`](https://github.com/nodejs/node/commit/82363d864d)] - **(SEMVER-MINOR)** **net**: add SocketAddress class (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`0202ba46b8`](https://github.com/nodejs/node/commit/0202ba46b8)] - **(SEMVER-MINOR)** **net**: make net.BlockList cloneable (James M Snell) [#&#8203;37917](https://github.com/nodejs/node/pull/37917)
-   \[[`a41a3e3b3f`](https://github.com/nodejs/node/commit/a41a3e3b3f)] - **(SEMVER-MINOR)** **net**: make blocklist family case insensitive (James M Snell) [#&#8203;34864](https://github.com/nodejs/node/pull/34864)
-   \[[`87c71065eb`](https://github.com/nodejs/node/commit/87c71065eb)] - **(SEMVER-MINOR)** **net**: introduce net.BlockList (James M Snell) [#&#8203;34625](https://github.com/nodejs/node/pull/34625)
-   \[[`b421d99a48`](https://github.com/nodejs/node/commit/b421d99a48)] - **(SEMVER-MINOR)** **node-api**: allow retrieval of add-on file name (Gabriel Schulhof) [#&#8203;37195](https://github.com/nodejs/node/pull/37195)
-   \[[`6a4811df8a`](https://github.com/nodejs/node/commit/6a4811df8a)] - **(SEMVER-MINOR)** **os**: add os.devNull (Luigi Pinca) [#&#8203;38569](https://github.com/nodejs/node/pull/38569)
-   \[[`4a88ddeeca`](https://github.com/nodejs/node/commit/4a88ddeeca)] - **(SEMVER-MINOR)** **perf_hooks**: introduce createHistogram (James M Snell) [#&#8203;37155](https://github.com/nodejs/node/pull/37155)
-   \[[`1a6bf1c4a3`](https://github.com/nodejs/node/commit/1a6bf1c4a3)] - **(SEMVER-MINOR)** **process**: add api to enable source-maps programmatically (legendecas) [#&#8203;39085](https://github.com/nodejs/node/pull/39085)
-   \[[`99735a6fe8`](https://github.com/nodejs/node/commit/99735a6fe8)] - **(SEMVER-MINOR)** **process**: add `'worker'` event (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`3982919317`](https://github.com/nodejs/node/commit/3982919317)] - **(SEMVER-MINOR)** **process**: add direct access to rss without iterating pages (Adrien Maret) [#&#8203;34291](https://github.com/nodejs/node/pull/34291)
-   \[[`526e6c7bde`](https://github.com/nodejs/node/commit/526e6c7bde)] - **(SEMVER-MINOR)** **readline**: add AbortSignal support to interface (Nitzan Uziely) [#&#8203;37932](https://github.com/nodejs/node/pull/37932)
-   \[[`e6eee08692`](https://github.com/nodejs/node/commit/e6eee08692)] - **(SEMVER-MINOR)** **readline**: add support for the AbortController to the question method (Mattias Runge-Broberg) [#&#8203;33676](https://github.com/nodejs/node/pull/33676)
-   \[[`32de361d70`](https://github.com/nodejs/node/commit/32de361d70)] - **(SEMVER-MINOR)** **readline**: add history event and option to set initial history (Mattias Runge-Broberg) [#&#8203;33662](https://github.com/nodejs/node/pull/33662)
-   \[[`797f7f8a38`](https://github.com/nodejs/node/commit/797f7f8a38)] - **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed `require(…)` calls (ExE Boss) [#&#8203;37246](https://github.com/nodejs/node/pull/37246)
-   \[[`abfd71b64c`](https://github.com/nodejs/node/commit/abfd71b64c)] - **(SEMVER-MINOR)** **src**: call overload ctor from the original ctor (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1efae01b18`](https://github.com/nodejs/node/commit/1efae01b18)] - **(SEMVER-MINOR)** **src**: add a constructor overload for CallbackScope (Darshan Sen) [#&#8203;39768](https://github.com/nodejs/node/pull/39768)
-   \[[`1aa2080d29`](https://github.com/nodejs/node/commit/1aa2080d29)] - **(SEMVER-MINOR)** **src**: fix align in cares_wrap.h (Luan) [#&#8203;39610](https://github.com/nodejs/node/pull/39610)
-   \[[`f7933804ba`](https://github.com/nodejs/node/commit/f7933804ba)] - **(SEMVER-MINOR)** **src**: allow to negate boolean CLI flags (Michaël Zasso) [#&#8203;39023](https://github.com/nodejs/node/pull/39023)
-   \[[`6d06ac2202`](https://github.com/nodejs/node/commit/6d06ac2202)] - **(SEMVER-MINOR)** **src**: add --heapsnapshot-near-heap-limit option (Joyee Cheung) [#&#8203;33010](https://github.com/nodejs/node/pull/33010)
-   \[[`4091eb9db7`](https://github.com/nodejs/node/commit/4091eb9db7)] - **(SEMVER-MINOR)** **src**: move node_binding to modern THROW_ERR\* (James M Snell) [#&#8203;35469](https://github.com/nodejs/node/pull/35469)
-   \[[`577d228ca0`](https://github.com/nodejs/node/commit/577d228ca0)] - **(SEMVER-MINOR)** **src**: add way to get IsolateData and allocator from Environment (Anna Henningsen) [#&#8203;36441](https://github.com/nodejs/node/pull/36441)
-   \[[`658a266cd4`](https://github.com/nodejs/node/commit/658a266cd4)] - **(SEMVER-MINOR)** **src**: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) [#&#8203;36447](https://github.com/nodejs/node/pull/36447)
-   \[[`f421422ea4`](https://github.com/nodejs/node/commit/f421422ea4)] - **(SEMVER-MINOR)** **src**: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) [#&#8203;35486](https://github.com/nodejs/node/pull/35486)
-   \[[`a62d4d60f4`](https://github.com/nodejs/node/commit/a62d4d60f4)] - **(SEMVER-MINOR)** **stream**: add readableDidRead if has been read from (Robert Nagy) [#&#8203;39589](https://github.com/nodejs/node/pull/39589)
-   \[[`63502131a3`](https://github.com/nodejs/node/commit/63502131a3)] - **(SEMVER-MINOR)** **stream**: pipeline accept Buffer as a valid first argument (Nitzan Uziely) [#&#8203;37739](https://github.com/nodejs/node/pull/37739)
-   \[[`72ef41c72b`](https://github.com/nodejs/node/commit/72ef41c72b)] - **(SEMVER-MINOR)** **test**: add wpt tests for Blob (Michaël Zasso) [#&#8203;36811](https://github.com/nodejs/node/pull/36811)
-   \[[`68bbebd42c`](https://github.com/nodejs/node/commit/68bbebd42c)] - **(SEMVER-MINOR)** **tls**: allow reading data into a static buffer (Andrey Pechkurov) [#&#8203;35753](https://github.com/nodejs/node/pull/35753)
-   \[[`587deacad9`](https://github.com/nodejs/node/commit/587deacad9)] - **(SEMVER-MINOR)** **tools**: add `Worker` to type-parser (James M Snell) [#&#8203;38659](https://github.com/nodejs/node/pull/38659)
-   \[[`1cbb74d63d`](https://github.com/nodejs/node/commit/1cbb74d63d)] - **(SEMVER-MINOR)** **url**: expose urlToHttpOptions utility (Yongsheng Zhang) [#&#8203;35960](https://github.com/nodejs/node/pull/35960)
-   \[[`8eb11356dd`](https://github.com/nodejs/node/commit/8eb11356dd)] - **(SEMVER-MINOR)** **util**: expose toUSVString (Robert Nagy) [#&#8203;39814](https://github.com/nodejs/node/pull/39814)
-   \[[`84fcdc3074`](https://github.com/nodejs/node/commit/84fcdc3074)] - **(SEMVER-MINOR)** **v8**: implement v8.stopCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`b238b6bf17`](https://github.com/nodejs/node/commit/b238b6bf17)] - **(SEMVER-MINOR)** **v8**: implement v8.takeCoverage() (Joyee Cheung) [#&#8203;33807](https://github.com/nodejs/node/pull/33807)
-   \[[`9f6bc58da8`](https://github.com/nodejs/node/commit/9f6bc58da8)] - **(SEMVER-MINOR)** **worker**: add setEnvironmentData/getEnvironmentData (James M Snell) [#&#8203;37486](https://github.com/nodejs/node/pull/37486)

##### Semver-patch commits

-   \[[`3a60de0135`](https://github.com/nodejs/node/commit/3a60de0135)] - **assert**: change status of legacy asserts (James M Snell) [#&#8203;38113](https://github.com/nodejs/node/pull/38113)
-   \[[`5a42be9719`](https://github.com/nodejs/node/commit/5a42be9719)] - **async_hooks**: use resource stack for AsyncLocalStorage run (Stephen Belanger) [#&#8203;39890](https://github.com/nodejs/node/pull/39890)
-   \[[`fc29ddb38e`](https://github.com/nodejs/node/commit/fc29ddb38e)] - **async_hooks**: emit promise trace events from JS (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`13296d1abf`](https://github.com/nodejs/node/commit/13296d1abf)] - **async_hooks**: eliminate native PromiseHook (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`48e5971e51`](https://github.com/nodejs/node/commit/48e5971e51)] - **async_hooks**: check for empty contexts before removing (Bryan English) [#&#8203;39095](https://github.com/nodejs/node/pull/39095)
-   \[[`691c00c48b`](https://github.com/nodejs/node/commit/691c00c48b)] - **async_hooks**: switch between native and context hooks correctly (Stephen Belanger) [#&#8203;38912](https://github.com/nodejs/node/pull/38912)
-   \[[`8484ab2a6c`](https://github.com/nodejs/node/commit/8484ab2a6c)] - **buffer**: avoid creating the backing store in the thread (James M Snell) [#&#8203;37052](https://github.com/nodejs/node/pull/37052)
-   \[[`c8d039a872`](https://github.com/nodejs/node/commit/c8d039a872)] - **buffer**: make Blob's constructor more spec-compliant (Michaël Zasso) [#&#8203;37361](https://github.com/nodejs/node/pull/37361)
-   \[[`05d73ac286`](https://github.com/nodejs/node/commit/05d73ac286)] - **buffer**: make Blob's slice method more spec-compliant (Michaël Zasso) [#&#8203;37361](https://github.com/nodejs/node/pull/37361)
-   \[[`e7cf2efc60`](https://github.com/nodejs/node/commit/e7cf2efc60)] - **buffer**: add @&#8203;[@&#8203;toStringTag](https://github.com/toStringTag) to Blob (Colin Ihrig) [#&#8203;37336](https://github.com/nodejs/node/pull/37336)
-   \[[`d99deeaf97`](https://github.com/nodejs/node/commit/d99deeaf97)] - **build**: fix update authors commit (Mestery) [#&#8203;39858](https://github.com/nodejs/node/pull/39858)
-   \[[`5e1cba81bf`](https://github.com/nodejs/node/commit/5e1cba81bf)] - **build**: add authors.yml (Tierney Cyren) [#&#8203;35831](https://github.com/nodejs/node/pull/35831)
-   \[[`ed3c332089`](https://github.com/nodejs/node/commit/ed3c332089)] - **build**: add option to hide console window (Cheng Zhao) [#&#8203;39712](https://github.com/nodejs/node/pull/39712)
-   \[[`c696f97c5e`](https://github.com/nodejs/node/commit/c696f97c5e)] - **build**: exclude markdown files from some GitHub Actions (Rich Trott) [#&#8203;39565](https://github.com/nodejs/node/pull/39565)
-   \[[`0bd6dd1ee2`](https://github.com/nodejs/node/commit/0bd6dd1ee2)] - **build**: use lts shorthand in GitHub Actions (Rich Trott) [#&#8203;39538](https://github.com/nodejs/node/pull/39538)
-   \[[`3482bca643`](https://github.com/nodejs/node/commit/3482bca643)] - **build**: override python executable path on configure (legendecas) [#&#8203;39465](https://github.com/nodejs/node/pull/39465)
-   \[[`61261cdb8e`](https://github.com/nodejs/node/commit/61261cdb8e)] - **build**: use Node.js 14 in commit-lint.yml (Rich Trott) [#&#8203;39506](https://github.com/nodejs/node/pull/39506)
-   \[[`719f1563c1`](https://github.com/nodejs/node/commit/719f1563c1)] - **build**: fix `host_arch_cc()` for AIX/IBM i (Richard Lau) [#&#8203;39481](https://github.com/nodejs/node/pull/39481)
-   \[[`6e06b2ff9d`](https://github.com/nodejs/node/commit/6e06b2ff9d)] - **build**: update coverage Makefile target comments (Richard Lau) [#&#8203;39365](https://github.com/nodejs/node/pull/39365)
-   \[[`4e28d2b2c0`](https://github.com/nodejs/node/commit/4e28d2b2c0)] - **build**: run workflows when a PR is ready for review (Michaël Zasso) [#&#8203;39405](https://github.com/nodejs/node/pull/39405)
-   \[[`0da5d74da4`](https://github.com/nodejs/node/commit/0da5d74da4)] - **build**: update to setup-node@v2 (Rich Trott) [#&#8203;39366](https://github.com/nodejs/node/pull/39366)
-   \[[`f2e1c2267e`](https://github.com/nodejs/node/commit/f2e1c2267e)] - **build**: update gcovr for gcc 8 compatibility (Richard Lau) [#&#8203;39326](https://github.com/nodejs/node/pull/39326)
-   \[[`131dd6ec4d`](https://github.com/nodejs/node/commit/131dd6ec4d)] - **build**: remove unused comment in Makefile (LitoMore) [#&#8203;39171](https://github.com/nodejs/node/pull/39171)
-   \[[`40e46321b0`](https://github.com/nodejs/node/commit/40e46321b0)] - **build**: uvwasi honours node_shared_libuv (Jérémy Lal) [#&#8203;39260](https://github.com/nodejs/node/pull/39260)
-   \[[`5c6ab719f2`](https://github.com/nodejs/node/commit/5c6ab719f2)] - **build**: shorten path used in tarball build workflow (Richard Lau) [#&#8203;39192](https://github.com/nodejs/node/pull/39192)
-   \[[`870526374c`](https://github.com/nodejs/node/commit/870526374c)] - **build**: add `library_files` to gyp variables (himself65) [#&#8203;39293](https://github.com/nodejs/node/pull/39293)
-   \[[`0e221156aa`](https://github.com/nodejs/node/commit/0e221156aa)] - **build**: pass directory instead of list of files to js2c.py (Joyee Cheung) [#&#8203;39069](https://github.com/nodejs/node/pull/39069)
-   \[[`8d8415415b`](https://github.com/nodejs/node/commit/8d8415415b)] - **build**: don't pass `--mode` argument to V8 test-runner (Richard Lau) [#&#8203;39055](https://github.com/nodejs/node/pull/39055)
-   \[[`2d50217634`](https://github.com/nodejs/node/commit/2d50217634)] - **build**: fix commit linter on unrebased PRs (Mary Marchini) [#&#8203;39121](https://github.com/nodejs/node/pull/39121)
-   \[[`c93d5e006e`](https://github.com/nodejs/node/commit/c93d5e006e)] - **build**: use Actions to validate commit message (Mary Marchini) [#&#8203;32417](https://github.com/nodejs/node/pull/32417)
-   \[[`0bcaf9c4d1`](https://github.com/nodejs/node/commit/0bcaf9c4d1)] - **child_process**: fix spawn and fork abort behavior (Nitzan Uziely) [#&#8203;37325](https://github.com/nodejs/node/pull/37325)
-   \[[`8010c83180`](https://github.com/nodejs/node/commit/8010c83180)] - **child_process**: fix bad abort signal leak (Nitzan Uziely) [#&#8203;37257](https://github.com/nodejs/node/pull/37257)
-   \[[`32aff2f5a0`](https://github.com/nodejs/node/commit/32aff2f5a0)] - **console**: refactor to avoid unsafe array iteration (Antoine du Hamel) [#&#8203;36753](https://github.com/nodejs/node/pull/36753)
-   \[[`f46e8cdf79`](https://github.com/nodejs/node/commit/f46e8cdf79)] - **debugger**: remove undefined parameter (Rich Trott) [#&#8203;39570](https://github.com/nodejs/node/pull/39570)
-   \[[`482459edd4`](https://github.com/nodejs/node/commit/482459edd4)] - **debugger**: validate sec-websocket-accept response header (Chris Opperwall) [#&#8203;39357](https://github.com/nodejs/node/pull/39357)
-   \[[`e9c46107d7`](https://github.com/nodejs/node/commit/e9c46107d7)] - **debugger**: rename internal module (Rich Trott) [#&#8203;39378](https://github.com/nodejs/node/pull/39378)
-   \[[`49e0883c75`](https://github.com/nodejs/node/commit/49e0883c75)] - **debugger**: indicate server is ending (Rich Trott) [#&#8203;39334](https://github.com/nodejs/node/pull/39334)
-   \[[`72a3419510`](https://github.com/nodejs/node/commit/72a3419510)] - **debugger**: rename inspector-cli test module to debugger (Rich Trott) [#&#8203;38530](https://github.com/nodejs/node/pull/38530)
-   \[[`b3352cfba4`](https://github.com/nodejs/node/commit/b3352cfba4)] - **debugger**: prevent simultaneous heap snapshots (Rich Trott) [#&#8203;39638](https://github.com/nodejs/node/pull/39638)
-   \[[`e5826ab1c2`](https://github.com/nodejs/node/commit/e5826ab1c2)] - **debugger**: remove final lint exceptions in inspect_repl.js (Rich Trott) [#&#8203;39078](https://github.com/nodejs/node/pull/39078)
-   \[[`34c0701952`](https://github.com/nodejs/node/commit/34c0701952)] - **deps**: V8: cherry-pick [`00bb1a7`](https://github.com/nodejs/node/commit/00bb1a77c03e) (Darshan Sen) [#&#8203;39829](https://github.com/nodejs/node/pull/39829)
-   \[[`42359ab582`](https://github.com/nodejs/node/commit/42359ab582)] - **deps**: upgrade to libuv 1.42.0 (Luigi Pinca) [#&#8203;39525](https://github.com/nodejs/node/pull/39525)
-   \[[`d863a9db68`](https://github.com/nodejs/node/commit/d863a9db68)] - **deps**: bump HdrHistogram_C to 0.11.2 (Matteo Collina) [#&#8203;39462](https://github.com/nodejs/node/pull/39462)
-   \[[`4c93968a62`](https://github.com/nodejs/node/commit/4c93968a62)] - **deps**: extract gtest source files to deps/googletest (legendecas) [#&#8203;39386](https://github.com/nodejs/node/pull/39386)
-   \[[`fcae391fed`](https://github.com/nodejs/node/commit/fcae391fed)] - **deps**: update Acorn to v8.4.1 (Michaël Zasso) [#&#8203;39166](https://github.com/nodejs/node/pull/39166)
-   \[[`327838dd96`](https://github.com/nodejs/node/commit/327838dd96)] - **deps**: V8: backport [`c922458`](https://github.com/nodejs/node/commit/c9224589cf53) (Stephen Belanger) [#&#8203;39743](https://github.com/nodejs/node/pull/39743)
-   \[[`89c1bbd7b2`](https://github.com/nodejs/node/commit/89c1bbd7b2)] - **deps**: V8: cherry-pick [`81814ed`](https://github.com/nodejs/node/commit/81814ed44574) (Stephen Belanger) [#&#8203;39719](https://github.com/nodejs/node/pull/39719)
-   \[[`8b9215d07c`](https://github.com/nodejs/node/commit/8b9215d07c)] - **deps**: update to cjs-module-lexer@1.2.2 (Guy Bedford) [#&#8203;39402](https://github.com/nodejs/node/pull/39402)
-   \[[`e201293ddb`](https://github.com/nodejs/node/commit/e201293ddb)] - **dgram**: use simplified validator (Voltrex) [#&#8203;39753](https://github.com/nodejs/node/pull/39753)
-   \[[`6fdac38f91`](https://github.com/nodejs/node/commit/6fdac38f91)] - **doc,fs**: remove experimental status for WHATWG URL as path (Antoine du Hamel) [#&#8203;38870](https://github.com/nodejs/node/pull/38870)
-   \[[`d56e8268f9`](https://github.com/nodejs/node/commit/d56e8268f9)] - **doc,lib**: prepare for stricter multi-line array linting (Rich Trott) [#&#8203;37088](https://github.com/nodejs/node/pull/37088)
-   \[[`5500ae9236`](https://github.com/nodejs/node/commit/5500ae9236)] - **domain**: do not add domain to promise from other context (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`dc855af18e`](https://github.com/nodejs/node/commit/dc855af18e)] - **errors**: don't throw TypeError on missing export (Benjamin Coe) [#&#8203;39017](https://github.com/nodejs/node/pull/39017)
-   \[[`c13eadc218`](https://github.com/nodejs/node/commit/c13eadc218)] - **errors**: eliminate all overhead for hidden calls (Momtchil Momtchev) [#&#8203;35644](https://github.com/nodejs/node/pull/35644)
-   \[[`d42bbe48c5`](https://github.com/nodejs/node/commit/d42bbe48c5)] - **esm**: use correct URL for error decoration (Bradley Farias) [#&#8203;37854](https://github.com/nodejs/node/pull/37854)
-   \[[`9db3304368`](https://github.com/nodejs/node/commit/9db3304368)] - **esm**: update to correct deprecation code (Colin Ihrig) [#&#8203;37147](https://github.com/nodejs/node/pull/37147)
-   \[[`e73bfed2f4`](https://github.com/nodejs/node/commit/e73bfed2f4)] - **esm**: deprecate legacy main lookup for modules (Guy Bedford) [#&#8203;36918](https://github.com/nodejs/node/pull/36918)
-   \[[`c1782ea1f5`](https://github.com/nodejs/node/commit/c1782ea1f5)] - **events**: allow the options argument to be null (Luigi Pinca) [#&#8203;39486](https://github.com/nodejs/node/pull/39486)
-   \[[`d2834fb97f`](https://github.com/nodejs/node/commit/d2834fb97f)] - **fs**: improve fsPromises writeFile performance (Nitzan Uziely) [#&#8203;37610](https://github.com/nodejs/node/pull/37610)
-   \[[`ee1d13c90d`](https://github.com/nodejs/node/commit/ee1d13c90d)] - **fs**: use byteLength to handle ArrayBuffer views (Michaël Zasso) [#&#8203;38187](https://github.com/nodejs/node/pull/38187)
-   \[[`b38d6b475b`](https://github.com/nodejs/node/commit/b38d6b475b)] - **fs**: fixup negative length in fs.truncate (James M Snell) [#&#8203;37483](https://github.com/nodejs/node/pull/37483)
-   \[[`fe28128f3c`](https://github.com/nodejs/node/commit/fe28128f3c)] - **fs**: add docs and tests for `AsyncIterable` support in `fh.writeFile` (Antoine du Hamel) [#&#8203;39836](https://github.com/nodejs/node/pull/39836)
-   \[[`2b0e2706c0`](https://github.com/nodejs/node/commit/2b0e2706c0)] - **fs**: improve fsPromises readFile performance (Nitzan Uziely) [#&#8203;37608](https://github.com/nodejs/node/pull/37608)
-   \[[`a4d6f78619`](https://github.com/nodejs/node/commit/a4d6f78619)] - **fs**: move constants to internal/fs/utils.js (Darshan Sen) [#&#8203;38061](https://github.com/nodejs/node/pull/38061)
-   \[[`402f7722ce`](https://github.com/nodejs/node/commit/402f7722ce)] - **fs**: add validatePosition and use in read and readSync (Darshan Sen) [#&#8203;37051](https://github.com/nodejs/node/pull/37051)
-   \[[`2bc301dcff`](https://github.com/nodejs/node/commit/2bc301dcff)] - **http**: decodes url.username and url.password for authorization header (Lew Gordon) [#&#8203;39310](https://github.com/nodejs/node/pull/39310)
-   \[[`5459f4af33`](https://github.com/nodejs/node/commit/5459f4af33)] - **http**: clean up HttpParser correctly (Tobias Koppers) [#&#8203;39292](https://github.com/nodejs/node/pull/39292)
-   \[[`8b3feee148`](https://github.com/nodejs/node/commit/8b3feee148)] - **http,https**: align server option of https with http (Qingyu Deng) [#&#8203;38992](https://github.com/nodejs/node/pull/38992)
-   \[[`cf59e87c8b`](https://github.com/nodejs/node/commit/cf59e87c8b)] - **inspector**: update inspector_protocol to [`89c4adf`](https://github.com/nodejs/node/commit/89c4adf) (Rich Trott) [#&#8203;39650](https://github.com/nodejs/node/pull/39650)
-   \[[`ea5f2047a2`](https://github.com/nodejs/node/commit/ea5f2047a2)] - **inspector**: update inspector_protocol to [`8ec18cf`](https://github.com/nodejs/node/commit/8ec18cf) (Rich Trott) [#&#8203;39614](https://github.com/nodejs/node/pull/39614)
-   \[[`1e5aca550c`](https://github.com/nodejs/node/commit/1e5aca550c)] - **inspector**: mark as stable (Gireesh Punathil) [#&#8203;37748](https://github.com/nodejs/node/pull/37748)
-   \[[`8a2ce5dae6`](https://github.com/nodejs/node/commit/8a2ce5dae6)] - **inspector**: move inspector async hooks to environment (Joyee Cheung) [#&#8203;39112](https://github.com/nodejs/node/pull/39112)
-   \[[`338189ff6f`](https://github.com/nodejs/node/commit/338189ff6f)] - **lib**: simplify validators (Voltrex) [#&#8203;39753](https://github.com/nodejs/node/pull/39753)
-   \[[`e1019351e8`](https://github.com/nodejs/node/commit/e1019351e8)] - **lib**: cleanup validation (Voltrex) [#&#8203;39652](https://github.com/nodejs/node/pull/39652)
-   \[[`dbaf4988bc`](https://github.com/nodejs/node/commit/dbaf4988bc)] - **lib**: use validators (Voltrex) [#&#8203;39663](https://github.com/nodejs/node/pull/39663)
-   \[[`9c33e4bfb2`](https://github.com/nodejs/node/commit/9c33e4bfb2)] - **lib**: use validator (Voltrex) [#&#8203;39547](https://github.com/nodejs/node/pull/39547)
-   \[[`5b1104291d`](https://github.com/nodejs/node/commit/5b1104291d)] - **lib**: use `validateObject` (Voltrex) [#&#8203;39605](https://github.com/nodejs/node/pull/39605)
-   \[[`1ce81079df`](https://github.com/nodejs/node/commit/1ce81079df)] - **lib**: remove use of array destructuring (Antoine du Hamel) [#&#8203;36818](https://github.com/nodejs/node/pull/36818)
-   \[[`b24b34effd`](https://github.com/nodejs/node/commit/b24b34effd)] - **lib**: add `bound apply` variants of varargs `primordials` (ExE Boss) [#&#8203;37005](https://github.com/nodejs/node/pull/37005)
-   \[[`7cdff9a6a8`](https://github.com/nodejs/node/commit/7cdff9a6a8)] - **lib**: refactor `primordials.makeSafe` to use more primordials (ExE Boss) [#&#8203;36865](https://github.com/nodejs/node/pull/36865)
-   \[[`1737352580`](https://github.com/nodejs/node/commit/1737352580)] - **lib**: comment explaining special-case handling of promises (Stephen Belanger) [#&#8203;39135](https://github.com/nodejs/node/pull/39135)
-   \[[`7f54cccb6c`](https://github.com/nodejs/node/commit/7f54cccb6c)] - **lib**: refactor to use validateString (ZiJian Liu) [#&#8203;37006](https://github.com/nodejs/node/pull/37006)
-   \[[`98259dc527`](https://github.com/nodejs/node/commit/98259dc527)] - **module**: improve support of data: URLs (Antoine du Hamel) [#&#8203;37392](https://github.com/nodejs/node/pull/37392)
-   \[[`9aba2888a1`](https://github.com/nodejs/node/commit/9aba2888a1)] - **net**: throw ERR_OUT_OF_RANGE if blockList.addSubnet prefix is NaN (ZiJian Liu) [#&#8203;36732](https://github.com/nodejs/node/pull/36732)
-   \[[`2ca12c83b4`](https://github.com/nodejs/node/commit/2ca12c83b4)] - **node-api**: handle pending exception in cb wrapper (Michael Dawson) [#&#8203;39476](https://github.com/nodejs/node/pull/39476)
-   \[[`9e5edf2158`](https://github.com/nodejs/node/commit/9e5edf2158)] - **node-api**: cctest on v8impl::Reference (legendecas) [#&#8203;38970](https://github.com/nodejs/node/pull/38970)
-   \[[`a74032a490`](https://github.com/nodejs/node/commit/a74032a490)] - **node-api**: rtn pending excep on napi_new_instance (legendecas) [#&#8203;38798](https://github.com/nodejs/node/pull/38798)
-   \[[`bcb85adee6`](https://github.com/nodejs/node/commit/bcb85adee6)] - **policy**: canonicalize before resolving specifiers (Bradley Farias) [#&#8203;37863](https://github.com/nodejs/node/pull/37863)
-   \[[`0ff520cf02`](https://github.com/nodejs/node/commit/0ff520cf02)] - **policy**: fix integrity when DEFAULT_ENCODING is set (Tobias Nießen) [#&#8203;39750](https://github.com/nodejs/node/pull/39750)
-   \[[`6c87b591d9`](https://github.com/nodejs/node/commit/6c87b591d9)] - **readline**: allow completer to rewrite existing input (Anna Henningsen) [#&#8203;39178](https://github.com/nodejs/node/pull/39178)
-   \[[`37b4708b19`](https://github.com/nodejs/node/commit/37b4708b19)] - **repl**: fix tla function hoisting (Don Jayamanne) [#&#8203;39745](https://github.com/nodejs/node/pull/39745)
-   \[[`9264caeafe`](https://github.com/nodejs/node/commit/9264caeafe)] - **repl**: do not include legacy getter/setter methods in completion (Anna Henningsen) [#&#8203;39576](https://github.com/nodejs/node/pull/39576)
-   \[[`50c5e71e22`](https://github.com/nodejs/node/commit/50c5e71e22)] - **repl**: correctly hoist top level await declarations (ejose19) [#&#8203;39265](https://github.com/nodejs/node/pull/39265)
-   \[[`1e065a0a43`](https://github.com/nodejs/node/commit/1e065a0a43)] - **repl**: processTopLevelAwait fallback error handling (ejose19) [#&#8203;39290](https://github.com/nodejs/node/pull/39290)
-   \[[`99664494ff`](https://github.com/nodejs/node/commit/99664494ff)] - **repl**: ensure correct syntax err for await parsing (Guy Bedford) [#&#8203;39154](https://github.com/nodejs/node/pull/39154)
-   \[[`761dafafde`](https://github.com/nodejs/node/commit/761dafafde)] - **repl**: fix Ctrl+C on top level await (Antoine du Hamel) [#&#8203;38656](https://github.com/nodejs/node/pull/38656)
-   \[[`88b02cbb08`](https://github.com/nodejs/node/commit/88b02cbb08)] - **repl**: add auto‑completion for dynamic import calls (ExE Boss) [#&#8203;37178](https://github.com/nodejs/node/pull/37178)
-   \[[`8f3a8830ba`](https://github.com/nodejs/node/commit/8f3a8830ba)] - **repl**: refactor to avoid unsafe array iteration (Antoine du Hamel) [#&#8203;37188](https://github.com/nodejs/node/pull/37188)
-   \[[`a48e2d6ec7`](https://github.com/nodejs/node/commit/a48e2d6ec7)] - **repl**: refactor to avoid unsafe array iteration (Darshan Sen) [#&#8203;36663](https://github.com/nodejs/node/pull/36663)
-   \[[`20ffadf437`](https://github.com/nodejs/node/commit/20ffadf437)] - **repl**: refactor to use more primordials (Antoine du Hamel) [#&#8203;36264](https://github.com/nodejs/node/pull/36264)
-   \[[`f69c934ad4`](https://github.com/nodejs/node/commit/f69c934ad4)] - **report**: generates report on threads with no isolates (legendecas) [#&#8203;38994](https://github.com/nodejs/node/pull/38994)
-   \[[`c4686fa5a7`](https://github.com/nodejs/node/commit/c4686fa5a7)] - **src**: fix TextDecoder final flush size calculation (James M Snell) [#&#8203;39737](https://github.com/nodejs/node/pull/39737)
-   \[[`495cd02c20`](https://github.com/nodejs/node/commit/495cd02c20)] - **src**: add cosmetic space character to `async_wrap.h` file (Juan José Arboleda) [#&#8203;39459](https://github.com/nodejs/node/pull/39459)
-   \[[`985ec48975`](https://github.com/nodejs/node/commit/985ec48975)] - **src**: print native module id on native module not found (legendecas) [#&#8203;39460](https://github.com/nodejs/node/pull/39460)
-   \[[`e6ff7e648e`](https://github.com/nodejs/node/commit/e6ff7e648e)] - **src**: close HandleWraps instead of deleting them in OnGCCollect() (Anna Henningsen) [#&#8203;39441](https://github.com/nodejs/node/pull/39441)
-   \[[`5c473bdc12`](https://github.com/nodejs/node/commit/5c473bdc12)] - **src**: remove unused guards around node-api reference (legendecas) [#&#8203;38334](https://github.com/nodejs/node/pull/38334)
-   \[[`41213bd507`](https://github.com/nodejs/node/commit/41213bd507)] - **src**: add JSDoc typings for v8 (Voltrex) [#&#8203;38944](https://github.com/nodejs/node/pull/38944)
-   \[[`02b1df9fac`](https://github.com/nodejs/node/commit/02b1df9fac)] - **src**: fix crash in AfterGetAddrInfo (Anna Henningsen) [#&#8203;39735](https://github.com/nodejs/node/pull/39735)
-   \[[`99493b07d4`](https://github.com/nodejs/node/commit/99493b07d4)] - **src**: fix fatal errors when a current isolate not exist (legendecas) [#&#8203;38624](https://github.com/nodejs/node/pull/38624)
-   \[[`9433c28c14`](https://github.com/nodejs/node/commit/9433c28c14)] - **src**: remove more extra semis from member fns (Shelley Vohr) [#&#8203;38744](https://github.com/nodejs/node/pull/38744)
-   \[[`bad990c934`](https://github.com/nodejs/node/commit/bad990c934)] - **src**: use BaseObject::kInteralFieldCount in Blob (Joyee Cheung) [#&#8203;36991](https://github.com/nodejs/node/pull/36991)
-   \[[`0a759dff52`](https://github.com/nodejs/node/commit/0a759dff52)] - **src**: compare IPv4 addresses in host byte order (Colin Ihrig) [#&#8203;39096](https://github.com/nodejs/node/pull/39096)
-   \[[`d73181f243`](https://github.com/nodejs/node/commit/d73181f243)] - **src**: reduce duplicated boilerplate with new env utility fn (James M Snell) [#&#8203;36536](https://github.com/nodejs/node/pull/36536)
-   \[[`85af15a8b6`](https://github.com/nodejs/node/commit/85af15a8b6)] - **src**: allow instances of net.BlockList to be created internally (James M Snell) [#&#8203;34741](https://github.com/nodejs/node/pull/34741)
-   \[[`1008c80176`](https://github.com/nodejs/node/commit/1008c80176)] - **src**: add SocketAddressLRU Utility (James M Snell) [#&#8203;34618](https://github.com/nodejs/node/pull/34618)
-   \[[`e404841a9c`](https://github.com/nodejs/node/commit/e404841a9c)] - **src**: set PromiseHooks by Environment (Bryan English) [#&#8203;38821](https://github.com/nodejs/node/pull/38821)
-   \[[`c8c290ae8f`](https://github.com/nodejs/node/commit/c8c290ae8f)] - **src,zlib**: tighten up Z_\*\_WINDOWBITS macros (Khaidi Chu) [#&#8203;39115](https://github.com/nodejs/node/pull/39115)
-   \[[`de171177b4`](https://github.com/nodejs/node/commit/de171177b4)] - **stream**: clean `endWritableNT` (Mestery) [#&#8203;39645](https://github.com/nodejs/node/pull/39645)
-   \[[`32a5b8f59b`](https://github.com/nodejs/node/commit/32a5b8f59b)] - **stream**: move duplicated code to an internal module (Rich Trott) [#&#8203;37508](https://github.com/nodejs/node/pull/37508)
-   \[[`f90b22d351`](https://github.com/nodejs/node/commit/f90b22d351)] - **util**: add internal createDeferredPromise() (Colin Ihrig) [#&#8203;37095](https://github.com/nodejs/node/pull/37095)
-   \[[`61b4a98480`](https://github.com/nodejs/node/commit/61b4a98480)] - **zlib**: avoid converting `Uint8Array` instances to `Buffer` (Antoine du Hamel) [#&#8203;39492](https://github.com/nodejs/node/pull/39492)

##### Documentation commits

-   \[[`8efd559347`](https://github.com/nodejs/node/commit/8efd559347)] - **doc**: add duplicate CVE check in sec. release doc (Daniel Bevenius) [#&#8203;39845](https://github.com/nodejs/node/pull/39845)
-   \[[`7b123ec78d`](https://github.com/nodejs/node/commit/7b123ec78d)] - **doc**: improve description of the triagers team (Michaël Zasso) [#&#8203;39833](https://github.com/nodejs/node/pull/39833)
-   \[[`615477f67b`](https://github.com/nodejs/node/commit/615477f67b)] - **doc**: update instructions for cc (Michael Dawson) [#&#8203;39674](https://github.com/nodejs/node/pull/39674)
-   \[[`1a8a26d92e`](https://github.com/nodejs/node/commit/1a8a26d92e)] - **doc**: fix malformed changelog entries (Rich Trott) [#&#8203;39791](https://github.com/nodejs/node/pull/39791)
-   \[[`9e772ca9a1`](https://github.com/nodejs/node/commit/9e772ca9a1)] - **doc**: fix lint errors in packages.md (Rich Trott) [#&#8203;39792](https://github.com/nodejs/node/pull/39792)
-   \[[`2624c98207`](https://github.com/nodejs/node/commit/2624c98207)] - **doc**: add example of self-reference in scoped packages (Jesús Leganés-Combarro 'piranna) [#&#8203;37630](https://github.com/nodejs/node/pull/37630)
-   \[[`00f2cee26c`](https://github.com/nodejs/node/commit/00f2cee26c)] - **doc**: add himadriganguly as a triager (Himadri Ganguly) [#&#8203;39757](https://github.com/nodejs/node/pull/39757)
-   \[[`95b9cc78d2`](https://github.com/nodejs/node/commit/95b9cc78d2)] - **doc**: fix YAML comment opening tags (Jayden Seric) [#&#8203;38324](https://github.com/nodejs/node/pull/38324)
-   \[[`49a7962d58`](https://github.com/nodejs/node/commit/49a7962d58)] - **doc**: fix `fs.rmdir` `recursive` option deprecation history (Antoine du Hamel) [#&#8203;39728](https://github.com/nodejs/node/pull/39728)
-   \[[`53300d33c7`](https://github.com/nodejs/node/commit/53300d33c7)] - **doc**: fixed variable names in queueMicrotask example (ashish maurya) [#&#8203;39634](https://github.com/nodejs/node/pull/39634)
-   \[[`df1e20aaf1`](https://github.com/nodejs/node/commit/df1e20aaf1)] - **doc**: update debugger.md description and examples (Rich Trott) [#&#8203;39661](https://github.com/nodejs/node/pull/39661)
-   \[[`9672bbf01c`](https://github.com/nodejs/node/commit/9672bbf01c)] - **doc**: fix color contrast issue in light mode (Rich Trott) [#&#8203;39660](https://github.com/nodejs/node/pull/39660)
-   \[[`48281ecfcd`](https://github.com/nodejs/node/commit/48281ecfcd)] - **doc**: add code examples to `Writable.destroy()` and `Writable.destroyed` (Juan José Arboleda) [#&#8203;39491](https://github.com/nodejs/node/pull/39491)
-   \[[`8799a134e4`](https://github.com/nodejs/node/commit/8799a134e4)] - **doc**: move `NODE_MODULE_VERSION` in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`89c8afcf48`](https://github.com/nodejs/node/commit/89c8afcf48)] - **doc**: remove outdated ARM information from release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`a718b26f28`](https://github.com/nodejs/node/commit/a718b26f28)] - **doc**: fence command examples in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`42669bb049`](https://github.com/nodejs/node/commit/42669bb049)] - **doc**: update backport labels in release guide (Richard Lau) [#&#8203;39544](https://github.com/nodejs/node/pull/39544)
-   \[[`a437de3c5f`](https://github.com/nodejs/node/commit/a437de3c5f)] - **doc**: add code example to `http.createServer` method (Juan José Arboleda) [#&#8203;39455](https://github.com/nodejs/node/pull/39455)
-   \[[`695569fc17`](https://github.com/nodejs/node/commit/695569fc17)] - **doc**: move lball@redhat.com to emeritus (Lance Ball) [#&#8203;39501](https://github.com/nodejs/node/pull/39501)
-   \[[`c7523da86c`](https://github.com/nodejs/node/commit/c7523da86c)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39488](https://github.com/nodejs/node/pull/39488)
-   \[[`e826109d5c`](https://github.com/nodejs/node/commit/e826109d5c)] - **doc**: update strategic initiative champion (Rich Trott) [#&#8203;39487](https://github.com/nodejs/node/pull/39487)
-   \[[`39da842051`](https://github.com/nodejs/node/commit/39da842051)] - **doc**: simplify unnecessarily specific .mailmap entries (Rich Trott) [#&#8203;39430](https://github.com/nodejs/node/pull/39430)
-   \[[`6a4c6ce4d7`](https://github.com/nodejs/node/commit/6a4c6ce4d7)] - **doc**: update checkbox label in backporting guide (Darshan Sen) [#&#8203;39420](https://github.com/nodejs/node/pull/39420)
-   \[[`d17afa08bd`](https://github.com/nodejs/node/commit/d17afa08bd)] - **doc**: remove \_Addenda\_ from headers (Rich Trott) [#&#8203;39427](https://github.com/nodejs/node/pull/39427)
-   \[[`ae97a96d9e`](https://github.com/nodejs/node/commit/ae97a96d9e)] - **doc**: simplify .mailmap file (Rich Trott) [#&#8203;39418](https://github.com/nodejs/node/pull/39418)
-   \[[`a3dee70f66`](https://github.com/nodejs/node/commit/a3dee70f66)] - **doc**: fix broken internal link in http.md (Rich Trott) [#&#8203;39425](https://github.com/nodejs/node/pull/39425)
-   \[[`ca947ac524`](https://github.com/nodejs/node/commit/ca947ac524)] - **doc**: remove outdated step in onboarding exercise (Rich Trott) [#&#8203;39410](https://github.com/nodejs/node/pull/39410)
-   \[[`86e12607f0`](https://github.com/nodejs/node/commit/86e12607f0)] - **doc**: revise strategic initiatives text (Rich Trott) [#&#8203;39417](https://github.com/nodejs/node/pull/39417)
-   \[[`cd8e773d28`](https://github.com/nodejs/node/commit/cd8e773d28)] - **doc**: update mailmap and AUTHORS (Rich Trott) [#&#8203;39393](https://github.com/nodejs/node/pull/39393)
-   \[[`8376b07ae8`](https://github.com/nodejs/node/commit/8376b07ae8)] - **doc**: use a details tag for completed initiatves (Rich Trott) [#&#8203;39416](https://github.com/nodejs/node/pull/39416)
-   \[[`43d28f5f00`](https://github.com/nodejs/node/commit/43d28f5f00)] - **doc**: update commit-queue.md to indicate GitHub Actions are checked (Rich Trott) [#&#8203;39411](https://github.com/nodejs/node/pull/39411)
-   \[[`63b0603e95`](https://github.com/nodejs/node/commit/63b0603e95)] - **doc**: use \_pull request\_ instead of \_PR\_ in onboarding doc (Rich Trott) [#&#8203;39409](https://github.com/nodejs/node/pull/39409)
-   \[[`73f784f764`](https://github.com/nodejs/node/commit/73f784f764)] - **doc**: add strategic initiatives from TSC repo (Rich Trott) [#&#8203;39394](https://github.com/nodejs/node/pull/39394)
-   \[[`1a494d51dc`](https://github.com/nodejs/node/commit/1a494d51dc)] - **doc**: standardize on \_pull request\_ (Rich Trott) [#&#8203;39384](https://github.com/nodejs/node/pull/39384)
-   \[[`eb12e4ccfb`](https://github.com/nodejs/node/commit/eb12e4ccfb)] - **doc**: make minor edits to pull request text (Rich Trott) [#&#8203;39383](https://github.com/nodejs/node/pull/39383)
-   \[[`ab0bf4fa1a`](https://github.com/nodejs/node/commit/ab0bf4fa1a)] - **doc**: add docker-node and build-wg issue contents (Daniel Bevenius) [#&#8203;39215](https://github.com/nodejs/node/pull/39215)
-   \[[`8438e8bf33`](https://github.com/nodejs/node/commit/8438e8bf33)] - **doc**: add instructions for core vuln files (Daniel Bevenius) [#&#8203;39220](https://github.com/nodejs/node/pull/39220)
-   \[[`c3cfefc2d3`](https://github.com/nodejs/node/commit/c3cfefc2d3)] - **doc**: standardize on not capitalizing \_collaborator\_ (Rich Trott) [#&#8203;39379](https://github.com/nodejs/node/pull/39379)
-   \[[`672023f9f2`](https://github.com/nodejs/node/commit/672023f9f2)] - **doc**: update mailmap and deduplicate AUTHORS entry (Rich Trott) [#&#8203;39391](https://github.com/nodejs/node/pull/39391)
-   \[[`baaa397e39`](https://github.com/nodejs/node/commit/baaa397e39)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39367](https://github.com/nodejs/node/pull/39367)
-   \[[`f39d93a428`](https://github.com/nodejs/node/commit/f39d93a428)] - **doc**: move jdalton to emeritus (Rich Trott) [#&#8203;39380](https://github.com/nodejs/node/pull/39380)
-   \[[`0b1ce72d64`](https://github.com/nodejs/node/commit/0b1ce72d64)] - **doc**: edit guide on pull requests (Rich Trott) [#&#8203;39359](https://github.com/nodejs/node/pull/39359)
-   \[[`6f0b3a20d1`](https://github.com/nodejs/node/commit/6f0b3a20d1)] - **doc**: add text about moving long commit lists out of PR description (Danielle Adams) [#&#8203;39186](https://github.com/nodejs/node/pull/39186)
-   \[[`9d43ce3b80`](https://github.com/nodejs/node/commit/9d43ce3b80)] - **doc**: do not use & for "and" in text (Rich Trott) [#&#8203;39345](https://github.com/nodejs/node/pull/39345)
-   \[[`25c104f21f`](https://github.com/nodejs/node/commit/25c104f21f)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39277](https://github.com/nodejs/node/pull/39277)
-   \[[`b47b47930c`](https://github.com/nodejs/node/commit/b47b47930c)] - **doc**: put information about the past in details tags (Rich Trott) [#&#8203;39321](https://github.com/nodejs/node/pull/39321)
-   \[[`5eafc3afa8`](https://github.com/nodejs/node/commit/5eafc3afa8)] - **doc**: move AndreasMadsen to emeritus (Rich Trott) [#&#8203;39315](https://github.com/nodejs/node/pull/39315)
-   \[[`fbf658f1d5`](https://github.com/nodejs/node/commit/fbf658f1d5)] - **doc**: move ofrobots to collaborator emeritus (Rich Trott) [#&#8203;39307](https://github.com/nodejs/node/pull/39307)
-   \[[`fc7d714149`](https://github.com/nodejs/node/commit/fc7d714149)] - **doc**: simplify CRAN mirror text in benchmark guide (Rich Trott) [#&#8203;39287](https://github.com/nodejs/node/pull/39287)
-   \[[`22f0b7e0d0`](https://github.com/nodejs/node/commit/22f0b7e0d0)] - **doc**: use "repository" instead of "repo" in onboarding.md (Rich Trott) [#&#8203;39286](https://github.com/nodejs/node/pull/39286)
-   \[[`f46ae3ffb6`](https://github.com/nodejs/node/commit/f46ae3ffb6)] - **doc**: update collaborator email address (Rich Trott) [#&#8203;39263](https://github.com/nodejs/node/pull/39263)
-   \[[`8c569cef88`](https://github.com/nodejs/node/commit/8c569cef88)] - **doc**: remove GitHub mark (Rich Trott) [#&#8203;39251](https://github.com/nodejs/node/pull/39251)
-   \[[`b4a0c5a384`](https://github.com/nodejs/node/commit/b4a0c5a384)] - **doc**: remove emailing the TSC from offboarding doc (Rich Trott) [#&#8203;39280](https://github.com/nodejs/node/pull/39280)
-   \[[`a4d70ff0cc`](https://github.com/nodejs/node/commit/a4d70ff0cc)] - **doc**: use "repository" in guides versus repo (Michael Dawson) [#&#8203;39198](https://github.com/nodejs/node/pull/39198)
-   \[[`31163ed9ee`](https://github.com/nodejs/node/commit/31163ed9ee)] - **doc**: update Node-api version matrix (Michael Dawson) [#&#8203;39197](https://github.com/nodejs/node/pull/39197)
-   \[[`9357547519`](https://github.com/nodejs/node/commit/9357547519)] - **doc**: update node-api support matrix (Michael Dawson) [#&#8203;38424](https://github.com/nodejs/node/pull/38424)
-   \[[`f08e9d5230`](https://github.com/nodejs/node/commit/f08e9d5230)] - **doc**: remove onboarding-extras (Rich Trott) [#&#8203;39252](https://github.com/nodejs/node/pull/39252)
-   \[[`6466faf26d`](https://github.com/nodejs/node/commit/6466faf26d)] - **doc**: move Sam Ruby to emeritus (Rich Trott) [#&#8203;39264](https://github.com/nodejs/node/pull/39264)
-   \[[`06acbf6453`](https://github.com/nodejs/node/commit/06acbf6453)] - **doc**: update AUTHORS file (Rich Trott) [#&#8203;39250](https://github.com/nodejs/node/pull/39250)
-   \[[`9178805653`](https://github.com/nodejs/node/commit/9178805653)] - **doc**: fix color contrast for anchor marks in dark mode (Rich Trott) [#&#8203;39168](https://github.com/nodejs/node/pull/39168)
-   \[[`c6118b23f7`](https://github.com/nodejs/node/commit/c6118b23f7)] - **doc**: rename datatypes to data types (FrankEntriken) [#&#8203;39209](https://github.com/nodejs/node/pull/39209)
-   \[[`fdd315918f`](https://github.com/nodejs/node/commit/fdd315918f)] - **doc**: normalize CSS variable names and indentation (Rich Trott) [#&#8203;39199](https://github.com/nodejs/node/pull/39199)
-   \[[`9c7c44781c`](https://github.com/nodejs/node/commit/9c7c44781c)] - **doc**: use more consistent formatting for deprecations (Rich Trott) [#&#8203;39218](https://github.com/nodejs/node/pull/39218)
-   \[[`c97ebd7905`](https://github.com/nodejs/node/commit/c97ebd7905)] - **doc**: update AUTHORS (Rich Trott) [#&#8203;39217](https://github.com/nodejs/node/pull/39217)
-   \[[`c4a3a24848`](https://github.com/nodejs/node/commit/c4a3a24848)] - **doc**: use "pull request" instead of "PR" in packages.md (Rich Trott) [#&#8203;39213](https://github.com/nodejs/node/pull/39213)
-   \[[`0d098bfaf0`](https://github.com/nodejs/node/commit/0d098bfaf0)] - **doc**: move v8.stopCoverage() to expected location in doc (Rich Trott) [#&#8203;39212](https://github.com/nodejs/node/pull/39212)
-   \[[`bd6af78749`](https://github.com/nodejs/node/commit/bd6af78749)] - **doc**: move vm.measureMemory() to expected location in doc (Rich Trott) [#&#8203;39211](https://github.com/nodejs/node/pull/39211)
-   \[[`7378b84bb8`](https://github.com/nodejs/node/commit/7378b84bb8)] - **doc**: add missing deprecation code (Colin Ihrig) [#&#8203;37147](https://github.com/nodejs/node/pull/37147)
-   \[[`2f6861ca51`](https://github.com/nodejs/node/commit/2f6861ca51)] - **doc**: use ASCII order for md refs (Antoine du Hamel) [#&#8203;39170](https://github.com/nodejs/node/pull/39170)
-   \[[`fa3909504f`](https://github.com/nodejs/node/commit/fa3909504f)] - **doc**: add cc oss-security@lists.openwall.com (Daniel Bevenius) [#&#8203;39191](https://github.com/nodejs/node/pull/39191)
-   \[[`52105acd5f`](https://github.com/nodejs/node/commit/52105acd5f)] - **doc**: remove instructions for unsupported Node.js versions (Rich Trott) [#&#8203;39185](https://github.com/nodejs/node/pull/39185)
-   \[[`eb2d75da16`](https://github.com/nodejs/node/commit/eb2d75da16)] - **doc**: remove obsolete cc recommendations (Rich Trott) [#&#8203;39181](https://github.com/nodejs/node/pull/39181)
-   \[[`4cf17edd03`](https://github.com/nodejs/node/commit/4cf17edd03)] - **doc**: use "repository" in maintaining-V8 doc (Rich Trott) [#&#8203;39179](https://github.com/nodejs/node/pull/39179)
-   \[[`d6a4f8aac9`](https://github.com/nodejs/node/commit/d6a4f8aac9)] - **doc**: fix broken link in errors.md (Rich Trott) [#&#8203;39200](https://github.com/nodejs/node/pull/39200)
-   \[[`82458b30fe`](https://github.com/nodejs/node/commit/82458b30fe)] - **doc**: correct JavaScript primitive value names in n-api.md (legendecas) [#&#8203;39129](https://github.com/nodejs/node/pull/39129)
-   \[[`2629979fd0`](https://github.com/nodejs/node/commit/2629979fd0)] - **doc**: apply logical ordering to CSS variables (Rich Trott) [#&#8203;39169](https://github.com/nodejs/node/pull/39169)
-   \[[`1996580b06`](https://github.com/nodejs/node/commit/1996580b06)] - **doc**: use repository instead of repo (Rich Trott) [#&#8203;39157](https://github.com/nodejs/node/pull/39157)
-   \[[`74ba115ab6`](https://github.com/nodejs/node/commit/74ba115ab6)] - **doc**: fix `EventTarget.dispatchEvent` docs (Rohan Sharma) [#&#8203;39127](https://github.com/nodejs/node/pull/39127)
-   \[[`2884d9094d`](https://github.com/nodejs/node/commit/2884d9094d)] - **doc**: update AUTHORS file (Rich Trott) [#&#8203;39082](https://github.com/nodejs/node/pull/39082)
-   \[[`d069c725b1`](https://github.com/nodejs/node/commit/d069c725b1)] - **doc**: fix napi_default_property name (Davidson Francis) [#&#8203;39104](https://github.com/nodejs/node/pull/39104)
-   \[[`1b74d3f775`](https://github.com/nodejs/node/commit/1b74d3f775)] - **doc**: fix dead links in packages.md (Michaël Zasso) [#&#8203;39113](https://github.com/nodejs/node/pull/39113)
-   \[[`0c2b5a048d`](https://github.com/nodejs/node/commit/0c2b5a048d)] - **doc**: clearify that http does chunked encoding itself (Mao Wtm) [#&#8203;28379](https://github.com/nodejs/node/pull/28379)
-   \[[`d0d731e271`](https://github.com/nodejs/node/commit/d0d731e271)] - **doc**: add descriptions about when `options.mode` is ignored (Ray) [#&#8203;39881](https://github.com/nodejs/node/pull/39881)
-   \[[`898db5a570`](https://github.com/nodejs/node/commit/898db5a570)] - **doc**: add code example to `fs.truncate` method (Juan José Arb…
foxxyz pushed a commit to foxxyz/node that referenced this pull request Oct 18, 2021
`net.BlockList` provides an object intended to be used by net APIs to
specify rules for disallowing network activity with specific IP
addresses. This commit adds the basic mechanism but does not add the
specific uses.

PR-URL: nodejs#34625
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. net Issues and PRs related to the net subsystem. semver-minor PRs that contain new features and should be released in the next minor version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants