Repository navigation
Conversation
robhogan
marked this pull request as ready for review
October 23, 2026 10:30
Contributor
|
cc @vzaidman as I have close to zero context here |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a regression from #1945, which hasn't been released yet.
Since #1945, when resolving a file the resolver looks up the package scope of the files in a directory once and applies its
browserredirections to every extension candidate. That's right for files, but a candidate can also be a directory that's a package root, e.g../barmatchingbar.js/with its ownpackage.json. Before #1945 that candidate was redirected through its own package, so abrowsermapping of"./"inbar.js/package.jsonapplied. Since #1945 it gets the scope of its parent directory instead, and resolution fails.This looks up the candidate first, and if it's a directory redirects it as a module of its own, like before. Files still share the directory's scope, so there's no extra
getPackageForModulecall unless a candidate is a directory.Benchmark
Perf neutral with the same harness as #1945. Every 95% CI spans zero:
package.jsonchangepackage.jsonchangeChangelog: [Internal]
Test plan
New case in
package-scope-test.js:./barresolves throughbar.js/package.json's"./"redirect tobar.js/replacement.js. It fails on main and passes here, and also pins the one extragetPackageForModulecall, for the directory.