Skip to content

Commit 93c19fc

Browse files
committed
code cleanup, comment
1 parent a74574b commit 93c19fc

File tree

7 files changed

+65
-30
lines changed

7 files changed

+65
-30
lines changed

packages/next-swc/crates/next-api/src/app.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -519,19 +519,19 @@ impl AppEndpoint {
519519
async fn output(self: Vc<Self>) -> Result<Vc<AppEndpointOutput>> {
520520
let this = self.await?;
521521

522-
let (app_entry, process_client, process_ssr, api_route) = match this.ty {
522+
let (app_entry, process_client, process_ssr, has_client_side_assets) = match this.ty {
523523
AppEndpointType::Page { ty, loader_tree } => (
524524
self.app_page_entry(loader_tree),
525525
true,
526526
matches!(ty, AppPageEndpointType::Html),
527-
false,
527+
true,
528528
),
529529
// NOTE(alexkirsz) For routes, technically, a lot of the following code is not needed,
530530
// as we know we won't have any client references. However, for now, for simplicity's
531531
// sake, we just do the same thing as for pages.
532-
AppEndpointType::Route { path } => (self.app_route_entry(path), false, false, true),
532+
AppEndpointType::Route { path } => (self.app_route_entry(path), false, false, false),
533533
AppEndpointType::Metadata { metadata } => {
534-
(self.app_metadata_entry(metadata), false, false, true)
534+
(self.app_metadata_entry(metadata), false, false, false)
535535
}
536536
};
537537

@@ -614,9 +614,10 @@ impl AppEndpoint {
614614
NextRuntime::NodeJs => {
615615
Vc::upcast(this.app_project.project().server_chunking_context())
616616
}
617-
NextRuntime::Edge => {
618-
this.app_project.project().edge_chunking_context(api_route)
619-
}
617+
NextRuntime::Edge => this
618+
.app_project
619+
.project()
620+
.edge_chunking_context(has_client_side_assets),
620621
})
621622
} else {
622623
None
@@ -840,7 +841,10 @@ impl AppEndpoint {
840841
let endpoint_output = match runtime {
841842
NextRuntime::Edge => {
842843
// create edge chunks
843-
let chunking_context = this.app_project.project().edge_chunking_context(api_route);
844+
let chunking_context = this
845+
.app_project
846+
.project()
847+
.edge_chunking_context(has_client_side_assets);
844848
let mut evaluatable_assets = this
845849
.app_project
846850
.edge_rsc_runtime_entries()

packages/next-swc/crates/next-api/src/instrumentation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl InstrumentationEndpoint {
9595
};
9696
evaluatable_assets.push(evaluatable);
9797

98-
let edge_chunking_context = self.project.edge_chunking_context(true);
98+
let edge_chunking_context = self.project.edge_chunking_context(false);
9999

100100
let edge_files = edge_chunking_context.evaluated_chunk_group_assets(
101101
module.ident(),

packages/next-swc/crates/next-api/src/middleware.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ impl MiddlewareEndpoint {
9797
.context("Entry module must be evaluatable")?;
9898
evaluatable_assets.push(evaluatable);
9999

100-
let edge_chunking_context = self.project.edge_chunking_context(false);
100+
let edge_chunking_context = self.project.edge_chunking_context(true);
101101

102102
let edge_files = edge_chunking_context.evaluated_chunk_group_assets(
103103
module.ident(),

packages/next-swc/crates/next-api/src/pages.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ impl PageEndpoint {
795795
this.pages_project.ssr_module_context(),
796796
this.pages_project.edge_ssr_module_context(),
797797
this.pages_project.project().server_chunking_context(),
798-
this.pages_project.project().edge_chunking_context(false),
798+
this.pages_project.project().edge_chunking_context(true),
799799
this.pages_project.ssr_runtime_entries(),
800800
this.pages_project.edge_ssr_runtime_entries(),
801801
))
@@ -815,7 +815,7 @@ impl PageEndpoint {
815815
this.pages_project.ssr_data_module_context(),
816816
this.pages_project.edge_ssr_data_module_context(),
817817
this.pages_project.project().server_chunking_context(),
818-
this.pages_project.project().edge_chunking_context(false),
818+
this.pages_project.project().edge_chunking_context(true),
819819
this.pages_project.ssr_data_runtime_entries(),
820820
this.pages_project.edge_ssr_data_runtime_entries(),
821821
))
@@ -835,7 +835,7 @@ impl PageEndpoint {
835835
this.pages_project.api_module_context(),
836836
this.pages_project.edge_api_module_context(),
837837
this.pages_project.project().server_chunking_context(),
838-
this.pages_project.project().edge_chunking_context(true),
838+
this.pages_project.project().edge_chunking_context(false),
839839
this.pages_project.ssr_runtime_entries(),
840840
this.pages_project.edge_ssr_runtime_entries(),
841841
))

packages/next-swc/crates/next-api/src/project.rs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use indexmap::{map::Entry, IndexMap};
55
use next_core::{
66
all_assets_from_entries,
77
app_structure::find_app_dir,
8-
emit_assets, get_edge_chunking_context, get_edge_compile_time_info,
9-
get_edge_resolve_options_context,
8+
emit_assets, get_edge_chunking_context, get_edge_chunking_context_with_client_assets,
9+
get_edge_compile_time_info, get_edge_resolve_options_context,
1010
instrumentation::instrumentation_files,
1111
middleware::middleware_files,
1212
mode::NextMode,
@@ -571,20 +571,24 @@ impl Project {
571571
#[turbo_tasks::function]
572572
pub(super) fn edge_chunking_context(
573573
self: Vc<Self>,
574-
api_route: bool,
574+
client_assets: bool,
575575
) -> Result<Vc<Box<dyn EcmascriptChunkingContext>>> {
576-
Ok(get_edge_chunking_context(
577-
self.next_mode(),
578-
self.project_path(),
579-
self.node_root(),
580-
self.client_relative_path(),
581-
if api_route {
582-
Vc::cell(Some("blob:".to_string()))
583-
} else {
584-
self.next_config().computed_asset_prefix()
585-
},
586-
self.edge_compile_time_info().environment(),
587-
))
576+
Ok(if client_assets {
577+
get_edge_chunking_context_with_client_assets(
578+
self.next_mode(),
579+
self.project_path(),
580+
self.node_root(),
581+
self.client_relative_path(),
582+
self.next_config().computed_asset_prefix(),
583+
self.edge_compile_time_info().environment(),
584+
)
585+
} else {
586+
get_edge_chunking_context(
587+
self.project_path(),
588+
self.node_root(),
589+
self.edge_compile_time_info().environment(),
590+
)
591+
})
588592
}
589593

590594
/// Emit a telemetry event corresponding to [webpack configuration telemetry](https://github.com/vercel/next.js/blob/9da305fe320b89ee2f8c3cfb7ecbf48856368913/packages/next/src/build/webpack-config.ts#L2516)

packages/next-swc/crates/next-core/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ pub use app_segment_config::{
4646
};
4747
pub use emit::{all_assets_from_entries, emit_all_assets, emit_assets, emit_client_assets};
4848
pub use next_edge::context::{
49-
get_edge_chunking_context, get_edge_compile_time_info, get_edge_resolve_options_context,
49+
get_edge_chunking_context, get_edge_chunking_context_with_client_assets,
50+
get_edge_compile_time_info, get_edge_resolve_options_context,
5051
};
5152
pub use page_loader::{create_page_loader_entry_module, PageLoaderAsset};
5253
use turbopack_binding::{turbo, turbopack};

packages/next-swc/crates/next-core/src/next_edge/context.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ pub async fn get_edge_resolve_options_context(
149149
}
150150

151151
#[turbo_tasks::function]
152-
pub async fn get_edge_chunking_context(
152+
pub async fn get_edge_chunking_context_with_client_assets(
153153
mode: Vc<NextMode>,
154154
project_path: Vc<FileSystemPath>,
155155
node_root: Vc<FileSystemPath>,
@@ -177,3 +177,29 @@ pub async fn get_edge_chunking_context(
177177
.build(),
178178
))
179179
}
180+
181+
#[turbo_tasks::function]
182+
pub fn get_edge_chunking_context(
183+
project_path: Vc<FileSystemPath>,
184+
node_root: Vc<FileSystemPath>,
185+
environment: Vc<Environment>,
186+
) -> Vc<Box<dyn EcmascriptChunkingContext>> {
187+
let output_root = node_root.join("server/edge".to_string());
188+
Vc::upcast(
189+
BrowserChunkingContext::builder(
190+
project_path,
191+
output_root,
192+
output_root,
193+
output_root.join("chunks".to_string()),
194+
output_root.join("assets".to_string()),
195+
environment,
196+
)
197+
// Since one can't read files in edge directly, any asset need to be fetched
198+
// instead. This special blob url is handled by the custom fetch
199+
// implementation in the edge sandbox. It will respond with the
200+
// asset from the output directory.
201+
.asset_base_path(Vc::cell(Some("blob:server/edge/".to_string())))
202+
.reference_chunk_source_maps(should_debug("edge"))
203+
.build(),
204+
)
205+
}

0 commit comments

Comments
 (0)