{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":76504246,"defaultBranch":"main","name":"metro","ownerLogin":"facebook","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-12-14T23:02:54.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/69631?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717525142.0","currentOid":""},"activityList":{"items":[{"before":"93f26edaabb614bb3a5ed5a74020ac93daf0a8dc","after":"5c78f8d539474552b264626b5a99dc0d92243db3","ref":"refs/heads/main","pushedAt":"2024-06-11T11:49:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix non awaited promise in unit test\n\nSummary:\nFlow type declarations for expect function has a problem with async arguments.\n\nWhenever we are expecting something on a promise, the expect statement should be awaited, otherwise the result would be incorrect.\n\nFor example, this test passes\n\n```\n jest.useRealTimers();\n it('.resolves is ignored when promise is resolved in future', () => {\n const promise = new Promise(resolve =>\n setTimeout(() => resolve(11), 1000),\n );\n\n expect(promise).resolves.toBe(12);\n });\n```\n\nTo remove this problem I am going to modify flow type definitions.\n\nD58080193 is a demonstration of this problem\n\n ---\n\nThis diff adds await to async expect statements\n\nDifferential Revision: D58398671\n\nfbshipit-source-id: ff7987216233e76d3cc1a5ec56147b7293f8c0f0","shortMessageHtmlLink":"Fix non awaited promise in unit test"}},{"before":"3e2bc29c3babe2afec70b3478f7ec86455059866","after":"93f26edaabb614bb3a5ed5a74020ac93daf0a8dc","ref":"refs/heads/main","pushedAt":"2024-06-11T10:17:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Internal refactor of TreeFS._lookupByNormalPath (collectLinkPaths) (#1276)\n\nSummary:\nPull Request resolved: https://github.com/facebook/metro/pull/1276\n\nThis is a light refactoring of a private method to clear the way for subsequent diffs. In `TreeFS._lookupByNormalPath`, rather than returning a list of project-relative traversed symlink paths, we accept an optional `Set` into which we write absolute paths.\n\nThis is more ergonomic and performant for callers that repeatedly call `_lookupByNormalPath` (the upcoming `hierarchicalLookup`) and want to aggregate the paths that could invalidate its result (for incremental resolution) - we save instantiating a new array and then copying its contents into an aggregate set for each call.\n\nAdditionally, `_lookupByNormalPath` can perform the normal->absolute path conversion (which is cheap but not free) only if `collectLinkPaths` is given.\n\nChangelog: Internal\n\nReviewed By: huntie\n\nDifferential Revision: D57844055\n\nfbshipit-source-id: 4fd2ba30bc8281d80f5b390e67444acb4f1266ec","shortMessageHtmlLink":"Internal refactor of TreeFS._lookupByNormalPath (collectLinkPaths) (#…"}},{"before":"6e716997fa22b65b0c78931fc6eb648fb9b2f5a1","after":"3e2bc29c3babe2afec70b3478f7ec86455059866","ref":"refs/heads/main","pushedAt":"2024-06-10T23:14:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix --initial-sync by comparing with timeWhenInitiated\n\nSummary:\nfix `--initial-sync` not working w/ the previous diff: D58213626\n\n--\n\nin this diff we leveraged querying `mtime_ms` (modified time in milliseconds) when issuing the watchman `subscribe` command, so that in each subscription event we get the information of when the file was modified, and compare that with the epoch time when the watchman subscription was initiated.\n\nif it's prior to the clock, we ignore it.\n\nhttps://facebook.github.io/watchman/docs/cmd/query#available-fields\n\n--\n\n## a potentially cleaner solution (that didn't work)\n\nI think the current solution is already straight-forward, but I've also tried what I thought could be a cleaner approach by passing the unix epoch time directly as `since`, as the `clockSpec` doc said that you could pass:\n\n> number of seconds since the unix epoch (unix time_t style)\n\nbut when passing it directly to:\n\n```\n{\n since: {\n clock: String(Math.floor(Date.now().getTime() / 1000)),\n scm: {\n 'mergebase-with': 'master',\n },\n },\n}\n```\n\nthen for some reason we cannot initiate the subscription, with incomprehensible message. I'm guessing it's\n\n```\nFailed to subscribe: Error: The watchman connection was closed\n at Client.cancelCommands (/data/sandcastle/boxes/fbsource/xplat/js/node_modules/fb-watchman/index.js:52:15)\n at Socket. (/data/sandcastle/boxes/fbsource/xplat/js/node_modules/fb-watchman/index.js:128:12)\n at Socket.emit (node:events:530:35)\n at endReadableNT (node:internal/streams/readable:1696:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\nFailed to subscribe: Error: The watchman connection was closed\n at Client.cancelCommands (/data/sandcastle/boxes/fbsource/xplat/js/node_modules/fb-watchman/index.js:52:15)\n at Socket. (/data/sandcastle/boxes/fbsource/xplat/js/node_modules/fb-watchman/index.js:128:12)\n at Socket.emit (node:events:530:35)\n at endReadableNT (node:internal/streams/readable:1696:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n```\n\nReviewed By: amyogit\n\nDifferential Revision: D58339944\n\nfbshipit-source-id: fc98dda7d5f16f5c7fe731e65b57865accb43bf6","shortMessageHtmlLink":"Fix --initial-sync by comparing with timeWhenInitiated"}},{"before":"05fd223b6682d753df170af8f21f66f56033fa62","after":"6e716997fa22b65b0c78931fc6eb648fb9b2f5a1","ref":"refs/heads/main","pushedAt":"2024-06-09T19:06:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Improve normalisation of percent-encoded request URLs\n\nSummary:\nWhen processing requests, Metro compares path prefixes and \"extensions\" to specific magic strings, eg `/[metro-project]/`. Currently, this matching is performed on the literal requested path, which makes it sensitive to URL (percent) encoding.\n\nIn particular, iOS (`NSURL urlWithString`) encodes some characters more aggressively than other clients, including encoding `[` and `]`. This causes a request for `/[metro-project]/foo.js` to fail with a 404 when executed through `NSURLRequest`, because `urlObj.pathname` begins `/%5Bmetro-project%5D/`.\n\nMetro should ideally be insensitive to percent-encoding on all requests. This fix isn't complete, but addresses the particular blocking issue with source URLs.\n\n```\n - **[Fix]**: Improve dev server insensitivity to percent encoding on source requests.\n```\n\nReviewed By: motiz88\n\nDifferential Revision: D58289369\n\nfbshipit-source-id: 616da5d5e44539996c16f103254f1b5aaa83704c","shortMessageHtmlLink":"Improve normalisation of percent-encoded request URLs"}},{"before":"262b97aaa2ec2a28caa4b49276e376249878b4a4","after":"05fd223b6682d753df170af8f21f66f56033fa62","ref":"refs/heads/main","pushedAt":"2024-06-07T17:04:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Build and sync lint/sort-imports from WWW (#1285)\n\nSummary:\nX-link: https://github.com/facebook/relay/pull/4708\n\nPull Request resolved: https://github.com/facebook/metro/pull/1285\n\nX-link: https://github.com/facebook/react-native/pull/44824\n\nRun the build script based on the commit in D58271034.\n\nChangelog: [Internal]\n\nNOTE: Test plan and summary intentionally obfuscated because it's exported to an external github pull request, but trust me.\n\nReviewed By: yungsters\n\nDifferential Revision: D58271323\n\nfbshipit-source-id: be19c63d630281b9f6feca00b24f45d000e07089","shortMessageHtmlLink":"Build and sync lint/sort-imports from WWW (#1285)"}},{"before":"2eaee5f09d6701a0f192e37e7299e2a945f1cf59","after":"262b97aaa2ec2a28caa4b49276e376249878b4a4","ref":"refs/heads/main","pushedAt":"2024-06-06T09:38:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Update hermes-parser and related packages in fbsource to 0.22.0\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44804\n\nBump hermes-parser and related packages to [0.22.0](https://github.com/facebook/hermes/blob/main/tools/hermes-parser/js/CHANGELOG.md).\n\nChangelog: [internal]\n\nReviewed By: SamChou19815\n\nDifferential Revision: D58172293\n\nfbshipit-source-id: 9261a4d2e4fd2319c168f36d9928857b7bed37c2","shortMessageHtmlLink":"Update hermes-parser and related packages in fbsource to 0.22.0"}},{"before":"a89bc251b15200d32dfcbe9b5b05b4d0a3bdb128","after":"3950212f508f41c39b42f2836cb4af49c951788d","ref":"refs/heads/gh-pages","pushedAt":"2024-06-04T18:20:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy website - based on 2eaee5f09d6701a0f192e37e7299e2a945f1cf59","shortMessageHtmlLink":"Deploy website - based on 2eaee5f"}},{"before":"c7403cb51980f288d54bcca85f28f39db4b414be","after":null,"ref":"refs/heads/dependabot/npm_and_yarn/website/express-4.19.2","pushedAt":"2024-06-04T18:19:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"a2f72d11f5e4350709fef2b1723dddd9ad9f184c","after":"2eaee5f09d6701a0f192e37e7299e2a945f1cf59","ref":"refs/heads/main","pushedAt":"2024-06-04T18:18:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Bump express from 4.18.1 to 4.19.2 in /website (#1245)\n\nSummary:\nBumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.19.2.\n
\nRelease notes\n

Sourced from express's releases.

\n
\n

4.19.2

\n

What's Changed

\n\n

Full Changelog: https://github.com/expressjs/express/compare/4.19.1...4.19.2

\n

4.19.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/expressjs/express/compare/4.19.0...4.19.1

\n

4.19.0

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/expressjs/express/compare/4.18.3...4.19.0

\n

4.18.3

\n

Main Changes

\n
    \n
  • Fix routing requests without method
  • \n
  • deps: body-parser@1.20.2\n
      \n
    • Fix strict json error message on Node.js 19+
    • \n
    • deps: content-type@~1.0.5
    • \n
    • deps: raw-body@2.5.2
    • \n
    \n
  • \n
\n

Other Changes

\n\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from express's changelog.

\n
\n

4.19.2 / 2024-03-25

\n
    \n
  • Improved fix for open redirect allow list bypass
  • \n
\n

4.19.1 / 2024-03-20

\n
    \n
  • Allow passing non-strings to res.location with new encoding handling checks
  • \n
\n

4.19.0 / 2024-03-20

\n
    \n
  • Prevent open redirect allow list bypass due to encodeurl
  • \n
  • deps: cookie@0.6.0
  • \n
\n

4.18.3 / 2024-02-29

\n
    \n
  • Fix routing requests without method
  • \n
  • deps: body-parser@1.20.2\n
      \n
    • Fix strict json error message on Node.js 19+
    • \n
    • deps: content-type@~1.0.5
    • \n
    • deps: raw-body@2.5.2
    • \n
    \n
  • \n
  • deps: cookie@0.6.0\n
      \n
    • Add partitioned option
    • \n
    \n
  • \n
\n

4.18.2 / 2022-10-08

\n
    \n
  • Fix regression routing a large stack in a single route
  • \n
  • deps: body-parser@1.20.1\n
      \n
    • deps: qs@6.11.0
    • \n
    • perf: remove unnecessary object clone
    • \n
    \n
  • \n
  • deps: qs@6.11.0
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 04bc627 4.19.2
  • \n
  • da4d763 Improved fix for open redirect allow list bypass
  • \n
  • 4f0f6cc 4.19.1
  • \n
  • a003cfa Allow passing non-strings to res.location with new encoding handling checks f...
  • \n
  • a1fa90f fixed un-edited version in history.md for 4.19.0
  • \n
  • 11f2b1d build: fix build due to inconsistent supertest behavior in older versions
  • \n
  • 084e365 4.19.0
  • \n
  • 0867302 Prevent open redirect allow list bypass due to encodeurl
  • \n
  • 567c9c6 Add note on how to update docs for new release (#5541)
  • \n
  • 69a4cf2 deps: cookie@0.6.0
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\nMaintainer changes\n

This version was pushed to npm by wesleytodd, a new releaser for express since your current version.

\n
\n
\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.18.1&new-version=4.19.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n ---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `dependabot rebase` will rebase this PR\n- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `dependabot merge` will merge this PR after your CI passes on it\n- `dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `dependabot reopen` will reopen this PR if it is closed\n- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/metro/network/alerts).\n\n
\n\nPull Request resolved: https://github.com/facebook/metro/pull/1245\n\nReviewed By: hoxyq\n\nDifferential Revision: D58137974\n\nPulled By: robhogan\n\nfbshipit-source-id: c7877f11cabcda89e05ed6ae62c773c47e681780","shortMessageHtmlLink":"Bump express from 4.18.1 to 4.19.2 in /website (#1245)"}},{"before":"be23f06eb598583cb77bf3659312dbf01dd3ae22","after":"bdb29c3867a89f7ff04ecc0153fed98bca574e26","ref":"refs/heads/dependabot/github_actions/actions/cache-4.0.2","pushedAt":"2024-06-04T14:29:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump actions/cache from 3.3.2 to 4.0.2\n\nBumps [actions/cache](https://github.com/actions/cache) from 3.3.2 to 4.0.2.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v3.3.2...v4.0.2)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump actions/cache from 3.3.2 to 4.0.2"}},{"before":"92ab1483b62c33b08df8415ea15cc9d403874cd6","after":null,"ref":"refs/heads/dependabot/github_actions/actions/checkout-4.1.5","pushedAt":"2024-06-04T14:29:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":null,"after":"a63035c120ab46fd87689b710ed0cd2c6dcdbcb6","ref":"refs/heads/dependabot/github_actions/actions/checkout-4.1.6","pushedAt":"2024-06-04T14:28:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump actions/checkout from 4.1.1 to 4.1.6\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump actions/checkout from 4.1.1 to 4.1.6"}},{"before":"feac4f01e7db4b9d172db61de4bafb44eb35fc10","after":"c7403cb51980f288d54bcca85f28f39db4b414be","ref":"refs/heads/dependabot/npm_and_yarn/website/express-4.19.2","pushedAt":"2024-06-04T14:28:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump express from 4.18.1 to 4.19.2 in /website\n\nBumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.19.2.\n- [Release notes](https://github.com/expressjs/express/releases)\n- [Changelog](https://github.com/expressjs/express/blob/master/History.md)\n- [Commits](https://github.com/expressjs/express/compare/4.18.1...4.19.2)\n\n---\nupdated-dependencies:\n- dependency-name: express\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump express from 4.18.1 to 4.19.2 in /website"}},{"before":"37eeb0ddfd4ec10c670b2b520df18cf92c3a6fd4","after":"a2f72d11f5e4350709fef2b1723dddd9ad9f184c","ref":"refs/heads/main","pushedAt":"2024-06-04T13:40:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix recursive require.context when the context root is an ancestor of the project root (#1281)\n\nSummary:\nPull Request resolved: https://github.com/facebook/metro/pull/1281\n\n## Background\n(Same as previous diff)\n\nThe internal implementation of `TreeFS` uses a tree of maps representing file path segments, with a \"root\" node at the *project root*. For paths outside the project root, we traverse through `'..'` nodes, so that `../outside` traverses from the project root through `'..'` and `'outside'`. Basing the representation around the project root (as opposed to a volume root) minimises traversal through irrelevant paths and makes the cache portable.\n\n## Problem\nHowever, because this map of maps is a simple (acyclic) tree, a `'..'` node has no entry for one of its logical (=on disk) children - the node closer to the project root. When (recursively) enumerating paths under an ancestor of the project root, the descendent part of the project root will be missing if we only enumerate entries of the Map.\n\n## Observable bugs (in experimental features)\nFor enumerations we miss out (ancestors of) the project root where they should be included, eg `matchFiles('..', {recursive: true})` will not include the project root subtree. This is observable through the (experimental) `require.context()` API.\n\n## This fix\n`_lookupByNormalPath` now returns information on whether the returned node is an ancestor of the project root. `matchFiles` looks up the search root (context root, for `require.context()`), and uses the new `ancestorOfRootIdx` to potentially iterate over one extra node. This is a negligible constant-time increase in complexity for `_lookupByNormalPath` and `matchFiles`.\n\nChangelog:\n```\n - **[Experimental]**: Fix subtrees of the project root missed from `require.context` when using an ancestor of the project root as context root.\n```\n\nReviewed By: huntie\n\nDifferential Revision: D57844039\n\nfbshipit-source-id: 9150ac3d3e0629be4e11247e87b70253b2aa5ff2","shortMessageHtmlLink":"Fix recursive require.context when the context root is an ancestor of…"}},{"before":"65fd0223b3541413984a652eee43cf82d98a6f44","after":"37eeb0ddfd4ec10c670b2b520df18cf92c3a6fd4","ref":"refs/heads/main","pushedAt":"2024-06-04T04:33:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Deploy 0.237.2 to xplat\n\nSummary: Changelog: [Internal]\n\nReviewed By: alexmckenley\n\nDifferential Revision: D58120938\n\nfbshipit-source-id: f789623005f47ab9d6dd134819a08bc832642a22","shortMessageHtmlLink":"Deploy 0.237.2 to xplat"}},{"before":"e303578db5940cf9d9f70a6c69b91326523d5a87","after":"65fd0223b3541413984a652eee43cf82d98a6f44","ref":"refs/heads/main","pushedAt":"2024-06-03T14:57:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Fix handling of paths that leave and re-enter the project root via symlinks (#1280)\n\nSummary:\nPull Request resolved: https://github.com/facebook/metro/pull/1280\n\n## Background\nThe internal implementation of `TreeFS` uses a tree of maps representing file path segments, with a \"root\" node at the *project root*. For paths outside the project root, we traverse through `'..'` nodes, so that `../outside` traverses from the project root through `'..'` and `'outside'`. Basing the representation around the project root (as opposed to a volume root) minimises traversal through irrelevant paths and makes the cache portable.\n\n## Problem\nHowever, because this map of maps is a simple (acyclic) tree, a `'..'` node has no entry for one of its logical (=on disk) children - the node closer to the project root. With a project root `/foo/bar`, the project-root-relative path `../bar` cannot be traversed, because `'..'` is a key of `'bar'` and not vice-versa.\n\nThis mostly isn't a problem because `'../bar'` is not a *normal* path - normalisation collapses this down to `''`: https://github.com/facebook/metro/blob/6856d00cfdddc1dd5ed9ab35249fe7ca1610ca75/packages/metro-file-map/src/lib/RootPathUtils.js#L142-L148\n\n## Observable bug\nFor lookups, if instead of a literal indirection we have a symlink `'link-to-parent/bar'`, normalisation cannot (and should not) collapse away the symlink - so after dereferencing the symlink during traversal to `'..'` and joining it with the remaining `bar` we are unable to lookup `'../bar'`. For the module resolver this might appear as a failed existence check, and cause a resolution failure.\n\n## This fix\nWhen dereferencing a symlink as part of `_lookupByNormalPath`, we now join the symlink target to the remaining subpath using a (mostly pre-exisitng) utility function that is aware of the project root, and can collapse away the project root segments. This leaves a normalised, root-relative target path that's guaranteed not to leave and re-enter the project root.\n\nChangelog:\n```\n- **[Fix]**: Fix some paths being unresolvable when traversing a symlink that points to an ancestor of the project root.\n```\n\nReviewed By: huntie\n\nDifferential Revision: D57719224\n\nfbshipit-source-id: e6ceee1b4a5f8d4fd1ea5c478c73e20f771b98a9","shortMessageHtmlLink":"Fix handling of paths that leave and re-enter the project root via sy…"}},{"before":"34dabe3a127b0c4595e4e598ae68db8c4626304e","after":"a89bc251b15200d32dfcbe9b5b05b4d0a3bdb128","ref":"refs/heads/gh-pages","pushedAt":"2024-06-03T12:05:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy website - based on e303578db5940cf9d9f70a6c69b91326523d5a87","shortMessageHtmlLink":"Deploy website - based on e303578"}},{"before":"0c066e5bb76e6e61238d796696ca6e1b84812bbe","after":"e303578db5940cf9d9f70a6c69b91326523d5a87","ref":"refs/heads/main","pushedAt":"2024-06-03T12:03:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Move package-relative path calculation under `context.getPackageForModule` (#1268)\n\nSummary:\nPull Request resolved: https://github.com/facebook/metro/pull/1268\n\nDuring resolution using `package.json#exports` or the `browser` spec, we need package-relative subpaths of resolution candidates to check against these export/redirect maps.\n\nCurrently, we derive these using (pseudo code):\n```\nconst absolutePathOfPackageRoot = context.getPackageForModule(absolutePathOfCandidate).rootPath;\nconst packageRelativePath = path.relative(absolutePathOfPackageRoot, absolutePathOfCandidate);\n```\n\nHowever, this implicitly assumes that both paths are either real, or traverse the same set of symlinks, so that the former is a prefix of the latter. If `getPackageForModule` returned `rootPath: fs.realpath(packageRoot)`, this assumption would not hold.\n\nEg: if `/workspace-root/pgk-a/foo.js` imports `pkg-b/bar.js`, we will try a candidate `/workspace-root/node_modules/pkg-b/bar.js`, but `node_modles/pkg-b` may be a symlink to `/workspace-root/pkg-b`, and `path.relative(realPackageRoot, candidate)` will give `../node_modules/pkg-b/bar.js`, which will not match against an export map, though it represents the same location on the filesystem.\n\nInstead, we move the calculation of `packageRelativePath` inside `getPackageForModule` and close to implementation of the package search, where we know that the `path.relative` call is safe under the current implementation, and allowing an alternative implementation to use an alternative mechanism.\n\nThis is in preparation for a new implementation of `getClosestPackage`, which currently dominates resolution time, using `FileSystem`, which will natively return only *real* paths.\n\nChangelog: Internal\n\nReviewed By: huntie\n\nDifferential Revision: D56823091\n\nfbshipit-source-id: 3007f1732ad2aaede5035d0c4be054304b328de9","shortMessageHtmlLink":"Move package-relative path calculation under `context.getPackageForMo…"}},{"before":"be5ec0ff5316b1de9fefd5629c4a3a6e2d00637b","after":"0c066e5bb76e6e61238d796696ca6e1b84812bbe","ref":"refs/heads/main","pushedAt":"2024-05-31T17:01:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Cast React.createElement callee to $FlowFixMe to prepare for making React.createElement fully opaque to ban direct call\n\nReviewed By: yungsters\n\nDifferential Revision: D58018663\n\nfbshipit-source-id: d6a854d0ea13473f6ea3f81a0296753d90998c0a","shortMessageHtmlLink":"Cast React.createElement callee to $FlowFixMe to prepare for making R…"}},{"before":"6856d00cfdddc1dd5ed9ab35249fe7ca1610ca75","after":"be5ec0ff5316b1de9fefd5629c4a3a6e2d00637b","ref":"refs/heads/main","pushedAt":"2024-05-29T23:49:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Deploy 0.237.1 to xplat\n\nSummary: Changelog: [Internal]\n\nReviewed By: pieterv\n\nDifferential Revision: D57939041\n\nfbshipit-source-id: 738523fac25112ab3c75bde0c09b2df62c29aa9c","shortMessageHtmlLink":"Deploy 0.237.1 to xplat"}},{"before":"57607bf698b707ccff8557336cff122b360763ef","after":"6856d00cfdddc1dd5ed9ab35249fe7ca1610ca75","ref":"refs/heads/main","pushedAt":"2024-05-20T16:42:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Add server_listening reporter event with actually-bound port and address (#1274)\n\nSummary:\nAdd a `server_listening` reporter event. This serves two purposes:\n\n### Expose actually-bound port and address when input configuration is more ambiguous\nMetro may already be configured to start on an ephemeral (OS-assigned) port, if configured with `--port 0`, however Metro doesn't report or expose which port was actually assigned - the `initialize_done` reporter event repeats the configured port.\n\n(h/t kmagiera who let us know about this at React Conf ⚛️)\n\nSimilarly, when Metro is configured to start on `localhost`, it doesn't expose whether it binds to IPv6 (potentially dual stack) or (exclusively) IPv4.\n\n### Report when Metro is first ready to accept HTTP requests\nMetro may be listening before the transformer is fully initialised or the file crawl is complete - but this is safe, because request handlers wait for bundler readiness. We may in future start listening earlier in the startup process so that Metro is available to at least start queueing requests as soon as possible.\n\nIntegrators may use `server_listening` as an explicit signal that Metro is ready to accept http requests, even though it may not be fully warm.\n\n## Changelog\n```\n - **[Feature]**: Add `server_listening` reporter event, exposing bound port, address and family.\n```\n\nPull Request resolved: https://github.com/facebook/metro/pull/1274\n\nTest Plan:\nWith `console.log(event)` added to `TerminalReporter` for `server_listening`:\n\n```\nyarn start serve --port 0\nyarn run v1.22.19\n$ node packages/metro/src/cli serve --port 0\n\n ▒▒▓▓▓▓▒▒\n ▒▓▓▓▒▒░░▒▒▓▓▓▒\n ▒▓▓▓▓░░░▒▒▒▒░░░▓▓▓▓▒\n ▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓\n ▓▓░░░░░▒▓▓▓▓▓▓▒░░░░░▓▓\n ▓▓░░▓▓▒░░░▒▒░░░▒▓▒░░▓▓\n ▓▓░░▓▓▓▓▓▒▒▒▒▓▓▓▓▒░░▓▓\n ▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░▓▓\n ▓▓▒░░▒▒▓▓▓▓▓▓▓▓▒░░░▒▓▓\n ▒▓▓▓▒░░░▒▓▓▒░░░▒▓▓▓▒\n ▒▓▓▓▒░░░░▒▓▓▓▒\n ▒▒▓▓▓▓▒▒\n\n{\n type: 'server_listening',\n address: '::1',\n port: 57182,\n family: 'IPv6'\n}\n Welcome to Metro v0.80.9\n Fast - Scalable - Integrated\n```\n\nReviewed By: motiz88\n\nDifferential Revision: D57503756\n\nPulled By: robhogan\n\nfbshipit-source-id: 3398007a50b411f47cbff2b74ef2b0ff4047a832","shortMessageHtmlLink":"Add server_listening reporter event with actually-bound port and addr…"}},{"before":null,"after":"6bd5d2b731109fe85503e4d15f360affa8371f26","ref":"refs/heads/robhogan/feat/server_listening","pushedAt":"2024-05-17T18:29:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"robhogan","name":"Rob Hogan","path":"/robhogan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2590098?s=80&v=4"},"commit":{"message":"Add server_listening reporter event with actually-bound port and address","shortMessageHtmlLink":"Add server_listening reporter event with actually-bound port and address"}},{"before":"1d59ec16148ed6c03a7c91e9a22e17d20301d254","after":"57607bf698b707ccff8557336cff122b360763ef","ref":"refs/heads/main","pushedAt":"2024-05-13T21:20:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Update hermes-parser and related packages to 0.21.1\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44560\n\nChangelog: [Internal]\n\nReviewed By: alexmckenley\n\nDifferential Revision: D57289099\n\nfbshipit-source-id: c1525c8e9606a05f479a3964f450c71b131f01f1","shortMessageHtmlLink":"Update hermes-parser and related packages to 0.21.1"}},{"before":"5bb3b4286c58023c40b9b4b6f04660e0c527ff61","after":"1d59ec16148ed6c03a7c91e9a22e17d20301d254","ref":"refs/heads/main","pushedAt":"2024-05-10T06:18:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"remove default option experimental.global_find_ref=true\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44515\n\nthis has been the default for a while\n\nChangelog: [Internal]\n\nReviewed By: SamChou19815\n\nDifferential Revision: D57195561\n\nfbshipit-source-id: b441d972134dba754d714ae5694d94537707ded3","shortMessageHtmlLink":"remove default option experimental.global_find_ref=true"}},{"before":"34148e61200a508923315fbe387b26d1da27bf4b","after":"5bb3b4286c58023c40b9b4b6f04660e0c527ff61","ref":"refs/heads/main","pushedAt":"2024-05-10T02:37:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Deploy 0.236.0 to xplat\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44510\n\nChangelog: [Internal]\n\nReviewed By: SamChou19815\n\nDifferential Revision: D57186863\n\nfbshipit-source-id: 389dcb039c7d4c461b3be28f4eba32d5d9781e61","shortMessageHtmlLink":"Deploy 0.236.0 to xplat"}},{"before":"539a9e1ea0981585f91adfe49ba8b39aaad79771","after":"34148e61200a508923315fbe387b26d1da27bf4b","ref":"refs/heads/main","pushedAt":"2024-05-08T14:06:15.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Use yieldy version of sourceMapString in server\n\nSummary:\nChangelog:\n* **[Performance]:** Make server more responsive during source map serialization.\n\nWe have an existing (currently unused) non-blocking implementation of `sourceMapObject` that relies on explicitly chunking the source map encoding work. Here we reuse the same underlying machinery to make `sourceMapString` non-blocking, as a cheap way of reducing long main-thread pauses during `.map` requests.\n\nNOTE: `.map` requests do have a significant I/O component today, which isn't really addressed here. The I/O is best eliminated by passing the `excludeSource=true` parameter, typically in combination with `sourcePaths=url-server` (see D56952063, D56952065).\n\nReviewed By: robhogan\n\nDifferential Revision: D56957754\n\nfbshipit-source-id: b18fd1d801d4d4542e39425fddd8cdb5ed8d6ce1","shortMessageHtmlLink":"Use yieldy version of sourceMapString in server"}},{"before":"a907c3ec9222958e4baf37a685e07d32e0224e9f","after":null,"ref":"refs/heads/dependabot/github_actions/actions/checkout-4.1.4","pushedAt":"2024-05-06T21:41:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":null,"after":"92ab1483b62c33b08df8415ea15cc9d403874cd6","ref":"refs/heads/dependabot/github_actions/actions/checkout-4.1.5","pushedAt":"2024-05-06T21:41:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump actions/checkout from 4.1.1 to 4.1.5\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.5.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump actions/checkout from 4.1.1 to 4.1.5"}},{"before":"6ef5536e1f6ab537d02ad67a0a48597bac4fa8dc","after":"539a9e1ea0981585f91adfe49ba8b39aaad79771","ref":"refs/heads/main","pushedAt":"2024-05-03T18:24:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"Update hermes-parser and related packages in fbsource to 0.21.0, take 2\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44395\n\nBump hermes-parser and related packages to [0.21.0](https://github.com/facebook/hermes/blob/main/tools/hermes-parser/js/CHANGELOG.md).\n\nChangelog: [internal]\n\nReviewed By: SamChou19815\n\nDifferential Revision: D56900032\n\nfbshipit-source-id: 073aeb6f538bb4b56bf309fbd3f9edb2f04b30d0","shortMessageHtmlLink":"Update hermes-parser and related packages in fbsource to 0.21.0, take 2"}},{"before":"14c0f5e871185c4f93d3d1e69f988f7777d53ccf","after":"6ef5536e1f6ab537d02ad67a0a48597bac4fa8dc","ref":"refs/heads/main","pushedAt":"2024-05-02T23:21:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"facebook-github-bot","name":"Facebook Community Bot","path":"/facebook-github-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6422482?s=80&v=4"},"commit":{"message":"RN/Relay: Upgrade to React v18.3.1 (#1270)\n\nSummary:\nX-link: https://github.com/facebook/react-native/pull/44397\n\nPull Request resolved: https://github.com/facebook/metro/pull/1270\n\nUpgrades `react-native` and `relay` to the newly published `react@18.3.1`.\n\nChangelog:\n[General][Changed] - Upgrade to `react@18.3.1`\n\nReviewed By: jackpope\n\nDifferential Revision: D56901818\n\nfbshipit-source-id: 423d35205bb533c6a39c0fed25a1ffea1f0bc12d","shortMessageHtmlLink":"RN/Relay: Upgrade to React v18.3.1 (#1270)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYibtDwA","startCursor":null,"endCursor":null}},"title":"Activity · facebook/metro"}