Skip to content

Commit 5ac2327

Browse files
authored
[16.3] Turbopack: retain conditions when replacing resolve request keys (#97453)
Backports #97372
1 parent 0ccb3e7 commit 5ac2327

19 files changed

Lines changed: 84 additions & 11 deletions

File tree

test/production/next-server-nft/next-server-nft.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ async function readNormalizedNFT(next, name) {
627627
"./.next/server/server-reference-manifest.js",
628628
"./.next/server/server-reference-manifest.json",
629629
"/node_modules/@swc/helpers/cjs/_interop_require_default.cjs",
630+
"/node_modules/@swc/helpers/esm/_interop_require_default.js",
630631
"/node_modules/next/dist/build/adapter/setup-node-env.external.js",
631632
"/node_modules/next/dist/client/components/hooks-server-context.js",
632633
"/node_modules/next/dist/client/components/static-generation-bailout.js",

turbopack/crates/turbopack-core/src/resolve/mod.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ impl ResolveResult {
974974
fn with_replaced_request_key(
975975
&self,
976976
old_request_key: RcStr,
977-
request_key: RequestKey,
977+
new_request_key: RcStr,
978978
) -> Result<Vc<Self>> {
979979
let new_primary = self
980980
.primary
@@ -983,11 +983,8 @@ impl ResolveResult {
983983
let remaining = k.request.as_ref()?.strip_prefix(&*old_request_key)?;
984984
Some((
985985
RequestKey {
986-
request: request_key
987-
.request
988-
.as_ref()
989-
.map(|r| format!("{r}{remaining}").into()),
990-
conditions: request_key.conditions.clone(),
986+
request: Some(format!("{new_request_key}{remaining}").into()),
987+
conditions: k.conditions.clone(),
991988
},
992989
v.clone(),
993990
))
@@ -2665,12 +2662,11 @@ async fn apply_in_package(
26652662
};
26662663

26672664
let refs = refs.clone();
2668-
let request_key = RequestKey::new(request.clone());
26692665

26702666
if value.as_bool() == Some(false) {
26712667
return Ok(Some(ResolveResultOrCell::Value(
26722668
ResolveResult::primary_with_affecting_sources(
2673-
request_key,
2669+
RequestKey::new(request.clone()),
26742670
ResolveResultItem::Ignore,
26752671
refs,
26762672
),
@@ -2689,7 +2685,7 @@ async fn apply_in_package(
26892685
.with_fragment(fragment.clone()),
26902686
options,
26912687
)
2692-
.with_replaced_request_key(value.into(), request_key);
2688+
.with_replaced_request_key(value.into(), request.clone());
26932689
if options_value.collect_affecting_sources && !refs.is_empty() {
26942690
result = result.with_affecting_sources(refs.into_iter().map(|src| *src).collect());
26952691
}
@@ -2831,7 +2827,7 @@ async fn resolve_module_request(
28312827
fragment.clone(),
28322828
options,
28332829
)
2834-
.with_replaced_request_key(rcstr!("."), RequestKey::new(name.clone())),
2830+
.with_replaced_request_key(rcstr!("."), name.clone()),
28352831
);
28362832
}
28372833
FindPackageItem::PackageFile { name, file } => {
@@ -2848,7 +2844,7 @@ async fn resolve_module_request(
28482844
)
28492845
.await?
28502846
.into_cell()
2851-
.with_replaced_request_key(rcstr!("."), RequestKey::new(name.clone()));
2847+
.with_replaced_request_key(rcstr!("."), name.clone());
28522848
results.push(resolved_result)
28532849
}
28542850
}

turbopack/crates/turbopack-tracing/tests/node-file-trace/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@ integration/**/dist
44

55
!integration/**/node_modules
66
!integration/**/.pnpm
7+
8+
# Some unit cases need a checked-in node_modules to model a package layout
9+
!test/unit/**/node_modules
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const { test } = require('pkg')
2+
console.log(test)

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/helpers@1.0.0/node_modules/@scope/helpers/cjs/helper.cjs

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/helpers@1.0.0/node_modules/@scope/helpers/esm/helper.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/helpers@1.0.0/node_modules/@scope/helpers/package.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/node_modules/@scope/helpers

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/pkg@1.0.0/node_modules/@scope/helpers

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/module-sync-condition-cjs-nested-symlink/node_modules/.store/pkg@1.0.0/node_modules/pkg/index.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)