Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion crates/next-core/src/next_edge/unsupported.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ impl ImportMappingReplacement for NextEdgeUnsupportedModuleReplacer {
unsupported_module_source(lookup_path.root().owned().await?, module.clone())
.to_resolved()
.await?;
Ok(ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(source))).cell())
Ok(ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(source)).resolved_cell(),
)
.cell())
} else {
Ok(ImportMapResult::NoEntry.cell())
}
Expand Down
19 changes: 15 additions & 4 deletions crates/next-core/src/next_font/google/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,10 @@ impl NextFontGoogleReplacer {
)
.cell()),
).to_resolved().await?;
Ok(ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(js_asset))).cell())
Ok(ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(js_asset)).resolved_cell(),
)
.cell())
}
}

Expand Down Expand Up @@ -336,7 +339,10 @@ impl NextFontGoogleCssModuleReplacer {
.to_resolved()
.await?;

Ok(ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(css_asset))).cell())
Ok(ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(css_asset)).resolved_cell(),
)
.cell())
}
}

Expand Down Expand Up @@ -454,7 +460,9 @@ impl ImportMappingReplacement for NextFontGoogleFontFileReplacer {
fetch_from_google_fonts(*self.fetch_client, url.into(), font_virtual_path.clone())
.await?
else {
return Ok(ImportMapResult::Result(ResolveResult::unresolvable()).cell());
return Ok(
ImportMapResult::Result(ResolveResult::unresolvable().resolved_cell()).cell(),
);
};

let font_source = VirtualSource::new(
Expand All @@ -464,7 +472,10 @@ impl ImportMappingReplacement for NextFontGoogleFontFileReplacer {
.to_resolved()
.await?;

Ok(ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(font_source))).cell())
Ok(ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(font_source)).resolved_cell(),
)
.cell())
}
}

Expand Down
36 changes: 21 additions & 15 deletions crates/next-core/src/next_font/local/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,12 @@ impl BeforeResolvePlugin for NextFontLocalResolvePlugin {
.resolved_cell()
.emit();

return Ok(ResolveResultOption::some(*ResolveResult::primary(
ResolveResultItem::Error(ResolvedVc::cell(err.to_string().into())),
)));
return Ok(ResolveResultOption::some(
ResolveResult::primary(ResolveResultItem::Error(ResolvedVc::cell(
err.to_string().into(),
)))
.cell(),
));
}
FontFallbackResult::Ok(font_fallbacks) => *font_fallbacks,
};
Expand Down Expand Up @@ -166,9 +169,9 @@ impl BeforeResolvePlugin for NextFontLocalResolvePlugin {
.to_resolved()
.await?;

Ok(ResolveResultOption::some(*ResolveResult::source(
ResolvedVc::upcast(js_asset),
)))
Ok(ResolveResultOption::some(
ResolveResult::source(ResolvedVc::upcast(js_asset)).cell(),
))
}
"@vercel/turbopack-next/internal/font/local/cssmodule.module.css" => {
let request_hash = get_request_hash(query);
Expand All @@ -187,9 +190,12 @@ impl BeforeResolvePlugin for NextFontLocalResolvePlugin {
.resolved_cell()
.emit();

return Ok(ResolveResultOption::some(*ResolveResult::primary(
ResolveResultItem::Error(ResolvedVc::cell(err.to_string().into())),
)));
return Ok(ResolveResultOption::some(
ResolveResult::primary(ResolveResultItem::Error(ResolvedVc::cell(
err.to_string().into(),
)))
.cell(),
));
}
FontFallbackResult::Ok(font_fallbacks) => **font_fallbacks,
};
Expand All @@ -208,9 +214,9 @@ impl BeforeResolvePlugin for NextFontLocalResolvePlugin {
.to_resolved()
.await?;

Ok(ResolveResultOption::some(*ResolveResult::source(
ResolvedVc::upcast(css_asset),
)))
Ok(ResolveResultOption::some(
ResolveResult::source(ResolvedVc::upcast(css_asset)).cell(),
))
}
"@vercel/turbopack-next/internal/font/local/font" => {
let NextFontLocalFontFileOptions {
Expand Down Expand Up @@ -240,9 +246,9 @@ impl BeforeResolvePlugin for NextFontLocalResolvePlugin {
.to_resolved()
.await?;

Ok(ResolveResultOption::some(*ResolveResult::source(
ResolvedVc::upcast(font_source),
)))
Ok(ResolveResultOption::some(
ResolveResult::source(ResolvedVc::upcast(font_source)).cell(),
))
}
_ => Ok(ResolveResultOption::none()),
}
Expand Down
10 changes: 6 additions & 4 deletions crates/next-core/src/next_root_params/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,9 @@ impl NextRootParamsMapper {
.to_resolved()
.await?;

let import_map_result =
ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(virtual_source)));
let import_map_result = ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(virtual_source)).resolved_cell(),
);
Ok(import_map_result.cell())
}

Expand Down Expand Up @@ -222,8 +223,9 @@ impl NextRootParamsMapper {
.to_resolved()
.await?;

let import_map_result =
ImportMapResult::Result(ResolveResult::source(ResolvedVc::upcast(virtual_source)));
let import_map_result = ImportMapResult::Result(
ResolveResult::source(ResolvedVc::upcast(virtual_source)).resolved_cell(),
);
Ok(import_map_result.cell())
}
}
Expand Down
9 changes: 5 additions & 4 deletions crates/next-core/src/next_server/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -322,14 +322,15 @@ impl AfterResolvePlugin for ExternalCjsModulesResolvePlugin {

let target = result_from_original_location.ident().path().owned().await?;

Ok(ResolveResultOption::some(*ResolveResult::primary(
ResolveResultItem::External {
Ok(ResolveResultOption::some(
ResolveResult::primary(ResolveResultItem::External {
name: request_str.into(),
ty: external_type,
traced: ExternalTraced::Traced,
target: Some(target),
},
)))
})
.cell(),
))
}
}

Expand Down
36 changes: 23 additions & 13 deletions crates/next-core/src/next_shared/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,12 @@ impl BeforeResolvePlugin for InvalidImportResolvePlugin {
.resolved_cell()
.emit();

ResolveResultOption::some(*ResolveResult::primary(ResolveResultItem::Error(
ResolvedVc::cell(self.message.join("\n").into()),
)))
ResolveResultOption::some(
ResolveResult::primary(ResolveResultItem::Error(ResolvedVc::cell(
self.message.join("\n").into(),
)))
.cell(),
)
}
}

Expand Down Expand Up @@ -249,14 +252,15 @@ impl AfterResolvePlugin for NextExternalResolvePlugin {
// Replace '/esm/' with '/' to match the CJS version of the file.
let specifier: RcStr = specifier.replace("/esm/", "/").into();

Ok(Vc::cell(Some(ResolveResult::primary(
ResolveResultItem::External {
Ok(Vc::cell(Some(
ResolveResult::primary(ResolveResultItem::External {
name: specifier.clone(),
ty: ExternalType::CommonJs,
traced: ExternalTraced::Traced,
target: None,
},
))))
})
.resolved_cell(),
)))
}
}

Expand Down Expand Up @@ -328,9 +332,12 @@ impl AfterResolvePlugin for NextNodeSharedRuntimeResolvePlugin {
.await?
.join(&format!("{base}/{resource_request}"))?;

Ok(Vc::cell(Some(ResolveResult::source(ResolvedVc::upcast(
FileSource::new(new_path).to_resolved().await?,
)))))
Ok(Vc::cell(Some(
ResolveResult::source(ResolvedVc::upcast(
FileSource::new(new_path).to_resolved().await?,
))
.resolved_cell(),
)))
}
}

Expand Down Expand Up @@ -430,8 +437,11 @@ impl AfterResolvePlugin for NextSharedRuntimeResolvePlugin {
let raw_fs_path = fs_path.clone();
let modified_path = raw_fs_path.path.replace("next/dist/esm/", "next/dist/");
let new_path = fs_path.root().await?.join(&modified_path)?;
Ok(Vc::cell(Some(ResolveResult::source(ResolvedVc::upcast(
FileSource::new(new_path).to_resolved().await?,
)))))
Ok(Vc::cell(Some(
ResolveResult::source(ResolvedVc::upcast(
FileSource::new(new_path).to_resolved().await?,
))
.resolved_cell(),
)))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,28 @@ describe('SegmentPrefixRSCPathnameNormalizer', () => {
segmentPath: '/_tree',
})
})

it('should extract segment prefetch paths for catch-all params named segments', () => {
const normalizer = new SegmentPrefixRSCPathnameNormalizer()
const result = normalizer.extract(
'/catch/[...segments].segments/catch/$c$segments/__PAGE__.segment.rsc'
)

expect(result).toEqual({
originalPathname: '/catch/[...segments]',
segmentPath: '/catch/$c$segments/__PAGE__',
})
})

it('should still extract segment prefetch paths for other catch-all param names', () => {
const normalizer = new SegmentPrefixRSCPathnameNormalizer()
const result = normalizer.extract(
'/catch/[...foobar].segments/catch/$c$foobar/__PAGE__.segment.rsc'
)

expect(result).toEqual({
originalPathname: '/catch/[...foobar]',
segmentPath: '/catch/$c$foobar/__PAGE__',
})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import {
RSC_SEGMENT_SUFFIX,
RSC_SEGMENTS_DIR_SUFFIX,
} from '../../../lib/constants'
import { escapeStringRegexp } from '../../../shared/lib/escape-regexp'

const PATTERN = new RegExp(
`^(/.*)${RSC_SEGMENTS_DIR_SUFFIX}(/.*)${RSC_SEGMENT_SUFFIX}$`
`^(/.*)${escapeStringRegexp(RSC_SEGMENTS_DIR_SUFFIX)}(/.*)${escapeStringRegexp(RSC_SEGMENT_SUFFIX)}$`
)

export class SegmentPrefixRSCPathnameNormalizer implements PathnameNormalizer {
Expand Down
Loading
Loading