Skip to content

Commit

Permalink
refactor into EcmascriptModuleContentOptions
Browse files Browse the repository at this point in the history
  • Loading branch information
mischnic committed Feb 17, 2025
1 parent 00c71f6 commit a6d73e1
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 56 deletions.
79 changes: 51 additions & 28 deletions turbopack/crates/turbopack-ecmascript/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -426,18 +426,21 @@ impl EcmascriptAnalyzable for EcmascriptModuleAsset {
let generate_source_map = chunking_context.reference_module_source_maps(Vc::upcast(self));

Ok(EcmascriptModuleContent::new(
*parsed,
self.ident(),
module_type_result.module_type,
module_graph,
chunking_context,
(analyze.references(), *analyze_ref.esm_references),
*analyze_ref.code_generation,
*analyze_ref.async_module,
generate_source_map,
*analyze_ref.source_map,
*analyze_ref.exports,
async_module_info,
EcmascriptModuleContentOptions {
parsed,
ident: self.ident(),
specified_module_type: module_type_result.module_type,
module_graph,
chunking_context,
references: analyze.references(),
esm_references: *analyze_ref.esm_references,
code_generation: *analyze_ref.code_generation,
async_module: *analyze_ref.async_module,
generate_source_map,
original_source_map: analyze_ref.source_map,
exports: *analyze_ref.exports,
async_module_info,
},
))
}
}
Expand Down Expand Up @@ -757,24 +760,44 @@ pub struct EcmascriptModuleContent {
// pub refresh: bool,
}

#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize, TaskInput)]
pub struct EcmascriptModuleContentOptions {
parsed: ResolvedVc<ParseResult>,
ident: Vc<AssetIdent>,
specified_module_type: SpecifiedModuleType,
module_graph: Vc<ModuleGraph>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
references: Vc<ModuleReferences>,
esm_references: Vc<EsmAssetReferences>,
code_generation: Vc<CodeGens>,
async_module: Vc<OptionAsyncModule>,
generate_source_map: Vc<bool>,
original_source_map: ResolvedVc<OptionStringifiedSourceMap>,
exports: Vc<EcmascriptExports>,
async_module_info: Option<Vc<AsyncModuleInfo>>,
}

#[turbo_tasks::value_impl]
impl EcmascriptModuleContent {
/// Creates a new [`Vc<EcmascriptModuleContent>`].
#[turbo_tasks::function]
pub async fn new(
parsed: ResolvedVc<ParseResult>,
ident: ResolvedVc<AssetIdent>,
specified_module_type: SpecifiedModuleType,
module_graph: Vc<ModuleGraph>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
(references, esm_references): (Vc<ModuleReferences>, Vc<EsmAssetReferences>),
code_generation: Vc<CodeGens>,
async_module: Vc<OptionAsyncModule>,
generate_source_map: Vc<bool>,
original_source_map: ResolvedVc<OptionStringifiedSourceMap>,
exports: Vc<EcmascriptExports>,
async_module_info: Option<Vc<AsyncModuleInfo>>,
) -> Result<Vc<Self>> {
pub async fn new(input: EcmascriptModuleContentOptions) -> Result<Vc<Self>> {
let EcmascriptModuleContentOptions {
parsed,
ident,
specified_module_type,
module_graph,
chunking_context,
references,
esm_references,
code_generation,
async_module,
generate_source_map,
original_source_map,
exports,
async_module_info,
} = input;

let additional_code_gens = [
if let Some(async_module) = &*async_module.await? {
Some(
Expand Down Expand Up @@ -839,7 +862,7 @@ impl EcmascriptModuleContent {
) -> Result<Vc<Self>> {
gen_content_with_code_gens(
parsed.to_resolved().await?,
ident.to_resolved().await?,
ident,
specified_module_type,
&[],
generate_source_map,
Expand All @@ -851,7 +874,7 @@ impl EcmascriptModuleContent {

async fn gen_content_with_code_gens(
parsed: ResolvedVc<ParseResult>,
ident: ResolvedVc<AssetIdent>,
ident: Vc<AssetIdent>,
specified_module_type: SpecifiedModuleType,
code_gens: impl IntoIterator<Item = &CodeGeneration>,
generate_source_map: Vc<bool>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use crate::{
EcmascriptChunkItem, EcmascriptChunkItemContent, EcmascriptChunkPlaceable,
EcmascriptChunkType,
},
EcmascriptModuleContent,
EcmascriptModuleContent, EcmascriptModuleContentOptions,
};

/// The chunk item for [EcmascriptModuleLocalsModule].
Expand Down Expand Up @@ -41,7 +41,7 @@ impl EcmascriptChunkItem for EcmascriptModuleLocalsChunkItem {
let module_graph = self.module_graph;
let exports = self.module.get_exports();
let original_module = module.module;
let parsed = original_module.parse().resolve().await?;
let parsed = original_module.parse().to_resolved().await?;

let analyze = original_module.analyze();
let analyze_result = analyze.await?;
Expand All @@ -53,23 +53,21 @@ impl EcmascriptChunkItem for EcmascriptModuleLocalsChunkItem {
let generate_source_map =
chunking_context.reference_module_source_maps(*ResolvedVc::upcast(self.module));

let content = EcmascriptModuleContent::new(
let content = EcmascriptModuleContent::new(EcmascriptModuleContentOptions {
parsed,
self.module.ident(),
module_type_result.module_type,
*module_graph,
*chunking_context,
(
analyze.local_references(),
*analyze_result.esm_local_references,
),
*analyze_result.code_generation,
*analyze_result.async_module,
ident: self.module.ident(),
specified_module_type: module_type_result.module_type,
module_graph: *module_graph,
chunking_context: *chunking_context,
references: analyze.local_references(),
esm_references: *analyze_result.esm_local_references,
code_generation: *analyze_result.code_generation,
async_module: *analyze_result.async_module,
generate_source_map,
*analyze_result.source_map,
original_source_map: analyze_result.source_map,
exports,
async_module_info,
);
});

Ok(EcmascriptChunkItemContent::new(
content,
Expand Down
29 changes: 16 additions & 13 deletions turbopack/crates/turbopack-ecmascript/src/tree_shake/chunk_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use crate::{
runtime_functions::{TURBOPACK_EXPORT_NAMESPACE, TURBOPACK_IMPORT},
tree_shake::side_effect_module::SideEffectsModule,
utils::StringifyModuleId,
EcmascriptModuleContent,
EcmascriptModuleContent, EcmascriptModuleContentOptions,
};

/// This is an implementation of [ChunkItem] for
Expand Down Expand Up @@ -49,7 +49,9 @@ impl EcmascriptChunkItem for EcmascriptModulePartChunkItem {
let module = self.module.await?;

let split_data = split_module(*module.full_module);
let parsed = part_of_module(split_data, module.part.clone());
let parsed = part_of_module(split_data, module.part.clone())
.to_resolved()
.await?;

let analyze = self.module.analyze();
let analyze_ref = analyze.await?;
Expand All @@ -60,20 +62,21 @@ impl EcmascriptChunkItem for EcmascriptModulePartChunkItem {
.chunking_context
.reference_module_source_maps(*ResolvedVc::upcast(self.module));

let content = EcmascriptModuleContent::new(
let content = EcmascriptModuleContent::new(EcmascriptModuleContentOptions {
parsed,
self.module.ident(),
module_type_result.module_type,
*self.module_graph,
*self.chunking_context,
(analyze.references(), *analyze_ref.esm_references),
*analyze_ref.code_generation,
*analyze_ref.async_module,
ident: self.module.ident(),
specified_module_type: module_type_result.module_type,
module_graph: *self.module_graph,
chunking_context: *self.chunking_context,
references: analyze.references(),
esm_references: *analyze_ref.esm_references,
code_generation: *analyze_ref.code_generation,
async_module: *analyze_ref.async_module,
generate_source_map,
*analyze_ref.source_map,
*analyze_ref.exports,
original_source_map: analyze_ref.source_map,
exports: *analyze_ref.exports,
async_module_info,
);
});

Ok(EcmascriptChunkItemContent::new(
content,
Expand Down

0 comments on commit a6d73e1

Please sign in to comment.