Skip to content

Commit a2d0408

Browse files
authoredJul 17, 2023
fix(es/module): Skip CJS and AMD transformations for Script (#7661)
**Related issue:** - Closes #7650
1 parent bed73c1 commit a2d0408

File tree

5 files changed

+41
-15
lines changed

5 files changed

+41
-15
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"jsc": {
3+
"target": "es2020",
4+
"parser": {
5+
"syntax": "typescript"
6+
}
7+
},
8+
"isModule": "unknown",
9+
"module": {
10+
"type": "commonjs"
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const a = require('foo')
2+
console.log(a)
3+
import('other')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const a = require('foo');
2+
console.log(a);
3+
import('other');

‎crates/swc_ecma_transforms_module/src/amd.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ where
129129
{
130130
noop_visit_mut_type!();
131131

132-
fn visit_mut_module_items(&mut self, n: &mut Vec<ModuleItem>) {
133-
if let Some(first) = n.first() {
132+
fn visit_mut_module(&mut self, n: &mut Module) {
133+
if let Some(first) = n.body.first() {
134134
if self.module_id.is_none() {
135135
self.module_id = self.get_amd_module_id_from_comments(first.span());
136136
}
@@ -139,13 +139,13 @@ where
139139
let import_interop = self.config.import_interop();
140140

141141
let mut strip = ModuleDeclStrip::new(self.const_var_kind);
142-
n.visit_mut_with(&mut strip);
142+
n.body.visit_mut_with(&mut strip);
143143

144-
let mut stmts: Vec<Stmt> = Vec::with_capacity(n.len() + 4);
144+
let mut stmts: Vec<Stmt> = Vec::with_capacity(n.body.len() + 4);
145145

146146
// "use strict";
147147
if self.config.strict_mode {
148-
stmts.push(clone_first_use_directive(n, true).unwrap_or_else(use_strict));
148+
stmts.push(clone_first_use_directive(&n.body, true).unwrap_or_else(use_strict));
149149
}
150150

151151
let ModuleDeclStrip {
@@ -169,7 +169,7 @@ where
169169
.map(From::from),
170170
);
171171

172-
stmts.extend(n.take().into_iter().filter_map(|item| match item {
172+
stmts.extend(n.body.take().into_iter().filter_map(|item| match item {
173173
ModuleItem::Stmt(stmt) if !stmt.is_directive() => Some(stmt),
174174
_ => None,
175175
}));
@@ -256,14 +256,18 @@ where
256256
.as_arg(),
257257
);
258258

259-
*n = vec![
259+
n.body = vec![
260260
quote_ident!(DUMMY_SP.apply_mark(self.unresolved_mark), "define")
261261
.as_call(DUMMY_SP, amd_call_args)
262262
.into_stmt()
263263
.into(),
264264
];
265265
}
266266

267+
fn visit_mut_script(&mut self, _: &mut Script) {
268+
// skip script
269+
}
270+
267271
fn visit_mut_expr(&mut self, n: &mut Expr) {
268272
match n {
269273
Expr::Call(CallExpr {

‎crates/swc_ecma_transforms_module/src/common_js.rs

+12-8
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@ where
9090
{
9191
noop_visit_mut_type!();
9292

93-
fn visit_mut_module_items(&mut self, n: &mut Vec<ModuleItem>) {
93+
fn visit_mut_module(&mut self, n: &mut Module) {
9494
let import_interop = self.config.import_interop();
9595

9696
let mut module_map = Default::default();
9797

9898
let mut has_ts_import_equals = false;
9999

100100
// handle `import foo = require("mod")`
101-
n.iter_mut().for_each(|item| {
101+
n.body.iter_mut().for_each(|item| {
102102
if let ModuleItem::ModuleDecl(module_decl) = item {
103103
*item = self.handle_ts_import_equals(
104104
module_decl.take(),
@@ -109,16 +109,16 @@ where
109109
});
110110

111111
let mut strip = ModuleDeclStrip::new(self.const_var_kind);
112-
n.visit_mut_with(&mut strip);
112+
n.body.visit_mut_with(&mut strip);
113113

114-
let mut stmts: Vec<ModuleItem> = Vec::with_capacity(n.len() + 6);
114+
let mut stmts: Vec<ModuleItem> = Vec::with_capacity(n.body.len() + 6);
115115

116-
stmts.extend(clone_first_use_directive(n, false).map(From::from));
116+
stmts.extend(clone_first_use_directive(&n.body, false).map(From::from));
117117

118118
// "use strict";
119119
if self.config.strict_mode {
120120
stmts.push(
121-
clone_first_use_directive(n, true)
121+
clone_first_use_directive(&n.body, true)
122122
.unwrap_or_else(use_strict)
123123
.into(),
124124
);
@@ -155,7 +155,7 @@ where
155155
.map(From::from),
156156
);
157157

158-
stmts.extend(n.take().into_iter().filter(|item| match item {
158+
stmts.extend(n.body.take().into_iter().filter(|item| match item {
159159
ModuleItem::Stmt(stmt) => !stmt.is_directive(),
160160
_ => false,
161161
}));
@@ -184,7 +184,11 @@ where
184184
self.config.allow_top_level_this,
185185
));
186186

187-
*n = stmts;
187+
n.body = stmts;
188+
}
189+
190+
fn visit_mut_script(&mut self, _: &mut Script) {
191+
// skip script
188192
}
189193

190194
fn visit_mut_expr(&mut self, n: &mut Expr) {

1 commit comments

Comments
 (1)

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

@github-actions[bot]

Benchmark

Benchmark suite Current: a2d0408 Previous: c0e4805 Ratio
es/full/bugs-1 289772 ns/iter (± 7279) 285110 ns/iter (± 7646) 1.02
es/full/minify/libraries/antd 1427195090 ns/iter (± 19347397) 1332912940 ns/iter (± 8992554) 1.07
es/full/minify/libraries/d3 293890814 ns/iter (± 5210902) 284825221 ns/iter (± 3012785) 1.03
es/full/minify/libraries/echarts 1127662261 ns/iter (± 16608581) 1088226300 ns/iter (± 6097842) 1.04
es/full/minify/libraries/jquery 87664418 ns/iter (± 3603741) 85115948 ns/iter (± 268873) 1.03
es/full/minify/libraries/lodash 101296454 ns/iter (± 1491577) 98959487 ns/iter (± 303520) 1.02
es/full/minify/libraries/moment 50758729 ns/iter (± 749969) 49963312 ns/iter (± 118753) 1.02
es/full/minify/libraries/react 18192445 ns/iter (± 112401) 18027897 ns/iter (± 48959) 1.01
es/full/minify/libraries/terser 227940389 ns/iter (± 2864508) 221052619 ns/iter (± 1489697) 1.03
es/full/minify/libraries/three 403711030 ns/iter (± 8863632) 392301908 ns/iter (± 2244487) 1.03
es/full/minify/libraries/typescript 2806644043 ns/iter (± 18361484) 2727188580 ns/iter (± 52255007) 1.03
es/full/minify/libraries/victory 602809339 ns/iter (± 13917965) 591423594 ns/iter (± 7048618) 1.02
es/full/minify/libraries/vue 122932567 ns/iter (± 576430) 121383026 ns/iter (± 434898) 1.01
es/full/codegen/es3 35079 ns/iter (± 119) 34849 ns/iter (± 49) 1.01
es/full/codegen/es5 34976 ns/iter (± 146) 34802 ns/iter (± 86) 1.00
es/full/codegen/es2015 35155 ns/iter (± 139) 34806 ns/iter (± 79) 1.01
es/full/codegen/es2016 35110 ns/iter (± 121) 34839 ns/iter (± 48) 1.01
es/full/codegen/es2017 35070 ns/iter (± 153) 34839 ns/iter (± 65) 1.01
es/full/codegen/es2018 35038 ns/iter (± 135) 34796 ns/iter (± 33) 1.01
es/full/codegen/es2019 34948 ns/iter (± 167) 34913 ns/iter (± 71) 1.00
es/full/codegen/es2020 35087 ns/iter (± 150) 34735 ns/iter (± 51) 1.01
es/full/all/es3 174110729 ns/iter (± 1192190) 172888505 ns/iter (± 1330203) 1.01
es/full/all/es5 164962083 ns/iter (± 1367343) 165138651 ns/iter (± 1597010) 1.00
es/full/all/es2015 124439502 ns/iter (± 1328429) 123946819 ns/iter (± 586182) 1.00
es/full/all/es2016 123751174 ns/iter (± 575023) 122612835 ns/iter (± 379147) 1.01
es/full/all/es2017 123076686 ns/iter (± 615926) 122711877 ns/iter (± 711570) 1.00
es/full/all/es2018 120741008 ns/iter (± 836438) 120834403 ns/iter (± 594181) 1.00
es/full/all/es2019 120656148 ns/iter (± 1056561) 119939070 ns/iter (± 650414) 1.01
es/full/all/es2020 115696908 ns/iter (± 615796) 114889368 ns/iter (± 492264) 1.01
es/full/parser 539150 ns/iter (± 6464) 526838 ns/iter (± 6685) 1.02
es/full/base/fixer 19686 ns/iter (± 139) 18876 ns/iter (± 261) 1.04
es/full/base/resolver_and_hygiene 80766 ns/iter (± 234) 81472 ns/iter (± 269) 0.99
serialization of serde 314 ns/iter (± 1) 312 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 30438022 ns/iter (± 183355) 29174607 ns/iter (± 52521) 1.04
css/visitor/compare/clone 1700985 ns/iter (± 11573) 1694445 ns/iter (± 5824) 1.00
css/visitor/compare/visit_mut_span 1805004 ns/iter (± 15945) 1782869 ns/iter (± 12851) 1.01
css/visitor/compare/visit_mut_span_panic 1909923 ns/iter (± 12949) 1872934 ns/iter (± 10855) 1.02
css/visitor/compare/fold_span 2572735 ns/iter (± 23471) 2531318 ns/iter (± 18390) 1.02
css/visitor/compare/fold_span_panic 2748804 ns/iter (± 14258) 2740699 ns/iter (± 15980) 1.00
css/lexer/bootstrap_5_1_3 4429748 ns/iter (± 4680) 4454677 ns/iter (± 2284) 0.99
css/lexer/foundation_6_7_4 3730857 ns/iter (± 2121) 3751781 ns/iter (± 2069) 0.99
css/lexer/tailwind_3_1_1 708760 ns/iter (± 1992) 712905 ns/iter (± 296) 0.99
css/parser/bootstrap_5_1_3 19465582 ns/iter (± 55295) 19730039 ns/iter (± 38829) 0.99
css/parser/foundation_6_7_4 15527992 ns/iter (± 27287) 15784296 ns/iter (± 20197) 0.98
css/parser/tailwind_3_1_1 3008952 ns/iter (± 11784) 3054961 ns/iter (± 4216) 0.98
es/codegen/colors 732143 ns/iter (± 400532) 733086 ns/iter (± 401028) 1.00
es/codegen/large 3136802 ns/iter (± 1661513) 3135157 ns/iter (± 1666366) 1.00
es/codegen/with-parser/colors 44008 ns/iter (± 622) 44244 ns/iter (± 422) 0.99
es/codegen/with-parser/large 483448 ns/iter (± 1112) 482591 ns/iter (± 622) 1.00
es/minify/libraries/antd 1252974482 ns/iter (± 23989848) 1175297391 ns/iter (± 27856056) 1.07
es/minify/libraries/d3 254584346 ns/iter (± 1997705) 243391432 ns/iter (± 2025776) 1.05
es/minify/libraries/echarts 998744566 ns/iter (± 17282105) 932125711 ns/iter (± 7507170) 1.07
es/minify/libraries/jquery 75426373 ns/iter (± 270202) 74124888 ns/iter (± 148857) 1.02
es/minify/libraries/lodash 89575297 ns/iter (± 387307) 88688271 ns/iter (± 405872) 1.01
es/minify/libraries/moment 44343323 ns/iter (± 296778) 43723990 ns/iter (± 57015) 1.01
es/minify/libraries/react 16312154 ns/iter (± 98139) 16062686 ns/iter (± 46029) 1.02
es/minify/libraries/terser 194964564 ns/iter (± 1907059) 188862833 ns/iter (± 458873) 1.03
es/minify/libraries/three 342472861 ns/iter (± 3757310) 328427757 ns/iter (± 1795878) 1.04
es/minify/libraries/typescript 2426047133 ns/iter (± 23814547) 2331363444 ns/iter (± 14335492) 1.04
es/minify/libraries/victory 520217848 ns/iter (± 10242782) 507165097 ns/iter (± 6714665) 1.03
es/minify/libraries/vue 109564189 ns/iter (± 538927) 110112821 ns/iter (± 1317137) 1.00
es/visitor/compare/clone 1957099 ns/iter (± 13290) 1964450 ns/iter (± 4917) 1.00
es/visitor/compare/visit_mut_span 2282137 ns/iter (± 2421) 2285460 ns/iter (± 1818) 1.00
es/visitor/compare/visit_mut_span_panic 2336601 ns/iter (± 12385) 2341639 ns/iter (± 3174) 1.00
es/visitor/compare/fold_span 3370300 ns/iter (± 30996) 3399756 ns/iter (± 6508) 0.99
es/visitor/compare/fold_span_panic 3491401 ns/iter (± 12322) 3541623 ns/iter (± 5535) 0.99
es/lexer/colors 12843 ns/iter (± 16) 12461 ns/iter (± 7) 1.03
es/lexer/angular 6051190 ns/iter (± 3121) 6024494 ns/iter (± 7201) 1.00
es/lexer/backbone 787850 ns/iter (± 1609) 790153 ns/iter (± 612) 1.00
es/lexer/jquery 4403817 ns/iter (± 2790) 4417746 ns/iter (± 4218) 1.00
es/lexer/jquery mobile 6773772 ns/iter (± 12413) 6766350 ns/iter (± 3188) 1.00
es/lexer/mootools 3500888 ns/iter (± 1988) 3507943 ns/iter (± 1627) 1.00
es/lexer/underscore 655314 ns/iter (± 394) 656862 ns/iter (± 1075) 1.00
es/lexer/three 20877798 ns/iter (± 38758) 20845880 ns/iter (± 16490) 1.00
es/lexer/yui 3816714 ns/iter (± 1815) 3782897 ns/iter (± 2003) 1.01
es/parser/colors 26740 ns/iter (± 45) 26794 ns/iter (± 67) 1.00
es/parser/angular 13724604 ns/iter (± 320615) 13568364 ns/iter (± 70768) 1.01
es/parser/backbone 2003133 ns/iter (± 9822) 2012353 ns/iter (± 9799) 1.00
es/parser/jquery 11184659 ns/iter (± 204499) 10946518 ns/iter (± 49485) 1.02
es/parser/jquery mobile 16953652 ns/iter (± 174092) 16903732 ns/iter (± 58868) 1.00
es/parser/mootools 8435915 ns/iter (± 22774) 8450651 ns/iter (± 15405) 1.00
es/parser/underscore 1727653 ns/iter (± 28759) 1732292 ns/iter (± 11748) 1.00
es/parser/three 49682504 ns/iter (± 647074) 47042610 ns/iter (± 289016) 1.06
es/parser/yui 8321583 ns/iter (± 121842) 8381403 ns/iter (± 22205) 0.99
es/preset-env/usage/builtin_type 138570 ns/iter (± 33539) 139532 ns/iter (± 32778) 0.99
es/preset-env/usage/property 16548 ns/iter (± 59) 16840 ns/iter (± 104) 0.98
es/resolver/typescript 90806722 ns/iter (± 1034459) 88373546 ns/iter (± 1075666) 1.03
es/fixer/typescript 66342065 ns/iter (± 1011265) 63665395 ns/iter (± 1650153) 1.04
es/hygiene/typescript 136892301 ns/iter (± 1655858) 131801991 ns/iter (± 1166956) 1.04
es/resolver_with_hygiene/typescript 253716136 ns/iter (± 2808018) 244025065 ns/iter (± 1979050) 1.04
es/visitor/base-perf/module_clone 59576 ns/iter (± 330) 59797 ns/iter (± 333) 1.00
es/visitor/base-perf/fold_empty 63494 ns/iter (± 320) 63888 ns/iter (± 543) 0.99
es/visitor/base-perf/fold_noop_impl_all 63882 ns/iter (± 254) 63593 ns/iter (± 507) 1.00
es/visitor/base-perf/fold_noop_impl_vec 64516 ns/iter (± 253) 63830 ns/iter (± 727) 1.01
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 39 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_boxed 111 ns/iter (± 0) 109 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 77 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2497 ns/iter (± 26) 2515 ns/iter (± 10) 0.99
es/base/parallel/resolver/typescript 3895918900 ns/iter (± 268116074) 3886048603 ns/iter (± 285298647) 1.00
es/base/parallel/hygiene/typescript 1481648728 ns/iter (± 19895026) 1438943268 ns/iter (± 16181019) 1.03
misc/visitors/time-complexity/time 5 145 ns/iter (± 2) 137 ns/iter (± 2) 1.06
misc/visitors/time-complexity/time 10 413 ns/iter (± 4) 405 ns/iter (± 8) 1.02
misc/visitors/time-complexity/time 15 662 ns/iter (± 3) 525 ns/iter (± 63) 1.26
misc/visitors/time-complexity/time 20 1048 ns/iter (± 2) 1048 ns/iter (± 4) 1
misc/visitors/time-complexity/time 40 3483 ns/iter (± 4) 3474 ns/iter (± 8) 1.00
misc/visitors/time-complexity/time 60 7209 ns/iter (± 24) 8780 ns/iter (± 504) 0.82
es/full-target/es2016 233950 ns/iter (± 601) 236378 ns/iter (± 1142) 0.99
es/full-target/es2017 221452 ns/iter (± 557) 224876 ns/iter (± 603) 0.98
es/full-target/es2018 210042 ns/iter (± 655) 212252 ns/iter (± 1316) 0.99
es2020_nullish_coalescing 70947 ns/iter (± 310) 69455 ns/iter (± 561) 1.02
es2020_optional_chaining 81595 ns/iter (± 307) 79617 ns/iter (± 254) 1.02
es2022_class_properties 118243 ns/iter (± 370) 115920 ns/iter (± 313) 1.02
es2018_object_rest_spread 75998 ns/iter (± 407) 75080 ns/iter (± 201) 1.01
es2019_optional_catch_binding 64212 ns/iter (± 350) 63316 ns/iter (± 243) 1.01
es2017_async_to_generator 64384 ns/iter (± 216) 63060 ns/iter (± 154) 1.02
es2016_exponentiation 69246 ns/iter (± 194) 67710 ns/iter (± 215) 1.02
es2015_arrow 71883 ns/iter (± 203) 70343 ns/iter (± 181) 1.02
es2015_block_scoped_fn 69291 ns/iter (± 244) 68107 ns/iter (± 308) 1.02
es2015_block_scoping 124249 ns/iter (± 499) 120271 ns/iter (± 1686) 1.03

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

Please sign in to comment.