Skip to content

Commit 791106f

Browse files
committed
Fix writing location for manifests
1 parent 846f2cb commit 791106f

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,7 @@ impl AppEndpoint {
684684
let (loader, manifest) = create_server_actions_manifest(
685685
app_entry.rsc_entry,
686686
node_root,
687+
&app_entry.pathname,
687688
&app_entry.original_name,
688689
NextRuntime::NodeJs,
689690
Vc::upcast(this.app_project.edge_rsc_module_context()),
@@ -803,6 +804,7 @@ impl AppEndpoint {
803804
let (loader, manifest) = create_server_actions_manifest(
804805
app_entry.rsc_entry,
805806
node_root,
807+
&app_entry.pathname,
806808
&app_entry.original_name,
807809
NextRuntime::NodeJs,
808810
Vc::upcast(this.app_project.rsc_module_context()),

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

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use indexmap::IndexMap;
55
use indoc::writedoc;
66
use next_core::{
77
next_manifests::{ActionLayer, ActionManifestWorkerEntry, ServerReferenceManifest},
8-
util::NextRuntime,
8+
util::{get_asset_prefix_from_pathname, NextRuntime},
99
};
1010
use next_swc::server_actions::parse_server_actions;
1111
use turbo_tasks::{
@@ -39,7 +39,8 @@ use turbopack_binding::{
3939
pub(crate) async fn create_server_actions_manifest(
4040
entry: Vc<Box<dyn EcmascriptChunkPlaceable>>,
4141
node_root: Vc<FileSystemPath>,
42-
app_page_name: &str,
42+
pathname: &str,
43+
page_name: &str,
4344
runtime: NextRuntime,
4445
asset_context: Vc<Box<dyn AssetContext>>,
4546
chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
@@ -54,7 +55,8 @@ pub(crate) async fn create_server_actions_manifest(
5455
if !*enable_server_actions.await? {
5556
let manifest = build_manifest(
5657
node_root,
57-
app_page_name,
58+
pathname,
59+
page_name,
5860
runtime,
5961
ModuleActionMap::empty(),
6062
Default::default(),
@@ -64,15 +66,15 @@ pub(crate) async fn create_server_actions_manifest(
6466
}
6567

6668
let actions = get_actions(Vc::upcast(entry));
67-
let loader =
68-
build_server_actions_loader(node_root, app_page_name, actions, asset_context).await?;
69+
let loader = build_server_actions_loader(node_root, page_name, actions, asset_context).await?;
6970
let Some(evaluable) = Vc::try_resolve_sidecast::<Box<dyn EvaluatableAsset>>(loader).await?
7071
else {
7172
bail!("loader module must be evaluatable");
7273
};
7374

7475
let loader_id = loader.as_chunk_item(chunking_context).id().to_string();
75-
let manifest = build_manifest(node_root, app_page_name, runtime, actions, loader_id).await?;
76+
let manifest =
77+
build_manifest(node_root, pathname, page_name, runtime, actions, loader_id).await?;
7678
Ok((Some(evaluable), manifest))
7779
}
7880

@@ -84,7 +86,7 @@ pub(crate) async fn create_server_actions_manifest(
8486
/// client and present inside the paired manifest.
8587
async fn build_server_actions_loader(
8688
node_root: Vc<FileSystemPath>,
87-
app_page_name: &str,
89+
page_name: &str,
8890
actions: Vc<ModuleActionMap>,
8991
asset_context: Vc<Box<dyn AssetContext>>,
9092
) -> Result<Vc<Box<dyn EcmascriptChunkPlaceable>>> {
@@ -111,7 +113,7 @@ async fn build_server_actions_loader(
111113
}
112114
write!(contents, "}});")?;
113115

114-
let output_path = node_root.join(format!("server/app{app_page_name}/actions.js"));
116+
let output_path = node_root.join(format!("server/app{page_name}/actions.js"));
115117
let file = File::from(contents.build());
116118
let source = VirtualSource::new(output_path, AssetContent::file(file.into()));
117119
let module = asset_context.process(
@@ -132,13 +134,15 @@ async fn build_server_actions_loader(
132134
/// module id which exports a function using that hashed name.
133135
async fn build_manifest(
134136
node_root: Vc<FileSystemPath>,
135-
app_page_name: &str,
137+
pathname: &str,
138+
page_name: &str,
136139
runtime: NextRuntime,
137140
actions: Vc<ModuleActionMap>,
138141
loader_id: Vc<String>,
139142
) -> Result<Vc<Box<dyn OutputAsset>>> {
143+
let manifest_path_prefix = get_asset_prefix_from_pathname(pathname);
140144
let manifest_path = node_root.join(format!(
141-
"server/app{app_page_name}/page/server-reference-manifest.json",
145+
"server/app{manifest_path_prefix}/page/server-reference-manifest.json",
142146
));
143147
let mut manifest = ServerReferenceManifest {
144148
..Default::default()
@@ -156,12 +160,12 @@ async fn build_manifest(
156160
for hash in value.keys() {
157161
let entry = mapping.entry(hash.clone()).or_default();
158162
entry.workers.insert(
159-
format!("app{app_page_name}"),
163+
format!("app{page_name}"),
160164
ActionManifestWorkerEntry::String(loader_id_value.clone_value()),
161165
);
162166
entry
163167
.layer
164-
.insert(format!("app{app_page_name}"), ActionLayer::Rsc);
168+
.insert(format!("app{page_name}"), ActionLayer::Rsc);
165169
}
166170
}
167171

0 commit comments

Comments
 (0)