diff --git a/.dprint.json b/.dprint.json index d2c80e6840..dca5dc634b 100644 --- a/.dprint.json +++ b/.dprint.json @@ -56,7 +56,7 @@ "ext/websocket/autobahn/reports" ], "plugins": [ - "https://plugins.dprint.dev/typescript-0.88.7.wasm", + "https://plugins.dprint.dev/typescript-0.88.8.wasm", "https://plugins.dprint.dev/json-0.19.1.wasm", "https://plugins.dprint.dev/markdown-0.16.3.wasm", "https://plugins.dprint.dev/toml-0.5.4.wasm", diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts index 6d80b8ff88..b6b64a27eb 100755 --- a/.github/workflows/ci.generate.ts +++ b/.github/workflows/ci.generate.ts @@ -426,6 +426,8 @@ const ci = { env: { CARGO_TERM_COLOR: "always", RUST_BACKTRACE: "full", + // disable anyhow's library backtrace + RUST_LIB_BACKTRACE: 0, }, steps: skipJobsIfPrAndMarkedSkip([ reconfigureWindowsStorage, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80d336b3b1..7b00bf3d1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,6 +113,7 @@ jobs: env: CARGO_TERM_COLOR: always RUST_BACKTRACE: full + RUST_LIB_BACKTRACE: 0 steps: - name: Reconfigure Windows Storage if: '!(matrix.skip) && (startsWith(matrix.os, ''windows'') && !endsWith(matrix.os, ''-xl''))' diff --git a/Cargo.lock b/Cargo.lock index d6575584e3..ee50dcf5c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -187,9 +187,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "arrayvec" @@ -250,15 +250,14 @@ dependencies = [ [[package]] name = "ast_node" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" +checksum = "c3e3e06ec6ac7d893a0db7127d91063ad7d9da8988f8a1a256f03729e6eec026" dependencies = [ - "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -294,7 +293,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -305,7 +304,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -368,15 +367,9 @@ checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" [[package]] name = "base64-simd" @@ -854,7 +847,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -944,7 +937,7 @@ version = "1.39.2" dependencies = [ "async-trait", "base32", - "base64 0.21.5", + "base64", "bincode", "bytes", "cache_control", @@ -993,7 +986,7 @@ dependencies = [ "hyper 1.1.0", "hyper-util", "import_map", - "indexmap 2.1.0", + "indexmap", "jsonc-parser", "junction", "lazy-regex", @@ -1044,12 +1037,12 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.31.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da7b09db895527a94de1305455338926cd2a7003231ba589b7b7b57e8da344f2" +checksum = "1d87c67f73e749f78096f517cbb57967d98a8c713b39cf88b1f0b8750a84aa29" dependencies = [ "anyhow", - "base64 0.13.1", + "base64", "deno_media_type", "dprint-swc-ext", "serde", @@ -1122,7 +1115,7 @@ checksum = "2bbb245d9a3719b5eb2b5195aaaa25108c3c93d1762b181a20fb1af1c7703eaf" dependencies = [ "anyhow", "deno_media_type", - "indexmap 2.1.0", + "indexmap", "log", "once_cell", "parking_lot 0.12.1", @@ -1140,7 +1133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97979f94af93f388822233278ede930414efa273d6eb495de7680f2a6862a4d3" dependencies = [ "anyhow", - "indexmap 2.1.0", + "indexmap", "jsonc-parser", "log", "percent-encoding", @@ -1206,7 +1199,7 @@ dependencies = [ "aes", "aes-gcm", "aes-kw", - "base64 0.21.5", + "base64", "cbc", "const-oid", "ctr", @@ -1235,9 +1228,9 @@ dependencies = [ [[package]] name = "deno_doc" -version = "0.85.0" +version = "0.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b6320fb6467aa87c64e9ab09d07186f771f80f74b110e35e9063a9d6a27a30" +checksum = "00f16c99bcba738fce91decb9ac44213aa0d6b6a03dfd40af2ff2bca0d687fc6" dependencies = [ "anyhow", "cfg-if", @@ -1248,7 +1241,7 @@ dependencies = [ "handlebars", "html-escape", "import_map", - "indexmap 2.1.0", + "indexmap", "lazy_static", "regex", "serde", @@ -1259,12 +1252,12 @@ dependencies = [ [[package]] name = "deno_emit" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bba6c66922c3953ba465fac215e42c637cc91119618911c0cd84cb994b25d5b7" +checksum = "480cde74f7e7937e74e43f71c0fa9af7c629387b3847eb4697505741842f0d02" dependencies = [ "anyhow", - "base64 0.13.1", + "base64", "deno_ast", "deno_graph", "escape8259", @@ -1329,9 +1322,9 @@ dependencies = [ [[package]] name = "deno_graph" -version = "0.62.2" +version = "0.63.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde6dca752e0bdcf908082ff6852be911e72edf013c126fa2ce78e0420bc5838" +checksum = "c9a7517284a929f0f2f4db8b241c840bccd4debd6635ea0bc7a906c0254a0231" dependencies = [ "anyhow", "async-trait", @@ -1340,7 +1333,7 @@ dependencies = [ "deno_semver", "futures", "import_map", - "indexmap 2.1.0", + "indexmap", "log", "monch", "once_cell", @@ -1358,7 +1351,7 @@ version = "0.127.0" dependencies = [ "async-compression", "async-trait", - "base64 0.21.5", + "base64", "bencher", "brotli", "bytes", @@ -1410,7 +1403,7 @@ version = "0.38.0" dependencies = [ "anyhow", "async-trait", - "base64 0.21.5", + "base64", "chrono", "deno_core", "deno_fetch", @@ -1438,9 +1431,9 @@ dependencies = [ [[package]] name = "deno_lint" -version = "0.52.2" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3f51b48abcf1d7946d1a099ac8d58fe3e84023c37820fbb409eccfd30406f56" +checksum = "c6c91f26393905a81d960cf9473729660e5b5b889fa2712ba5405ac5a7598014" dependencies = [ "anyhow", "deno_ast", @@ -1541,7 +1534,7 @@ dependencies = [ "hkdf", "http 0.2.11", "idna 0.3.0", - "indexmap 2.1.0", + "indexmap", "k256", "lazy-regex", "libc", @@ -1609,7 +1602,7 @@ dependencies = [ "quote", "strum", "strum_macros", - "syn 2.0.39", + "syn 2.0.48", "thiserror", ] @@ -2005,7 +1998,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2034,7 +2027,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2051,7 +2044,7 @@ checksum = "7227b28d24aafee21ff72512336c797fa00bb3ea803186b1b105a68abc97660b" dependencies = [ "anyhow", "bumpalo", - "indexmap 2.1.0", + "indexmap", "rustc-hash", "serde", "unicode-width", @@ -2099,9 +2092,9 @@ dependencies = [ [[package]] name = "dprint-plugin-typescript" -version = "0.88.7" +version = "0.88.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75fc11fffe73e21ebea5bc1dabb647ef88189bbac91749fbe22ea8c8e660bf3" +checksum = "4b16993dd982116fc2c429a1cce62e927fd4856708666c9cbd86cdbefd79dd97" dependencies = [ "anyhow", "deno_ast", @@ -2324,12 +2317,12 @@ dependencies = [ [[package]] name = "eszip" -version = "0.56.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50abfc246ed6d7a5e34c9658cac93f959788058c8455c528d69471ef72d8ebf" +checksum = "e081e749cb42d7e52b9a066564b86c70e586614d5de684080a2be861f35a0721" dependencies = [ "anyhow", - "base64 0.21.5", + "base64", "deno_ast", "deno_graph", "deno_npm", @@ -2377,7 +2370,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f63dd7b57f9b33b1741fa631c9522eb35d43e96dcca4a6a91d5e4ca7c93acdc1" dependencies = [ - "base64 0.21.5", + "base64", "http-body-util", "hyper 1.1.0", "hyper-util", @@ -2490,7 +2483,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2510,14 +2503,13 @@ dependencies = [ [[package]] name = "from_variant" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" +checksum = "3a0b11eeb173ce52f84ebd943d42e58813a2ebb78a6a3ff0a243b71c5199cd7b" dependencies = [ - "pmutil", "proc-macro2", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2606,7 +2598,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2812,7 +2804,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.11", - "indexmap 2.1.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2831,7 +2823,7 @@ dependencies = [ "futures-sink", "futures-util", "http 1.0.0", - "indexmap 2.1.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2850,9 +2842,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.5.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" +checksum = "94eae21d01d20dabef65d8eda734d83df6e2dea8166788804be9bd6bc92448fa" dependencies = [ "heck", "log", @@ -2863,12 +2855,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.13.2" @@ -3176,28 +3162,17 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "import_map" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ecd467768fe83c2860e70e5de5297a7366a230ff53e1da2158bdac2384cd39d" +checksum = "1624c269d2ca7427d79471c8ba799abe9215e706cc0182d7b86fc856a35d565b" dependencies = [ - "indexmap 1.9.3", + "indexmap", "log", "serde", "serde_json", "url", ] -[[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.1.0" @@ -3276,7 +3251,7 @@ dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3413,7 +3388,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3766,7 +3741,7 @@ dependencies = [ "bitflags 2.4.1", "codespan-reporting", "hexf-parse", - "indexmap 2.1.0", + "indexmap", "log", "num-traits", "rustc-hash", @@ -3800,7 +3775,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4272,7 +4247,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4293,7 +4268,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.1.0", + "indexmap", ] [[package]] @@ -4326,7 +4301,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4355,7 +4330,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4411,7 +4386,7 @@ checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4505,7 +4480,7 @@ checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" dependencies = [ "proc-macro-rules-macros", "proc-macro2", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4517,14 +4492,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] @@ -4622,7 +4597,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9599bffc2cd7511355996e0cfd979266b2cfa3f3ff5247d07a3a6e1ded6158" dependencies = [ "chrono", - "indexmap 2.1.0", + "indexmap", "nextest-workspace-hack", "quick-xml", "strip-ansi-escapes", @@ -4641,9 +4616,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -4761,7 +4736,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -4812,7 +4787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "async-compression", - "base64 0.21.5", + "base64", "bytes", "encoding_rs", "futures-core", @@ -4897,7 +4872,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64 0.21.5", + "base64", "bitflags 2.4.1", "serde", "serde_derive", @@ -5019,7 +4994,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64", ] [[package]] @@ -5225,9 +5200,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -5253,22 +5228,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ - "indexmap 2.1.0", + "indexmap", "itoa", "ryu", "serde", @@ -5282,7 +5257,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -5548,15 +5523,14 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_enum" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" +checksum = "1b650ea2087d32854a0f20b837fc56ec987a1cb4f758c9757e1171ee9812da63" dependencies = [ - "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -5593,7 +5567,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -5604,9 +5578,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "swc_atoms" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a9e1b6d97f27b6abe5571f8fe3bdbd2fa987299fc2126450c7cde6214896ef" +checksum = "7d538eaaa6f085161d088a04cf0a3a5a52c5a7f2b3bd9b83f73f058b0ed357c0" dependencies = [ "hstr", "once_cell", @@ -5616,13 +5590,13 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.222.62" +version = "0.223.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dc457de4306480ef5f2b54aa23f8d93ff476991de6e1db453bc94c56af732b0" +checksum = "e912d8387fc8592465c081b2e6b8df89443117ae4ca5160f21e08d47d7d58d7a" dependencies = [ "anyhow", "crc", - "indexmap 1.9.3", + "indexmap", "is-macro", "once_cell", "parking_lot 0.12.1", @@ -5646,9 +5620,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.33.9" +version = "0.33.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ccb656cd57c93614e4e8b33a60e75ca095383565c1a8d2bbe6a1103942831e0" +checksum = "9b3ae36feceded27f0178dc9dabb49399830847ffb7f866af01798844de8f973" dependencies = [ "ast_node", "better_scoped_tls", @@ -5672,11 +5646,11 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba1c7a40d38f9dd4e9a046975d3faf95af42937b34b2b963be4d8f01239584b" +checksum = "112884e66b60e614c0f416138b91b8b82b7fea6ed0ecc5e26bad4726c57a6c99" dependencies = [ - "indexmap 1.9.3", + "indexmap", "serde", "serde_json", "swc_config_macro", @@ -5684,22 +5658,21 @@ dependencies = [ [[package]] name = "swc_config_macro" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" +checksum = "8b2574f75082322a27d990116cd2a24de52945fc94172b24ca0b3e9e2a6ceb6b" dependencies = [ - "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "swc_ecma_ast" -version = "0.110.10" +version = "0.110.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d416121da2d56bcbd1b1623725a68890af4552fef0c6d1e4bfa92776ccd6a" +checksum = "79401a45da704f4fb2552c5bf86ee2198e8636b121cb81f8036848a300edd53b" dependencies = [ "bitflags 2.4.1", "is-macro", @@ -5715,9 +5688,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.146.32" +version = "0.146.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7b37ef40385cc2e294ece3d42048dcda6392838724dd5f02ff8da3fa105271" +checksum = "99b61ca275e3663238b71c4b5da8e6fb745bde9989ef37d94984dfc81fc6d009" dependencies = [ "memchr", "num-bigint", @@ -5734,15 +5707,14 @@ dependencies = [ [[package]] name = "swc_ecma_codegen_macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" +checksum = "394b8239424b339a12012ceb18726ed0244fce6bf6345053cb9320b2791dcaa5" dependencies = [ - "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -5759,9 +5731,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.45.10" +version = "0.45.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cf7549feec3698d0110a0a71ae547f31ae272dc92db3285ce126d6dcbdadf3" +checksum = "c5713ab3429530c10bdf167170ebbde75b046c8003558459e4de5aaec62ce0f1" dependencies = [ "anyhow", "pathdiff", @@ -5772,9 +5744,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.141.26" +version = "0.141.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9590deff1b29aafbff8901b9d38d00211393f6b17b5cab878562db89a8966d88" +checksum = "c4d17401dd95048a6a62b777d533c0999dabdd531ef9d667e22f8ae2a2a0d294" dependencies = [ "either", "new_debug_unreachable", @@ -5794,13 +5766,13 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.134.42" +version = "0.135.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d74ca42a400257d8563624122813c1849c3d87e7abe3b9b2ed7514c76f64ad2f" +checksum = "6d4ab26ec124b03e47f54d4daade8e9a9dcd66d3a4ca3cd47045f138d267a60e" dependencies = [ "better_scoped_tls", "bitflags 2.4.1", - "indexmap 1.9.3", + "indexmap", "once_cell", "phf", "rustc-hash", @@ -5817,9 +5789,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.123.43" +version = "0.124.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e68880cf7d65b93e0446b3ee079f33d94e0eddac922f75b736a6ea7669517c0" +checksum = "9fe4376c024fa04394cafb8faecafb4623722b92dbbe46532258cc0a6b569d9c" dependencies = [ "swc_atoms", "swc_common", @@ -5831,25 +5803,24 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_macros" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8188eab297da773836ef5cf2af03ee5cca7a563e1be4b146f8141452c28cc690" +checksum = "17e309b88f337da54ef7fe4c5b99c2c522927071f797ee6c9fb8b6bf2d100481" dependencies = [ - "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "swc_ecma_transforms_optimization" -version = "0.195.54" +version = "0.196.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808ae9b4a291d73adf36d543f07d5a64a5c121a72c5d5f66898415d1b396b1d1" +checksum = "eefef9f5a80afdbd4b517401dc053825d1ac0d95bb63f3ae92d2b335d8d7d4f8" dependencies = [ "dashmap", - "indexmap 1.9.3", + "indexmap", "once_cell", "petgraph", "rustc-hash", @@ -5868,9 +5839,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.168.52" +version = "0.169.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e1f409e026be953fabb327923ebc5fdc7c664bcac036b76107834798640ed" +checksum = "86de99757fc31d8977f47c02a26e5c9a243cb63b03fe8aa8b36d79924b8fa29c" dependencies = [ "either", "rustc-hash", @@ -5888,13 +5859,13 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.180.52" +version = "0.181.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa7f368a80f28eeaa0f529cff6fb5d7578ef10a60be25bfd2582cb3f8ff5c9e" +checksum = "9918e22caf1ea4a71085f5d818d6c0bf5c19d669cfb9d38f9fdc3da0496abdc7" dependencies = [ - "base64 0.13.1", + "base64", "dashmap", - "indexmap 1.9.3", + "indexmap", "once_cell", "serde", "sha-1", @@ -5912,9 +5883,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.185.52" +version = "0.186.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa2950c85abb4d555e092503ad2fa4f6dec0ee36a719273fb7a7bb29ead9ab6" +checksum = "e1d1495c969ffdc224384f1fb73646b9c1b170779f20fdb984518deb054aa522" dependencies = [ "ryu-js", "serde", @@ -5929,11 +5900,11 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.124.32" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a4a0baf6cfa490666a9fe23a17490273f843d19ebc1d6ec89d64c3f8ccdb80" +checksum = "7cead1083e46b0f072a82938f16d366014468f7510350957765bb4d013496890" dependencies = [ - "indexmap 1.9.3", + "indexmap", "num_cpus", "once_cell", "rustc-hash", @@ -5947,9 +5918,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.96.10" +version = "0.96.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba962f0becf83bab12a17365dface5a4f636c9e1743d479e292b96910a753743" +checksum = "a1d0100c383fb08b6f34911ab6f925950416a5d14404c1cd520d59fb8dfbb3bf" dependencies = [ "num-bigint", "swc_atoms", @@ -5961,23 +5932,22 @@ dependencies = [ [[package]] name = "swc_eq_ignore_macros" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" +checksum = "695a1d8b461033d32429b5befbf0ad4d7a2c4d6ba9cd5ba4e0645c615839e8e4" dependencies = [ - "pmutil", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "swc_fast_graph" -version = "0.21.9" +version = "0.21.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8117f6d10bbcb30cb3e549d6fa7637cb6d7c713cb71b2ce1808105a6825c788d" +checksum = "8acfc056067a0fbfe26a4763c1eb246e813fdbe6b376415d07915e96e15481b6" dependencies = [ - "indexmap 1.9.3", + "indexmap", "petgraph", "rustc-hash", "swc_common", @@ -5985,9 +5955,9 @@ dependencies = [ [[package]] name = "swc_graph_analyzer" -version = "0.22.11" +version = "0.22.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de8f0ac33ef7486723a3acdd9c4541dac79f0433bf878b9075826bca1163d83e" +checksum = "1c6e0110c0433c27221f03e45419b7e18d1db4d472db309088caa458ac2f304e" dependencies = [ "auto_impl", "petgraph", @@ -5998,21 +5968,20 @@ dependencies = [ [[package]] name = "swc_macros_common" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" +checksum = "50176cfc1cbc8bb22f41c6fe9d1ec53fbe057001219b5954961b8ad0f336fce9" dependencies = [ - "pmutil", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "swc_visit" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c337fbb2d191bf371173dea6a957f01899adb8f189c6c31b122a6cfc98fc3" +checksum = "b27078d8571abe23aa52ef608dd1df89096a37d867cf691cbb4f4c392322b7c9" dependencies = [ "either", "swc_visit_macros", @@ -6020,16 +5989,16 @@ dependencies = [ [[package]] name = "swc_visit_macros" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" +checksum = "fa8bb05975506741555ea4d10c3a3bdb0e2357cd58e1a4a4332b8ebb4b44c34d" dependencies = [ "Inflector", "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -6045,9 +6014,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -6141,7 +6110,7 @@ version = "0.1.0" dependencies = [ "anyhow", "async-stream", - "base64 0.21.5", + "base64", "bytes", "console_static_text", "deno_unsync 0.3.2", @@ -6214,7 +6183,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -6288,7 +6257,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -6411,7 +6380,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -6439,7 +6408,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -6855,7 +6824,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -6889,7 +6858,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7303,7 +7272,7 @@ checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -7323,7 +7292,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index fa2622ef7b..aad9b851ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ license = "MIT" repository = "https://github.com/denoland/deno" [workspace.dependencies] -deno_ast = { version = "0.31.6", features = ["transpiling"] } +deno_ast = { version = "1.0.1", features = ["transpiling"] } deno_core = { version = "0.244.0" } deno_runtime = { version = "0.138.0", path = "./runtime" } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index f431154969..ae6a11398c 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -60,16 +60,18 @@ deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "dep_gra deno_cache_dir = "=0.6.1" deno_config = "=0.6.5" deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } -deno_doc = { version = "=0.85.0", features = ["html"] } -deno_emit = "=0.32.0" -deno_graph = "=0.62.2" -deno_lint = { version = "=0.52.2", features = ["docs"] } +deno_doc = { version = "=0.89.0", features = ["html"] } +deno_emit = "=0.33.0" +deno_graph = "=0.63.0" +deno_lint = { version = "=0.53.0", features = ["docs"] } deno_lockfile.workspace = true -deno_npm = "0.15.3" +deno_npm = "=0.15.3" deno_runtime = { workspace = true, features = ["dont_create_runtime_snapshot", "include_js_files_for_snapshotting"] } -deno_semver = "0.5.1" +# todo(dsherret): investigate https://github.com/denoland/deno_semver/commit/98f9174baef199809295077b3b68c9fa58defb9b causing +# lsp_completions_auto_import_and_quick_fix_with_import_map to fail when bumping this version +deno_semver = "=0.5.1" deno_task_shell = "=0.14.0" -eszip = "=0.56.0" +eszip = "=0.57.0" napi_sym.workspace = true async-trait.workspace = true @@ -91,7 +93,7 @@ dotenvy = "0.15.7" dprint-plugin-json = "=0.19.1" dprint-plugin-jupyter = "=0.1.2" dprint-plugin-markdown = "=0.16.3" -dprint-plugin-typescript = "=0.88.7" +dprint-plugin-typescript = "=0.88.8" encoding_rs.workspace = true env_logger = "=0.10.0" fancy-regex = "=0.10.0" @@ -100,7 +102,7 @@ flate2.workspace = true fs3.workspace = true glob = "0.3.1" hex.workspace = true -import_map = { version = "=0.18.0", features = ["ext"] } +import_map = { version = "=0.18.1", features = ["ext"] } indexmap.workspace = true jsonc-parser = { version = "=0.23.0", features = ["serde"] } lazy-regex.workspace = true diff --git a/cli/cache/module_info.rs b/cli/cache/module_info.rs index 9240b23879..4a80774f66 100644 --- a/cli/cache/module_info.rs +++ b/cli/cache/module_info.rs @@ -6,11 +6,9 @@ use deno_ast::MediaType; use deno_ast::ModuleSpecifier; use deno_core::error::AnyError; use deno_core::serde_json; -use deno_graph::CapturingModuleParser; use deno_graph::DefaultModuleAnalyzer; use deno_graph::ModuleInfo; use deno_graph::ModuleParser; -use deno_graph::ParsedSourceStore; use deno_runtime::deno_webstorage::rusqlite::params; use super::cache_db::CacheDB; @@ -115,19 +113,18 @@ impl ModuleInfoCache { pub fn as_module_analyzer<'a>( &'a self, - parser: Option<&'a dyn ModuleParser>, - store: &'a dyn ParsedSourceStore, + parser: &'a dyn ModuleParser, ) -> ModuleInfoCacheModuleAnalyzer<'a> { ModuleInfoCacheModuleAnalyzer { module_info_cache: self, - parser: CapturingModuleParser::new(parser, store), + parser, } } } pub struct ModuleInfoCacheModuleAnalyzer<'a> { module_info_cache: &'a ModuleInfoCache, - parser: CapturingModuleParser<'a>, + parser: &'a dyn ModuleParser, } impl<'a> deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'a> { @@ -156,7 +153,7 @@ impl<'a> deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'a> { } // otherwise, get the module info from the parsed source cache - let analyzer = DefaultModuleAnalyzer::new(&self.parser); + let analyzer = DefaultModuleAnalyzer::new(self.parser); let module_info = analyzer.analyze(specifier, source, media_type)?; // then attempt to cache it diff --git a/cli/cache/parsed_source.rs b/cli/cache/parsed_source.rs index 021c37f1bc..77f2e59534 100644 --- a/cli/cache/parsed_source.rs +++ b/cli/cache/parsed_source.rs @@ -9,6 +9,7 @@ use deno_ast::ParsedSource; use deno_core::parking_lot::Mutex; use deno_graph::CapturingModuleParser; use deno_graph::ModuleParser; +use deno_graph::ParseOptions; #[derive(Default)] pub struct ParsedSourceCache { @@ -37,7 +38,13 @@ impl ParsedSourceCache { ) -> deno_core::anyhow::Result { let parser = self.as_capturing_parser(); // this will conditionally parse because it's using a CapturingModuleParser - parser.parse_module(specifier, source, media_type) + parser.parse_module(ParseOptions { + specifier, + source, + media_type, + // don't bother enabling because this method is currently only used for emitting + scope_analysis: false, + }) } /// Frees the parsed source from memory. @@ -50,10 +57,6 @@ impl ParsedSourceCache { pub fn as_capturing_parser(&self) -> CapturingModuleParser { CapturingModuleParser::new(None, self) } - - pub fn as_store(self: &Arc) -> Arc { - self.clone() - } } /// It's ok that this is racy since in non-LSP situations @@ -76,4 +79,21 @@ impl deno_graph::ParsedSourceStore for ParsedSourceCache { ) -> Option { self.sources.lock().get(specifier).cloned() } + + fn get_scope_analysis_parsed_source( + &self, + specifier: &deno_graph::ModuleSpecifier, + ) -> Option { + let mut sources = self.sources.lock(); + let parsed_source = sources.get(specifier)?; + if parsed_source.has_scope_analysis() { + Some(parsed_source.clone()) + } else { + // upgrade to have scope analysis + let parsed_source = sources.remove(specifier).unwrap(); + let parsed_source = parsed_source.into_with_scope_analysis(); + sources.insert(specifier.clone(), parsed_source.clone()); + Some(parsed_source) + } + } } diff --git a/cli/graph_util.rs b/cli/graph_util.rs index b4f4b939aa..53861415c6 100644 --- a/cli/graph_util.rs +++ b/cli/graph_util.rs @@ -21,6 +21,7 @@ use crate::util::path::specifier_to_file_path; use crate::util::sync::TaskQueue; use crate::util::sync::TaskQueuePermit; +use deno_config::ConfigFile; use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::custom_error; @@ -32,7 +33,6 @@ use deno_graph::source::Loader; use deno_graph::source::ResolveError; use deno_graph::GraphKind; use deno_graph::Module; -use deno_graph::ModuleAnalyzer; use deno_graph::ModuleError; use deno_graph::ModuleGraph; use deno_graph::ModuleGraphError; @@ -193,8 +193,11 @@ pub fn graph_lock_or_exit(graph: &ModuleGraph, lockfile: &mut Lockfile) { pub struct CreateGraphOptions<'a> { pub graph_kind: GraphKind, pub roots: Vec, - pub loader: &'a mut dyn Loader, - pub analyzer: &'a dyn ModuleAnalyzer, + /// Whether to do fast check on workspace members. This is mostly only + /// useful when publishing. + pub workspace_fast_check: bool, + /// Specify `None` to use the default CLI loader. + pub loader: Option<&'a mut dyn Loader>, } pub struct ModuleGraphBuilder { @@ -261,14 +264,12 @@ impl ModuleGraphBuilder { roots: Vec, loader: &mut dyn Loader, ) -> Result { - let store = self.parsed_source_cache.as_store(); - let analyzer = self.module_info_cache.as_module_analyzer(None, &*store); self .create_graph_with_options(CreateGraphOptions { graph_kind, roots, - loader, - analyzer: &analyzer, + loader: Some(loader), + workspace_fast_check: false, }) .await } @@ -277,14 +278,23 @@ impl ModuleGraphBuilder { &self, options: CreateGraphOptions<'_>, ) -> Result { - let maybe_imports = self.options.to_maybe_imports()?; - let maybe_workspace_config = self.options.maybe_workspace_config(); - let workspace_members = if let Some(wc) = maybe_workspace_config { - workspace_config_to_workspace_members(wc)? - } else { - vec![] - }; + enum MutLoaderRef<'a> { + Borrowed(&'a mut dyn Loader), + Owned(cache::FetchCacher), + } + impl<'a> MutLoaderRef<'a> { + pub fn as_mut_loader(&mut self) -> &mut dyn Loader { + match self { + Self::Borrowed(loader) => *loader, + Self::Owned(loader) => loader, + } + } + } + + let parser = self.parsed_source_cache.as_capturing_parser(); + let analyzer = self.module_info_cache.as_module_analyzer(&parser); + let maybe_imports = self.options.to_maybe_imports()?; let cli_resolver = self.resolver.clone(); let graph_resolver = cli_resolver.as_graph_resolver(); let graph_npm_resolver = cli_resolver.as_graph_npm_resolver(); @@ -292,22 +302,28 @@ impl ModuleGraphBuilder { .maybe_file_watcher_reporter .as_ref() .map(|r| r.as_reporter()); + let mut loader = match options.loader { + Some(loader) => MutLoaderRef::Borrowed(loader), + None => MutLoaderRef::Owned(self.create_graph_loader()), + }; let mut graph = ModuleGraph::new(options.graph_kind); self .build_graph_with_npm_resolution( &mut graph, options.roots, - options.loader, + loader.as_mut_loader(), deno_graph::BuildOptions { is_dynamic: false, imports: maybe_imports, resolver: Some(graph_resolver), file_system: Some(&DenoGraphFsAdapter(self.fs.as_ref())), npm_resolver: Some(graph_npm_resolver), - module_analyzer: Some(options.analyzer), + module_analyzer: Some(&analyzer), + module_parser: Some(&parser), reporter: maybe_file_watcher_reporter, - workspace_members, + workspace_fast_check: options.workspace_fast_check, + workspace_members: self.get_deno_graph_workspace_members()?, }, ) .await?; @@ -327,17 +343,11 @@ impl ModuleGraphBuilder { ) -> Result, AnyError> { let mut cache = self.create_graph_loader(); let maybe_imports = self.options.to_maybe_imports()?; - let maybe_workspace_config = self.options.maybe_workspace_config(); - let workspace_members = if let Some(wc) = maybe_workspace_config { - workspace_config_to_workspace_members(wc)? - } else { - vec![] - }; let cli_resolver = self.resolver.clone(); let graph_resolver = cli_resolver.as_graph_resolver(); let graph_npm_resolver = cli_resolver.as_graph_npm_resolver(); - let store = self.parsed_source_cache.as_store(); - let analyzer = self.module_info_cache.as_module_analyzer(None, &*store); + let parser = self.parsed_source_cache.as_capturing_parser(); + let analyzer = self.module_info_cache.as_module_analyzer(&parser); let graph_kind = self.options.type_check_mode().as_graph_kind(); let mut graph = ModuleGraph::new(graph_kind); let maybe_file_watcher_reporter = self @@ -357,8 +367,10 @@ impl ModuleGraphBuilder { resolver: Some(graph_resolver), npm_resolver: Some(graph_npm_resolver), module_analyzer: Some(&analyzer), + module_parser: Some(&parser), reporter: maybe_file_watcher_reporter, - workspace_members, + workspace_fast_check: false, + workspace_members: self.get_deno_graph_workspace_members()?, }, ) .await?; @@ -391,6 +403,30 @@ impl ModuleGraphBuilder { Ok(graph) } + fn get_deno_graph_workspace_members( + &self, + ) -> Result, AnyError> { + let maybe_workspace_config = self.options.maybe_workspace_config(); + if let Some(wc) = maybe_workspace_config { + workspace_config_to_workspace_members(wc) + } else { + Ok( + self + .options + .maybe_config_file() + .as_ref() + .and_then(|c| match config_to_workspace_member(c) { + Ok(m) => Some(vec![m]), + Err(e) => { + log::debug!("Deno config was not a package: {:#}", e); + None + } + }) + .unwrap_or_default(), + ) + } + } + pub async fn build_graph_with_npm_resolution<'a>( &self, graph: &mut ModuleGraph, @@ -435,7 +471,7 @@ impl ModuleGraphBuilder { .strip_prefix("jsr:") .and_then(|value| PackageNv::from_str(value).ok()) { - graph.packages.add(key, value); + graph.packages.add_nv(key, value); } } } @@ -777,36 +813,34 @@ pub fn workspace_config_to_workspace_members( .members .iter() .map(|member| { - workspace_member_config_try_into_workspace_member(member).with_context( - || { - format!( - "Failed to resolve configuration for '{}' workspace member at '{}'", - member.member_name, - member.config_file.specifier.as_str() - ) - }, - ) + config_to_workspace_member(&member.config_file).with_context(|| { + format!( + "Failed to resolve configuration for '{}' workspace member at '{}'", + member.member_name, + member.config_file.specifier.as_str() + ) + }) }) .collect() } -fn workspace_member_config_try_into_workspace_member( - config: &deno_config::WorkspaceMemberConfig, +fn config_to_workspace_member( + config: &ConfigFile, ) -> Result { let nv = deno_semver::package::PackageNv { - name: config.package_name.clone(), - version: deno_semver::Version::parse_standard(&config.package_version)?, + name: match &config.json.name { + Some(name) => name.clone(), + None => bail!("Missing 'name' field in config file."), + }, + version: match &config.json.version { + Some(name) => deno_semver::Version::parse_standard(name)?, + None => bail!("Missing 'version' field in config file."), + }, }; Ok(deno_graph::WorkspaceMember { - base: ModuleSpecifier::from_directory_path(&config.path).unwrap(), + base: config.specifier.join("./").unwrap(), nv, - exports: config - .config_file - .to_exports_config()? - .into_map() - // todo(dsherret): deno_graph should use an IndexMap - .into_iter() - .collect(), + exports: config.to_exports_config()?.into_map(), }) } diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs index 88ca47f679..5301fbeea0 100644 --- a/cli/lsp/analysis.rs +++ b/cli/lsp/analysis.rs @@ -133,7 +133,7 @@ pub fn get_lint_references( parsed_source: &deno_ast::ParsedSource, lint_rules: Vec<&'static dyn LintRule>, ) -> Result, AnyError> { - let linter = create_linter(parsed_source.media_type(), lint_rules); + let linter = create_linter(lint_rules); let lint_diagnostics = linter.lint_with_ast(parsed_source); Ok( diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 9a2c511ff3..6fbeb8770b 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -138,8 +138,8 @@ impl ModuleLoadPreparer { .as_ref() .map(|r| r.as_reporter()); - let store = self.parsed_source_cache.as_store(); - let analyzer = self.module_info_cache.as_module_analyzer(None, &*store); + let parser = self.parsed_source_cache.as_capturing_parser(); + let analyzer = self.module_info_cache.as_module_analyzer(&parser); log::debug!("Creating module graph."); let mut graph_update_permit = @@ -163,8 +163,10 @@ impl ModuleLoadPreparer { file_system: Some(&DenoGraphFsAdapter(self.fs.as_ref())), resolver: Some(graph_resolver), npm_resolver: Some(graph_npm_resolver), + module_parser: Some(&parser), module_analyzer: Some(&analyzer), reporter: maybe_file_watcher_reporter, + workspace_fast_check: false, workspace_members, }, ) diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index b8d6b8a87a..7b06dce057 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -10,7 +10,6 @@ use crate::display::write_json_to_stdout; use crate::display::write_to_stdout_ignore_sigpipe; use crate::factory::CliFactory; use crate::graph_util::graph_lock_or_exit; -use crate::graph_util::CreateGraphOptions; use crate::tsc::get_types_declaration_file_text; use crate::util::fs::collect_specifiers; use crate::util::glob::FilePatterns; @@ -20,10 +19,9 @@ use deno_core::anyhow::Context; use deno_core::error::AnyError; use deno_core::futures::FutureExt; use deno_doc as doc; -use deno_graph::CapturingModuleParser; -use deno_graph::DefaultParsedSourceStore; use deno_graph::GraphKind; use deno_graph::ModuleAnalyzer; +use deno_graph::ModuleParser; use deno_graph::ModuleSpecifier; use doc::DocDiagnostic; use indexmap::IndexMap; @@ -35,7 +33,7 @@ use std::sync::Arc; async fn generate_doc_nodes_for_builtin_types( doc_flags: DocFlags, cli_options: &Arc, - capturing_parser: CapturingModuleParser<'_>, + parser: &dyn ModuleParser, analyzer: &dyn ModuleAnalyzer, ) -> Result>, AnyError> { let source_file_specifier = @@ -65,7 +63,7 @@ async fn generate_doc_nodes_for_builtin_types( .await; let doc_parser = doc::DocParser::new( &graph, - capturing_parser, + parser, doc::DocParserOptions { diagnostics: false, private: doc_flags.private, @@ -80,19 +78,16 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { let factory = CliFactory::from_flags(flags).await?; let cli_options = factory.cli_options(); let module_info_cache = factory.module_info_cache()?; - let source_parser = deno_graph::DefaultModuleParser::new_for_analysis(); - let store = DefaultParsedSourceStore::default(); - let analyzer = - module_info_cache.as_module_analyzer(Some(&source_parser), &store); - let capturing_parser = - CapturingModuleParser::new(Some(&source_parser), &store); + let parsed_source_cache = factory.parsed_source_cache(); + let capturing_parser = parsed_source_cache.as_capturing_parser(); + let analyzer = module_info_cache.as_module_analyzer(&capturing_parser); let doc_nodes_by_url = match doc_flags.source_files { DocSourceFileFlag::Builtin => { generate_doc_nodes_for_builtin_types( doc_flags.clone(), cli_options, - capturing_parser, + &capturing_parser, &analyzer, ) .await? @@ -123,14 +118,8 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { }, |_, _| true, )?; - let mut loader = module_graph_builder.create_graph_loader(); let graph = module_graph_builder - .create_graph_with_options(CreateGraphOptions { - graph_kind: GraphKind::TypesOnly, - roots: module_specifiers.clone(), - loader: &mut loader, - analyzer: &analyzer, - }) + .create_graph(GraphKind::TypesOnly, module_specifiers.clone()) .await?; if let Some(lockfile) = maybe_lockfile { @@ -139,7 +128,7 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { let doc_parser = doc::DocParser::new( &graph, - capturing_parser, + &capturing_parser, doc::DocParserOptions { private: doc_flags.private, diagnostics: doc_flags.lint, @@ -168,7 +157,7 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { let deno_ns = generate_doc_nodes_for_builtin_types( doc_flags.clone(), cli_options, - capturing_parser, + &capturing_parser, &analyzer, ) .await?; diff --git a/cli/tools/lint.rs b/cli/tools/lint.rs index a91f14ad89..52890ae243 100644 --- a/cli/tools/lint.rs +++ b/cli/tools/lint.rs @@ -23,6 +23,7 @@ use deno_core::error::AnyError; use deno_core::error::JsStackFrame; use deno_core::serde_json; use deno_lint::diagnostic::LintDiagnostic; +use deno_lint::linter::LintFileOptions; use deno_lint::linter::Linter; use deno_lint::linter::LinterBuilder; use deno_lint::rules; @@ -249,14 +250,10 @@ pub fn print_rules_list(json: bool, maybe_rules_tags: Option>) { } } -pub fn create_linter( - media_type: MediaType, - rules: Vec<&'static dyn LintRule>, -) -> Linter { +pub fn create_linter(rules: Vec<&'static dyn LintRule>) -> Linter { LinterBuilder::default() .ignore_file_directive("deno-lint-ignore-file") .ignore_diagnostic_directive("deno-lint-ignore") - .media_type(media_type) .rules(rules) .build() } @@ -266,12 +263,16 @@ fn lint_file( source_code: String, lint_rules: Vec<&'static dyn LintRule>, ) -> Result<(Vec, String), AnyError> { - let file_name = file_path.to_string_lossy().to_string(); + let filename = file_path.to_string_lossy().to_string(); let media_type = MediaType::from_path(file_path); - let linter = create_linter(media_type, lint_rules); + let linter = create_linter(lint_rules); - let (_, file_diagnostics) = linter.lint(file_name, source_code.clone())?; + let (_, file_diagnostics) = linter.lint_file(LintFileOptions { + filename, + media_type, + source_code: source_code.clone(), + })?; Ok((file_diagnostics, source_code)) } @@ -287,10 +288,13 @@ fn lint_stdin( return Err(generic_error("Failed to read from stdin")); } - let linter = create_linter(MediaType::TypeScript, lint_rules); + let linter = create_linter(lint_rules); - let (_, file_diagnostics) = - linter.lint(STDIN_FILE_NAME.to_string(), source_code.clone())?; + let (_, file_diagnostics) = linter.lint_file(LintFileOptions { + filename: STDIN_FILE_NAME.to_string(), + source_code: source_code.clone(), + media_type: MediaType::TypeScript, + })?; Ok((file_diagnostics, source_code)) } diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index 83cc60dd0b..696f5c0653 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -839,7 +839,7 @@ fn analyze_jsx_pragmas( let mut analyzed_pragmas = AnalyzedJsxPragmas::default(); - for c in parsed_source.get_leading_comments().iter() { + for c in parsed_source.get_leading_comments()?.iter() { if c.kind != CommentKind::Block { continue; // invalid }