Skip to content

Commit ffc326c

Browse files
authored
codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 6) (#71941)
Generated using a version of https://github.com/vercel/turbopack-resolved-vc-codemod . This uses Anthropic Claude Sonnet 3.5 for more complicated errors we don't have hardcoded logic for. - Part 1: #70927 - Part 2: #71172 - Part 3: #71665 - Part 4: #71804 - Part 5: #71861 Closes PACK-3342
1 parent 33f01fb commit ffc326c

File tree

19 files changed

+127
-95
lines changed

19 files changed

+127
-95
lines changed

crates/next-api/src/middleware.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use next_core::{
88
util::{parse_config_from_source, MiddlewareMatcherKind},
99
};
1010
use tracing::Instrument;
11-
use turbo_tasks::{Completion, RcStr, Value, Vc};
11+
use turbo_tasks::{Completion, RcStr, ResolvedVc, Value, Vc};
1212
use turbo_tasks_fs::{self, File, FileContent, FileSystemPath};
1313
use turbopack_core::{
1414
asset::AssetContent,
@@ -36,8 +36,8 @@ pub struct MiddlewareEndpoint {
3636
project: Vc<Project>,
3737
asset_context: Vc<Box<dyn AssetContext>>,
3838
source: Vc<Box<dyn Source>>,
39-
app_dir: Option<Vc<FileSystemPath>>,
40-
ecmascript_client_reference_transition_name: Option<Vc<RcStr>>,
39+
app_dir: Option<ResolvedVc<FileSystemPath>>,
40+
ecmascript_client_reference_transition_name: Option<ResolvedVc<RcStr>>,
4141
}
4242

4343
#[turbo_tasks::value_impl]
@@ -47,8 +47,8 @@ impl MiddlewareEndpoint {
4747
project: Vc<Project>,
4848
asset_context: Vc<Box<dyn AssetContext>>,
4949
source: Vc<Box<dyn Source>>,
50-
app_dir: Option<Vc<FileSystemPath>>,
51-
ecmascript_client_reference_transition_name: Option<Vc<RcStr>>,
50+
app_dir: Option<ResolvedVc<FileSystemPath>>,
51+
ecmascript_client_reference_transition_name: Option<ResolvedVc<RcStr>>,
5252
) -> Vc<Self> {
5353
Self {
5454
project,
@@ -85,9 +85,11 @@ impl MiddlewareEndpoint {
8585

8686
let mut evaluatable_assets = get_server_runtime_entries(
8787
Value::new(ServerContextType::Middleware {
88-
app_dir: self.app_dir,
88+
app_dir: self.app_dir.as_deref().copied(),
8989
ecmascript_client_reference_transition_name: self
90-
.ecmascript_client_reference_transition_name,
90+
.ecmascript_client_reference_transition_name
91+
.as_deref()
92+
.copied(),
9193
}),
9294
self.project.next_mode(),
9395
)

crates/next-api/src/pages.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ impl PagesProject {
139139
Ok(())
140140
}
141141

142-
if let Some(api) = api {
142+
if let Some(api) = *api {
143143
add_dir_to_routes(&mut routes, *api, |pathname, original_name, page| {
144144
Route::PageApi {
145145
endpoint: Vc::upcast(PageEndpoint::new(
@@ -174,7 +174,7 @@ impl PagesProject {
174174
)),
175175
};
176176

177-
if let Some(pages) = pages {
177+
if let Some(pages) = *pages {
178178
add_dir_to_routes(&mut routes, *pages, make_page_route).await?;
179179
}
180180

crates/next-core/src/app_page_loader_tree.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ impl AppPageLoaderTreeBuilder {
344344
.await?;
345345
self.write_modules_entry(AppDirModuleType::DefaultPage, *default)
346346
.await?;
347-
self.write_modules_entry(AppDirModuleType::GlobalError, *global_error)
347+
self.write_modules_entry(AppDirModuleType::GlobalError, global_error.map(|err| *err))
348348
.await?;
349349

350350
let modules_code = replace(&mut self.loader_tree_code, temp_loader_tree_code);
@@ -373,7 +373,7 @@ impl AppPageLoaderTreeBuilder {
373373
if let Some(global_error) = modules.global_error {
374374
let module = self
375375
.base
376-
.process_source(Vc::upcast(FileSource::new(global_error)));
376+
.process_source(Vc::upcast(FileSource::new(*global_error)));
377377
self.base.inner_assets.insert(GLOBAL_ERROR.into(), module);
378378
};
379379

crates/next-core/src/app_structure.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub struct AppDirModules {
3636
#[serde(skip_serializing_if = "Option::is_none")]
3737
pub error: Option<Vc<FileSystemPath>>,
3838
#[serde(skip_serializing_if = "Option::is_none")]
39-
pub global_error: Option<Vc<FileSystemPath>>,
39+
pub global_error: Option<ResolvedVc<FileSystemPath>>,
4040
#[serde(skip_serializing_if = "Option::is_none")]
4141
pub loading: Option<Vc<FileSystemPath>>,
4242
#[serde(skip_serializing_if = "Option::is_none")]
@@ -46,7 +46,7 @@ pub struct AppDirModules {
4646
#[serde(skip_serializing_if = "Option::is_none")]
4747
pub default: Option<Vc<FileSystemPath>>,
4848
#[serde(skip_serializing_if = "Option::is_none")]
49-
pub route: Option<Vc<FileSystemPath>>,
49+
pub route: Option<ResolvedVc<FileSystemPath>>,
5050
#[serde(skip_serializing_if = "Metadata::is_empty", default)]
5151
pub metadata: Metadata,
5252
}
@@ -199,7 +199,7 @@ impl GlobalMetadata {
199199
#[derive(Debug)]
200200
pub struct DirectoryTree {
201201
/// key is e.g. "dashboard", "(dashboard)", "@slot"
202-
pub subdirectories: BTreeMap<RcStr, Vc<DirectoryTree>>,
202+
pub subdirectories: BTreeMap<RcStr, ResolvedVc<DirectoryTree>>,
203203
pub modules: AppDirModules,
204204
}
205205

@@ -302,12 +302,12 @@ async fn get_directory_tree_internal(
302302
"page" => modules.page = Some(*file),
303303
"layout" => modules.layout = Some(*file),
304304
"error" => modules.error = Some(*file),
305-
"global-error" => modules.global_error = Some(*file),
305+
"global-error" => modules.global_error = Some(file),
306306
"loading" => modules.loading = Some(*file),
307307
"template" => modules.template = Some(*file),
308308
"not-found" => modules.not_found = Some(*file),
309309
"default" => modules.default = Some(*file),
310-
"route" => modules.route = Some(*file),
310+
"route" => modules.route = Some(file),
311311
_ => {}
312312
}
313313
}
@@ -363,7 +363,9 @@ async fn get_directory_tree_internal(
363363
DirectoryEntry::Directory(dir) => {
364364
// appDir ignores paths starting with an underscore
365365
if !basename.starts_with('_') {
366-
let result = get_directory_tree(*dir, page_extensions);
366+
let result = get_directory_tree(*dir, page_extensions)
367+
.to_resolved()
368+
.await?;
367369
subdirectories.insert(basename.clone(), result);
368370
}
369371
}
@@ -1232,7 +1234,7 @@ async fn directory_tree_to_entrypoints_internal_untraced(
12321234
app_dir,
12331235
global_metadata,
12341236
subdir_name.clone(),
1235-
subdirectory,
1237+
*subdirectory,
12361238
child_app_page.clone(),
12371239
*root_layouts,
12381240
)

crates/next-core/src/next_client_reference/visit_client_reference.rs

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use turbo_tasks::{
77
debug::ValueDebugFormat,
88
graph::{AdjacencyMap, GraphTraversal, Visit, VisitControlFlow, VisitedNodes},
99
trace::TraceRawVcs,
10-
FxIndexMap, FxIndexSet, RcStr, ReadRef, TryJoinIterExt, ValueToString, Vc,
10+
FxIndexMap, FxIndexSet, RcStr, ReadRef, ResolvedVc, TryJoinIterExt, ValueToString, Vc,
1111
};
1212
use turbo_tasks_fs::FileSystemPath;
1313
use turbopack::css::CssModuleAsset;
@@ -121,7 +121,7 @@ impl ClientReferenceGraphResult {
121121

122122
#[turbo_tasks::function]
123123
pub async fn client_reference_graph(
124-
entries: Vec<Vc<Box<dyn Module>>>,
124+
entries: Vec<ResolvedVc<Box<dyn Module>>>,
125125
visited_nodes: Vc<VisitedClientReferenceGraphNodes>,
126126
) -> Result<Vc<ClientReferenceGraphResult>> {
127127
async move {
@@ -143,11 +143,11 @@ pub async fn client_reference_graph(
143143
.map(|module| async move {
144144
Ok(VisitClientReferenceNode {
145145
state: if let Some(server_component) =
146-
Vc::try_resolve_downcast_type::<NextServerComponentModule>(module)
146+
ResolvedVc::try_downcast_type::<NextServerComponentModule>(module)
147147
.await?
148148
{
149149
VisitClientReferenceNodeState::InServerComponent {
150-
server_component,
150+
server_component: *server_component,
151151
}
152152
} else {
153153
VisitClientReferenceNodeState::Entry {
@@ -190,10 +190,10 @@ pub async fn client_reference_graph(
190190
}
191191
}
192192
VisitClientReferenceNodeType::ServerUtilEntry(server_util, _) => {
193-
server_utils.push(*server_util);
193+
server_utils.push(**server_util);
194194
}
195195
VisitClientReferenceNodeType::ServerComponentEntry(server_component, _) => {
196-
server_component_entries.push(*server_component);
196+
server_component_entries.push(**server_component);
197197
}
198198
}
199199
}
@@ -219,7 +219,7 @@ pub struct ServerEntries {
219219
}
220220

221221
#[turbo_tasks::function]
222-
pub async fn find_server_entries(entry: Vc<Box<dyn Module>>) -> Result<Vc<ServerEntries>> {
222+
pub async fn find_server_entries(entry: ResolvedVc<Box<dyn Module>>) -> Result<Vc<ServerEntries>> {
223223
let graph = AdjacencyMap::new()
224224
.skip_duplicates()
225225
.visit(
@@ -244,10 +244,10 @@ pub async fn find_server_entries(entry: Vc<Box<dyn Module>>) -> Result<Vc<Server
244244
for node in graph.reverse_topological() {
245245
match &node.ty {
246246
VisitClientReferenceNodeType::ServerUtilEntry(server_util, _) => {
247-
server_utils.push(*server_util);
247+
server_utils.push(**server_util);
248248
}
249249
VisitClientReferenceNodeType::ServerComponentEntry(server_component, _) => {
250-
server_component_entries.push(*server_component);
250+
server_component_entries.push(**server_component);
251251
}
252252
VisitClientReferenceNodeType::Internal(_, _)
253253
| VisitClientReferenceNodeType::ClientReference(_, _) => {}
@@ -303,9 +303,9 @@ impl VisitClientReferenceNodeState {
303303
)]
304304
enum VisitClientReferenceNodeType {
305305
ClientReference(ClientReference, ReadRef<RcStr>),
306-
ServerComponentEntry(Vc<NextServerComponentModule>, ReadRef<RcStr>),
307-
ServerUtilEntry(Vc<Box<dyn Module>>, ReadRef<RcStr>),
308-
Internal(Vc<Box<dyn Module>>, ReadRef<RcStr>),
306+
ServerComponentEntry(ResolvedVc<NextServerComponentModule>, ReadRef<RcStr>),
307+
ServerUtilEntry(ResolvedVc<Box<dyn Module>>, ReadRef<RcStr>),
308+
Internal(ResolvedVc<Box<dyn Module>>, ReadRef<RcStr>),
309309
}
310310

311311
impl Visit<VisitClientReferenceNode> for VisitClientReference {
@@ -343,30 +343,32 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
343343
VisitClientReferenceNodeType::ClientReference(..) => return Ok(vec![]),
344344
VisitClientReferenceNodeType::Internal(module, _) => module,
345345
VisitClientReferenceNodeType::ServerUtilEntry(module, _) => module,
346-
VisitClientReferenceNodeType::ServerComponentEntry(module, _) => Vc::upcast(module),
346+
VisitClientReferenceNodeType::ServerComponentEntry(module, _) => {
347+
ResolvedVc::upcast(module)
348+
}
347349
};
348350

349-
let referenced_modules = primary_referenced_modules(parent_module).await?;
351+
let referenced_modules = primary_referenced_modules(*parent_module).await?;
350352

351353
let referenced_modules = referenced_modules.iter().map(|module| async move {
352-
let module = module.resolve().await?;
354+
let module = module.to_resolved().await?;
353355
if let Some(client_reference_module) =
354-
Vc::try_resolve_downcast_type::<EcmascriptClientReferenceModule>(module).await?
356+
ResolvedVc::try_downcast_type::<EcmascriptClientReferenceModule>(module).await?
355357
{
356358
return Ok(VisitClientReferenceNode {
357359
state: node.state,
358360
ty: VisitClientReferenceNodeType::ClientReference(
359361
ClientReference {
360362
server_component: node.state.server_component(),
361363
ty: ClientReferenceType::EcmascriptClientReference {
362-
parent_module: Vc::try_resolve_downcast_type::<
364+
parent_module: *ResolvedVc::try_downcast_type::<
363365
EcmascriptClientReferenceProxyModule,
364366
>(
365367
parent_module
366368
)
367369
.await?
368370
.unwrap(),
369-
module: client_reference_module,
371+
module: *client_reference_module,
370372
},
371373
},
372374
client_reference_module.ident().to_string().await?,
@@ -375,15 +377,15 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
375377
}
376378

377379
if let Some(css_client_reference_asset) =
378-
Vc::try_resolve_downcast_type::<CssModuleAsset>(module).await?
380+
ResolvedVc::try_downcast_type::<CssModuleAsset>(module).await?
379381
{
380382
return Ok(VisitClientReferenceNode {
381383
state: node.state,
382384
ty: VisitClientReferenceNodeType::ClientReference(
383385
ClientReference {
384386
server_component: node.state.server_component(),
385387
ty: ClientReferenceType::CssClientReference(
386-
css_client_reference_asset,
388+
*css_client_reference_asset,
387389
),
388390
},
389391
css_client_reference_asset.ident().to_string().await?,
@@ -392,11 +394,11 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
392394
}
393395

394396
if let Some(server_component_asset) =
395-
Vc::try_resolve_downcast_type::<NextServerComponentModule>(module).await?
397+
ResolvedVc::try_downcast_type::<NextServerComponentModule>(module).await?
396398
{
397399
return Ok(VisitClientReferenceNode {
398400
state: VisitClientReferenceNodeState::InServerComponent {
399-
server_component: server_component_asset,
401+
server_component: *server_component_asset,
400402
},
401403
ty: VisitClientReferenceNodeType::ServerComponentEntry(
402404
server_component_asset,

crates/next-core/src/next_dynamic/visit_dynamic.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use anyhow::Result;
44
use tracing::Instrument;
55
use turbo_tasks::{
66
graph::{AdjacencyMap, GraphTraversal, Visit, VisitControlFlow},
7-
RcStr, ReadRef, TryJoinIterExt, ValueToString, Vc,
7+
RcStr, ReadRef, ResolvedVc, TryJoinIterExt, ValueToString, Vc,
88
};
99
use turbopack_core::{
1010
module::{Module, Modules},
@@ -29,7 +29,10 @@ impl NextDynamicEntries {
2929
.iter()
3030
.copied()
3131
.map(|m| async move {
32-
Ok(VisitDynamicNode::Internal(m, m.ident().to_string().await?))
32+
Ok(VisitDynamicNode::Internal(
33+
m.to_resolved().await?,
34+
m.ident().to_string().await?,
35+
))
3336
})
3437
.try_join()
3538
.await?,
@@ -50,7 +53,7 @@ impl NextDynamicEntries {
5053
// traversal.
5154
}
5255
VisitDynamicNode::Dynamic(dynamic_asset, _) => {
53-
next_dynamics.push(dynamic_asset);
56+
next_dynamics.push(*dynamic_asset);
5457
}
5558
}
5659
}
@@ -66,8 +69,8 @@ struct VisitDynamic;
6669

6770
#[derive(Clone, Eq, PartialEq, Hash)]
6871
enum VisitDynamicNode {
69-
Dynamic(Vc<NextDynamicEntryModule>, ReadRef<RcStr>),
70-
Internal(Vc<Box<dyn Module>>, ReadRef<RcStr>),
72+
Dynamic(ResolvedVc<NextDynamicEntryModule>, ReadRef<RcStr>),
73+
Internal(ResolvedVc<Box<dyn Module>>, ReadRef<RcStr>),
7174
}
7275

7376
impl Visit<VisitDynamicNode> for VisitDynamic {
@@ -85,16 +88,16 @@ impl Visit<VisitDynamicNode> for VisitDynamic {
8588
let node = node.clone();
8689
async move {
8790
let module = match node {
88-
VisitDynamicNode::Dynamic(dynamic_module, _) => Vc::upcast(dynamic_module),
91+
VisitDynamicNode::Dynamic(dynamic_module, _) => ResolvedVc::upcast(dynamic_module),
8992
VisitDynamicNode::Internal(module, _) => module,
9093
};
9194

92-
let referenced_modules = primary_referenced_modules(module).await?;
95+
let referenced_modules = primary_referenced_modules(*module).await?;
9396

9497
let referenced_modules = referenced_modules.iter().map(|module| async move {
95-
let module = module.resolve().await?;
98+
let module = module.to_resolved().await?;
9699
if let Some(next_dynamic_module) =
97-
Vc::try_resolve_downcast_type::<NextDynamicEntryModule>(module).await?
100+
ResolvedVc::try_downcast_type::<NextDynamicEntryModule>(module).await?
98101
{
99102
return Ok(VisitDynamicNode::Dynamic(
100103
next_dynamic_module,

crates/next-core/src/next_image/source_asset.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ impl Asset for StructuredImageFileSource {
5858
let blur_options = blur_options();
5959
match self.blur_placeholder_mode {
6060
BlurPlaceholderMode::NextImageUrl => {
61-
let info = get_meta_data(self.image.ident(), content, None).await?;
61+
let info = get_meta_data(self.image.ident(), *content, None).await?;
6262
let width = info.width;
6363
let height = info.height;
6464
let blur_options = blur_options.await?;
@@ -86,7 +86,7 @@ impl Asset for StructuredImageFileSource {
8686
)?;
8787
}
8888
BlurPlaceholderMode::DataUrl => {
89-
let info = get_meta_data(self.image.ident(), content, Some(blur_options)).await?;
89+
let info = get_meta_data(self.image.ident(), *content, Some(blur_options)).await?;
9090
writeln!(
9191
result,
9292
"export default {{ src, width: {width}, height: {height}, blurDataURL: \
@@ -102,7 +102,7 @@ impl Asset for StructuredImageFileSource {
102102
)?;
103103
}
104104
BlurPlaceholderMode::None => {
105-
let info = get_meta_data(self.image.ident(), content, None).await?;
105+
let info = get_meta_data(self.image.ident(), *content, None).await?;
106106
writeln!(
107107
result,
108108
"export default {{ src, width: {width}, height: {height} }}",
@@ -111,6 +111,6 @@ impl Asset for StructuredImageFileSource {
111111
)?;
112112
}
113113
};
114-
Ok(AssetContent::File(FileContent::Content(result.build().into()).cell()).cell())
114+
Ok(AssetContent::File(FileContent::Content(result.build().into()).resolved_cell()).cell())
115115
}
116116
}

0 commit comments

Comments
 (0)