From d2f43b718f979aa517a80d4ad8e2ecd764200d39 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Fri, 6 Aug 2021 16:07:36 +0200 Subject: [PATCH] Add experimental SWC minify and SWC loader options (#27664) --- package.json | 2 +- packages/next/build/babel/preset.ts | 3 +- packages/next/build/swc/Cargo.lock | 495 +++++------------- packages/next/build/swc/Cargo.toml | 4 +- packages/next/build/webpack-config.ts | 46 +- .../build/webpack/loaders/next-swc-loader.js | 210 ++++---- .../terser-webpack-plugin/src/index.js | 33 +- packages/next/server/config-shared.ts | 4 + yarn.lock | 128 ++--- 9 files changed, 380 insertions(+), 545 deletions(-) diff --git a/package.json b/package.json index 5919da3ea2..4e6e14cd9e 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@fullhuman/postcss-purgecss": "1.3.0", "@mdx-js/loader": "0.18.0", "@svgr/webpack": "5.5.0", - "@swc/core": "1.2.66", + "@swc/core": "1.2.74", "@testing-library/react": "11.2.5", "@types/cheerio": "0.22.16", "@types/fs-extra": "8.1.0", diff --git a/packages/next/build/babel/preset.ts b/packages/next/build/babel/preset.ts index 32657be2e3..b99c2547a5 100644 --- a/packages/next/build/babel/preset.ts +++ b/packages/next/build/babel/preset.ts @@ -113,7 +113,8 @@ export default ( presetEnvConfig.targets = { // Targets the current process' version of Node. This requires apps be // built and deployed on the same version of Node. - node: 'current', + // This is the same as using "current" but explicit + node: process.versions.node, } } diff --git a/packages/next/build/swc/Cargo.lock b/packages/next/build/swc/Cargo.lock index 26d0dca6be..b730db7b88 100644 --- a/packages/next/build/swc/Cargo.lock +++ b/packages/next/build/swc/Cargo.lock @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ "gimli", ] @@ -27,12 +27,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - [[package]] name = "ahash" version = "0.7.4" @@ -122,9 +116,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" dependencies = [ "addr2line", "cc", @@ -415,9 +409,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" [[package]] name = "glob" @@ -425,20 +419,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash 0.4.7", -] - [[package]] name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] [[package]] name = "hermit-abi" @@ -488,7 +476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg 1.0.1", - "hashbrown 0.11.2", + "hashbrown", ] [[package]] @@ -596,11 +584,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90ba" +checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" dependencies = [ - "hashbrown 0.9.1", + "hashbrown", ] [[package]] @@ -700,7 +688,7 @@ dependencies = [ "swc", "swc_atoms", "swc_common", - "swc_ecma_preset_env 0.31.0", + "swc_ecma_preset_env", "swc_ecma_transforms_testing", "swc_ecmascript", "swc_node_base", @@ -759,9 +747,9 @@ dependencies = [ [[package]] name = "object" -version = "0.25.3" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +checksum = "c55827317fb4c08822499848a14237d2874d6f139828893017237e7ab93eb386" dependencies = [ "memchr", ] @@ -780,9 +768,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "ordered-float" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dea6388d3d5498ec651701f14edbaf463c924b5d8829fb2848ccf0bcc7b3c69" +checksum = "039f02eb0f69271f26abe3202189275d7aa2258b903cb0281b5de710a2570ff3" dependencies = [ "num-traits", ] @@ -943,9 +931,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ "unicode-xid", ] @@ -1205,9 +1193,9 @@ checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "relative-path" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a479d53d7eed831f3c92ca79c61002d5987e21417d528296832f802bca532380" +checksum = "f9629de8974fd69c97684736786b807edd3da456d3e3f95341dd9d4cbd8f5ad6" [[package]] name = "remove_dir_all" @@ -1284,18 +1272,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" dependencies = [ "proc-macro2", "quote", @@ -1304,9 +1292,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" dependencies = [ "itoa", "ryu", @@ -1314,10 +1302,20 @@ dependencies = [ ] [[package]] -name = "sha-1" -version = "0.9.6" +name = "serde_regex" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" dependencies = [ "block-buffer", "cfg-if 1.0.0", @@ -1328,9 +1326,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27" +checksum = "729a25c17d72b06c68cb47955d44fda88ad2d3e7d77e025663fdd69b93dd71a1" [[package]] name = "smallvec" @@ -1443,11 +1441,11 @@ checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" [[package]] name = "swc" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a01b37575f8f0448c3348d8404820023b11b3317cbff2c7c620593da416e08" +checksum = "c967d3cd0f16a199613c1f7471776b74afb6cb478a463289e8914c428525c06c" dependencies = [ - "ahash 0.7.4", + "ahash", "anyhow", "base64 0.12.3", "dashmap", @@ -1464,13 +1462,15 @@ dependencies = [ "swc_bundler", "swc_common", "swc_ecma_ast", - "swc_ecma_codegen 0.62.1", + "swc_ecma_codegen", "swc_ecma_ext_transforms", "swc_ecma_loader", - "swc_ecma_parser 0.63.0", - "swc_ecma_preset_env 0.29.0", - "swc_ecma_transforms 0.59.0", - "swc_ecma_utils 0.40.0", + "swc_ecma_minifier", + "swc_ecma_parser", + "swc_ecma_preset_env", + "swc_ecma_transforms", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", "swc_node_base", "swc_visit", @@ -1488,11 +1488,11 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.46.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645abff0d28bf419bbefdeb155a6076ee884bc0a56837e9edde03e7af916fda7" +checksum = "3c214b3f56aa5fc76fca81d65358f3c6390a170518253c941578bb8b45e700d1" dependencies = [ - "ahash 0.7.4", + "ahash", "anyhow", "crc", "fxhash", @@ -1507,19 +1507,19 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_codegen 0.62.1", + "swc_ecma_codegen", "swc_ecma_loader", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms 0.59.0", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_transforms", + "swc_ecma_utils", "swc_ecma_visit", ] [[package]] name = "swc_common" -version = "0.11.1" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903c296fdb8a385e7c229b039b4c6f6520e02a5b1869b6fcc3eb7f68fddd20a9" +checksum = "f303985ebd578a033371a87be28cb54189d3ae5d492622523200f4de08db5275" dependencies = [ "ast_node", "atty", @@ -1544,9 +1544,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.49.0" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "033da686d95b9663e6732c4021e002bc23173bef251db87857e1c3c8bfbfe8cb" +checksum = "228ab89e5a11289d43f14da2b65b9e37c8fb31091c33f4fad66791ef65c04a1b" dependencies = [ "is-macro", "num-bigint", @@ -1558,9 +1558,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.62.1" +version = "0.64.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a262bf6b73149626bbff6cc529d5839c5576ccdb79213bdf845a7d250ff0675f" +checksum = "f41597b6fbcd6001575be2b9fb38eb8fb3ebd972827998bcb522078a8d8606cc" dependencies = [ "bitflags", "num-bigint", @@ -1569,23 +1569,7 @@ dependencies = [ "swc_common", "swc_ecma_ast", "swc_ecma_codegen_macros", - "swc_ecma_parser 0.63.0", -] - -[[package]] -name = "swc_ecma_codegen" -version = "0.64.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34c3c4d017728ef6eaeaba46c34ba31ef24aa03a8a6a0240cb0e0c1e75435482" -dependencies = [ - "bitflags", - "num-bigint", - "sourcemap", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_codegen_macros", - "swc_ecma_parser 0.65.0", + "swc_ecma_parser", ] [[package]] @@ -1603,24 +1587,24 @@ dependencies = [ [[package]] name = "swc_ecma_ext_transforms" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a413915a7c2075a76c2dce06647b018538b47516e739512c2ee61c87dd846ef0" +checksum = "5588dbe1dbd6c3ee50c3b292a3adfe4dd63f8bf487bbfe3f1b54f64894a67b15" dependencies = [ "phf", "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_utils", "swc_ecma_visit", ] [[package]] name = "swc_ecma_loader" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919aed51bc3c24ee4999d3c63d6ff86231746b487875403b7c1d2a6616a02966" +checksum = "b05e3b054b690e610384fc8f5d244182cbd62691423755ca1c4b05cb0bfa6b46" dependencies = [ "anyhow", "dashmap", @@ -1637,22 +1621,28 @@ dependencies = [ ] [[package]] -name = "swc_ecma_parser" -version = "0.63.0" +name = "swc_ecma_minifier" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb3574984a0ed08f98b75bf6f6f5415f66a837f7722b7ae1ea150a6572253a5" +checksum = "6f57ea673271d857cc278f2e62b9915520e4bf2defefb46d48291b8304ce0138" dependencies = [ - "either", - "enum_kind", "fxhash", - "lexical", + "indexmap", "log", - "num-bigint", + "once_cell", + "regex", + "retain_mut", "serde", - "smallvec 1.6.1", + "serde_json", + "serde_regex", "swc_atoms", "swc_common", "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_transforms", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", "unicode-xid", ] @@ -1678,30 +1668,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "swc_ecma_preset_env" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d03f21c1a2a9dfb6054fc9fef2d5746bfa058a1496a8ed09d61be6c31bbeee9" -dependencies = [ - "dashmap", - "fxhash", - "indexmap", - "once_cell", - "semver", - "serde", - "serde_json", - "st-map", - "string_enum", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms 0.59.0", - "swc_ecma_utils 0.40.0", - "swc_ecma_visit", - "walkdir", -] - [[package]] name = "swc_ecma_preset_env" version = "0.31.0" @@ -1720,34 +1686,12 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_transforms 0.61.0", - "swc_ecma_utils 0.41.0", + "swc_ecma_transforms", + "swc_ecma_utils", "swc_ecma_visit", "walkdir", ] -[[package]] -name = "swc_ecma_transforms" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f26ceff094df804b17a333056321f6be18e9df5ecd34fddf62971ed465cf6ec" -dependencies = [ - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_transforms_compat 0.25.1", - "swc_ecma_transforms_module", - "swc_ecma_transforms_optimization 0.29.1", - "swc_ecma_transforms_proposal 0.26.0", - "swc_ecma_transforms_react 0.27.0", - "swc_ecma_transforms_typescript 0.28.1", - "swc_ecma_utils 0.40.0", - "swc_ecma_visit", - "unicode-xid", -] - [[package]] name = "swc_ecma_transforms" version = "0.61.0" @@ -1757,23 +1701,24 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_transforms_compat 0.27.0", - "swc_ecma_transforms_optimization 0.31.0", - "swc_ecma_transforms_proposal 0.28.0", - "swc_ecma_transforms_react 0.29.0", - "swc_ecma_transforms_typescript 0.30.0", - "swc_ecma_utils 0.41.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_compat", + "swc_ecma_transforms_module", + "swc_ecma_transforms_optimization", + "swc_ecma_transforms_proposal", + "swc_ecma_transforms_react", + "swc_ecma_transforms_typescript", + "swc_ecma_utils", "swc_ecma_visit", "unicode-xid", ] [[package]] name = "swc_ecma_transforms_base" -version = "0.22.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eef20521012c31b213fcb4f6d22ce2b14e85ac2fb1e4ec7a58a0adcde2a3817d" +checksum = "42f9357fffe6d1b2922cf0a91a0c93e9a103811a0647f1a7ad80c215f9afbd09" dependencies = [ "fxhash", "once_cell", @@ -1783,41 +1728,8 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_utils 0.40.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_base" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf2a22f330dac0031b0dd6957fe34d6cead7e0836af012ea62c0ec6b1b40456" -dependencies = [ - "fxhash", - "once_cell", - "phf", - "scoped-tls", - "smallvec 1.6.1", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_utils 0.41.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_classes" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095e79be05d3804dadda03a0cbc5b8a6fddaf3131b628c5c3e69309d2aa30996" -dependencies = [ - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -1830,32 +1742,8 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_utils 0.41.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_compat" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5260174f888dffb64649e51353795af3bd6905f7a60c627048bb42b4b79a9f" -dependencies = [ - "arrayvec", - "fxhash", - "indexmap", - "is-macro", - "num-bigint", - "ordered-float", - "serde", - "smallvec 1.6.1", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_transforms_classes 0.8.0", - "swc_ecma_transforms_macros", - "swc_ecma_utils 0.40.0", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -1876,10 +1764,10 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_transforms_classes 0.10.0", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", "swc_ecma_transforms_macros", - "swc_ecma_utils 0.41.0", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -1898,9 +1786,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_module" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c81b29f624a6a63d38161988d63ea3dea3e5557ef1ffada39ba2f322a8ba509" +checksum = "2a054b76d72f294ddff1576eb0b61f3d78edceb670e6caf62c06adce8b861fdb" dependencies = [ "Inflector", "anyhow", @@ -1912,31 +1800,9 @@ dependencies = [ "swc_common", "swc_ecma_ast", "swc_ecma_loader", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_utils 0.40.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_optimization" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3abbb3391b74c0c71274a357cac50f696556d7ae5932ed2c4e16fcdf06844947" -dependencies = [ - "dashmap", - "fxhash", - "indexmap", - "log", - "once_cell", - "retain_mut", - "serde_json", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -1956,29 +1822,9 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_utils 0.41.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_proposal" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d301c102ef312c1521c1ac34c1b7844e443277a1e81aafac015dde2f4cc05528" -dependencies = [ - "either", - "fxhash", - "serde", - "smallvec 1.6.1", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_transforms_classes 0.8.0", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -1995,33 +1841,10 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_transforms_classes 0.10.0", - "swc_ecma_utils 0.41.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_react" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ccc76ee3679862035e22d7193091c3c3d8350290b6f265abc7dcd058ceaaf4" -dependencies = [ - "base64 0.13.0", - "dashmap", - "indexmap", - "once_cell", - "regex", - "serde", - "sha-1", - "string_enum", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -2042,9 +1865,9 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_utils 0.41.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -2059,10 +1882,10 @@ dependencies = [ "serde_json", "swc_common", "swc_ecma_ast", - "swc_ecma_codegen 0.64.0", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_utils 0.41.0", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", "tempfile", "testing", @@ -2070,53 +1893,21 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.28.1" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451b09367c4b99690fe03c72a079ca18902a2096656b4e2c6cbce50001b6faa9" +checksum = "531efb950048802b6330bf8dab8dc858974a1807393175050d806d928ac0d27f" dependencies = [ "fxhash", "serde", "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_parser 0.63.0", - "swc_ecma_transforms_base 0.22.2", - "swc_ecma_utils 0.40.0", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", "swc_ecma_visit", ] -[[package]] -name = "swc_ecma_transforms_typescript" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3766bb42e21c763b68d15a43f0a13afb19be86036fd37b051821ecd846ff796" -dependencies = [ - "fxhash", - "serde", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms_base 0.24.0", - "swc_ecma_utils 0.41.0", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_utils" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2027bcfafe634185e597080c9a94e83904ceea41f09372b130cda87222dd4df9" -dependencies = [ - "once_cell", - "scoped-tls", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_visit", - "unicode-xid", -] - [[package]] name = "swc_ecma_utils" version = "0.41.0" @@ -2134,9 +1925,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.35.0" +version = "0.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06818a3a50e6de46a81d3d9f51a46d08624ff0f9eb2b3f30de717b15133858d" +checksum = "754afc3c64e5f39fc17874170548e4f94612bcfb52fd7882437c149f713b3473" dependencies = [ "num-bigint", "swc_atoms", @@ -2147,15 +1938,15 @@ dependencies = [ [[package]] name = "swc_ecmascript" -version = "0.48.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb11d3d724142ddbe9bbb5efd44ebad9c7c8a7a283c80b48d3dd025ab90aae1" +checksum = "e7d7cf5f01d49cba27028518c15bf45343d0d99799f60ab7aabcbc0b6a440204" dependencies = [ "swc_ecma_ast", - "swc_ecma_codegen 0.64.0", - "swc_ecma_parser 0.65.0", - "swc_ecma_transforms 0.61.0", - "swc_ecma_utils 0.41.0", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_transforms", + "swc_ecma_utils", "swc_ecma_visit", ] @@ -2197,9 +1988,9 @@ dependencies = [ [[package]] name = "swc_visit" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583cfe83f6002e1118559308b88181f34b5936b403b72548cd0259bfcf0ca39e" +checksum = "b24bd6153b94e06cae99d98d6a12b1fbe6063709cdb4b0f7ea25d2c0a62bdee7" dependencies = [ "either", "swc_visit_macros", @@ -2288,9 +2079,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" dependencies = [ "tinyvec_macros", ] diff --git a/packages/next/build/swc/Cargo.toml b/packages/next/build/swc/Cargo.toml index bc07a50d8e..29641a782d 100644 --- a/packages/next/build/swc/Cargo.toml +++ b/packages/next/build/swc/Cargo.toml @@ -15,11 +15,11 @@ path-clean = "0.1" regex = "1.5" serde = "1" serde_json = "1" -swc = "0.30" +swc = "0.33" swc_atoms = "0.2.6" swc_common = { version = "0.11.1", features = ["tty-emitter", "sourcemap"] } swc_node_base = "0.2.0" -swc_ecmascript = { version = "0.48.0", features = ["codegen", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } +swc_ecmascript = { version = "0.50.0", features = ["codegen", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } swc_ecma_preset_env = "0.31.0" fxhash = "0.2.1" retain_mut = "0.1.3" diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 36e7382a41..570684bb34 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -294,22 +294,36 @@ export default async function getBaseWebpackConfig( const babelLoader = isWebpack5 ? require.resolve('./babel/loader/index') : 'next-babel-loader' + + const useSWCLoader = config.experimental.swcLoader && isWebpack5 + if (useSWCLoader && babelConfigFile) { + Log.warn( + `experimental.swcLoader enabled. The custom Babel configuration will not be used.` + ) + } const defaultLoaders = { - babel: { - loader: babelLoader, - options: { - configFile: babelConfigFile, - isServer, - distDir, - pagesDir, - cwd: dir, - // Webpack 5 has a built-in loader cache - cache: !isWebpack5, - development: dev, - hasReactRefresh, - hasJsxRuntime: true, - }, - }, + babel: useSWCLoader + ? { + loader: 'next-swc-loader', + options: { + isServer, + }, + } + : { + loader: babelLoader, + options: { + configFile: babelConfigFile, + isServer, + distDir, + pagesDir, + cwd: dir, + // Webpack 5 has a built-in loader cache + cache: !isWebpack5, + development: dev, + hasReactRefresh, + hasJsxRuntime: true, + }, + }, // Backwards compat hotSelfAccept: { loader: 'noop-loader', @@ -953,6 +967,7 @@ export default async function getBaseWebpackConfig( new TerserPlugin({ cacheDir: path.join(distDir, 'cache', 'next-minifier'), parallel: config.experimental.cpus, + swcMinify: config.experimental.swcMinify, terserOptions, }).apply(compiler) }, @@ -1041,6 +1056,7 @@ export default async function getBaseWebpackConfig( 'emit-file-loader', 'error-loader', 'next-babel-loader', + 'next-swc-loader', 'next-client-pages-loader', 'next-image-loader', 'next-serverless-loader', diff --git a/packages/next/build/webpack/loaders/next-swc-loader.js b/packages/next/build/webpack/loaders/next-swc-loader.js index cf887ecf96..cd0cb11620 100644 --- a/packages/next/build/webpack/loaders/next-swc-loader.js +++ b/packages/next/build/webpack/loaders/next-swc-loader.js @@ -27,117 +27,113 @@ DEALINGS IN THE SOFTWARE. */ import { getOptions } from 'next/dist/compiled/loader-utils' -const { transform, transformSync } = require('../../swc/core') +import { transform } from '../../swc' +import { trace } from '../../../telemetry/trace' -function makeLoader() { - return function (source, inputSourceMap) { - // Make the loader async - const callback = this.async() - const filename = this.resourcePath +function getSWCOptions({ isTypeScript, isServer, development }) { + const jsc = { + parser: { + syntax: isTypeScript ? 'typescript' : 'ecmascript', + dynamicImport: true, + [isTypeScript ? 'tsx' : 'jsx']: true, + }, - let loaderOptions = getOptions(this) || {} + transform: { + react: { + runtime: 'automatic', + pragma: 'React.createElement', + pragmaFrag: 'React.Fragment', + throwIfNamespace: true, + development: development, + useBuiltins: true, + }, + }, + } - // Standardize on 'sourceMaps' as the key passed through to Webpack, so that - // users may safely use either one alongside our default use of - // 'this.sourceMap' below without getting error about conflicting aliases. - if ( - Object.prototype.hasOwnProperty.call(loaderOptions, 'sourceMap') && - !Object.prototype.hasOwnProperty.call(loaderOptions, 'sourceMaps') - ) { - loaderOptions = Object.assign({}, loaderOptions, { - sourceMaps: loaderOptions.sourceMap, - }) - delete loaderOptions.sourceMap - } - - if (inputSourceMap) { - inputSourceMap = JSON.stringify(inputSourceMap) - } - - const programmaticOptions = Object.assign({}, loaderOptions, { - filename, - inputSourceMap: inputSourceMap || undefined, - - // Set the default sourcemap behavior based on Webpack's mapping flag, - // but allow users to override if they want. - sourceMaps: - loaderOptions.sourceMaps === undefined - ? this.sourceMap - : loaderOptions.sourceMaps, - - // Ensure that Webpack will get a full absolute path in the sourcemap - // so that it can properly map the module back to its internal cached - // modules. - sourceFileName: filename, - }) - if (!programmaticOptions.inputSourceMap) { - delete programmaticOptions.inputSourceMap - } - - const sync = programmaticOptions.sync - const parseMap = programmaticOptions.parseMap - - // Remove loader related options - delete programmaticOptions.sync - delete programmaticOptions.parseMap - delete programmaticOptions.customize - delete programmaticOptions.cacheDirectory - delete programmaticOptions.cacheIdentifier - delete programmaticOptions.cacheCompression - delete programmaticOptions.metadataSubscribers - - // auto detect development mode - if ( - this.mode && - programmaticOptions.jsc && - programmaticOptions.jsc.transform && - programmaticOptions.jsc.transform.react && - !Object.prototype.hasOwnProperty.call( - programmaticOptions.jsc.transform.react, - 'development' - ) - ) { - programmaticOptions.jsc.transform.react.development = - this.mode === 'development' - } - - if (programmaticOptions.sourceMaps === 'inline') { - // Babel has this weird behavior where if you set "inline", we - // inline the sourcemap, and set 'result.map = null'. This results - // in bad behavior from Babel since the maps get put into the code, - // which Webpack does not expect, and because the map we return to - // Webpack is null, which is also bad. To avoid that, we override the - // behavior here so "inline" just behaves like 'true'. - programmaticOptions.sourceMaps = true - } - - try { - if (sync) { - const output = transformSync(source, programmaticOptions) - callback( - null, - output.code, - parseMap ? JSON.parse(output.map) : output.map - ) - } else { - transform(source, programmaticOptions).then( - (output) => { - callback( - null, - output.code, - parseMap ? JSON.parse(output.map) : output.map - ) - }, - (err) => { - callback(err) - } - ) - } - } catch (e) { - callback(e) + if (isServer) { + return { + jsc, + env: { + targets: { + // Targets the current version of Node.js + node: process.versions.node, + }, + }, } + } else { + // Matches default @babel/preset-env behavior + jsc.target = 'es5' + return { jsc } } } -module.exports = makeLoader() -module.exports.custom = makeLoader +async function loaderTransform(parentTrace, source, inputSourceMap) { + // Make the loader async + const filename = this.resourcePath + + const isTypeScript = filename.endsWith('.ts') || filename.endsWith('.tsx') + + let loaderOptions = getOptions(this) || {} + + const swcOptions = getSWCOptions({ + isTypeScript, + isServer: loaderOptions.isServer, + development: this.mode === 'development', + }) + + const programmaticOptions = { + ...swcOptions, + filename, + inputSourceMap: inputSourceMap ? JSON.stringify(inputSourceMap) : undefined, + + // Set the default sourcemap behavior based on Webpack's mapping flag, + sourceMaps: this.sourceMap, + + // Ensure that Webpack will get a full absolute path in the sourcemap + // so that it can properly map the module back to its internal cached + // modules. + sourceFileName: filename, + } + + if (!programmaticOptions.inputSourceMap) { + delete programmaticOptions.inputSourceMap + } + + // auto detect development mode + if ( + this.mode && + programmaticOptions.jsc && + programmaticOptions.jsc.transform && + programmaticOptions.jsc.transform.react && + !Object.prototype.hasOwnProperty.call( + programmaticOptions.jsc.transform.react, + 'development' + ) + ) { + programmaticOptions.jsc.transform.react.development = + this.mode === 'development' + } + + const swcSpan = parentTrace.traceChild('next-swc-transform') + return swcSpan.traceAsyncFn(() => + transform(source, programmaticOptions).then((output) => { + return [output.code, output.map ? JSON.parse(output.map) : undefined] + }) + ) +} + +export default function swcLoader(inputSource, inputSourceMap) { + const loaderSpan = trace('next-swc-loader', this.currentTraceSpan?.id) + const callback = this.async() + loaderSpan + .traceAsyncFn(() => + loaderTransform.call(this, loaderSpan, inputSource, inputSourceMap) + ) + .then( + ([transformedSource, outputSourceMap]) => + callback?.(null, transformedSource, outputSourceMap || inputSourceMap), + (err) => { + callback?.(err) + } + ) +} diff --git a/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js index 1909410fd0..c2b12baeab 100644 --- a/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js +++ b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js @@ -104,9 +104,10 @@ class Webpack4Cache { export class TerserPlugin { constructor(options = {}) { - const { cacheDir, terserOptions = {}, parallel } = options + const { cacheDir, terserOptions = {}, parallel, swcMinify } = options this.options = { + swcMinify, cacheDir, parallel, terserOptions, @@ -188,6 +189,27 @@ export class TerserPlugin { // eslint-disable-next-line consistent-return const getWorker = () => { + if (this.options.swcMinify) { + return { + minify: async (options) => { + const result = await require('../../../../swc').transform( + options.input, + { + minify: true, + jsc: { + minify: { + compress: true, + mangle: true, + }, + }, + } + ) + + return result + }, + } + } + if (initializedWorker) { return initializedWorker } @@ -204,7 +226,12 @@ export class TerserPlugin { } const limit = pLimit( - numberOfAssetsForMinify > 0 ? numberOfWorkers : Infinity + // When using the SWC minifier the limit will be handled by Node.js + this.options.swcMinify + ? Infinity + : numberOfAssetsForMinify > 0 + ? numberOfWorkers + : Infinity ) const scheduledTasks = [] @@ -214,7 +241,7 @@ export class TerserPlugin { const { name, inputSource, info, eTag } = asset let { output } = asset - const minifySpan = terserSpan.traceChild('minify-fs') + const minifySpan = terserSpan.traceChild('minify-js') minifySpan.setAttribute('name', name) minifySpan.setAttribute( 'cache', diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index 481176f6f9..f8a7e7f418 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -85,6 +85,8 @@ export type NextConfig = { [key: string]: any } & { strictPostcssConfiguration?: boolean } experimental?: { + swcMinify?: boolean + swcLoader?: boolean cpus?: number plugins?: boolean profiling?: boolean @@ -157,6 +159,8 @@ export const defaultConfig: NextConfig = { keepAlive: true, }, experimental: { + swcLoader: false, + swcMinify: false, cpus: Math.max( 1, (Number(process.env.CIRCLE_NODE_TOTAL) || diff --git a/yarn.lock b/yarn.lock index 288d73d443..7cead424eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3849,85 +3849,85 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" -"@swc/core-android-arm64@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.66.tgz#ce45abb2220684739616443d2c455ba0b8713e1d" - integrity sha512-qSc+wvqeHh+rjyJDBZSXQI2VCJ9xHPZpZk9fehvgcYmsPHkcjtUt6lwj6SIFdkklasw4p1Jq7vMQzAdegUa9VQ== +"@swc/core-android-arm64@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.74.tgz#7e12fde1ba557dad803bc27b5b6cef04957e7ba3" + integrity sha512-mKqs5QmY4uEUopk98rM4dH0g7iWRH172Z8Bd752/eR9R5Yzut/dEGZCN5lnDfCLc1hecJz3DFsU/71jG4T+1WQ== -"@swc/core-darwin-arm64@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.66.tgz#804d10c5ccaa359a48eb02047c91f029bdc0618a" - integrity sha512-ij0vh+HJJRggN6zwY/WQ1BaQHit+w/VbdHjM+nzYtzASpSiN3+jvb6XeON5bKLxnDGPvuKsk4Bgg1k5ib9oTxQ== +"@swc/core-darwin-arm64@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.74.tgz#6b6c6f1a9c12f5c4647f324985aa8f52a6967113" + integrity sha512-i8bRE/oQAyPmB3Vwk1GfydFbCnsidfXQgyFK0qDsQN7tNPZg5esqQVeAzDWhGWdMK6VAGcMDY3/RinR8KkKCmg== -"@swc/core-darwin-x64@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.66.tgz#47dbe1b8b5ceb145267a419ebaedc9e260ded5fc" - integrity sha512-TvxV/ntjdwsUdvhuvIG53kZUtrMcBGAwqYNveuk24fjytZqtV0UC6TfHw+iUd+DeAm+4wLIgyZIatlyxqmm3TQ== +"@swc/core-darwin-x64@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.74.tgz#588393d8d5d7b52985cbdeaa93ccdf2f8233a9d4" + integrity sha512-3vcKNlkCa40FosdltLytRHHT4KFnzg5Ws2k40nYT2g55UBk4SHou6eeq9gP0FYkerTNPWhS5c8KyAHCnBXOhoA== -"@swc/core-freebsd-x64@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.66.tgz#609b68a9612e92cb7d86ff6f98da5a46103c204f" - integrity sha512-5D/MBbnOU4NCpG9UyYJCkqOKH0+hPX9T/x8GqQbPy9BBBYQLey42ISyvx33HgD2XTVy8cnLr3vFrhLnWmoFy1A== +"@swc/core-freebsd-x64@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.74.tgz#353ec8a9d60031fe39f3ba1ecc0488842226e79b" + integrity sha512-YFIuIYbs3TUWQFBjs8KCff/nj4yBm1WIrq2w1ZfHOSbTMRnz3slksEviz6QzUhDK6fO8HUwudhxO5INRuWWxfQ== -"@swc/core-linux-arm-gnueabihf@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.66.tgz#df4242f842f096ac4cc581099ae86db517070e91" - integrity sha512-aWPdEGAkDUJ326BzK5f26hq6Ra2MMzwe2saJW6xjkefbJn0CFtpGX/koFmqpL6ewRlkOQlKcjvN+3ndjtmQEhw== +"@swc/core-linux-arm-gnueabihf@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.74.tgz#16486b80a30401604bf1524918447ff1bb7baf8a" + integrity sha512-iwLMOGwfH6r1U5Kyu76I2E+6BVKYWFA+l1z6Ja+9rk9qHBeQws6p5vP3HcezQQeKBbmNx6kcF9+RRT6v8yUz7w== -"@swc/core-linux-arm64-gnu@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.66.tgz#3b62f0f9d1af1e549a98480609a85c39bc797941" - integrity sha512-Jc5ePO2zsvFgFp5myesOTcRxOb/SVwJvDDDGrilyE+5Ou9iACfYRwFk/2E9P6FK3t5KnZbRMPLJVIoPQ0mm10A== +"@swc/core-linux-arm64-gnu@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.74.tgz#192b805894ca6c09aa6e5dbd1c8caabbaf9fff7b" + integrity sha512-2ndc5Ei88Ifxc9joDtANIhlUSpq5C3Qbc+g/gUUGF2lPCiMk6kPxnpwvDKpAowi7dSeIW94+/9O8l58D8cHRVg== -"@swc/core-linux-arm64-musl@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.66.tgz#272e2ad543308936f46de07a349931844700470e" - integrity sha512-S/3jriGPYipACxGdgo2tEjr9J3ZRk2K8nsyQQRwsDofr1P5PTN9coGWpSX+/YdbJa1bYo0CCLpdaeJIDiP/bng== +"@swc/core-linux-arm64-musl@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.74.tgz#c9ec655f6c8f77fc600f078ce1b169baacb76c05" + integrity sha512-xKNg87bdmmXwyjspiDOdFvGNcuHJ/lL5ouWTriICJ0W8lzuTNs8E9rpk/aPXdPvOhdxT4ACf8x+c1+eHZPsJPA== -"@swc/core-linux-x64-gnu@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.66.tgz#79825533b43f3938985a1846b4bbd22b19f3b92a" - integrity sha512-nk+saTGX4LoVl1m5rIaDJZ/zdr7lqxtQ2ab/cAk158Bpix1W+YaWTM14YojVurE0h8U6OmNYBQd1gB9wm+eTHQ== +"@swc/core-linux-x64-gnu@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.74.tgz#f1dd963c7017f4fc4d95413b6b3f656a981b7621" + integrity sha512-1q+9WWykTj4Mg5p22O7klr2kx67LL1TSmVJKtCVUNBHNeqlSGTCHA9lGh8ETGIW/iWuvXHTnYMlV9RhPWMZVHQ== -"@swc/core-linux-x64-musl@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.66.tgz#32f89bc35befaca577e2009fe18b37a1e596d6db" - integrity sha512-LkGwggHPa4v4dn/61AbqWELxTqkLRXSZeFT7TN3fqsJ7fZn5U0G/TvTIODFEw1hz6B4d4OQpvx8NZ9woIrbgFQ== +"@swc/core-linux-x64-musl@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.74.tgz#abe7e5280879f9ea290a6eecced4da8cf65ee0de" + integrity sha512-r/ZnFGn/VwOpboW6dKolStxArBFM0fb1xk+og6KZJtKZE9sE+Y5CAOvcvAxNzic+K2FX47ZSWHIFoHg5yoTkuQ== -"@swc/core-win32-arm64-msvc@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.66.tgz#829a5b97a3f3283ddff72534488dbdcc0c5246ce" - integrity sha512-KYHcBKAIfBC0Sv8QXi2p0xJpY4P1LaVbxUey+m9aQJG+yAq/MPq5emO+leZ34veJHQgw876VTsVTqPcqrMyGTw== +"@swc/core-win32-arm64-msvc@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.74.tgz#8354673065c951955dc3af958cc938f297c57c96" + integrity sha512-u1ww9SaY4sMqogXZorlHpaursJnvgTi86lwJN1E+kKo4MFANcB354FvBUNg+QIRwN7itNvoP+lxHHP9NF87gdg== -"@swc/core-win32-ia32-msvc@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.66.tgz#ccacda98ec99337075e94e3d1c48df86381ecb7b" - integrity sha512-+QbC1W245rLOmP6YXJAiizfC28MLol+0w+TFf+n42cQMecjfwZpdmhLCwaJNOfT3sq5F8mY77+rk3KngUaOvfw== +"@swc/core-win32-ia32-msvc@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.74.tgz#3f5aadc10381409c79106b24030da5d2066ad061" + integrity sha512-yftd+MMxJUCmH8DRZ7ZeRE4bTD7+jYFgf2epswF4gdyotB4clvCcL2BDxEN56sMJzrO0+SkTKYEkfFmPQtVUBQ== -"@swc/core-win32-x64-msvc@^1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.66.tgz#71d7e02f929a7dbbe670e8c374d65253b7dd79a9" - integrity sha512-xnuLSpmgUJ/9KI4O7dIKAhoiWPRjDd0175Fqeltj8o87FQQkskc+c6BS5Lp7XnroWIf/UE6os8sRxt5LbcfSOA== +"@swc/core-win32-x64-msvc@^1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.74.tgz#def33e667ed707f9071f03b10a255f15871262bd" + integrity sha512-zRBBPNLj+hJHNzQ3JZ3YJjSHmVgcVg4wKV5pChr8PO6dMPrYX5RpuOCLwVIUHvCdQ6TmTc/AdGJDP/VpMQfkdA== -"@swc/core@1.2.66": - version "1.2.66" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.66.tgz#f82409ffadba4a4bc3333b0fd230cbd970a1657e" - integrity sha512-zwQlgXvpBkDwIXlVBp9VRYm8NoEmFQSpIiDzFrrvTeYKXPOIjDDMDFiFz5k1UEZejR4nCHo1MUyCXaRoykRDqg== +"@swc/core@1.2.74": + version "1.2.74" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.74.tgz#66348ddfae8c15ba5eaeb0a509fb30a0e354c0b1" + integrity sha512-ICIXnLUYutYiK6wWb2DXNPZyKgTLHY+BxGbCZs45WwOBjsxden/bznIilPN4lEkNgjzYCZbwi9asuVzH+Ar9BA== dependencies: "@node-rs/helper" "^1.0.0" optionalDependencies: - "@swc/core-android-arm64" "^1.2.66" - "@swc/core-darwin-arm64" "^1.2.66" - "@swc/core-darwin-x64" "^1.2.66" - "@swc/core-freebsd-x64" "^1.2.66" - "@swc/core-linux-arm-gnueabihf" "^1.2.66" - "@swc/core-linux-arm64-gnu" "^1.2.66" - "@swc/core-linux-arm64-musl" "^1.2.66" - "@swc/core-linux-x64-gnu" "^1.2.66" - "@swc/core-linux-x64-musl" "^1.2.66" - "@swc/core-win32-arm64-msvc" "^1.2.66" - "@swc/core-win32-ia32-msvc" "^1.2.66" - "@swc/core-win32-x64-msvc" "^1.2.66" + "@swc/core-android-arm64" "^1.2.74" + "@swc/core-darwin-arm64" "^1.2.74" + "@swc/core-darwin-x64" "^1.2.74" + "@swc/core-freebsd-x64" "^1.2.74" + "@swc/core-linux-arm-gnueabihf" "^1.2.74" + "@swc/core-linux-arm64-gnu" "^1.2.74" + "@swc/core-linux-arm64-musl" "^1.2.74" + "@swc/core-linux-x64-gnu" "^1.2.74" + "@swc/core-linux-x64-musl" "^1.2.74" + "@swc/core-win32-arm64-msvc" "^1.2.74" + "@swc/core-win32-ia32-msvc" "^1.2.74" + "@swc/core-win32-x64-msvc" "^1.2.74" "@szmarczak/http-timer@^1.1.2": version "1.1.2"