diff --git a/Cargo.lock b/Cargo.lock index 13b5f86..71f906e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anyhow" @@ -61,7 +61,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", ] [[package]] @@ -72,7 +72,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" dependencies = [ "allocator-api2", ] @@ -316,9 +316,9 @@ dependencies = [ [[package]] name = "dprint-swc-ext" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a0d5b63e52434314e3d767c463b1f68c467c31e61d279bc019227016c44e535" +checksum = "f385cdad3065151fae39262ad43003099234689856a0dc476e8804c5ba8f475b" dependencies = [ "allocator-api2", "bumpalo", @@ -366,7 +366,7 @@ checksum = "fdc9cc75639b041067353b9bce2450d6847e547276c6fbe4487d7407980e07db" dependencies = [ "proc-macro2", "swc_macros_common", - "syn", + "syn 2.0.48", ] [[package]] @@ -398,9 +398,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "hermit-abi" @@ -457,7 +461,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -627,7 +631,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -673,6 +677,26 @@ dependencies = [ "cc", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quote" version = "1.0.35" @@ -824,7 +848,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -935,7 +959,20 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", +] + +[[package]] +name = "swc_allocator" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc8bd3075d1c6964010333fae9ddcd91ad422a4f8eb8b3206a9b2b6afb4209e" +dependencies = [ + "bumpalo", + "hashbrown", + "ptr_meta", + "rustc-hash", + "triomphe", ] [[package]] @@ -952,9 +989,9 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.230.2" +version = "0.233.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c506ddddebb846f8e68780464e2fe1fdc0add4bc265659f713a71015ffcdb13" +checksum = "e9e0a88398e80a77bd6e1b523698a0f1ab3b12fbddd03c8a69a73963c02d3bbc" dependencies = [ "anyhow", "crc", @@ -996,9 +1033,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.34.4" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9087befec6b63911f9d2f239e4f91c9b21589c169b86ed2d616944d23cf4a243" +checksum = "1802b1642488aec58597dc55ea88992c165660d6e44e9838d4d93f7b78ab95f3" dependencies = [ "ast_node", "better_scoped_tls", @@ -1012,6 +1049,7 @@ dependencies = [ "serde", "siphasher", "sourcemap", + "swc_allocator", "swc_atoms", "swc_eq_ignore_macros", "swc_visit", @@ -1043,14 +1081,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", ] [[package]] name = "swc_ecma_ast" -version = "0.115.1" +version = "0.117.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be1306930c235435a892104c00c2b5e16231043c085d5a10bd3e7537b15659b" +checksum = "a5da2f0310e8cd84b8c803095e75b2cbca872c71fc7f7404d4c9c8117d894960" dependencies = [ "bitflags 2.5.0", "is-macro", @@ -1066,16 +1104,16 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.151.1" +version = "0.154.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5141a8cb4eb69e090e6aea5d49061b46919be5210f3d084f9d9ad63d30f5cff" +checksum = "808d1e5a3c923fe0fa6cd9c28af4ecb7e713b97231fe0914d89c00f6a7dca2e5" dependencies = [ "memchr", "num-bigint", "once_cell", - "rustc-hash", "serde", "sourcemap", + "swc_allocator", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -1085,21 +1123,21 @@ dependencies = [ [[package]] name = "swc_ecma_codegen_macros" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090e409af49c8d1a3c13b3aab1ed09dd4eda982207eb3e63c2ad342f072b49c8" +checksum = "859fabde36db38634f3fad548dd5e3410c1aebba1b67a3c63e67018fa57a0bca" dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", ] [[package]] name = "swc_ecma_compat_bugfixes" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04182e17ec1343e355c4150b51226627d0160b8c0fb612bfcf3faa3d030a3866" +checksum = "0729253b3f14e53fe300a7bb701144e319f539d1bcb1839eabab17a93d9fd6b2" dependencies = [ "swc_atoms", "swc_common", @@ -1114,9 +1152,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_common" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d2f791e974b5dd20a72c50aaf5507a07c6b7c2778711a4b8f62b881b92035b1" +checksum = "b4cc5d93c0517aba5a5cefed6770970a270960f9f3881c3234257244f29f9d81" dependencies = [ "swc_common", "swc_ecma_ast", @@ -1127,9 +1165,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2015" -version = "0.7.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23a9a192078d1d074113d77d8ad811f2a81a4447ae967739824da5d391616bf" +checksum = "d705c2e9fa6a7024d1771fa6f8203f28762fbe0995db919a2f5a6cabd9c6b544" dependencies = [ "arrayvec", "indexmap", @@ -1153,9 +1191,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2016" -version = "0.7.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a166a024e6415bb6e6e326ed6ebe2fadcea093408f0de3cf1308b4f971c171b0" +checksum = "00a32d58418a36a2b41462197c5c4334ed24b21c73be31f2bd09203c0bb962db" dependencies = [ "swc_atoms", "swc_common", @@ -1170,9 +1208,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2017" -version = "0.7.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f84891ddbc61b105222e64f7f33cf8a27d4020cbae2e7381899eacb69c540a" +checksum = "56f7e60ec1d6a742de6ca35ddff7bc8a01e99ed53d1f68c352d4ea9a494d9b4d" dependencies = [ "serde", "swc_atoms", @@ -1188,9 +1226,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2018" -version = "0.7.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe11cda413787f46bef9a66752933fb8f6f2e509cb938758ad67d27710619ee6" +checksum = "9623c0aa17f9ec0bded894089b73aa3056f5205a0bf715955fbf36e6f63ae0f9" dependencies = [ "serde", "swc_atoms", @@ -1207,9 +1245,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2019" -version = "0.7.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2888fa110ff41e36bd824fa8636f876f812e64c8b12d721df90a133c28ee86" +checksum = "a8be9ff518dbca4cb96d3eebcc7c2fb23b73c5d0b5cfb81237ebab92f423a359" dependencies = [ "swc_atoms", "swc_common", @@ -1223,9 +1261,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2020" -version = "0.7.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3baf93ce04ee5a888e41265280dcb12d4e6a7bcf907ef2526b69d2aed9187607" +checksum = "9fc6d451268aa73f105b2f663d20e7876ea4949c796bc25d62d58f598a776ea6" dependencies = [ "serde", "swc_atoms", @@ -1241,9 +1279,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2021" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529b0368f8ada330a928ecf82c6c480eefd51cacd2d6e9f3bdedf9187782f0da" +checksum = "c14bde6cfd6612cab24560f1db1aa26b0e09325d85a0c9cac3c84c196ea80397" dependencies = [ "swc_atoms", "swc_common", @@ -1257,9 +1295,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es2022" -version = "0.7.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fb64c1ee316e05823b6b698d44017848241626f1e11eaf394a642bc99d4d4cd" +checksum = "a6454665fdfd1f74f1de8fd58dd2a4736903987b7ef840e1ad6f5e695555920c" dependencies = [ "swc_atoms", "swc_common", @@ -1276,9 +1314,9 @@ dependencies = [ [[package]] name = "swc_ecma_compat_es3" -version = "0.7.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d6a9792a2f534232b98a1564e3982d9135d86f6948a55e8f944ab3b960e602" +checksum = "5092a2e55629997e8dd5191d1183b33b64707576fe719c17302fbd5cd2f8ac7a" dependencies = [ "swc_common", "swc_ecma_ast", @@ -1291,9 +1329,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.46.1" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9febebf047d1286e7b723fa2758f3229da2c103834f3eaee69833f46692612" +checksum = "a201c65ccbaa0c80fbcfd5c90dcc0bfc7ae62ac596f2233651ac715caf5d2c12" dependencies = [ "anyhow", "pathdiff", @@ -1305,9 +1343,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.146.12" +version = "0.148.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e0c2e85f12c63b85c805e923079b04d1fb3e25edd069d638eed5f2098de74" +checksum = "a8204235f635274dba4adc30c47ac896fd126ddfc53b27210676722423cbb2e7" dependencies = [ "either", "new_debug_unreachable", @@ -1327,9 +1365,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.140.3" +version = "0.143.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37dc505c92af56d0f77cf6f31a6ccd37ac40cad1e01ff77277e0b1c70e8f8ff" +checksum = "6df81c1cbb920d9c47abe6fb105363b0f78df2c8f6b0910c4fdd2ad7cbdfb23d" dependencies = [ "better_scoped_tls", "bitflags 2.5.0", @@ -1350,9 +1388,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.129.0" +version = "0.132.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3eab5f8179e5b0aedf385eacc2c033691c6d211a7babd1bbbff12cf794a824e" +checksum = "53291bcdfca4bd4c2546c3170d7f0ea1d4f22f6fce2a531265ead010a9a2ebdf" dependencies = [ "swc_atoms", "swc_common", @@ -1364,9 +1402,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_compat" -version = "0.166.1" +version = "0.169.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626198f214d4c09adc98ab14565c19d72b6df9630f7e806ef9b2ef05a5fd17a5" +checksum = "8f689e03f059ebbff4455331d7e419933574fe409977f8c1d0005c480a89949e" dependencies = [ "arrayvec", "indexmap", @@ -1407,14 +1445,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", ] [[package]] name = "swc_ecma_transforms_optimization" -version = "0.201.2" +version = "0.204.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724a8306e98c1b1f9640fc44c1acc0c971f6daa17651919e06b64f905d4a4564" +checksum = "3d7f9a903d6774d3f9005775badc25817296791ffed560f1b7e38aab62ca37ff" dependencies = [ "dashmap", "indexmap", @@ -1436,9 +1474,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.174.3" +version = "0.177.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df8aa6752cc2fcf3d78ac67827542fb666e52283f2b26802aa058906bb750d3" +checksum = "a2d84d062b05ae89982a76ff47881a5e15bbd02e9b3c68dc14a3f5eacf48abca" dependencies = [ "either", "rustc-hash", @@ -1456,9 +1494,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.186.2" +version = "0.189.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446da32cac8299973aaf1d37496562bfd0c1e4f3c3ab5d0af6f07f42e8184102" +checksum = "d411add563dd86d50b3db6e74e38def06587fa2fd370b430f71226688bfa6ded" dependencies = [ "base64", "dashmap", @@ -1467,6 +1505,7 @@ dependencies = [ "serde", "sha1", "string_enum", + "swc_allocator", "swc_atoms", "swc_common", "swc_config", @@ -1480,9 +1519,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.191.2" +version = "0.194.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ce8af2865449e714ae56dacb6b54b3f6dc4cc25074da4e39b878bd93c5e39c" +checksum = "c1405b179495c3d9530f84778f8c27706c9a2bd7ec820cdd16264d275a2cac0c" dependencies = [ "ryu-js", "serde", @@ -1497,9 +1536,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.130.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e62b199454a576c5fdbd7e1bef8ab88a395427456d8a713d994b7d469833aa" +checksum = "025021bfd325dcd1232d49743f58ea76de7c81ca2a2526b972e4e9a984b9cbc8" dependencies = [ "indexmap", "num_cpus", @@ -1516,10 +1555,11 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.101.0" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0d997f0c9b4e181225f603d161f6757c2a97022258170982cfe005ec69ec92" +checksum = "ed8026e4d9abcb75d511bf7623d49e8e135f02f4f9a6bb7c115df8239cfe3d4f" dependencies = [ + "new_debug_unreachable", "num-bigint", "swc_atoms", "swc_common", @@ -1530,20 +1570,20 @@ dependencies = [ [[package]] name = "swc_eq_ignore_macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "695a1d8b461033d32429b5befbf0ad4d7a2c4d6ba9cd5ba4e0645c615839e8e4" +checksum = "63db0adcff29d220c3d151c5b25c0eabe7e32dd936212b84cdaa1392e3130497" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] name = "swc_fast_graph" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf5c1687e9858fb9de1ffa90a3e21369095406e97ace870a389320d105b0a" +checksum = "f3f854cf8efc290aa927d31dab98b42011ff2341fecb2b27fdc817ef7b30ef3b" dependencies = [ "indexmap", "petgraph", @@ -1553,9 +1593,9 @@ dependencies = [ [[package]] name = "swc_graph_analyzer" -version = "0.23.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a928a2ad8897fb78c38898ba342960863e9937b7a3de2d010d3204d85ce1b72a" +checksum = "d97d4b3b186f842f6def323db73f1bc90d7086bd5fa1fb4cca527e20c70f856e" dependencies = [ "auto_impl", "petgraph", @@ -1566,13 +1606,13 @@ dependencies = [ [[package]] name = "swc_macros_common" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91745f3561057493d2da768437c427c0e979dff7396507ae02f16c981c4a8466" +checksum = "f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -1583,30 +1623,40 @@ checksum = "ff9719b6085dd2824fd61938a881937be14b08f95e2d27c64c825a9f65e052ba" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] name = "swc_visit" -version = "0.5.14" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043d11fe683dcb934583ead49405c0896a5af5face522e4682c16971ef7871b9" +checksum = "2e194d14f94121fd08b823d3379eedb3ce455785d9e0c3d2742c59377e283207" dependencies = [ "either", - "swc_visit_macros", ] [[package]] name = "swc_visit_macros" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae9ef18ff8daffa999f729db056d2821cd2f790f3a11e46422d19f46bb193e7" +checksum = "92807d840959f39c60ce8a774a3f83e8193c658068e6d270dbe0a05e40e90b41" dependencies = [ "Inflector", "proc-macro2", "quote", "swc_macros_common", - "syn", + "syn 2.0.48", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] @@ -1661,7 +1711,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -1698,7 +1748,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] [[package]] @@ -1712,9 +1762,9 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" +checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" dependencies = [ "serde", "stable_deref_trait", @@ -1746,9 +1796,9 @@ checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" [[package]] name = "unicode-id-start" -version = "1.0.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aebfa694eccbbbffdd92922c7de136b9fe764396d2f10e21bce1681477cfc1" +checksum = "bc3882f69607a2ac8cc4de3ee7993d8f68bb06f2974271195065b3bd07f2edea" [[package]] name = "unicode-ident" @@ -1921,5 +1971,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.48", ] diff --git a/Cargo.toml b/Cargo.toml index a99e390..d5a433a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ base64 = { version = "0.21.6", optional = true } deno_media_type = "0.1.4" deno_terminal = "0.1.1" -dprint-swc-ext = "0.17.0" +dprint-swc-ext = "0.18.0" once_cell = "1.19.0" percent-encoding = "2.3.1" serde = { version = "1.0.144", features = ["derive"] } @@ -50,31 +50,31 @@ unicode-width = "0.1" # # NOTE: You can automatically update these dependencies by running ./scripts/update_swc_deps.ts swc_atoms = "=0.6.7" -swc_common = "=0.34.4" +swc_common = "=0.36.2" swc_config = { version = "=0.1.14", optional = true } swc_config_macro = { version = "=0.1.4", optional = true } -swc_ecma_ast = { version = "=0.115.1", features = ["serde-impl"] } -swc_ecma_codegen = { version = "=0.151.1", optional = true } -swc_ecma_codegen_macros = { version = "=0.7.6", optional = true } -swc_ecma_loader = { version = "=0.46.1", optional = true } -swc_ecma_parser = "=0.146.12" -swc_ecma_transforms_base = { version = "=0.140.3", optional = true } -swc_ecma_transforms_classes = { version = "=0.129.0", optional = true } -swc_ecma_transforms_compat = { version = "=0.166.1", optional = true } +swc_ecma_ast = { version = "=0.117.4", features = ["serde-impl"] } +swc_ecma_codegen = { version = "=0.154.3", optional = true } +swc_ecma_codegen_macros = { version = "=0.7.7", optional = true } +swc_ecma_loader = { version = "=0.48.1", optional = true } +swc_ecma_parser = "=0.148.1" +swc_ecma_transforms_base = { version = "=0.143.3", optional = true } +swc_ecma_transforms_classes = { version = "=0.132.1", optional = true } +swc_ecma_transforms_compat = { version = "=0.169.2", optional = true } swc_ecma_transforms_macros = { version = "=0.5.5", optional = true } -swc_ecma_transforms_optimization = { version = "=0.201.2", optional = true } -swc_ecma_transforms_proposal = { version = "=0.174.3", optional = true } -swc_ecma_transforms_react = { version = "=0.186.2", optional = true } -swc_ecma_transforms_typescript = { version = "=0.191.2", optional = true } -swc_ecma_utils = { version = "=0.130.3", optional = true } -swc_ecma_visit = { version = "=0.101.0", optional = true } -swc_eq_ignore_macros = "=0.1.3" -swc_bundler = { version = "=0.230.2", optional = true } -swc_graph_analyzer = { version = "=0.23.0", optional = true } -swc_macros_common = { version = "=0.3.11", optional = true } +swc_ecma_transforms_optimization = { version = "=0.204.2", optional = true } +swc_ecma_transforms_proposal = { version = "=0.177.1", optional = true } +swc_ecma_transforms_react = { version = "=0.189.2", optional = true } +swc_ecma_transforms_typescript = { version = "=0.194.2", optional = true } +swc_ecma_utils = { version = "=0.133.3", optional = true } +swc_ecma_visit = { version = "=0.103.3", optional = true } +swc_eq_ignore_macros = "=0.1.4" +swc_bundler = { version = "=0.233.3", optional = true } +swc_graph_analyzer = { version = "=0.25.1", optional = true } +swc_macros_common = { version = "=0.3.13", optional = true } swc_trace_macro = { version = "=0.1.3", optional = true } -swc_visit = { version = "=0.5.14", optional = true } -swc_visit_macros = { version = "=0.5.12", optional = true } +swc_visit = { version = "=0.6.1", optional = true } +swc_visit_macros = { version = "=0.5.13", optional = true } thiserror = "1.0.58" [dev-dependencies] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4de5fa7..8c677eb 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.77.2" +channel = "1.80.0" components = ["clippy", "rustfmt"] profile = "minimal" diff --git a/src/dep.rs b/src/dep.rs index 7c35e9a..e4cc8ab 100644 --- a/src/dep.rs +++ b/src/dep.rs @@ -270,15 +270,15 @@ impl<'a> Visit for DependencyCollector<'a> { } fn visit_module_items(&mut self, items: &[ast::ModuleItem]) { - swc_ecma_visit::visit_module_items(self, items); + items.visit_children_with(self); } fn visit_stmts(&mut self, items: &[ast::Stmt]) { - swc_ecma_visit::visit_stmts(self, items); + items.visit_children_with(self) } fn visit_call_expr(&mut self, node: &ast::CallExpr) { - swc_ecma_visit::visit_call_expr(self, node); + node.visit_children_with(self); if !matches!(&node.callee, Callee::Import(_)) { return; diff --git a/src/source_map.rs b/src/source_map.rs index a87cf99..09fab53 100644 --- a/src/source_map.rs +++ b/src/source_map.rs @@ -2,44 +2,21 @@ use std::rc::Rc; -use crate::swc::common::FileName; use crate::swc::common::SourceFile; use crate::ModuleSpecifier; -pub trait IntoSwcFileName { - fn into_file_name(self) -> FileName; -} - -impl IntoSwcFileName for ModuleSpecifier { - fn into_file_name(self) -> FileName { - FileName::Url(self) - } -} - -impl IntoSwcFileName for String { - fn into_file_name(self) -> FileName { - FileName::Custom(self) - } -} - -impl IntoSwcFileName for &str { - fn into_file_name(self) -> FileName { - FileName::Custom(self.to_owned()) - } -} - #[derive(Clone, Default)] pub struct SourceMap { inner: Rc, } impl SourceMap { - pub fn single(file_name: impl IntoSwcFileName, source: String) -> Self { + pub fn single(specifier: ModuleSpecifier, source: String) -> Self { let map = Self::default(); map .inner - .new_source_file(file_name.into_file_name(), source); + .new_source_file(Rc::new(swc_common::FileName::Url(specifier)), source); map } @@ -49,11 +26,11 @@ impl SourceMap { pub fn new_source_file( &self, - file_name: impl IntoSwcFileName, + specifier: ModuleSpecifier, source: String, ) -> Rc { self .inner - .new_source_file(file_name.into_file_name(), source) + .new_source_file(Rc::new(swc_common::FileName::Url(specifier)), source) } } diff --git a/src/transpiling/jsx_precompile.rs b/src/transpiling/jsx_precompile.rs index 08c66b3..9252899 100644 --- a/src/transpiling/jsx_precompile.rs +++ b/src/transpiling/jsx_precompile.rs @@ -2,6 +2,7 @@ use crate::swc::atoms::Atom; use crate::swc::parser::lexer::util::CharExt; +use swc_common::SyntaxContext; use swc_common::DUMMY_SP; use swc_ecma_ast::*; use swc_ecma_utils::prepend_stmt; @@ -558,7 +559,7 @@ impl JsxPrecompile { match &self.import_jsx { Some(ident) => ident.clone(), None => { - let ident = Ident::new("_jsx".into(), DUMMY_SP); + let ident = new_ident("_jsx".into()); self.import_jsx = Some(ident.clone()); ident } @@ -570,7 +571,7 @@ impl JsxPrecompile { match &self.import_jsx_ssr { Some(ident) => ident.clone(), None => { - let ident = Ident::new("_jsxTemplate".into(), DUMMY_SP); + let ident = new_ident("_jsxTemplate".into()); self.import_jsx_ssr = Some(ident.clone()); ident } @@ -582,7 +583,7 @@ impl JsxPrecompile { match &self.import_jsx_attr { Some(ident) => ident.clone(), None => { - let ident = Ident::new("_jsxAttr".into(), DUMMY_SP); + let ident = new_ident("_jsxAttr".into()); self.import_jsx_attr = Some(ident.clone()); ident } @@ -594,7 +595,7 @@ impl JsxPrecompile { match &self.import_jsx_escape { Some(ident) => ident.clone(), None => { - let ident = Ident::new("_jsxEscape".into(), DUMMY_SP); + let ident = new_ident("_jsxEscape".into()); self.import_jsx_escape = Some(ident.clone()); ident } @@ -609,6 +610,7 @@ impl JsxPrecompile { Expr::Call(CallExpr { span: DUMMY_SP, + ctxt: Default::default(), callee: Callee::Expr(Box::new(Expr::Ident( self.get_jsx_escape_fn_identifier(), ))), @@ -970,6 +972,7 @@ impl JsxPrecompile { CallExpr { span: DUMMY_SP, + ctxt: Default::default(), callee: Callee::Expr(Box::new(Expr::Ident(self.get_jsx_identifier()))), args, type_args: None, @@ -990,6 +993,7 @@ impl JsxPrecompile { CallExpr { span: DUMMY_SP, + ctxt: Default::default(), callee: Callee::Expr(Box::new(Expr::Ident( self.get_jsx_attr_identifier(), ))), @@ -1332,7 +1336,7 @@ impl JsxPrecompile { Vec::with_capacity(1 + dynamic_exprs.len()); args.push(ExprOrSpread { spread: None, - expr: Box::new(Expr::Ident(Ident::new(name.into(), DUMMY_SP))), + expr: Box::new(Expr::Ident(new_ident(name.into()))), }); for dynamic_expr in dynamic_exprs.into_iter() { args.push(ExprOrSpread { @@ -1346,6 +1350,7 @@ impl JsxPrecompile { Expr::Call(CallExpr { span: DUMMY_SP, + ctxt: Default::default(), callee: Callee::Expr(Box::new(Expr::Ident(jsx_ident))), args, type_args: Default::default(), @@ -1377,25 +1382,19 @@ impl JsxPrecompile { let mut imports: Vec<(Ident, Ident)> = vec![]; if let Some(jsx_ident) = &self.import_jsx { - imports.push((jsx_ident.clone(), Ident::new("jsx".into(), DUMMY_SP))) + imports.push((jsx_ident.clone(), new_ident("jsx".into()))) } if let Some(jsx_ssr_ident) = &self.import_jsx_ssr { - imports.push(( - jsx_ssr_ident.clone(), - Ident::new("jsxTemplate".into(), DUMMY_SP), - )) + imports.push((jsx_ssr_ident.clone(), new_ident("jsxTemplate".into()))) } if let Some(jsx_attr_ident) = &self.import_jsx_attr { - imports.push(( - jsx_attr_ident.clone(), - Ident::new("jsxAttr".into(), DUMMY_SP), - )) + imports.push((jsx_attr_ident.clone(), new_ident("jsxAttr".into()))) } if let Some(espace_ident) = self.import_jsx_escape.take() { - imports.push((espace_ident, Ident::new("jsxEscape".into(), DUMMY_SP))) + imports.push((espace_ident, new_ident("jsxEscape".into()))) } if !imports.is_empty() { @@ -1472,12 +1471,13 @@ impl VisitMut for JsxPrecompile { non_mod_stmt_idx, ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { span: DUMMY_SP, + ctxt: SyntaxContext::default(), kind: VarDeclKind::Const, declare: false, decls: vec![VarDeclarator { span: DUMMY_SP, name: Pat::Ident(BindingIdent { - id: Ident::new(create_tpl_binding_name(*idx).into(), DUMMY_SP), + id: new_ident(create_tpl_binding_name(*idx).into()), type_ann: None, }), init: Some(Box::new(Expr::Array(ArrayLit { @@ -1571,6 +1571,10 @@ impl VisitMut for JsxPrecompile { } } +fn new_ident(name: Atom) -> Ident { + Ident::new(name, DUMMY_SP, SyntaxContext::default()) +} + #[cfg(test)] mod tests { use crate::swc::ast::Module; @@ -1580,6 +1584,7 @@ mod tests { use crate::swc::parser::TsSyntax; use crate::swc::visit::FoldWith; use crate::EmitOptions; + use crate::ModuleSpecifier; use crate::SourceMap; use pretty_assertions::assert_eq; use swc_common::comments::SingleThreadedComments; @@ -2782,8 +2787,10 @@ const a = _jsxTemplate($$_tpl_1, _jsxAttr("class", "foo"), _jsxAttr("className", fn parse(src: &str) -> (SourceMap, Module) { let source_map = SourceMap::default(); - let source_file = - source_map.new_source_file("file:///test.ts", src.to_string()); + let source_file = source_map.new_source_file( + ModuleSpecifier::parse("file:///test.ts").unwrap(), + src.to_string(), + ); let input = StringInput::from(&*source_file); let syntax = Syntax::Typescript(TsSyntax { tsx: true, diff --git a/src/transpiling/mod.rs b/src/transpiling/mod.rs index 30a3137..1fc3e75 100644 --- a/src/transpiling/mod.rs +++ b/src/transpiling/mod.rs @@ -413,7 +413,11 @@ pub fn fold_program( options.var_decl_imports ), Optional::new( - typescript::typescript(options.as_typescript_config(), marks.top_level), + typescript::typescript( + options.as_typescript_config(), + marks.unresolved, + marks.top_level + ), !options.transform_jsx ), Optional::new( @@ -422,6 +426,7 @@ pub fn fold_program( options.as_typescript_config(), options.as_tsx_config(), comments, + marks.unresolved, marks.top_level, ), options.transform_jsx diff --git a/src/transpiling/transforms.rs b/src/transpiling/transforms.rs index 3295b22..5dadd42 100644 --- a/src/transpiling/transforms.rs +++ b/src/transpiling/transforms.rs @@ -1,5 +1,8 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +use swc_atoms::Atom; +use swc_common::SyntaxContext; + use crate::swc::ast as swc_ast; use crate::swc::common::DUMMY_SP; use crate::swc::visit::noop_fold_type; @@ -45,16 +48,15 @@ impl Fold for ImportDeclsToVarDeclsFolder { .specifiers .iter() .filter_map(|specifier| match specifier { - ImportSpecifier::Default(specifier) => Some(create_key_value( - "default".to_string(), - specifier.local.clone(), - )), + ImportSpecifier::Default(specifier) => { + Some(create_key_value("default".into(), specifier.local.clone())) + } ImportSpecifier::Named(specifier) => { Some(match specifier.imported.as_ref() { Some(name) => create_key_value( match name { - ModuleExportName::Ident(ident) => ident.sym.to_string(), - ModuleExportName::Str(str) => str.value.to_string(), + ModuleExportName::Ident(ident) => ident.sym.clone(), + ModuleExportName::Str(str) => str.value.clone(), }, specifier.local.clone(), ), @@ -79,6 +81,7 @@ impl Fold for ImportDeclsToVarDeclsFolder { ModuleItem::Stmt(Stmt::Decl(Decl::Var(Box::new(VarDecl { span: DUMMY_SP, kind: VarDeclKind::Const, + ctxt: SyntaxContext::default(), declare: false, decls: { let mut decls = Vec::new(); @@ -191,23 +194,31 @@ fn create_empty_stmt() -> swc_ast::ModuleItem { ModuleItem::Stmt(Stmt::Empty(EmptyStmt { span: DUMMY_SP })) } -fn create_ident(name: String) -> swc_ast::Ident { +fn create_ident(name: Atom) -> swc_ast::Ident { swc_ast::Ident { span: DUMMY_SP, - sym: name.into(), + ctxt: SyntaxContext::default(), + sym: name, optional: false, } } +fn create_ident_name(name: Atom) -> swc_ast::IdentName { + swc_ast::IdentName { + span: DUMMY_SP, + sym: name, + } +} + fn create_key_value( - key: String, + key: Atom, value: swc_ast::Ident, ) -> swc_ast::ObjectPatProp { swc_ast::ObjectPatProp::KeyValue(swc_ast::KeyValuePatProp { // use a string literal because it will work in more scenarios than an identifier key: swc_ast::PropName::Str(swc_ast::Str { span: DUMMY_SP, - value: key.into(), + value: key, raw: None, }), value: Box::new(swc_ast::Pat::Ident(swc_ast::BindingIdent { @@ -239,7 +250,7 @@ fn create_await_import_expr( span: DUMMY_SP, props: vec![PropOrSpread::Prop(Box::new(Prop::KeyValue( KeyValueProp { - key: PropName::Ident(create_ident("assert".to_string())), + key: PropName::Ident(create_ident_name("assert".into())), value: Box::new(Expr::Object(*asserts)), }, )))], @@ -251,11 +262,10 @@ fn create_await_import_expr( span: DUMMY_SP, arg: Box::new(Expr::Call(CallExpr { span: DUMMY_SP, - callee: Callee::Expr(Box::new(Expr::Ident(Ident { - span: DUMMY_SP, - sym: "import".into(), - optional: false, - }))), + ctxt: SyntaxContext::default(), + callee: Callee::Expr(Box::new(Expr::Ident(create_ident( + "import".into(), + )))), args, type_args: None, })), @@ -491,7 +501,9 @@ mod test { fn parse(src: &str) -> (Rc, Module) { let source_map = Rc::new(SourceMap::default()); let source_file = source_map.new_source_file( - FileName::Url(ModuleSpecifier::parse("file:///test.ts").unwrap()), + Rc::new(FileName::Url( + ModuleSpecifier::parse("file:///test.ts").unwrap(), + )), src.to_string(), ); let input = StringInput::from(&*source_file);