Skip to content

Commit ae2d109

Browse files
authored
[turbopack] Rename ClientReferenceSet (#81942)
# Rename ClientReferencesSet to ClientReferenceManifest for better clarity ## What? Currently the `ClientReferenceSet` struct tracks information that allows us to efficiently create a manifest of css and js files referenced by entry points and server components. Naming this is tough because we are really just doing half of an algorithm and the structures are dictated by the other half.
1 parent 955adbb commit ae2d109

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

crates/next-api/src/client_references.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use turbopack_core::{
2222
#[derive(
2323
Copy, Clone, Serialize, Deserialize, Eq, PartialEq, TraceRawVcs, ValueDebugFormat, NonLocalValue,
2424
)]
25-
pub enum ClientReferenceMapType {
25+
pub enum ClientManifestEntryType {
2626
EcmascriptClientReference {
2727
module: ResolvedVc<EcmascriptClientReferenceModule>,
2828
ssr_module: ResolvedVc<Box<dyn Module>>,
@@ -31,9 +31,11 @@ pub enum ClientReferenceMapType {
3131
ServerComponent(ResolvedVc<NextServerComponentModule>),
3232
}
3333

34+
/// Tracks information about all the css and js client references in the graph as well as how server
35+
/// components depend on them.
3436
#[turbo_tasks::value]
35-
pub struct ClientReferencesSet {
36-
pub client_references: FxHashMap<ResolvedVc<Box<dyn Module>>, ClientReferenceMapType>,
37+
pub struct ClientReferenceManifest {
38+
pub manifest: FxHashMap<ResolvedVc<Box<dyn Module>>, ClientManifestEntryType>,
3739
// All the server components in the graph.
3840
server_components: FxIndexSet<ResolvedVc<NextServerComponentModule>>,
3941
// All the server components that depend on each module
@@ -43,7 +45,7 @@ pub struct ClientReferencesSet {
4345
FxHashMap<ResolvedVc<Box<dyn Module>>, RoaringBitmapWrapper>,
4446
}
4547

46-
impl ClientReferencesSet {
48+
impl ClientReferenceManifest {
4749
/// Returns all the server components that depend on the given client reference
4850
pub fn server_components_for_client_reference(
4951
&self,
@@ -64,9 +66,9 @@ impl ClientReferencesSet {
6466
#[turbo_tasks::function]
6567
pub async fn map_client_references(
6668
graph: Vc<SingleModuleGraph>,
67-
) -> Result<Vc<ClientReferencesSet>> {
69+
) -> Result<Vc<ClientReferenceManifest>> {
6870
let graph = graph.await?;
69-
let client_references = graph
71+
let manifest = graph
7072
.iter_nodes()
7173
.map(|node| async move {
7274
let module = node.module;
@@ -76,7 +78,7 @@ pub async fn map_client_references(
7678
{
7779
Ok(Some((
7880
module,
79-
ClientReferenceMapType::EcmascriptClientReference {
81+
ClientManifestEntryType::EcmascriptClientReference {
8082
module: client_reference_module,
8183
ssr_module: ResolvedVc::upcast(client_reference_module.await?.ssr_module),
8284
},
@@ -86,7 +88,7 @@ pub async fn map_client_references(
8688
{
8789
Ok(Some((
8890
module,
89-
ClientReferenceMapType::CssClientReference(
91+
ClientManifestEntryType::CssClientReference(
9092
client_reference_module.await?.client_module,
9193
),
9294
)))
@@ -95,7 +97,7 @@ pub async fn map_client_references(
9597
{
9698
Ok(Some((
9799
module,
98-
ClientReferenceMapType::ServerComponent(server_component),
100+
ClientManifestEntryType::ServerComponent(server_component),
99101
)))
100102
} else {
101103
Ok(None)
@@ -108,19 +110,19 @@ pub async fn map_client_references(
108110

109111
let mut server_components = FxIndexSet::default();
110112
let mut module_to_server_component_bits = FxHashMap::default();
111-
if !client_references.is_empty() {
113+
if !manifest.is_empty() {
112114
graph.traverse_edges_from_entries_fixed_point(
113115
graph.entry_modules(),
114116
|parent_info, node| {
115117
let module = node.module();
116-
let module_type = client_references.get(&module);
118+
let module_type = manifest.get(&module);
117119
let mut should_visit_children = match module_to_server_component_bits.entry(module)
118120
{
119121
std::collections::hash_map::Entry::Occupied(_) => false,
120122
std::collections::hash_map::Entry::Vacant(vacant_entry) => {
121123
// only do this the first time we visit the node.
122124
let bits = vacant_entry.insert(RoaringBitmap::new());
123-
if let Some(ClientReferenceMapType::ServerComponent(
125+
if let Some(ClientManifestEntryType::ServerComponent(
124126
server_component_module,
125127
)) = module_type
126128
{
@@ -159,8 +161,8 @@ pub async fn map_client_references(
159161

160162
Ok(match module_type {
161163
Some(
162-
ClientReferenceMapType::EcmascriptClientReference { .. }
163-
| ClientReferenceMapType::CssClientReference { .. },
164+
ClientManifestEntryType::EcmascriptClientReference { .. }
165+
| ClientManifestEntryType::CssClientReference { .. },
164166
) => {
165167
// No need to explore these subgraphs ever, these are the leaves in the
166168
// server component graph
@@ -183,17 +185,17 @@ pub async fn map_client_references(
183185
// Filter down to just the client reference modules to reduce datastructure size
184186
let server_components_for_client_references = module_to_server_component_bits
185187
.into_iter()
186-
.filter_map(|(k, v)| match client_references.get(&k) {
188+
.filter_map(|(k, v)| match manifest.get(&k) {
187189
Some(
188-
ClientReferenceMapType::CssClientReference(_)
189-
| ClientReferenceMapType::EcmascriptClientReference { .. },
190+
ClientManifestEntryType::CssClientReference(_)
191+
| ClientManifestEntryType::EcmascriptClientReference { .. },
190192
) => Some((k, RoaringBitmapWrapper(v))),
191193
_ => None,
192194
})
193195
.collect();
194196

195-
Ok(ClientReferencesSet::cell(ClientReferencesSet {
196-
client_references,
197+
Ok(ClientReferenceManifest::cell(ClientReferenceManifest {
198+
manifest,
197199
server_components,
198200
server_components_for_client_references,
199201
}))

crates/next-api/src/module_graph.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use turbopack_core::{
2727
};
2828

2929
use crate::{
30-
client_references::{ClientReferenceMapType, ClientReferencesSet, map_client_references},
30+
client_references::{ClientManifestEntryType, ClientReferenceManifest, map_client_references},
3131
dynamic_imports::{DynamicImportEntries, DynamicImportEntriesMapType, map_next_dynamic},
3232
server_actions::{AllActions, AllModuleActions, map_server_actions, to_rsc_context},
3333
};
@@ -243,7 +243,7 @@ pub struct ClientReferencesGraph {
243243
is_single_page: bool,
244244
graph: ResolvedVc<SingleModuleGraph>,
245245
/// List of client references (modules that entries into the client graph)
246-
data: ResolvedVc<ClientReferencesSet>,
246+
data: ResolvedVc<ClientReferenceManifest>,
247247
}
248248

249249
#[turbo_tasks::value_impl]
@@ -315,15 +315,15 @@ impl ClientReferencesGraph {
315315
// components for each module.
316316
graph.traverse_edges_from_entries_dfs(
317317
entries,
318-
// state_map is `module -> ParentType` to tracke whether the module is reachable
318+
// state_map is `module -> ParentType` to track whether the module is reachable
319319
// directly from an entry point.
320320
&mut FxHashMap::default(),
321321
|parent_info, node, state_map| {
322322
let module = node.module();
323-
let module_type = data.client_references.get(&module);
323+
let module_type = data.manifest.get(&module);
324324

325325
let parent_type =
326-
if let Some(ClientReferenceMapType::ServerComponent(_)) = module_type {
326+
if let Some(ClientManifestEntryType::ServerComponent(_)) = module_type {
327327
ParentType::ServerComponent
328328
} else if let Some((parent_node, _)) = parent_info {
329329
*state_map.get(&parent_node.module).unwrap()
@@ -347,27 +347,27 @@ impl ClientReferencesGraph {
347347

348348
Ok(match module_type {
349349
Some(
350-
ClientReferenceMapType::EcmascriptClientReference { .. }
351-
| ClientReferenceMapType::CssClientReference { .. },
350+
ClientManifestEntryType::EcmascriptClientReference { .. }
351+
| ClientManifestEntryType::CssClientReference { .. },
352352
) => GraphTraversalAction::Skip,
353353
_ => GraphTraversalAction::Continue,
354354
})
355355
},
356356
|_, node, state_map| {
357357
let module = node.module();
358-
let Some(module_type) = data.client_references.get(&module) else {
358+
let Some(module_type) = data.manifest.get(&module) else {
359359
return Ok(());
360360
};
361361

362362
let ty = match module_type {
363-
ClientReferenceMapType::EcmascriptClientReference {
363+
ClientManifestEntryType::EcmascriptClientReference {
364364
module,
365365
ssr_module: _,
366366
} => ClientReferenceType::EcmascriptClientReference(*module),
367-
ClientReferenceMapType::CssClientReference(module) => {
367+
ClientManifestEntryType::CssClientReference(module) => {
368368
ClientReferenceType::CssClientReference(*module)
369369
}
370-
ClientReferenceMapType::ServerComponent(sc) => {
370+
ClientManifestEntryType::ServerComponent(sc) => {
371371
server_components.insert(*sc);
372372
return Ok(());
373373
}

0 commit comments

Comments
 (0)