Extract ProjectRouteMap, refactor path<-->URL mappings in Server (#1707)#1707
Open
motiz88 wants to merge 2 commits into
Open
Extract ProjectRouteMap, refactor path<-->URL mappings in Server (#1707)#1707motiz88 wants to merge 2 commits into
ProjectRouteMap, refactor path<-->URL mappings in Server (#1707)#1707motiz88 wants to merge 2 commits into
Conversation
Contributor
|
@motiz88 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D104223068. |
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…eact#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. Changelog: Internal Differential Revision: D104223068
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…eact#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. Changelog: Internal Differential Revision: D104223068
ProjectRouteMap, refactor path<-->URL mappings in ServerProjectRouteMap, refactor path<-->URL mappings in Server (#1707)
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…eact#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. Changelog: Internal Differential Revision: D104223068
a35be74 to
48e2505
Compare
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…eact#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. Changelog: Internal Differential Revision: D104223068
99ed38b to
1da51e0
Compare
motiz88
added a commit
to motiz88/metro
that referenced
this pull request
May 11, 2026
…eact#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: 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
…eact#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
1da51e0 to
f33ff47
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:
Extracts a
ProjectRouteMapclass fromServer, centralising the[metro-watchFolders]and[metro-project]virtual prefix resolution previously spread across_resolveWatchFolderPrefix,_sourceRequestRoutingMap, and_getModuleSourceUrl.ProjectRouteMapprovides: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
ProjectRouteMapfrom_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:
/[metro-project]/and/[metro-watchFolders]/bundle serving on Windows.Reviewed By: huntie
Differential Revision: D104223068