Skip to content

Commit a4e964a

Browse files
authored
fix: use modern syntax for reexport runtime (#12268)
fix: use modern syntax for reexport bindings
1 parent ca1a20f commit a4e964a

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

crates/rspack_plugin_javascript/src/dependency/esm/esm_export_imported_specifier_dependency.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -768,11 +768,15 @@ impl ESMExportImportedSpecifierDependency {
768768
ignored.extend(hidden);
769769
}
770770

771-
// TODO: modern, need runtimeTemplate support https://github.com/webpack/webpack/blob/1f99ad6367f2b8a6ef17cce0e058f7a67fb7db18/lib/dependencies/HarmonyExportImportedSpecifierDependency.js#L1104-L1106
771+
let environment = compilation.options.output.environment;
772+
let supports_arrow_function = environment.supports_arrow_function();
773+
let supports_const = environment.supports_const();
774+
772775
let mut content = format!(
773776
r"
774777
/* reexport */ var __rspack_reexport = {{}};
775-
/* reexport */ for( var __rspack_import_key in {import_var}) "
778+
/* reexport */ for( {} __rspack_import_key in {import_var}) ",
779+
if supports_const { "const" } else { "var" }
776780
);
777781

778782
if ignored.len() > 1 {
@@ -787,9 +791,14 @@ impl ESMExportImportedSpecifierDependency {
787791
);
788792
}
789793
content += "__rspack_reexport[__rspack_import_key] =";
790-
// TODO should decide if `modern` is true
791-
content +=
792-
&format!("function(key) {{ return {import_var}[key]; }}.bind(0, __rspack_import_key)");
794+
795+
if supports_arrow_function {
796+
content += &format!("() => {import_var}[__rspack_import_key]");
797+
} else {
798+
content +=
799+
&format!("function(key) {{ return {import_var}[key]; }}.bind(0, __rspack_import_key)");
800+
}
801+
793802
runtime_requirements.insert(RuntimeGlobals::EXPORTS);
794803
runtime_requirements.insert(RuntimeGlobals::DEFINE_PROPERTY_GETTERS);
795804

0 commit comments

Comments
 (0)