diff --git a/Cargo.lock b/Cargo.lock index c256302c5fc..bbc49847c77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,9 +68,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ast_node" -version = "0.8.2" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a36288803cd1605bc4f0e3189970a0db8e602bb01a39f8133889f35ece7ddde" +checksum = "cf94863c5fdfee166d0907c44e5fee970123b2b7307046d35d1e671aa93afbba" dependencies = [ "darling", "pmutil", @@ -487,6 +487,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "fnv" version = "1.0.7" @@ -626,9 +632,9 @@ checksum = "05a0bd019339e5d968b37855180087b7b9d512c5046fbd244cf8c95687927d6e" [[package]] name = "is-macro" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b2c46692aee0d1b3aad44e781ac0f0e7db42ef27adaa0a877b627040019813" +checksum = "1c068d4c6b922cd6284c609cfa6dec0e41615c9c5a1a4ba729a970d8daba05fb" dependencies = [ "Inflector", "pmutil", @@ -1057,15 +1063,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" -[[package]] -name = "ordered-float" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" -dependencies = [ - "num-traits", -] - [[package]] name = "oxipng" version = "5.0.1" @@ -1212,6 +1209,16 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "phf" version = "0.10.1" @@ -1299,9 +1306,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "preset_env_base" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3fc6fae03023ee1badb75ccbefc36379c419754b30e3848b77a4327f4ec1e2" +checksum = "371fa3d5cd3a90724d8e8ad1e3201854dded11e79b5365dabd5e1e389274d001" dependencies = [ "ahash", "anyhow", @@ -1606,6 +1613,12 @@ dependencies = [ "static-map-macro", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static-map-macro" version = "0.2.3" @@ -1665,9 +1678,9 @@ dependencies = [ [[package]] name = "string_enum" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f584cc881e9e5f1fd6bf827b0444aa94c30d8fe6378cf241071b5f5700b2871f" +checksum = "994453cd270ad0265796eb24abf5540091ed03e681c5f3c12bc33e4db33253e1" dependencies = [ "pmutil", "proc-macro2", @@ -1690,22 +1703,23 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "swc_atoms" -version = "0.4.8" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454bf2d73485f6c4af9c91e70ce4fd4f17e9294d37b9f2037a3c4c2fe54b598d" +checksum = "f5ffecde9d1a937a61b4799478d598121b539eb7da6127c16af86a044017e1e5" dependencies = [ "once_cell", "rustc-hash", "serde", "string_cache", "string_cache_codegen", + "triomphe", ] [[package]] name = "swc_cached" -version = "0.3.5" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395389d54bea607246bb4a400b9b3df2e55adfe8fcce7965a5b99fed7816cf4d" +checksum = "9745d42d167cb60aeb1e85d2ee813ca455c3185bf7417f11fd102d745ae2b9e1" dependencies = [ "ahash", "anyhow", @@ -1713,14 +1727,13 @@ dependencies = [ "once_cell", "regex", "serde", - "swc_atoms", ] [[package]] name = "swc_common" -version = "0.27.13" +version = "0.29.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba38a2f1291fcf3f78f357802b8cec72ecf5e95808e9d937783e60cd3570b93" +checksum = "251762fb5b797ece63903a9a6625af90f3c49b41d8c6ed40d0362a06de749d4f" dependencies = [ "ahash", "ast_node", @@ -1748,11 +1761,10 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb05ef56c14b95dd7e62e95960153af811b9a447287f1f6ca59f1337fb83d4" +checksum = "b4de36224eb9498fccd4e68971f0b83326ccf8592c2d424f257f3a1c76b2b211" dependencies = [ - "anyhow", "indexmap", "serde", "serde_json", @@ -1774,9 +1786,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.90.12" +version = "0.94.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b4c117b34ccc510cf6245c2f9b1f24a933beb2ef858bbfba99fb195525ddde" +checksum = "2509a573182f91de55320e6427e1ecf77a50dda3f63a0cc9e5a96bcaca53fe14" dependencies = [ "bitflags", "is-macro", @@ -1791,9 +1803,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.122.0" +version = "0.127.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0acc7d3ea2b74109e0d6803c9653711958aaa01889a226ee12c93f92d5de0fe4" +checksum = "4cb7f63d1b20dc149a3392cc93b2e35efcab80ab5daeba3b18be70fd4f704e18" dependencies = [ "memchr", "num-bigint", @@ -1823,9 +1835,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.39.4" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece6023a43222e3bd36e3d191fa5289c848245b97fbf0127d9c0923165648d18" +checksum = "db84a155dae4e16871718558a47ad12501edcf29437499d0852357bd706e584e" dependencies = [ "ahash", "anyhow", @@ -1842,9 +1854,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.118.0" +version = "0.122.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fe54d8da755f649c81337de073f393eb852d9194a19dfbeebaada772265730" +checksum = "8fe933ad09ff54919b735253714415540c94c471e6296ff1cb5191070df582ca" dependencies = [ "either", "enum_kind", @@ -1861,9 +1873,9 @@ dependencies = [ [[package]] name = "swc_ecma_preset_env" -version = "0.161.0" +version = "0.174.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "785793720219c467ef461003320cabee596d12d05dfdc5bd3d89ff38bd13c58c" +checksum = "3ed90888629dd8a292d2ba06624ee81d29fb2b7819bdfd4d6380dae01485fa87" dependencies = [ "ahash", "anyhow", @@ -1886,9 +1898,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms" -version = "0.185.1" +version = "0.198.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e307b4c2100104d10f5840f5cba0c7b2db00742acb88d65652bb86bc4463d5b" +checksum = "def7a7c90feea88d94af3431c88c7fe4d539ecfadf64dbdacd4e3aa855995e6b" dependencies = [ "swc_atoms", "swc_common", @@ -1906,13 +1918,12 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.104.1" +version = "0.111.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d7aeb3338fbc35b2d8f881a6102588b6cd1a6d7d6edf333252ee358c6e9b2c" +checksum = "516fb67ef7f17a5aba02f5ed1abdf31c08fe62fc1268ae254f6003a4fc813519" dependencies = [ "better_scoped_tls", "bitflags", - "num_cpus", "once_cell", "phf", "rustc-hash", @@ -1929,9 +1940,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.93.0" +version = "0.100.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5368a6459a31def42c29a8d0e5ebaafdbe9c731b244a2deb976151d12e37fe4" +checksum = "6a9ce9bfd0a7433a8e59c52fbe65761d496c045bb9ec703371f0e4b763f977cf" dependencies = [ "swc_atoms", "swc_common", @@ -1943,16 +1954,15 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_compat" -version = "0.124.0" +version = "0.136.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c376bfd35ce0fa4fcd90868b066191e10f6eb2426b12fe9b3d031a465f65a98" +checksum = "0885003edb4022617a06773dc8a8b8a2e66b52adc671ae13c2518070925fb506" dependencies = [ "ahash", "arrayvec", "indexmap", "is-macro", "num-bigint", - "ordered-float", "serde", "smallvec", "swc_atoms", @@ -1983,9 +1993,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_module" -version = "0.141.0" +version = "0.153.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8f03422562c4747c78a55f6ba41625eb1a6167ec8b152df5a28a5bb36ab345" +checksum = "3a7d7d0d8549f86b722cd281bc95a9f5d7195bd22a1ce908bdb3101a5d4eed3e" dependencies = [ "Inflector", "ahash", @@ -2011,14 +2021,15 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "0.154.0" +version = "0.167.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ad6077e00037f2249df854b60359d6aa85ffbc83ce7e9aea59734016af941a" +checksum = "59f3d52968af7e606ecd3bf93709f72ffaeae39e0fc562cf7b75ebfd7b750d55" dependencies = [ "ahash", "dashmap", "indexmap", "once_cell", + "petgraph", "rustc-hash", "serde_json", "swc_atoms", @@ -2029,14 +2040,15 @@ dependencies = [ "swc_ecma_transforms_macros", "swc_ecma_utils", "swc_ecma_visit", + "swc_fast_graph", "tracing", ] [[package]] name = "swc_ecma_transforms_proposal" -version = "0.132.0" +version = "0.144.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f6e9c5772404d7a07a2cda019717cbd294d47215a7a2101332d1d4b64fdc92" +checksum = "63ec259668d062b8fde49f7fb55d75090613326f9d4ad47c0b4b82cd17e005db" dependencies = [ "either", "serde", @@ -2053,9 +2065,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.143.0" +version = "0.155.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cee549bb5166dd212e5e18f49ddd3e5db9698314aa1ffa6deea553f659978e" +checksum = "1846d9026c60ec3ddc60614208822f31edad8f1a1e9b2d418d8dde1b5c1b48ab" dependencies = [ "ahash", "base64 0.13.0", @@ -2079,9 +2091,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.147.0" +version = "0.159.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020383a6e9aa3ab8225f50de42b2528f5d3130a7d92b436a8594d2af05e244aa" +checksum = "b45f4c6cb1393d6c9b4ba4fde180a89531b02ea071f8456d6aec8b1689e97849" dependencies = [ "serde", "swc_atoms", @@ -2095,11 +2107,12 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.100.2" +version = "0.105.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671eb0ef731ab6e9357e0a1845f527b02ed319b813b0e274d87b8d942554a353" +checksum = "2f42229b20da7a989955c37efe6ea3f73486254b41170b151e2f6c115bb21031" dependencies = [ "indexmap", + "num_cpus", "once_cell", "swc_atoms", "swc_common", @@ -2111,9 +2124,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.76.6" +version = "0.80.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02cb4c2c4213d603543e7232db69e763a9292953db511b0ed5d1bf8c1b227b90" +checksum = "02ba4bec476ac4d25e48a6f777b19e8eb857a3ad453c830ef74176c8574177a1" dependencies = [ "num-bigint", "swc_atoms", @@ -2125,9 +2138,9 @@ dependencies = [ [[package]] name = "swc_ecmascript" -version = "0.192.0" +version = "0.205.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b18f993b6f6e8a5e81230226af043063f28e83eec89cf93d3cb554d2c63bdb" +checksum = "75c7ac19d9dcd4cea7f6f1cbbcf58f5149d5135ec971c2121ee236492a4f4b89" dependencies = [ "swc_ecma_ast", "swc_ecma_codegen", @@ -2150,6 +2163,18 @@ dependencies = [ "syn", ] +[[package]] +name = "swc_fast_graph" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8b7421429d484e75ac5c70a4ae3c89b9e7bf0a1950731b6847cb22e001ad667" +dependencies = [ + "ahash", + "indexmap", + "petgraph", + "swc_common", +] + [[package]] name = "swc_macros_common" version = "0.3.6" @@ -2175,9 +2200,9 @@ dependencies = [ [[package]] name = "swc_visit" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b754ef01f2614eb469fd5215789bfd319566a3bf1033056d7a7bfb5a3c9a69f5" +checksum = "82f2bcb7223e185c4c7cbf5e0c1207dec6d2bfd5e72e3fb7b3e8d179747e9130" dependencies = [ "either", "swc_visit_macros", @@ -2185,9 +2210,9 @@ dependencies = [ [[package]] name = "swc_visit_macros" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c230bcd129d1fbcd1decd8b43cccd613fda11c895f7c04d6c966231dbc1959af" +checksum = "8fb1f3561674d84947694d41fb6d5737d19539222779baeac1b3a071a2b29428" dependencies = [ "Inflector", "pmutil", @@ -2312,6 +2337,16 @@ dependencies = [ "once_cell", ] +[[package]] +name = "triomphe" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1ee9bd9239c339d714d657fac840c6d2a4f9c45f4f9ec7b0975113458be78db" +dependencies = [ + "serde", + "stable_deref_trait", +] + [[package]] name = "typed-arena" version = "1.7.0" diff --git a/packages/core/integration-tests/test/javascript.js b/packages/core/integration-tests/test/javascript.js index 6c25eb10a05..7d4ae18e117 100644 --- a/packages/core/integration-tests/test/javascript.js +++ b/packages/core/integration-tests/test/javascript.js @@ -5703,7 +5703,7 @@ describe('javascript', function () { }, { message: - 'External dependency "@swc/helpers" does not satisfy required semver range "^0.4.2".', + 'External dependency "@swc/helpers" does not satisfy required semver range "^0.4.12".', origin: '@parcel/resolver-default', codeFrames: [ { @@ -5726,7 +5726,7 @@ describe('javascript', function () { }, ], hints: [ - 'Update the dependency on "@swc/helpers" to satisfy "^0.4.2".', + 'Update the dependency on "@swc/helpers" to satisfy "^0.4.12".', ], }, ], diff --git a/packages/transformers/js/core/Cargo.toml b/packages/transformers/js/core/Cargo.toml index a758e450a21..a5145722163 100644 --- a/packages/transformers/js/core/Cargo.toml +++ b/packages/transformers/js/core/Cargo.toml @@ -8,9 +8,9 @@ edition = "2018" crate-type = ["rlib"] [dependencies] -swc_ecmascript = { version = "0.192.0", features = ["parser", "transforms", "module", "optimization", "react", "typescript", "utils", "visit", "codegen", "utils", "preset_env"] } -swc_common = { version = "0.27.13", features = ["tty-emitter", "sourcemap"] } -swc_atoms = "0.4.8" +swc_ecmascript = { version = "0.205.17", features = ["parser", "transforms", "module", "optimization", "react", "typescript", "utils", "visit", "codegen", "utils", "preset_env"] } +swc_common = { version = "0.29.8", features = ["tty-emitter", "sourcemap"] } +swc_atoms = "0.4.21" indoc = "1.0.3" serde = "1.0.123" serde_bytes = "0.11.5" diff --git a/packages/transformers/js/core/src/dependency_collector.rs b/packages/transformers/js/core/src/dependency_collector.rs index 5e729aa8c3f..22335494e35 100644 --- a/packages/transformers/js/core/src/dependency_collector.rs +++ b/packages/transformers/js/core/src/dependency_collector.rs @@ -247,7 +247,7 @@ impl<'a> Fold for DependencyCollector<'a> { if let Some(decl) = self.import_meta.take() { res.body.insert( 0, - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(decl))), + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(decl)))), ); } res @@ -1004,7 +1004,7 @@ fn build_promise_chain(node: ast::CallExpr, require_node: ast::CallExpr) -> ast: args: vec![ast::ExprOrSpread { expr: Box::new(ast::Expr::Fn(ast::FnExpr { ident: None, - function: ast::Function { + function: Box::new(ast::Function { body: Some(ast::BlockStmt { span: DUMMY_SP, stmts: vec![ast::Stmt::Return(ast::ReturnStmt { @@ -1019,7 +1019,7 @@ fn build_promise_chain(node: ast::CallExpr, require_node: ast::CallExpr) -> ast: return_type: None, type_params: None, span: DUMMY_SP, - }, + }), })), spread: None, }], @@ -1203,7 +1203,7 @@ impl<'a> DependencyCollector<'a> { .. }) => { // Match "file:" + __filename - let left = match_str(&*left); + let left = match_str(left); match (left, &**right) { (Some((left, _)), Expr::Ident(Ident { sym: right, .. })) => { &left == "file:" && right == "__filename" diff --git a/packages/transformers/js/core/src/fs.rs b/packages/transformers/js/core/src/fs.rs index 3b97b9ece52..a8f61410983 100644 --- a/packages/transformers/js/core/src/fs.rs +++ b/packages/transformers/js/core/src/fs.rs @@ -254,7 +254,7 @@ impl<'a> Fold for Evaluator<'a> { }, Expr::Call(call) => { let callee = match &call.callee { - Callee::Expr(expr) => &*expr, + Callee::Expr(expr) => expr, _ => return node, }; diff --git a/packages/transformers/js/core/src/hoist.rs b/packages/transformers/js/core/src/hoist.rs index f63e93f8aee..27cd74b3ba3 100644 --- a/packages/transformers/js/core/src/hoist.rs +++ b/packages/transformers/js/core/src/hoist.rs @@ -148,7 +148,9 @@ impl<'a> Fold for Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: format!("{}:{}:{}", self.module_id, import.src.value, "esm").into(), + src: Box::new( + format!("{}:{}:{}", self.module_id, import.src.value, "esm").into(), + ), type_only: false, }))); // Ensure that all import specifiers are constant. @@ -193,11 +195,11 @@ impl<'a> Fold for Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: Str { + src: Box::new(Str { value: format!("{}:{}:{}", self.module_id, src.value, "esm").into(), span: DUMMY_SP, raw: None, - }, + }), type_only: false, }))); @@ -286,7 +288,9 @@ impl<'a> Fold for Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: format!("{}:{}:{}", self.module_id, export.src.value, "esm").into(), + src: Box::new( + format!("{}:{}:{}", self.module_id, export.src.value, "esm").into(), + ), type_only: false, }))); self.re_exports.push(ImportedSymbol { @@ -302,7 +306,7 @@ impl<'a> Fold for Hoist<'a> { let init = export.expr.fold_with(self); self .module_items - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { declare: false, kind: VarDeclKind::Var, span: DUMMY_SP, @@ -312,7 +316,7 @@ impl<'a> Fold for Hoist<'a> { name: Pat::Ident(BindingIdent::from(ident)), init: Some(init), }], - })))); + }))))); } ModuleDecl::ExportDefaultDecl(export) => { let decl = match export.decl { @@ -380,7 +384,7 @@ impl<'a> Fold for Hoist<'a> { }; self .module_items - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(var)))); + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(var))))); } self @@ -389,11 +393,11 @@ impl<'a> Fold for Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: Str { + src: Box::new(Str { value: format!("{}:{}", self.module_id, source).into(), span: DUMMY_SP, raw: None, - }, + }), type_only: false, }))); @@ -422,7 +426,7 @@ impl<'a> Fold for Hoist<'a> { }; self .module_items - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(var)))); + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(var))))); } self .module_items @@ -430,11 +434,11 @@ impl<'a> Fold for Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: Str { + src: Box::new(Str { value: format!("{}:{}", self.module_id, source,).into(), span: DUMMY_SP, raw: None, - }, + }), type_only: false, }))); @@ -460,9 +464,10 @@ impl<'a> Fold for Hoist<'a> { declare: var.declare, decls: std::mem::take(&mut decls), }; - self - .module_items - .insert(items_len, ModuleItem::Stmt(Stmt::Decl(Decl::Var(var)))); + self.module_items.insert( + items_len, + ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(var)))), + ); } decls.push(d); } @@ -477,7 +482,7 @@ impl<'a> Fold for Hoist<'a> { }; self .module_items - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(var)))) + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(var))))) } } item => { @@ -897,7 +902,7 @@ impl<'a> Fold for Hoist<'a> { if self.collect.static_cjs_exports && self.export_decls.insert(ident.id.sym.clone()) { self .hoisted_imports - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { declare: false, kind: VarDeclKind::Var, span: node.span, @@ -910,7 +915,7 @@ impl<'a> Fold for Hoist<'a> { ))), init: None, }], - })))); + }))))); } return AssignExpr { @@ -986,7 +991,7 @@ impl<'a> Hoist<'a> { specifiers: vec![], asserts: None, span: DUMMY_SP, - src: src.into(), + src: Box::new(src.into()), type_only: false, }))); } @@ -1025,10 +1030,10 @@ impl<'a> Hoist<'a> { } fn get_require_ident(&self, local: &JsWord) -> Ident { - return Ident::new( + Ident::new( format!("${}$require${}", self.module_id, local).into(), DUMMY_SP, - ); + ) } fn get_export_ident(&mut self, span: Span, exported: &JsWord) -> Ident { @@ -1074,7 +1079,7 @@ impl<'a> Hoist<'a> { ); self .module_items - .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + .push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { declare: false, kind: VarDeclKind::Var, span: DUMMY_SP, @@ -1084,7 +1089,7 @@ impl<'a> Hoist<'a> { name: Pat::Ident(BindingIdent::from(require_id)), init: Some(Box::new(Expr::Ident(import_id))), }], - })))); + }))))); } } } @@ -1104,7 +1109,7 @@ macro_rules! collect_visit_fn { }; } -#[derive(Debug, Deserialize, PartialEq, Clone, Copy, Serialize)] +#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Copy, Serialize)] pub enum ImportKind { Require, Import, @@ -1119,7 +1124,7 @@ pub struct Import { pub loc: SourceLocation, } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct Export { pub source: Option, pub specifier: JsWord, @@ -2225,6 +2230,7 @@ mod tests { minify: false, ascii_only: false, target: swc_ecmascript::ast::EsVersion::Es5, + omit_last_semi: false, }; let mut emitter = swc_ecmascript::codegen::Emitter { cfg: config, diff --git a/packages/transformers/js/core/src/lib.rs b/packages/transformers/js/core/src/lib.rs index be482ce5e8e..83750572153 100644 --- a/packages/transformers/js/core/src/lib.rs +++ b/packages/transformers/js/core/src/lib.rs @@ -573,6 +573,7 @@ fn emit( minify: false, ascii_only: false, target: swc_ecmascript::ast::EsVersion::Es5, + omit_last_semi: false, }; let mut emitter = swc_ecmascript::codegen::Emitter { cfg: config, diff --git a/packages/transformers/js/core/src/modules.rs b/packages/transformers/js/core/src/modules.rs index ad38d5c783d..fdbbb2e7d1f 100644 --- a/packages/transformers/js/core/src/modules.rs +++ b/packages/transformers/js/core/src/modules.rs @@ -89,7 +89,7 @@ impl ESMFold { } let ident = self.get_require_name(&src, DUMMY_SP); - let require = ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + let require = ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { span, kind: VarDeclKind::Var, decls: vec![VarDeclarator { @@ -99,7 +99,7 @@ impl ESMFold { definite: false, }], declare: false, - }))); + })))); self.requires.push(require) } @@ -111,7 +111,7 @@ impl ESMFold { let local = self.get_require_name(&src, DUMMY_SP); let ident = self.get_interop_default_name(&src); - let interop = ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + let interop = ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { span: DUMMY_SP, kind: VarDeclKind::Var, decls: vec![VarDeclarator { @@ -125,7 +125,7 @@ impl ESMFold { definite: false, }], declare: false, - }))); + })))); self.requires.push(interop); self.interops.insert(src); @@ -168,7 +168,7 @@ impl ESMFold { if matches!(self.versions, Some(versions) if Feature::ArrowFunctions.should_enable(versions, true, false)) { Expr::Fn(FnExpr { ident: None, - function: Function { + function: Box::new(Function { body: Some(BlockStmt { span: DUMMY_SP, stmts: vec![Stmt::Return({ @@ -185,7 +185,7 @@ impl ESMFold { span: DUMMY_SP, return_type: None, type_params: None, - }, + }), }) } else { Expr::Arrow(ArrowExpr { @@ -534,7 +534,7 @@ impl Fold for ESMFold { if self.needs_helpers { items.insert( 0, - ModuleItem::Stmt(Stmt::Decl(Decl::Var(VarDecl { + ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { span: DUMMY_SP, kind: VarDeclKind::Var, decls: vec![VarDeclarator { @@ -548,7 +548,7 @@ impl Fold for ESMFold { definite: false, }], declare: false, - }))), + })))), ) } diff --git a/packages/transformers/js/core/src/utils.rs b/packages/transformers/js/core/src/utils.rs index 667f036eba1..5a94e414204 100644 --- a/packages/transformers/js/core/src/utils.rs +++ b/packages/transformers/js/core/src/utils.rs @@ -177,7 +177,7 @@ pub fn create_global_decl_stmt( let span = DUMMY_SP.apply_mark(global_mark); ( - ast::Stmt::Decl(ast::Decl::Var(ast::VarDecl { + ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { kind: ast::VarDeclKind::Var, declare: false, span: DUMMY_SP, @@ -187,7 +187,7 @@ pub fn create_global_decl_stmt( definite: false, init: Some(Box::new(init)), }], - })), + }))), span.ctxt, ) } diff --git a/packages/transformers/js/package.json b/packages/transformers/js/package.json index eb2a0fffc47..a269ae15b7d 100644 --- a/packages/transformers/js/package.json +++ b/packages/transformers/js/package.json @@ -35,7 +35,7 @@ "@parcel/source-map": "^2.0.0", "@parcel/utils": "2.7.0", "@parcel/workers": "2.7.0", - "@swc/helpers": "^0.4.2", + "@swc/helpers": "^0.4.12", "browserslist": "^4.6.6", "detect-libc": "^1.0.3", "nullthrows": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index f51dfe76845..c511c4cc90e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2562,10 +2562,10 @@ "@swc/core-win32-ia32-msvc" "^1.2.106" "@swc/core-win32-x64-msvc" "^1.2.106" -"@swc/helpers@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.2.tgz#ed1f6997ffbc22396665d9ba74e2a5c0a2d782f8" - integrity sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw== +"@swc/helpers@^0.4.12": + version "0.4.12" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.12.tgz#203243e78cff3c87c081c97ae548ab33e2503573" + integrity sha512-R6RmwS9Dld5lNvwKlPn62+piU+WDG1sMfsnfJioXCciyko/gZ0DQ4Mqglhq1iGU1nQ/RcGkAwfMH+elMSkJH3Q== dependencies: tslib "^2.4.0"