Fix _getEntryPointAbsolutePath conflating disk paths with URL pathnames#1708
Open
motiz88 wants to merge 3 commits into
Open
Fix _getEntryPointAbsolutePath conflating disk paths with URL pathnames#1708motiz88 wants to merge 3 commits into
motiz88 wants to merge 3 commits into
Conversation
Contributor
|
@motiz88 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D104415558. |
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…es (facebook#1708) Summary: D102004228 added `[metro-project]`/`[metro-watchFolders]` virtual URL pathname resolution to `_getEntryPointAbsolutePath`, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI). The fix removes virtual prefix resolution from `_getEntryPointAbsolutePath`, making it a plain `path.resolve(serverRootDir, entryFile)` call, consistent with `buildGraph` which already treats the entry file as a plain disk path. Changelog: * **[Fix]:** Remove erroneous `[metro-project]` and `[metro-watchFolders]` resolution from API and CLI Differential Revision: D104415558
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…es (facebook#1708) Summary: D102004228 added `[metro-project]`/`[metro-watchFolders]` virtual URL pathname resolution to `_getEntryPointAbsolutePath`, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI). The fix removes virtual prefix resolution from `_getEntryPointAbsolutePath`, making it a plain `path.resolve(serverRootDir, entryFile)` call, consistent with `buildGraph` which already treats the entry file as a plain disk path. Changelog: * **[Fix]:** Remove erroneous `[metro-project]` and `[metro-watchFolders]` resolution from API and CLI Differential Revision: D104415558
3a9289f to
b512385
Compare
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…es (facebook#1708) Summary: D102004228 added `[metro-project]`/`[metro-watchFolders]` virtual URL pathname resolution to `_getEntryPointAbsolutePath`, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI). The fix removes virtual prefix resolution from `_getEntryPointAbsolutePath`, making it a plain `path.resolve(serverRootDir, entryFile)` call, consistent with `buildGraph` which already treats the entry file as a plain disk path. Changelog: * **[Fix]:** Remove erroneous `[metro-project]` and `[metro-watchFolders]` resolution from API and CLI Differential Revision: D104415558
b512385 to
de698d2
Compare
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…es (facebook#1708) Summary: D102004228 added `[metro-project]`/`[metro-watchFolders]` virtual URL pathname resolution to `_getEntryPointAbsolutePath`, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI). The fix removes virtual prefix resolution from `_getEntryPointAbsolutePath`, making it a plain `path.resolve(serverRootDir, entryFile)` call, consistent with `buildGraph` which already treats the entry file as a plain disk path. Changelog: * **[Fix]:** Remove erroneous `[metro-project]` and `[metro-watchFolders]` resolution from API and CLI Reviewed By: huntie Differential Revision: D104415558
de698d2 to
c418dc3
Compare
3 tasks
Summary: Adds integration tests for `[metro-project]` and `[metro-watchFolders]` virtual URL prefixes: bundle requests, out-of-bounds index 404, and asset serving. Removes Server unit tests that tested private methods (`_resolveWatchFolderPrefix`, `_getEntryPointAbsolutePath`) directly. The behaviours they covered are now tested end-to-end by the new integration tests and will also be covered by `ProjectRouteMap` unit tests in the next diff. All tests pass without any production code changes. Reviewed By: huntie Differential Revision: D104259281
…acebook#1707) Summary: Extracts a `ProjectRouteMap` class from `Server`, centralising the `[metro-watchFolders]` and `[metro-project]` virtual prefix resolution previously spread across `_resolveWatchFolderPrefix`, `_sourceRequestRoutingMap`, and `_getModuleSourceUrl`. `ProjectRouteMap` provides: - `filePathOfUrlDecodedPathname`: resolves `[metro-project]/...` and `[metro-watchFolders]/N/...` prefixed pathnames to absolute file paths. Returns null for non-prefixed paths or invalid indices. - `urlPathnameOfFilePath`: maps an absolute file path to the corresponding prefixed URL pathname. Server now delegates to `ProjectRouteMap` from `_resolveRelativePath`, `_getEntryPointAbsolutePath`, `_getModuleSourceUrl`, and source file serving. No behavioural change is intended here, but this does incidentally fix a Windows bug that was affecting the original implementation. Changelog: * **[Fix]:** Fix `/[metro-project]/` and `/[metro-watchFolders]/` bundle serving on Windows. Reviewed By: huntie Differential Revision: D104223068
Summary: D102004228 added `[metro-project]`/`[metro-watchFolders]` virtual URL pathname resolution to `_getEntryPointAbsolutePath`, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI). The fix removes virtual prefix resolution from `_getEntryPointAbsolutePath`, making it a plain `path.resolve(serverRootDir, entryFile)` call, consistent with `buildGraph` which already treats the entry file as a plain disk path. Changelog: * **[Fix]:** Remove erroneous `[metro-project]` and `[metro-watchFolders]` resolution from API and CLI Reviewed By: huntie Differential Revision: D104415558
c418dc3 to
bdc26e4
Compare
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:
D102004228 added
[metro-project]/[metro-watchFolders]virtual URL pathname resolution to_getEntryPointAbsolutePath, but this method doesn't take URL pathnames - it takes actual filesystem paths (ultimately from Metro's API / CLI).The fix removes virtual prefix resolution from
_getEntryPointAbsolutePath, making it a plainpath.resolve(serverRootDir, entryFile)call, consistent withbuildGraphwhich already treats the entry file as a plain disk path.Changelog:
[metro-project]and[metro-watchFolders]resolution from API and CLIReviewed By: huntie
Differential Revision: D104415558