Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ee6e35a

Browse files
authored
Omit unused encryptActionBoundArgs/decryptActionBoundArgs imports (#86015)
When a module does not include any `'use server'` or `'use cache'` closures that use variables from their outer scope, the imports for `encryptActionBoundArgs` and `decryptActionBoundArgs` are unnecessary. > [!TIP] > Review with hidden whitespace changes.
1 parent cff6a5d commit ee6e35a

File tree

47 files changed

+43
-77
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+43
-77
lines changed

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

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ pub fn server_actions<C: Comments>(
164164
reference_index: 0,
165165
in_module_level: true,
166166
should_track_names: false,
167+
has_server_reference_with_bound_args: false,
167168

168169
names: Default::default(),
169170
declared_idents: Default::default(),
@@ -228,6 +229,7 @@ struct ServerActions<C: Comments> {
228229
reference_index: u32,
229230
in_module_level: bool,
230231
should_track_names: bool,
232+
has_server_reference_with_bound_args: bool,
231233

232234
names: Vec<Name>,
233235
declared_idents: Vec<Ident>,
@@ -569,6 +571,7 @@ impl<C: Comments> ServerActions<C> {
569571
if ids_from_closure.is_empty() {
570572
Box::new(action_ident.clone().into())
571573
} else {
574+
self.has_server_reference_with_bound_args = true;
572575
Box::new(bind_args_to_ident(
573576
action_ident.clone(),
574577
ids_from_closure
@@ -697,6 +700,7 @@ impl<C: Comments> ServerActions<C> {
697700
if ids_from_closure.is_empty() {
698701
Box::new(action_ident.clone().into())
699702
} else {
703+
self.has_server_reference_with_bound_args = true;
700704
Box::new(bind_args_to_ident(
701705
action_ident.clone(),
702706
ids_from_closure
@@ -784,6 +788,7 @@ impl<C: Comments> ServerActions<C> {
784788
if bound_args.is_empty() {
785789
Box::new(cache_ident.clone().into())
786790
} else {
791+
self.has_server_reference_with_bound_args = true;
787792
Box::new(bind_args_to_ident(
788793
cache_ident.clone(),
789794
bound_args,
@@ -859,6 +864,7 @@ impl<C: Comments> ServerActions<C> {
859864
if bound_args.is_empty() {
860865
Box::new(cache_ident.clone().into())
861866
} else {
867+
self.has_server_reference_with_bound_args = true;
862868
Box::new(bind_args_to_ident(
863869
cache_ident.clone(),
864870
bound_args,
@@ -2051,37 +2057,42 @@ impl<C: Comments> VisitMut for ServerActions<C> {
20512057
phase: Default::default(),
20522058
})));
20532059

2054-
// Encryption and decryption only happens on the server layer.
2055-
// import { encryptActionBoundArgs, decryptActionBoundArgs } from
2056-
// 'private-next-rsc-action-encryption'
2057-
new.push(ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl {
2058-
span: DUMMY_SP,
2059-
specifiers: vec![
2060-
ImportSpecifier::Named(ImportNamedSpecifier {
2061-
span: DUMMY_SP,
2062-
local: quote_ident!("encryptActionBoundArgs").into(),
2063-
imported: None,
2064-
is_type_only: false,
2065-
}),
2066-
ImportSpecifier::Named(ImportNamedSpecifier {
2060+
let mut import_count = 1;
2061+
2062+
// Encryption and decryption only happens when there are bound arguments.
2063+
if self.has_server_reference_with_bound_args {
2064+
// import { encryptActionBoundArgs, decryptActionBoundArgs } from
2065+
// 'private-next-rsc-action-encryption'
2066+
new.push(ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl {
2067+
span: DUMMY_SP,
2068+
specifiers: vec![
2069+
ImportSpecifier::Named(ImportNamedSpecifier {
2070+
span: DUMMY_SP,
2071+
local: quote_ident!("encryptActionBoundArgs").into(),
2072+
imported: None,
2073+
is_type_only: false,
2074+
}),
2075+
ImportSpecifier::Named(ImportNamedSpecifier {
2076+
span: DUMMY_SP,
2077+
local: quote_ident!("decryptActionBoundArgs").into(),
2078+
imported: None,
2079+
is_type_only: false,
2080+
}),
2081+
],
2082+
src: Box::new(Str {
20672083
span: DUMMY_SP,
2068-
local: quote_ident!("decryptActionBoundArgs").into(),
2069-
imported: None,
2070-
is_type_only: false,
2084+
value: atom!("private-next-rsc-action-encryption"),
2085+
raw: None,
20712086
}),
2072-
],
2073-
src: Box::new(Str {
2074-
span: DUMMY_SP,
2075-
value: atom!("private-next-rsc-action-encryption"),
2076-
raw: None,
2077-
}),
2078-
type_only: false,
2079-
with: None,
2080-
phase: Default::default(),
2081-
})));
2087+
type_only: false,
2088+
with: None,
2089+
phase: Default::default(),
2090+
})));
2091+
import_count += 1;
2092+
}
20822093

2083-
// Make it the first item
2084-
new.rotate_right(2);
2094+
// Make them the first items
2095+
new.rotate_right(import_count);
20852096
}
20862097

20872098
if self.has_action || self.has_cache {

crates/next-custom-transforms/tests/errors/server-actions/server-graph/1/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00ab21efdafbe611287bc25c0462b1e0510d13e48b":"foo"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
export function foo() {}
43
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
54
ensureServerEntryExports([

crates/next-custom-transforms/tests/errors/server-actions/server-graph/2/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00ac840dcaf5e8197cb02b7f3a43c119b7a770b272":"bar"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
'use strict';
43
export function bar() {}
54
import { ensureServerEntryExports } from "private-next-rsc-action-validate";

crates/next-custom-transforms/tests/errors/server-actions/server-graph/6/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00c18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
export default $$RSC_SERVER_ACTION_0 = ()=>{};
43
var $$RSC_SERVER_ACTION_0;
54
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {

crates/next-custom-transforms/tests/errors/server-actions/server-graph/8/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"006a88810ecce4a4e8b59d53b8327d7e98bbf251d7":"$$RSC_SERVER_ACTION_0"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
export const $$RSC_SERVER_ACTION_0 = async function foo() {
43
'use strict';
54
};

crates/next-custom-transforms/tests/fixture/next-font-with-directive/use-cache/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"c0dd5bb6fef67f5ab84327f5164ac2c3111a159337":"$$RSC_SERVER_CACHE_0"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
43
import { cache as $$reactCache__ } from "react";
54
import React from 'react';

crates/next-custom-transforms/tests/fixture/next-font-with-directive/use-server/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00f8b140eeaaaa6c987593016c19b3fe41bc812c62":"myCoolServerAction"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
import React from 'react';
43
import inter from '@next/font/google/target.css?{"path":"app/test.tsx","import":"Inter","arguments":[],"variableName":"inter"}';
54
export async function myCoolServerAction() {

crates/next-custom-transforms/tests/fixture/server-actions/server-graph/10/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00c18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
export default async function foo() {}
43
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
54
ensureServerEntryExports([

crates/next-custom-transforms/tests/fixture/server-actions/server-graph/11/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"00c18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
export default async function $$RSC_SERVER_ACTION_0() {}
43
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
54
value: "default"

crates/next-custom-transforms/tests/fixture/server-actions/server-graph/12/output.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* __next_internal_action_entry_do_not_use__ {"7fc18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
2-
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
32
async function foo() {}
43
export default foo;
54
import { ensureServerEntryExports } from "private-next-rsc-action-validate";

0 commit comments

Comments
 (0)