Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement resolver.unstable_enableSymlinks #925

Closed
wants to merge 1 commit into from

Conversation

robhogan
Copy link
Contributor

@robhogan robhogan commented Feb 13, 2023

Summary:
This makes a minimally invasive change to metro-resolver to run source file and asset resolutions through a new realPath method of FileSystem.

Custom resolveRequest implementations are not affected - for the time being they're expected to take responsibility for returning real paths on their own, but they may now use content.unstable_realPath to do so.

This is not intended as a final design, but the resolver changes will dovetail into planned DependencyGraph work where we'll need to track non-existent resolution candidates (by their "candidate path", but ultimately resolve to real paths).

Changelog: [Experimental] Implement resolver.unstable_enableSymlinks

Demo with PNPM:
https://user-images.githubusercontent.com/2590098/219153522-d31f1997-bdf2-48aa-ae09-91c871ce8372.mov

Differential Revision: D42847996

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported labels Feb 13, 2023
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D42847996

robhogan added a commit to robhogan/metro that referenced this pull request Feb 13, 2023
)

Summary:
Pull Request resolved: facebook#925

This makes a minimally invasive change to `metro-resolver` to run source file and asset resolutions through a new `realPath` method of `FileSystem`.

Custom `resolveRequest` implementations are not affected - for the time being they're expected to take responsibility for returning real paths on their own, but they may now use `content.unstable_realPath` to do so.

This is not intended as a final design, but the resolver changes will dovetail into planned DependencyGraph work where we'll need to track non-existent resolution candidates (by their "candidate path", but ultimately resolve to real paths).

Changelog: [Experimental] Implement `resolver.unstable_enableSymlinks`

Differential Revision: D42847996

fbshipit-source-id: d763ad9ad4d76efe498c375a75e06b08a511d622
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D42847996

)

Summary:
Pull Request resolved: facebook#925

This makes a minimally invasive change to `metro-resolver` to run source file and asset resolutions through a new `getRealPath` method of `FileSystem`.

Custom `resolveRequest` implementations are not affected - for the time being they're expected to take responsibility for returning real paths on their own, but they may now use `content.unstable_getRealPath` to do so.

This is not intended as a final design, but the resolver changes will dovetail into planned DependencyGraph work where we'll need to track non-existent resolution candidates (by their "candidate path", but ultimately resolve to real paths).

Changelog: [Experimental] Implement `resolver.unstable_enableSymlinks`

Differential Revision: D42847996

fbshipit-source-id: bf4cd09fcc619292558319e6c2abc2faa697a2a9
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D42847996

@facebook-github-bot
Copy link
Contributor

This pull request has been merged in a1e233c.

@robhogan robhogan changed the title Resolve files to real paths when unstable_enableSymlinks Implement resolver.unstable_enableSymlinks Feb 15, 2023
@robhogan robhogan deleted the export-D42847996 branch February 15, 2023 20:50
@robhogan robhogan mentioned this pull request Feb 19, 2023
hyochan referenced this pull request in hyochan/dooboo-ui Mar 14, 2023
….0 (#264)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [metro-react-native-babel-preset](https://github.com/facebook/metro)
| [`^0.72.0` ->
`^0.76.0`](https://renovatebot.com/diffs/npm/metro-react-native-babel-preset/0.72.3/0.76.0)
|
[![age](https://badges.renovateapi.com/packages/npm/metro-react-native-babel-preset/0.76.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/metro-react-native-babel-preset/0.76.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/metro-react-native-babel-preset/0.76.0/compatibility-slim/0.72.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/metro-react-native-babel-preset/0.76.0/confidence-slim/0.72.3)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>facebook/metro</summary>

###
[`v0.76.0`](https://github.com/facebook/metro/releases/tag/v0.76.0)

[Compare
Source](https://github.com/facebook/metro/compare/v0.75.1...v0.76.0)

- **\[Breaking]**: Increase minimum Node version from 14 to 16.
(facebook/metro@e5950ae
by [@&#8203;huntie](https://github.com/huntie))
- **\[Breaking]**: Remove `isAssetFile` from custom resolver context,
add `assetExts`.
(facebook/metro@c6548f7
by [@&#8203;huntie](https://github.com/huntie))
- **\[Feature]**: Support
[`require.resolveWeak()`](https://facebook.github.io/metro/docs/module-api#requireresolveweak).
(facebook/metro@354d6e4
by [@&#8203;motiz88](https://github.com/motiz88))
- **\[Fix]**: Don't over-invalidate on symlink changes if resolution
through symlinks is not enabled.
(facebook/metro@2303c10
by [@&#8203;robhogan](https://github.com/robhogan))
- **\[Fix]**: Returning `false` from
[`context.redirectModulePath`](https://facebook.github.io/metro/docs/resolution#redirectmodulepath-string--string--false)
will resolve to empty module in all cases.
(facebook/metro@0f1846a
by [@&#8203;huntie](https://github.com/huntie))
- **\[Fix]**: Respect extensionless entries in `browser`, `react-native`
etc when resolving subpath package specifiers.
(facebook/metro@7e92227
by [@&#8203;huntie](https://github.com/huntie))
- **\[Fix]**: Remove undocumented Meta-only `__jsResource` and
`__conditionallySplitJsResource` functions from module API.
(facebook/metro@f1d905b
and
facebook/metro@69c8fc7
by [@&#8203;motiz88](https://github.com/motiz88))

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]**: Fixes and improvements for symlink support.
(facebook/metro@0e2a70a,
facebook/metro@3bef954,
and
facebook/metro@eeb211f
by [@&#8203;robhogan](https://github.com/robhogan))
- **\[Experimental]**: Fix bug where `"exports"` field would be used on
relative imports within a package.
(facebook/metro@cd25c2b
by [@&#8203;huntie](https://github.com/huntie))

###
[`v0.75.1`](https://github.com/facebook/metro/releases/tag/v0.75.1)

[Compare
Source](https://github.com/facebook/metro/compare/v0.75.0...v0.75.1)

- **\[Feature]**: `metro-inspector-proxy`: Add a human-readable
reference to each inspector
entries/pages.([https://github.com/facebook/metro/pull/921](https://github.com/facebook/metro/pull/921)
by [@&#8203;byCedric](https://github.com/byCedric))
- **\[Feature]**: `metro-inspector-proxy`: Report errors in the console.
(facebook/metro@da8b41b
by [@&#8203;mattbfb](https://github.com/mattbfb))
- **\[Fix]**: Race condition where a very recently modified file might
have missing
metadata.(facebook/metro@baf28ab
by [@&#8203;robhogan](https://github.com/robhogan))
- **\[Fix]**: Source maps may have invalid entries when using Terser
minification.
([https://github.com/facebook/metro/pull/928](https://github.com/facebook/metro/pull/928)
by [@&#8203;robhogan](https://github.com/robhogan))
- **\[Fix]**: `metro-inspector-proxy`: Fetch source maps from Metro.
(facebook/metro@6690b39
by [@&#8203;mattbfb](https://github.com/mattbfb))
- **\[Fix]**: Mitigate potential source map mismatches with concurrent
transformations due to
[terser#&#8203;1341](https://github.com/terser/terser/issues/1341).
([https://github.com/facebook/metro/pull/929](https://github.com/facebook/metro/pull/929)
by [@&#8203;robhogan](https://github.com/robhogan))

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]**: Add initial_build annotation to Resolving and
Transforming Dependencies
(facebook/metro@fc83b52
by [@&#8203;blakef](https://github.com/blakef))
- **\[Experimental]**: Implement support for Package Exports (enabled
via `resolver.unstable_enablePackageExports`)
(facebook/metro@4d7ab38,
facebook/metro@38b96f8,
facebook/metro@216d3e2,
facebook/metro@6e6f36f
by [@&#8203;huntie](https://github.com/huntie))
- **\[Experimental]**: Implement support for symlinks (enabled via
`resolver.unstable_enableSymlinks`)
([https://github.com/facebook/metro/pull/925](https://github.com/facebook/metro/pull/925),
[https://github.com/facebook/metro/pull/926](https://github.com/facebook/metro/pull/926),
etc. by [@&#8203;robhogan](https://github.com/robhogan))

**Full Changelog:**
facebook/metro@v0.75.0...v0.75.1

###
[`v0.75.0`](https://github.com/facebook/metro/releases/tag/v0.75.0)

[Compare
Source](https://github.com/facebook/metro/compare/v0.74.1...v0.75.0)

- **\[Breaking]**: Formalise minimum Node JS requirement at 14.17.0 via
`package.json#engines`.
(facebook/metro@c3e453e)
- **\[Breaking]**: Filter untyped context properties passed to custom
resolvers.
(facebook/metro@cb01ec0)
- **\[Breaking]**: Change default `context.redirectModulePath`
implementation to return absolute path in all cases.
(facebook/metro@acbfe63)
- **\[Feature]**: Add `mainFields`, `getPackage`, and
`getPackageForModule` to custom resolver context.
(facebook/metro@adfb593)

**Full Changelog**:
facebook/metro@v0.74.1...v0.75.0

###
[`v0.74.1`](https://github.com/facebook/metro/releases/tag/v0.74.1)

[Compare
Source](https://github.com/facebook/metro/compare/v0.74.0...v0.74.1)

- **\[Feature]**: Add `@babel/plugin-proposal-numeric-separator` to
`metro-react-native-babel-preset`
([https://github.com/facebook/metro/pull/681](https://github.com/facebook/metro/pull/681)
by [@&#8203;SConaway](https://github.com/SConaway))

**Full Changelog**:
facebook/metro@v0.74.0...v0.74.1

###
[`v0.74.0`](https://github.com/facebook/metro/releases/tag/v0.74.0)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.8...v0.74.0)

- **\[Breaking]** Remove
[@&#8203;babel/plugin-transform-template-literals](https://github.com/babel/plugin-transform-template-literals)
from metro-react-native-babel-preset
(facebook/metro@322dea8)
- **\[Breaking]** Remove `postProcessBundleSourcemap` from config
(facebook/metro@339794e)
- **\[Fix]** Don't log ENOENT errors to console for expected URL stack
frames
(facebook/metro@1031ae6)
- **\[Fix]** Don't attempt to use the `find` crawler on Windows
(facebook/metro@735aa9f)
- **\[Performance]** Improve AST processing during transformation
([https://github.com/facebook/metro/pull/854](https://github.com/facebook/metro/pull/854)
by [@&#8203;EvanBacon](https://github.com/EvanBacon))
- **\[Performance]** Improve Fast Refresh responsiveness when watching a
large number of files
(facebook/metro@b942eca)

**Full Changelog:**
facebook/metro@v0.73.6...v0.74.0

###
[`v0.73.8`](https://github.com/facebook/metro/releases/tag/v0.73.8)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.7...v0.73.8)

*This is a hotfix on the `0.73.x` branch.*

- **\[Fix]**: Source maps may have invalid entries when using Terser
minification.
([https://github.com/facebook/metro/pull/928](https://github.com/facebook/metro/pull/928))
- **\[Fix]**: Mitigate potential source map mismatches with concurrent
transformations due to
[terser#&#8203;1341](https://github.com/terser/terser/issues/1341).
([https://github.com/facebook/metro/pull/929](https://github.com/facebook/metro/pull/929))

**Full Changelog**:
facebook/metro@v0.73.7...v0.73.8

###
[`v0.73.7`](https://github.com/facebook/metro/releases/tag/v0.73.7)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.6...v0.73.7)

*This is a hotfix on the `0.73.x` branch.*

- **\[Fix]** Don't attempt to use the `find` crawler on Windows
(facebook/metro@3703019)

###
[`v0.73.6`](https://github.com/facebook/metro/releases/tag/v0.73.6)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.5...v0.73.6)

- **\[Fix]** Fix duplicate 'add' events, reduce dropped events on new
subtrees in `NodeWatcher` (non-Watchman,
non-macOS).(facebook/metro@51fb7e3)

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]** `experimentalImportBundleSupport`: Move bundle
path hints into serialised dependency
map([https://github.com/facebook/metro/pull/901](https://github.com/facebook/metro/pull/901))

**Full Changelog:**
facebook/metro@v0.73.5...v0.73.6

###
[`v0.73.5`](https://github.com/facebook/metro/releases/tag/v0.73.5)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.4...v0.73.5)

- **\[Fix]**: Make all `getTransformOptions` result properties optional.
(facebook/metro@a07c823)
- **\[Fix]**: Bug that can lead to "unknown module" errors at runtime
after an incremental build.
(facebook/metro@b1be263)
- **\[Fix]**: `metro-runtime`: Re-throw cached module errors without
wrapping.
(facebook/metro@032c4a1)
- **\[Fix]** Bump `babel/types` dependency to `^7.20.0` for more
consistent exposed AST Bump `babel/types` dependency to `^7.20.0` for
more consistent exposed AST

**Full Changelog**:
facebook/metro@v0.73.4...v0.73.5

###
[`v0.73.4`](https://github.com/facebook/metro/releases/tag/v0.73.4)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.3...v0.73.4)

- **\[Feature]:** Expose `watch` option in `RunServerOptions`
([https://github.com/facebook/metro/pull/889](https://github.com/facebook/metro/pull/889)
by [@&#8203;EvanBacon](https://github.com/EvanBacon))
- **\[Feature]:** `metro-runtime`: Emit additional context on WebSocket
`'close'` events
(facebook/metro@d54986c)

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]**: `experimentalImportBundleSupport`: Retraverse
parents of deleted async dependencies
(facebook/metro@cb806d1)

**Full Changelog:**
facebook/metro@v0.73.3...v0.73.4

###
[`v0.73.3`](https://github.com/facebook/metro/releases/tag/v0.73.3)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.2...v0.73.3)

- **\[Feature]**: Add configurable watcher health check that is off by
default
(facebook/metro@7adf468,
facebook/metro@39f6e50)

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]**: Move `experimentalImportBundleSupport` option
from transformer to server
(facebook/metro@3c0e1f7)

**Full Changelog:**
facebook/metro@v0.73.2...v0.73.3

###
[`v0.73.2`](https://github.com/facebook/metro/releases/tag/v0.73.2)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.1...v0.73.2)

Maintenance release with purely internal changes.

**Full Changelog:**
facebook/metro@v0.73.1...v0.73.2

###
[`v0.73.1`](https://github.com/facebook/metro/releases/tag/v0.73.1)

[Compare
Source](https://github.com/facebook/metro/compare/v0.73.0...v0.73.1)

- **\[Fix]**: Generate a unique name for each Watchman subscription.
([`3b0e78a`](https://github.com/facebook/metro/commit/3b0e78a76f4eea9f02e8b8464cf5b5e4549d6ac7))

> NOTE: Experimental features are not covered by semver and can change
at any time.

- **\[Experimental]\[Fix]**: Normalize file paths for `require.context`
on Windows
([https://github.com/facebook/metro/pull/876](https://github.com/facebook/metro/pull/876)
by [@&#8203;byCedric](https://github.com/byCedric))

**Full Changelog:**
facebook/metro@v0.73.0...v0.73.1

###
[`v0.73.0`](https://github.com/facebook/metro/releases/tag/v0.73.0)

[Compare
Source](https://github.com/facebook/metro/compare/v0.72.3...v0.73.0)

- **\[Breaking]** Switch default minifier from `uglify-es` to `terser`.
([#&#8203;871](https://github.com/facebook/metro/issues/871))
- **\[Breaking]**: Increase minimum supported Node.js version to
^14.17.0.
([#&#8203;872](https://github.com/facebook/metro/issues/872))
- **\[Breaking]**: Drop support for old (pre-CalVer) Watchman versions.
([`422055a`](https://github.com/facebook/metro/commit/422055a5ccaca41edb1864ca07d4f810b3e03791))
- **\[Feature]**: Support `fsevents` watcher on Apple Silicon.
([#&#8203;875](https://github.com/facebook/metro/issues/875))
- **\[Feature]**: Support loading source URLs in inspector-proxy.
([`db19b06`](https://github.com/facebook/metro/commit/db19b06bdd6d2fbbe109e4f3be4b3af3489c1f1c))
- **\[Fix]**: Log warning on unexpected error during `metro-file-map`
cache read.
([`7028b7f`](https://github.com/facebook/metro/commit/7028b7f51074f9ceef22258a8643d0f90de2388b))
- **\[Fix]**: Remove exponentiation operator transform from
`metro-react-native-babel-preset`.
([`c2365bb`](https://github.com/facebook/metro/commit/c2365bb1d72a3773b31c05feab13a96afac484df))
- **\[Fix]**: Don’t check `watchman --version` if `useWatchman` is
false.
([`76c9307`](https://github.com/facebook/metro/commit/76c9307ed61efa7794b30b4e585cc5941ed73e16))

**Full Changelog:**
facebook/metro@v0.72.3...v0.73.0

</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 PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/dooboolab/dooboo-ui).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xNjAuMCIsInVwZGF0ZWRJblZlciI6IjM0LjE2MC4wIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported Merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants