From 99709d15a80a82d1f8320c49ff74002ea0e96f5c Mon Sep 17 00:00:00 2001 From: inottn Date: Fri, 14 Feb 2025 11:06:23 +0800 Subject: [PATCH] refactor: move module_argument and exports_argument to BuildInfo struct (#9260) --- crates/node_binding/binding.d.ts | 2 -- crates/rspack_binding_values/src/module.rs | 23 +------------------ crates/rspack_core/src/concatenated_module.rs | 16 +++++++++---- crates/rspack_core/src/module.rs | 10 ++++---- .../esm_detection_parser_plugin.rs | 4 ++-- .../src/plugin/module_concatenation_plugin.rs | 2 ++ 6 files changed, 23 insertions(+), 34 deletions(-) diff --git a/crates/node_binding/binding.d.ts b/crates/node_binding/binding.d.ts index c060e94c2bbe..3b582e11cac4 100644 --- a/crates/node_binding/binding.d.ts +++ b/crates/node_binding/binding.d.ts @@ -535,8 +535,6 @@ export interface JsBuildMeta { esm: boolean exportsType: 'unset' | 'default' | 'namespace' | 'flagged' | 'dynamic' defaultObject: 'false' | 'redirect' | JsBuildMetaDefaultObjectRedirectWarn - moduleArgument: 'module' | 'webpackModule' - exportsArgument: 'exports' | 'webpackExports' sideEffectFree?: boolean exportsFinalName?: Array<[string, string]> | undefined } diff --git a/crates/rspack_binding_values/src/module.rs b/crates/rspack_binding_values/src/module.rs index 4125c8faa1b4..d9917801f8c0 100644 --- a/crates/rspack_binding_values/src/module.rs +++ b/crates/rspack_binding_values/src/module.rs @@ -5,8 +5,7 @@ use napi_derive::napi; use rspack_collections::IdentifierMap; use rspack_core::{ BuildMeta, BuildMetaDefaultObject, BuildMetaExportsType, Compilation, CompilationAsset, - CompilationId, ExportsArgument, LibIdentOptions, Module, ModuleArgument, ModuleIdentifier, - RuntimeModuleStage, SourceType, + CompilationId, LibIdentOptions, Module, ModuleIdentifier, RuntimeModuleStage, SourceType, }; use rspack_napi::{ napi::bindgen_prelude::*, threadsafe_function::ThreadsafeFunction, OneShotInstanceRef, @@ -516,10 +515,6 @@ pub struct JsBuildMeta { pub exports_type: String, #[napi(ts_type = "'false' | 'redirect' | JsBuildMetaDefaultObjectRedirectWarn")] pub default_object: JsBuildMetaDefaultObject, - #[napi(ts_type = "'module' | 'webpackModule'")] - pub module_argument: String, - #[napi(ts_type = "'exports' | 'webpackExports'")] - pub exports_argument: String, pub side_effect_free: Option, #[napi(ts_type = "Array<[string, string]> | undefined")] pub exports_final_name: Option>>, @@ -531,9 +526,7 @@ impl From for BuildMeta { strict_esm_module, has_top_level_await, esm, - exports_argument: raw_exports_argument, default_object: raw_default_object, - module_argument: raw_module_argument, exports_final_name: raw_exports_final_name, side_effect_free, exports_type: raw_exports_type, @@ -559,18 +552,6 @@ impl From for BuildMeta { _ => unreachable!(), }; - let module_argument = match raw_module_argument.as_str() { - "module" => ModuleArgument::Module, - "webpackModule" => ModuleArgument::WebpackModule, - _ => unreachable!(), - }; - - let exports_argument = match raw_exports_argument.as_str() { - "exports" => ExportsArgument::Exports, - "webpackExports" => ExportsArgument::WebpackExports, - _ => unreachable!(), - }; - let exports_final_name = raw_exports_final_name.map(|exports_name| { exports_name .into_iter() @@ -594,8 +575,6 @@ impl From for BuildMeta { esm, exports_type, default_object, - module_argument, - exports_argument, side_effect_free, exports_final_name, } diff --git a/crates/rspack_core/src/concatenated_module.rs b/crates/rspack_core/src/concatenated_module.rs index 67eb5c2f84f4..3deacfbfe8d3 100644 --- a/crates/rspack_core/src/concatenated_module.rs +++ b/crates/rspack_core/src/concatenated_module.rs @@ -48,8 +48,8 @@ use crate::{ CodeGenerationExportsFinalNames, CodeGenerationPublicPathAutoReplace, CodeGenerationResult, Compilation, ConcatenatedModuleIdent, ConcatenationScope, ConnectionState, Context, DependenciesBlock, DependencyId, DependencyTemplate, DependencyType, ErrorSpan, - ExportInfoProvided, ExportsType, FactoryMeta, IdentCollector, LibIdentOptions, - MaybeDynamicTargetExportInfoHashKey, Module, ModuleDependency, ModuleGraph, + ExportInfoProvided, ExportsArgument, ExportsType, FactoryMeta, IdentCollector, LibIdentOptions, + MaybeDynamicTargetExportInfoHashKey, Module, ModuleArgument, ModuleDependency, ModuleGraph, ModuleGraphConnection, ModuleIdentifier, ModuleLayer, ModuleType, Resolve, RuntimeCondition, RuntimeGlobals, RuntimeSpec, SourceType, SpanExt, Template, UsageState, UsedName, DEFAULT_EXPORT, NAMESPACE_OBJECT_EXPORT, @@ -78,6 +78,8 @@ pub struct RootModuleContext { pub side_effect_connection_state: ConnectionState, pub factory_meta: Option, pub build_meta: BuildMeta, + pub exports_argument: ExportsArgument, + pub module_argument: ModuleArgument, } #[allow(unused)] @@ -386,6 +388,11 @@ impl ConcatenatedModule { ) -> Self { // make the hash consistent modules.sort_by(|a, b| a.id.cmp(&b.id)); + let RootModuleContext { + module_argument, + exports_argument, + .. + } = root_module_ctxt; Self { id, root_module_ctxt, @@ -397,8 +404,9 @@ impl ConcatenatedModule { diagnostics: vec![], build_info: BuildInfo { cacheable: true, - hash: None, strict: true, + module_argument, + exports_argument, top_level_declarations: Some(Default::default()), ..Default::default() }, @@ -1005,7 +1013,7 @@ impl Module for ConcatenatedModule { )); } - let exports_argument = self.build_meta().exports_argument; + let exports_argument = self.get_exports_argument(); let should_skip_render_definitions = compilation .plugin_driver diff --git a/crates/rspack_core/src/module.rs b/crates/rspack_core/src/module.rs index 8f9b250ee017..73132bf68700 100644 --- a/crates/rspack_core/src/module.rs +++ b/crates/rspack_core/src/module.rs @@ -54,6 +54,8 @@ pub struct BuildInfo { pub cacheable: bool, pub hash: Option, pub strict: bool, + pub module_argument: ModuleArgument, + pub exports_argument: ExportsArgument, pub file_dependencies: HashSet, pub context_dependencies: HashSet, pub missing_dependencies: HashSet, @@ -77,6 +79,8 @@ impl Default for BuildInfo { cacheable: true, hash: None, strict: false, + module_argument: Default::default(), + exports_argument: Default::default(), file_dependencies: HashSet::default(), context_dependencies: HashSet::default(), missing_dependencies: HashSet::default(), @@ -175,8 +179,6 @@ pub struct BuildMeta { pub esm: bool, pub exports_type: BuildMetaExportsType, pub default_object: BuildMetaDefaultObject, - pub module_argument: ModuleArgument, - pub exports_argument: ExportsArgument, #[serde(skip_serializing_if = "Option::is_none")] pub side_effect_free: Option, #[serde(skip_serializing_if = "Option::is_none")] @@ -253,11 +255,11 @@ pub trait Module: fn build_meta_mut(&mut self) -> &mut BuildMeta; fn get_exports_argument(&self) -> ExportsArgument { - self.build_meta().exports_argument + self.build_info().exports_argument } fn get_module_argument(&self) -> ModuleArgument { - self.build_meta().module_argument + self.build_info().module_argument } fn get_exports_type(&self, module_graph: &ModuleGraph, strict: bool) -> ExportsType { diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs index 2518c77c28cc..2e80f91ed412 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs @@ -62,12 +62,12 @@ impl JavascriptParserPlugin for ESMDetectionParserPlugin { parser.build_meta.esm = true; parser.build_meta.exports_type = BuildMetaExportsType::Namespace; parser.build_info.strict = true; - parser.build_meta.exports_argument = ExportsArgument::WebpackExports; + parser.build_info.exports_argument = ExportsArgument::WebpackExports; } if is_strict_esm { parser.build_meta.strict_esm_module = true; - parser.build_meta.module_argument = ModuleArgument::WebpackModule; + parser.build_info.module_argument = ModuleArgument::WebpackModule; } None diff --git a/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs index 6bb7232b724e..bfbf83f76bbc 100644 --- a/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs @@ -581,6 +581,8 @@ impl ModuleConcatenationPlugin { .get_side_effects_connection_state(&module_graph, &mut IdentifierSet::default()), factory_meta: box_module.factory_meta().cloned(), build_meta: box_module.build_meta().clone(), + module_argument: box_module.get_module_argument(), + exports_argument: box_module.get_exports_argument(), }; let modules = modules_set .iter()