Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

module: support require()ing synchronous ESM graphs#51977

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Closed
joyeecheung wants to merge0 commits intonodejs:mainfromjoyeecheung:require-esm

Conversation

joyeecheung
Copy link
Member

@joyeecheungjoyeecheung commentedMar 5, 2024
edited
Loading

Summary

This patch addsrequire() support for synchronous ESM graphs under
the flag--experimental-require-module

This is based on the the following design aspect of ESM:

  • The resolution can be synchronous (up to the host)
  • The evaluation of a synchronous graph (without top-level await) is
    also synchronous, and, by the time the module graph is instantiated
    (before evaluation starts), this is is already known.

If--experimental-require-module is enabled, and the ECMAScript
module being loaded byrequire() meets the following requirements:

  • Explicitly marked as an ES module with a"type": "module" field in
    the closest package.json or a.mjs extension.
  • Fully synchronous (contains no top-levelawait).

require() will load the requested module as an ES Module, and return
the module name space object. In this case it is similar to dynamic
import() but is run synchronously and returns the name space object
directly.

// point.mjsexportfunctiondistance(a,b){return(b.x-a.x)**2+(b.y-a.y)**2;}classPoint{constructor(x,y){this.x=x;this.y=y;}}exportdefaultPoint;
// main.jsconstrequired=require('./point.mjs');// [Module: null prototype] {//   default: [class Point],//   distance: [Function: distance]// }console.log(required);(async()=>{constimported=awaitimport('./point.mjs');console.log(imported===required);// true})();

If the module beingrequire()'d contains top-levelawait, or the module
graph itimports contains top-levelawait,
ERR_REQUIRE_ASYNC_MODULE will be thrown. In this case, users should
load the asynchronous module usingimport().

If--experimental-print-required-tla is enabled, instead of throwing
ERR_REQUIRE_ASYNC_MODULE before evaluation, Node.js will evaluate the
module, try to locate the top-level awaits, and print their location to
help users find them.

Background

There were some previous discussions about this idea back in 2019 (e.g.#49450). I I didn't go through all of them, but in 2024 I believe we can agree that not supportingrequire(esm) is creating enough pain for our users that we should really deprioritize the drawbacks of it. A non-perfect solution is still better than having nothing at all IMO.

There was a previous attempt in#30891 which tried to support TLA from the start and thus needed to run the event loop recursively, which would be unsafe and therefore it was closed (synchronous-onlyrequire(esm) was brought up in#30891 (comment) but the PR didn't end up going that way). I have the impression that there were some other attempts before, but non active AFAIK.

This PR tries to keep it simple - only load ESM synchronously when we know it's synchronous (which is part of the design of ESM and is supported by the V8 API), and if it contains TLA, we throw. That should at least address the majority of use cases of ESM (TLA in a module that's supposed to be import'ed is already not a great idea, they are more meant for entry points. If they are really needed, users can useimport() to make that asynchronicity explicit).

When I was refactoring the module loader implementation and touching the V8 Module API to fix other issues, this idea appears to be natural to me (since ESM is really designed to have this synchronocity in mind) and does not actually need that much work in 2024 (er, with some refactorings that I already did for other issues at least..), so here is another attempt at it.

Motivation

The motivation for this is probably obvious, but I'll give my take again in case there are unfamiliar readers: CJS/ESM interop would always be done on a best-effort basis and they should not be mixed if avoidable, but todaythe majority of the popular packages out there in the registry are still CJS. There needs to be an escape hatch for simple cases while the transition happens.

Withrequire(esm), when a dependency goes ESM-only, it is less likely to be a breaking change for users as long as it's a synchronous ESM (with no top-level await), which should be the case most of the time. This helps package authors transition to ESM without worrying about user experience, or having to release it as dual module which bloats thenode_modules size even further and leads to identity problems due to the duplication.

The design of ESM already ensures that synchronous evaluation and therefore interop with CJS for a synchronous graph is possible (e.g. seetc39/proposal-top-level-await#61), and we won't be alone in restricting TLA for certain features(e.g.w3c/ServiceWorker#1407 service workers on the web also disallows TLA) it would be a shame not to make use of that. Ongoing proposal likeimport defer could also help addressing the lazy-loading needs without breaking the synchronous aspect of ESM.

TODOs

There are still some feature interactions that this implementation doesn't handle (e.g.--experimental-detect-module or--experimental-loader or--experimental-wasm-modules). Some edge cases involving cycles probably would have undefined behaviors. I don't think this needs to handle interactions with everything (especially other experimental features) perfectly to land as a first iteration of an experimental feature. We can continue iterating on it while it's experimental.

mkosir, ianchanning, magicmark, pimterry, alexanderankin, Yihao-G, banyudu, dlebedynskyi, bricss, yesmeck, and 62 more reacted with thumbs up emojiAugustinMauroy reacted with thumbs down emojiljharb, MomenNano, marco-ippolito, tchetwin, legendecas, Qard, MoLow, tonivj5, DanielRosenwasser, liuxingbaoyu, and 103 more reacted with hooray emojirobpalme, littledan, mkubilayk, joesepi, ljharb, atlowChemi, KhafraDev, jakebailey, SuperchupuDev, H4ad, and 117 more reacted with heart emojijoesepi, ljharb, atlowChemi, KhafraDev, H4ad, MomenNano, marco-ippolito, tchetwin, mcollina, Qard, and 51 more reacted with rocket emojijakebailey, Qard, tonivj5, himself65, yossydev, xeho91, coldter, robertsLando, bricss, brainkim, and 8 more reacted with eyes emoji
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/loaders
  • @nodejs/startup
  • @nodejs/test_runner
  • @nodejs/vm

@nodejs-github-botnodejs-github-bot added lib / srcIssues and PRs related to general changes in the lib or src directory. needs-ciPRs that need a full CI run. labelsMar 5, 2024
@joyeecheungjoyeecheung added the request-ciAdd this label to start a Jenkins CI on a PR. labelMar 5, 2024
@GeoffreyBoothGeoffreyBooth added moduleIssues and PRs related to the module subsystem. esmIssues and PRs related to the ECMAScript Modules implementation. labelsMar 5, 2024
@RafaelGSSRafaelGSS added the notable-changePRs with changes that should be highlighted in changelogs. labelMar 5, 2024
@github-actionsGitHub Actions
Copy link
Contributor

The notable-changePRs with changes that should be highlighted in changelogs. label has been added by@RafaelGSS.

Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment. Otherwise, the commit will be placed in theOther Notable Changes section.

@RafaelGSSRafaelGSS added the semver-minorPRs that contain new features and should be released in the next minor version. labelMar 5, 2024
@github-actionsgithub-actionsbot removed the request-ciAdd this label to start a Jenkins CI on a PR. labelMar 5, 2024
@joyeecheungjoyeecheungforce-pushed therequire-esm branch 2 times, most recently from5a27731 to612b870CompareMarch 5, 2024 18:39
@nodejs-github-bot
Copy link
Collaborator

@nodejsnodejs deleted a comment fromnodejs-github-botMar 5, 2024
@GeoffreyBooth
Copy link
Member

Before we get into the technical details, I just want to give a heartfelt THANK YOU to@joyeecheung for taking this on, and express my awe of her brilliance in figuring out how to achieve it.require of ESM has been something that we’ve been discussing off and on for years, with dreams of someday figuring out how to achieve it in a shippable way, so if this PR can result in that then we will all be very grateful; and this new functionality will be transformative for module authors, who will be able to write libraries with less worry around interoperability issues.

yvele reacted with thumbs up emojijoyeecheung, anonrig, marco-ippolito, mcollina, MoLow, tonivj5, KhafraDev, DanielRosenwasser, littledan, legendecas, and 35 more reacted with heart emojiHanawa02 reacted with rocket emoji

@GeoffreyBooth
Copy link
Member

  • currently loader hooks are ignored in this path, because they already don’t affectrequire() anyway

I think the hooks do affectrequire, since#47999. I don’t think wiring them up to this needs to be a blocker for landing this PR, but if it’s not difficult perhaps we could either warn or error if hooks are registered when arequire of an ES module occurs.

WASM support

import of Wasm is still experimental and there’s no timeframe for that changing (we were waiting on spec changes the last I recall) so I wouldn’t worry about this.

.cjs exclusion, directory resolution handling

What does this mean? Doing the extension searching for .cjs and/or .mjs in the filename? I wouldn’t worry about that for this PR; anyone doingrequire of a .cjs file needs to add the .cjs extension today, so it would be expected to need to continue to specify it; and likewise for .mjs.

@ShogunPanda
Copy link
Contributor

I LOVE this idea. It will simplify so many things. Let's keep going with it.

TotallyInformation, lapo-luchini, sauzeyu, yvele, and tommoor reacted with thumbs up emoji

@joyeecheungjoyeecheungforce-pushed therequire-esm branch 2 times, most recently from515d02d to1ab2592CompareMarch 6, 2024 17:52
@joyeecheungjoyeecheung added the request-ciAdd this label to start a Jenkins CI on a PR. labelMar 6, 2024
@github-actionsgithub-actionsbot removed the request-ciAdd this label to start a Jenkins CI on a PR. labelMar 6, 2024
@nodejs-github-bot
Copy link
Collaborator

@joyeecheung
Copy link
MemberAuthor

joyeecheung commentedMar 6, 2024
edited
Loading

I think the hooks do affect require, since#47999. I don’t think wiring them up to this needs to be a blocker for landing this PR, but if it’s not difficult perhaps we could either warn or error if hooks are registered when a require of an ES module occurs.

They only affect therequire() in imported CJS modules, not the required ones. I think it's not a good idea to let the loader hooks affectrequire() the way it currently works - by spawning a separate thread to make it synchronous, it leads to similar concerns raised previously about supporting TLA in the fallback, then we are back to square one (and, unlikeimport syntax which is static and handled before module evaluation,require() is a regular function that can be called anywhere, so making it block on a new thread that can run any JS makes things even more complicated than TLA). Someone who thought this separate-thread behavior applies everywhere already raised this to me, I think we are lucky at least that the CJS require is unaffected and not beyond saving. For this PR, I think we can just ignore hooks when the fallback is enabled, and warn about it. (On a side note, I noticed that therequire() added by#47999 is cutting corners e.g. not respecting policy...).

What does this mean? Doing the extension searching for .cjs and/or .mjs in the filename?

It means I don't know what happens when this happens, and there are not yet any test for it.

@benjamingr
Copy link
Member

Big +1 on the idea and I think bun shows this is feasible and users like it.

MoLow, robertsLando, ban17, aashutoshrathi, kspeers-r7, yvele, sauzeyu, marcusglowe, and ovflowd reacted with thumbs up emoji

@marco-ippolitomarco-ippolito added backport-open-v20.xIndicate that the PR has an open backport and removed backport-requested-v20.xPRs awaiting manual backport to the v20.x-staging branch. labelsJun 19, 2024
sophonieb pushed a commit to sophonieb/node that referenced this pull requestJun 20, 2024
Notable changes:benchmark:  * add AbortSignal.abort benchmarks (Raz Luvaton)nodejs#52408buffer:  * improve `base64` and `base64url` performance (Yagiz Nizipli)nodejs#52428crypto:  * deprecate implicitly shortened GCM tags (Tobias Nießen)nodejs#52345deps:  * (SEMVER-MINOR) update simdutf to 5.0.0 (Daniel Lemire)nodejs#52138  * (SEMVER-MINOR) update undici to 6.3.0 (Node.js GitHub Bot)nodejs#51462  * (SEMVER-MINOR) update undici to 6.2.1 (Node.js GitHub Bot)nodejs#51278dns:  * (SEMVER-MINOR) add order option and support ipv6first (Paolo Insogna)nodejs#52492doc:  * update release gpg keyserver (marco-ippolito)nodejs#52257  * add release key for marco-ippolito (marco-ippolito)nodejs#52257  * add UlisesGascon as a collaborator (Ulises Gascón)nodejs#51991  * (SEMVER-MINOR) deprecate fs.Stats public constructor (Marco Ippolito)nodejs#51879events,doc:  * mark CustomEvent as stable (Daeyeon Jeong)nodejs#52618fs:  * add stacktrace to fs/promises (翠 / green)nodejs#49849lib, url:  * (SEMVER-MINOR) add a `windows` option to path parsing (Aviv Keller)nodejs#52509net:  * (SEMVER-MINOR) add CLI option for autoSelectFamilyAttemptTimeout (Paolo Insogna)nodejs#52474report:  * (SEMVER-MINOR) add `--report-exclude-network` option (Ethan Arrowood)nodejs#51645src:  * (SEMVER-MINOR) add `string_view` overload to snapshot FromBlob (Anna Henningsen)nodejs#52595  * (SEMVER-MINOR) add C++ ProcessEmitWarningSync() (Joyee Cheung)nodejs#51977  * (SEMVER-MINOR) add uv_get_available_memory to report and process (theanarkh)nodejs#52023  * (SEMVER-MINOR) preload function for Environment (Cheng Zhao)nodejs#51539stream:  * (SEMVER-MINOR) support typed arrays (IlyasShabi)nodejs#51866test_runner:  * (SEMVER-MINOR) add suite() (Colin Ihrig)nodejs#52127  * (SEMVER-MINOR) add `test:complete` event to reflect execution order (Moshe Atlow)nodejs#51909util:  * (SEMVER-MINOR) support array of formats in util.styleText (Marco Ippolito)nodejs#52040v8:  * (SEMVER-MINOR) implement v8.queryObjects() for memory leak regression testing (Joyee Cheung)nodejs#51927watch:  * mark as stable (Moshe Atlow)nodejs#52074PR-URL:nodejs#52793
bmeck pushed a commit to bmeck/node that referenced this pull requestJun 22, 2024
Notable changes:benchmark:  * add AbortSignal.abort benchmarks (Raz Luvaton)nodejs#52408buffer:  * improve `base64` and `base64url` performance (Yagiz Nizipli)nodejs#52428crypto:  * deprecate implicitly shortened GCM tags (Tobias Nießen)nodejs#52345deps:  * (SEMVER-MINOR) update simdutf to 5.0.0 (Daniel Lemire)nodejs#52138  * (SEMVER-MINOR) update undici to 6.3.0 (Node.js GitHub Bot)nodejs#51462  * (SEMVER-MINOR) update undici to 6.2.1 (Node.js GitHub Bot)nodejs#51278dns:  * (SEMVER-MINOR) add order option and support ipv6first (Paolo Insogna)nodejs#52492doc:  * update release gpg keyserver (marco-ippolito)nodejs#52257  * add release key for marco-ippolito (marco-ippolito)nodejs#52257  * add UlisesGascon as a collaborator (Ulises Gascón)nodejs#51991  * (SEMVER-MINOR) deprecate fs.Stats public constructor (Marco Ippolito)nodejs#51879events,doc:  * mark CustomEvent as stable (Daeyeon Jeong)nodejs#52618fs:  * add stacktrace to fs/promises (翠 / green)nodejs#49849lib, url:  * (SEMVER-MINOR) add a `windows` option to path parsing (Aviv Keller)nodejs#52509net:  * (SEMVER-MINOR) add CLI option for autoSelectFamilyAttemptTimeout (Paolo Insogna)nodejs#52474report:  * (SEMVER-MINOR) add `--report-exclude-network` option (Ethan Arrowood)nodejs#51645src:  * (SEMVER-MINOR) add `string_view` overload to snapshot FromBlob (Anna Henningsen)nodejs#52595  * (SEMVER-MINOR) add C++ ProcessEmitWarningSync() (Joyee Cheung)nodejs#51977  * (SEMVER-MINOR) add uv_get_available_memory to report and process (theanarkh)nodejs#52023  * (SEMVER-MINOR) preload function for Environment (Cheng Zhao)nodejs#51539stream:  * (SEMVER-MINOR) support typed arrays (IlyasShabi)nodejs#51866test_runner:  * (SEMVER-MINOR) add suite() (Colin Ihrig)nodejs#52127  * (SEMVER-MINOR) add `test:complete` event to reflect execution order (Moshe Atlow)nodejs#51909util:  * (SEMVER-MINOR) support array of formats in util.styleText (Marco Ippolito)nodejs#52040v8:  * (SEMVER-MINOR) implement v8.queryObjects() for memory leak regression testing (Joyee Cheung)nodejs#51927watch:  * mark as stable (Moshe Atlow)nodejs#52074PR-URL:nodejs#52793
@mikegwhit
Copy link

i just want to add my thanks for this PR, looking forward or greatly hoping for this to mature past an experimental flag!!! i'm not on either team (ESM or CJS) but i am on the team of not (for political or ideological reasons) breaking backwards compatibility, so this is great!

joyeecheung added a commit to joyeecheung/node that referenced this pull requestJul 30, 2024
This patch adds `require()` support for synchronous ESM graphs underthe flag `--experimental-require-module`This is based on the the following design aspect of ESM:- The resolution can be synchronous (up to the host)- The evaluation of a synchronous graph (without top-level await) is  also synchronous, and, by the time the module graph is instantiated  (before evaluation starts), this is is already known.If `--experimental-require-module` is enabled, and the ECMAScriptmodule being loaded by `require()` meets the following requirements:- Explicitly marked as an ES module with a `"type": "module"` field in  the closest package.json or a `.mjs` extension.- Fully synchronous (contains no top-level `await`).`require()` will load the requested module as an ES Module, and returnthe module name space object. In this case it is similar to dynamic`import()` but is run synchronously and returns the name space objectdirectly.```mjs// point.mjsexport function distance(a, b) {  return (b.x - a.x) ** 2 + (b.y - a.y) ** 2;}class Point {  constructor(x, y) { this.x = x; this.y = y; }}export default Point;``````cjsconst required = require('./point.mjs');// [Module: null prototype] {//   default: [class Point],//   distance: [Function: distance]// }console.log(required);(async () => {  const imported = await import('./point.mjs');  console.log(imported === required);  // true})();```If the module being `require()`'d contains top-level `await`, or themodule graph it `import`s contains top-level `await`,[`ERR_REQUIRE_ASYNC_MODULE`][] will be thrown. In this case, usersshould load the asynchronous module using `import()`.If `--experimental-print-required-tla` is enabled, instead of throwing`ERR_REQUIRE_ASYNC_MODULE` before evaluation, Node.js will evaluate themodule, try to locate the top-level awaits, and print their location tohelp users fix them.PR-URL:nodejs#51977Reviewed-By: Chengzhong Wu <legendecas@gmail.com>Reviewed-By: Matteo Collina <matteo.collina@gmail.com>Reviewed-By: Guy Bedford <guybedford@gmail.com>Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
marco-ippolito pushed a commit that referenced this pull requestAug 8, 2024
This patch adds `require()` support for synchronous ESM graphs underthe flag `--experimental-require-module`This is based on the the following design aspect of ESM:- The resolution can be synchronous (up to the host)- The evaluation of a synchronous graph (without top-level await) is  also synchronous, and, by the time the module graph is instantiated  (before evaluation starts), this is is already known.If `--experimental-require-module` is enabled, and the ECMAScriptmodule being loaded by `require()` meets the following requirements:- Explicitly marked as an ES module with a `"type": "module"` field in  the closest package.json or a `.mjs` extension.- Fully synchronous (contains no top-level `await`).`require()` will load the requested module as an ES Module, and returnthe module name space object. In this case it is similar to dynamic`import()` but is run synchronously and returns the name space objectdirectly.```mjs// point.mjsexport function distance(a, b) {  return (b.x - a.x) ** 2 + (b.y - a.y) ** 2;}class Point {  constructor(x, y) { this.x = x; this.y = y; }}export default Point;``````cjsconst required = require('./point.mjs');// [Module: null prototype] {//   default: [class Point],//   distance: [Function: distance]// }console.log(required);(async () => {  const imported = await import('./point.mjs');  console.log(imported === required);  // true})();```If the module being `require()`'d contains top-level `await`, or themodule graph it `import`s contains top-level `await`,[`ERR_REQUIRE_ASYNC_MODULE`][] will be thrown. In this case, usersshould load the asynchronous module using `import()`.If `--experimental-print-required-tla` is enabled, instead of throwing`ERR_REQUIRE_ASYNC_MODULE` before evaluation, Node.js will evaluate themodule, try to locate the top-level awaits, and print their location tohelp users fix them.PR-URL:#51977Backport-PR-URL:#53500Reviewed-By: Chengzhong Wu <legendecas@gmail.com>Reviewed-By: Matteo Collina <matteo.collina@gmail.com>Reviewed-By: Guy Bedford <guybedford@gmail.com>Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
marco-ippolito added a commit that referenced this pull requestAug 19, 2024
Notable changes:benchmark:  * add require-esm benchmark (Joyee Cheung)#52166http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL: TODO
@marco-ippolitomarco-ippolito mentioned this pull requestAug 19, 2024
marco-ippolito added a commit that referenced this pull requestAug 19, 2024
Notable changes:benchmark:  * add require-esm benchmark (Joyee Cheung)#52166http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL:#54447
marco-ippolito added a commit that referenced this pull requestAug 19, 2024
Notable changes:http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL:#54447
marco-ippolito added a commit that referenced this pull requestAug 19, 2024
Notable changes:http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL:#54447
marco-ippolito added a commit that referenced this pull requestAug 19, 2024
Notable changes:http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL:#54447
marco-ippolito added a commit that referenced this pull requestAug 21, 2024
Notable changes:http:  * (SEMVER-MINOR) add diagnostics channel `http.client.request.error` (Kohei Ueno)#54054meta:  * add jake to collaborators (jakecastelli)#54004module:  * (SEMVER-MINOR) support require()ing synchronous ESM graphs (Joyee Cheung)#51977path:  * (SEMVER-MINOR) add `matchesGlob` method (Aviv Keller)#52881stream:  * (SEMVER-MINOR) expose DuplexPair API (Austin Wright)#34111  * (SEMVER-MINOR) implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens)#50888PR-URL:#54447
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull requestAug 22, 2024
This MR contains the following updates:| Package | Update | Change ||---|---|---|| [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `20.16.0` -> `20.17.0` |MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).**Proposed changes to behavior should be submitted there as MRs.**---### Release Notes<details><summary>nodejs/node (node)</summary>### [`v20.17.0`](https://github.com/nodejs/node/releases/tag/v20.17.0): 2024-08-21, Version 20.17.0 &#x27;Iron&#x27; (LTS), @&#8203;marco-ippolito[Compare Source](nodejs/node@v20.16.0...v20.17.0)##### module: support require()ing synchronous ESM graphsThis release adds `require()` support for synchronous ESM graphs underthe flag `--experimental-require-module`.If `--experimental-require-module` is enabled, and the ECMAScriptmodule being loaded by `require()` meets the following requirements:-   Explicitly marked as an ES module with a "type": "module" field in the closest package.json or a .mjs extension.-   Fully synchronous (contains no top-level await).`require()` will load the requested module as an ES Module, and returnthe module name space object. In this case it is similar to dynamic`import()` but is run synchronously and returns the name space objectdirectly.Contributed by Joyee Cheung in [#&#8203;51977](nodejs/node#51977)##### path: add `matchesGlob` methodGlob patterns can now be tested against individual paths via the `path.matchesGlob(path, pattern)` method.Contributed by Aviv Keller in [#&#8203;52881](nodejs/node#52881)##### stream: expose DuplexPair APIThe function `duplexPair` returns an array with two items,each being a `Duplex` stream connected to the other side:```jsconst [ sideA, sideB ] = duplexPair();```Whatever is written to one stream is made readable on the other. It providesbehavior analogous to a network connection, where the data written by the clientbecomes readable by the server, and vice-versa.Contributed by Austin Wright in [#&#8203;34111](nodejs/node#34111)##### Other Notable Changes-   \[[`8e64c02b19`](nodejs/node@8e64c02b19)] - **(SEMVER-MINOR)** **http**: add diagnostics channel `http.client.request.error` (Kohei Ueno) [#&#8203;54054](nodejs/node#54054)-   \[[`ae30674991`](nodejs/node@ae30674991)] - **meta**: add jake to collaborators (jakecastelli) [#&#8203;54004](nodejs/node#54004)-   \[[`4a3ecbfc9b`](nodejs/node@4a3ecbfc9b)] - **(SEMVER-MINOR)** **stream**: implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens) [#&#8203;50888](nodejs/node#50888)##### Commits-   \[[`b3a2726cbc`](nodejs/node@b3a2726cbc)] - **assert**: use isError instead of instanceof in innerOk (Pietro Marchini) [#&#8203;53980](nodejs/node#53980)-   \[[`c7e4c3daf4`](nodejs/node@c7e4c3daf4)] - **benchmark**: add cpSync benchmark (Yagiz Nizipli) [#&#8203;53612](nodejs/node#53612)-   \[[`a52de8c5ff`](nodejs/node@a52de8c5ff)] - **bootstrap**: print `--help` message using `console.log` (Jacob Hummer) [#&#8203;51463](nodejs/node#51463)-   \[[`61b90e7c5e`](nodejs/node@61b90e7c5e)] - **build**: update gcovr to 7.2 and codecov config (Benjamin E. Coe) [#&#8203;54019](nodejs/node#54019)-   \[[`a9c04eaa27`](nodejs/node@a9c04eaa27)] - **build**: ensure v8\_pointer_compression_sandbox is enabled on 64bit (Shelley Vohr) [#&#8203;53884](nodejs/node#53884)-   \[[`342a663d7a`](nodejs/node@342a663d7a)] - **build**: trigger coverage ci when updating codecov (Yagiz Nizipli) [#&#8203;53929](nodejs/node#53929)-   \[[`5727b4d129`](nodejs/node@5727b4d129)] - **build**: update codecov coverage build count (Yagiz Nizipli) [#&#8203;53929](nodejs/node#53929)-   \[[`977af25870`](nodejs/node@977af25870)] - **build**: disable test-asan workflow (Michaël Zasso) [#&#8203;53844](nodejs/node#53844)-   \[[`04798fb104`](nodejs/node@04798fb104)] - **build**: fix build warning of c-ares under GN build (Cheng) [#&#8203;53750](nodejs/node#53750)-   \[[`5ec5e78574`](nodejs/node@5ec5e78574)] - **build**: fix mac build error of c-ares under GN (Cheng) [#&#8203;53687](nodejs/node#53687)-   \[[`3d8721f0a4`](nodejs/node@3d8721f0a4)] - **build**: add version-specific library path for AIX (Richard Lau) [#&#8203;53585](nodejs/node#53585)-   \[[`ffb0bd344d`](nodejs/node@ffb0bd344d)] - **build, tools**: drop leading `/` from `r2dir` (Richard Lau) [#&#8203;53951](nodejs/node#53951)-   \[[`a2d74f4c31`](nodejs/node@a2d74f4c31)] - **build,tools**: simplify upload of shasum signatures (Michaël Zasso) [#&#8203;53892](nodejs/node#53892)-   \[[`993bb3b6e7`](nodejs/node@993bb3b6e7)] - **child_process**: fix incomplete prototype pollution hardening (Liran Tal) [#&#8203;53781](nodejs/node#53781)-   \[[`137a2e5766`](nodejs/node@137a2e5766)] - **cli**: document `--inspect` port `0` behavior (Aviv Keller) [#&#8203;53782](nodejs/node#53782)-   \[[`820e6e1737`](nodejs/node@820e6e1737)] - **cli**: update `node.1` to reflect Atom's sunset (Aviv Keller) [#&#8203;53734](nodejs/node#53734)-   \[[`fa0e8d7b3b`](nodejs/node@fa0e8d7b3b)] - **crypto**: avoid std::function (Tobias Nießen) [#&#8203;53683](nodejs/node#53683)-   \[[`460240c368`](nodejs/node@460240c368)] - **crypto**: make deriveBits length parameter optional and nullable (Filip Skokan) [#&#8203;53601](nodejs/node#53601)-   \[[`ceb1d5e00a`](nodejs/node@ceb1d5e00a)] - **crypto**: avoid taking ownership of OpenSSL objects (Tobias Nießen) [#&#8203;53460](nodejs/node#53460)-   \[[`44268c27eb`](nodejs/node@44268c27eb)] - **deps**: update corepack to 0.29.3 (Node.js GitHub Bot) [#&#8203;54072](nodejs/node#54072)-   \[[`496975ece0`](nodejs/node@496975ece0)] - **deps**: update c-ares to v1.32.3 (Node.js GitHub Bot) [#&#8203;54020](nodejs/node#54020)-   \[[`5eea419349`](nodejs/node@5eea419349)] - **deps**: update c-ares to v1.32.2 (Node.js GitHub Bot) [#&#8203;53865](nodejs/node#53865)-   \[[`8c8e3688c5`](nodejs/node@8c8e3688c5)] - **deps**: update googletest to [`4b21f1a`](nodejs/node@4b21f1a) (Node.js GitHub Bot) [#&#8203;53842](nodejs/node#53842)-   \[[`78f6b34c77`](nodejs/node@78f6b34c77)] - **deps**: update minimatch to 10.0.1 (Node.js GitHub Bot) [#&#8203;53841](nodejs/node#53841)-   \[[`398f7acca3`](nodejs/node@398f7acca3)] - **deps**: update corepack to 0.29.2 (Node.js GitHub Bot) [#&#8203;53838](nodejs/node#53838)-   \[[`fa8f99d90b`](nodejs/node@fa8f99d90b)] - **deps**: update simdutf to 5.3.0 (Node.js GitHub Bot) [#&#8203;53837](nodejs/node#53837)-   \[[`a19b28336b`](nodejs/node@a19b28336b)] - **deps**: update ada to 2.9.0 (Node.js GitHub Bot) [#&#8203;53748](nodejs/node#53748)-   \[[`2f66c7e707`](nodejs/node@2f66c7e707)] - **deps**: upgrade npm to 10.8.2 (npm team) [#&#8203;53799](nodejs/node#53799)-   \[[`2a2620e7c0`](nodejs/node@2a2620e7c0)] - **deps**: update googletest to [`34ad51b`](nodejs/node@34ad51b) (Node.js GitHub Bot) [#&#8203;53157](nodejs/node#53157)-   \[[`c01ce60ce7`](nodejs/node@c01ce60ce7)] - **deps**: update googletest to [`305e5a2`](nodejs/node@305e5a2) (Node.js GitHub Bot) [#&#8203;53157](nodejs/node#53157)-   \[[`832328ea01`](nodejs/node@832328ea01)] - **deps**: update c-ares to v1.32.1 (Node.js GitHub Bot) [#&#8203;53753](nodejs/node#53753)-   \[[`878e9a4ae7`](nodejs/node@878e9a4ae7)] - **deps**: update minimatch to 9.0.5 (Node.js GitHub Bot) [#&#8203;53646](nodejs/node#53646)-   \[[`4647e6b5c5`](nodejs/node@4647e6b5c5)] - **deps**: update c-ares to v1.32.0 (Node.js GitHub Bot) [#&#8203;53722](nodejs/node#53722)-   \[[`30310bf887`](nodejs/node@30310bf887)] - **doc**: move numCPUs require to top of file in cluster CJS example (Alfredo González) [#&#8203;53932](nodejs/node#53932)-   \[[`36170eddca`](nodejs/node@36170eddca)] - **doc**: update security-release process to automated one (Rafael Gonzaga) [#&#8203;53877](nodejs/node#53877)-   \[[`55f5e76ba7`](nodejs/node@55f5e76ba7)] - **doc**: fix typo in technical-priorities.md (YoonSoo_Shin) [#&#8203;54094](nodejs/node#54094)-   \[[`1c0ccc0ca8`](nodejs/node@1c0ccc0ca8)] - **doc**: fix typo in diagnostic tooling support tiers document (Taejin Kim) [#&#8203;54058](nodejs/node#54058)-   \[[`6a5120ff0f`](nodejs/node@6a5120ff0f)] - **doc**: move GeoffreyBooth to TSC regular member (Geoffrey Booth) [#&#8203;54047](nodejs/node#54047)-   \[[`ead05aad2a`](nodejs/node@ead05aad2a)] - **doc**: fix typo in recognizing-contributors (Marco Ippolito) [#&#8203;53990](nodejs/node#53990)-   \[[`25e59aebac`](nodejs/node@25e59aebac)] - **doc**: update boxstarter README (Aviv Keller) [#&#8203;53785](nodejs/node#53785)-   \[[`a3183fb927`](nodejs/node@a3183fb927)] - **doc**: add info about prefix-only modules to `module.builtinModules` (Grigory) [#&#8203;53954](nodejs/node#53954)-   \[[`89599e025f`](nodejs/node@89599e025f)] - **doc**: remove `scroll-behavior: smooth;` (Cloyd Lau) [#&#8203;53942](nodejs/node#53942)-   \[[`139c62e40c`](nodejs/node@139c62e40c)] - **doc**: move --test-coverage-{ex,in}clude to proper location (Colin Ihrig) [#&#8203;53926](nodejs/node#53926)-   \[[`233aba90ea`](nodejs/node@233aba90ea)] - **doc**: update `api_assets` README for new files (Aviv Keller) [#&#8203;53676](nodejs/node#53676)-   \[[`44a1cbe98a`](nodejs/node@44a1cbe98a)] - **doc**: add MattiasBuelens to collaborators (Mattias Buelens) [#&#8203;53895](nodejs/node#53895)-   \[[`f5280ddbc5`](nodejs/node@f5280ddbc5)] - **doc**: fix casing of GitHub handle for two collaborators (Antoine du Hamel) [#&#8203;53857](nodejs/node#53857)-   \[[`9224e3eef1`](nodejs/node@9224e3eef1)] - **doc**: update release-post nodejs.org script (Rafael Gonzaga) [#&#8203;53762](nodejs/node#53762)-   \[[`f87eed8de4`](nodejs/node@f87eed8de4)] - **doc**: move MylesBorins to emeritus (Myles Borins) [#&#8203;53760](nodejs/node#53760)-   \[[`32ac80ae8d`](nodejs/node@32ac80ae8d)] - **doc**: add Rafael to the last security release (Rafael Gonzaga) [#&#8203;53769](nodejs/node#53769)-   \[[`e71aa7e98b`](nodejs/node@e71aa7e98b)] - **doc**: use mock.callCount() in examples (Sébastien Règne) [#&#8203;53754](nodejs/node#53754)-   \[[`f64db24312`](nodejs/node@f64db24312)] - **doc**: clarify authenticity of plaintexts in update (Tobias Nießen) [#&#8203;53784](nodejs/node#53784)-   \[[`51e736ac83`](nodejs/node@51e736ac83)] - **doc**: add option to have support me link (Michael Dawson) [#&#8203;53312](nodejs/node#53312)-   \[[`9804731d0f`](nodejs/node@9804731d0f)] - **doc**: update `scroll-padding-top` to 4rem (Cloyd Lau) [#&#8203;53662](nodejs/node#53662)-   \[[`229f7f8b8a`](nodejs/node@229f7f8b8a)] - **doc**: mention v8.setFlagsFromString to pm (Rafael Gonzaga) [#&#8203;53731](nodejs/node#53731)-   \[[`98d59aa929`](nodejs/node@98d59aa929)] - **doc**: remove the last \<pre> tag (Claudio W) [#&#8203;53741](nodejs/node#53741)-   \[[`60ee41df08`](nodejs/node@60ee41df08)] - **doc**: exclude voting and regular TSC from spotlight (Michael Dawson) [#&#8203;53694](nodejs/node#53694)-   \[[`c3536cfa99`](nodejs/node@c3536cfa99)] - **doc**: fix releases guide for recent Git versions (Michaël Zasso) [#&#8203;53709](nodejs/node#53709)-   \[[`3b632e1871`](nodejs/node@3b632e1871)] - **doc**: require `node:process` in assert doc examples (Alfredo González) [#&#8203;53702](nodejs/node#53702)-   \[[`754090c110`](nodejs/node@754090c110)] - **doc**: add additional explanation to the wildcard section in permissions (jakecastelli) [#&#8203;53664](nodejs/node#53664)-   \[[`4346de7267`](nodejs/node@4346de7267)] - **doc**: mark NODE_MODULE_VERSION for Node.js 22.0.0 (Michaël Zasso) [#&#8203;53650](nodejs/node#53650)-   \[[`758178bd72`](nodejs/node@758178bd72)] - **doc**: include node.module_timer on available categories (Vinicius Lourenço) [#&#8203;53638](nodejs/node#53638)-   \[[`e0d213df2b`](nodejs/node@e0d213df2b)] - **doc**: fix module customization hook examples (Elliot Goodrich) [#&#8203;53637](nodejs/node#53637)-   \[[`43ac5a2441`](nodejs/node@43ac5a2441)] - **doc**: fix doc for correct usage with plan & TestContext (Emil Tayeb) [#&#8203;53615](nodejs/node#53615)-   \[[`5076f0d292`](nodejs/node@5076f0d292)] - **doc**: remove some news issues that are no longer (Michael Dawson) [#&#8203;53608](nodejs/node#53608)-   \[[`c997dbef34`](nodejs/node@c997dbef34)] - **doc**: add issue for news from ambassadors (Michael Dawson) [#&#8203;53607](nodejs/node#53607)-   \[[`16d55f1d25`](nodejs/node@16d55f1d25)] - **doc**: add esm example for os (Leonardo Peixoto) [#&#8203;53604](nodejs/node#53604)-   \[[`156fc536f2`](nodejs/node@156fc536f2)] - **doc**: clarify usage of coverage reporters (Eliphaz Bouye) [#&#8203;53523](nodejs/node#53523)-   \[[`f8f247bc99`](nodejs/node@f8f247bc99)] - **doc**: document addition testing options (Aviv Keller) [#&#8203;53569](nodejs/node#53569)-   \[[`73860aca56`](nodejs/node@73860aca56)] - **doc**: clarify that fs.exists() may return false for existing symlink (Tobias Nießen) [#&#8203;53566](nodejs/node#53566)-   \[[`59c5c5c73e`](nodejs/node@59c5c5c73e)] - **doc**: note http.closeAllConnections excludes upgraded sockets (Rob Hogan) [#&#8203;53560](nodejs/node#53560)-   \[[`1cd3c8eb27`](nodejs/node@1cd3c8eb27)] - **doc**: fix typo (EhsanKhaki) [#&#8203;53397](nodejs/node#53397)-   \[[`3c5e593e2a`](nodejs/node@3c5e593e2a)] - **doc, meta**: add PTAL to glossary (Aviv Keller) [#&#8203;53770](nodejs/node#53770)-   \[[`f336e61257`](nodejs/node@f336e61257)] - **doc, test**: tracing channel hasSubscribers getter (Thomas Hunter II) [#&#8203;52908](nodejs/node#52908)-   \[[`4187b81439`](nodejs/node@4187b81439)] - **doc, typings**: events.once accepts symbol event type (René) [#&#8203;53542](nodejs/node#53542)-   \[[`3cdf94d403`](nodejs/node@3cdf94d403)] - **doc,tty**: add documentation for ReadStream and WriteStream (jakecastelli) [#&#8203;53567](nodejs/node#53567)-   \[[`5d03f6fab7`](nodejs/node@5d03f6fab7)] - **esm**: move hooks test with others (Geoffrey Booth) [#&#8203;53558](nodejs/node#53558)-   \[[`490f15a99b`](nodejs/node@490f15a99b)] - **fs**: ensure consistency for mkdtemp in both fs and fs/promises (YieldRay) [#&#8203;53776](nodejs/node#53776)-   \[[`8e64c02b19`](nodejs/node@8e64c02b19)] - **(SEMVER-MINOR)** **http**: add diagnostics channel `http.client.request.error` (Kohei Ueno) [#&#8203;54054](nodejs/node#54054)-   \[[`0d70c79ebf`](nodejs/node@0d70c79ebf)] - **lib**: optimize copyError with ObjectAssign in primordials (HEESEUNG) [#&#8203;53999](nodejs/node#53999)-   \[[`a4ff2ac0f0`](nodejs/node@a4ff2ac0f0)] - **lib**: improve cluster/primary code (Ehsan Khakifirooz) [#&#8203;53756](nodejs/node#53756)-   \[[`c667fbd988`](nodejs/node@c667fbd988)] - **lib**: improve error message when index not found on cjs (Vinicius Lourenço) [#&#8203;53859](nodejs/node#53859)-   \[[`51ba566171`](nodejs/node@51ba566171)] - **lib**: decorate async stack trace in source maps (Chengzhong Wu) [#&#8203;53860](nodejs/node#53860)-   \[[`d012dd3d29`](nodejs/node@d012dd3d29)] - **lib**: remove path.resolve from permissions.js (Rafael Gonzaga) [#&#8203;53729](nodejs/node#53729)-   \[[`1e9ff50446`](nodejs/node@1e9ff50446)] - **lib**: add toJSON to PerformanceMeasure (theanarkh) [#&#8203;53603](nodejs/node#53603)-   \[[`3a2d8bffa5`](nodejs/node@3a2d8bffa5)] - **lib**: convert WeakMaps in cjs loader with private symbol properties (Chengzhong Wu) [#&#8203;52095](nodejs/node#52095)-   \[[`e326342bd7`](nodejs/node@e326342bd7)] - **meta**: add `sqlite` to js subsystems (Alex Yang) [#&#8203;53911](nodejs/node#53911)-   \[[`bfabfb4d17`](nodejs/node@bfabfb4d17)] - **meta**: move tsc member to emeritus (Michael Dawson) [#&#8203;54029](nodejs/node#54029)-   \[[`ae30674991`](nodejs/node@ae30674991)] - **meta**: add jake to collaborators (jakecastelli) [#&#8203;54004](nodejs/node#54004)-   \[[`6ca0cfc602`](nodejs/node@6ca0cfc602)] - **meta**: remove license for hljs (Aviv Keller) [#&#8203;53970](nodejs/node#53970)-   \[[`e6ba121e83`](nodejs/node@e6ba121e83)] - **meta**: make more bug-report information required (Aviv Keller) [#&#8203;53718](nodejs/node#53718)-   \[[`1864cddd0c`](nodejs/node@1864cddd0c)] - **meta**: store actions secrets in environment (Aviv Keller) [#&#8203;53930](nodejs/node#53930)-   \[[`c0b24e5071`](nodejs/node@c0b24e5071)] - **meta**: move anonrig to tsc voting members (Yagiz Nizipli) [#&#8203;53888](nodejs/node#53888)-   \[[`e60b089f7f`](nodejs/node@e60b089f7f)] - **meta**: remove redudant logging from dep updaters (Aviv Keller) [#&#8203;53783](nodejs/node#53783)-   \[[`bff6995ec3`](nodejs/node@bff6995ec3)] - **meta**: change email address of anonrig (Yagiz Nizipli) [#&#8203;53829](nodejs/node#53829)-   \[[`c2bb46020a`](nodejs/node@c2bb46020a)] - **meta**: add `node_sqlite.c` to MR label config (Aviv Keller) [#&#8203;53797](nodejs/node#53797)-   \[[`b8d2bbc6d6`](nodejs/node@b8d2bbc6d6)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#&#8203;53758](nodejs/node#53758)-   \[[`0ad4b7c1f7`](nodejs/node@0ad4b7c1f7)] - **meta**: use HTML entities in commit-queue comment (Aviv Keller) [#&#8203;53744](nodejs/node#53744)-   \[[`aa0c5c25d1`](nodejs/node@aa0c5c25d1)] - **meta**: move regular TSC member to emeritus (Michael Dawson) [#&#8203;53693](nodejs/node#53693)-   \[[`a5f5b4550b`](nodejs/node@a5f5b4550b)] - **meta**: bump codecov/codecov-action from 4.4.1 to 4.5.0 (dependabot\[bot]) [#&#8203;53675](nodejs/node#53675)-   \[[`f84e215c90`](nodejs/node@f84e215c90)] - **meta**: bump mozilla-actions/sccache-action from 0.0.4 to 0.0.5 (dependabot\[bot]) [#&#8203;53674](nodejs/node#53674)-   \[[`d5a9c249d3`](nodejs/node@d5a9c249d3)] - **meta**: bump github/codeql-action from 3.25.7 to 3.25.11 (dependabot\[bot]) [#&#8203;53673](nodejs/node#53673)-   \[[`39d6c780c8`](nodejs/node@39d6c780c8)] - **meta**: bump actions/checkout from 4.1.6 to 4.1.7 (dependabot\[bot]) [#&#8203;53672](nodejs/node#53672)-   \[[`bb6fe38a34`](nodejs/node@bb6fe38a34)] - **meta**: bump peter-evans/create-pull-request from 6.0.5 to 6.1.0 (dependabot\[bot]) [#&#8203;53671](nodejs/node#53671)-   \[[`5dcdfb5e6b`](nodejs/node@5dcdfb5e6b)] - **meta**: bump step-security/harden-runner from 2.8.0 to 2.8.1 (dependabot\[bot]) [#&#8203;53670](nodejs/node#53670)-   \[[`44d901a1c9`](nodejs/node@44d901a1c9)] - **meta**: move member from TSC regular to emeriti (Michael Dawson) [#&#8203;53599](nodejs/node#53599)-   \[[`0c91186afa`](nodejs/node@0c91186afa)] - **meta**: warnings bypass deprecation cycle (Benjamin Gruenbaum) [#&#8203;53513](nodejs/node#53513)-   \[[`bcd08bef60`](nodejs/node@bcd08bef60)] - **meta**: prevent constant references to issues in versioning (Aviv Keller) [#&#8203;53564](nodejs/node#53564)-   \[[`7625dc4927`](nodejs/node@7625dc4927)] - **module**: fix submodules loaded by require() and import() (Joyee Cheung) [#&#8203;52487](nodejs/node#52487)-   \[[`6c4f4772e3`](nodejs/node@6c4f4772e3)] - **module**: tidy code and comments (Jacob Smith) [#&#8203;52437](nodejs/node#52437)-   \[[`51b88faeac`](nodejs/node@51b88faeac)] - **module**: disallow CJS <-> ESM edges in a cycle from require(esm) (Joyee Cheung) [#&#8203;52264](nodejs/node#52264)-   \[[`4dae68ced4`](nodejs/node@4dae68ced4)] - **module**: centralize SourceTextModule compilation for builtin loader (Joyee Cheung) [#&#8203;52291](nodejs/node#52291)-   \[[`cad46afc07`](nodejs/node@cad46afc07)] - **(SEMVER-MINOR)** **module**: support require()ing synchronous ESM graphs (Joyee Cheung) [#&#8203;51977](nodejs/node#51977)-   \[[`ac58c829a1`](nodejs/node@ac58c829a1)] - **node-api**: add property keys benchmark (Chengzhong Wu) [#&#8203;54012](nodejs/node#54012)-   \[[`e6a4104bd1`](nodejs/node@e6a4104bd1)] - **node-api**: rename nogc to basic (Gabriel Schulhof) [#&#8203;53830](nodejs/node#53830)-   \[[`57b8b8e18e`](nodejs/node@57b8b8e18e)] - **(SEMVER-MINOR)** **path**: add `matchesGlob` method (Aviv Keller) [#&#8203;52881](nodejs/node#52881)-   \[[`bf6aa53299`](nodejs/node@bf6aa53299)] - **process**: unify experimental warning messages (Aviv Keller) [#&#8203;53704](nodejs/node#53704)-   \[[`2a3ae16e62`](nodejs/node@2a3ae16e62)] - **src**: expose LookupAndCompile with parameters (Shelley Vohr) [#&#8203;53886](nodejs/node#53886)-   \[[`0109f9c961`](nodejs/node@0109f9c961)] - **src**: simplify AESCipherTraits::AdditionalConfig (Tobias Nießen) [#&#8203;53890](nodejs/node#53890)-   \[[`6bafe8a457`](nodejs/node@6bafe8a457)] - **src**: fix -Wshadow warning (Shelley Vohr) [#&#8203;53885](nodejs/node#53885)-   \[[`4c36d6c47a`](nodejs/node@4c36d6c47a)] - **src**: fix slice of slice of file-backed Blob (Josh Lee) [#&#8203;53972](nodejs/node#53972)-   \[[`848c2d59fb`](nodejs/node@848c2d59fb)] - **src**: cache invariant code motion (Rafael Gonzaga) [#&#8203;53879](nodejs/node#53879)-   \[[`acaf5dd1cd`](nodejs/node@acaf5dd1cd)] - **src**: avoid strcmp in ImportJWKAsymmetricKey (Tobias Nießen) [#&#8203;53813](nodejs/node#53813)-   \[[`b71250aaf9`](nodejs/node@b71250aaf9)] - **src**: replace ToLocalChecked uses with ToLocal in node-file (James M Snell) [#&#8203;53869](nodejs/node#53869)-   \[[`aff9a5339a`](nodejs/node@aff9a5339a)] - **src**: fix env-file flag to ignore spaces before quotes (Mohit Malhotra) [#&#8203;53786](nodejs/node#53786)-   \[[`e352a4ef27`](nodejs/node@e352a4ef27)] - **src**: update outdated references to spec sections (Tobias Nießen) [#&#8203;53832](nodejs/node#53832)-   \[[`1a4da22a60`](nodejs/node@1a4da22a60)] - **src**: use Maybe\<void> in ManagedEVPPKey (Tobias Nießen) [#&#8203;53811](nodejs/node#53811)-   \[[`0c24b91bd2`](nodejs/node@0c24b91bd2)] - **src**: fix error handling in ExportJWKAsymmetricKey (Tobias Nießen) [#&#8203;53767](nodejs/node#53767)-   \[[`81cd84c716`](nodejs/node@81cd84c716)] - **src**: use Maybe\<void> in node::crypto::error (Tobias Nießen) [#&#8203;53766](nodejs/node#53766)-   \[[`8135f3616d`](nodejs/node@8135f3616d)] - **src**: fix typo in node.h (Daeyeon Jeong) [#&#8203;53759](nodejs/node#53759)-   \[[`e6d735a997`](nodejs/node@e6d735a997)] - **src**: document the Node.js context embedder data (Joyee Cheung) [#&#8203;53611](nodejs/node#53611)-   \[[`584beaa2ed`](nodejs/node@584beaa2ed)] - **src**: zero-initialize data that are copied into the snapshot (Joyee Cheung) [#&#8203;53563](nodejs/node#53563)-   \[[`ef5dabd8c6`](nodejs/node@ef5dabd8c6)] - **src**: fix Worker termination when '--inspect-brk' is passed (Daeyeon Jeong) [#&#8203;53724](nodejs/node#53724)-   \[[`62f4f6f48e`](nodejs/node@62f4f6f48e)] - **src**: remove ArrayBufferAllocator::Reallocate override (Shu-yu Guo) [#&#8203;52910](nodejs/node#52910)-   \[[`a6dd8643fa`](nodejs/node@a6dd8643fa)] - **src**: reduce unnecessary serialization of CLI options in C++ (Joyee Cheung) [#&#8203;52451](nodejs/node#52451)-   \[[`31fdb881cf`](nodejs/node@31fdb881cf)] - **src,lib**: expose getCategoryEnabledBuffer to use on node.http (Vinicius Lourenço) [#&#8203;53602](nodejs/node#53602)-   \[[`2eea8502e1`](nodejs/node@2eea8502e1)] - **src,test**: further cleanup references to osx (Daniel Bayley) [#&#8203;53820](nodejs/node#53820)-   \[[`7c21bb99a5`](nodejs/node@7c21bb99a5)] - **(SEMVER-MINOR)** **stream**: expose DuplexPair API (Austin Wright) [#&#8203;34111](nodejs/node#34111)-   \[[`56299f7309`](nodejs/node@56299f7309)] - **stream**: improve inspector ergonomics (Benjamin Gruenbaum) [#&#8203;53800](nodejs/node#53800)-   \[[`9b82b15230`](nodejs/node@9b82b15230)] - **stream**: update ongoing promise in async iterator return() method (Mattias Buelens) [#&#8203;52657](nodejs/node#52657)-   \[[`4a3ecbfc9b`](nodejs/node@4a3ecbfc9b)] - **(SEMVER-MINOR)** **stream**: implement `min` option for `ReadableStreamBYOBReader.read` (Mattias Buelens) [#&#8203;50888](nodejs/node#50888)-   \[[`bd996bf694`](nodejs/node@bd996bf694)] - **test**: do not swallow uncaughtException errors in exit code tests (Meghan Denny) [#&#8203;54039](nodejs/node#54039)-   \[[`77761af077`](nodejs/node@77761af077)] - **test**: move shared module to `test/common` (Rich Trott) [#&#8203;54042](nodejs/node#54042)-   \[[`bec88ce138`](nodejs/node@bec88ce138)] - **test**: skip sea tests with more accurate available disk space estimation (Chengzhong Wu) [#&#8203;53996](nodejs/node#53996)-   \[[`9a98ad47cd`](nodejs/node@9a98ad47cd)] - **test**: remove unnecessary console log (KAYYY) [#&#8203;53812](nodejs/node#53812)-   \[[`364d09cf0a`](nodejs/node@364d09cf0a)] - **test**: add comments and rename test for timer robustness (Rich Trott) [#&#8203;54008](nodejs/node#54008)-   \[[`5c5093dc0a`](nodejs/node@5c5093dc0a)] - **test**: add test for one arg timers to increase coverage (Carlos Espa) [#&#8203;54007](nodejs/node#54007)-   \[[`43ede1ae0b`](nodejs/node@43ede1ae0b)] - **test**: mark 'test/parallel/test-sqlite.js' as flaky (Colin Ihrig) [#&#8203;54031](nodejs/node#54031)-   \[[`0ad783cb42`](nodejs/node@0ad783cb42)] - **test**: mark test-pipe-file-to-http as flaky (jakecastelli) [#&#8203;53751](nodejs/node#53751)-   \[[`f2b4fd3544`](nodejs/node@f2b4fd3544)] - **test**: compare paths on Windows without considering case (Early Riser) [#&#8203;53993](nodejs/node#53993)-   \[[`2e69e5f4d2`](nodejs/node@2e69e5f4d2)] - **test**: skip sea tests in large debug builds (Chengzhong Wu) [#&#8203;53918](nodejs/node#53918)-   \[[`56c26fe6e5`](nodejs/node@56c26fe6e5)] - **test**: skip --title check on IBM i (Abdirahim Musse) [#&#8203;53952](nodejs/node#53952)-   \[[`6d0b8ded00`](nodejs/node@6d0b8ded00)] - **test**: reduce flakiness of `test-assert-esm-cjs-message-verify` (Antoine du Hamel) [#&#8203;53967](nodejs/node#53967)-   \[[`edb75aebd7`](nodejs/node@edb75aebd7)] - **test**: use `PYTHON` executable from env in `assertSnapshot` (Antoine du Hamel) [#&#8203;53938](nodejs/node#53938)-   \[[`be94e470a6`](nodejs/node@be94e470a6)] - **test**: deflake test-blob-file-backed (Luigi Pinca) [#&#8203;53920](nodejs/node#53920)-   \[[`c2b0dcd165`](nodejs/node@c2b0dcd165)] - **test**: un-set inspector-async-hook-setup-at-inspect-brk as flaky (Abdirahim Musse) [#&#8203;53692](nodejs/node#53692)-   \[[`6dc18981ac`](nodejs/node@6dc18981ac)] - **test**: use python3 instead of python in pummel test (Mathis Wiehl) [#&#8203;53057](nodejs/node#53057)-   \[[`662bf524e1`](nodejs/node@662bf524e1)] - **test**: do not assume cwd in snapshot tests (Antoine du Hamel) [#&#8203;53146](nodejs/node#53146)-   \[[`a07526702a`](nodejs/node@a07526702a)] - **test**: fix OpenSSL version checks (Richard Lau) [#&#8203;53503](nodejs/node#53503)-   \[[`2b70018d11`](nodejs/node@2b70018d11)] - **test**: refactor, add assertion to http-request-end (jakecastelli) [#&#8203;53411](nodejs/node#53411)-   \[[`c0262c1561`](nodejs/node@c0262c1561)] - **test_runner**: switched to internal readline interface (Emil Tayeb) [#&#8203;54000](nodejs/node#54000)-   \[[`fb7342246c`](nodejs/node@fb7342246c)] - **test_runner**: do not throw on mocked clearTimeout() (Aksinya Bykova) [#&#8203;54005](nodejs/node#54005)-   \[[`367f9e77f3`](nodejs/node@367f9e77f3)] - **test_runner**: cleanup global event listeners after run (Eddie Abbondanzio) [#&#8203;53878](nodejs/node#53878)-   \[[`206c668ee7`](nodejs/node@206c668ee7)] - **test_runner**: remove plan option from run() (Colin Ihrig) [#&#8203;53834](nodejs/node#53834)-   \[[`8660d481e5`](nodejs/node@8660d481e5)] - **tls**: add setKeyCert() to tls.Socket (Brian White) [#&#8203;53636](nodejs/node#53636)-   \[[`9c5beabd83`](nodejs/node@9c5beabd83)] - **tools**: fix `SLACK_TITLE` in invalid commit workflow (Antoine du Hamel) [#&#8203;53912](nodejs/node#53912)-   \[[`4dedf2aead`](nodejs/node@4dedf2aead)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#&#8203;53840](nodejs/node#53840)-   \[[`642d5c5d30`](nodejs/node@642d5c5d30)] - **tools**: use v8\_features.json to populate config.gypi (Cheng) [#&#8203;53749](nodejs/node#53749)-   \[[`031206544d`](nodejs/node@031206544d)] - **tools**: update lint-md-dependencies to unified@11.0.5 (Node.js GitHub Bot) [#&#8203;53555](nodejs/node#53555)-   \[[`8404421ea6`](nodejs/node@8404421ea6)] - **tools**: replace reference to NodeMainInstance with SnapshotBuilder (codediverdev) [#&#8203;53544](nodejs/node#53544)-   \[[`2d8490fed5`](nodejs/node@2d8490fed5)] - **typings**: add `fs_dir` types (Yagiz Nizipli) [#&#8203;53631](nodejs/node#53631)-   \[[`325eae0b3f`](nodejs/node@325eae0b3f)] - **url**: fix typo (KAYYY) [#&#8203;53827](nodejs/node#53827)-   \[[`7fc45f5e3f`](nodejs/node@7fc45f5e3f)] - **url**: reduce unnecessary string copies (Yagiz Nizipli) [#&#8203;53628](nodejs/node#53628)-   \[[`1d961facf1`](nodejs/node@1d961facf1)] - **url**: add missing documentation for `URL.parse()` (Yagiz Nizipli) [#&#8203;53733](nodejs/node#53733)-   \[[`ce877c6d0f`](nodejs/node@ce877c6d0f)] - **util**: fix crashing when emitting new Buffer() deprecation warning [#&#8203;53075](nodejs/node#53075) (Aras Abbasi) [#&#8203;53089](nodejs/node#53089)-   \[[`d6d04279ca`](nodejs/node@d6d04279ca)] - **worker**: allow copied NODE_OPTIONS in the env setting (Joyee Cheung) [#&#8203;53596](nodejs/node#53596)</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.🔕 **Ignore**: Close this MR and you won't be reminded about this update again.--- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box---This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
@targostargos added backported-to-v20.xPRs backported to the v20.x-staging branch. and removed backport-open-v20.xIndicate that the PR has an open backport labelsSep 30, 2024
@mastondznmastondzn mentioned this pull requestMar 5, 2025
6 tasks
williamhorning added a commit to williamhorning/revolt.js that referenced this pull requestMar 13, 2025
This commit changes revolt.js so that there is no longer a CJS build.CJS users of revolt.js can still import it using versions of Node.jsafternodejs/node#51977 was merged.The dependencies on the isomorphic-ws and ws packages were alsoremoved. This does make the minimum supported version the latestLTS, Node.js 22. In browsers and Deno, nothing should change.The dependencies on Solid.js were also removed, making a breakingchange for users who used the reactivity from the Solid.js wrappers.Import paths throughout the project were rewritten to import fromthe original source files everywhere. Prettier, ESLint, andTypescript were all updated to their latest versions as well.Signed-off-by: Jersey <wgyt735yt@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@mcollinamcollinamcollina approved these changes

@GeoffreyBoothGeoffreyBoothGeoffreyBooth approved these changes

@guybedfordguybedfordguybedford approved these changes

@legendecaslegendecaslegendecas approved these changes

@aduh95aduh95aduh95 approved these changes

Assignees
No one assigned
Labels
author readyPRs that have at least one approval, no pending requests for changes, and a CI started.backported-to-v20.xPRs backported to the v20.x-staging branch.esmIssues and PRs related to the ECMAScript Modules implementation.lib / srcIssues and PRs related to general changes in the lib or src directory.moduleIssues and PRs related to the module subsystem.needs-ciPRs that need a full CI run.notable-changePRs with changes that should be highlighted in changelogs.semver-minorPRs that contain new features and should be released in the next minor version.
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

28 participants
@joyeecheung@nodejs-github-bot@GeoffreyBooth@ShogunPanda@benjamingr@mcollina@legendecas@Jarred-Sumner@nicolo-ribaudo@anonrig@robertsLando@markstos@TotallyInformation@luckyyyyy@thedavidprice@mercmobily@jmpp@jakebailey@Avivbens@laverdet@jasnell@Chrysaloid@marco-ippolito@mikegwhit@guybedford@aduh95@targos@RafaelGSS

[8]ページ先頭

©2009-2025 Movatter.jp