From cfab56fed0109cd1c5db32c5e9ca7998ee0d097e Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 18 Oct 2024 14:38:31 +0800 Subject: [PATCH] chore: rename --- crates/rspack_binding_values/src/runtime.rs | 2 +- .../src/chunk_graph/chunk_graph_module.rs | 2 +- crates/rspack_core/src/concatenated_module.rs | 44 +++++------ .../src/dependency/dependency_id.rs | 2 +- .../src/dependency/dependency_trait.rs | 4 +- .../src/dependency/dependency_type.rs | 4 +- .../src/dependency/runtime_template.rs | 6 +- crates/rspack_core/src/external_module.rs | 4 +- crates/rspack_core/src/init_fragment.rs | 56 +++++++------- crates/rspack_core/src/module.rs | 10 +-- crates/rspack_core/src/options/module.rs | 2 +- crates/rspack_core/src/runtime_globals.rs | 4 +- crates/rspack_plugin_externals/src/plugin.rs | 4 +- ...ncy.rs => esm_compatibility_dependency.rs} | 10 +-- ...m_evaluated_import_specifier_dependency.rs | 2 + ...rs => esm_export_expression_dependency.rs} | 22 +++--- ...ncy.rs => esm_export_header_dependency.rs} | 12 +-- ...m_export_imported_specifier_dependency.rs} | 73 +++++++++---------- ....rs => esm_export_specifier_dependency.rs} | 18 ++--- ...dependency.rs => esm_import_dependency.rs} | 52 ++++++------- ....rs => esm_import_specifier_dependency.rs} | 20 ++--- ...y_evaluated_import_specifier_dependency.rs | 2 - .../src/dependency/esm/import_dependency.rs | 2 +- .../src/dependency/esm/mod.rs | 32 ++++---- ...dependency.rs => esm_accept_dependency.rs} | 8 +- .../src/dependency/hmr/mod.rs | 4 +- .../src/parser_and_generator/mod.rs | 4 +- .../common_js_exports_parse_plugin.rs | 2 +- ...ugin.rs => esm_detection_parser_plugin.rs} | 22 +++--- ...=> esm_export_dependency_parser_plugin.rs} | 44 ++++++----- ...=> esm_import_dependency_parser_plugin.rs} | 52 ++++++------- ...plugin.rs => esm_top_level_this_plugin.rs} | 6 +- .../hot_module_replacement_plugin.rs | 4 +- .../src/parser_plugin/import_parser_plugin.rs | 2 +- .../src/parser_plugin/mod.rs | 16 ++-- .../src/parser_plugin/worker_plugin.rs | 10 +-- .../src/plugin/api_plugin.rs | 2 +- .../src/plugin/impl_plugin_for_js_plugin.rs | 2 +- .../src/plugin/module_concatenation_plugin.rs | 22 +++--- .../src/plugin/side_effects_flag_plugin.rs | 10 +-- .../src/visitors/dependency/parser/mod.rs | 14 ++-- ...e_decorator.rs => esm_module_decorator.rs} | 10 +-- .../src/runtime_module/mod.rs | 4 +- ...e_decorator.js => esm_module_decorator.js} | 0 .../src/runtime_plugin.rs | 14 ++-- .../compare/replace-runtime-module-name.ts | 2 +- .../index.ts | 2 +- .../index.ts | 2 +- 48 files changed, 318 insertions(+), 329 deletions(-) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_compatibility_dependency.rs => esm_compatibility_dependency.rs} (91%) create mode 100644 crates/rspack_plugin_javascript/src/dependency/esm/esm_evaluated_import_specifier_dependency.rs rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_export_expression_dependency.rs => esm_export_expression_dependency.rs} (89%) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_export_header_dependency.rs => esm_export_header_dependency.rs} (82%) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_export_imported_specifier_dependency.rs => esm_export_imported_specifier_dependency.rs} (94%) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_export_specifier_dependency.rs => esm_export_specifier_dependency.rs} (84%) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_import_dependency.rs => esm_import_dependency.rs} (90%) rename crates/rspack_plugin_javascript/src/dependency/esm/{harmony_import_specifier_dependency.rs => esm_import_specifier_dependency.rs} (93%) delete mode 100644 crates/rspack_plugin_javascript/src/dependency/esm/harmony_evaluated_import_specifier_dependency.rs rename crates/rspack_plugin_javascript/src/dependency/hmr/{harmony_accept_dependency.rs => esm_accept_dependency.rs} (95%) rename crates/rspack_plugin_javascript/src/parser_plugin/{harmony_detection_parser_plugin.rs => esm_detection_parser_plugin.rs} (85%) rename crates/rspack_plugin_javascript/src/parser_plugin/{harmony_export_dependency_parser_plugin.rs => esm_export_dependency_parser_plugin.rs} (80%) rename crates/rspack_plugin_javascript/src/parser_plugin/{harmony_import_dependency_parser_plugin.rs => esm_import_dependency_parser_plugin.rs} (83%) rename crates/rspack_plugin_javascript/src/parser_plugin/{harmony_top_level_this_plugin.rs => esm_top_level_this_plugin.rs} (79%) rename crates/rspack_plugin_runtime/src/runtime_module/{harmony_module_decorator.rs => esm_module_decorator.rs} (54%) rename crates/rspack_plugin_runtime/src/runtime_module/runtime/{harmony_module_decorator.js => esm_module_decorator.js} (100%) diff --git a/crates/rspack_binding_values/src/runtime.rs b/crates/rspack_binding_values/src/runtime.rs index 2dcb630518f..496b596c1b4 100644 --- a/crates/rspack_binding_values/src/runtime.rs +++ b/crates/rspack_binding_values/src/runtime.rs @@ -71,7 +71,7 @@ static RUNTIME_GLOBAL_MAP: LazyLock<( declare_runtime_global!(COMPAT_GET_DEFAULT_EXPORT); declare_runtime_global!(CREATE_FAKE_NAMESPACE_OBJECT); declare_runtime_global!(NODE_MODULE_DECORATOR); - declare_runtime_global!(HARMONY_MODULE_DECORATOR); + declare_runtime_global!(ESM_MODULE_DECORATOR); declare_runtime_global!(SYSTEM_CONTEXT); declare_runtime_global!(THIS_AS_EXPORTS); declare_runtime_global!(CURRENT_REMOTE_GET_SCOPE); diff --git a/crates/rspack_core/src/chunk_graph/chunk_graph_module.rs b/crates/rspack_core/src/chunk_graph/chunk_graph_module.rs index 6a81b6e2bff..ea859e614cd 100644 --- a/crates/rspack_core/src/chunk_graph/chunk_graph_module.rs +++ b/crates/rspack_core/src/chunk_graph/chunk_graph_module.rs @@ -178,7 +178,7 @@ impl ChunkGraph { self .get_module_graph_hash_without_connections(module, compilation, runtime) .hash(&mut hasher); - let strict = module.get_strict_harmony_module(); + let strict = module.get_strict_esm_module(); let mg = compilation.get_module_graph(); let connections = mg .get_outgoing_connections(&module.identifier()) diff --git a/crates/rspack_core/src/concatenated_module.rs b/crates/rspack_core/src/concatenated_module.rs index b4f2e4eb9b6..f62bb1df712 100644 --- a/crates/rspack_core/src/concatenated_module.rs +++ b/crates/rspack_core/src/concatenated_module.rs @@ -538,7 +538,7 @@ impl Module for ConcatenatedModule { context_dependencies: Default::default(), missing_dependencies: Default::default(), build_dependencies: Default::default(), - harmony_named_exports: Default::default(), + esm_named_exports: Default::default(), all_star_exports: Default::default(), need_create_require: Default::default(), json_data: Default::default(), @@ -570,7 +570,7 @@ impl Module for ConcatenatedModule { .dependency_by_id(dep_id) .expect("should have dependency"); let module_id_of_dep = module_graph.module_identifier_by_dependency_id(dep_id); - if !is_harmony_dep_like(dep) || !modules.contains(&module_id_of_dep) { + if !is_esm_dep_like(dep) || !modules.contains(&module_id_of_dep) { self.dependencies.push(*dep_id); } } @@ -862,7 +862,7 @@ impl Module for ConcatenatedModule { .collect::>(), match_info.call, !match_info.direct_import, - build_meta.strict_harmony_module, + build_meta.strict_esm_module, match_info.asi_safe, )); } @@ -878,7 +878,7 @@ impl Module for ConcatenatedModule { export_name, call, call_context, - strict_harmony_module, + strict_esm_module, asi_safe, ) in info_params_list { @@ -891,7 +891,7 @@ impl Module for ConcatenatedModule { &mut needed_namespace_objects, call, call_context, - strict_harmony_module, + strict_esm_module, asi_safe, &context, ); @@ -922,9 +922,9 @@ impl Module for ConcatenatedModule { let root_module = module_graph .module_by_identifier(&root_module_id) .expect("should have box module"); - let strict_harmony_module = root_module + let strict_esm_module = root_module .build_meta() - .map(|item| item.strict_harmony_module) + .map(|item| item.strict_esm_module) .unwrap_or_default(); let exports_info = module_graph.get_exports_info(&root_module_id); @@ -957,7 +957,7 @@ impl Module for ConcatenatedModule { &mut needed_namespace_objects, false, false, - strict_harmony_module, + strict_esm_module, Some(true), &compilation.options.context, ); @@ -975,7 +975,7 @@ impl Module for ConcatenatedModule { } let mut result = ConcatSource::default(); - let mut should_add_harmony_flag = false; + let mut should_add_esm_flag = false; // Add ESM compatibility flag (must be first because of possible circular dependencies) if compilation @@ -985,7 +985,7 @@ impl Module for ConcatenatedModule { .get_used(&module_graph, runtime) != UsageState::Unused { - should_add_harmony_flag = true + should_add_esm_flag = true } // Assuming the necessary imports and dependencies are declared @@ -1019,7 +1019,7 @@ impl Module for ConcatenatedModule { runtime_requirements.insert(RuntimeGlobals::EXPORTS); runtime_requirements.insert(RuntimeGlobals::DEFINE_PROPERTY_GETTERS); - if should_add_harmony_flag { + if should_add_esm_flag { result.add(RawSource::from("// ESM COMPAT FLAG\n")); result.add(RawSource::from(define_es_module_flag_statement( self.get_exports_argument(), @@ -1073,9 +1073,9 @@ impl Module for ConcatenatedModule { .module_by_identifier(module_info_id) .expect("should have box module"); let module_readable_identifier = box_module.readable_identifier(&context); - let strict_harmony_module = box_module + let strict_esm_module = box_module .build_meta() - .map(|meta| meta.strict_harmony_module) + .map(|meta| meta.strict_esm_module) .unwrap_or_default(); let name_space_name = module_info.namespace_object_name.clone(); @@ -1106,7 +1106,7 @@ impl Module for ConcatenatedModule { &mut needed_namespace_objects, false, false, - strict_harmony_module, + strict_esm_module, Some(true), &context, ); @@ -1610,7 +1610,7 @@ impl ConcatenatedModule { let dep = mg .dependency_by_id(&connection.dependency_id) .expect("should have dependency"); - if !is_harmony_dep_like(dep) { + if !is_esm_dep_like(dep) { return None; } @@ -1619,7 +1619,7 @@ impl ConcatenatedModule { { return None; } - // now the dep should be one of `HarmonyExportImportedSpecifierDependency`, `HarmonyImportSideEffectDependency`, `HarmonyImportSpecifierDependency`, + // now the dep should be one of `ESMExportImportedSpecifierDependency`, `ESMImportSideEffectDependency`, `ESMImportSpecifierDependency`, // the expect is safe now Some(ConcatenatedModuleImportInfo { connection, @@ -1788,7 +1788,7 @@ impl ConcatenatedModule { needed_namespace_objects: &mut IdentifierIndexSet, as_call: bool, call_context: bool, - strict_harmony_module: bool, + strict_esm_module: bool, asi_safe: Option, context: &Context, ) -> String { @@ -1800,7 +1800,7 @@ impl ConcatenatedModule { runtime, needed_namespace_objects, as_call, - strict_harmony_module, + strict_esm_module, asi_safe, &mut HashSet::default(), ); @@ -1874,7 +1874,7 @@ impl ConcatenatedModule { runtime: Option<&RuntimeSpec>, needed_namespace_objects: &mut IdentifierIndexSet, as_call: bool, - strict_harmony_module: bool, + strict_esm_module: bool, asi_safe: Option, already_visited: &mut HashSet, ) -> Binding { @@ -1885,7 +1885,7 @@ impl ConcatenatedModule { let module = mg .module_by_identifier(&info.id()) .expect("should have module"); - let exports_type = module.get_exports_type(mg, strict_harmony_module); + let exports_type = module.get_exports_type(mg, strict_esm_module); if export_name.is_empty() { match exports_type { @@ -2146,7 +2146,7 @@ impl ConcatenatedModule { runtime, needed_namespace_objects, as_call, - build_meta.strict_harmony_module, + build_meta.strict_esm_module, asi_safe, already_visited, ); @@ -2215,7 +2215,7 @@ impl ConcatenatedModule { } } -pub fn is_harmony_dep_like(dep: &BoxDependency) -> bool { +pub fn is_esm_dep_like(dep: &BoxDependency) -> bool { matches!( dep.dependency_type(), DependencyType::EsmImportSpecifier diff --git a/crates/rspack_core/src/dependency/dependency_id.rs b/crates/rspack_core/src/dependency/dependency_id.rs index 8a5b41a6dc2..3663eb80902 100644 --- a/crates/rspack_core/src/dependency/dependency_id.rs +++ b/crates/rspack_core/src/dependency/dependency_id.rs @@ -22,7 +22,7 @@ impl DependencyId { /// # Panic /// This method will panic if one of following condition is true: - /// * current dependency id is not belongs to `HarmonyImportSpecifierDependency` or `HarmonyExportImportedSpecifierDependency` + /// * current dependency id is not belongs to `ESMImportSpecifierDependency` or `ESMExportImportedSpecifierDependency` /// * current id is not in `ModuleGraph` pub fn get_ids(&self, mg: &ModuleGraph) -> Vec { let dep = mg.dependency_by_id(self).expect("should have dep"); diff --git a/crates/rspack_core/src/dependency/dependency_trait.rs b/crates/rspack_core/src/dependency/dependency_trait.rs index 7b9eb202c30..350d58a7f3b 100644 --- a/crates/rspack_core/src/dependency/dependency_trait.rs +++ b/crates/rspack_core/src/dependency/dependency_trait.rs @@ -86,8 +86,8 @@ pub trait Dependency: None } - // For now only `HarmonyImportSpecifierDependency` and - // `HarmonyExportImportedSpecifierDependency` can use this method + // For now only `ESMImportSpecifierDependency` and + // `ESMExportImportedSpecifierDependency` can use this method fn get_ids(&self, _mg: &ModuleGraph) -> Vec { unreachable!() } diff --git a/crates/rspack_core/src/dependency/dependency_type.rs b/crates/rspack_core/src/dependency/dependency_type.rs index 0dc2d29591b..b745632791f 100644 --- a/crates/rspack_core/src/dependency/dependency_type.rs +++ b/crates/rspack_core/src/dependency/dependency_type.rs @@ -10,10 +10,10 @@ pub enum DependencyType { Unknown, ExportInfoApi, Entry, - // Harmony import + // ESM import EsmImport, EsmImportSpecifier, - // Harmony export + // ESM export EsmExport, EsmExportImportedSpecifier, EsmExportSpecifier, diff --git a/crates/rspack_core/src/dependency/runtime_template.rs b/crates/rspack_core/src/dependency/runtime_template.rs index 74593089bbd..10b638f003a 100644 --- a/crates/rspack_core/src/dependency/runtime_template.rs +++ b/crates/rspack_core/src/dependency/runtime_template.rs @@ -176,9 +176,9 @@ pub fn export_from_import( init_fragments.push( NormalInitFragment::new( name.clone(), - InitFragmentStage::StageHarmonyExports, + InitFragmentStage::StageESMExports, -1, - InitFragmentKey::HarmonyFakeNamespaceObjectFragment(name), + InitFragmentKey::ESMFakeNamespaceObjectFragment(name), None, ) .boxed(), @@ -258,7 +258,7 @@ pub fn get_exports_type( let strict = module_graph .module_by_identifier(parent_module) .expect("should have mgm") - .get_strict_harmony_module(); + .get_strict_esm_module(); get_exports_type_with_strict(module_graph, id, strict) } diff --git a/crates/rspack_core/src/external_module.rs b/crates/rspack_core/src/external_module.rs index 74f3560c789..008ff6eb41f 100644 --- a/crates/rspack_core/src/external_module.rs +++ b/crates/rspack_core/src/external_module.rs @@ -257,7 +257,7 @@ impl ExternalModule { NormalInitFragment::new( "import { createRequire as __WEBPACK_EXTERNAL_createRequire } from \"module\";\n" .to_string(), - InitFragmentStage::StageHarmonyImports, + InitFragmentStage::StageESMImports, 0, InitFragmentKey::ModuleExternal("node-commonjs".to_string()), None, @@ -310,7 +310,7 @@ impl ExternalModule { id.clone(), json_stringify(request.primary()) ), - InitFragmentStage::StageHarmonyImports, + InitFragmentStage::StageESMImports, 0, InitFragmentKey::ModuleExternal(request.primary().into()), None, diff --git a/crates/rspack_core/src/init_fragment.rs b/crates/rspack_core/src/init_fragment.rs index 79277d89aaa..6a72174de37 100644 --- a/crates/rspack_core/src/init_fragment.rs +++ b/crates/rspack_core/src/init_fragment.rs @@ -29,16 +29,16 @@ pub struct InitFragmentContents { #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum InitFragmentKey { Unique(u32), - HarmonyImport(String), - HarmonyExportStar(String), // TODO: align with webpack and remove this - HarmonyExports, + ESMImport(String), + ESMExportStar(String), // TODO: align with webpack and remove this + ESMExports, CommonJsExports(String), ModuleExternal(String), ExternalModule(String), AwaitDependencies, - HarmonyCompatibility, + ESMCompatibility, ModuleDecorator(String /* module_id */), - HarmonyFakeNamespaceObjectFragment(String), + ESMFakeNamespaceObjectFragment(String), Const(String), } @@ -56,7 +56,7 @@ impl InitFragmentKey { fragments: Vec>>, ) -> Box> { match self { - InitFragmentKey::HarmonyImport(_) => { + InitFragmentKey::ESMImport(_) => { let mut iter = fragments.into_iter(); let first = iter .next() @@ -64,7 +64,7 @@ impl InitFragmentKey { let first = first .into_any() .downcast::() - .expect("fragment of InitFragmentKey::HarmonyImport should be a ConditionalInitFragment"); + .expect("fragment of InitFragmentKey::ESMImport should be a ConditionalInitFragment"); if matches!(first.runtime_condition, RuntimeCondition::Boolean(true)) { return first; @@ -75,9 +75,7 @@ impl InitFragmentKey { let fragment = fragment .into_any() .downcast::() - .expect( - "fragment of InitFragmentKey::HarmonyImport should be a ConditionalInitFragment", - ); + .expect("fragment of InitFragmentKey::ESMImport should be a ConditionalInitFragment"); res = ConditionalInitFragment::merge(res, fragment); if matches!(res.runtime_condition, RuntimeCondition::Boolean(true)) { return res; @@ -85,7 +83,7 @@ impl InitFragmentKey { } res } - InitFragmentKey::HarmonyExports => { + InitFragmentKey::ESMExports => { let mut export_map: Vec<(Atom, Atom)> = vec![]; let mut iter = fragments.into_iter(); let first = iter @@ -93,22 +91,18 @@ impl InitFragmentKey { .expect("keyed_fragments should at least have one value"); let first = first .into_any() - .downcast::() - .expect( - "fragment of InitFragmentKey::HarmonyExports should be a HarmonyExportInitFragment", - ); + .downcast::() + .expect("fragment of InitFragmentKey::ESMExports should be a ESMExportInitFragment"); let export_argument = first.exports_argument; export_map.extend(first.export_map); for fragment in iter { let fragment = fragment .into_any() - .downcast::() - .expect( - "fragment of InitFragmentKey::HarmonyExports should be a HarmonyExportInitFragment", - ); + .downcast::() + .expect("fragment of InitFragmentKey::ESMExports should be a ESMExportInitFragment"); export_map.extend(fragment.export_map); } - HarmonyExportInitFragment::new(export_argument, export_map).boxed() + ESMExportInitFragment::new(export_argument, export_map).boxed() } InitFragmentKey::AwaitDependencies => { let promises = fragments.into_iter().map(|f| f.into_any().downcast::().expect("fragment of InitFragmentKey::AwaitDependencies should be a AwaitDependenciesInitFragment")).flat_map(|f| f.promises).collect(); @@ -139,13 +133,13 @@ impl InitFragmentKey { } res } - InitFragmentKey::HarmonyFakeNamespaceObjectFragment(_) - | InitFragmentKey::HarmonyExportStar(_) + InitFragmentKey::ESMFakeNamespaceObjectFragment(_) + | InitFragmentKey::ESMExportStar(_) | InitFragmentKey::ModuleExternal(_) | InitFragmentKey::ModuleDecorator(_) | InitFragmentKey::CommonJsExports(_) | InitFragmentKey::Const(_) => first(fragments), - InitFragmentKey::HarmonyCompatibility | InitFragmentKey::Unique(_) => { + InitFragmentKey::ESMCompatibility | InitFragmentKey::Unique(_) => { debug_assert!(fragments.len() == 1, "fragment = {:?}", self); first(fragments) } @@ -199,11 +193,11 @@ impl + 'static> InitFragmentExt for T { pub enum InitFragmentStage { StageConstants, StageAsyncBoundary, - StageHarmonyExports, - StageHarmonyImports, + StageESMExports, + StageESMImports, StageProvides, StageAsyncDependencies, - StageAsyncHarmonyImports, + StageAsyncESMImports, } /// InitFragment.addToSource @@ -338,13 +332,13 @@ impl InitFragment for NormalInitFragment { } #[derive(Debug, Clone, Hash)] -pub struct HarmonyExportInitFragment { +pub struct ESMExportInitFragment { exports_argument: ExportsArgument, // TODO: should be a map export_map: Vec<(Atom, Atom)>, } -impl HarmonyExportInitFragment { +impl ESMExportInitFragment { pub fn new(exports_argument: ExportsArgument, export_map: Vec<(Atom, Atom)>) -> Self { Self { exports_argument, @@ -353,7 +347,7 @@ impl HarmonyExportInitFragment { } } -impl InitFragment for HarmonyExportInitFragment { +impl InitFragment for ESMExportInitFragment { fn contents(mut self: Box, context: &mut C) -> Result { context.add_runtime_requirements(RuntimeGlobals::EXPORTS); context.add_runtime_requirements(RuntimeGlobals::DEFINE_PROPERTY_GETTERS); @@ -383,7 +377,7 @@ impl InitFragment for HarmonyExportInitFragment } fn stage(&self) -> InitFragmentStage { - InitFragmentStage::StageHarmonyExports + InitFragmentStage::StageESMExports } fn position(&self) -> i32 { @@ -391,7 +385,7 @@ impl InitFragment for HarmonyExportInitFragment } fn key(&self) -> &InitFragmentKey { - &InitFragmentKey::HarmonyExports + &InitFragmentKey::ESMExports } } diff --git a/crates/rspack_core/src/module.rs b/crates/rspack_core/src/module.rs index 43709b91400..410defb58bd 100644 --- a/crates/rspack_core/src/module.rs +++ b/crates/rspack_core/src/module.rs @@ -50,7 +50,7 @@ pub struct BuildInfo { pub context_dependencies: HashSet, pub missing_dependencies: HashSet, pub build_dependencies: HashSet, - pub harmony_named_exports: HashSet, + pub esm_named_exports: HashSet, pub all_star_exports: Vec, pub need_create_require: bool, pub json_data: Option, @@ -68,7 +68,7 @@ impl Default for BuildInfo { context_dependencies: HashSet::default(), missing_dependencies: HashSet::default(), build_dependencies: HashSet::default(), - harmony_named_exports: HashSet::default(), + esm_named_exports: HashSet::default(), all_star_exports: Vec::default(), need_create_require: false, json_data: None, @@ -144,7 +144,7 @@ impl Display for ExportsArgument { #[derive(Debug, Default, Clone, Hash)] pub struct BuildMeta { - pub strict_harmony_module: bool, + pub strict_esm_module: bool, pub has_top_level_await: bool, pub esm: bool, pub exports_type: BuildMetaExportsType, @@ -248,11 +248,11 @@ pub trait Module: get_exports_type_impl(self.identifier(), self.build_meta(), module_graph, strict) } - fn get_strict_harmony_module(&self) -> bool { + fn get_strict_esm_module(&self) -> bool { self .build_meta() .as_ref() - .is_some_and(|m| m.strict_harmony_module) + .is_some_and(|m| m.strict_esm_module) } /// The actual code generation of the module, which will be called by the `Compilation`. diff --git a/crates/rspack_core/src/options/module.rs b/crates/rspack_core/src/options/module.rs index 9a9c5e3013e..dfa2c53ee0e 100644 --- a/crates/rspack_core/src/options/module.rs +++ b/crates/rspack_core/src/options/module.rs @@ -196,7 +196,7 @@ impl ExportPresenceMode { ExportPresenceMode::Auto => Some( module .build_meta() - .map(|m| m.strict_harmony_module) + .map(|m| m.strict_esm_module) .unwrap_or_default(), ), } diff --git a/crates/rspack_core/src/runtime_globals.rs b/crates/rspack_core/src/runtime_globals.rs index 71094f978c7..334cd7edb2f 100644 --- a/crates/rspack_core/src/runtime_globals.rs +++ b/crates/rspack_core/src/runtime_globals.rs @@ -207,7 +207,7 @@ bitflags! { const NODE_MODULE_DECORATOR = 1 << 47; - const HARMONY_MODULE_DECORATOR = 1 << 48; + const ESM_MODULE_DECORATOR = 1 << 48; /** * the System.register context object @@ -313,7 +313,7 @@ impl RuntimeGlobals { R::EXPORTS => "__webpack_exports__", R::COMPAT_GET_DEFAULT_EXPORT => "__webpack_require__.n", R::CREATE_FAKE_NAMESPACE_OBJECT => "__webpack_require__.t", - R::HARMONY_MODULE_DECORATOR => "__webpack_require__.hmd", + R::ESM_MODULE_DECORATOR => "__webpack_require__.hmd", R::NODE_MODULE_DECORATOR => "__webpack_require__.nmd", R::SYSTEM_CONTEXT => "__webpack_require__.y", R::THIS_AS_EXPORTS => "top-level-this-exports", diff --git a/crates/rspack_plugin_externals/src/plugin.rs b/crates/rspack_plugin_externals/src/plugin.rs index 377a6f23292..6539624810e 100644 --- a/crates/rspack_plugin_externals/src/plugin.rs +++ b/crates/rspack_plugin_externals/src/plugin.rs @@ -10,7 +10,7 @@ use rspack_core::{ }; use rspack_error::Result; use rspack_hook::{plugin, plugin_hook}; -use rspack_plugin_javascript::dependency::{HarmonyImportSideEffectDependency, ImportDependency}; +use rspack_plugin_javascript::dependency::{ESMImportSideEffectDependency, ImportDependency}; static UNSPECIFIED_EXTERNAL_TYPE_REGEXP: LazyLock = LazyLock::new(|| Regex::new(r"^[a-z0-9-]+ ").expect("Invalid regex")); @@ -112,7 +112,7 @@ impl ExternalsPlugin { Some(ExternalTypeEnum::Import) } else if dependency .as_any() - .downcast_ref::() + .downcast_ref::() .is_some() { Some(ExternalTypeEnum::Module) diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_compatibility_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_compatibility_dependency.rs similarity index 91% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_compatibility_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_compatibility_dependency.rs index 50c89896581..a90300ad324 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_compatibility_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_compatibility_dependency.rs @@ -8,9 +8,9 @@ use swc_core::atoms::Atom; // Mark module `__esModule`. // Add `__webpack_require__.r(__webpack_exports__);`. #[derive(Debug, Clone)] -pub struct HarmonyCompatibilityDependency; +pub struct ESMCompatibilityDependency; -impl DependencyTemplate for HarmonyCompatibilityDependency { +impl DependencyTemplate for ESMCompatibilityDependency { fn apply( &self, _source: &mut TemplateReplaceSource, @@ -47,9 +47,9 @@ impl DependencyTemplate for HarmonyCompatibilityDependency { RuntimeGlobals::MAKE_NAMESPACE_OBJECT, module.get_exports_argument() ), - InitFragmentStage::StageHarmonyExports, + InitFragmentStage::StageESMExports, 0, - InitFragmentKey::HarmonyCompatibility, + InitFragmentKey::ESMCompatibility, None, ))); } @@ -86,4 +86,4 @@ impl DependencyTemplate for HarmonyCompatibilityDependency { ) { } } -impl AsDependency for HarmonyCompatibilityDependency {} +impl AsDependency for ESMCompatibilityDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/esm_evaluated_import_specifier_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_evaluated_import_specifier_dependency.rs new file mode 100644 index 00000000000..aa79c0e535c --- /dev/null +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_evaluated_import_specifier_dependency.rs @@ -0,0 +1,2 @@ +// TODO +// pub struct ESMEvaluatedImportSpecifierDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_expression_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_expression_dependency.rs similarity index 89% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_expression_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_export_expression_dependency.rs index 75f921958d5..1938411d41f 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_expression_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_expression_dependency.rs @@ -3,9 +3,9 @@ use rspack_collections::{Identifier, IdentifierSet}; use rspack_core::rspack_sources::ReplacementEnforce; use rspack_core::{ property_access, AsContextDependency, AsModuleDependency, Compilation, Dependency, DependencyId, - DependencyTemplate, DependencyType, ExportNameOrSpec, ExportsOfExportsSpec, ExportsSpec, - HarmonyExportInitFragment, ModuleGraph, RealDependencyLocation, RuntimeGlobals, RuntimeSpec, - TemplateContext, TemplateReplaceSource, UsedName, DEFAULT_EXPORT, + DependencyTemplate, DependencyType, ESMExportInitFragment, ExportNameOrSpec, + ExportsOfExportsSpec, ExportsSpec, ModuleGraph, RealDependencyLocation, RuntimeGlobals, + RuntimeSpec, TemplateContext, TemplateReplaceSource, UsedName, DEFAULT_EXPORT, }; use swc_core::atoms::Atom; @@ -35,14 +35,14 @@ impl DeclarationInfo { } #[derive(Debug, Clone)] -pub struct HarmonyExportExpressionDependency { +pub struct ESMExportExpressionDependency { id: DependencyId, range: RealDependencyLocation, range_stmt: RealDependencyLocation, declaration: Option, } -impl HarmonyExportExpressionDependency { +impl ESMExportExpressionDependency { pub fn new( range: RealDependencyLocation, range_stmt: RealDependencyLocation, @@ -57,7 +57,7 @@ impl HarmonyExportExpressionDependency { } } -impl Dependency for HarmonyExportExpressionDependency { +impl Dependency for ESMExportExpressionDependency { fn dependency_type(&self) -> &DependencyType { &DependencyType::EsmExportExpression } @@ -98,10 +98,10 @@ impl Dependency for HarmonyExportExpressionDependency { } } -impl AsModuleDependency for HarmonyExportExpressionDependency {} -impl AsContextDependency for HarmonyExportExpressionDependency {} +impl AsModuleDependency for ESMExportExpressionDependency {} +impl AsContextDependency for ESMExportExpressionDependency {} -impl DependencyTemplate for HarmonyExportExpressionDependency { +impl DependencyTemplate for ESMExportExpressionDependency { fn apply( &self, source: &mut TemplateReplaceSource, @@ -151,7 +151,7 @@ impl DependencyTemplate for HarmonyExportExpressionDependency { runtime, &module.identifier(), ) { - init_fragments.push(Box::new(HarmonyExportInitFragment::new( + init_fragments.push(Box::new(ESMExportInitFragment::new( module.get_exports_argument(), vec![( match used { @@ -191,7 +191,7 @@ impl DependencyTemplate for HarmonyExportExpressionDependency { ) { runtime_requirements.insert(RuntimeGlobals::EXPORTS); if supports_const { - init_fragments.push(Box::new(HarmonyExportInitFragment::new( + init_fragments.push(Box::new(ESMExportInitFragment::new( module.get_exports_argument(), vec![( match used { diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_header_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_header_dependency.rs similarity index 82% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_header_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_export_header_dependency.rs index a5584a91d9d..1fac2b49ad2 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_header_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_header_dependency.rs @@ -8,13 +8,13 @@ use rspack_core::{ // Before: `export const a = 1` // After: `const a = 1` #[derive(Debug, Clone)] -pub struct HarmonyExportHeaderDependency { +pub struct ESMExportHeaderDependency { id: DependencyId, range: RealDependencyLocation, range_decl: Option, } -impl HarmonyExportHeaderDependency { +impl ESMExportHeaderDependency { pub fn new(range: RealDependencyLocation, range_decl: Option) -> Self { Self { range, @@ -24,7 +24,7 @@ impl HarmonyExportHeaderDependency { } } -impl Dependency for HarmonyExportHeaderDependency { +impl Dependency for ESMExportHeaderDependency { fn id(&self) -> &rspack_core::DependencyId { &self.id } @@ -42,7 +42,7 @@ impl Dependency for HarmonyExportHeaderDependency { } } -impl DependencyTemplate for HarmonyExportHeaderDependency { +impl DependencyTemplate for ESMExportHeaderDependency { fn apply( &self, source: &mut TemplateReplaceSource, @@ -73,5 +73,5 @@ impl DependencyTemplate for HarmonyExportHeaderDependency { } } -impl AsModuleDependency for HarmonyExportHeaderDependency {} -impl AsContextDependency for HarmonyExportHeaderDependency {} +impl AsModuleDependency for ESMExportHeaderDependency {} +impl AsContextDependency for ESMExportHeaderDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_imported_specifier_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_imported_specifier_dependency.rs similarity index 94% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_imported_specifier_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_export_imported_specifier_dependency.rs index 2a2d93bf5b0..98901b1bf89 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_imported_specifier_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_imported_specifier_dependency.rs @@ -8,9 +8,9 @@ use rspack_core::{ process_export_info, property_access, property_name, string_of_used_name, AsContextDependency, Compilation, ConditionalInitFragment, ConnectionState, Dependency, DependencyCategory, DependencyCondition, DependencyConditionFn, DependencyId, DependencyTemplate, DependencyType, - ExportInfo, ExportInfoProvided, ExportNameOrSpec, ExportPresenceMode, ExportSpec, ExportsInfo, - ExportsOfExportsSpec, ExportsSpec, ExportsType, ExtendedReferencedExport, - HarmonyExportInitFragment, ImportAttributes, InitFragmentExt, InitFragmentKey, InitFragmentStage, + ESMExportInitFragment, ExportInfo, ExportInfoProvided, ExportNameOrSpec, ExportPresenceMode, + ExportSpec, ExportsInfo, ExportsOfExportsSpec, ExportsSpec, ExportsType, + ExtendedReferencedExport, ImportAttributes, InitFragmentExt, InitFragmentKey, InitFragmentStage, JavascriptParserOptions, ModuleDependency, ModuleGraph, ModuleIdentifier, NormalInitFragment, RealDependencyLocation, RuntimeCondition, RuntimeGlobals, RuntimeSpec, Template, TemplateContext, TemplateReplaceSource, UsageState, UsedName, @@ -24,8 +24,7 @@ use swc_core::ecma::atoms::Atom; use super::{ create_resource_identifier_for_esm_dependency, - harmony_import_dependency::harmony_import_dependency_get_linking_error, - harmony_import_dependency_apply, + esm_import_dependency::esm_import_dependency_get_linking_error, esm_import_dependency_apply, }; // Create _webpack_require__.d(__webpack_exports__, {}). @@ -33,7 +32,7 @@ use super::{ // case2: `export { a } from 'a';` // case3: `export * from 'a'` #[derive(Debug, Clone)] -pub struct HarmonyExportImportedSpecifierDependency { +pub struct ESMExportImportedSpecifierDependency { pub id: DependencyId, pub ids: Vec, pub name: Option, @@ -47,7 +46,7 @@ pub struct HarmonyExportImportedSpecifierDependency { export_presence_mode: ExportPresenceMode, } -impl HarmonyExportImportedSpecifierDependency { +impl ESMExportImportedSpecifierDependency { #[allow(clippy::too_many_arguments)] pub fn new( request: Atom, @@ -77,7 +76,7 @@ impl HarmonyExportImportedSpecifierDependency { } } - // Because it is shared by multiply HarmonyExportImportedSpecifierDependency, so put it to `BuildInfo` + // Because it is shared by multiply ESMExportImportedSpecifierDependency, so put it to `BuildInfo` pub fn active_exports<'a>(&self, module_graph: &'a ModuleGraph) -> &'a HashSet { let build_info = module_graph .get_parent_module(&self.id) @@ -85,10 +84,10 @@ impl HarmonyExportImportedSpecifierDependency { .expect("should have mgm") .build_info() .expect("should have build info"); - &build_info.harmony_named_exports + &build_info.esm_named_exports } - // Because it is shared by multiply HarmonyExportImportedSpecifierDependency, so put it to `BuildInfo` + // Because it is shared by multiply ESMExportImportedSpecifierDependency, so put it to `BuildInfo` pub fn all_star_exports<'a>( &self, module_graph: &'a ModuleGraph, @@ -283,7 +282,7 @@ impl HarmonyExportImportedSpecifierDependency { imported_module_identifier: &ModuleIdentifier, ) -> StarReexportsInfo { let exports_info = exports_info.unwrap_or_else(|| { - // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/HarmonyExportImportedSpecifierDependency.js#L425 + // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/ESMExportImportedSpecifierDependency.js#L425 let parent_module = module_graph .get_parent_module(&self.id) .expect("should have parent module"); @@ -483,7 +482,7 @@ impl HarmonyExportImportedSpecifierDependency { fragments.push( NormalInitFragment::new( "/* empty/unused ESM star reexport */\n".to_string(), - InitFragmentStage::StageHarmonyExports, + InitFragmentStage::StageESMExports, 1, InitFragmentKey::unique(), None, @@ -497,7 +496,7 @@ impl HarmonyExportImportedSpecifierDependency { "unused ESM reexport {}", mode.name.unwrap_or_default() )), - InitFragmentStage::StageHarmonyExports, + InitFragmentStage::StageESMExports, 1, InitFragmentKey::unique(), None, @@ -581,7 +580,7 @@ impl HarmonyExportImportedSpecifierDependency { let init_fragment = self .get_reexport_fragment( ctxt, - "reexport non-default export from non-harmony", + "reexport non-default export from non-ESM", key, "undefined", ValueKey::Str("".into()), @@ -615,7 +614,7 @@ impl HarmonyExportImportedSpecifierDependency { if checked { let key = - InitFragmentKey::HarmonyImport(format!("ESM reexport (checked) {import_var} {name}")); + InitFragmentKey::ESMImport(format!("ESM reexport (checked) {import_var} {name}")); let runtime_condition = if self.weak() { RuntimeCondition::Boolean(false) } else if let Some(connection) = mg.connection_by_dependency_id(self.id()) { @@ -634,9 +633,9 @@ impl HarmonyExportImportedSpecifierDependency { fragments.push(Box::new(ConditionalInitFragment::new( stmt, if is_async { - InitFragmentStage::StageAsyncHarmonyImports + InitFragmentStage::StageAsyncESMImports } else { - InitFragmentStage::StageHarmonyImports + InitFragmentStage::StageESMImports }, self.source_order, key, @@ -661,7 +660,7 @@ impl HarmonyExportImportedSpecifierDependency { (Some(hidden), None) => hidden, (Some(hidden), Some(ignore)) => hidden.union(&ignore).cloned().collect(), }; - // TODO: modern, need runtimeTemplate support https://github.com/webpack/webpack/blob/1f99ad6367f2b8a6ef17cce0e058f7a67fb7db18/lib/dependencies/HarmonyExportImportedSpecifierDependency.js#L1104-L1106 + // TODO: modern, need runtimeTemplate support https://github.com/webpack/webpack/blob/1f99ad6367f2b8a6ef17cce0e058f7a67fb7db18/lib/dependencies/ESMExportImportedSpecifierDependency.js#L1104-L1106 let mut content = format!( r" /* ESM reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {{}}; @@ -699,9 +698,9 @@ impl HarmonyExportImportedSpecifierDependency { exports_name ), if is_async { - InitFragmentStage::StageAsyncHarmonyImports + InitFragmentStage::StageAsyncESMImports } else { - InitFragmentStage::StageHarmonyImports + InitFragmentStage::StageESMImports }, self.source_order, InitFragmentKey::unique(), @@ -721,7 +720,7 @@ impl HarmonyExportImportedSpecifierDependency { key: String, name: &str, value_key: ValueKey, - ) -> HarmonyExportInitFragment { + ) -> ESMExportInitFragment { let TemplateContext { runtime_requirements, module, @@ -740,7 +739,7 @@ impl HarmonyExportImportedSpecifierDependency { let module = module_graph .module_by_identifier(&module.identifier()) .expect("should have module graph module"); - HarmonyExportInitFragment::new(module.get_exports_argument(), export_map) + ESMExportInitFragment::new(module.get_exports_argument(), export_map) } fn get_reexport_fake_namespace_object_fragments( @@ -781,12 +780,12 @@ impl HarmonyExportImportedSpecifierDependency { name.clone(), InitFragmentStage::StageConstants, -1, - InitFragmentKey::HarmonyFakeNamespaceObjectFragment(name), + InitFragmentKey::ESMFakeNamespaceObjectFragment(name), None, ) .boxed() }, - HarmonyExportInitFragment::new(module.get_exports_argument(), export_map).boxed(), + ESMExportInitFragment::new(module.get_exports_argument(), export_map).boxed(), ]; ctxt.init_fragments.extend_from_slice(&frags); } @@ -998,7 +997,7 @@ pub struct DiscoverActiveExportsFromOtherStarExportsRet<'a> { pub dependency_index: usize, } -impl DependencyTemplate for HarmonyExportImportedSpecifierDependency { +impl DependencyTemplate for ESMExportImportedSpecifierDependency { fn apply( &self, _source: &mut TemplateReplaceSource, @@ -1026,7 +1025,7 @@ impl DependencyTemplate for HarmonyExportImportedSpecifierDependency { // dbg!(&mode, self.request()); if !matches!(mode.ty, ExportModeType::Unused | ExportModeType::EmptyStar) { - harmony_import_dependency_apply(self, self.source_order, code_generatable_context); + esm_import_dependency_apply(self, self.source_order, code_generatable_context); self.add_export_fragments(code_generatable_context, mode); } } @@ -1044,7 +1043,7 @@ impl DependencyTemplate for HarmonyExportImportedSpecifierDependency { } } -impl Dependency for HarmonyExportImportedSpecifierDependency { +impl Dependency for ESMExportImportedSpecifierDependency { fn id(&self) -> &DependencyId { &self.id } @@ -1076,7 +1075,7 @@ impl Dependency for HarmonyExportImportedSpecifierDependency { match mode.ty { ExportModeType::Missing => None, ExportModeType::Unused => { - // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/HarmonyExportImportedSpecifierDependency.js#L630-L742 + // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/ESMExportImportedSpecifierDependency.js#L630-L742 unreachable!() } ExportModeType::EmptyStar => Some(ExportsSpec { @@ -1252,7 +1251,7 @@ impl Dependency for HarmonyExportImportedSpecifierDependency { .get_effective_export_presence(&**module) { let mut diagnostics = Vec::new(); - if let Some(error) = harmony_import_dependency_get_linking_error( + if let Some(error) = esm_import_dependency_get_linking_error( self, &ids, module_graph, @@ -1343,9 +1342,9 @@ impl Dependency for HarmonyExportImportedSpecifierDependency { } } -struct HarmonyExportImportedSpecifierDependencyCondition(DependencyId); +struct ESMExportImportedSpecifierDependencyCondition(DependencyId); -impl DependencyConditionFn for HarmonyExportImportedSpecifierDependencyCondition { +impl DependencyConditionFn for ESMExportImportedSpecifierDependencyCondition { fn get_connection_state( &self, _conn: &rspack_core::ModuleGraphConnection, @@ -1356,8 +1355,8 @@ impl DependencyConditionFn for HarmonyExportImportedSpecifierDependencyCondition .dependency_by_id(&self.0) .expect("should have dependency"); let down_casted_dep = dep - .downcast_ref::() - .expect("should be HarmonyExportImportedSpecifierDependency"); + .downcast_ref::() + .expect("should be ESMExportImportedSpecifierDependency"); let mode = down_casted_dep.get_mode( down_casted_dep.name.clone(), module_graph, @@ -1371,7 +1370,7 @@ impl DependencyConditionFn for HarmonyExportImportedSpecifierDependencyCondition } } -impl ModuleDependency for HarmonyExportImportedSpecifierDependency { +impl ModuleDependency for ESMExportImportedSpecifierDependency { fn request(&self) -> &str { &self.request } @@ -1395,7 +1394,7 @@ impl ModuleDependency for HarmonyExportImportedSpecifierDependency { fn get_condition(&self) -> Option { let id = self.id; Some(DependencyCondition::Fn(Arc::new( - HarmonyExportImportedSpecifierDependencyCondition(id), + ESMExportImportedSpecifierDependencyCondition(id), ))) } } @@ -1417,7 +1416,7 @@ impl From> for ValueKey { } } -impl AsContextDependency for HarmonyExportImportedSpecifierDependency {} +impl AsContextDependency for ESMExportImportedSpecifierDependency {} #[derive(Debug, PartialEq, Eq, Clone, Copy)] pub enum ExportModeType { @@ -1482,7 +1481,7 @@ fn determine_export_assignments<'a>( dependencies: &[DependencyId], additional_dependency: Option, ) -> (Vec<&'a Atom>, Vec) { - // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/HarmonyExportImportedSpecifierDependency.js#L109 + // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/ESMExportImportedSpecifierDependency.js#L109 // js `Set` keep the insertion order, use `IndexSet` to align there behavior let mut names: IndexSet<&Atom, BuildHasherDefault> = IndexSet::default(); let mut dependency_indices = diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_specifier_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_specifier_dependency.rs similarity index 84% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_specifier_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_export_specifier_dependency.rs index ab87132bb1b..fcd4f00057f 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_specifier_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_export_specifier_dependency.rs @@ -1,22 +1,22 @@ use rspack_collections::IdentifierSet; use rspack_core::{ AsContextDependency, AsModuleDependency, Compilation, Dependency, DependencyCategory, - DependencyId, DependencyTemplate, DependencyType, ExportNameOrSpec, ExportsOfExportsSpec, - ExportsSpec, HarmonyExportInitFragment, ModuleGraph, RealDependencyLocation, RuntimeSpec, + DependencyId, DependencyTemplate, DependencyType, ESMExportInitFragment, ExportNameOrSpec, + ExportsOfExportsSpec, ExportsSpec, ModuleGraph, RealDependencyLocation, RuntimeSpec, TemplateContext, TemplateReplaceSource, UsedName, }; use swc_core::ecma::atoms::Atom; // Create _webpack_require__.d(__webpack_exports__, {}) for each export. #[derive(Debug, Clone)] -pub struct HarmonyExportSpecifierDependency { +pub struct ESMExportSpecifierDependency { id: DependencyId, range: RealDependencyLocation, pub name: Atom, pub value: Atom, // id } -impl HarmonyExportSpecifierDependency { +impl ESMExportSpecifierDependency { pub fn new(name: Atom, value: Atom, range: RealDependencyLocation) -> Self { Self { name, @@ -27,7 +27,7 @@ impl HarmonyExportSpecifierDependency { } } -impl Dependency for HarmonyExportSpecifierDependency { +impl Dependency for ESMExportSpecifierDependency { fn id(&self) -> &DependencyId { &self.id } @@ -70,9 +70,9 @@ impl Dependency for HarmonyExportSpecifierDependency { } } -impl AsModuleDependency for HarmonyExportSpecifierDependency {} +impl AsModuleDependency for ESMExportSpecifierDependency {} -impl DependencyTemplate for HarmonyExportSpecifierDependency { +impl DependencyTemplate for ESMExportSpecifierDependency { fn apply( &self, _source: &mut TemplateReplaceSource, @@ -109,7 +109,7 @@ impl DependencyTemplate for HarmonyExportSpecifierDependency { }) }; if let Some(used_name) = used_name { - init_fragments.push(Box::new(HarmonyExportInitFragment::new( + init_fragments.push(Box::new(ESMExportInitFragment::new( module.get_exports_argument(), vec![(used_name, self.value.clone())], ))); @@ -129,4 +129,4 @@ impl DependencyTemplate for HarmonyExportSpecifierDependency { } } -impl AsContextDependency for HarmonyExportSpecifierDependency {} +impl AsContextDependency for ESMExportSpecifierDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_import_dependency.rs similarity index 90% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_import_dependency.rs index a52bd0d014f..82c33077394 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_import_dependency.rs @@ -21,8 +21,8 @@ use swc_core::ecma::atoms::Atom; use super::create_resource_identifier_for_esm_dependency; // TODO: find a better way to implement this for performance -// Align with https://github.com/webpack/webpack/blob/51f0f0aeac072f989f8d40247f6c23a1995c5c37/lib/dependencies/HarmonyImportDependency.js#L361-L365 -// This map is used to save the runtime conditions of modules and used by HarmonyAcceptDependency in hot module replacement. +// Align with https://github.com/webpack/webpack/blob/51f0f0aeac072f989f8d40247f6c23a1995c5c37/lib/dependencies/ESMImportDependency.js#L361-L365 +// This map is used to save the runtime conditions of modules and used by ESMAcceptDependency in hot module replacement. // It can not be saved in TemplateContext because only dependencies of rebuild modules will be templated again. pub mod import_emitted_runtime { use once_cell::sync::OnceCell; @@ -55,9 +55,9 @@ pub mod import_emitted_runtime { } } -// HarmonyImportDependency is merged HarmonyImportSideEffectDependency. +// ESMImportDependency is merged ESMImportSideEffectDependency. #[derive(Debug, Clone)] -pub struct HarmonyImportSideEffectDependency { +pub struct ESMImportSideEffectDependency { pub request: Atom, pub source_order: i32, pub id: DependencyId, @@ -69,7 +69,7 @@ pub struct HarmonyImportSideEffectDependency { resource_identifier: String, } -impl HarmonyImportSideEffectDependency { +impl ESMImportSideEffectDependency { #[allow(clippy::too_many_arguments)] pub fn new( request: Atom, @@ -96,7 +96,7 @@ impl HarmonyImportSideEffectDependency { } } -pub fn harmony_import_dependency_apply( +pub fn esm_import_dependency_apply( module_dependency: &T, source_order: i32, code_generatable_context: &mut TemplateContext, @@ -147,13 +147,13 @@ pub fn harmony_import_dependency_apply( let ref_module = module_graph.module_identifier_by_dependency_id(module_dependency.id()); let import_var = compilation.get_import_var(module_dependency.id()); // - // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/HarmonyImportDependency.js#L282-L285 + // https://github.com/webpack/webpack/blob/ac7e531436b0d47cd88451f497cdfd0dad41535d/lib/dependencies/ESMImportDependency.js#L282-L285 let module_key = ref_module .map(|i| i.as_str()) .unwrap_or(module_dependency.request()); let key = format!("ESM import {}", module_key); - // The import emitted map is consumed by HarmonyAcceptDependency which enabled by HotModuleReplacementPlugin + // The import emitted map is consumed by ESMAcceptDependency which enabled by HotModuleReplacementPlugin if let Some(import_emitted_map) = import_emitted_runtime::get_map() { if let Some(ref_module) = ref_module { let mut emitted_modules = import_emitted_map.entry(module.identifier()).or_default(); @@ -187,34 +187,34 @@ pub fn harmony_import_dependency_apply( if is_async_module { init_fragments.push(Box::new(ConditionalInitFragment::new( content.0, - InitFragmentStage::StageHarmonyImports, + InitFragmentStage::StageESMImports, source_order, - InitFragmentKey::HarmonyImport(key.to_string()), + InitFragmentKey::ESMImport(key.to_string()), None, runtime_condition.clone(), ))); init_fragments.push(AwaitDependenciesInitFragment::new_single(import_var.to_string()).boxed()); init_fragments.push(Box::new(ConditionalInitFragment::new( content.1, - InitFragmentStage::StageAsyncHarmonyImports, + InitFragmentStage::StageAsyncESMImports, source_order, - InitFragmentKey::HarmonyImport(format!("{} compat", key)), + InitFragmentKey::ESMImport(format!("{} compat", key)), None, runtime_condition, ))); } else { init_fragments.push(Box::new(ConditionalInitFragment::new( format!("{}{}", content.0, content.1), - InitFragmentStage::StageHarmonyImports, + InitFragmentStage::StageESMImports, source_order, - InitFragmentKey::HarmonyImport(key.to_string()), + InitFragmentKey::ESMImport(key.to_string()), None, runtime_condition, ))); } } -pub fn harmony_import_dependency_get_linking_error( +pub fn esm_import_dependency_get_linking_error( module_dependency: &T, ids: &[Atom], module_graph: &ModuleGraph, @@ -236,7 +236,7 @@ pub fn harmony_import_dependency_get_linking_error( parent_module .build_meta() .expect("should have build_meta") - .strict_harmony_module, + .strict_esm_module, ); let create_error = |message: String| { let (severity, title) = if should_error { @@ -385,7 +385,7 @@ pub fn harmony_import_dependency_get_linking_error( None } -impl Dependency for HarmonyImportSideEffectDependency { +impl Dependency for ESMImportSideEffectDependency { fn id(&self) -> &DependencyId { &self.id } @@ -446,9 +446,9 @@ impl Dependency for HarmonyImportSideEffectDependency { } } -struct HarmonyImportSideEffectDependencyCondition; +struct ESMImportSideEffectDependencyCondition; -impl DependencyConditionFn for HarmonyImportSideEffectDependencyCondition { +impl DependencyConditionFn for ESMImportSideEffectDependencyCondition { fn get_connection_state( &self, conn: &rspack_core::ModuleGraphConnection, @@ -464,7 +464,7 @@ impl DependencyConditionFn for HarmonyImportSideEffectDependencyCondition { } } -impl ModuleDependency for HarmonyImportSideEffectDependency { +impl ModuleDependency for ESMImportSideEffectDependency { fn is_export_all(&self) -> Option { Some(self.export_all) } @@ -485,17 +485,17 @@ impl ModuleDependency for HarmonyImportSideEffectDependency { self.request = request.into(); } - // TODO: It's from HarmonyImportSideEffectDependency. + // TODO: It's from ESMImportSideEffectDependency. fn get_condition(&self) -> Option { Some(DependencyCondition::Fn(Arc::new( - HarmonyImportSideEffectDependencyCondition, + ESMImportSideEffectDependencyCondition, ))) } - // It's from HarmonyImportSideEffectDependency. + // It's from ESMImportSideEffectDependency. } -impl DependencyTemplate for HarmonyImportSideEffectDependency { +impl DependencyTemplate for ESMImportSideEffectDependency { fn apply( &self, _source: &mut TemplateReplaceSource, @@ -513,7 +513,7 @@ impl DependencyTemplate for HarmonyImportSideEffectDependency { return; } } - harmony_import_dependency_apply(self, self.source_order, code_generatable_context); + esm_import_dependency_apply(self, self.source_order, code_generatable_context); } fn dependency_id(&self) -> Option { @@ -529,4 +529,4 @@ impl DependencyTemplate for HarmonyImportSideEffectDependency { } } -impl AsContextDependency for HarmonyImportSideEffectDependency {} +impl AsContextDependency for ESMImportSideEffectDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_specifier_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/esm_import_specifier_dependency.rs similarity index 93% rename from crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_specifier_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/esm/esm_import_specifier_dependency.rs index 871be0a8038..1ecb75189a9 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_specifier_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/esm_import_specifier_dependency.rs @@ -12,11 +12,11 @@ use rspack_error::Diagnostic; use rustc_hash::FxHashSet as HashSet; use swc_core::ecma::atoms::Atom; -use super::harmony_import_dependency::harmony_import_dependency_get_linking_error; -use super::{create_resource_identifier_for_esm_dependency, harmony_import_dependency_apply}; +use super::esm_import_dependency::esm_import_dependency_get_linking_error; +use super::{create_resource_identifier_for_esm_dependency, esm_import_dependency_apply}; #[derive(Debug, Clone)] -pub struct HarmonyImportSpecifierDependency { +pub struct ESMImportSpecifierDependency { id: DependencyId, request: Atom, name: Atom, @@ -35,7 +35,7 @@ pub struct HarmonyImportSpecifierDependency { pub namespace_object_as_context: bool, } -impl HarmonyImportSpecifierDependency { +impl ESMImportSpecifierDependency { #[allow(clippy::too_many_arguments)] pub fn new( request: Atom, @@ -110,7 +110,7 @@ impl HarmonyImportSpecifierDependency { } } -impl DependencyTemplate for HarmonyImportSpecifierDependency { +impl DependencyTemplate for ESMImportSpecifierDependency { fn apply( &self, source: &mut TemplateReplaceSource, @@ -185,7 +185,7 @@ impl DependencyTemplate for HarmonyImportSpecifierDependency { ) } } else { - harmony_import_dependency_apply(self, self.source_order, code_generatable_context); + esm_import_dependency_apply(self, self.source_order, code_generatable_context); export_from_import( code_generatable_context, true, @@ -219,7 +219,7 @@ impl DependencyTemplate for HarmonyImportSpecifierDependency { } } -impl Dependency for HarmonyImportSpecifierDependency { +impl Dependency for ESMImportSpecifierDependency { fn id(&self) -> &DependencyId { &self.id } @@ -277,7 +277,7 @@ impl Dependency for HarmonyImportSpecifierDependency { if let Some(should_error) = self .export_presence_mode .get_effective_export_presence(&**module) - && let Some(diagnostic) = harmony_import_dependency_get_linking_error( + && let Some(diagnostic) = esm_import_dependency_get_linking_error( self, &self.get_ids(module_graph)[..], module_graph, @@ -339,7 +339,7 @@ impl Dependency for HarmonyImportSpecifierDependency { } } -impl ModuleDependency for HarmonyImportSpecifierDependency { +impl ModuleDependency for ESMImportSpecifierDependency { fn request(&self) -> &str { &self.request } @@ -358,4 +358,4 @@ impl ModuleDependency for HarmonyImportSpecifierDependency { } } -impl AsContextDependency for HarmonyImportSpecifierDependency {} +impl AsContextDependency for ESMImportSpecifierDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_evaluated_import_specifier_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/harmony_evaluated_import_specifier_dependency.rs deleted file mode 100644 index 819203282c1..00000000000 --- a/crates/rspack_plugin_javascript/src/dependency/esm/harmony_evaluated_import_specifier_dependency.rs +++ /dev/null @@ -1,2 +0,0 @@ -// TODO -// pub struct HarmonyEvaluatedImportSpecifierDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/import_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/esm/import_dependency.rs index f994de56db2..c9dbb9bdc17 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/import_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/import_dependency.rs @@ -23,7 +23,7 @@ pub fn create_import_dependency_referenced_exports( .get_parent_module(dependency_id) .and_then(|id| mg.module_by_identifier(id)) .and_then(|m| m.build_meta()) - .map(|bm| bm.strict_harmony_module) + .map(|bm| bm.strict_esm_module) else { return create_exports_object_referenced(); }; diff --git a/crates/rspack_plugin_javascript/src/dependency/esm/mod.rs b/crates/rspack_plugin_javascript/src/dependency/esm/mod.rs index 65b358f4b42..3b8b687bb96 100644 --- a/crates/rspack_plugin_javascript/src/dependency/esm/mod.rs +++ b/crates/rspack_plugin_javascript/src/dependency/esm/mod.rs @@ -1,11 +1,11 @@ +mod esm_compatibility_dependency; +mod esm_export_expression_dependency; +mod esm_export_header_dependency; +mod esm_export_imported_specifier_dependency; +mod esm_export_specifier_dependency; +mod esm_import_dependency; +mod esm_import_specifier_dependency; mod external_module_dependency; -mod harmony_compatibility_dependency; -mod harmony_export_expression_dependency; -mod harmony_export_header_dependency; -mod harmony_export_imported_specifier_dependency; -mod harmony_export_specifier_dependency; -mod harmony_import_dependency; -mod harmony_import_specifier_dependency; mod import_dependency; mod import_eager_dependency; mod provide_dependency; @@ -14,16 +14,16 @@ use rspack_core::DependencyCategory; use rspack_core::ImportAttributes; use rspack_util::json_stringify; +pub use self::esm_compatibility_dependency::ESMCompatibilityDependency; +pub use self::esm_export_expression_dependency::*; +pub use self::esm_export_header_dependency::ESMExportHeaderDependency; +pub use self::esm_export_imported_specifier_dependency::ESMExportImportedSpecifierDependency; +pub use self::esm_export_specifier_dependency::ESMExportSpecifierDependency; +pub use self::esm_import_dependency::esm_import_dependency_apply; +pub use self::esm_import_dependency::import_emitted_runtime; +pub use self::esm_import_dependency::ESMImportSideEffectDependency; +pub use self::esm_import_specifier_dependency::ESMImportSpecifierDependency; pub use self::external_module_dependency::ExternalModuleDependency; -pub use self::harmony_compatibility_dependency::HarmonyCompatibilityDependency; -pub use self::harmony_export_expression_dependency::*; -pub use self::harmony_export_header_dependency::HarmonyExportHeaderDependency; -pub use self::harmony_export_imported_specifier_dependency::HarmonyExportImportedSpecifierDependency; -pub use self::harmony_export_specifier_dependency::HarmonyExportSpecifierDependency; -pub use self::harmony_import_dependency::harmony_import_dependency_apply; -pub use self::harmony_import_dependency::import_emitted_runtime; -pub use self::harmony_import_dependency::HarmonyImportSideEffectDependency; -pub use self::harmony_import_specifier_dependency::HarmonyImportSpecifierDependency; pub use self::import_dependency::ImportDependency; pub use self::import_eager_dependency::ImportEagerDependency; pub use self::provide_dependency::ProvideDependency; diff --git a/crates/rspack_plugin_javascript/src/dependency/hmr/harmony_accept_dependency.rs b/crates/rspack_plugin_javascript/src/dependency/hmr/esm_accept_dependency.rs similarity index 95% rename from crates/rspack_plugin_javascript/src/dependency/hmr/harmony_accept_dependency.rs rename to crates/rspack_plugin_javascript/src/dependency/hmr/esm_accept_dependency.rs index fbd1312a1be..c3680ec3c5e 100644 --- a/crates/rspack_plugin_javascript/src/dependency/hmr/harmony_accept_dependency.rs +++ b/crates/rspack_plugin_javascript/src/dependency/hmr/esm_accept_dependency.rs @@ -7,13 +7,13 @@ use rspack_core::{ use crate::dependency::import_emitted_runtime; #[derive(Debug, Clone)] -pub struct HarmonyAcceptDependency { +pub struct ESMAcceptDependency { range: RealDependencyLocation, has_callback: bool, dependency_ids: Vec, } -impl HarmonyAcceptDependency { +impl ESMAcceptDependency { pub fn new( range: RealDependencyLocation, has_callback: bool, @@ -31,7 +31,7 @@ impl HarmonyAcceptDependency { } } -impl DependencyTemplate for HarmonyAcceptDependency { +impl DependencyTemplate for ESMAcceptDependency { fn apply( &self, source: &mut TemplateReplaceSource, @@ -131,4 +131,4 @@ impl DependencyTemplate for HarmonyAcceptDependency { } } -impl AsDependency for HarmonyAcceptDependency {} +impl AsDependency for ESMAcceptDependency {} diff --git a/crates/rspack_plugin_javascript/src/dependency/hmr/mod.rs b/crates/rspack_plugin_javascript/src/dependency/hmr/mod.rs index ab40f121f55..cdc3f04574e 100644 --- a/crates/rspack_plugin_javascript/src/dependency/hmr/mod.rs +++ b/crates/rspack_plugin_javascript/src/dependency/hmr/mod.rs @@ -6,5 +6,5 @@ mod import_meta_hot_accept; pub use import_meta_hot_accept::*; mod import_meta_hot_decline; pub use import_meta_hot_decline::*; -mod harmony_accept_dependency; -pub use harmony_accept_dependency::HarmonyAcceptDependency; +mod esm_accept_dependency; +pub use esm_accept_dependency::ESMAcceptDependency; diff --git a/crates/rspack_plugin_javascript/src/parser_and_generator/mod.rs b/crates/rspack_plugin_javascript/src/parser_and_generator/mod.rs index e4f63bcc916..fe691c82662 100644 --- a/crates/rspack_plugin_javascript/src/parser_and_generator/mod.rs +++ b/crates/rspack_plugin_javascript/src/parser_and_generator/mod.rs @@ -20,7 +20,7 @@ use swc_core::ecma::ast; use swc_core::ecma::parser::{lexer::Lexer, EsSyntax, Syntax}; use swc_node_comments::SwcComments; -use crate::dependency::HarmonyCompatibilityDependency; +use crate::dependency::ESMCompatibilityDependency; use crate::visitors::{scan_dependencies, swc_visitor::resolver}; use crate::visitors::{semicolon, ScanDependenciesResult}; use crate::{BoxJavascriptParserPlugin, SideEffectsFlagPluginVisitor, SyntaxContextInfo}; @@ -355,7 +355,7 @@ impl ParserAndGenerator for JavaScriptParserAndGenerator { // https://github.com/webpack/webpack/blob/b9fb99c63ca433b24233e0bbc9ce336b47872c08/lib/javascript/JavascriptGenerator.js#L65-L74 dep .as_any() - .downcast_ref::() + .downcast_ref::() .is_some() }) { return Some("Module is not an ECMAScript module".into()); diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/common_js_exports_parse_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/common_js_exports_parse_plugin.rs index d4e5945e60b..82cdcaf3cfe 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/common_js_exports_parse_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/common_js_exports_parse_plugin.rs @@ -269,7 +269,7 @@ impl JavascriptParserPlugin for CommonJsExportsParserPlugin { parser.append_module_runtime(); // matches!( self.build_meta.exports_type, BuildMetaExportsType::Namespace) let decorator = if parser.is_esm { - RuntimeGlobals::HARMONY_MODULE_DECORATOR + RuntimeGlobals::ESM_MODULE_DECORATOR } else { RuntimeGlobals::NODE_MODULE_DECORATOR }; diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_detection_parser_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs similarity index 85% rename from crates/rspack_plugin_javascript/src/parser_plugin/harmony_detection_parser_plugin.rs rename to crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs index 89fc8d3fadd..c7b1a9629fd 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_detection_parser_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rs @@ -5,7 +5,7 @@ use swc_core::common::{BytePos, Span, Spanned}; use swc_core::ecma::ast::{Ident, ModuleItem, Program, UnaryExpr}; use super::JavascriptParserPlugin; -use crate::dependency::HarmonyCompatibilityDependency; +use crate::dependency::ESMCompatibilityDependency; use crate::utils::eval::BasicEvaluatedExpression; use crate::visitors::{create_traceable_error, JavascriptParser}; @@ -33,35 +33,35 @@ impl<'parser> JavascriptParser<'parser> { } } -pub struct HarmonyDetectionParserPlugin { +pub struct ESMDetectionParserPlugin { top_level_await: bool, } -impl HarmonyDetectionParserPlugin { +impl ESMDetectionParserPlugin { pub fn new(top_level_await: bool) -> Self { Self { top_level_await } } } -// Port from https://github.com/webpack/webpack/blob/main/lib/dependencies/HarmonyDetectionParserPlugin.js -impl JavascriptParserPlugin for HarmonyDetectionParserPlugin { +// Port from https://github.com/webpack/webpack/blob/main/lib/dependencies/ESMDetectionParserPlugin.js +impl JavascriptParserPlugin for ESMDetectionParserPlugin { fn program(&self, parser: &mut JavascriptParser, ast: &Program) -> Option { - let is_strict_harmony = matches!(parser.module_type, ModuleType::JsEsm); - let is_harmony = is_strict_harmony + let is_strict_esm = matches!(parser.module_type, ModuleType::JsEsm); + let is_esm = is_strict_esm || matches!(ast, Program::Module(module) if module.body.iter().any(|s| matches!(s, ModuleItem::ModuleDecl(_)))); - if is_harmony { + if is_esm { parser .presentational_dependencies - .push(Box::new(HarmonyCompatibilityDependency)); + .push(Box::new(ESMCompatibilityDependency)); parser.build_meta.esm = true; parser.build_meta.exports_type = BuildMetaExportsType::Namespace; parser.build_info.strict = true; parser.build_meta.exports_argument = ExportsArgument::WebpackExports; } - if is_strict_harmony { - parser.build_meta.strict_harmony_module = true; + if is_strict_esm { + parser.build_meta.strict_esm_module = true; parser.build_meta.module_argument = ModuleArgument::WebpackModule; } diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_export_dependency_parser_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/esm_export_dependency_parser_plugin.rs similarity index 80% rename from crates/rspack_plugin_javascript/src/parser_plugin/harmony_export_dependency_parser_plugin.rs rename to crates/rspack_plugin_javascript/src/parser_plugin/esm_export_dependency_parser_plugin.rs index ac6f48123eb..0b858485361 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_export_dependency_parser_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/esm_export_dependency_parser_plugin.rs @@ -4,15 +4,15 @@ use rspack_core::{ use swc_core::atoms::Atom; use swc_core::common::Spanned; -use super::harmony_import_dependency_parser_plugin::{HarmonySpecifierData, HARMONY_SPECIFIER_TAG}; +use super::esm_import_dependency_parser_plugin::{ESMSpecifierData, ESM_SPECIFIER_TAG}; use super::{ InnerGraphMapUsage, InnerGraphPlugin, JavascriptParserPlugin, DEFAULT_STAR_JS_WORD, JS_DEFAULT_KEYWORD, }; use crate::dependency::{ - DeclarationId, DeclarationInfo, HarmonyExportExpressionDependency, HarmonyExportHeaderDependency, - HarmonyExportImportedSpecifierDependency, HarmonyExportSpecifierDependency, - HarmonyImportSideEffectDependency, + DeclarationId, DeclarationInfo, ESMExportExpressionDependency, ESMExportHeaderDependency, + ESMExportImportedSpecifierDependency, ESMExportSpecifierDependency, + ESMImportSideEffectDependency, }; use crate::utils::object_properties::get_attributes; use crate::visitors::{ @@ -20,12 +20,12 @@ use crate::visitors::{ TagInfoData, }; -pub struct HarmonyExportDependencyParserPlugin; +pub struct ESMExportDependencyParserPlugin; -impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { +impl JavascriptParserPlugin for ESMExportDependencyParserPlugin { fn export(&self, parser: &mut JavascriptParser, statement: ExportLocal) -> Option { let range: RealDependencyLocation = statement.span().into(); - let dep = HarmonyExportHeaderDependency::new( + let dep = ESMExportHeaderDependency::new( range.with_source(parser.source_map.clone()), statement.declaration_span().map(|span| span.into()), ); @@ -39,14 +39,14 @@ impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { statement: ExportImport, source: &Atom, ) -> Option { - parser.last_harmony_import_order += 1; + parser.last_esm_import_order += 1; let span = statement.span(); let range: RealDependencyLocation = span.into(); let clean_dep = ConstDependency::new(span.real_lo(), span.real_hi(), "".into(), None); parser.presentational_dependencies.push(Box::new(clean_dep)); - let side_effect_dep = HarmonyImportSideEffectDependency::new( + let side_effect_dep = ESMImportSideEffectDependency::new( source.clone(), - parser.last_harmony_import_order, + parser.last_esm_import_order, range.with_source(parser.source_map.clone()), statement.source_span().into(), DependencyType::EsmExport, @@ -71,12 +71,12 @@ impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { ); parser .build_info - .harmony_named_exports + .esm_named_exports .insert(export_name.clone()); - let dep = if let Some(settings) = parser.get_tag_data(local_id, HARMONY_SPECIFIER_TAG) { - let settings = HarmonySpecifierData::downcast(settings); + let dep = if let Some(settings) = parser.get_tag_data(local_id, ESM_SPECIFIER_TAG) { + let settings = ESMSpecifierData::downcast(settings); let range: RealDependencyLocation = statement.span().into(); - Box::new(HarmonyExportImportedSpecifierDependency::new( + Box::new(ESMExportImportedSpecifierDependency::new( settings.source, settings.source_order, settings.ids, @@ -84,14 +84,14 @@ impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { false, None, range.with_source(parser.source_map.clone()), - HarmonyExportImportedSpecifierDependency::create_export_presence_mode( + ESMExportImportedSpecifierDependency::create_export_presence_mode( parser.javascript_options, ), settings.attributes, )) as BoxDependency } else { let range: RealDependencyLocation = statement.span().into(); - Box::new(HarmonyExportSpecifierDependency::new( + Box::new(ESMExportSpecifierDependency::new( export_name.clone(), local_id.clone(), range.with_source(parser.source_map.clone()), @@ -116,24 +116,22 @@ impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { let star_exports = if let Some(export_name) = export_name { parser .build_info - .harmony_named_exports + .esm_named_exports .insert(export_name.clone()); None } else { Some(parser.build_info.all_star_exports.clone()) }; let range: RealDependencyLocation = statement.span().into(); - let dep = HarmonyExportImportedSpecifierDependency::new( + let dep = ESMExportImportedSpecifierDependency::new( source.clone(), - parser.last_harmony_import_order, + parser.last_esm_import_order, local_id.map(|id| vec![id.clone()]).unwrap_or_default(), export_name.cloned(), local_id.is_some(), star_exports, range.with_source(parser.source_map.clone()), - HarmonyExportImportedSpecifierDependency::create_export_presence_mode( - parser.javascript_options, - ), + ESMExportImportedSpecifierDependency::create_export_presence_mode(parser.javascript_options), None, ); if export_name.is_none() { @@ -157,7 +155,7 @@ impl JavascriptParserPlugin for HarmonyExportDependencyParserPlugin { let statement_span = statement.span(); let range: RealDependencyLocation = expr_span.into(); - let dep: HarmonyExportExpressionDependency = HarmonyExportExpressionDependency::new( + let dep: ESMExportExpressionDependency = ESMExportExpressionDependency::new( range.with_source(parser.source_map.clone()), statement_span.into(), match expr { diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_import_dependency_parser_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/esm_import_dependency_parser_plugin.rs similarity index 83% rename from crates/rspack_plugin_javascript/src/parser_plugin/harmony_import_dependency_parser_plugin.rs rename to crates/rspack_plugin_javascript/src/parser_plugin/esm_import_dependency_parser_plugin.rs index d9a3278a21f..5a93c39d077 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_import_dependency_parser_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/esm_import_dependency_parser_plugin.rs @@ -9,7 +9,7 @@ use swc_core::ecma::ast::{ use swc_core::ecma::ast::{Expr, Ident, ImportDecl}; use super::{InnerGraphPlugin, JavascriptParserPlugin}; -use crate::dependency::{HarmonyImportSideEffectDependency, HarmonyImportSpecifierDependency}; +use crate::dependency::{ESMImportSideEffectDependency, ESMImportSpecifierDependency}; use crate::utils::object_properties::get_attributes; use crate::visitors::{collect_destructuring_assignment_properties, JavascriptParser, TagInfoData}; @@ -49,12 +49,12 @@ fn get_non_optional_member_chain_from_member(member: &MemberExpr, mut count: i32 get_non_optional_member_chain_from_expr(&member.obj, count) } -pub struct HarmonyImportDependencyParserPlugin; +pub struct ESMImportDependencyParserPlugin; -pub const HARMONY_SPECIFIER_TAG: &str = "_identifier__harmony_specifier_tag__"; +pub const ESM_SPECIFIER_TAG: &str = "_identifier__esm_specifier_tag__"; #[derive(Debug, Clone)] -pub struct HarmonySpecifierData { +pub struct ESMSpecifierData { pub name: Atom, pub source: Atom, pub ids: Vec, @@ -62,19 +62,19 @@ pub struct HarmonySpecifierData { pub attributes: Option, } -impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { +impl JavascriptParserPlugin for ESMImportDependencyParserPlugin { fn import( &self, parser: &mut JavascriptParser, import_decl: &ImportDecl, source: &str, ) -> Option { - parser.last_harmony_import_order += 1; + parser.last_esm_import_order += 1; let range: RealDependencyLocation = import_decl.span.into(); let attributes = import_decl.with.as_ref().map(|obj| get_attributes(obj)); - let dependency = HarmonyImportSideEffectDependency::new( + let dependency = ESMImportSideEffectDependency::new( source.into(), - parser.last_harmony_import_order, + parser.last_esm_import_order, range.with_source(parser.source_map.clone()), import_decl.src.span.into(), DependencyType::EsmImport, @@ -107,14 +107,14 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { id: Option<&Atom>, name: &Atom, ) -> Option { - parser.tag_variable::( + parser.tag_variable::( name.to_string(), - HARMONY_SPECIFIER_TAG, - Some(HarmonySpecifierData { + ESM_SPECIFIER_TAG, + Some(ESMSpecifierData { name: name.clone(), source: source.clone(), ids: id.map(|id| vec![id.clone()]).unwrap_or_default(), - source_order: parser.last_harmony_import_order, + source_order: parser.last_esm_import_order, attributes: statement.with.as_ref().map(|obj| get_attributes(obj)), }), ); @@ -127,15 +127,15 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { ident: &Ident, for_name: &str, ) -> Option { - if for_name != HARMONY_SPECIFIER_TAG { + if for_name != ESM_SPECIFIER_TAG { return None; } let tag_info = parser .definitions_db .expect_get_tag_info(parser.current_tag_info?); - let settings = HarmonySpecifierData::downcast(tag_info.data.clone()?); + let settings = ESMSpecifierData::downcast(tag_info.data.clone()?); let range: RealDependencyLocation = ident.span.into(); - let dep = HarmonyImportSpecifierDependency::new( + let dep = ESMImportSpecifierDependency::new( settings.source, settings.name, settings.source_order, @@ -145,7 +145,7 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { settings.ids, parser.in_tagged_template_tag, true, - HarmonyImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), + ESMImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), parser.properties_in_destructuring.remove(&ident.sym), settings.attributes, ); @@ -180,13 +180,13 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { let Callee::Expr(callee) = &call_expr.callee else { unreachable!() }; - if for_name != HARMONY_SPECIFIER_TAG { + if for_name != ESM_SPECIFIER_TAG { return None; } let tag_info = parser .definitions_db .expect_get_tag_info(parser.current_tag_info?); - let settings = HarmonySpecifierData::downcast(tag_info.data.clone()?); + let settings = ESMSpecifierData::downcast(tag_info.data.clone()?); let non_optional_members = get_non_optional_part(members, members_optionals); let span = if members.len() > non_optional_members.len() { @@ -202,7 +202,7 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { ids.extend(non_optional_members.iter().cloned()); let direct_import = members.is_empty(); let range: RealDependencyLocation = span.into(); - let dep = HarmonyImportSpecifierDependency::new( + let dep = ESMImportSpecifierDependency::new( settings.source, settings.name, settings.source_order, @@ -212,7 +212,7 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { ids, true, direct_import, - HarmonyImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), + ESMImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), None, settings.attributes, ); @@ -245,13 +245,13 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { members_optionals: &[bool], _member_ranges: &[Span], ) -> Option { - if for_name != HARMONY_SPECIFIER_TAG { + if for_name != ESM_SPECIFIER_TAG { return None; } let tag_info = parser .definitions_db .expect_get_tag_info(parser.current_tag_info?); - let settings = HarmonySpecifierData::downcast(tag_info.data.clone()?); + let settings = ESMSpecifierData::downcast(tag_info.data.clone()?); let non_optional_members = get_non_optional_part(members, members_optionals); let span = if members.len() > non_optional_members.len() { @@ -266,7 +266,7 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { let mut ids = settings.ids; ids.extend(non_optional_members.iter().cloned()); let range: RealDependencyLocation = span.into(); - let dep = HarmonyImportSpecifierDependency::new( + let dep = ESMImportSpecifierDependency::new( settings.source, settings.name, settings.source_order, @@ -276,7 +276,7 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { ids, false, false, // x.xx() - HarmonyImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), + ESMImportSpecifierDependency::create_export_presence_mode(parser.javascript_options), None, settings.attributes, ); @@ -306,8 +306,8 @@ impl JavascriptParserPlugin for HarmonyImportDependencyParserPlugin { if let AssignTarget::Pat(AssignTargetPat::Object(object_pat)) = &assign_expr.left && assign_expr.op == AssignOp::Assign && let box Expr::Ident(ident) = &assign_expr.right - && let Some(settings) = parser.get_tag_data(&ident.sym, HARMONY_SPECIFIER_TAG) - && let settings = HarmonySpecifierData::downcast(settings) + && let Some(settings) = parser.get_tag_data(&ident.sym, ESM_SPECIFIER_TAG) + && let settings = ESMSpecifierData::downcast(settings) // import namespace && settings.ids.is_empty() { diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_top_level_this_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/esm_top_level_this_plugin.rs similarity index 79% rename from crates/rspack_plugin_javascript/src/parser_plugin/harmony_top_level_this_plugin.rs rename to crates/rspack_plugin_javascript/src/parser_plugin/esm_top_level_this_plugin.rs index 3e7265d1d4c..ff18807f475 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/harmony_top_level_this_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/esm_top_level_this_plugin.rs @@ -3,16 +3,16 @@ use rspack_core::{ConstDependency, SpanExt}; use super::JavascriptParserPlugin; use crate::visitors::{JavascriptParser, TopLevelScope}; -pub struct HarmonyTopLevelThisParserPlugin; +pub struct ESMTopLevelThisParserPlugin; -impl JavascriptParserPlugin for HarmonyTopLevelThisParserPlugin { +impl JavascriptParserPlugin for ESMTopLevelThisParserPlugin { fn this( &self, parser: &mut JavascriptParser, expr: &swc_core::ecma::ast::ThisExpr, ) -> Option { (parser.is_esm && !matches!(parser.top_level_scope, TopLevelScope::False)).then(|| { - // TODO: harmony_export::is_enabled + // TODO: esm_export::is_enabled parser .presentational_dependencies .push(Box::new(ConstDependency::new( diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/hot_module_replacement_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/hot_module_replacement_plugin.rs index b73cd05a67d..17451e3e0e6 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/hot_module_replacement_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/hot_module_replacement_plugin.rs @@ -4,7 +4,7 @@ use swc_core::ecma::ast::{CallExpr, Expr, Lit}; use swc_core::ecma::atoms::Atom; use crate::dependency::{ - import_emitted_runtime, HarmonyAcceptDependency, ImportMetaHotAcceptDependency, + import_emitted_runtime, ESMAcceptDependency, ImportMetaHotAcceptDependency, ImportMetaHotDeclineDependency, ModuleArgumentDependency, ModuleHotAcceptDependency, ModuleHotDeclineDependency, }; @@ -74,7 +74,7 @@ impl<'parser> JavascriptParser<'parser> { }; self .presentational_dependencies - .push(Box::new(HarmonyAcceptDependency::new( + .push(Box::new(ESMAcceptDependency::new( range.with_source(self.source_map.clone()), callback_arg.is_some(), dependency_ids, diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/import_parser_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/import_parser_plugin.rs index 58f49a5e5b2..76ab510480d 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/import_parser_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/import_parser_plugin.rs @@ -169,7 +169,7 @@ impl JavascriptParserPlugin for ImportParserPlugin { category: DependencyCategory::Esm, request: format!("{}{}{}", context.clone(), query, fragment), context, - namespace_object: if parser.build_meta.strict_harmony_module { + namespace_object: if parser.build_meta.strict_esm_module { ContextNameSpaceObject::Strict } else { ContextNameSpaceObject::Bool(true) diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/mod.rs b/crates/rspack_plugin_javascript/src/parser_plugin/mod.rs index b107bb950a0..73b7ce33cc4 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/mod.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/mod.rs @@ -6,11 +6,11 @@ mod common_js_plugin; mod compatibility_plugin; mod r#const; mod drive; +mod esm_detection_parser_plugin; +mod esm_export_dependency_parser_plugin; +mod esm_import_dependency_parser_plugin; +mod esm_top_level_this_plugin; mod exports_info_api_plugin; -mod harmony_detection_parser_plugin; -mod harmony_export_dependency_parser_plugin; -mod harmony_import_dependency_parser_plugin; -mod harmony_top_level_this_plugin; mod import_meta_context_dependency_parser_plugin; mod import_meta_plugin; mod import_parser_plugin; @@ -37,11 +37,11 @@ pub(crate) use self::common_js_imports_parse_plugin::CommonJsImportsParserPlugin pub(crate) use self::common_js_plugin::CommonJsPlugin; pub(crate) use self::compatibility_plugin::CompatibilityPlugin; pub(crate) use self::drive::JavaScriptParserPluginDrive; +pub(crate) use self::esm_detection_parser_plugin::ESMDetectionParserPlugin; +pub(crate) use self::esm_export_dependency_parser_plugin::ESMExportDependencyParserPlugin; +pub(crate) use self::esm_import_dependency_parser_plugin::ESMImportDependencyParserPlugin; +pub(crate) use self::esm_top_level_this_plugin::ESMTopLevelThisParserPlugin; pub(crate) use self::exports_info_api_plugin::ExportsInfoApiPlugin; -pub(crate) use self::harmony_detection_parser_plugin::HarmonyDetectionParserPlugin; -pub(crate) use self::harmony_export_dependency_parser_plugin::HarmonyExportDependencyParserPlugin; -pub(crate) use self::harmony_import_dependency_parser_plugin::HarmonyImportDependencyParserPlugin; -pub(crate) use self::harmony_top_level_this_plugin::HarmonyTopLevelThisParserPlugin; pub(crate) use self::import_meta_context_dependency_parser_plugin::ImportMetaContextDependencyParserPlugin; pub(crate) use self::import_meta_plugin::{ImportMetaDisabledPlugin, ImportMetaPlugin}; pub(crate) use self::import_parser_plugin::ImportParserPlugin; diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/worker_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/worker_plugin.rs index 0d2a108cd0c..a95f2a44f8e 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/worker_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/worker_plugin.rs @@ -16,7 +16,7 @@ use swc_core::{ }; use super::{ - harmony_import_dependency_parser_plugin::{HarmonySpecifierData, HARMONY_SPECIFIER_TAG}, + esm_import_dependency_parser_plugin::{ESMSpecifierData, ESM_SPECIFIER_TAG}, url_plugin::get_url_request, JavascriptParserPlugin, }; @@ -351,11 +351,11 @@ impl JavascriptParserPlugin for WorkerPlugin { call_expr: &CallExpr, for_name: &str, ) -> Option { - if for_name == HARMONY_SPECIFIER_TAG { + if for_name == ESM_SPECIFIER_TAG { let tag_info = parser .definitions_db .expect_get_tag_info(parser.current_tag_info?); - let settings = HarmonySpecifierData::downcast(tag_info.data.clone()?); + let settings = ESMSpecifierData::downcast(tag_info.data.clone()?); let ids = settings.ids.iter().map(|id| id.as_str()).join("."); if self .from_call_syntax @@ -391,11 +391,11 @@ impl JavascriptParserPlugin for WorkerPlugin { new_expr: &NewExpr, for_name: &str, ) -> Option { - if for_name == HARMONY_SPECIFIER_TAG { + if for_name == ESM_SPECIFIER_TAG { let tag_info = parser .definitions_db .expect_get_tag_info(parser.current_tag_info?); - let settings = HarmonySpecifierData::downcast(tag_info.data.clone()?); + let settings = ESMSpecifierData::downcast(tag_info.data.clone()?); let ids = settings.ids.iter().map(|id| id.as_str()).join("."); if self .from_new_syntax diff --git a/crates/rspack_plugin_javascript/src/plugin/api_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/api_plugin.rs index 45f66a0791c..43e91233842 100644 --- a/crates/rspack_plugin_javascript/src/plugin/api_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/api_plugin.rs @@ -39,7 +39,7 @@ fn render_module_content( init_fragments.push( NormalInitFragment::new( "import { createRequire as __WEBPACK_EXTERNAL_createRequire } from 'module';\n".to_string(), - InitFragmentStage::StageHarmonyImports, + InitFragmentStage::StageESMImports, 0, InitFragmentKey::ModuleExternal("node-commonjs".to_string()), None, diff --git a/crates/rspack_plugin_javascript/src/plugin/impl_plugin_for_js_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/impl_plugin_for_js_plugin.rs index 7224f34dd28..6eee586d5c5 100644 --- a/crates/rspack_plugin_javascript/src/plugin/impl_plugin_for_js_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/impl_plugin_for_js_plugin.rs @@ -24,7 +24,7 @@ async fn compilation( compilation: &mut Compilation, params: &mut CompilationParams, ) -> Result<()> { - // HarmonyModulesPlugin + // ESMModulesPlugin compilation.set_dependency_factory( DependencyType::EsmImport, params.normal_module_factory.clone(), 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 b0606b86b9e..098f2ce6280 100644 --- a/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/module_concatenation_plugin.rs @@ -7,7 +7,7 @@ use std::hash::Hasher; use rayon::prelude::*; use rspack_collections::{IdentifierDashMap, IdentifierIndexSet, IdentifierMap, IdentifierSet}; use rspack_core::concatenated_module::{ - is_harmony_dep_like, ConcatenatedInnerModule, ConcatenatedModule, RootModuleContext, + is_esm_dep_like, ConcatenatedInnerModule, ConcatenatedModule, RootModuleContext, }; use rspack_core::{ filter_runtime, merge_runtime, runtime_to_string, ApplyContext, Compilation, @@ -162,8 +162,8 @@ impl ModuleConcatenationPlugin { let module = mg.module_by_identifier(&mi).expect("should have module"); for d in module.get_dependencies() { let dep = mg.dependency_by_id(d).expect("should have dependency"); - let is_harmony_import_like = is_harmony_dep_like(dep); - if !is_harmony_import_like { + let is_esm_import_like = is_esm_dep_like(dep); + if !is_esm_import_like { continue; } let Some(con) = mg.connection_by_dependency_id(d) else { @@ -172,7 +172,7 @@ impl ModuleConcatenationPlugin { if !con.is_target_active(mg, runtime) { continue; } - // SAFETY: because it is extends harmony dep, we can ensure the dep has been + // SAFETY: because it is extends ESM dep, we can ensure the dep has been // implemented ModuleDependency Trait. let module_dep = dep.as_module_dependency().expect("should be module dep"); let imported_names = module_dep.get_referenced_exports(mg, None); @@ -383,13 +383,13 @@ impl ModuleConcatenationPlugin { return Some(problem); } - let mut non_harmony_connections = HashMap::default(); + let mut non_esm_connections = HashMap::default(); for (origin_module, connections) in incoming_connections_from_modules.iter() { let selected: Vec<_> = connections .iter() .filter(|&connection| { if let Some(dep) = module_graph.dependency_by_id(&connection.dependency_id) { - !is_harmony_dep_like(dep) + !is_esm_dep_like(dep) } else { false } @@ -398,13 +398,13 @@ impl ModuleConcatenationPlugin { .collect(); if !selected.is_empty() { - non_harmony_connections.insert(origin_module, connections); + non_esm_connections.insert(origin_module, connections); } } - if !non_harmony_connections.is_empty() { + if !non_esm_connections.is_empty() { let problem = { - let names: Vec<_> = non_harmony_connections + let names: Vec<_> = non_esm_connections .iter() .map(|(origin_module, connections)| { let module = module_graph @@ -662,7 +662,7 @@ impl ModuleConcatenationPlugin { } module_graph.copy_outgoing_module_connections(m, &new_module.id(), |con, dep| { con.original_module_identifier.as_ref() == Some(m) - && !(is_harmony_dep_like(dep) && modules_set.contains(con.module_identifier())) + && !(is_esm_dep_like(dep) && modules_set.contains(con.module_identifier())) }); // TODO: optimize asset module https://github.com/webpack/webpack/pull/15515/files for chunk_ukey in chunk_graph.get_module_chunks(root_module_id).clone() { @@ -696,7 +696,7 @@ impl ModuleConcatenationPlugin { } else { Some(*c.module_identifier()) }; - let inner_connection = is_harmony_dep_like(dep) + let inner_connection = is_esm_dep_like(dep) && if let Some(other_module) = other_module { modules_set.contains(&other_module) } else { diff --git a/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs index 7344f1760b9..7c27b48c5b5 100644 --- a/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs @@ -24,9 +24,7 @@ use swc_core::ecma::ast::*; use swc_core::ecma::utils::{ExprCtx, ExprExt}; use swc_core::ecma::visit::{noop_visit_type, Visit, VisitWith}; -use crate::dependency::{ - HarmonyExportImportedSpecifierDependency, HarmonyImportSpecifierDependency, -}; +use crate::dependency::{ESMExportImportedSpecifierDependency, ESMImportSpecifierDependency}; #[derive(Clone, Debug)] enum SideEffects { @@ -778,10 +776,10 @@ fn optimize_incoming_connection( return; }; let is_reexport = dep - .downcast_ref::() + .downcast_ref::() .is_some(); let is_valid_import_specifier_dep = dep - .downcast_ref::() + .downcast_ref::() .map(|import_specifier_dep| !import_specifier_dep.namespace_object_as_context) .unwrap_or_default(); if !is_reexport && !is_valid_import_specifier_dep { @@ -826,7 +824,7 @@ fn do_optimize_incoming_connection( .dependency_by_id(&dependency_id) .expect("should have dep"); if let Some(name) = dep - .downcast_ref::() + .downcast_ref::() .and_then(|dep| dep.name.clone()) { let export_info = module_graph.get_export_info(origin_module, &name); diff --git a/crates/rspack_plugin_javascript/src/visitors/dependency/parser/mod.rs b/crates/rspack_plugin_javascript/src/visitors/dependency/parser/mod.rs index 65023069a88..cfebe0ea998 100644 --- a/crates/rspack_plugin_javascript/src/visitors/dependency/parser/mod.rs +++ b/crates/rspack_plugin_javascript/src/visitors/dependency/parser/mod.rs @@ -226,7 +226,7 @@ pub struct JavascriptParser<'parser> { pub(crate) module_type: &'parser ModuleType, pub(crate) module_layer: Option<&'parser ModuleLayer>, pub(crate) module_identifier: &'parser ModuleIdentifier, - // TODO: remove `is_esm` after `HarmonyExports::isEnabled` + // TODO: remove `is_esm` after `ESMExports::isEnabled` pub(crate) is_esm: bool, pub(crate) in_tagged_template_tag: bool, pub(crate) parser_exports_state: Option, @@ -245,7 +245,7 @@ pub struct JavascriptParser<'parser> { pub(crate) in_short_hand: bool, pub(super) definitions: ScopeInfoId, pub(crate) top_level_scope: TopLevelScope, - pub(crate) last_harmony_import_order: i32, + pub(crate) last_esm_import_order: i32, pub(crate) inner_graph: InnerGraphState, } @@ -288,8 +288,8 @@ impl<'parser> JavascriptParser<'parser> { plugins.push(Box::new(parser_plugin::CompatibilityPlugin)); if module_type.is_js_auto() || module_type.is_js_esm() { - plugins.push(Box::new(parser_plugin::HarmonyTopLevelThisParserPlugin)); - plugins.push(Box::new(parser_plugin::HarmonyDetectionParserPlugin::new( + plugins.push(Box::new(parser_plugin::ESMTopLevelThisParserPlugin)); + plugins.push(Box::new(parser_plugin::ESMDetectionParserPlugin::new( compiler_options.experiments.top_level_await, ))); plugins.push(Box::new( @@ -301,8 +301,8 @@ impl<'parser> JavascriptParser<'parser> { plugins.push(Box::new(parser_plugin::ImportMetaDisabledPlugin)); } - plugins.push(Box::new(parser_plugin::HarmonyImportDependencyParserPlugin)); - plugins.push(Box::new(parser_plugin::HarmonyExportDependencyParserPlugin)); + plugins.push(Box::new(parser_plugin::ESMImportDependencyParserPlugin)); + plugins.push(Box::new(parser_plugin::ESMExportDependencyParserPlugin)); } if module_type.is_js_auto() || module_type.is_js_dynamic() { @@ -347,7 +347,7 @@ impl<'parser> JavascriptParser<'parser> { let mut db = ScopeInfoDB::new(); Self { - last_harmony_import_order: 0, + last_esm_import_order: 0, comments, javascript_options, source_map, diff --git a/crates/rspack_plugin_runtime/src/runtime_module/harmony_module_decorator.rs b/crates/rspack_plugin_runtime/src/runtime_module/esm_module_decorator.rs similarity index 54% rename from crates/rspack_plugin_runtime/src/runtime_module/harmony_module_decorator.rs rename to crates/rspack_plugin_runtime/src/runtime_module/esm_module_decorator.rs index 8f418360b6a..a25062038c1 100644 --- a/crates/rspack_plugin_runtime/src/runtime_module/harmony_module_decorator.rs +++ b/crates/rspack_plugin_runtime/src/runtime_module/esm_module_decorator.rs @@ -7,22 +7,22 @@ use rspack_core::{ #[impl_runtime_module] #[derive(Debug)] -pub struct HarmonyModuleDecoratorRuntimeModule { +pub struct ESMModuleDecoratorRuntimeModule { id: Identifier, } -impl Default for HarmonyModuleDecoratorRuntimeModule { +impl Default for ESMModuleDecoratorRuntimeModule { fn default() -> Self { - Self::with_default(Identifier::from("webpack/runtime/harmony_module_decorator")) + Self::with_default(Identifier::from("webpack/runtime/esm_module_decorator")) } } -impl RuntimeModule for HarmonyModuleDecoratorRuntimeModule { +impl RuntimeModule for ESMModuleDecoratorRuntimeModule { fn name(&self) -> Identifier { self.id } fn generate(&self, _compilation: &Compilation) -> rspack_error::Result { - Ok(RawSource::from(include_str!("runtime/harmony_module_decorator.js")).boxed()) + Ok(RawSource::from(include_str!("runtime/esm_module_decorator.js")).boxed()) } } diff --git a/crates/rspack_plugin_runtime/src/runtime_module/mod.rs b/crates/rspack_plugin_runtime/src/runtime_module/mod.rs index 662b6e8052f..85cef363fb3 100644 --- a/crates/rspack_plugin_runtime/src/runtime_module/mod.rs +++ b/crates/rspack_plugin_runtime/src/runtime_module/mod.rs @@ -12,6 +12,7 @@ mod create_script; mod create_script_url; mod define_property_getters; mod ensure_chunk; +mod esm_module_decorator; mod export_webpack_require; mod get_chunk_filename; mod get_chunk_update_filename; @@ -19,7 +20,6 @@ mod get_full_hash; mod get_main_filename; mod get_trusted_types_policy; mod global; -mod harmony_module_decorator; mod has_own_property; mod import_scripts_chunk_loading; mod jsonp_chunk_loading; @@ -54,6 +54,7 @@ pub use create_script::CreateScriptRuntimeModule; pub use create_script_url::CreateScriptUrlRuntimeModule; pub use define_property_getters::DefinePropertyGettersRuntimeModule; pub use ensure_chunk::EnsureChunkRuntimeModule; +pub use esm_module_decorator::ESMModuleDecoratorRuntimeModule; pub use export_webpack_require::ExportWebpackRequireRuntimeModule; pub use get_chunk_filename::GetChunkFilenameRuntimeModule; pub use get_chunk_update_filename::GetChunkUpdateFilenameRuntimeModule; @@ -61,7 +62,6 @@ pub use get_full_hash::GetFullHashRuntimeModule; pub use get_main_filename::GetMainFilenameRuntimeModule; pub use get_trusted_types_policy::GetTrustedTypesPolicyRuntimeModule; pub use global::GlobalRuntimeModule; -pub use harmony_module_decorator::HarmonyModuleDecoratorRuntimeModule; pub use has_own_property::HasOwnPropertyRuntimeModule; pub use import_scripts_chunk_loading::ImportScriptsChunkLoadingRuntimeModule; pub use jsonp_chunk_loading::JsonpChunkLoadingRuntimeModule; diff --git a/crates/rspack_plugin_runtime/src/runtime_module/runtime/harmony_module_decorator.js b/crates/rspack_plugin_runtime/src/runtime_module/runtime/esm_module_decorator.js similarity index 100% rename from crates/rspack_plugin_runtime/src/runtime_module/runtime/harmony_module_decorator.js rename to crates/rspack_plugin_runtime/src/runtime_module/runtime/esm_module_decorator.js diff --git a/crates/rspack_plugin_runtime/src/runtime_plugin.rs b/crates/rspack_plugin_runtime/src/runtime_plugin.rs index d75a6ef2ae6..ef05a3954fb 100644 --- a/crates/rspack_plugin_runtime/src/runtime_plugin.rs +++ b/crates/rspack_plugin_runtime/src/runtime_plugin.rs @@ -19,9 +19,9 @@ use crate::runtime_module::{ AutoPublicPathRuntimeModule, BaseUriRuntimeModule, ChunkNameRuntimeModule, ChunkPrefetchPreloadFunctionRuntimeModule, CompatGetDefaultExportRuntimeModule, CreateFakeNamespaceObjectRuntimeModule, CreateScriptRuntimeModule, CreateScriptUrlRuntimeModule, - DefinePropertyGettersRuntimeModule, EnsureChunkRuntimeModule, GetChunkFilenameRuntimeModule, - GetChunkUpdateFilenameRuntimeModule, GetFullHashRuntimeModule, GetMainFilenameRuntimeModule, - GetTrustedTypesPolicyRuntimeModule, GlobalRuntimeModule, HarmonyModuleDecoratorRuntimeModule, + DefinePropertyGettersRuntimeModule, ESMModuleDecoratorRuntimeModule, EnsureChunkRuntimeModule, + GetChunkFilenameRuntimeModule, GetChunkUpdateFilenameRuntimeModule, GetFullHashRuntimeModule, + GetMainFilenameRuntimeModule, GetTrustedTypesPolicyRuntimeModule, GlobalRuntimeModule, HasOwnPropertyRuntimeModule, LoadScriptRuntimeModule, MakeNamespaceObjectRuntimeModule, NodeModuleDecoratorRuntimeModule, NonceRuntimeModule, OnChunkLoadedRuntimeModule, PublicPathRuntimeModule, RelativeUrlRuntimeModule, RuntimeIdRuntimeModule, @@ -69,7 +69,7 @@ static MODULE_DEPENDENCIES: LazyLock)>> (RuntimeGlobals::MODULE_LOADED, vec![RuntimeGlobals::MODULE]), (RuntimeGlobals::MODULE_ID, vec![RuntimeGlobals::MODULE]), ( - RuntimeGlobals::HARMONY_MODULE_DECORATOR, + RuntimeGlobals::ESM_MODULE_DECORATOR, vec![RuntimeGlobals::MODULE, RuntimeGlobals::REQUIRE_SCOPE], ), ( @@ -107,7 +107,7 @@ static TREE_DEPENDENCIES: LazyLock)>> = vec![RuntimeGlobals::HAS_OWN_PROPERTY], ), ( - RuntimeGlobals::HARMONY_MODULE_DECORATOR, + RuntimeGlobals::ESM_MODULE_DECORATOR, vec![RuntimeGlobals::MODULE, RuntimeGlobals::REQUIRE_SCOPE], ), ( @@ -447,10 +447,10 @@ fn runtime_requirements_in_tree( CompatGetDefaultExportRuntimeModule::default().boxed(), )?; } - RuntimeGlobals::HARMONY_MODULE_DECORATOR => { + RuntimeGlobals::ESM_MODULE_DECORATOR => { compilation.add_runtime_module( chunk_ukey, - HarmonyModuleDecoratorRuntimeModule::default().boxed(), + ESMModuleDecoratorRuntimeModule::default().boxed(), )?; } RuntimeGlobals::NODE_MODULE_DECORATOR => { diff --git a/packages/rspack-test-tools/src/compare/replace-runtime-module-name.ts b/packages/rspack-test-tools/src/compare/replace-runtime-module-name.ts index fad827b0105..b1a5059d683 100644 --- a/packages/rspack-test-tools/src/compare/replace-runtime-module-name.ts +++ b/packages/rspack-test-tools/src/compare/replace-runtime-module-name.ts @@ -55,7 +55,7 @@ const RUNTIME_MODULE_NAME_MAPPING = { "webpack/runtime/remote": "webpack/runtime/remotes loading", "webpack/runtime/share": "webpack/runtime/sharing", "webpack/runtime/consume_shared": "webpack/runtime/consumes", - "webpack/runtime/harmony_module_decorator": + "webpack/runtime/esm_module_decorator": "webpack/runtime/harmony module decorator", "webpack/runtime/node_module_decorator": "webpack/runtime/node module decorator", diff --git a/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-conflict/index.ts b/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-conflict/index.ts index 1c7b9802889..73e6f507db0 100644 --- a/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-conflict/index.ts +++ b/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-conflict/index.ts @@ -1,4 +1,4 @@ import { foo } from './reexport'; -// should not panic at crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_imported_specifier_dependency.rs +// should not panic at crates/rspack_plugin_javascript/src/dependency/esm/esm_export_imported_specifier_dependency.rs foo; \ No newline at end of file diff --git a/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-import/index.ts b/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-import/index.ts index 2aefc98b9a6..6e952920278 100644 --- a/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-import/index.ts +++ b/packages/rspack-test-tools/tests/diagnosticsCases/factorize/cannot-resolve-with-concatenate-import/index.ts @@ -1,4 +1,4 @@ import { foo } from './reexport'; -// should not panic at crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_dependency.rs +// should not panic at crates/rspack_plugin_javascript/src/dependency/esm/esm_import_dependency.rs foo; \ No newline at end of file