Skip to content

esm: unflag extensionless ES module JavaScript and Wasm in module scope - #49974

Closed
GeoffreyBooth wants to merge 5 commits into
nodejs:mainfrom
GeoffreyBooth:extensionless-in-module-scope
Closed

esm: unflag extensionless ES module JavaScript and Wasm in module scope#49974
GeoffreyBooth wants to merge 5 commits into
nodejs:mainfrom
GeoffreyBooth:extensionless-in-module-scope

Conversation

@GeoffreyBooth

Copy link
Copy Markdown
Member

This includes work by @LiviaMedeiros in #49531, #49629, and #49540.

Following up from #49869, this PR allows extensionless ESM JavaScript and Wasm files within "type": "module" package scopes to run as entry points or be imported. This can be done as a semver-minor change because currently such files error when they are within a module scope. (Outside of such a scope, they are interpreted as CommonJS modules unless --experimental-default-type=module is passed.)

This was discussed in the most recent TSC meeting, nodejs/TSC#1442. At that meeting it was agreed that this change could go out in 21.0.0, but not immediately in 20.x or below. It doesn’t need to be restricted from 20.x indefinitely, but there was a request to hold off on backporting it to 20.x until it had been public in 21.x for a bit. I’ve added labels accordingly.

@nodejs/loaders @nodejs/wasi

@GeoffreyBoothGeoffreyBooth added esm Issues and PRs related to the ECMAScript Modules implementation. wasm Issues and PRs related to WebAssembly. dont-land-on-v18.x labels Sep 30, 2023
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/loaders

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originated in Node.js core. needs-ci PRs that need a full CI run. labels Sep 30, 2023
@LiviaMedeirosLiviaMedeiros added the request-ci Add this label to start a Jenkins CI on a PR. label Sep 30, 2023

@LiviaMedeirosLiviaMedeiros left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

RSLGTM

@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Sep 30, 2023
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@shrujalshah28

Copy link
Copy Markdown
Contributor

Maybe add baking-for-ltsPRs that need to wait before landing in a LTS release. ?

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@GeoffreyBoothGeoffreyBooth added baking-for-lts PRs that need to wait before landing in a LTS release. and removed dont-land-on-v18.x labels Sep 30, 2023
@GeoffreyBooth

Copy link
Copy Markdown
MemberAuthor

Maybe add baking-for-lts PRs that need to wait before landing in a LTS release. ?

That’s a good idea, I assume I should use that without the dont-land ones?

@GeoffreyBooth

Copy link
Copy Markdown
MemberAuthor

@LiviaMedeiros or someone else, do you want to approve this? Then it can land.

@guybedfordguybedford left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The lookup logic all looks correct to me.

Comment threadlib/internal/errors.js Outdated
Comment threadlib/internal/modules/esm/get_format.js
@LiviaMedeirosLiviaMedeiros self-assigned this Oct 3, 2023
LiviaMedeiros pushed a commit that referenced this pull request Oct 3, 2023
PR-URL: #49974
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
@LiviaMedeiros

Copy link
Copy Markdown
Member

Landed in 9c68320

@GeoffreyBooth
GeoffreyBooth deleted the extensionless-in-module-scope branch October 3, 2023 05:08
targos pushed a commit that referenced this pull request Nov 11, 2023
PR-URL: #49974
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
targos pushed a commit to targos/node that referenced this pull request Nov 11, 2023
PR-URL: nodejs#49974
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
@targostargos mentioned this pull request Nov 12, 2023
@targostargos added backported-to-v18.x and removed baking-for-lts PRs that need to wait before landing in a LTS release. labels Nov 23, 2023
targos pushed a commit that referenced this pull request Nov 23, 2023
PR-URL: #49974
Backport-PR-URL: #50669
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
@targostargos mentioned this pull request Nov 28, 2023
codebytere added a commit to electron/electron that referenced this pull request Dec 11, 2023
* chore: bump node in DEPS to v20.10.0
* chore: update feat_initialize_asar_support.patch
no code changes; patch just needed an update due to nearby upstream changes
Xref: nodejs/node#49986
* chore: update pass_all_globals_through_require.patch
no manual changes; patch applied with fuzz
Xref: nodejs/node#49657
* chore: update refactor_allow_embedder_overriding_of_internal_fs_calls
Xref: nodejs/node#49912
no code changes; patch just needed an update due to nearby upstream changes
* chore: update chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch
Xref: nodejs/node#49986
minor manual changes needed to sync with upstream change
* update fix_expose_the_built-in_electron_module_via_the_esm_loader.patch
Xref: nodejs/node#50096
Xref: nodejs/node#50314
in lib/internal/modules/esm/load.js, update the code that checks for
`format === 'electron'`. I'd like 👀 on this
Xref: nodejs/node#49657
add braces in lib/internal/modules/esm/translators.js to sync with upstream
* fix: lazyload fs in esm loaders to apply asar patches
* nodejs/node#50127
* nodejs/node#50096
* esm: jsdoc for modules code
nodejs/node#49523
* test: set test-cli-node-options as flaky
nodejs/node#50296
* deps: update c-ares to 1.20.1
nodejs/node#50082
* esm: bypass CommonJS loader under --default-type=module
nodejs/node#49986
* deps: update uvwasi to 0.0.19
nodejs/node#49908
* lib,test: do not hardcode Buffer.kMaxLength
nodejs/node#49876
* crypto: account for disabled SharedArrayBuffer
nodejs/node#50034
* test: fix edge snapshot stack traces
nodejs/node#49659
* src: generate snapshot with --predictable
nodejs/node#48749
* chore: fixup patch indices
* fs: throw errors from sync branches instead of separate implementations
nodejs/node#49913
* crypto: ensure valid point on elliptic curve in SubtleCrypto.importKey
nodejs/node#50234
* esm: detect ESM syntax in ambiguous JavaScrip
nodejs/node#50096
* fixup! test: fix edge snapshot stack traces
* esm: unflag extensionless ES module JavaScript and Wasm in module scope
nodejs/node#49974
* [tagged-ptr] Arrowify objects
https://chromium-review.googlesource.com/c/v8/v8/+/4705331
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
debadree25 pushed a commit to debadree25/node that referenced this pull request Apr 15, 2024
PR-URL: nodejs#49974
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
sercher added a commit to sercher/graaljs that referenced this pull request Apr 25, 2024
PR-URL: nodejs/node#49974
Backport-PR-URL: nodejs/node#50669
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
sercher added a commit to sercher/graaljs that referenced this pull request Apr 25, 2024
PR-URL: nodejs/node#49974
Backport-PR-URL: nodejs/node#50669
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs that have at least one approval, no pending requests for changes, and a CI started.errorsIssues and PRs related to JavaScript errors originated in Node.js core.esmIssues and PRs related to the ECMAScript Modules implementation.needs-ciPRs that need a full CI run.wasmIssues and PRs related to WebAssembly.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@GeoffreyBooth@nodejs-github-bot@shrujalshah28@LiviaMedeiros@guybedford@benjamingr@targos