From b8f1d37b6a4e5abbf3c9d80b45b6fc773fbd4c50 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Thu, 10 Aug 2023 10:59:49 -0400 Subject: [PATCH] [rust] Remove SWC After the previous PR we no longer depend on SWC for the critical path of development/testing. Notably this unblocks adding support for the rest of the language: the new `forget_hermes_parser` crate automatically converts Hermes Parser's AST into our `forget_estree` format via codegen. Achieving full language support with SWC would have required manually defining the remaining conversions for the rest of the language. Long-term we'll need to revisit how to integrate into SWC, and more generally into setups build atop SWC such as Next.js's Turbopack-based build configuration. But i'll delete for now since we don't depend on it for iteration, it's slow to build, and requires us to opt-in to nightly Rust. --- compiler/forget/Cargo.lock | 2021 +---------------- compiler/forget/Cargo.toml | 4 - .../crates/forget_estree_swc/Cargo.toml | 18 - .../forget/crates/forget_estree_swc/README.md | 4 - .../crates/forget_estree_swc/src/lib.rs | 963 -------- compiler/forget/rust-toolchain.toml | 3 +- 6 files changed, 25 insertions(+), 2988 deletions(-) delete mode 100644 compiler/forget/crates/forget_estree_swc/Cargo.toml delete mode 100644 compiler/forget/crates/forget_estree_swc/README.md delete mode 100644 compiler/forget/crates/forget_estree_swc/src/lib.rs diff --git a/compiler/forget/Cargo.lock b/compiler/forget/Cargo.lock index 5f2101c497..d5a1ca5b0f 100644 --- a/compiler/forget/Cargo.lock +++ b/compiler/forget/Cargo.lock @@ -2,16 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - [[package]] name = "addr2line" version = "0.20.0" @@ -38,19 +28,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "ahash" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "serde", - "version_check", -] - [[package]] name = "aho-corasick" version = "0.7.20" @@ -69,75 +46,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "anyhow" version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "ast_node" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "auto_impl" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - [[package]] name = "backtrace" version = "0.3.68" @@ -168,61 +82,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "better_scoped_tls" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794edcc9b3fb07bb4aecaa11f093fd45663b4feadb782d68303a2268bc2701de" -dependencies = [ - "scoped-tls", -] - [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "browserslist-rs" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bda9b4595376bf255f68dafb5dcc5b0e2842b38dc2a7b52c4e0bfe9fd1c651" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "chrono", - "either", - "getrandom", - "itertools", - "js-sys", - "nom", - "once_cell", - "quote", - "serde", - "serde-wasm-bindgen", - "serde_json", - "string_cache", - "string_cache_codegen", - "thiserror", - "wasm-bindgen", -] - [[package]] name = "bstr" version = "1.5.0" @@ -233,12 +98,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bumpalo" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" - [[package]] name = "cc" version = "1.0.79" @@ -251,21 +110,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "time 0.1.45", - "wasm-bindgen", - "winapi", -] - [[package]] name = "cmake" version = "0.1.50" @@ -287,135 +131,12 @@ dependencies = [ "windows-sys 0.45.0", ] -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "dashmap" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" -dependencies = [ - "cfg-if", - "hashbrown 0.12.3", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - [[package]] name = "encode_unicode" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" -[[package]] -name = "enum-iterator" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.23", -] - [[package]] name = "equivalent" version = "1.0.0" @@ -443,12 +164,6 @@ dependencies = [ "libc", ] -[[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" @@ -463,7 +178,7 @@ dependencies = [ "forget_estree", "forget_hir", "forget_semantic_analysis", - "indexmap 2.0.0", + "indexmap", "thiserror", ] @@ -472,7 +187,7 @@ name = "forget_diagnostics" version = "0.1.0" dependencies = [ "forget_estree", - "miette 5.9.0", + "miette", "static_assertions", "thiserror", ] @@ -492,21 +207,12 @@ dependencies = [ name = "forget_estree_codegen" version = "0.1.0" dependencies = [ - "indexmap 2.0.0", + "indexmap", "prettyplease", "quote", "serde", "serde_json", - "syn 2.0.23", -] - -[[package]] -name = "forget_estree_swc" -version = "0.1.0" -dependencies = [ - "forget_estree", - "swc", - "swc_core", + "syn", ] [[package]] @@ -521,7 +227,7 @@ dependencies = [ "forget_semantic_analysis", "forget_ssa", "insta", - "miette 5.9.0", + "miette", ] [[package]] @@ -545,7 +251,7 @@ dependencies = [ "forget_estree", "forget_semantic_analysis", "forget_utils", - "indexmap 2.0.0", + "indexmap", "serde", "thiserror", ] @@ -560,8 +266,8 @@ dependencies = [ "forget_hir", "forget_ssa", "forget_utils", - "indexmap 2.0.0", - "miette 5.9.0", + "indexmap", + "miette", "thiserror", ] @@ -573,7 +279,7 @@ dependencies = [ "forget_estree", "forget_hermes_parser", "forget_utils", - "indexmap 2.0.0", + "indexmap", "insta", "serde_json", ] @@ -585,8 +291,8 @@ dependencies = [ "forget_diagnostics", "forget_hir", "forget_utils", - "indexmap 2.0.0", - "miette 5.9.0", + "indexmap", + "miette", "thiserror", ] @@ -606,28 +312,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "from_variant" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" -dependencies = [ - "pmutil", - "proc-macro2", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.10" @@ -635,22 +319,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getset" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", + "wasi", ] [[package]] @@ -678,16 +348,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.3", + "ahash", ] [[package]] @@ -708,44 +369,12 @@ dependencies = [ "thiserror", ] -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - [[package]] name = "idna" version = "0.4.0" @@ -756,23 +385,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "if_chain" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - [[package]] name = "indexmap" version = "2.0.0" @@ -805,31 +417,18 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi", "libc", "windows-sys 0.48.0", ] -[[package]] -name = "is-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4467ed1321b310c2625c5aa6c1b1ffc5de4d9e42668cf697a08fb033ee8265e" -dependencies = [ - "Inflector", - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.23", -] - [[package]] name = "is-terminal" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi", "io-lifetimes", "rustix", "windows-sys 0.48.0", @@ -841,39 +440,12 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "jsonc-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b56a20e76235284255a09fcd1f45cf55d3c524ea657ebd3854735925c57743d" -dependencies = [ - "serde_json", -] - [[package]] name = "juno_support" version = "0.1.0" @@ -893,79 +465,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "lexical" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" -dependencies = [ - "lexical-core", -] - -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - [[package]] name = "libc" version = "0.2.147" @@ -989,66 +488,18 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - [[package]] name = "log" version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" -[[package]] -name = "lru" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" -dependencies = [ - "hashbrown 0.13.2", -] - [[package]] name = "memchr" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miette" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c90329e44f9208b55f45711f9558cec15d7ef8295cc65ecd6d4188ae8edc58c" -dependencies = [ - "atty", - "backtrace", - "miette-derive 4.7.1", - "once_cell", - "owo-colors", - "supports-color 1.3.1", - "supports-hyperlinks 1.2.0", - "supports-unicode 1.0.2", - "terminal_size", - "textwrap", - "thiserror", - "unicode-width", -] - [[package]] name = "miette" version = "5.9.0" @@ -1058,29 +509,18 @@ dependencies = [ "backtrace", "backtrace-ext", "is-terminal", - "miette-derive 5.9.0", + "miette-derive", "once_cell", "owo-colors", - "supports-color 2.0.0", - "supports-hyperlinks 2.1.0", - "supports-unicode 2.0.0", + "supports-color", + "supports-hyperlinks", + "supports-unicode", "terminal_size", "textwrap", "thiserror", "unicode-width", ] -[[package]] -name = "miette-derive" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b5bc45b761bcf1b5e6e6c4128cd93b84c218721a8d9b894aa0aff4ed180174c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "miette-derive" version = "5.9.0" @@ -1089,15 +529,9 @@ checksum = "4901771e1d44ddb37964565c654a3223ba41a594d02b8da471cc4464912b5cfa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1107,72 +541,6 @@ dependencies = [ "adler", ] -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "normpath" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a9da8c9922c35a1033d76f7272dfc2e7ee20392083d75aeea6ced23c6266578" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - [[package]] name = "object" version = "0.31.1" @@ -1194,148 +562,12 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.48.1", -] - -[[package]] -name = "path-clean" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd" - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - [[package]] name = "percent-encoding" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" -[[package]] -name = "petgraph" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" -dependencies = [ - "fixedbitset", - "indexmap 1.9.3", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_macros", - "phf_shared", - "proc-macro-hack", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" - -[[package]] -name = "pmutil" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.23", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "preset_env_base" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae83c5857727636a1f2c7188632c8a57986d2f1d2e2cf45f2642f5856c5b8e85" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "browserslist-rs", - "dashmap", - "from_variant", - "once_cell", - "semver 1.0.17", - "serde", - "st-map", - "tracing", -] - [[package]] name = "prettyplease" version = "0.2.10" @@ -1343,39 +575,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387" dependencies = [ "proc-macro2", - "syn 2.0.23", + "syn", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" version = "1.0.63" @@ -1403,73 +605,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radix_fmt" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce082a9940a7ace2ad4a8b7d0b1eac6aa378895f18be598230c5f2284ac05426" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rayon" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "regex" version = "1.8.4" @@ -1493,28 +628,13 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustix" version = "0.37.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8818fa822adcc98b18fedbb3632a6a33213c070556b5aa7c4c8cc21cff565c4c" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", "io-lifetimes", "libc", @@ -1522,24 +642,12 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "rustversion" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" - [[package]] name = "ryu" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" -[[package]] -name = "ryu-js" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f" - [[package]] name = "same-file" version = "1.0.6" @@ -1549,42 +657,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.167" @@ -1594,17 +666,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-wasm-bindgen" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "serde_derive" version = "1.0.167" @@ -1613,7 +674,7 @@ checksum = "b69b106b68bc8054f0e974e70d19984040f8a5cf9215ca82626ea4853f82c4b9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn", ] [[package]] @@ -1627,83 +688,18 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "similar" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "smartstring" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" -dependencies = [ - "autocfg", - "static_assertions", - "version_check", -] - [[package]] name = "smawk" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" -[[package]] -name = "sourcemap" -version = "6.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed16231c92d0a6f0388f56e0ab2be24ecff1173f8e22f0ea5e074d0525631cb" -dependencies = [ - "data-encoding", - "if_chain", - "rustc_version", - "serde", - "serde_json", - "unicode-id", - "url", -] - -[[package]] -name = "st-map" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f352d5d14be5a1f956d76ae0c8060c3487aaa2a080f10a4b4ff023c7c05a9047" -dependencies = [ - "arrayvec", - "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 = "stacker" version = "0.1.15" @@ -1717,73 +713,12 @@ dependencies = [ "winapi", ] -[[package]] -name = "static-map-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7628ae0bd92555d3de4303da41a5c8b1c5363e892001325f34e4be9ed024d0d7" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.23", -] - [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "string_enum" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "supports-color" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6f" -dependencies = [ - "atty", - "is_ci", -] - [[package]] name = "supports-color" version = "2.0.0" @@ -1794,15 +729,6 @@ dependencies = [ "is_ci", ] -[[package]] -name = "supports-hyperlinks" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590b34f7c5f01ecc9d78dba4b3f445f31df750a67621cf31626f3b7441ce6406" -dependencies = [ - "atty", -] - [[package]] name = "supports-hyperlinks" version = "2.1.0" @@ -1812,15 +738,6 @@ dependencies = [ "is-terminal", ] -[[package]] -name = "supports-unicode" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b945e45b417b125a8ec51f1b7df2f8df7920367700d1f98aedd21e5735f8b2" -dependencies = [ - "atty", -] - [[package]] name = "supports-unicode" version = "2.0.0" @@ -1830,714 +747,6 @@ dependencies = [ "is-terminal", ] -[[package]] -name = "swc" -version = "0.264.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96d692a45418867d3b208ad320c9cd27ef8ca4f58d0a043ad30887b32c5144b" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "base64", - "dashmap", - "either", - "indexmap 1.9.3", - "jsonc-parser", - "lru", - "once_cell", - "parking_lot", - "pathdiff", - "regex", - "rustc-hash", - "serde", - "serde_json", - "sourcemap", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_codegen", - "swc_ecma_ext_transforms", - "swc_ecma_lints", - "swc_ecma_loader", - "swc_ecma_minifier", - "swc_ecma_parser", - "swc_ecma_preset_env", - "swc_ecma_transforms", - "swc_ecma_transforms_base", - "swc_ecma_transforms_compat", - "swc_ecma_transforms_optimization", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_error_reporters", - "swc_node_comments", - "swc_timer", - "swc_visit", - "tracing", - "url", -] - -[[package]] -name = "swc_atoms" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d0307dc4bfd107d49c7528350c372758cfca94fb503629b9a056e6a1572860" -dependencies = [ - "once_cell", - "rustc-hash", - "serde", - "string_cache", - "string_cache_codegen", - "triomphe", -] - -[[package]] -name = "swc_cached" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b8051bbf1c23817f9f2912fce18d9a6efcaaf8f8e1a4c69dbaf72bcaf71136" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "dashmap", - "once_cell", - "regex", - "serde", -] - -[[package]] -name = "swc_common" -version = "0.31.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6414bd4e553f5638961d39b07075ffd37a3d63176829592f4a5900260d94ca1" -dependencies = [ - "ahash 0.8.3", - "ast_node", - "better_scoped_tls", - "cfg-if", - "either", - "from_variant", - "new_debug_unreachable", - "num-bigint", - "once_cell", - "parking_lot", - "rustc-hash", - "serde", - "siphasher", - "sourcemap", - "string_cache", - "swc_atoms", - "swc_eq_ignore_macros", - "swc_visit", - "tracing", - "unicode-width", - "url", -] - -[[package]] -name = "swc_config" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba1c7a40d38f9dd4e9a046975d3faf95af42937b34b2b963be4d8f01239584b" -dependencies = [ - "indexmap 1.9.3", - "serde", - "serde_json", - "swc_config_macro", -] - -[[package]] -name = "swc_config_macro" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "swc_core" -version = "0.79.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51e91b0c4f50dd65f94f18a3e3fb9bef463a0d6836470b91c23575ca0778e63" -dependencies = [ - "swc", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_visit", - "vergen", -] - -[[package]] -name = "swc_ecma_ast" -version = "0.107.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5693558188efdd5b664e517b69ba8056a7f64c214ca8cd034e3ae8314566b866" -dependencies = [ - "bitflags 2.3.3", - "is-macro", - "num-bigint", - "scoped-tls", - "serde", - "string_enum", - "swc_atoms", - "swc_common", - "unicode-id", -] - -[[package]] -name = "swc_ecma_codegen" -version = "0.142.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a1e2c520108525667676df493a636afe679112f19fc51a2d226f853f7513a1" -dependencies = [ - "memchr", - "num-bigint", - "once_cell", - "rustc-hash", - "serde", - "sourcemap", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_codegen_macros", - "tracing", -] - -[[package]] -name = "swc_ecma_codegen_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "swc_ecma_ext_transforms" -version = "0.106.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f16586ee4665969223337d81c1d5a2f3c212b2996c0c2e953fe77590cdcb39" -dependencies = [ - "phf", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_lints" -version = "0.85.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9303e33d47e5e524cece64a1d61cff6c02d1cd026aba60bc97954d03a21ac4f9" -dependencies = [ - "ahash 0.8.3", - "auto_impl", - "dashmap", - "parking_lot", - "rayon", - "regex", - "serde", - "swc_atoms", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_loader" -version = "0.43.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d40f8d1626b33ba85ee17f43268b3bb6382278b9d3a3c1faa52c57e71769a60" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "dashmap", - "lru", - "normpath", - "once_cell", - "parking_lot", - "path-clean", - "pathdiff", - "serde", - "serde_json", - "swc_cached", - "swc_common", - "tracing", -] - -[[package]] -name = "swc_ecma_minifier" -version = "0.184.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c1106ce1d65d21c38857dd0338f59a261b6cdc38f581954b1798a785d014524" -dependencies = [ - "ahash 0.8.3", - "arrayvec", - "indexmap 1.9.3", - "num-bigint", - "num_cpus", - "once_cell", - "parking_lot", - "radix_fmt", - "regex", - "rustc-hash", - "ryu-js", - "serde", - "serde_json", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_codegen", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_optimization", - "swc_ecma_usage_analyzer", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_timer", - "tracing", -] - -[[package]] -name = "swc_ecma_parser" -version = "0.137.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1915adb15d9ca1695e76d41524beb4806e9b603280edb7eedbaebe706a41c" -dependencies = [ - "either", - "lexical", - "num-bigint", - "serde", - "smallvec", - "smartstring", - "stacker", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "tracing", - "typed-arena", -] - -[[package]] -name = "swc_ecma_preset_env" -version = "0.198.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6835b856cbae281ea2aba64af208b3011528e5ef815441f4e4e234674f805472" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "dashmap", - "indexmap 1.9.3", - "once_cell", - "preset_env_base", - "semver 1.0.17", - "serde", - "serde_json", - "st-map", - "string_enum", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms" -version = "0.221.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f578a16ff264c1f306d38a10b900256b33f636426ebeb5eab980205e8fc9f5" -dependencies = [ - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "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", -] - -[[package]] -name = "swc_ecma_transforms_base" -version = "0.130.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84594423bc24ec9133265197c314db437c42c2cdbaba275c81e1d3673b8d6beb" -dependencies = [ - "better_scoped_tls", - "bitflags 2.3.3", - "indexmap 1.9.3", - "once_cell", - "phf", - "rustc-hash", - "serde", - "smallvec", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_utils", - "swc_ecma_visit", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_classes" -version = "0.119.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a288e0d1a702f1944df7c1b57468f505a9549d7d7a51d89dfa18d8f956abdbf5" -dependencies = [ - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms_base", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_compat" -version = "0.156.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ff9b38ea8bf338a46dda895b841de54360973b600c012c18e1bf93bfba35c06" -dependencies = [ - "ahash 0.8.3", - "arrayvec", - "indexmap 1.9.3", - "is-macro", - "num-bigint", - "serde", - "smallvec", - "swc_atoms", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_transforms_base", - "swc_ecma_transforms_classes", - "swc_ecma_transforms_macros", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_trace_macro", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_macros" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59c4b6ed5d78d3ad9fc7c6f8ab4f85bba99573d31d9a2c0a712077a6b45efd2" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[package]] -name = "swc_ecma_transforms_module" -version = "0.173.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729cb914afb891896bd3f1648f194e003492568471e6c9483f7667bf3c14fd9b" -dependencies = [ - "Inflector", - "ahash 0.8.3", - "anyhow", - "bitflags 2.3.3", - "indexmap 1.9.3", - "is-macro", - "path-clean", - "pathdiff", - "regex", - "serde", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_ecma_ast", - "swc_ecma_loader", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_utils", - "swc_ecma_visit", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_optimization" -version = "0.190.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c1e2751df41e27e22bf3ad304c3a1831fad141f1491b08c2b7907ccd9d66c5" -dependencies = [ - "ahash 0.8.3", - "dashmap", - "indexmap 1.9.3", - "once_cell", - "petgraph", - "rustc-hash", - "serde_json", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_macros", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_fast_graph", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_proposal" -version = "0.164.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1a942506b915e48989c13ee3c6bd63eb9b895593b8a47008d9607e2857d4c7" -dependencies = [ - "either", - "rustc-hash", - "serde", - "smallvec", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms_base", - "swc_ecma_transforms_classes", - "swc_ecma_transforms_macros", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_react" -version = "0.176.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094c9def9589d2687c15cfe859ffab87989a92217e73c93b3ce48e58c4a4ebfe" -dependencies = [ - "ahash 0.8.3", - "base64", - "dashmap", - "indexmap 1.9.3", - "once_cell", - "serde", - "sha-1", - "string_enum", - "swc_atoms", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_macros", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_transforms_typescript" -version = "0.180.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a7740e75e9a8c690320f2a3507560eb9cb1ce91662174619f21357bb517d3" -dependencies = [ - "serde", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_transforms_base", - "swc_ecma_transforms_react", - "swc_ecma_utils", - "swc_ecma_visit", -] - -[[package]] -name = "swc_ecma_usage_analyzer" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3c6eb57ce96ed026f21315e510d6710fbfe65b8706ae89ff0ff657e580eb74" -dependencies = [ - "ahash 0.8.3", - "indexmap 1.9.3", - "rustc-hash", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_timer", - "tracing", -] - -[[package]] -name = "swc_ecma_utils" -version = "0.120.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ce2d8b6a3ed69ac1a8146efe1f0b1bdb8676cab204b839f42ac8b62fefc772" -dependencies = [ - "indexmap 1.9.3", - "num_cpus", - "once_cell", - "rustc-hash", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_visit", - "tracing", - "unicode-id", -] - -[[package]] -name = "swc_ecma_visit" -version = "0.93.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82bb87ee3345a7049efcbedc419f121933e0e3967457922848d0026fb3b79dac" -dependencies = [ - "num-bigint", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_visit", - "tracing", -] - -[[package]] -name = "swc_eq_ignore_macros" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.23", -] - -[[package]] -name = "swc_error_reporters" -version = "0.15.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108322b719696e8c368c39dc6d8748494ea2aa870e7d80ea5956078aa6b4dd4d" -dependencies = [ - "anyhow", - "miette 4.7.1", - "once_cell", - "parking_lot", - "swc_common", -] - -[[package]] -name = "swc_fast_graph" -version = "0.19.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b76468219b923c34efdeff812fa951fe1a1ecaba78118b013d034a1669ff5" -dependencies = [ - "indexmap 1.9.3", - "petgraph", - "rustc-hash", - "swc_common", -] - -[[package]] -name = "swc_macros_common" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.23", -] - -[[package]] -name = "swc_node_comments" -version = "0.18.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61839f8a936b5c95ce644d539914bb944b094eee9bd156c3dc41fe8e7eaa84ea" -dependencies = [ - "ahash 0.8.3", - "dashmap", - "swc_atoms", - "swc_common", -] - -[[package]] -name = "swc_timer" -version = "0.19.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9889bf48909289e13e0f343eb8d1238e674e9380a4dd6c6346f62b83cb30236f" -dependencies = [ - "tracing", -] - -[[package]] -name = "swc_trace_macro" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff9719b6085dd2824fd61938a881937be14b08f95e2d27c64c825a9f65e052ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.23", -] - -[[package]] -name = "swc_visit" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c337fbb2d191bf371173dea6a957f01899adb8f189c6c31b122a6cfc98fc3" -dependencies = [ - "either", - "swc_visit_macros", -] - -[[package]] -name = "swc_visit_macros" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" -dependencies = [ - "Inflector", - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.23", -] - -[[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]] name = "syn" version = "2.0.23" @@ -2587,45 +796,7 @@ checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" -dependencies = [ - "itoa", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" - -[[package]] -name = "time-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" -dependencies = [ - "time-core", + "syn", ] [[package]] @@ -2643,72 +814,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.23", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -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 = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - [[package]] name = "unicode-bidi" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" -[[package]] -name = "unicode-id" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" - [[package]] name = "unicode-ident" version = "1.0.10" @@ -2751,21 +862,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "vergen" -version = "7.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21b881cd6636ece9735721cf03c1fe1e774fe258683d084bb2812ab67435749" -dependencies = [ - "anyhow", - "cfg-if", - "enum-iterator", - "getset", - "rustversion", - "thiserror", - "time 0.3.22", -] - [[package]] name = "version_check" version = "0.9.4" @@ -2782,72 +878,12 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasm-bindgen" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.23", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.23", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - [[package]] name = "winapi" version = "0.3.9" @@ -2879,15 +915,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.1", -] - [[package]] name = "windows-sys" version = "0.45.0" diff --git a/compiler/forget/Cargo.toml b/compiler/forget/Cargo.toml index b19f2bab16..6bc241340d 100644 --- a/compiler/forget/Cargo.toml +++ b/compiler/forget/Cargo.toml @@ -17,14 +17,12 @@ forget_build_hir = { path = "crates/forget_build_hir" } forget_diagnostics = { path = "crates/forget_diagnostics" } forget_estree = { path = "crates/forget_estree" } forget_estree_codegen = { path = "crates/forget_estree_codegen" } -forget_estree_swc = { path = "crates/forget_estree_swc" } forget_fixtures = { path = "crates/forget_fixtures" } forget_hermes_parser = { path = "crates/forget_hermes_parser" } forget_hir = { path = "crates/forget_hir" } forget_optimization = { path = "crates/forget_optimization" } forget_semantic_analysis = { path = "crates/forget_semantic_analysis" } forget_ssa = { path = "crates/forget_ssa" } -forget_swc_demo = { path = "crates/forget_swc_demo" } forget_utils = { path = "crates/forget_utils" } # dependencies @@ -37,8 +35,6 @@ serde = { version = "1.0.167", features = ["serde_derive"] } serde_json = "1.0.100" stacker = "0.1.15" static_assertions = "1.1.0" -swc = "0.264.8" -swc_core = { version = "0.79.9", features = ["swc_ecma_visit", "__ecma_transforms", "swc_ecma_ast", "swc_common", "swc", "swc_ecma_parser", "__ecma", "__common", "ecma_ast", "__visit", "__parser"] } syn = "2.0.23" thiserror = "1.0.41" hermes = { git = "https://github.com/facebook/hermes.git" } diff --git a/compiler/forget/crates/forget_estree_swc/Cargo.toml b/compiler/forget/crates/forget_estree_swc/Cargo.toml deleted file mode 100644 index d8697d109c..0000000000 --- a/compiler/forget/crates/forget_estree_swc/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "forget_estree_swc" -version = "0.1.0" -publish = false -authors.workspace = true -description.workspace = true -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -repository.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -forget_estree = { workspace = true } -swc = { workspace = true } -swc_core = { workspace = true } diff --git a/compiler/forget/crates/forget_estree_swc/README.md b/compiler/forget/crates/forget_estree_swc/README.md deleted file mode 100644 index a8e1ba29a7..0000000000 --- a/compiler/forget/crates/forget_estree_swc/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# forget_estree_swc - -This crate converts from SWC's AST format into Forget's `forget_estree` format, which is used as the primary -input/type in Forget's public APIs. \ No newline at end of file diff --git a/compiler/forget/crates/forget_estree_swc/src/lib.rs b/compiler/forget/crates/forget_estree_swc/src/lib.rs deleted file mode 100644 index 86492d7d55..0000000000 --- a/compiler/forget/crates/forget_estree_swc/src/lib.rs +++ /dev/null @@ -1,963 +0,0 @@ -use std::io::stderr; -use std::num::NonZeroU32; -use std::sync::Arc; - -use forget_estree::{Binding, BindingId}; -use swc::Compiler; -use swc_core::common::errors::Handler; -use swc_core::common::source_map::Pos; -use swc_core::common::{FileName, FilePathMapping, Mark, SourceMap, Span, SyntaxContext, GLOBALS}; -use swc_core::ecma::ast::{ - AssignOp, BinaryOp, BlockStmt, BlockStmtOrExpr, Callee, Decl, EsVersion, Expr, ExprOrSpread, - Function, Ident, JSXAttr, JSXAttrName, JSXAttrOrSpread, JSXAttrValue, JSXElement, - JSXElementChild, JSXElementName, JSXExpr, JSXMemberExpr, JSXObject, Lit, MemberExpr, - MemberProp, ModuleItem, OptChainBase, Pat, PatOrExpr, Program, Stmt, UnaryOp, UpdateOp, - VarDecl, VarDeclKind, VarDeclOrExpr, -}; -use swc_core::ecma::parser::{Syntax, TsConfig}; -use swc_core::ecma::transforms::base::resolver; -use swc_core::ecma::visit::FoldWith; - -/// Parses source text into an forget_estree::Program via SWC, internally performing the parsing -/// and SWC -> ESTree conversion. -pub fn parse( - source: &str, - file: &str, -) -> Result> { - GLOBALS.set(&Default::default(), || { - let cm = Arc::new(SourceMap::new(FilePathMapping::empty())); - let c = Compiler::new(cm); - let fm = - c.cm.new_source_file(FileName::Real(file.into()), source.to_string()); - - let handler = Handler::with_emitter_writer(Box::new(stderr()), Some(c.cm.clone())); - - let comments = c.comments().clone(); - let module = c.parse_js( - fm.clone(), - &handler, - EsVersion::Es5, - Syntax::Typescript(TsConfig { - tsx: true, - ..Default::default() - }), - swc::config::IsModule::Bool(true), - Some(&comments), - )?; - - let context = Context { - top_level_mark: Mark::new(), - unresolved_mark: Mark::new(), - }; - - let module = c.run_transform(&handler, false, || { - module.fold_with(&mut resolver( - context.unresolved_mark, - context.top_level_mark, - true, - )) - }); - - Ok(convert_program(&context, &module)) - }) -} - -#[derive(Debug)] -struct Context { - unresolved_mark: Mark, - top_level_mark: Mark, -} - -fn convert_program(cx: &Context, program: &Program) -> forget_estree::Program { - let mut program_items: Vec; - match program { - Program::Module(program) => { - let body = &program.body; - program_items = Vec::with_capacity(body.len()); - for item in body { - program_items.push(convert_module_item(cx, item)); - } - } - Program::Script(program) => { - let body = &program.body; - program_items = Vec::with_capacity(body.len()); - for item in body { - program_items.push(forget_estree::ModuleItem::Statement(convert_statement( - cx, item, - ))); - } - } - }; - forget_estree::Program { - source_type: if program.is_script() { - forget_estree::SourceType::Script - } else { - forget_estree::SourceType::Module - }, - body: program_items, - // comments: None, - loc: None, - range: None, - } -} - -fn convert_module_item(cx: &Context, item: &ModuleItem) -> forget_estree::ModuleItem { - match item { - ModuleItem::Stmt(item) => forget_estree::ModuleItem::Statement(convert_statement(cx, item)), - _ => todo!("translate module item {:#?}", item), - } -} - -fn convert_span(span: &Span) -> Option { - Some(forget_estree::SourceRange { - start: span.lo().to_u32(), - end: NonZeroU32::new(span.hi().to_u32())?, - }) -} - -fn convert_decl_kind(kind: &VarDeclKind) -> forget_estree::VariableDeclarationKind { - match kind { - VarDeclKind::Const => forget_estree::VariableDeclarationKind::Const, - VarDeclKind::Let => forget_estree::VariableDeclarationKind::Let, - VarDeclKind::Var => forget_estree::VariableDeclarationKind::Var, - } -} - -fn convert_block_statement(cx: &Context, stmt: &BlockStmt) -> forget_estree::BlockStatement { - let mut body: Vec = Vec::with_capacity(stmt.stmts.len()); - for stmt in &stmt.stmts { - body.push(convert_statement(cx, stmt)); - } - forget_estree::BlockStatement { - body, - loc: None, - range: convert_span(&stmt.span), - } -} - -fn convert_function(cx: &Context, id: Option<&Ident>, fun: &Function) -> forget_estree::Function { - forget_estree::Function { - id: id.map(|id| forget_estree::Identifier { - name: id.sym.to_string(), - binding: convert_binding(cx, id.span.ctxt), - type_annotation: None, - loc: None, - range: convert_span(&id.span), - }), - params: fun - .params - .iter() - .map(|param| convert_pattern(cx, ¶m.pat)) - .collect(), - body: fun.body.as_ref().map(|body| { - forget_estree::FunctionBody::BlockStatement(Box::new(convert_block_statement(cx, body))) - }), - is_async: fun.is_async, - is_generator: fun.is_generator, - loc: None, - range: convert_span(&fun.span), - } -} - -fn convert_statement(cx: &Context, stmt: &Stmt) -> forget_estree::Statement { - match stmt { - Stmt::Decl(Decl::Fn(item)) => forget_estree::Statement::FunctionDeclaration(Box::new( - forget_estree::FunctionDeclaration { - function: convert_function(cx, Some(&item.ident), &item.function), - loc: None, - range: convert_span(&item.function.span), - }, - )), - Stmt::Decl(Decl::Var(item)) => forget_estree::Statement::VariableDeclaration(Box::new( - convert_variable_declaration(cx, item), - )), - Stmt::Block(item) => { - forget_estree::Statement::BlockStatement(Box::new(convert_block_statement(cx, item))) - } - Stmt::Break(item) => { - forget_estree::Statement::BreakStatement(Box::new(forget_estree::BreakStatement { - label: item - .label - .as_ref() - .map(|label| convert_identifier(cx, label)), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Continue(item) => forget_estree::Statement::ContinueStatement(Box::new( - forget_estree::ContinueStatement { - label: item - .label - .as_ref() - .map(|label| convert_identifier(cx, label)), - loc: None, - range: convert_span(&item.span), - }, - )), - Stmt::Debugger(item) => forget_estree::Statement::DebuggerStatement(Box::new( - forget_estree::DebuggerStatement { - loc: None, - range: convert_span(&item.span), - }, - )), - Stmt::DoWhile(item) => { - forget_estree::Statement::DoWhileStatement(Box::new(forget_estree::DoWhileStatement { - body: convert_statement(cx, &item.body), - test: convert_expression(cx, &item.test), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Empty(item) => { - forget_estree::Statement::EmptyStatement(Box::new(forget_estree::EmptyStatement { - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Expr(item) => { - let expression = convert_expression(cx, &item.expr); - forget_estree::Statement::ExpressionStatement(Box::new( - forget_estree::ExpressionStatement { - expression, - directive: None, - loc: None, - range: convert_span(&item.span), - }, - )) - } - Stmt::For(item) => { - forget_estree::Statement::ForStatement(Box::new(forget_estree::ForStatement { - init: item.init.as_ref().map(|init| match init { - VarDeclOrExpr::Expr(init) => { - forget_estree::ForInit::Expression(convert_expression(cx, init)) - } - VarDeclOrExpr::VarDecl(init) => { - assert_eq!(init.decls.len(), 1); - forget_estree::ForInit::VariableDeclaration(Box::new( - convert_variable_declaration(cx, init), - )) - } - }), - test: item.test.as_ref().map(|test| convert_expression(cx, test)), - update: item - .update - .as_ref() - .map(|update| convert_expression(cx, update)), - body: convert_statement(cx, &item.body), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Return(item) => { - forget_estree::Statement::ReturnStatement(Box::new(forget_estree::ReturnStatement { - argument: item.arg.as_ref().map(|arg| convert_expression(cx, arg)), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Throw(item) => { - forget_estree::Statement::ThrowStatement(Box::new(forget_estree::ThrowStatement { - argument: convert_expression(cx, &item.arg), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::If(item) => { - forget_estree::Statement::IfStatement(Box::new(forget_estree::IfStatement { - test: convert_expression(cx, &item.test), - consequent: convert_statement(cx, &item.cons), - alternate: item.alt.as_ref().map(|alt| convert_statement(cx, alt)), - loc: None, - range: convert_span(&item.span), - })) - } - Stmt::Labeled(item) => { - forget_estree::Statement::LabeledStatement(Box::new(forget_estree::LabeledStatement { - label: convert_identifier(cx, &item.label), - body: convert_statement(cx, &item.body), - loc: None, - range: convert_span(&item.span), - })) - } - _ => todo!("translate statement {:#?}", stmt), - } -} - -fn convert_variable_declaration( - cx: &Context, - decl: &VarDecl, -) -> forget_estree::VariableDeclaration { - forget_estree::VariableDeclaration { - kind: convert_decl_kind(&decl.kind), - declarations: decl - .decls - .iter() - .map(|declarator| forget_estree::VariableDeclarator { - id: convert_pattern(cx, &declarator.name), - init: declarator - .init - .as_ref() - .map(|init| convert_expression(cx, init)), - loc: None, - range: convert_span(&decl.span), - }) - .collect(), - loc: None, - range: convert_span(&decl.span), - } -} - -fn convert_expression(cx: &Context, expr: &Expr) -> forget_estree::Expression { - match expr { - Expr::Ident(expr) => { - forget_estree::Expression::Identifier(Box::new(convert_identifier(cx, expr))) - } - Expr::Array(expr) => { - forget_estree::Expression::ArrayExpression(Box::new(forget_estree::ArrayExpression { - elements: expr - .elems - .iter() - .map(|item| match item { - Some(ExprOrSpread { - spread: Some(spread), - expr, - }) => Some(forget_estree::ExpressionOrSpread::SpreadElement(Box::new( - forget_estree::SpreadElement { - argument: convert_expression(cx, expr), - loc: None, - range: convert_span(&spread), - }, - ))), - Some(ExprOrSpread { spread: None, expr }) => { - Some(forget_estree::ExpressionOrSpread::Expression( - convert_expression(cx, expr), - )) - } - None => None, - }) - .collect(), - loc: None, - range: convert_span(&expr.span), - })) - } - Expr::Call(expr) => { - forget_estree::Expression::CallExpression(Box::new(forget_estree::CallExpression { - callee: match &expr.callee { - Callee::Expr(callee) => { - forget_estree::ExpressionOrSuper::Expression(convert_expression(cx, callee)) - } - _ => todo!(), - }, - arguments: convert_arguments(cx, &expr.args), - loc: None, - range: convert_span(&expr.span), - })) - } - Expr::Await(expr) => { - forget_estree::Expression::AwaitExpression(Box::new(forget_estree::AwaitExpression { - argument: convert_expression(cx, &expr.arg), - loc: None, - range: convert_span(&expr.span), - })) - } - Expr::Yield(expr) => { - forget_estree::Expression::YieldExpression(Box::new(forget_estree::YieldExpression { - argument: expr.arg.as_ref().map(|arg| convert_expression(cx, arg)), - is_delegate: expr.delegate, - loc: None, - range: convert_span(&expr.span), - })) - } - Expr::Unary(expr) => { - forget_estree::Expression::UnaryExpression(Box::new(forget_estree::UnaryExpression { - operator: convert_unary_operator(expr.op), - prefix: false, - argument: convert_expression(cx, &expr.arg), - loc: None, - range: convert_span(&expr.span), - })) - } - Expr::Bin(expr) => match convert_binary_operator(expr.op) { - Operator::Binary(op) => forget_estree::Expression::BinaryExpression(Box::new( - forget_estree::BinaryExpression { - operator: op, - left: convert_expression(cx, &expr.left), - right: convert_expression(cx, &expr.right), - loc: None, - range: convert_span(&expr.span), - }, - )), - Operator::Logical(op) => forget_estree::Expression::LogicalExpression(Box::new( - forget_estree::LogicalExpression { - operator: op, - left: convert_expression(cx, &expr.left), - right: convert_expression(cx, &expr.right), - loc: None, - range: convert_span(&expr.span), - }, - )), - }, - Expr::Lit(expr) => forget_estree::Expression::Literal(Box::new(convert_literal(cx, expr))), - Expr::Assign(expr) => forget_estree::Expression::AssignmentExpression(Box::new( - forget_estree::AssignmentExpression { - operator: convert_assignment_operator(expr.op), - left: convert_assignment_target(cx, &expr.left), - right: convert_expression(cx, &expr.right), - loc: None, - range: convert_span(&expr.span), - }, - )), - Expr::Member(expr) => forget_estree::Expression::MemberExpression(Box::new( - convert_member_expression(cx, expr), - )), - Expr::Fn(expr) => forget_estree::Expression::FunctionExpression(Box::new( - forget_estree::FunctionExpression { - function: convert_function(cx, expr.ident.as_ref(), &expr.function), - loc: None, - range: convert_span(&expr.function.span), - }, - )), - Expr::Arrow(expr) => forget_estree::Expression::ArrowFunctionExpression(Box::new( - forget_estree::ArrowFunctionExpression { - function: forget_estree::Function { - id: None, - body: match expr.body.as_ref() { - BlockStmtOrExpr::Expr(body) => Some( - forget_estree::FunctionBody::Expression(convert_expression(cx, body)), - ), - BlockStmtOrExpr::BlockStmt(body) => { - Some(forget_estree::FunctionBody::BlockStatement(Box::new( - convert_block_statement(cx, body), - ))) - } - }, - params: expr - .params - .iter() - .map(|param| convert_pattern(cx, param)) - .collect(), - is_generator: expr.is_generator, - is_async: expr.is_async, - loc: None, - range: convert_span(&expr.span), - }, - is_expression: true, // TODO - loc: None, - range: convert_span(&expr.span), - }, - )), - Expr::OptChain(expr) => match expr.base.as_ref() { - OptChainBase::Call(base) => forget_estree::Expression::OptionalCallExpression( - Box::new(forget_estree::OptionalCallExpression { - callee: forget_estree::ExpressionOrSuper::Expression(convert_expression( - cx, - &base.callee, - )), - arguments: convert_arguments(cx, &base.args), - is_optional: expr.optional, - loc: None, - range: convert_span(&expr.span), - }), - ), - OptChainBase::Member(base) => { - let mut member = convert_optional_member_expression(cx, base); - member.is_optional = expr.optional; - forget_estree::Expression::OptionalMemberExpression(Box::new(member)) - } - }, - Expr::JSXElement(expr) => { - forget_estree::Expression::JSXElement(Box::new(convert_jsx_element(cx, expr))) - } - Expr::Paren(expr) => convert_expression(cx, &expr.expr), - Expr::Update(expr) => { - forget_estree::Expression::UpdateExpression(Box::new(forget_estree::UpdateExpression { - operator: convert_update_operator(expr.op), - argument: convert_expression(cx, &expr.arg), - prefix: expr.prefix, - loc: None, - range: convert_span(&expr.span), - })) - } - _ => todo!("translate expression {:#?}", expr), - } -} - -fn convert_jsx_element(cx: &Context, expr: &JSXElement) -> forget_estree::JSXElement { - let attributes = expr - .opening - .attrs - .iter() - .map(|attr| match attr { - JSXAttrOrSpread::JSXAttr(attr) => forget_estree::JSXAttributeOrSpread::JSXAttribute( - Box::new(convert_jsx_attribute(cx, attr)), - ), - JSXAttrOrSpread::SpreadElement(attr) => { - forget_estree::JSXAttributeOrSpread::JSXSpreadAttribute(Box::new( - forget_estree::JSXSpreadAttribute { - argument: convert_expression(cx, &attr.expr), - loc: None, - range: None, // sigh, no span - }, - )) - } - }) - .collect(); - let opening_element = forget_estree::JSXOpeningElement { - attributes, - name: convert_jsx_name(cx, &expr.opening.name), - self_closing: expr.opening.self_closing, - loc: None, - range: convert_span(&expr.opening.span), - }; - let children = expr - .children - .iter() - .map(|child| convert_jsx_child(cx, child)) - .collect(); - let closing_element = expr - .closing - .as_ref() - .map(|closing| forget_estree::JSXClosingElement { - name: convert_jsx_name(cx, &closing.name), - loc: None, - range: convert_span(&closing.span), - }); - forget_estree::JSXElement { - opening_element, - children, - closing_element, - loc: None, - range: convert_span(&expr.span), - } -} - -fn convert_jsx_name(cx: &Context, name: &JSXElementName) -> forget_estree::JSXElementName { - match name { - JSXElementName::Ident(name) => { - forget_estree::JSXElementName::JSXIdentifier(Box::new(convert_jsx_identifier(cx, name))) - } - JSXElementName::JSXMemberExpr(name) => forget_estree::JSXElementName::JSXMemberExpression( - Box::new(convert_jsx_member_expression(cx, name)), - ), - JSXElementName::JSXNamespacedName(name) => { - forget_estree::JSXElementName::JSXNamespacedName(Box::new( - forget_estree::JSXNamespacedName { - namespace: convert_jsx_identifier(cx, &name.ns), - name: convert_jsx_identifier(cx, &name.name), - loc: None, - range: None, // sigh, swc doesn't have a span for the entire name - }, - )) - } - } -} - -fn convert_jsx_member_expression( - cx: &Context, - expr: &JSXMemberExpr, -) -> forget_estree::JSXMemberExpression { - forget_estree::JSXMemberExpression { - object: match &expr.obj { - JSXObject::JSXMemberExpr(obj) => { - forget_estree::JSXMemberExpressionOrIdentifier::JSXMemberExpression(Box::new( - convert_jsx_member_expression(cx, obj), - )) - } - JSXObject::Ident(obj) => forget_estree::JSXMemberExpressionOrIdentifier::JSXIdentifier( - Box::new(convert_jsx_identifier(cx, obj)), - ), - }, - property: convert_jsx_identifier(cx, &expr.prop), - loc: None, - range: None, // sigh, swc doesn't have a span for the member expr - } -} - -fn convert_jsx_child(cx: &Context, child: &JSXElementChild) -> forget_estree::JSXChildItem { - match child { - JSXElementChild::JSXText(child) => { - forget_estree::JSXChildItem::JSXText(Box::new(forget_estree::JSXText { - value: child.value.to_string(), - raw: child.raw.to_string(), - loc: None, - range: convert_span(&child.span), - })) - } - JSXElementChild::JSXElement(child) => { - forget_estree::JSXChildItem::JSXElement(Box::new(convert_jsx_element(cx, child))) - } - JSXElementChild::JSXExprContainer(child) => { - forget_estree::JSXChildItem::JSXExpressionContainer(Box::new( - forget_estree::JSXExpressionContainer { - expression: match &child.expr { - JSXExpr::Expr(expr) => forget_estree::JSXExpressionOrEmpty::Expression( - convert_expression(cx, expr), - ), - JSXExpr::JSXEmptyExpr(expr) => { - forget_estree::JSXExpressionOrEmpty::JSXEmptyExpression(Box::new( - forget_estree::JSXEmptyExpression { - loc: None, - range: convert_span(&expr.span), - }, - )) - } - }, - loc: None, - range: convert_span(&child.span), - }, - )) - } - _ => todo!("handle other jsx child types"), - } -} - -fn convert_jsx_attribute(cx: &Context, attr: &JSXAttr) -> forget_estree::JSXAttribute { - let name = match &attr.name { - JSXAttrName::Ident(name) => { - forget_estree::JSXIdentifierOrNamespacedName::JSXIdentifier(Box::new({ - let ident = convert_identifier(cx, name); - forget_estree::JSXIdentifier { - name: ident.name, - binding: ident.binding, - loc: ident.loc, - range: ident.range, - } - })) - } - JSXAttrName::JSXNamespacedName(name) => { - forget_estree::JSXIdentifierOrNamespacedName::JSXNamespacedName(Box::new( - forget_estree::JSXNamespacedName { - namespace: convert_jsx_identifier(cx, &name.ns), - name: convert_jsx_identifier(cx, &name.name), - loc: None, - range: None, // sigh, swc doesn't have a span for the entire name - }, - )) - } - }; - let value = attr.value.as_ref().map(|attr| match attr { - JSXAttrValue::Lit(value) => { - forget_estree::JSXAttributeValue::Literal(Box::new(convert_literal(cx, value))) - } - JSXAttrValue::JSXElement(value) => { - forget_estree::JSXAttributeValue::JSXElement(Box::new(convert_jsx_element(cx, value))) - } - JSXAttrValue::JSXExprContainer(value) => { - forget_estree::JSXAttributeValue::JSXExpressionContainer(Box::new( - forget_estree::JSXExpressionContainer { - expression: match &value.expr { - JSXExpr::Expr(expr) => forget_estree::JSXExpressionOrEmpty::Expression( - convert_expression(cx, expr), - ), - JSXExpr::JSXEmptyExpr(expr) => { - forget_estree::JSXExpressionOrEmpty::JSXEmptyExpression(Box::new( - forget_estree::JSXEmptyExpression { - loc: None, - range: convert_span(&expr.span), - }, - )) - } - }, - loc: None, - range: convert_span(&value.span), - }, - )) - } - _ => todo!("handle other attribute value types"), - }); - forget_estree::JSXAttribute { - name, - value, - loc: None, - range: convert_span(&attr.span), - } -} - -fn convert_literal(_cx: &Context, expr: &Lit) -> forget_estree::Literal { - let (value, range, regex, bigint) = match expr { - Lit::Bool(expr) => ( - forget_estree::JsValue::Boolean(expr.value), - convert_span(&expr.span), - None, - None, - ), - Lit::Num(expr) => ( - forget_estree::JsValue::Number(expr.value.into()), - convert_span(&expr.span), - None, - None, - ), - Lit::Str(expr) => ( - forget_estree::JsValue::String(expr.value.to_string()), - convert_span(&expr.span), - None, - None, - ), - Lit::Null(expr) => ( - forget_estree::JsValue::Null, - convert_span(&expr.span), - None, - None, - ), - Lit::Regex(expr) => ( - forget_estree::JsValue::Undefined, - convert_span(&expr.span), - Some(forget_estree::RegExpValue { - pattern: expr.exp.to_string(), - flags: expr.flags.to_string(), - }), - None, - ), - Lit::BigInt(expr) => ( - forget_estree::JsValue::Undefined, - convert_span(&expr.span), - None, - Some( - expr.raw - .as_ref() - .expect("Expected bigint to have a raw value") - .to_string(), - ), - ), - Lit::JSXText(_) => { - panic!("Unexpected expression: JSXText is not an expression") - } - }; - forget_estree::Literal { - value, - raw: None, - loc: None, - regex, - range, - bigint, - } -} - -fn convert_arguments( - cx: &Context, - arguments: &[ExprOrSpread], -) -> Vec { - arguments - .iter() - .map(|arg| match arg { - ExprOrSpread { - spread: Some(spread), - expr, - } => forget_estree::ExpressionOrSpread::SpreadElement(Box::new( - forget_estree::SpreadElement { - argument: convert_expression(cx, expr), - loc: None, - range: convert_span(&spread), - }, - )), - ExprOrSpread { spread: None, expr } => { - forget_estree::ExpressionOrSpread::Expression(convert_expression(cx, expr)) - } - }) - .collect() -} - -fn convert_assignment_target(cx: &Context, target: &PatOrExpr) -> forget_estree::AssignmentTarget { - match target { - PatOrExpr::Pat(target) => { - forget_estree::AssignmentTarget::Pattern(convert_pattern(cx, target)) - } - PatOrExpr::Expr(target) => match target.as_ref() { - Expr::Member(target) => forget_estree::AssignmentTarget::Expression( - forget_estree::Expression::MemberExpression(Box::new(convert_member_expression( - cx, target, - ))), - ), - Expr::Ident(target) => forget_estree::AssignmentTarget::Pattern( - forget_estree::Pattern::Identifier(Box::new(convert_identifier(cx, target))), - ), - _ => { - panic!( - "Expected assignment target to be member expression or identifier, got {:#?}", - target - ) - } - }, - } -} - -fn convert_member_expression(cx: &Context, expr: &MemberExpr) -> forget_estree::MemberExpression { - let (is_computed, property) = match &expr.prop { - MemberProp::Ident(prop) => ( - false, - forget_estree::ExpressionOrPrivateIdentifier::Expression( - forget_estree::Expression::Identifier(Box::new(convert_identifier(cx, prop))), - ), - ), - MemberProp::Computed(prop) => ( - true, - forget_estree::ExpressionOrPrivateIdentifier::Expression(convert_expression( - cx, &prop.expr, - )), - ), - MemberProp::PrivateName(prop) => { - let name = prop.id.sym.as_ref().to_string(); - ( - false, - forget_estree::ExpressionOrPrivateIdentifier::PrivateIdentifier(Box::new( - forget_estree::PrivateIdentifier { - name, - loc: None, - range: convert_span(&prop.span), - }, - )), - ) - } - }; - forget_estree::MemberExpression { - object: forget_estree::ExpressionOrSuper::Expression(convert_expression(cx, &expr.obj)), - property, - is_computed, - loc: None, - range: convert_span(&expr.span), - } -} - -fn convert_optional_member_expression( - cx: &Context, - expr: &MemberExpr, -) -> forget_estree::OptionalMemberExpression { - let (is_computed, property) = match &expr.prop { - MemberProp::Ident(prop) => ( - false, - forget_estree::Expression::Identifier(Box::new(convert_identifier(cx, prop))), - ), - MemberProp::Computed(prop) => (true, convert_expression(cx, &prop.expr)), - _ => { - panic!("PrivateName member expression properties are not supported") - } - }; - forget_estree::OptionalMemberExpression { - object: convert_expression(cx, &expr.obj), - property, - is_computed, - is_optional: false, - loc: None, - range: convert_span(&expr.span), - } -} - -fn convert_unary_operator(op: UnaryOp) -> forget_estree::UnaryOperator { - match op { - UnaryOp::Bang => forget_estree::UnaryOperator::Negation, - UnaryOp::Delete => forget_estree::UnaryOperator::Delete, - UnaryOp::Minus => forget_estree::UnaryOperator::Minus, - UnaryOp::Plus => forget_estree::UnaryOperator::Plus, - UnaryOp::Tilde => forget_estree::UnaryOperator::Tilde, - UnaryOp::TypeOf => forget_estree::UnaryOperator::Typeof, - UnaryOp::Void => forget_estree::UnaryOperator::Void, - } -} - -fn convert_assignment_operator(op: AssignOp) -> forget_estree::AssignmentOperator { - match op { - AssignOp::Assign => forget_estree::AssignmentOperator::Equals, - AssignOp::AddAssign => forget_estree::AssignmentOperator::PlusEquals, - _ => todo!("translate assignment operator"), - } -} - -enum Operator { - Binary(forget_estree::BinaryOperator), - Logical(forget_estree::LogicalOperator), -} - -fn convert_binary_operator(op: BinaryOp) -> Operator { - match op { - BinaryOp::Add => Operator::Binary(forget_estree::BinaryOperator::Add), - BinaryOp::BitAnd => Operator::Binary(forget_estree::BinaryOperator::BinaryAnd), - BinaryOp::BitOr => Operator::Binary(forget_estree::BinaryOperator::BinaryOr), - BinaryOp::BitXor => Operator::Binary(forget_estree::BinaryOperator::BinaryXor), - BinaryOp::Div => Operator::Binary(forget_estree::BinaryOperator::Divide), - BinaryOp::EqEq => Operator::Binary(forget_estree::BinaryOperator::Equals), - BinaryOp::EqEqEq => Operator::Binary(forget_estree::BinaryOperator::StrictEquals), - BinaryOp::Exp => Operator::Binary(forget_estree::BinaryOperator::Exponent), - BinaryOp::Gt => Operator::Binary(forget_estree::BinaryOperator::GreaterThan), - BinaryOp::GtEq => Operator::Binary(forget_estree::BinaryOperator::GreaterThanOrEqual), - BinaryOp::In => Operator::Binary(forget_estree::BinaryOperator::In), - BinaryOp::InstanceOf => Operator::Binary(forget_estree::BinaryOperator::Instanceof), - BinaryOp::LShift => Operator::Binary(forget_estree::BinaryOperator::ShiftLeft), - BinaryOp::Lt => Operator::Binary(forget_estree::BinaryOperator::LessThan), - BinaryOp::LtEq => Operator::Binary(forget_estree::BinaryOperator::LessThanOrEqual), - BinaryOp::Mod => Operator::Binary(forget_estree::BinaryOperator::Modulo), - BinaryOp::Mul => Operator::Binary(forget_estree::BinaryOperator::Multiply), - BinaryOp::NotEq => Operator::Binary(forget_estree::BinaryOperator::NotEquals), - BinaryOp::NotEqEq => Operator::Binary(forget_estree::BinaryOperator::NotStrictEquals), - BinaryOp::RShift => Operator::Binary(forget_estree::BinaryOperator::ShiftRight), - BinaryOp::Sub => Operator::Binary(forget_estree::BinaryOperator::Subtract), - BinaryOp::ZeroFillRShift => { - Operator::Binary(forget_estree::BinaryOperator::UnsignedShiftRight) - } - - BinaryOp::LogicalAnd => Operator::Logical(forget_estree::LogicalOperator::And), - BinaryOp::LogicalOr => Operator::Logical(forget_estree::LogicalOperator::Or), - BinaryOp::NullishCoalescing => { - Operator::Logical(forget_estree::LogicalOperator::NullCoalescing) - } - } -} - -fn convert_update_operator(op: UpdateOp) -> forget_estree::UpdateOperator { - match op { - UpdateOp::MinusMinus => forget_estree::UpdateOperator::Decrement, - UpdateOp::PlusPlus => forget_estree::UpdateOperator::Increment, - } -} - -fn convert_pattern(cx: &Context, pat: &Pat) -> forget_estree::Pattern { - match pat { - Pat::Ident(pat) => { - forget_estree::Pattern::Identifier(Box::new(forget_estree::Identifier { - name: pat.id.sym.to_string(), - binding: convert_binding(cx, pat.id.span.ctxt), - type_annotation: None, - loc: None, - range: convert_span(&pat.span), - })) - } - _ => todo!("translate pattern {:#?}", pat), - } -} - -fn convert_binding(context: &Context, binding_cx: SyntaxContext) -> Option { - let id = BindingId::new(binding_cx.as_u32()); - if binding_cx.as_u32() == context.top_level_mark.as_u32() { - Some(Binding::Global) - } else if binding_cx.as_u32() == context.unresolved_mark.as_u32() { - Some(Binding::Module(id)) - } else { - Some(Binding::Local(id)) - } -} - -fn convert_identifier(cx: &Context, identifier: &Ident) -> forget_estree::Identifier { - let name = identifier.sym.as_ref().to_string(); - forget_estree::Identifier { - name, - binding: convert_binding(cx, identifier.span.ctxt), - type_annotation: None, - loc: None, - range: convert_span(&identifier.span), - } -} - -fn convert_jsx_identifier(cx: &Context, identifier: &Ident) -> forget_estree::JSXIdentifier { - let name = identifier.sym.as_ref().to_string(); - forget_estree::JSXIdentifier { - name, - binding: convert_binding(cx, identifier.span.ctxt), - loc: None, - range: convert_span(&identifier.span), - } -} - -#[cfg(test)] -mod tests { - #[test] - fn it_works() {} -} diff --git a/compiler/forget/rust-toolchain.toml b/compiler/forget/rust-toolchain.toml index 244f68889b..31578d3bfd 100644 --- a/compiler/forget/rust-toolchain.toml +++ b/compiler/forget/rust-toolchain.toml @@ -1,3 +1,2 @@ [toolchain] -# Sigh, because SWC -channel = "nightly" \ No newline at end of file +channel = "stable" \ No newline at end of file