Skip to content

Commit c4caf68

Browse files
committed
Don't register invalid server action exports
1 parent 01aef1c commit c4caf68

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

crates/next-custom-transforms/src/transforms/server_actions.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,15 @@ impl<C: Comments> VisitMut for ServerActions<C> {
11261126
.cloned();
11271127

11281128
if !self.validate_async_function(f.is_async, f.span, fn_name.as_ref(), &directive) {
1129+
// If this is an exported function that failed validation, remove it from
1130+
// export_name_by_local_id so the post-pass doesn't register it.
1131+
if self.current_export_name.is_some() {
1132+
if let Some(ref invalid_fn_name) = fn_name {
1133+
self.export_name_by_local_id
1134+
.swap_remove(&invalid_fn_name.to_id());
1135+
}
1136+
}
1137+
11291138
return;
11301139
}
11311140

@@ -1336,6 +1345,15 @@ impl<C: Comments> VisitMut for ServerActions<C> {
13361345
self.arrow_or_fn_expr_ident.as_ref(),
13371346
&directive,
13381347
) {
1348+
// If this is an exported arrow function that failed validation, remove it from
1349+
// export_name_by_local_id so the post-pass doesn't register it.
1350+
if self.current_export_name.is_some() {
1351+
if let Some(ref arrow_ident) = self.arrow_or_fn_expr_ident {
1352+
self.export_name_by_local_id
1353+
.swap_remove(&arrow_ident.to_id());
1354+
}
1355+
}
1356+
13391357
return;
13401358
}
13411359

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1 @@
1-
/* __next_internal_action_entry_do_not_use__ {"7fab21efdafbe611287bc25c0462b1e0510d13e48b":"foo"} */ import { registerServerReference } from "private-next-rsc-server-reference";
21
export function foo() {}
3-
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
4-
ensureServerEntryExports([
5-
foo
6-
]);
7-
registerServerReference(foo, "7fab21efdafbe611287bc25c0462b1e0510d13e48b", null);
Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,2 @@
1-
/* __next_internal_action_entry_do_not_use__ {"7fac840dcaf5e8197cb02b7f3a43c119b7a770b272":"bar"} */ import { registerServerReference } from "private-next-rsc-server-reference";
21
'use strict';
32
export function bar() {}
4-
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
5-
ensureServerEntryExports([
6-
bar
7-
]);
8-
registerServerReference(bar, "7fac840dcaf5e8197cb02b7f3a43c119b7a770b272", null);

0 commit comments

Comments
 (0)