Skip to content

Commit 40136f7

Browse files
authoredJul 28, 2023
fix(es/module): Do not determine module name for modules without exports in UMD (#7718)
**Related issue:** - Closes #6263.
1 parent 3f3de2e commit 40136f7

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed
 

‎crates/swc_ecma_transforms_module/src/umd.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,6 @@ where
110110
fn visit_mut_module(&mut self, module: &mut Module) {
111111
let import_interop = self.config.config.import_interop();
112112

113-
let filename = self.cm.span_to_filename(module.span);
114-
let exported_name = self.config.determine_export_name(filename);
115-
116113
let module_items = &mut module.body;
117114

118115
let mut strip = ModuleDeclStrip::new(self.const_var_kind);
@@ -170,7 +167,7 @@ where
170167
// Emit
171168
// ====================
172169

173-
let (adapter_fn_expr, factory_params) = self.adapter(exported_name, is_export_assign);
170+
let (adapter_fn_expr, factory_params) = self.adapter(module.span, is_export_assign);
174171

175172
let factory_fn_expr: Expr = Function {
176173
params: factory_params,
@@ -341,7 +338,7 @@ where
341338
/// });
342339
/// ```
343340
/// Return: adapter expr and factory params
344-
fn adapter(&mut self, exported_name: Ident, is_export_assign: bool) -> (FnExpr, Vec<Param>) {
341+
fn adapter(&mut self, module_span: Span, is_export_assign: bool) -> (FnExpr, Vec<Param>) {
345342
macro_rules! js_typeof {
346343
($test:expr =>! $type:expr) => {
347344
Expr::Unary(UnaryExpr {
@@ -375,7 +372,6 @@ where
375372
let factory = private_ident!("factory");
376373

377374
let module_exports = module.clone().make_member(quote_ident!("exports"));
378-
let global_lib = global.clone().make_member(exported_name);
379375
let define_amd = define.clone().make_member(quote_ident!("amd"));
380376

381377
let mut cjs_args = vec![];
@@ -385,6 +381,10 @@ where
385381
let mut factory_params = vec![];
386382

387383
if !is_export_assign && self.exports.is_some() {
384+
let filename = self.cm.span_to_filename(module_span);
385+
let exported_name = self.config.determine_export_name(filename);
386+
let global_lib = global.clone().make_member(exported_name);
387+
388388
cjs_args.push(quote_ident!("exports").as_arg());
389389
amd_dep_list.push(Some(quote_str!("exports").as_arg()));
390390
browser_args.push(

‎node-swc/__tests__/module_test.js

+17
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,20 @@ it("should work with amd and external helpers", () => {
4747
expect(out.code).toContain(`_class_call_check._(this, Foo);`);
4848
expect(out.code).toContain(`_inherits._(Bar, Foo);`);
4949
});
50+
51+
it('should not require filename if no exports in umd', () => {
52+
const code = `console.log('test')`;
53+
54+
const out = swc.transformSync(code, {
55+
jsc: {
56+
parser: {
57+
syntax: 'ecmascript',
58+
},
59+
},
60+
module: {
61+
type: 'umd',
62+
},
63+
isModule: true,
64+
});
65+
expect(out.code).toContain(`function(global`);
66+
});

1 commit comments

Comments
 (1)

github-actions[bot] commented on Jul 28, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 40136f7 Previous: 7ba7b6e Ratio
es/full/bugs-1 295949 ns/iter (± 4570) 292613 ns/iter (± 9598) 1.01
es/full/minify/libraries/antd 1422001199 ns/iter (± 22751541) 1300970785 ns/iter (± 10885766) 1.09
es/full/minify/libraries/d3 284049763 ns/iter (± 3252249) 278938859 ns/iter (± 3232583) 1.02
es/full/minify/libraries/echarts 1122162693 ns/iter (± 4703205) 1062319957 ns/iter (± 5585420) 1.06
es/full/minify/libraries/jquery 86427014 ns/iter (± 878768) 84274554 ns/iter (± 166924) 1.03
es/full/minify/libraries/lodash 99732165 ns/iter (± 854831) 98100362 ns/iter (± 349352) 1.02
es/full/minify/libraries/moment 50564444 ns/iter (± 218264) 49631568 ns/iter (± 199292) 1.02
es/full/minify/libraries/react 18204637 ns/iter (± 161756) 17918933 ns/iter (± 33046) 1.02
es/full/minify/libraries/terser 227044374 ns/iter (± 3382275) 220362223 ns/iter (± 924512) 1.03
es/full/minify/libraries/three 418600416 ns/iter (± 11896634) 383423154 ns/iter (± 1423791) 1.09
es/full/minify/libraries/typescript 2827508701 ns/iter (± 30085207) 2657663795 ns/iter (± 8921129) 1.06
es/full/minify/libraries/victory 608212951 ns/iter (± 9848770) 568475799 ns/iter (± 3692065) 1.07
es/full/minify/libraries/vue 124563271 ns/iter (± 1197327) 120116784 ns/iter (± 247052) 1.04
es/full/codegen/es3 33906 ns/iter (± 79) 34428 ns/iter (± 80) 0.98
es/full/codegen/es5 34067 ns/iter (± 76) 34489 ns/iter (± 135) 0.99
es/full/codegen/es2015 34020 ns/iter (± 128) 34454 ns/iter (± 82) 0.99
es/full/codegen/es2016 33998 ns/iter (± 56) 34452 ns/iter (± 87) 0.99
es/full/codegen/es2017 34027 ns/iter (± 100) 34464 ns/iter (± 77) 0.99
es/full/codegen/es2018 33919 ns/iter (± 67) 34480 ns/iter (± 84) 0.98
es/full/codegen/es2019 34060 ns/iter (± 127) 34509 ns/iter (± 99) 0.99
es/full/codegen/es2020 33923 ns/iter (± 127) 34524 ns/iter (± 79) 0.98
es/full/all/es3 175325023 ns/iter (± 948268) 174104513 ns/iter (± 835650) 1.01
es/full/all/es5 166953063 ns/iter (± 1235966) 164630441 ns/iter (± 1609662) 1.01
es/full/all/es2015 125827003 ns/iter (± 1710614) 124699369 ns/iter (± 904112) 1.01
es/full/all/es2016 124560386 ns/iter (± 566255) 123155353 ns/iter (± 381471) 1.01
es/full/all/es2017 123610250 ns/iter (± 390203) 122801784 ns/iter (± 1719036) 1.01
es/full/all/es2018 122125677 ns/iter (± 711132) 120767613 ns/iter (± 561454) 1.01
es/full/all/es2019 121203980 ns/iter (± 426326) 120283544 ns/iter (± 786964) 1.01
es/full/all/es2020 117434493 ns/iter (± 1200685) 115831872 ns/iter (± 407535) 1.01
es/full/parser 532486 ns/iter (± 6161) 529611 ns/iter (± 5239) 1.01
es/full/base/fixer 18081 ns/iter (± 91) 17998 ns/iter (± 249) 1.00
es/full/base/resolver_and_hygiene 83105 ns/iter (± 143) 83186 ns/iter (± 118) 1.00
serialization of serde 299 ns/iter (± 10) 298 ns/iter (± 0) 1.00
css/minify/libraries/bootstrap 29473864 ns/iter (± 291859) 28909367 ns/iter (± 53277) 1.02
css/visitor/compare/clone 1632671 ns/iter (± 3205) 1632123 ns/iter (± 8182) 1.00
css/visitor/compare/visit_mut_span 1774095 ns/iter (± 6210) 1770668 ns/iter (± 4589) 1.00
css/visitor/compare/visit_mut_span_panic 1846289 ns/iter (± 6876) 1831081 ns/iter (± 4005) 1.01
css/visitor/compare/fold_span 2565750 ns/iter (± 9937) 2561220 ns/iter (± 14094) 1.00
css/visitor/compare/fold_span_panic 2795179 ns/iter (± 19517) 2763839 ns/iter (± 17572) 1.01
css/lexer/bootstrap_5_1_3 4491527 ns/iter (± 5837) 4462435 ns/iter (± 3064) 1.01
css/lexer/foundation_6_7_4 3747413 ns/iter (± 1552) 3754639 ns/iter (± 3275) 1.00
css/lexer/tailwind_3_1_1 718266 ns/iter (± 399) 715398 ns/iter (± 1303) 1.00
css/parser/bootstrap_5_1_3 19754377 ns/iter (± 260690) 20104286 ns/iter (± 89068) 0.98
css/parser/foundation_6_7_4 15525256 ns/iter (± 52585) 16081542 ns/iter (± 45943) 0.97
css/parser/tailwind_3_1_1 3031825 ns/iter (± 9130) 3107646 ns/iter (± 4425) 0.98
es/codegen/colors 737276 ns/iter (± 403293) 734643 ns/iter (± 401977) 1.00
es/codegen/large 3138844 ns/iter (± 1677453) 3134420 ns/iter (± 1682394) 1.00
es/codegen/with-parser/colors 44635 ns/iter (± 509) 45036 ns/iter (± 465) 0.99
es/codegen/with-parser/large 483478 ns/iter (± 1021) 483091 ns/iter (± 726) 1.00
es/minify/libraries/antd 1231821401 ns/iter (± 17375863) 1138085686 ns/iter (± 16542090) 1.08
es/minify/libraries/d3 251696437 ns/iter (± 2711194) 241913269 ns/iter (± 3309026) 1.04
es/minify/libraries/echarts 996353788 ns/iter (± 16872985) 907587296 ns/iter (± 5670936) 1.10
es/minify/libraries/jquery 75332302 ns/iter (± 598435) 74357527 ns/iter (± 149135) 1.01
es/minify/libraries/lodash 90406861 ns/iter (± 1563682) 88941073 ns/iter (± 172555) 1.02
es/minify/libraries/moment 44897172 ns/iter (± 974580) 43817384 ns/iter (± 57538) 1.02
es/minify/libraries/react 16142602 ns/iter (± 178050) 16176232 ns/iter (± 29087) 1.00
es/minify/libraries/terser 194271147 ns/iter (± 2334202) 188149099 ns/iter (± 321922) 1.03
es/minify/libraries/three 345297124 ns/iter (± 5973365) 323129330 ns/iter (± 671538) 1.07
es/minify/libraries/typescript 2384431548 ns/iter (± 19070580) 2282172089 ns/iter (± 8093874) 1.04
es/minify/libraries/victory 509980120 ns/iter (± 16577032) 472456794 ns/iter (± 2202431) 1.08
es/minify/libraries/vue 109350440 ns/iter (± 1112412) 108088286 ns/iter (± 291029) 1.01
es/visitor/compare/clone 1951585 ns/iter (± 8949) 1928984 ns/iter (± 3274) 1.01
es/visitor/compare/visit_mut_span 2294205 ns/iter (± 13888) 2270956 ns/iter (± 7797) 1.01
es/visitor/compare/visit_mut_span_panic 2326324 ns/iter (± 8491) 2317299 ns/iter (± 3812) 1.00
es/visitor/compare/fold_span 3377957 ns/iter (± 17858) 3313534 ns/iter (± 4216) 1.02
es/visitor/compare/fold_span_panic 3498995 ns/iter (± 11256) 3477057 ns/iter (± 3457) 1.01
es/lexer/colors 12708 ns/iter (± 36) 12546 ns/iter (± 13) 1.01
es/lexer/angular 6106050 ns/iter (± 8032) 6180161 ns/iter (± 7938) 0.99
es/lexer/backbone 802014 ns/iter (± 1248) 800903 ns/iter (± 7709) 1.00
es/lexer/jquery 4461990 ns/iter (± 1917) 4489655 ns/iter (± 5784) 0.99
es/lexer/jquery mobile 6882571 ns/iter (± 4035) 6946337 ns/iter (± 30668) 0.99
es/lexer/mootools 3554555 ns/iter (± 3964) 3569666 ns/iter (± 12949) 1.00
es/lexer/underscore 673849 ns/iter (± 385) 674907 ns/iter (± 1014) 1.00
es/lexer/three 21053625 ns/iter (± 20888) 21248544 ns/iter (± 44746) 0.99
es/lexer/yui 3863579 ns/iter (± 5848) 3850698 ns/iter (± 5118) 1.00
es/parser/colors 26865 ns/iter (± 176) 26273 ns/iter (± 53) 1.02
es/parser/angular 13537755 ns/iter (± 87597) 13411388 ns/iter (± 40783) 1.01
es/parser/backbone 2005606 ns/iter (± 7017) 1994840 ns/iter (± 18508) 1.01
es/parser/jquery 10900687 ns/iter (± 61818) 10742773 ns/iter (± 34447) 1.01
es/parser/jquery mobile 16937362 ns/iter (± 204032) 16567063 ns/iter (± 35543) 1.02
es/parser/mootools 8352345 ns/iter (± 32304) 8294620 ns/iter (± 16078) 1.01
es/parser/underscore 1724034 ns/iter (± 7448) 1708116 ns/iter (± 9213) 1.01
es/parser/three 48475248 ns/iter (± 278790) 45986206 ns/iter (± 175509) 1.05
es/parser/yui 8273257 ns/iter (± 39670) 8203693 ns/iter (± 30971) 1.01
es/preset-env/usage/builtin_type 135420 ns/iter (± 31571) 134705 ns/iter (± 32207) 1.01
es/preset-env/usage/property 16669 ns/iter (± 60) 16316 ns/iter (± 47) 1.02
es/resolver/typescript 91461236 ns/iter (± 1217115) 88854912 ns/iter (± 1223927) 1.03
es/fixer/typescript 66278736 ns/iter (± 525393) 63851246 ns/iter (± 269961) 1.04
es/hygiene/typescript 138853273 ns/iter (± 2741401) 132918356 ns/iter (± 743705) 1.04
es/resolver_with_hygiene/typescript 257277489 ns/iter (± 3206661) 243198368 ns/iter (± 761162) 1.06
es/visitor/base-perf/module_clone 64045 ns/iter (± 404) 60913 ns/iter (± 420) 1.05
es/visitor/base-perf/fold_empty 66677 ns/iter (± 185) 64057 ns/iter (± 608) 1.04
es/visitor/base-perf/fold_noop_impl_all 67125 ns/iter (± 224) 64264 ns/iter (± 636) 1.04
es/visitor/base-perf/fold_noop_impl_vec 66215 ns/iter (± 381) 65396 ns/iter (± 573) 1.01
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 57 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 111 ns/iter (± 0) 109 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 79 ns/iter (± 0) 77 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2513 ns/iter (± 13) 2539 ns/iter (± 12) 0.99
es/base/parallel/resolver/typescript 4269237382 ns/iter (± 330499042) 4384674556 ns/iter (± 295005176) 0.97
es/base/parallel/hygiene/typescript 1490530093 ns/iter (± 30710697) 1474789056 ns/iter (± 20767135) 1.01
misc/visitors/time-complexity/time 5 142 ns/iter (± 1) 136 ns/iter (± 1) 1.04
misc/visitors/time-complexity/time 10 399 ns/iter (± 2) 385 ns/iter (± 2) 1.04
misc/visitors/time-complexity/time 15 695 ns/iter (± 5) 676 ns/iter (± 4) 1.03
misc/visitors/time-complexity/time 20 1080 ns/iter (± 9) 1061 ns/iter (± 6) 1.02
misc/visitors/time-complexity/time 40 3596 ns/iter (± 19) 3578 ns/iter (± 27) 1.01
misc/visitors/time-complexity/time 60 7443 ns/iter (± 36) 7337 ns/iter (± 24) 1.01
es/full-target/es2016 236568 ns/iter (± 1408) 235681 ns/iter (± 1163) 1.00
es/full-target/es2017 225991 ns/iter (± 809) 224478 ns/iter (± 533) 1.01
es/full-target/es2018 213739 ns/iter (± 487) 212600 ns/iter (± 787) 1.01
es2020_nullish_coalescing 69063 ns/iter (± 476) 68723 ns/iter (± 440) 1.00
es2020_optional_chaining 80062 ns/iter (± 486) 79314 ns/iter (± 257) 1.01
es2022_class_properties 118933 ns/iter (± 247) 118367 ns/iter (± 303) 1.00
es2018_object_rest_spread 74133 ns/iter (± 318) 73189 ns/iter (± 308) 1.01
es2019_optional_catch_binding 63636 ns/iter (± 260) 61952 ns/iter (± 209) 1.03
es2017_async_to_generator 63162 ns/iter (± 225) 61887 ns/iter (± 226) 1.02
es2016_exponentiation 67799 ns/iter (± 226) 67051 ns/iter (± 221) 1.01
es2015_arrow 70395 ns/iter (± 399) 70026 ns/iter (± 196) 1.01
es2015_block_scoped_fn 67680 ns/iter (± 275) 66764 ns/iter (± 267) 1.01
es2015_block_scoping 122038 ns/iter (± 410) 122251 ns/iter (± 721) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.