From 5a0e94c05c52297f00ebef76300addecf22efae0 Mon Sep 17 00:00:00 2001 From: Zhenhua Chai Date: Sun, 18 Jan 2026 16:48:28 +0800 Subject: [PATCH 1/4] feat: upgrade reqwest and deno dependencies to support axum 0.8+ --- Cargo.lock | 1651 +++++++++++------ Cargo.toml | 89 +- examples/custom_import_logic.rs | 25 +- examples/module_loader_cache.rs | 1 - src/error.rs | 13 +- .../broadcast_channel/01_broadcast_channel.js | 1 + src/ext/broadcast_channel/mod.rs | 31 +- src/ext/broadcast_channel/wrapper.rs | 508 ++++- src/ext/console/init_console.js | 38 +- src/ext/console/mod.rs | 12 +- src/ext/ffi/mod.rs | 24 +- src/ext/fs/mod.rs | 71 +- src/ext/kv/mod.rs | 52 +- src/ext/mod.rs | 34 +- src/ext/napi/mod.rs | 18 +- src/ext/node/mod.rs | 71 +- src/ext/node/resolvers.rs | 47 +- src/ext/runtime/init_runtime.js | 2 +- src/ext/runtime/mod.rs | 20 +- src/ext/rustyscript/callbacks.rs | 47 +- src/ext/url/init_url.js | 4 +- src/ext/url/mod.rs | 12 +- src/ext/web/init_errors.js | 4 +- src/ext/web/init_fetch.js | 2 +- src/ext/web/init_web.js | 1 + src/ext/web/mod.rs | 19 +- src/ext/web/options.rs | 26 + src/ext/web/permissions.rs | 90 +- src/ext/web_stub/00_url.js | 10 + src/ext/web_stub/01_console.js | 156 ++ src/ext/web_stub/01_dom_exception.js | 2 +- src/ext/web_stub/01_urlpattern.js | 64 + src/ext/web_stub/mod.rs | 2 +- src/ext/websocket/mod.rs | 28 +- src/inner_runtime.rs | 298 +-- src/js_value.rs | 71 +- src/js_value/function.rs | 6 +- src/js_value/map.rs | 59 +- src/js_value/promise.rs | 37 +- src/js_value/string.rs | 49 +- src/lib.rs | 9 +- src/module_loader.rs | 90 +- src/module_loader/import_provider.rs | 58 +- src/module_loader/inner_loader.rs | 11 +- src/module_wrapper.rs | 22 +- src/runtime.rs | 36 +- src/runtime_builder.rs | 7 +- src/traits.rs | 38 +- 48 files changed, 2647 insertions(+), 1319 deletions(-) create mode 100644 src/ext/broadcast_channel/01_broadcast_channel.js create mode 100644 src/ext/web_stub/00_url.js create mode 100644 src/ext/web_stub/01_console.js create mode 100644 src/ext/web_stub/01_urlpattern.js diff --git a/Cargo.lock b/Cargo.lock index 930f3cf3..8487aa3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7,10 +7,6 @@ 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" @@ -156,9 +152,9 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arbitrary" @@ -231,13 +227,12 @@ dependencies = [ [[package]] name = "ast_node" -version = "3.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fb5864e2f5bf9fd9797b94b2dfd1554d4c3092b535008b27d7e15c86675a2f" +checksum = "2eb025ef00a6da925cf40870b9c8d008526b6004ece399cb0974209720f0b194" dependencies = [ - "proc-macro2", "quote", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] @@ -261,17 +256,6 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -330,16 +314,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.26.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9dd2e03ee80ca2822dd6ea431163d2ef259f2066a4d6ccaca6d9dcb386aa43" +checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" dependencies = [ "bindgen 0.69.5", "cc", "cmake", "dunce", "fs_extra", - "paste", ] [[package]] @@ -465,9 +448,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "better_scoped_tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50fd297a11c709be8348aec039c8b91de16075d2b2bdaee1bd562c0875993664" +checksum = "7cd228125315b132eed175bf47619ac79b945b26e56b848ba203ae4ea8603609" dependencies = [ "scoped-tls", ] @@ -506,9 +489,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.71.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags 2.9.0", "cexpr", @@ -687,12 +670,32 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +[[package]] +name = "bytes-str" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c60b5ce37e0b883c37eb89f79a1e26fbe9c1081945d024eee93e8d91a7e18b3" +dependencies = [ + "bytes", + "serde", +] + [[package]] name = "cache_control" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf2a5fb3207c12b5d208ebc145f967fea5cac41a021c37417ccc31ba40f39ee" +[[package]] +name = "calendrical_calculations" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0b39595c6ee54a8d0900204ba4c401d0ab4eb45adaf07178e8d017541529e7" +dependencies = [ + "core_maths", + "displaydoc", +] + [[package]] name = "capacity_builder" version = "0.5.0" @@ -779,9 +782,9 @@ checksum = "d5c24f6a463e9973db3df3c2cc276f689f5baf289c87a693dc859e004d3eb45f" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "num-traits", "serde", @@ -880,12 +883,11 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ - "termcolor", - "unicode-width 0.1.13", + "unicode-width 0.2.2", ] [[package]] @@ -944,6 +946,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -952,15 +964,24 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics-types" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.10.1", "libc", ] +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -1138,6 +1159,12 @@ dependencies = [ "itertools 0.10.5", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.13" @@ -1274,19 +1301,18 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.49.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24158ccf7def38c00fd253fd1b48c8c6207214078fe499f47168763fa2445bf2" +checksum = "30c2f6f65154faed61e45d6578566f9fab9d2a330c35c87366706883701cce51" dependencies = [ "base64 0.22.1", "capacity_builder", "deno_error", - "deno_media_type", + "deno_media_type 0.3.0", "deno_terminal", "dprint-swc-ext", "percent-encoding", "serde", - "sourcemap", "swc_atoms", "swc_common", "swc_config", @@ -1294,6 +1320,7 @@ dependencies = [ "swc_ecma_ast", "swc_ecma_codegen", "swc_ecma_codegen_macros", + "swc_ecma_lexer", "swc_ecma_loader", "swc_ecma_parser", "swc_ecma_transforms_base", @@ -1305,35 +1332,40 @@ dependencies = [ "swc_ecma_utils", "swc_ecma_visit", "swc_eq_ignore_macros", - "swc_macros_common 1.0.0", + "swc_macros_common", + "swc_sourcemap", "swc_visit", - "swc_visit_macros", "text_lines", "thiserror 2.0.14", - "unicode-width 0.2.0", + "unicode-width 0.2.2", "url", ] [[package]] name = "deno_broadcast_channel" -version = "0.207.0" +version = "0.216.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67a6a80bc318c225eb2f369b23c940cc1a0cf4e5bfbf734a86ac33048e1599b" + +[[package]] +name = "deno_bundle_runtime" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6d1a56c8c5e65b2b2cb42f4409121ada0bb23fdf5de84aa7fdad3fe6227684" +checksum = "7cf499508006f8d999385b025599bfea445ef6bf349acdf43e2e9eb5d49f4fbc" dependencies = [ "async-trait", "deno_core", "deno_error", - "deno_features", - "thiserror 2.0.14", - "tokio", - "uuid", + "deno_web", + "regex", + "serde", ] [[package]] name = "deno_cache" -version = "0.145.0" +version = "0.159.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69582f3db706e3a771364c3556ed4575fa586bf5c54afb481980f25bc230df91" +checksum = "a18c94da036f1d6c8afe8696d4ffdbeff0c59b484edf4e8594517ca2e13797a0" dependencies = [ "async-stream", "async-trait", @@ -1360,9 +1392,9 @@ dependencies = [ [[package]] name = "deno_cache_dir" -version = "0.24.0" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392538d71e0ce9db316302116095b8acef4d734a8e2360d16308ca7dc32dcdc3" +checksum = "7862aa4b7aad895ee979a3078bd25da192a1810b30cb5a7e764fed38d065eba9" dependencies = [ "async-trait", "base32", @@ -1372,7 +1404,7 @@ dependencies = [ "chrono", "data-url", "deno_error", - "deno_media_type", + "deno_media_type 0.3.0", "deno_path_util", "http 1.1.0", "indexmap 2.9.0", @@ -1387,30 +1419,17 @@ dependencies = [ "url", ] -[[package]] -name = "deno_canvas" -version = "0.82.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf10aafd8b86b6bc1019b68249f70be4c70d49a6f957bc5658afea78dbaa6dd" -dependencies = [ - "bytemuck", - "deno_core", - "deno_error", - "image", - "lcms2", - "num-traits", - "thiserror 2.0.14", -] - [[package]] name = "deno_config" -version = "0.63.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf67de1d3be71b9449f297dfe685c7c2b6911949fb25f1c3a53fb3190549cf4" +checksum = "f7a46657bd5ab6bd9df0602fd50331c49c66706fe2a6386fe6a1c9b81f3031b3" dependencies = [ "boxed_error", "capacity_builder", + "chrono", "deno_error", + "deno_maybe_sync", "deno_package_json", "deno_path_util", "deno_semver", @@ -1429,18 +1448,15 @@ dependencies = [ [[package]] name = "deno_console" -version = "0.213.0" +version = "0.222.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c53d2fbfe68ff0d39dcbffb869bfa30019da2db5d0efbfb4b3fcc04bd1aed0e" -dependencies = [ - "deno_core", -] +checksum = "ed7dede3d073a7d19e5e127756d80a1a8b570d8345e51192968da142ed290319" [[package]] name = "deno_core" -version = "0.355.0" +version = "0.376.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775d2fde80a2ec3116d179703b38346a931bb9626f4a826148d5fe8631cab29f" +checksum = "829ee94e76838e99951cc7b3ccd31f68a220687f52229c0d6e135ff29b22f6d0" dependencies = [ "anyhow", "az", @@ -1483,9 +1499,9 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695" [[package]] name = "deno_cron" -version = "0.93.0" +version = "0.106.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d52e26778837fcd8067416270f34e4e2e1160248f9d75d8d9c9dd58bd90991" +checksum = "13bab29168443140e5914af8a2358dfb8158898b2a73ef33839cbcb31074220c" dependencies = [ "async-trait", "chrono", @@ -1499,9 +1515,9 @@ dependencies = [ [[package]] name = "deno_crypto" -version = "0.227.0" +version = "0.240.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f8afd2869b8cefa809e912ba73242485ac69009b6195581eea8a75bc1b89c7" +checksum = "b235765571dca50710542ec2305b936c2c435f5efe632307cf6b2735e0449268" dependencies = [ "aes", "aes-gcm", @@ -1539,18 +1555,18 @@ dependencies = [ [[package]] name = "deno_crypto_provider" -version = "0.7.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c915335e9f5e628dea0029ef443f99ca8a5421803a361fdda4ad5b5370c75" +checksum = "a4e486cef731046954a2eaa9ecd71669101ac2ceac61f2dbdad1c3a6eac5ac5c" dependencies = [ - "aws-lc-sys 0.26.0", + "aws-lc-sys 0.29.0", ] [[package]] name = "deno_error" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde60bd153886964234c5012d3d9caf788287f28d81fb24a884436904101ef10" +checksum = "bfafd2219b29886a71aecbb3449e462deed1b2c474dc5b12f855f0e58c478931" dependencies = [ "deno_error_macro", "libc", @@ -1562,9 +1578,9 @@ dependencies = [ [[package]] name = "deno_error_macro" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "409f265785bd946d3006756955aaf40b0e4deb25752eae6a990afe54a31cfd83" +checksum = "1c28ede88783f14cd8aae46ca89f230c226b40e4a81ab06fa52ed72af84beb2f" dependencies = [ "proc-macro2", "quote", @@ -1573,9 +1589,9 @@ dependencies = [ [[package]] name = "deno_features" -version = "0.10.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73252505f94efc5be0e5c8255b8d2b7e4c1b6361a36c033486ae83d2cddbd37" +checksum = "45ef52b29c98bd0461f705d5ef6213346c028110b364f5d84e6151710832075a" dependencies = [ "deno_core", "serde", @@ -1584,9 +1600,9 @@ dependencies = [ [[package]] name = "deno_fetch" -version = "0.237.0" +version = "0.250.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f05820261bcc82d377f79878625d61ac70b58c886345e5b1d68f6b012ae4765" +checksum = "d2cedb5a547dba738cff57f879fde761356bdd23b80668de93cd95ee0f8b92f3" dependencies = [ "base64 0.22.1", "bytes", @@ -1624,9 +1640,9 @@ dependencies = [ [[package]] name = "deno_ffi" -version = "0.200.0" +version = "0.213.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f76fbe2a28bbd9af9767b3e262a5da732759f4095347ec8ab9cf183e7888a3" +checksum = "7ba7fff4f630257bfc405a3ccb88a59e48b09bac5dfdc72155666b28ec001760" dependencies = [ "cranelift", "cranelift-native", @@ -1650,9 +1666,9 @@ dependencies = [ [[package]] name = "deno_fs" -version = "0.123.0" +version = "0.136.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b670b3bbceb5aee7e840a4e960e0e0def8f3cf5554f191035b209f38f555638" +checksum = "02bfffd3f56099d7bc5d1622d367e2c91ce860b0bb7939c2b790c46af184aed7" dependencies = [ "async-trait", "base32", @@ -1660,6 +1676,7 @@ dependencies = [ "deno_core", "deno_error", "deno_io", + "deno_maybe_sync", "deno_path_util", "deno_permissions", "filetime", @@ -1676,9 +1693,9 @@ dependencies = [ [[package]] name = "deno_http" -version = "0.211.0" +version = "0.224.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769c9b785e7f87b5e6a5f2aab7b2b74d482670f51b2a7f1a104089f7afe28ea2" +checksum = "5a23fe4d69546e79820c112296e37e6b20109838de9981682770fbd444edec83" dependencies = [ "async-compression", "async-trait", @@ -1689,6 +1706,7 @@ dependencies = [ "cache_control", "deno_core", "deno_error", + "deno_fetch", "deno_net", "deno_telemetry", "deno_websocket", @@ -1716,11 +1734,26 @@ dependencies = [ "tokio-vsock", ] +[[package]] +name = "deno_image" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3aca5b0d43db3b05e998604ce5517989d7f36af2fd693884feddf70aa85b5f6" +dependencies = [ + "bytemuck", + "deno_core", + "deno_error", + "image", + "lcms2", + "num-traits", + "thiserror 2.0.14", +] + [[package]] name = "deno_io" -version = "0.123.0" +version = "0.136.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ed7012795555df1a65441c416e1a699d596c8ccf26c346fe6db6d35cd60336" +checksum = "c75b313e7f2311c23dff33d35e8561b9786440fbaa377fe3f873fb0dc461b82f" dependencies = [ "async-trait", "deno_core", @@ -1745,9 +1778,9 @@ dependencies = [ [[package]] name = "deno_kv" -version = "0.121.0" +version = "0.134.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edd0dcf23f34424364f3634dc2327af996285436245c40524068ba6129bba2c" +checksum = "cfc81b0449840666f9d6e8f142747eb3edc1b436cf712f49d307fb868a47dec0" dependencies = [ "anyhow", "async-trait", @@ -1780,9 +1813,9 @@ dependencies = [ [[package]] name = "deno_lockfile" -version = "0.31.2" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5afb20b44a44842178f41fa3b713c2b1516062590b5cca2ad792f2d6786bc74f" +checksum = "3d71c0df1464034be21a9472e7ec8f9a21958418d203fa2c40507fb5cafe799d" dependencies = [ "async-trait", "deno_semver", @@ -1791,6 +1824,15 @@ dependencies = [ "thiserror 2.0.14", ] +[[package]] +name = "deno_maybe_sync" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6716d359b3fe9d3fc6ab08f39e463ff9a63033041fe6aaeecf1930b284474b9b" +dependencies = [ + "dashmap", +] + [[package]] name = "deno_media_type" version = "0.2.9" @@ -1802,11 +1844,22 @@ dependencies = [ "url", ] +[[package]] +name = "deno_media_type" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac0109d26ff08a089642a79b45c65f91a849404c1ef3ec78c837a412956d8808" +dependencies = [ + "data-url", + "serde", + "url", +] + [[package]] name = "deno_napi" -version = "0.144.0" +version = "0.157.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5102d9e32e88c1cbb3034594679a3e3902b295077c0c2a24069dc98c2f6c8aae" +checksum = "4a1eace0f5a480e510d5c501660f41bcf8a35b192969868c3a411fa4e95d9815" dependencies = [ "deno_core", "deno_error", @@ -1835,9 +1888,9 @@ dependencies = [ [[package]] name = "deno_net" -version = "0.205.0" +version = "0.218.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5fcbc6f531c0ee8e7be34bc877aef1ed20c94b7d2215929ea176280259fc7a" +checksum = "6a7c7f51d5e5f695c56596d6de2afeb2ddb26d432506dba2edfd44f61c869c79" dependencies = [ "deno_core", "deno_error", @@ -1848,6 +1901,7 @@ dependencies = [ "deno_tunnel", "hickory-proto", "hickory-resolver", + "libc", "log", "pin-project", "quinn", @@ -1864,9 +1918,9 @@ dependencies = [ [[package]] name = "deno_node" -version = "0.151.0" +version = "0.164.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fccfb2ea5216cb8112861851771886b26f6341232d44e9676bddcb937b7754" +checksum = "1ae702dad0dec327be07e23a0fb243f1be7a59a43a9964fb48ca867fa8618d8d" dependencies = [ "aead-gcm-stream", "aes", @@ -1892,6 +1946,7 @@ dependencies = [ "deno_permissions", "deno_process", "deno_subprocess_windows", + "deno_tls", "deno_whoami", "der", "digest", @@ -1914,8 +1969,10 @@ dependencies = [ "k256", "libc", "libz-sys", + "log", "md-5", "md4", + "nix 0.27.1", "node_resolver", "num-bigint", "num-bigint-dig", @@ -1931,6 +1988,7 @@ dependencies = [ "ripemd", "rsa", "rusqlite", + "rustls-tokio-stream", "scrypt", "sec1", "serde", @@ -1939,6 +1997,7 @@ dependencies = [ "sha3", "signature", "sm3", + "socket2 0.5.7", "spki", "sys_traits", "thiserror 2.0.14", @@ -1951,17 +2010,18 @@ dependencies = [ "windows-sys 0.59.0", "x25519-dalek", "x509-parser", - "yoke", + "yoke 0.7.4", ] [[package]] name = "deno_npm" -version = "0.36.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688f93cb13db227a013bfd5c5973235458615115934fc37ce2e72620c9934526" +checksum = "7daa908c280b25d68ea59765144df488714716cc14a2dcafaa1ec3906d4abbbe" dependencies = [ "async-trait", "capacity_builder", + "chrono", "deno_error", "deno_lockfile", "deno_semver", @@ -1977,26 +2037,26 @@ dependencies = [ [[package]] name = "deno_ops" -version = "0.231.0" +version = "0.252.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca530772bbcbc9ad389ad7bcd86623b2ec555f68a2d062d23cc008915cbe781" +checksum = "c83a1be112eed3cb12e02c541f0da2a7357655aa519f3f180c405c0409cfa5ea" dependencies = [ "indexmap 2.9.0", - "proc-macro-rules", "proc-macro2", "quote", "stringcase", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum", + "strum_macros", "syn 2.0.87", + "syn-match", "thiserror 2.0.14", ] [[package]] name = "deno_os" -version = "0.30.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2b0b7c124499ae48516464a3636b900cdecd765c7e6e411f813038b3e1c575" +checksum = "1d7ca2f93af2e4296b1bbb09ed65093925ae6aacf02e64c645f9f4be31763b15" dependencies = [ "deno_core", "deno_error", @@ -2015,12 +2075,13 @@ dependencies = [ [[package]] name = "deno_package_json" -version = "0.15.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36155ebe3074c582c533895056071dc05036548e40420bd977cc41b822a3dc49" +checksum = "068ca274a783b395305290a1e606469c80123f9a5a542f51e9b817e03e3b2796" dependencies = [ "boxed_error", "deno_error", + "deno_maybe_sync", "deno_path_util", "deno_semver", "indexmap 2.9.0", @@ -2033,9 +2094,9 @@ dependencies = [ [[package]] name = "deno_path_util" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe02936964b2910719bd488841f6e884349360113c7abf6f4c6b28ca9cd7a19" +checksum = "78c7e98943f0d068928906db0c7bde89de684fa32c6a8018caacc4cee2cdd72b" dependencies = [ "deno_error", "percent-encoding", @@ -2046,11 +2107,12 @@ dependencies = [ [[package]] name = "deno_permissions" -version = "0.72.0" +version = "0.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e08943b9430d1e78b7ddae254666aadfe5d8b3ee5cb253f1dff872ef5b22f10" +checksum = "ea134204d5c84e0a186de208c410e4c38c839cea308e579037e747405affb947" dependencies = [ "capacity_builder", + "chrono", "deno_error", "deno_path_util", "deno_terminal", @@ -2075,9 +2137,9 @@ dependencies = [ [[package]] name = "deno_process" -version = "0.28.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e378d7a21caef5ac9e6b7e23247dd95c71c702aaae9c73fc8aecced2f330fbf" +checksum = "e5a85f57bec6a19f2e3634d9905543d5821fe28691a12bec0183389999e7f11e" dependencies = [ "deno_core", "deno_error", @@ -2106,9 +2168,9 @@ dependencies = [ [[package]] name = "deno_resolver" -version = "0.44.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caaf3b5a2f5d25e1cf45e8e4435465d413cc5ebc1f5ac286aa977165d26a7fc1" +checksum = "cdc21fb4cbd83f363f2ce32c51df542e110ecac9d22f4c36dfac2bdb7c6d5dd8" dependencies = [ "anyhow", "async-once-cell", @@ -2116,12 +2178,14 @@ dependencies = [ "base32", "boxed_error", "capacity_builder", + "chrono", "dashmap", "deno_cache_dir", "deno_config", "deno_error", "deno_lockfile", - "deno_media_type", + "deno_maybe_sync", + "deno_media_type 0.3.0", "deno_npm", "deno_package_json", "deno_path_util", @@ -2148,15 +2212,14 @@ dependencies = [ [[package]] name = "deno_runtime" -version = "0.221.0" +version = "0.234.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1615b74c4632c7d0d91b58cdbce233e3c662aa1460d02b0a68acc8e2d9af46bf" +checksum = "bfa19bcc64b53ce47ce91aa870f83c6737fabb4b9194b720f09a71e24a8ee15c" dependencies = [ + "async-trait", "color-print", - "deno_broadcast_channel", + "deno_bundle_runtime", "deno_cache", - "deno_canvas", - "deno_console", "deno_core", "deno_cron", "deno_crypto", @@ -2166,6 +2229,7 @@ dependencies = [ "deno_ffi", "deno_fs", "deno_http", + "deno_image", "deno_io", "deno_kv", "deno_napi", @@ -2180,7 +2244,6 @@ dependencies = [ "deno_telemetry", "deno_terminal", "deno_tls", - "deno_url", "deno_web", "deno_webgpu", "deno_webidl", @@ -2192,6 +2255,7 @@ dependencies = [ "http-body-util", "hyper 1.6.0", "hyper-util", + "indexmap 2.9.0", "libc", "log", "nix 0.27.1", @@ -2199,6 +2263,7 @@ dependencies = [ "notify", "ntapi", "once_cell", + "regex", "rustyline", "same-file", "serde", @@ -2214,9 +2279,9 @@ dependencies = [ [[package]] name = "deno_semver" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2625b7107cc3f61a462886d5fa77c23e063c1fd15b90e3d5ee2646e9f6178d55" +checksum = "92d46d2fd6959170a6e9f6607a6f79683868fa82ceac56ca520ab014e4fa5b21" dependencies = [ "capacity_builder", "deno_error", @@ -2231,9 +2296,9 @@ dependencies = [ [[package]] name = "deno_signals" -version = "0.4.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edcc759556d2d3170bcb5f430c2a3b2ed873211af3c360cc77523ea79b09ffa" +checksum = "1d963f791b2bd211be5c9c18b2a3a83ff672f5774a7425e605127c8450956961" dependencies = [ "deno_error", "libc", @@ -2245,9 +2310,9 @@ dependencies = [ [[package]] name = "deno_subprocess_windows" -version = "0.8.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63a79fb81598d64bd3adc801fae8f9f6930f4a790f50ff0196e0fe20c92fab46" +checksum = "921d3801fcfb9e6f8e287f8cacd56f9dc801e27dd57ba67132f6c2960e114566" dependencies = [ "fastrand", "futures-channel", @@ -2257,9 +2322,9 @@ dependencies = [ [[package]] name = "deno_telemetry" -version = "0.35.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80894b874df0ade53b85fd094ff948d645cfe05b5319761f922391b260b111de" +checksum = "f825c3cd1de8c814cff65bbe8f1019735edd6781b5a0dcbba4f27bb403e89de8" dependencies = [ "async-trait", "deno_core", @@ -2288,9 +2353,9 @@ dependencies = [ [[package]] name = "deno_terminal" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f71c27009e0141dedd315f1dfa3ebb0a6ca4acce7c080fac576ea415a465f6" +checksum = "f3ba8041ae7319b3ca6a64c399df4112badcbbe0868b4517637647614bede4be" dependencies = [ "once_cell", "termcolor", @@ -2298,9 +2363,9 @@ dependencies = [ [[package]] name = "deno_tls" -version = "0.200.0" +version = "0.213.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30245c362adc1e6b74b28c0a4687950c2f0f8729fc62e05f11db29f31d2dd37b" +checksum = "a96a4a3cff3c0bbd77342fd5093732a64840fdd7e76868723fea80751bbcc0e1" dependencies = [ "deno_core", "deno_error", @@ -2312,7 +2377,7 @@ dependencies = [ "serde", "thiserror 2.0.14", "tokio", - "webpki-roots", + "webpki-roots 0.26.3", ] [[package]] @@ -2343,26 +2408,22 @@ dependencies = [ [[package]] name = "deno_url" -version = "0.213.0" +version = "0.222.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebe63615f18221afbdcf0dd97f128af21529c6a4d012a7b9b4a0223c91359b2" -dependencies = [ - "deno_core", - "deno_error", - "urlpattern", -] +checksum = "54c190c36940b8ba25043e2258775df3cd4af06f28c8a9efd28b50799efe2977" [[package]] name = "deno_web" -version = "0.244.0" +version = "0.257.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a863aae15f3dbccb11b3776e9dea399f510a9b1d4dac22a4dcfff96bcff9d7" +checksum = "cc732e3f665b5117f92b645c2a959bac3dd1dfa5d3f74f4de11dbe90c4c23b20" dependencies = [ "async-trait", "base64-simd", "bytes", "deno_core", "deno_error", + "deno_features", "deno_permissions", "encoding_rs", "flate2", @@ -2370,14 +2431,15 @@ dependencies = [ "serde", "thiserror 2.0.14", "tokio", + "urlpattern", "uuid", ] [[package]] name = "deno_webgpu" -version = "0.180.0" +version = "0.193.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "becd03f8f02cda17d3a94e6acdf4e64224564ccc77b03159d9e0b83c8828c615" +checksum = "bb8b2c887355112abfa14e1596240836f3ece16897d63010a9e9bb3cc3959332" dependencies = [ "deno_core", "deno_error", @@ -2394,22 +2456,23 @@ dependencies = [ [[package]] name = "deno_webidl" -version = "0.213.0" +version = "0.226.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68682e535768112593274795b70f4dee5d31d6d973f4be14d660c0a8954e0abb" +checksum = "a16ef8ede69eb140bd5577a89f1c2d7e068dd3a7de29ea7b46f9e0e087cbec1c" dependencies = [ "deno_core", ] [[package]] name = "deno_websocket" -version = "0.218.0" +version = "0.231.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62497c70af5f4e4ea4027f88a80cb295294bc9a032988bb092085aef07b3208" +checksum = "8ed1fd12275bd76c460175362575269b90e6ee17df5ac3bd353b6899ba77d4e7" dependencies = [ "bytes", "deno_core", "deno_error", + "deno_fetch", "deno_net", "deno_permissions", "deno_tls", @@ -2428,9 +2491,9 @@ dependencies = [ [[package]] name = "deno_webstorage" -version = "0.208.0" +version = "0.221.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "517bc591568d2382b2288bfb581cd6630070ec800ba98d55ca299fff193861a4" +checksum = "d89134c225a3b3ee48e0300813b56f747eeb0edef044d93c3b07124fbc14c30e" dependencies = [ "deno_core", "deno_error", @@ -2450,9 +2513,9 @@ dependencies = [ [[package]] name = "denokv_proto" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645cfd5bdec33d2e5c4188ea2a7b348eca13958afa4c76a11504d9aa0efca589" +checksum = "3c9f1d5365706efe37950bfa83e09fbf6efe5f42306570f05dab72cd2bf3c420" dependencies = [ "async-trait", "chrono", @@ -2466,9 +2529,9 @@ dependencies = [ [[package]] name = "denokv_remote" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91a6b359d69cb44e4390f2bcd007f72c252c6b9f6f88c7eab8f9bb55806fbc1a" +checksum = "47161e738042861f890ac51c0bf42b73c9372f483ffa6ec7e4d26d8a68e136d0" dependencies = [ "async-stream", "async-trait", @@ -2492,9 +2555,9 @@ dependencies = [ [[package]] name = "denokv_sqlite" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f119506add29e620d1a6d37903d727a6abab0feb0f2e898554b0a10d1113ab32" +checksum = "04812f283a0bcc7e8f08f2d6be989b3710af83324b1b9b5704881b779cfbfb02" dependencies = [ "async-stream", "async-trait", @@ -2517,9 +2580,9 @@ dependencies = [ [[package]] name = "denort_helper" -version = "0.11.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff8f00b1155cd5a060c3fe59006bf5251f763a31e51ce55f9924c0160a58d4" +checksum = "8a0526b641bde8e09fb9bcd0d3fb79e5d42181ceafbe368ebe12ef6806959b5f" dependencies = [ "deno_error", "deno_path_util", @@ -2611,6 +2674,38 @@ dependencies = [ "subtle", ] +[[package]] +name = "diplomat" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9adb46b05e2f53dcf6a7dfc242e4ce9eb60c369b6b6eb10826a01e93167f59c6" +dependencies = [ + "diplomat_core", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "diplomat-runtime" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0569bd3caaf13829da7ee4e83dbf9197a0e1ecd72772da6d08f0b4c9285c8d29" + +[[package]] +name = "diplomat_core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51731530ed7f2d4495019abc7df3744f53338e69e2863a6a64ae91821c763df1" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "smallvec", + "strck", + "syn 2.0.87", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2668,15 +2763,16 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dprint-swc-ext" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a09827d6db1a3af25e105553d674ee9019be58fa3d6745c2a2803f8ce8e3eb8" +checksum = "33175ddb7a6d418589cab2966bd14a710b3b1139459d3d5ca9edf783c4833f4c" dependencies = [ "num-bigint", "rustc-hash 2.1.1", "swc_atoms", "swc_common", "swc_ecma_ast", + "swc_ecma_lexer", "swc_ecma_parser", "text_lines", ] @@ -2906,9 +3002,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastwebsockets" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26da0c7b5cef45c521a6f9cdfffdfeb6c9f5804fbac332deb5ae254634c7a6be" +checksum = "9dac026e15fb7e44d768880b868a0fd5bd30ffdee272e88b3060f657a5a72947" dependencies = [ "base64 0.21.7", "bytes", @@ -3009,6 +3105,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.5.0" @@ -3038,27 +3140,26 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] name = "fqdn" -version = "0.3.11" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08b1eaa7dfddeab6036292995620bf0435712e619db6d7690605897e76975eb0" +checksum = "fe2713644726a30a74150dc8d10e910a8e14e431e1a4f98988309da8c80ddf7a" [[package]] name = "from_variant" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d7ccf961415e7aa17ef93dcb6c2441faaa8e768abe09e659b908089546f74c5" +checksum = "e5ff35a391aef949120a0340d690269b3d9f63460a6106e99bd07b961f345ea9" dependencies = [ - "proc-macro2", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] @@ -3203,7 +3304,7 @@ dependencies = [ "libc", "log", "rustversion", - "windows", + "windows 0.58.0", ] [[package]] @@ -3322,46 +3423,29 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.9.0", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.9.0", -] - [[package]] name = "gpu-allocator" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" dependencies = [ + "ash", + "hashbrown 0.16.1", "log", "presser", - "thiserror 1.0.66", - "windows", + "thiserror 2.0.14", + "windows 0.62.2", ] [[package]] name = "gpu-descriptor" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.9.0", "gpu-descriptor-types", - "hashbrown 0.14.5", + "hashbrown 0.15.1", ] [[package]] @@ -3433,12 +3517,15 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "num-traits", + "serde", + "zerocopy 0.8.27", ] [[package]] @@ -3482,11 +3569,24 @@ version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" dependencies = [ - "foldhash", + "foldhash 0.1.5", ] [[package]] -name = "hashlink" +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "hashlink" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" @@ -3550,11 +3650,10 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "hickory-proto" -version = "0.25.0-alpha.5" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d00147af6310f4392a31680db52a3ed45a2e0f68eb18e8c3fe5537ecc96d9e2" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" dependencies = [ - "async-recursion", "async-trait", "cfg-if", "data-encoding", @@ -3566,6 +3665,7 @@ dependencies = [ "ipnet", "once_cell", "rand 0.9.0", + "ring", "serde", "thiserror 2.0.14", "tinyvec", @@ -3576,9 +3676,9 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.25.0-alpha.5" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5762f69ebdbd4ddb2e975cd24690bf21fe6b2604039189c26acddbc427f12887" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", "futures-util", @@ -3647,15 +3747,15 @@ dependencies = [ [[package]] name = "hstr" -version = "1.0.0" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71399f53a92ef72ee336a4b30201c6e944827e14e0af23204c291aad9c24cc85" +checksum = "0c43c0a9e8fbdb3bb9dc8eee85e1e2ac81605418b4c83b6b7413cbf14d56ca5c" dependencies = [ "hashbrown 0.14.5", "new_debug_unreachable", "once_cell", - "phf", "rustc-hash 2.1.1", + "serde", "triomphe", ] @@ -3787,7 +3887,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots", + "webpki-roots 0.26.3", ] [[package]] @@ -3805,23 +3905,50 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.1.0", "http-body 1.0.1", "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.6.0", "tokio", "tower-service", "tracing", ] +[[package]] +name = "icu_calendar" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f0e52e009b6b16ba9c0693578796f2dd4aaa59a7f8f920423706714a89ac4e" +dependencies = [ + "calendrical_calculations", + "displaydoc", + "icu_calendar_data", + "icu_locale", + "icu_locale_core", + "icu_provider 2.1.1", + "tinystr 0.8.2", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_calendar_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527f04223b17edfe0bd43baf14a0cb1b017830db65f3950dc00224860a9a446d" + [[package]] name = "icu_collections" version = "1.5.0" @@ -3829,11 +3956,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ "displaydoc", - "yoke", + "yoke 0.7.4", + "zerofrom", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke 0.8.1", "zerofrom", - "zerovec", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_locale" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532b11722e350ab6bf916ba6eb0efe3ee54b932666afec989465f9243fe6dd60" +dependencies = [ + "icu_collections 2.1.1", + "icu_locale_core", + "icu_locale_data", + "icu_provider 2.1.1", + "potential_utf", + "tinystr 0.8.2", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap 0.8.1", + "serde", + "tinystr 0.8.2", + "writeable 0.6.2", + "zerovec 0.11.5", ] +[[package]] +name = "icu_locale_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03e2fcaefecdf05619f3d6f91740e79ab969b4dd54f77cbf546b1d0d28e3147" + [[package]] name = "icu_locid" version = "1.5.0" @@ -3841,10 +4016,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", + "litemap 0.7.3", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerovec 0.10.4", ] [[package]] @@ -3856,9 +4031,9 @@ dependencies = [ "displaydoc", "icu_locid", "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", ] [[package]] @@ -3874,15 +4049,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ "displaydoc", - "icu_collections", + "icu_collections 1.5.0", "icu_normalizer_data", - "icu_properties", - "icu_provider", + "icu_properties 1.5.1", + "icu_provider 1.5.0", "smallvec", "utf16_iter", "utf8_iter", "write16", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -3898,12 +4073,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ "displaydoc", - "icu_collections", + "icu_collections 1.5.0", "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", + "icu_properties_data 1.5.0", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections 2.1.1", + "icu_locale_core", + "icu_properties_data 2.1.2", + "icu_provider 2.1.1", + "zerotrie", + "zerovec 0.11.5", ] [[package]] @@ -3912,6 +4101,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + [[package]] name = "icu_provider" version = "1.5.0" @@ -3922,11 +4117,28 @@ dependencies = [ "icu_locid", "icu_provider_macros", "stable_deref_trait", - "tinystr", - "writeable", - "yoke", + "tinystr 0.7.6", + "writeable 0.5.5", + "yoke 0.7.4", + "zerofrom", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "serde", + "stable_deref_trait", + "writeable 0.6.2", + "yoke 0.8.1", "zerofrom", - "zerovec", + "zerotrie", + "zerovec 0.11.5", ] [[package]] @@ -3942,9 +4154,9 @@ dependencies = [ [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -3958,7 +4170,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ "icu_normalizer", - "icu_properties", + "icu_properties 1.5.1", ] [[package]] @@ -3999,9 +4211,9 @@ dependencies = [ [[package]] name = "import_map" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce93e07f4819f0db4d2948fffce3ef4760a9940c4ff4f9369dfaf5e357a0d415" +checksum = "f83a4958a41489355816028239fee373797435384d162f4908e7980c83c3bb1b" dependencies = [ "boxed_error", "deno_error", @@ -4103,6 +4315,16 @@ dependencies = [ "serde", ] +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is-macro" version = "0.3.5" @@ -4159,6 +4381,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "ixdtf" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84de9d95a6d2547d9b77ee3f25fa0ee32e3c3a6484d47a55adebc0439c077992" + [[package]] name = "jni-sys" version = "0.3.0" @@ -4186,9 +4414,9 @@ dependencies = [ [[package]] name = "jsonc-parser" -version = "0.26.3" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d80e6d70e7911a29f3cf3f44f452df85d06f73572b494ca99a2cad3fcf8f4" +checksum = "01958dcb05b69d9612853b47df8f7881810e4f61b5cedd8894be04291f28ccb9" dependencies = [ "serde_json", ] @@ -4332,9 +4560,9 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libffi" -version = "4.0.0" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9434b6fc77375fb624698d5f8c49d7e80b10d59eb1219afda27d1f824d4074" +checksum = "b0feebbe0ccd382a2790f78d380540500d7b78ed7a3498b68fcfbc1593749a94" dependencies = [ "libc", "libffi-sys", @@ -4342,9 +4570,9 @@ dependencies = [ [[package]] name = "libffi-sys" -version = "3.2.0" +version = "3.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ead36a2496acfc8edd6cc32352110e9478ac5b9b5f5b9856ebd3d28019addb84" +checksum = "90c6c6e17136d4bc439d43a2f3c6ccf0731cccc016d897473a29791d3c2160c3" dependencies = [ "cc", ] @@ -4377,11 +4605,11 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libsqlite3-sys" -version = "0.32.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb8270bb4060bd76c6e96f20c52d80620f1d82a3470885694e41e0f81ef6fe7" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" dependencies = [ - "bindgen 0.71.1", + "bindgen 0.72.1", "cc", "pkg-config", "vcpkg", @@ -4410,6 +4638,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + [[package]] name = "litrs" version = "0.4.1" @@ -4428,9 +4662,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "loom" @@ -4451,6 +4685,22 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "macro_rules_attribute" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520" +dependencies = [ + "macro_rules_attribute-proc_macro", + "paste", +] + +[[package]] +name = "macro_rules_attribute-proc_macro" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -4535,9 +4785,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ "bitflags 2.9.0", "block", @@ -4630,32 +4880,36 @@ checksum = "b52c1b33ff98142aecea13138bd399b68aa7ab5d9546c300988c345004001eea" [[package]] name = "naga" -version = "24.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", "bitflags 2.9.0", + "cfg-if", "cfg_aliases", "codespan-reporting", + "half", + "hashbrown 0.16.1", "hexf-parse", "indexmap 2.9.0", + "libm", "log", + "num-traits", + "once_cell", "rustc-hash 1.1.0", "serde", "spirv", - "strum 0.26.3", - "termcolor", "thiserror 2.0.14", - "unicode-xid", + "unicode-ident", ] [[package]] name = "napi_sym" -version = "0.143.0" +version = "0.156.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cda32f648f67ca18ff3612a03e89adcf25ecdbc7db0e765831f64fbc8d164d9" +checksum = "a912b4949264d90faa47e3bd7ebf91743530daf61c811dafa11497bf8fc001fe" dependencies = [ "quote", "serde", @@ -4665,9 +4919,9 @@ dependencies = [ [[package]] name = "ndk-sys" -version = "0.5.0+25.2.9519653" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -4706,6 +4960,7 @@ dependencies = [ "bitflags 2.9.0", "cfg-if", "libc", + "memoffset", ] [[package]] @@ -4723,9 +4978,9 @@ dependencies = [ [[package]] name = "node_resolver" -version = "0.51.0" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446ea72d52f389d704af50e11c7988f06aa41625595569450354b84e2a93ef0a" +checksum = "6e801b86d09845a0e35dc4f148ec435746bab0632a7f48384883244094733548" dependencies = [ "anyhow", "async-trait", @@ -4733,12 +4988,14 @@ dependencies = [ "capacity_builder", "dashmap", "deno_error", - "deno_media_type", + "deno_maybe_sync", + "deno_media_type 0.3.0", "deno_package_json", "deno_path_util", "deno_semver", "futures", "lazy-regex", + "log", "once_cell", "path-clean", "pretty_assertions", @@ -4822,11 +5079,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -4916,6 +5172,10 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "oorandom" @@ -5116,23 +5376,13 @@ dependencies = [ [[package]] name = "par-core" -version = "1.0.4" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "757892557993c69e82f9de0f9051e87144278aa342f03bf53617bbf044554484" +checksum = "e96cbd21255b7fb29a5d51ef38a779b517a91abd59e2756c039583f43ef4c90f" dependencies = [ "once_cell", ] -[[package]] -name = "par-iter" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5b20f31e9ba82bfcbbb54a67aa40be6cebec9f668ba5753be138f9523c531a" -dependencies = [ - "either", - "par-core", -] - [[package]] name = "parking_lot" version = "0.12.3" @@ -5206,9 +5456,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "phf" @@ -5387,6 +5637,17 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "serde_core", + "writeable 0.6.2", + "zerovec 0.11.5", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -5434,29 +5695,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-rules" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" -dependencies = [ - "proc-macro-rules-macros", - "proc-macro2", - "syn 2.0.87", -] - -[[package]] -name = "proc-macro-rules-macros" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "207fffb0fe655d1d47f6af98cc2793405e85929bdbc420d685554ff07be27ac7" -dependencies = [ - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "proc-macro2" version = "1.0.92" @@ -5504,26 +5742,6 @@ dependencies = [ "cc", ] -[[package]] -name = "ptr_meta" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "pulldown-cmark" version = "0.9.6" @@ -5641,7 +5859,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.23", + "zerocopy 0.8.27", ] [[package]] @@ -5696,9 +5914,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -5706,9 +5924,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -5812,9 +6030,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", @@ -5827,16 +6045,12 @@ dependencies = [ "hyper 1.6.0", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", @@ -5844,13 +6058,24 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", + "tower 0.5.2", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", - "windows-registry", + "webpki-roots 1.0.5", +] + +[[package]] +name = "resb" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a067ab3b5ca3b4dc307d0de9cf75f9f5e6ca9717b192b2f28a36c83e5de9e76" +dependencies = [ + "potential_utf", + "serde_core", ] [[package]] @@ -5898,14 +6123,16 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" dependencies = [ - "base64 0.21.7", "bitflags 2.9.0", + "once_cell", "serde", "serde_derive", + "typeid", + "unicode-ident", ] [[package]] @@ -5930,9 +6157,9 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.34.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e34486da88d8e051c7c0e23c3f15fd806ea8546260aa2fec247e97242ec143" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ "bitflags 2.9.0", "fallible-iterator", @@ -6123,6 +6350,7 @@ dependencies = [ "criterion", "deno_ast", "deno_broadcast_channel", + "deno_bundle_runtime", "deno_cache", "deno_console", "deno_core", @@ -6136,7 +6364,7 @@ dependencies = [ "deno_http", "deno_io", "deno_kv", - "deno_media_type", + "deno_media_type 0.2.9", "deno_napi", "deno_net", "deno_node", @@ -6172,6 +6400,7 @@ dependencies = [ "thiserror 2.0.14", "tokio", "tokio-util", + "uuid", "version-sync", "winapi", ] @@ -6280,7 +6509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.9.0", - "core-foundation", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -6317,12 +6546,19 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "seq-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" + [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -6345,11 +6581,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -6391,9 +6636,9 @@ dependencies = [ [[package]] name = "serde_v8" -version = "0.264.0" +version = "0.285.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34707712f3815e73e1c8319bba06e5bc105bb65fe812ea2e7279ffb905f6312" +checksum = "f26d546283b1182f61e75b598da17f3babde4b25e479a5cb3fbb39d26cb928fd" dependencies = [ "deno_error", "num-bigint", @@ -6560,6 +6805,9 @@ name = "smallvec" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +dependencies = [ + "serde", +] [[package]] name = "smartstring" @@ -6667,14 +6915,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "string_enum" +name = "strck" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fe66b8ee349846ce2f9557a26b8f1e74843c4a13fb381f9a3d73617a5f956a" +checksum = "42316e70da376f3d113a68d138a60d8a9883c604fe97942721ec2068dab13a9f" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "string_enum" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae36a4951ca7bd1cfd991c241584a9824a70f6aff1e7d4f693fb3f2465e4030e" dependencies = [ - "proc-macro2", "quote", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] @@ -6684,35 +6940,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72abeda133c49d7bddece6c154728f83eec8172380c80ab7096da9487e20d27c" -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] - [[package]] name = "strum" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ - "strum_macros 0.27.1", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.87", + "strum_macros", ] [[package]] @@ -6736,40 +6970,37 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "swc_allocator" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6b926f0d94bbb34031fe5449428cfa1268cdc0b31158d6ad9c97e0fc1e79dd" +checksum = "9d7eefd2c8b228a8c73056482b2ae4b3a1071fbe07638e3b55ceca8570cc48bb" dependencies = [ "allocator-api2", "bumpalo", "hashbrown 0.14.5", - "ptr_meta", "rustc-hash 2.1.1", - "triomphe", ] [[package]] name = "swc_atoms" -version = "5.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7077ba879f95406459bc0c81f3141c529b34580bc64d7ab7bd15e7118a0391" +checksum = "d4ccbe2ecad10ad7432100f878a107b1d972a8aee83ca53184d00c23a078bb8a" dependencies = [ "hstr", "once_cell", - "rustc-hash 2.1.1", "serde", ] [[package]] name = "swc_common" -version = "9.2.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56b6f5a8e5affa271b56757a93badee6f44defcd28f3ba106bb2603afe40d3d" +checksum = "259b675d633a26d24efe3802a9d88858c918e6e8f062d3222d3aa02d56a2cf4c" dependencies = [ "anyhow", "ast_node", "better_scoped_tls", - "cfg-if", + "bytes-str", "either", "from_variant", "new_debug_unreachable", @@ -6778,23 +7009,23 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "siphasher 0.3.11", - "sourcemap", - "swc_allocator", "swc_atoms", "swc_eq_ignore_macros", + "swc_sourcemap", "swc_visit", "tracing", - "unicode-width 0.1.13", + "unicode-width 0.2.2", "url", ] [[package]] name = "swc_config" -version = "3.0.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01bfcbbdea182bdda93713aeecd997749ae324686bf7944f54d128e56be4ea9" +checksum = "72e90b52ee734ded867104612218101722ad87ff4cf74fe30383bd244a533f97" dependencies = [ "anyhow", + "bytes-str", "indexmap 2.9.0", "serde", "serde_json", @@ -6803,21 +7034,21 @@ dependencies = [ [[package]] name = "swc_config_macro" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2ebd37ef52a8555c8c9be78b694d64adcb5e3bc16c928f030d82f1d65fac57" +checksum = "7b416e8ce6de17dc5ea496e10c7012b35bbc0e3fef38d2e065eed936490db0b3" dependencies = [ "proc-macro2", "quote", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] [[package]] name = "swc_ecma_ast" -version = "9.0.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0613d84468a6bb6d45d13c5a3368b37bd21f3067a089f69adac630dcb462a018" +checksum = "a573a0c72850dec8d4d8085f152d5778af35a2520c3093b242d2d1d50776da7c" dependencies = [ "bitflags 2.9.0", "is-macro", @@ -6825,7 +7056,6 @@ dependencies = [ "once_cell", "phf", "rustc-hash 2.1.1", - "scoped-tls", "serde", "string_enum", "swc_atoms", @@ -6836,9 +7066,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "11.0.0" +version = "20.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01b3de365a86b8f982cc162f257c82f84bda31d61084174a3be37e8ab15c0f4" +checksum = "ff2a6ee1ec49dda8dedeac54e4147b4e8b3f278d9bb34ab28983257a393d34ed" dependencies = [ "ascii", "compact_str", @@ -6847,42 +7077,39 @@ dependencies = [ "once_cell", "regex", "rustc-hash 2.1.1", + "ryu-js", "serde", - "sourcemap", "swc_allocator", "swc_atoms", "swc_common", "swc_ecma_ast", "swc_ecma_codegen_macros", + "swc_sourcemap", "tracing", ] [[package]] name = "swc_ecma_codegen_macros" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99e1931669a67c83e2c2b4375674f6901d1480994a76aa75b23f1389e6c5076" +checksum = "e276dc62c0a2625a560397827989c82a93fd545fcf6f7faec0935a82cc4ddbb8" dependencies = [ "proc-macro2", - "quote", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] [[package]] name = "swc_ecma_lexer" -version = "12.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d11c8e71901401b9aae2ece4946eeb7674b14b8301a53768afbbeeb0e48b599" +checksum = "5e82f7747e052c6ff6e111fa4adeb14e33b46ee6e94fe5ef717601f651db48fc" dependencies = [ - "arrayvec", "bitflags 2.9.0", "either", - "new_debug_unreachable", "num-bigint", - "num-traits", - "phf", "rustc-hash 2.1.1", + "seq-macro", "serde", "smallvec", "smartstring", @@ -6890,15 +7117,15 @@ dependencies = [ "swc_atoms", "swc_common", "swc_ecma_ast", + "swc_ecma_parser", "tracing", - "typed-arena", ] [[package]] name = "swc_ecma_loader" -version = "9.0.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb574d660c05f3483c984107452b386e45b95531bdb1253794077edc986f413" +checksum = "fbcababb48f0d46587a0a854b2c577eb3a56fa99687de558338021e93cd2c8f5" dependencies = [ "anyhow", "pathdiff", @@ -6911,45 +7138,38 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "12.0.0" +version = "27.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250786944fbc05f6484eda9213df129ccfe17226ae9ad51b62fce2f72135dbee" +checksum = "7f1a51af1a92cd4904c073b293e491bbc0918400a45d58227b34c961dd6f52d7" dependencies = [ - "arrayvec", "bitflags 2.9.0", "either", - "new_debug_unreachable", "num-bigint", - "num-traits", "phf", "rustc-hash 2.1.1", + "seq-macro", "serde", - "smallvec", "smartstring", "stacker", "swc_atoms", "swc_common", "swc_ecma_ast", - "swc_ecma_lexer", "tracing", - "typed-arena", ] [[package]] name = "swc_ecma_transforms_base" -version = "13.0.0" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6856da3da598f4da001b7e4ce225ee8970bc9d5cbaafcaf580190cf0a6031ec5" +checksum = "250f6f165578ca4fee47bd57585c1b9597c94bf4ea6591df47f2b5fa5b1883fe" dependencies = [ "better_scoped_tls", - "bitflags 2.9.0", "indexmap 2.9.0", "once_cell", "par-core", "phf", "rustc-hash 2.1.1", "serde", - "smallvec", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -6961,11 +7181,10 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "13.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f84248f82bad599d250bbcd52cb4db6ff6409f48267fd6f001302a2e9716f80" +checksum = "3d3ab35eff4a980e02d708798ae4c35bc017612292adbffe7b7b554df772fdf5" dependencies = [ - "swc_atoms", "swc_common", "swc_ecma_ast", "swc_ecma_transforms_base", @@ -6975,71 +7194,66 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_macros" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6845dfb88569f3e8cd05901505916a8ebe98be3922f94769ca49f84e8ccec8f7" +checksum = "bc777288799bf6786e5200325a56e4fbabba590264a4a48a0c70b16ad0cf5cd8" dependencies = [ "proc-macro2", "quote", - "swc_macros_common 1.0.0", + "swc_macros_common", "syn 2.0.87", ] [[package]] name = "swc_ecma_transforms_proposal" -version = "13.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193237e318421ef621c2b3958b4db174770c5280ef999f1878f2df93a2837ca6" +checksum = "c2d7748d4112c87ce1885260035e4a43cebfe7661a40174b7d77a0a04760a257" dependencies = [ "either", "rustc-hash 2.1.1", "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 = "15.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baae39c70229103a72090119887922fc5e32f934f5ca45c0423a5e65dac7e549" +checksum = "03de12e38e47ac1c96ac576f793ad37a9d7b16fbf4f2203881f89152f2498682" dependencies = [ "base64 0.22.1", - "dashmap", + "bytes-str", "indexmap 2.9.0", "once_cell", "rustc-hash 2.1.1", "serde", "sha1", "string_enum", - "swc_allocator", "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 = "15.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3c65e0b49f7e2a2bd92f1d89c9a404de27232ce00f6a4053f04bda446d50e5c" +checksum = "4408800fdeb541fabf3659db622189a0aeb386f57b6103f9294ff19dfde4f7b0" dependencies = [ - "once_cell", + "bytes-str", "rustc-hash 2.1.1", - "ryu-js", "serde", "swc_atoms", "swc_common", @@ -7052,15 +7266,14 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "13.1.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ed837406d5dbbfbf5792b1dc90964245a0cf659753d4745fe177ffebe8598b9" +checksum = "0fb99e179988cabd473779a4452ab942bcb777176983ca3cbaf22a8f056a65b0" dependencies = [ "indexmap 2.9.0", "num_cpus", "once_cell", "par-core", - "par-iter", "rustc-hash 2.1.1", "ryu-js", "swc_atoms", @@ -7068,14 +7281,13 @@ dependencies = [ "swc_ecma_ast", "swc_ecma_visit", "tracing", - "unicode-id", ] [[package]] name = "swc_ecma_visit" -version = "9.0.0" +version = "18.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249dc9eede1a4ad59a038f9cfd61ce67845bd2c1392ade3586d714e7181f3c1a" +checksum = "a9611a72a4008d62608547a394e5d72a5245413104db096d95a52368a8cc1d63" dependencies = [ "new_debug_unreachable", "num-bigint", @@ -7088,9 +7300,9 @@ dependencies = [ [[package]] name = "swc_eq_ignore_macros" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96e15288bf385ab85eb83cff7f9e2d834348da58d0a31b33bdb572e66ee413e" +checksum = "c16ce73424a6316e95e09065ba6a207eba7765496fed113702278b7711d4b632" dependencies = [ "proc-macro2", "quote", @@ -7099,9 +7311,9 @@ dependencies = [ [[package]] name = "swc_macros_common" -version = "0.3.13" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847" +checksum = "aae1efbaa74943dc5ad2a2fb16cbd78b77d7e4d63188f3c5b4df2b4dcd2faaae" dependencies = [ "proc-macro2", "quote", @@ -7109,44 +7321,50 @@ dependencies = [ ] [[package]] -name = "swc_macros_common" -version = "1.0.0" +name = "swc_sourcemap" +version = "9.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a509f56fca05b39ba6c15f3e58636c3924c78347d63853632ed2ffcb6f5a0ac7" +checksum = "de08ef00f816acdd1a58ee8a81c0e1a59eefef2093aefe5611f256fa6b64c4d7" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "base64-simd", + "bitvec", + "bytes-str", + "data-encoding", + "debugid", + "if_chain", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "unicode-id-start", + "url", ] [[package]] name = "swc_visit" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9138b6a36bbe76dd6753c4c0794f7e26480ea757bee499738bedbbb3ae3ec5f3" +checksum = "62fb71484b486c185e34d2172f0eabe7f4722742aad700f426a494bb2de232a2" dependencies = [ "either", "new_debug_unreachable", ] [[package]] -name = "swc_visit_macros" -version = "0.5.13" +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92807d840959f39c60ce8a774a3f83e8193c658068e6d270dbe0a05e40e90b41" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "Inflector", "proc-macro2", "quote", - "swc_macros_common 0.3.13", - "syn 2.0.87", + "unicode-ident", ] [[package]] name = "syn" -version = "1.0.109" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -7154,14 +7372,14 @@ dependencies = [ ] [[package]] -name = "syn" -version = "2.0.87" +name = "syn-match" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "783c4140d7ed89f37116e865b49e5a9fdd28608b9071a9dd1e158b50fc0a31fc" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "syn 2.0.87", ] [[package]] @@ -7251,6 +7469,39 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "temporal_capi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a151e402c2bdb6a3a2a2f3f225eddaead2e7ce7dd5d3fa2090deb11b17aa4ed8" +dependencies = [ + "diplomat", + "diplomat-runtime", + "icu_calendar", + "icu_locale", + "num-traits", + "temporal_rs", + "timezone_provider", + "writeable 0.6.2", + "zoneinfo64", +] + +[[package]] +name = "temporal_rs" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88afde3bd75d2fc68d77a914bece426aa08aa7649ffd0cdd4a11c3d4d33474d1" +dependencies = [ + "core_maths", + "icu_calendar", + "icu_locale", + "ixdtf", + "num-traits", + "timezone_provider", + "tinystr 0.8.2", + "writeable 0.6.2", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -7350,6 +7601,18 @@ dependencies = [ "time-core", ] +[[package]] +name = "timezone_provider" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9ba0000e9e73862f3e7ca1ff159e2ddf915c9d8bb11e38a7874760f445d993" +dependencies = [ + "tinystr 0.8.2", + "zerotrie", + "zerovec 0.11.5", + "zoneinfo64", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -7357,7 +7620,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", - "zerovec", + "zerovec 0.10.4", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "serde_core", + "zerovec 0.11.5", ] [[package]] @@ -7474,16 +7748,16 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", "futures-util", - "hashbrown 0.14.5", + "hashbrown 0.15.1", "pin-project-lite", "slab", "tokio", @@ -7603,20 +7877,23 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.1" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "async-compression", "bitflags 2.9.0", "bytes", "futures-core", + "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", + "iri-string", "pin-project-lite", "tokio", "tokio-util", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -7635,9 +7912,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -7647,9 +7924,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -7658,9 +7935,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -7718,10 +7995,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" [[package]] -name = "typed-arena" -version = "2.0.2" +name = "typeid" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" @@ -7729,47 +8006,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - [[package]] name = "unicase" version = "2.7.0" @@ -7779,12 +8015,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-id" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" - [[package]] name = "unicode-id-start" version = "1.2.0" @@ -7811,9 +8041,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -7845,25 +8075,26 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] name = "urlpattern" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +checksum = "0f805818f843b548bacc19609eb3619dd2850e54746f5cada37927393c2ef4ec" dependencies = [ + "icu_properties 2.1.2", "regex", "serde", - "unic-ucd-ident", "url", ] @@ -7903,17 +8134,18 @@ dependencies = [ [[package]] name = "v8" -version = "137.3.0" +version = "142.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33995a1fee055ff743281cde33a41f0d618ee0bdbe8bdf6859e11864499c2595" +checksum = "f566072bd76b2631d0dca1d90a766c943863b1fd6b01312281dc919816de976d" dependencies = [ - "bindgen 0.71.1", + "bindgen 0.72.1", "bitflags 2.9.0", "fslock", "gzip-header", "home", "miniz_oxide 0.8.8", "paste", + "temporal_capi", "which 6.0.1", ] @@ -8135,9 +8367,9 @@ dependencies = [ [[package]] name = "web-transport-proto" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c564e589056437e3a73383f4e0903965879087c9ee0f715e562bbf4e47c08b75" +checksum = "974fa1e325e6cc5327de8887f189a441fcff4f8eedcd31ec87f0ef0cc5283fbc" dependencies = [ "bytes", "http 1.1.0", @@ -8163,19 +8395,32 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "wgpu-core" -version = "24.0.2" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" +checksum = "8bb4c8b5db5f00e56f1f08869d870a0dff7c8bc7ebc01091fec140b0cf0211a9" dependencies = [ "arrayvec", + "bit-set", "bit-vec", "bitflags 2.9.0", + "bytemuck", "cfg_aliases", "document-features", + "hashbrown 0.16.1", "indexmap 2.9.0", "log", + "macro_rules_attribute", "naga", "once_cell", "parking_lot", @@ -8186,15 +8431,45 @@ dependencies = [ "serde", "smallvec", "thiserror 2.0.14", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] +[[package]] +name = "wgpu-core-deps-apple" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87b7b696b918f337c486bf93142454080a32a37832ba8a31e4f48221890047da" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b251c331f84feac147de3c4aa3aa45112622a95dd7ee1b74384fa0458dbd79" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ca976e72b2c9964eb243e281f6ce7f14a514e409920920dcda12ae40febaae" +dependencies = [ + "wgpu-hal", +] + [[package]] name = "wgpu-hal" -version = "24.0.2" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4317a17171dc20e6577bf606796794580accae0716a69edbc7388c86a3ec9f23" +checksum = "293080d77fdd14d6b08a67c5487dfddbf874534bb7921526db56a7b75d7e3bef" dependencies = [ "android_system_properties", "arrayvec", @@ -8203,13 +8478,14 @@ dependencies = [ "bitflags 2.9.0", "block", "bytemuck", + "cfg-if", "cfg_aliases", "core-graphics-types", "glow", "glutin_wgl_sys", - "gpu-alloc", "gpu-allocator", "gpu-descriptor", + "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", @@ -8225,23 +8501,23 @@ dependencies = [ "profiling", "range-alloc", "raw-window-handle", - "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.14", "wasm-bindgen", "web-sys", "wgpu-types", - "windows", - "windows-core", + "windows 0.62.2", + "windows-core 0.62.2", ] [[package]] name = "wgpu-types" -version = "24.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ "bitflags 2.9.0", + "bytemuck", "js-sys", "log", "serde", @@ -8342,23 +8618,68 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core", + "windows-core 0.58.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core 0.62.2", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.58.0" @@ -8370,6 +8691,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "windows-interface" version = "0.58.0" @@ -8382,14 +8714,30 @@ dependencies = [ ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link", ] [[package]] @@ -8401,16 +8749,34 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-strings" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -8469,6 +8835,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -8605,6 +8980,12 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + [[package]] name = "wtf8" version = "0.1.0" @@ -8669,7 +9050,18 @@ checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive", + "yoke-derive 0.7.4", + "zerofrom", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive 0.8.1", "zerofrom", ] @@ -8685,6 +9077,18 @@ dependencies = [ "synstructure 0.13.1", ] +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -8696,11 +9100,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.23" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "zerocopy-derive 0.8.23", + "zerocopy-derive 0.8.27", ] [[package]] @@ -8716,9 +9120,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.23" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -8766,15 +9170,38 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke 0.8.1", + "zerofrom", +] + [[package]] name = "zerovec" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" dependencies = [ - "yoke", + "yoke 0.7.4", + "zerofrom", + "zerovec-derive 0.10.3", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "serde", + "yoke 0.8.1", "zerofrom", - "zerovec-derive", + "zerovec-derive 0.11.2", ] [[package]] @@ -8788,6 +9215,30 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zoneinfo64" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2e5597efbe7c421da8a7fd396b20b571704e787c21a272eecf35dfe9d386f0" +dependencies = [ + "calendrical_calculations", + "icu_locale_core", + "potential_utf", + "resb", + "serde", +] + [[package]] name = "zune-core" version = "0.4.12" diff --git a/Cargo.toml b/Cargo.toml index 0aea2a82..ff1b7def 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,6 +58,7 @@ extra_features = ["worker", "snapshot_builder"] # (See [NodePermissions]) node_experimental = [ "deno_node", "deno_resolver", "node_resolver", "deno_npm", "deno_semver", "deno_napi", "deno_runtime", "deno_process", "deno_package_json", + "deno_bundle_runtime", "checksum", "sys_traits", "all_extensions" ] @@ -79,7 +80,7 @@ web_stub = ["webidl", "base64-simd"] # # [https://html.spec.whatwg.org/multipage/web-messaging.html] - broadcast_channel = ["deno_broadcast_channel", "web", "webidl"] + broadcast_channel = ["deno_broadcast_channel", "web", "webidl", "uuid"] # [https://w3c.github.io/ServiceWorker/#cache-interface] cache = ["deno_cache", "webidl", "web"] @@ -118,7 +119,7 @@ web_stub = ["webidl", "base64-simd"] web = [ "deno_web", "deno_tls", "deno_fetch", "deno_net", "dep:http", "deno_permissions", "deno_telemetry", "deno_fs", "webidl", "console", "url", "crypto", "url_import", "fs_import", - "hyper-util", "rustls" + "hyper-util", "rustls", "sys_traits" ] # [https://gpuweb.github.io/gpuweb/] @@ -168,12 +169,12 @@ async-trait = "^0.1.89" paste = "1.0.15" # The deno runtime itself, and the webidl extension for the web APIs -deno_core = "^0.355.0" -deno_error = "=0.7.0" -deno_features = "0.10.0" +deno_core = "^0.376.0" +deno_error = "=0.7.1" +deno_features = "^0.23.0" # For transpiling typescript -deno_ast = { version = "=0.49.0", features = ["transpiling", "cjs"] } +deno_ast = { version = "^0.52.0", features = ["transpiling", "cjs"] } deno_media_type = { version = "=0.2.9", features = ["module_specifier"] } # Runtime for async tasks @@ -185,40 +186,42 @@ hyper-util = {version = "^0.1.10", optional = true} rustls = {version = "0.23.28", optional = true} # For URL imports -# Pinned for now due to upstream issues -reqwest = { version = "=0.12.8", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } +# Upgraded to support axum 0.8+ +reqwest = { version = "^0.12.20", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } http = { version = "^1.0", optional = true } -deno_permissions = { version = "^0.72.0", optional = true } +deno_permissions = { version = "^0.85.0", optional = true } # # Dependencies for the various extension features # -deno_broadcast_channel = { version = "^0.207.0", optional = true } - -deno_cache = { version = "^0.145.0", optional = true } -deno_console = { version = "^0.213.0", optional = true } -deno_cron = { version = "^0.93.0", optional = true } -deno_crypto = { version = "^0.227.0", optional = true } -deno_fetch = { version = "^0.237.0", optional = true } -deno_ffi = { version = "^0.200.0", optional = true } -deno_fs = { version = "^0.123.0", optional = true, features = ["sync_fs"] } -deno_http = { version = "^0.211.0", optional = true } -deno_kv = { version = "^0.121.0", optional = true } -deno_net = { version = "^0.205.0", optional = true } -deno_node = { version = "^0.151.0", optional = true } -deno_tls = { version = "^0.200.0", optional = true } -deno_url = { version = "^0.213.0", optional = true } - -deno_web = { version = "^0.244.0", optional = true } -deno_webidl = { version = "^0.213.0", optional = true } -deno_webstorage = { version = "^0.208.0", optional = true } -deno_websocket = { version = "^0.218.0", optional = true } -deno_webgpu = { version = "^0.180.0", optional = true } - -deno_io = { version = "^0.123.0", optional = true } -deno_telemetry = { version = "^0.35.0", optional = true } +deno_broadcast_channel = { version = "^0.216.0", optional = true } +uuid = { version = "1.10.0", optional = true, features = ["v4"] } + +deno_bundle_runtime = { version = "^0.13.0", optional = true } +deno_cache = { version = "^0.159.0", optional = true } +deno_console = { version = "^0.222.0", optional = true } +deno_cron = { version = "^0.106.0", optional = true } +deno_crypto = { version = "^0.240.0", optional = true } +deno_fetch = { version = "^0.250.0", optional = true } +deno_ffi = { version = "^0.213.0", optional = true } +deno_fs = { version = "^0.136.0", optional = true, features = ["sync_fs"] } +deno_http = { version = "^0.224.0", optional = true } +deno_kv = { version = "^0.134.0", optional = true } +deno_net = { version = "^0.218.0", optional = true } +deno_node = { version = "^0.164.0", optional = true } +deno_tls = { version = "^0.213.0", optional = true } +deno_url = { version = "^0.222.0", optional = true } + +deno_web = { version = "^0.257.0", optional = true } +deno_webidl = { version = "^0.226.0", optional = true } +deno_webstorage = { version = "^0.221.0", optional = true } +deno_websocket = { version = "^0.231.0", optional = true } +deno_webgpu = { version = "^0.193.0", optional = true } + +deno_io = { version = "^0.136.0", optional = true } +deno_telemetry = { version = "^0.48.0", optional = true } # Dependencies for the IO feature rustyline = {version = "=13.0.0", optional = true} @@ -235,17 +238,17 @@ once_cell = {version = "^1.17.1", optional = true} base64-simd = {version = "0.8.0", optional = true} # Dependencies for the node feature -deno_resolver = { version = "^0.44.0", optional = true } -node_resolver = { version = "^0.51.0", optional = true, features = ["sync"] } -deno_runtime = { version = "^0.221.0", optional = true, features = ["exclude_runtime_main_js"] } -deno_terminal = { version = "=0.2.2", optional = true } -deno_semver = { version = "=0.9.0", optional = true } -deno_napi = { version = "^0.144.0", optional = true } -deno_npm = { version = "=0.36.0", optional = true } -deno_process = { version = "^0.28.0", optional = true } -deno_package_json = { version = "=0.15.0", optional = true } +deno_resolver = { version = "^0.57.0", optional = true } +node_resolver = { version = "^0.64.0", optional = true, features = ["sync"] } +deno_runtime = { version = "^0.234.0", optional = true, features = ["exclude_runtime_main_js"] } +deno_terminal = { version = "^0.2.3", optional = true } +deno_semver = { version = "^0.9.1", optional = true } +deno_napi = { version = "^0.157.0", optional = true } +deno_npm = { version = "^0.42.2", optional = true } +deno_process = { version = "^0.41.0", optional = true } +deno_package_json = { version = "^0.28.0", optional = true } checksum = { version = "0.2.1", optional = true } -sys_traits = { version = "=0.1.17", optional = true } +sys_traits = { version = "=0.1.17", optional = true, features = ["libc", "real", "winapi"] } [dev-dependencies] version-sync = "0.9.5" diff --git a/examples/custom_import_logic.rs b/examples/custom_import_logic.rs index 4757bd54..7623dab0 100644 --- a/examples/custom_import_logic.rs +++ b/examples/custom_import_logic.rs @@ -78,7 +78,6 @@ impl ImportProvider for MyImportProvider { specifier: &ModuleSpecifier, _referrer: Option<&ModuleSpecifier>, _is_dyn_import: bool, - _requested_module_type: deno_core::RequestedModuleType, ) -> Option> { match specifier.scheme() { // @@ -102,8 +101,13 @@ impl ImportProvider for MyImportProvider { fn main() -> Result<(), rustyscript::Error> { let mut import_provider = MyImportProvider::default(); - import_provider.add_redirect("mod_assert", "https://deno.land/std@0.224.0/assert/mod.ts")?; - import_provider.add_static_module("my-module", "export const foo = 1"); + // Add a redirect for a simple utility module + import_provider.add_redirect("colors", "https://deno.land/std@0.224.0/fmt/colors.ts")?; + // Add a static module with some test data + import_provider.add_static_module( + "my-module", + "export const foo = 1; export const bar = 'test';", + ); let mut runtime = Runtime::new(RuntimeOptions { import_provider: Some(Box::new(import_provider)), @@ -113,10 +117,17 @@ fn main() -> Result<(), rustyscript::Error> { let module = Module::new( "custom_imports.js", " - import { assertEquals } from 'redirect:mod_assert'; - import { foo } from 'static:my-module'; - - assertEquals(1, foo) + import { bold } from 'redirect:colors'; + import { foo, bar } from 'static:my-module'; + + // Test static module imports + if (foo !== 1) throw new Error('Expected foo to be 1'); + if (bar !== 'test') throw new Error('Expected bar to be test'); + + // Test redirect module import + const text = bold('Hello from custom imports!'); + console.log(text); + console.log('✓ All custom import tests passed!'); ", ); diff --git a/examples/module_loader_cache.rs b/examples/module_loader_cache.rs index 9cb8e58f..6e879d8f 100644 --- a/examples/module_loader_cache.rs +++ b/examples/module_loader_cache.rs @@ -43,7 +43,6 @@ impl ImportProvider for MemoryCache { specifier: &ModuleSpecifier, _referrer: Option<&ModuleSpecifier>, _is_dyn_import: bool, - _requested_module_type: deno_core::RequestedModuleType, ) -> Option> { // Return the source code if the module is in the cache self.get(specifier).map(Ok) diff --git a/src/error.rs b/src/error.rs index 49eb51cd..7a4eeea4 100644 --- a/src/error.rs +++ b/src/error.rs @@ -107,6 +107,12 @@ impl From for Error { } } +impl From> for Error { + fn from(err: Box) -> Self { + Self::JsError(err) + } +} + impl Error { /// Formats an error for display in a terminal /// If the error is a `JsError`, it will attempt to highlight the source line @@ -239,7 +245,7 @@ map_error!(deno_ast::TranspileError, |e| Error::Runtime(e.to_string())); map_error!(deno_core::error::CoreError, |e| { let e = e.into_kind(); match e { - CoreErrorKind::Js(js_error) => Error::JsError(Box::new(js_error)), + CoreErrorKind::Js(js_error) => Error::JsError(js_error), _ => Error::Runtime(e.to_string()), } }); @@ -273,10 +279,7 @@ map_error!(deno_core::futures::channel::oneshot::Canceled, |e| { Error::Timeout(e.to_string()) }); -#[cfg(feature = "broadcast_channel")] -map_error!(deno_broadcast_channel::BroadcastChannelError, |e| { - Error::Runtime(e.to_string()) -}); +// Note: BroadcastChannelError mapping removed - no longer exported from deno_web #[cfg(test)] mod test { diff --git a/src/ext/broadcast_channel/01_broadcast_channel.js b/src/ext/broadcast_channel/01_broadcast_channel.js new file mode 100644 index 00000000..fce68822 --- /dev/null +++ b/src/ext/broadcast_channel/01_broadcast_channel.js @@ -0,0 +1 @@ +export * from "ext:deno_web/01_broadcast_channel.js"; diff --git a/src/ext/broadcast_channel/mod.rs b/src/ext/broadcast_channel/mod.rs index b9e84f4e..9ec552cb 100644 --- a/src/ext/broadcast_channel/mod.rs +++ b/src/ext/broadcast_channel/mod.rs @@ -1,10 +1,12 @@ -use deno_broadcast_channel::InMemoryBroadcastChannel; use deno_core::{extension, Extension}; +use deno_web::InMemoryBroadcastChannel; use super::ExtensionTrait; mod wrapper; -pub use wrapper::BroadcastChannelWrapper; +pub use wrapper::{ + BroadcastChannelWrapper, IsolatedBroadcastChannel, IsolatedBroadcastChannelWrapper, +}; extension!( init_broadcast_channel, @@ -12,20 +14,30 @@ extension!( esm_entry_point = "ext:init_broadcast_channel/init_broadcast_channel.js", esm = [ dir "src/ext/broadcast_channel", "init_broadcast_channel.js" ], ); + +extension!( + deno_broadcast_channel, + deps = [deno_web], + esm = [ dir "src/ext/broadcast_channel", "01_broadcast_channel.js" ], +); + impl ExtensionTrait<()> for init_broadcast_channel { fn init((): ()) -> Extension { init_broadcast_channel::init() } } -impl ExtensionTrait for deno_broadcast_channel::deno_broadcast_channel { - fn init(channel: InMemoryBroadcastChannel) -> Extension { - deno_broadcast_channel::deno_broadcast_channel::init(channel) + +impl ExtensionTrait<()> for deno_broadcast_channel { + fn init((): ()) -> Extension { + deno_broadcast_channel::init() } } -pub fn extensions(channel: InMemoryBroadcastChannel, is_snapshot: bool) -> Vec { +// Note: broadcast_channel functionality is now integrated into deno_web +// No separate initialization is needed as it's handled by deno_web extension +pub fn extensions(_channel: InMemoryBroadcastChannel, is_snapshot: bool) -> Vec { vec![ - deno_broadcast_channel::deno_broadcast_channel::build(channel, is_snapshot), + deno_broadcast_channel::build((), is_snapshot), init_broadcast_channel::build((), is_snapshot), ] } @@ -46,6 +58,11 @@ mod test { " ); + /// This test is identical to the original test from origin/master that verified + /// JavaScript ↔ Rust bidirectional communication. + /// + /// BroadcastChannelWrapper has been restored to maintain full backward compatibility + /// with origin/master behavior. #[test] fn test_broadcast_channel() { let options = RuntimeOptions::default(); diff --git a/src/ext/broadcast_channel/wrapper.rs b/src/ext/broadcast_channel/wrapper.rs index 36cefce0..2355f351 100644 --- a/src/ext/broadcast_channel/wrapper.rs +++ b/src/ext/broadcast_channel/wrapper.rs @@ -1,34 +1,139 @@ +//! Wrapper for broadcast channel functionality +//! +//! This module provides broadcast channel wrappers for different use cases: +//! +//! ## `BroadcastChannelWrapper` - JavaScript ↔ Rust Communication (Recommended) +//! +//! This wrapper shares the same underlying channel as JavaScript's `BroadcastChannel` API, +//! enabling bidirectional communication between Rust and JavaScript. +//! +//! This is the **default and recommended** wrapper, maintaining compatibility with +//! origin/master behavior. +//! +//! ## `IsolatedBroadcastChannel` - Rust-to-Rust Communication +//! +//! An isolated channel for Rust-to-Rust communication only. +//! It does NOT share the underlying channel with JavaScript's `BroadcastChannel` API. +//! +//! Use this when you need multiple Rust components to communicate via broadcast channels +//! without involving JavaScript. +//! +//! ## Example +//! +//! ### JavaScript ↔ Rust (BroadcastChannelWrapper) +//! ```rust,ignore +//! use rustyscript::{BroadcastChannelWrapper, Runtime, RuntimeOptions}; +//! +//! let options = RuntimeOptions::default(); +//! let channel = options.extension_options.broadcast_channel.clone(); +//! +//! let mut runtime = Runtime::new(options)?; +//! let wrapper = BroadcastChannelWrapper::new(&channel, "my_channel")?; +//! +//! // Send from Rust to JavaScript +//! wrapper.send_sync(&mut runtime, "hello")?; +//! // JavaScript BroadcastChannel('my_channel') receives this message +//! ``` +//! +//! ### Rust ↔ Rust (IsolatedBroadcastChannel) +//! ```rust,ignore +//! use rustyscript::{IsolatedBroadcastChannel, Runtime, RuntimeOptions}; +//! +//! let channel = IsolatedBroadcastChannel::new(); +//! let mut runtime = Runtime::new(RuntimeOptions::default())?; +//! +//! let sub1 = channel.subscribe("my_channel")?; +//! let sub2 = channel.subscribe("my_channel")?; +//! +//! sub1.send_sync(&mut runtime, "hello")?; // sub2 receives +//! // JavaScript BroadcastChannel does NOT receive this +//! ``` + +use std::sync::Arc; use std::time::Duration; -use deno_broadcast_channel::BroadcastChannel; +use deno_core::parking_lot::Mutex; +use deno_web::InMemoryBroadcastChannel; use serde::{de::DeserializeOwned, Serialize}; +use tokio::sync::broadcast; +use tokio::sync::mpsc; +use uuid::Uuid; use crate::{big_json_args, Error, Runtime}; +/// Message type matching deno_web's internal InMemoryChannelMessage structure +#[derive(Clone, Debug)] +struct InMemoryChannelMessage { + name: Arc, + data: Arc>, + uuid: Uuid, +} + /// Helper struct to wrap a broadcast channel -/// Takes care of some of the boilerplate for serialization/deserialization -pub struct BroadcastChannelWrapper { - channel: Channel, - resource: ::Resource, +/// +/// Takes care of some of the boilerplate for serialization/deserialization. +/// Messages are serialized through the JavaScript runtime to ensure compatibility +/// with the JavaScript BroadcastChannel API. +/// +/// This wrapper shares the same underlying channel as JavaScript's `BroadcastChannel`, +/// enabling bidirectional Rust ↔ JavaScript communication. +pub struct BroadcastChannelWrapper { + sender: Arc>>, + receiver: tokio::sync::Mutex<( + broadcast::Receiver, + mpsc::UnboundedReceiver<()>, + )>, + cancel_tx: mpsc::UnboundedSender<()>, name: String, + uuid: Uuid, } -impl BroadcastChannelWrapper { + +impl BroadcastChannelWrapper { /// Create a new broadcast channel wrapper and subscribe to the channel + /// + /// This wrapper shares the same underlying channel as JavaScript's BroadcastChannel, + /// enabling bidirectional communication. + /// /// Unsubscribe is called when the wrapper is dropped /// + /// # Safety + /// This function uses unsafe code to access the private field of `InMemoryBroadcastChannel`. + /// The memory layout is stable because it's a simple tuple struct wrapping `Arc>`. + /// /// # Errors /// Will return an error if the channel cannot be subscribed to - pub fn new(channel: &Channel, name: impl ToString) -> Result { - let channel = channel.clone(); - let resource = channel.subscribe()?; + pub fn new(channel: &InMemoryBroadcastChannel, name: impl ToString) -> Result { + // SAFETY: InMemoryBroadcastChannel is repr(Rust) tuple struct with single field: + // pub struct InMemoryBroadcastChannel(Arc>>); + // + // We can access the field by transmuting to the inner type: + let sender: &Arc>> = unsafe { + &*(channel as *const InMemoryBroadcastChannel + as *const Arc>>) + }; + + let sender = sender.clone(); + let (cancel_tx, cancel_rx) = mpsc::unbounded_channel(); + let broadcast_rx = sender.lock().subscribe(); + let receiver = tokio::sync::Mutex::new((broadcast_rx, cancel_rx)); + let uuid = Uuid::new_v4(); let name = name.to_string(); + Ok(Self { - channel, - resource, + sender, + receiver, + cancel_tx, name, + uuid, }) } + /// Get the name of this channel + #[must_use] + pub fn name(&self) -> &str { + &self.name + } + /// Send a message to the channel, blocking until the message is sent /// /// # Errors @@ -43,16 +148,29 @@ impl BroadcastChannelWrapper { /// # Errors /// Will return an error if the message cannot be serialized or sent pub async fn send(&self, runtime: &mut Runtime, data: T) -> Result<(), Error> { + // Serialize through JavaScript for compatibility let data: Vec = runtime .call_function_async(None, "broadcast_serialize", &data) .await?; - self.channel - .send(&self.resource, self.name.clone(), data) - .await?; + + let message = InMemoryChannelMessage { + name: Arc::new(self.name.clone()), + data: Arc::new(data), + uuid: self.uuid, + }; + + self.sender + .lock() + .send(message) + .map_err(|e| Error::Runtime(format!("Failed to send broadcast message: {e}")))?; + Ok(()) } - /// Receive a message from the channel, waiting for a message to arrive, or until the timeout is reached + /// Receive a message from the channel, waiting for a message to arrive, + /// or until the timeout is reached + /// + /// Returns `None` if the timeout is reached or the channel is closed /// /// # Errors /// Will return an error if the message cannot be deserialized @@ -62,30 +180,266 @@ impl BroadcastChannelWrapper { runtime: &mut Runtime, timeout: Option, ) -> Result, Error> { - let msg = if let Some(timeout) = timeout { - tokio::select! { - msg = self.channel.recv(&self.resource) => msg, - () = tokio::time::sleep(timeout) => Ok(None), + let mut guard = self.receiver.lock().await; + let (broadcast_rx, cancel_rx) = &mut *guard; + + loop { + let result = if let Some(timeout) = timeout { + tokio::select! { + r = broadcast_rx.recv() => r, + () = tokio::time::sleep(timeout) => return Ok(None), + _ = cancel_rx.recv() => return Ok(None), + } + } else { + tokio::select! { + r = broadcast_rx.recv() => r, + _ = cancel_rx.recv() => return Ok(None), + } + }; + + use tokio::sync::broadcast::error::RecvError::*; + match result { + Err(Closed) => return Ok(None), + Err(Lagged(_)) => continue, // Backlogged, messages dropped - try again + Ok(message) if message.uuid == self.uuid => continue, // Self-send, skip + Ok(message) if *message.name != self.name => continue, // Different channel name + Ok(message) => { + // Deserialize through JavaScript for compatibility + let data: T = runtime + .call_function_async( + None, + "broadcast_deserialize", + big_json_args!(Vec::clone(&message.data)), + ) + .await?; + return Ok(Some(data)); + } } - } else { - self.channel.recv(&self.resource).await - }?; + } + } - let Some((name, data)) = msg else { - return Ok(None); + /// Receive a message from the channel, blocking until a message arrives, + /// or until the timeout is reached + /// + /// Returns `None` if the timeout is reached or the channel is closed + /// + /// # Errors + /// Will return an error if the message cannot be deserialized + /// or if receiving the message fails + pub fn recv_sync( + &self, + runtime: &mut Runtime, + timeout: Option, + ) -> Result, Error> { + let tokio_rt = runtime.tokio_runtime(); + tokio_rt.block_on(self.recv(runtime, timeout)) + } + + /// Close this subscription + /// + /// After calling this, `recv` will return `None` + pub fn close(&self) { + let _ = self.cancel_tx.send(()); + } +} + +impl Drop for BroadcastChannelWrapper { + fn drop(&mut self) { + self.close(); + } +} + +// ============================================================================ +// IsolatedBroadcastChannel - for Rust-to-Rust communication only +// ============================================================================ + +/// Message type for internal isolated broadcast channel communication +#[derive(Clone, Debug)] +struct IsolatedChannelMessage { + name: Arc, + data: Arc>, + sender_id: Uuid, +} + +/// An isolated broadcast channel that can be shared across multiple runtimes +/// +/// This is the backing storage for isolated broadcast channel communication. +/// Clone this to share the channel between multiple wrappers. +/// +/// **Note**: This channel is isolated and does NOT share messages with JavaScript's +/// `BroadcastChannel` API. For JavaScript integration, use `BroadcastChannelWrapper`. +#[derive(Clone)] +pub struct IsolatedBroadcastChannel { + sender: Arc>>, +} + +impl Default for IsolatedBroadcastChannel { + fn default() -> Self { + Self::new() + } +} + +impl IsolatedBroadcastChannel { + /// Create a new isolated broadcast channel + #[must_use] + pub fn new() -> Self { + let (sender, _) = broadcast::channel(256); + Self { + sender: Arc::new(Mutex::new(sender)), + } + } + + /// Subscribe to this channel, creating a wrapper for sending/receiving messages + /// + /// # Errors + /// Will return an error if the subscription cannot be created + pub fn subscribe( + &self, + name: impl ToString, + ) -> Result { + IsolatedBroadcastChannelWrapper::new(self, name) + } +} + +/// Helper struct to wrap an isolated broadcast channel subscription +/// +/// Takes care of some of the boilerplate for serialization/deserialization. +/// Messages are serialized through the JavaScript runtime to ensure compatibility. +/// +/// **Note**: This wrapper uses an isolated channel and does NOT communicate with +/// JavaScript's `BroadcastChannel` API. +pub struct IsolatedBroadcastChannelWrapper { + channel: IsolatedBroadcastChannel, + receiver: tokio::sync::Mutex<( + broadcast::Receiver, + mpsc::UnboundedReceiver<()>, + )>, + cancel_tx: mpsc::UnboundedSender<()>, + name: String, + uuid: Uuid, +} + +impl IsolatedBroadcastChannelWrapper { + /// Create a new isolated broadcast channel wrapper and subscribe to the channel + /// + /// Unsubscribe is called when the wrapper is dropped + /// + /// # Errors + /// Will return an error if the channel cannot be subscribed to + pub fn new( + channel: &IsolatedBroadcastChannel, + name: impl ToString, + ) -> Result { + let (cancel_tx, cancel_rx) = mpsc::unbounded_channel(); + let broadcast_rx = channel.sender.lock().subscribe(); + let receiver = tokio::sync::Mutex::new((broadcast_rx, cancel_rx)); + let uuid = Uuid::new_v4(); + let name = name.to_string(); + + Ok(Self { + channel: channel.clone(), + receiver, + cancel_tx, + name, + uuid, + }) + } + + /// Get the name of this channel + #[must_use] + pub fn name(&self) -> &str { + &self.name + } + + /// Send a message to the channel, blocking until the message is sent + /// + /// # Errors + /// Will return an error if the message cannot be serialized or sent + pub fn send_sync(&self, runtime: &mut Runtime, data: T) -> Result<(), Error> { + let tokio_rt = runtime.tokio_runtime(); + tokio_rt.block_on(self.send(runtime, data)) + } + + /// Send a message to the channel + /// + /// # Errors + /// Will return an error if the message cannot be serialized or sent + pub async fn send(&self, runtime: &mut Runtime, data: T) -> Result<(), Error> { + // Serialize through JavaScript for compatibility + let data: Vec = runtime + .call_function_async(None, "broadcast_serialize", &data) + .await?; + + let message = IsolatedChannelMessage { + name: Arc::new(self.name.clone()), + data: Arc::new(data), + sender_id: self.uuid, }; - if name == self.name { - let data: T = runtime - .call_function_async(None, "broadcast_deserialize", big_json_args!(data)) - .await?; - Ok(Some(data)) - } else { - Ok(None) + self.channel + .sender + .lock() + .send(message) + .map_err(|e| Error::Runtime(format!("Failed to send broadcast message: {e}")))?; + + Ok(()) + } + + /// Receive a message from the channel, waiting for a message to arrive, + /// or until the timeout is reached + /// + /// Returns `None` if the timeout is reached or the channel is closed + /// + /// # Errors + /// Will return an error if the message cannot be deserialized + /// or if receiving the message fails + pub async fn recv( + &self, + runtime: &mut Runtime, + timeout: Option, + ) -> Result, Error> { + let mut guard = self.receiver.lock().await; + let (broadcast_rx, cancel_rx) = &mut *guard; + + loop { + let result = if let Some(timeout) = timeout { + tokio::select! { + r = broadcast_rx.recv() => r, + () = tokio::time::sleep(timeout) => return Ok(None), + _ = cancel_rx.recv() => return Ok(None), + } + } else { + tokio::select! { + r = broadcast_rx.recv() => r, + _ = cancel_rx.recv() => return Ok(None), + } + }; + + use tokio::sync::broadcast::error::RecvError::*; + match result { + Err(Closed) => return Ok(None), + Err(Lagged(_)) => continue, // Backlogged, messages dropped - try again + Ok(message) if message.sender_id == self.uuid => continue, // Self-send, skip + Ok(message) if *message.name != self.name => continue, // Different channel name + Ok(message) => { + // Deserialize through JavaScript for compatibility + let data: T = runtime + .call_function_async( + None, + "broadcast_deserialize", + big_json_args!(Vec::clone(&message.data)), + ) + .await?; + return Ok(Some(data)); + } + } } } - /// Receive a message from the channel, blocking until a message arrives, or until the timeout is reached + /// Receive a message from the channel, blocking until a message arrives, + /// or until the timeout is reached + /// + /// Returns `None` if the timeout is reached or the channel is closed /// /// # Errors /// Will return an error if the message cannot be deserialized @@ -98,10 +452,96 @@ impl BroadcastChannelWrapper { let tokio_rt = runtime.tokio_runtime(); tokio_rt.block_on(self.recv(runtime, timeout)) } + + /// Close this subscription + /// + /// After calling this, `recv` will return `None` + pub fn close(&self) { + let _ = self.cancel_tx.send(()); + } } -impl Drop for BroadcastChannelWrapper { +impl Drop for IsolatedBroadcastChannelWrapper { fn drop(&mut self) { - self.channel.unsubscribe(&self.resource).ok(); + self.close(); + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{Module, Runtime, RuntimeOptions}; + + #[test] + fn test_isolated_broadcast_channel_send_recv() { + // This test demonstrates Rust-to-Rust communication via the IsolatedBroadcastChannel. + // Note: This wrapper is for Rust-side communication only. + // For JavaScript BroadcastChannel, use BroadcastChannelWrapper. + + let channel = IsolatedBroadcastChannel::new(); + + // Create a runtime for serialization + let mut runtime = Runtime::new(RuntimeOptions::default()).unwrap(); + + // Create two subscriptions on the same channel + let wrapper1 = channel.subscribe("test_channel").unwrap(); + let wrapper2 = channel.subscribe("test_channel").unwrap(); + + // Use async to send and receive + let tokio_rt = runtime.tokio_runtime(); + tokio_rt.block_on(async { + // Send from wrapper1 + let send_result: Result<(), crate::Error> = + wrapper1.send::<&str>(&mut runtime, "hello from rust").await; + send_result.unwrap(); + + // Receive from wrapper2 + let recv_result: Result, crate::Error> = wrapper2 + .recv::(&mut runtime, Some(std::time::Duration::from_secs(1))) + .await; + let received: String = recv_result.unwrap().unwrap(); + + assert_eq!(received, "hello from rust"); + }); + } + + #[test] + fn test_isolated_broadcast_channel_timeout() { + let channel = IsolatedBroadcastChannel::new(); + let mut runtime = Runtime::new(RuntimeOptions::default()).unwrap(); + let wrapper = channel.subscribe("timeout_test").unwrap(); + + // Try to receive with a short timeout - should return None + let result = wrapper + .recv_sync::(&mut runtime, Some(std::time::Duration::from_millis(100))) + .unwrap(); + + assert!(result.is_none()); + } + + #[test] + fn test_isolated_broadcast_channel_different_names() { + // Messages should only be received by subscriptions with matching names + let channel = IsolatedBroadcastChannel::new(); + let mut runtime = Runtime::new(RuntimeOptions::default()).unwrap(); + + let wrapper_a = channel.subscribe("channel_a").unwrap(); + let wrapper_b = channel.subscribe("channel_b").unwrap(); + + let tokio_rt = runtime.tokio_runtime(); + tokio_rt.block_on(async { + // Send to channel_a + let send_result: Result<(), crate::Error> = + wrapper_a.send::<&str>(&mut runtime, "message for a").await; + send_result.unwrap(); + + // wrapper_b should not receive this message (different channel name) + let recv_result: Result, crate::Error> = wrapper_b + .recv::(&mut runtime, Some(std::time::Duration::from_millis(100))) + .await; + let result: Option = recv_result.unwrap(); + + assert!(result.is_none()); + }); } } diff --git a/src/ext/console/init_console.js b/src/ext/console/init_console.js index 13aede71..68a48337 100644 --- a/src/ext/console/init_console.js +++ b/src/ext/console/init_console.js @@ -1,10 +1,38 @@ -import * as _console from 'ext:deno_console/01_console.js'; +import * as _console from 'ext:deno_web/01_console.js'; import { applyToGlobal, nonEnumerable } from 'ext:rustyscript/rustyscript.js'; + +const consoleInstance = new _console.Console((msg, level) => + globalThis.Deno.core.print(msg, level > 1), +); +for (const name of [ + "log", + "debug", + "info", + "warn", + "error", + "dir", + "dirxml", + "assert", + "clear", + "count", + "countReset", + "group", + "groupCollapsed", + "groupEnd", + "table", + "time", + "timeEnd", + "timeLog", + "trace", +]) { + const value = consoleInstance[name]; + if (typeof value === "function") { + consoleInstance[name] = value.bind(consoleInstance); + } +} applyToGlobal({ - console: nonEnumerable( - new _console.Console((msg, level) => globalThis.Deno.core.print(msg, level > 1)), - ), + console: nonEnumerable(consoleInstance), }); -globalThis.Deno.inspect = _console.inspect; \ No newline at end of file +globalThis.Deno.inspect = _console.inspect; diff --git a/src/ext/console/mod.rs b/src/ext/console/mod.rs index c3517fe0..39e44684 100644 --- a/src/ext/console/mod.rs +++ b/src/ext/console/mod.rs @@ -4,7 +4,7 @@ use super::ExtensionTrait; extension!( init_console, - deps = [rustyscript], + deps = [rustyscript, deno_web], esm_entry_point = "ext:init_console/init_console.js", esm = [ dir "src/ext/console", "init_console.js" ], ); @@ -14,15 +14,7 @@ impl ExtensionTrait<()> for init_console { init_console::init() } } -impl ExtensionTrait<()> for deno_console::deno_console { - fn init((): ()) -> Extension { - deno_console::deno_console::init() - } -} pub fn extensions(is_snapshot: bool) -> Vec { - vec![ - deno_console::deno_console::build((), is_snapshot), - init_console::build((), is_snapshot), - ] + vec![>::build((), is_snapshot)] } diff --git a/src/ext/ffi/mod.rs b/src/ext/ffi/mod.rs index a7b90fa1..a1787b39 100644 --- a/src/ext/ffi/mod.rs +++ b/src/ext/ffi/mod.rs @@ -1,8 +1,6 @@ -use std::{borrow::Cow, path::Path}; - use deno_core::{extension, Extension}; -use super::{web::PermissionsContainer, ExtensionTrait}; +use super::ExtensionTrait; extension!( init_ffi, @@ -10,14 +8,16 @@ extension!( esm_entry_point = "ext:init_ffi/init_ffi.js", esm = [ dir "src/ext/ffi", "init_ffi.js" ], ); + impl ExtensionTrait<()> for init_ffi { fn init((): ()) -> Extension { init_ffi::init() } } + impl ExtensionTrait<()> for deno_ffi::deno_ffi { fn init((): ()) -> Extension { - deno_ffi::deno_ffi::init::(None) + deno_ffi::deno_ffi::init(None) } } @@ -27,19 +27,3 @@ pub fn extensions(is_snapshot: bool) -> Vec { init_ffi::build((), is_snapshot), ] } - -impl deno_ffi::FfiPermissions for PermissionsContainer { - fn check_partial_no_path(&mut self) -> Result<(), deno_permissions::PermissionCheckError> { - self.0.check_exec()?; - Ok(()) - } - - fn check_partial_with_path<'a>( - &mut self, - path: Cow<'a, Path>, - ) -> Result, deno_permissions::PermissionCheckError> { - self.check_partial_no_path()?; - let p = self.0.check_read(path, None)?; - Ok(p) - } -} diff --git a/src/ext/fs/mod.rs b/src/ext/fs/mod.rs index 2831a458..26db4954 100644 --- a/src/ext/fs/mod.rs +++ b/src/ext/fs/mod.rs @@ -1,10 +1,7 @@ -use std::{borrow::Cow, path::Path}; - use deno_core::{extension, Extension}; use deno_fs::FileSystemRc; -use deno_permissions::{CheckedPath, PermissionCheckError, PermissionDeniedError}; -use super::{web::PermissionsContainer, ExtensionTrait}; +use super::ExtensionTrait; extension!( init_fs, @@ -12,14 +9,16 @@ extension!( esm_entry_point = "ext:init_fs/init_fs.js", esm = [ dir "src/ext/fs", "init_fs.js" ], ); + impl ExtensionTrait<()> for init_fs { fn init((): ()) -> Extension { init_fs::init() } } + impl ExtensionTrait for deno_fs::deno_fs { fn init(fs: FileSystemRc) -> Extension { - deno_fs::deno_fs::init::(fs) + deno_fs::deno_fs::init(fs) } } @@ -29,65 +28,3 @@ pub fn extensions(fs: FileSystemRc, is_snapshot: bool) -> Vec { init_fs::build((), is_snapshot), ] } - -impl deno_fs::FsPermissions for PermissionsContainer { - fn check_open<'a>( - &self, - path: Cow<'a, Path>, - access_kind: deno_permissions::OpenAccessKind, - api_name: &str, - ) -> Result, PermissionCheckError> { - let read = access_kind.is_read(); - let write = access_kind.is_write(); - - let p = self.0.check_open(true, read, write, path, api_name).ok_or( - PermissionCheckError::PermissionDenied(PermissionDeniedError { - access: api_name.to_string(), - name: "open", - }), - )?; - - Ok(CheckedPath::unsafe_new(p)) - } - - fn check_open_blind<'a>( - &self, - path: Cow<'a, Path>, - access_kind: deno_permissions::OpenAccessKind, - display: &str, - api_name: &str, - ) -> Result, PermissionCheckError> { - if access_kind.is_read() { - self.0.check_read_all(Some(api_name))?; - self.0.check_read_blind(&path, display, api_name)?; - } - - if access_kind.is_write() { - self.0.check_write_all(api_name)?; - self.0.check_write_blind(&path, display, api_name)?; - } - - Ok(CheckedPath::unsafe_new(path)) - } - - fn check_read_all(&self, api_name: &str) -> Result<(), PermissionCheckError> { - self.0.check_read_all(Some(api_name))?; - Ok(()) - } - - fn check_write_partial<'a>( - &self, - path: Cow<'a, Path>, - api_name: &str, - ) -> Result, PermissionCheckError> { - self.0.check_write_all(api_name)?; - let p = self.0.check_write_partial(path, api_name)?; - - Ok(CheckedPath::unsafe_new(p)) - } - - fn check_write_all(&self, api_name: &str) -> Result<(), PermissionCheckError> { - self.0.check_write_all(api_name)?; - Ok(()) - } -} diff --git a/src/ext/kv/mod.rs b/src/ext/kv/mod.rs index f9d13d18..6127f105 100644 --- a/src/ext/kv/mod.rs +++ b/src/ext/kv/mod.rs @@ -1,14 +1,9 @@ -use std::{borrow::Cow, path::PathBuf}; +use std::path::PathBuf; use deno_core::{extension, Extension}; -use deno_kv::{ - dynamic::MultiBackendDbHandler, - remote::{RemoteDbHandler, RemoteDbHandlerPermissions}, - sqlite::{SqliteDbHandler, SqliteDbHandlerPermissions}, -}; -use deno_permissions::{CheckedPath, PermissionCheckError, PermissionDeniedError}; +use deno_kv::{dynamic::MultiBackendDbHandler, remote::RemoteDbHandler, sqlite::SqliteDbHandler}; -use super::{web::PermissionsContainer, ExtensionTrait}; +use super::ExtensionTrait; extension!( init_kv, @@ -149,12 +144,12 @@ impl KvStore { pub fn handler(&self) -> MultiBackendDbHandler { match &self.0 { KvStoreBuilder::Local { path, rng_seed } => { - let db = SqliteDbHandler::::new(path.clone(), *rng_seed); + let db = SqliteDbHandler::new(path.clone(), *rng_seed); MultiBackendDbHandler::new(vec![(&[""], Box::new(db))]) } KvStoreBuilder::Remote { http_options } => { - let db = RemoteDbHandler::::new(http_options.clone()); + let db = RemoteDbHandler::new(http_options.clone()); MultiBackendDbHandler::new(vec![(&["https://", "http://"], Box::new(db))]) } } @@ -175,40 +170,3 @@ impl Default for KvStore { Self::new_local(None, None, KvConfig::default()) } } - -impl SqliteDbHandlerPermissions for PermissionsContainer { - fn check_open<'a>( - &mut self, - path: Cow<'a, std::path::Path>, - open_access: deno_permissions::OpenAccessKind, - api_name: &str, - ) -> Result, deno_permissions::PermissionCheckError> { - let read = open_access.is_read(); - let write = open_access.is_write(); - - let p = self.0.check_open(true, read, write, path, api_name).ok_or( - PermissionCheckError::PermissionDenied(PermissionDeniedError { - access: api_name.to_string(), - name: "open", - }), - )?; - - Ok(CheckedPath::unsafe_new(p)) - } -} - -impl RemoteDbHandlerPermissions for PermissionsContainer { - fn check_env(&mut self, var: &str) -> Result<(), deno_permissions::PermissionCheckError> { - self.0.check_env(var)?; - Ok(()) - } - - fn check_net_url( - &mut self, - url: &reqwest::Url, - api_name: &str, - ) -> Result<(), deno_permissions::PermissionCheckError> { - self.0.check_url(url, api_name)?; - Ok(()) - } -} diff --git a/src/ext/mod.rs b/src/ext/mod.rs index ff85fa48..6871da16 100644 --- a/src/ext/mod.rs +++ b/src/ext/mod.rs @@ -139,7 +139,7 @@ pub struct ExtensionOptions { /// Requires the `broadcast_channel` feature to be enabled #[cfg(feature = "broadcast_channel")] #[cfg_attr(docsrs, doc(cfg(feature = "broadcast_channel")))] - pub broadcast_channel: deno_broadcast_channel::InMemoryBroadcastChannel, + pub broadcast_channel: deno_web::InMemoryBroadcastChannel, /// Key-value store for the `deno_kv` extension /// @@ -160,9 +160,20 @@ pub struct ExtensionOptions { impl Default for ExtensionOptions { fn default() -> Self { + // Create a shared broadcast channel instance for both web and broadcast_channel extensions + #[cfg(feature = "broadcast_channel")] + let broadcast_channel = deno_web::InMemoryBroadcastChannel::default(); + Self { #[cfg(feature = "web")] - web: web::WebOptions::default(), + web: { + let mut web_options = web::WebOptions::default(); + #[cfg(feature = "broadcast_channel")] + { + web_options.broadcast_channel = broadcast_channel.clone(); + } + web_options + }, #[cfg(feature = "crypto")] crypto_seed: None, @@ -180,7 +191,7 @@ impl Default for ExtensionOptions { filesystem: std::sync::Arc::new(deno_fs::RealFs), #[cfg(feature = "broadcast_channel")] - broadcast_channel: deno_broadcast_channel::InMemoryBroadcastChannel::default(), + broadcast_channel, #[cfg(feature = "kv")] kv_store: kv::KvStore::default(), @@ -202,14 +213,18 @@ pub(crate) fn all_extensions( #[cfg(feature = "webidl")] extensions.extend(webidl::extensions(is_snapshot)); - #[cfg(feature = "console")] - extensions.extend(console::extensions(is_snapshot)); + // web or web_stub must come before url and console since they depend on deno_web + #[cfg(feature = "web")] + extensions.extend(web::extensions(options.web.clone(), is_snapshot)); + + #[cfg(all(not(feature = "web"), feature = "web_stub"))] + extensions.extend(web_stub::extensions(is_snapshot)); #[cfg(feature = "url")] extensions.extend(url::extensions(is_snapshot)); - #[cfg(feature = "web")] - extensions.extend(web::extensions(options.web.clone(), is_snapshot)); + #[cfg(feature = "console")] + extensions.extend(console::extensions(is_snapshot)); #[cfg(feature = "broadcast_channel")] extensions.extend(broadcast_channel::extensions( @@ -220,9 +235,6 @@ pub(crate) fn all_extensions( #[cfg(feature = "cache")] extensions.extend(cache::extensions(options.cache.clone(), is_snapshot)); - #[cfg(all(not(feature = "web"), feature = "web_stub"))] - extensions.extend(web_stub::extensions(is_snapshot)); - #[cfg(feature = "crypto")] extensions.extend(crypto::extensions(options.crypto_seed, is_snapshot)); @@ -236,7 +248,7 @@ pub(crate) fn all_extensions( )); #[cfg(feature = "websocket")] - extensions.extend(websocket::extensions(options.web.clone(), is_snapshot)); + extensions.extend(websocket::extensions(is_snapshot)); #[cfg(feature = "fs")] extensions.extend(fs::extensions(options.filesystem.clone(), is_snapshot)); diff --git a/src/ext/napi/mod.rs b/src/ext/napi/mod.rs index 56875c26..f0e48f1b 100644 --- a/src/ext/napi/mod.rs +++ b/src/ext/napi/mod.rs @@ -1,8 +1,6 @@ -use std::borrow::Cow; - use deno_core::{extension, Extension}; -use super::{web::PermissionsContainer, ExtensionTrait}; +use super::ExtensionTrait; extension!( init_napi, @@ -10,14 +8,16 @@ extension!( esm_entry_point = "ext:init_napi/init_napi.js", esm = [ dir "src/ext/napi", "init_napi.js" ], ); + impl ExtensionTrait<()> for init_napi { fn init((): ()) -> Extension { init_napi::init() } } + impl ExtensionTrait<()> for deno_napi::deno_napi { fn init((): ()) -> Extension { - deno_napi::deno_napi::init::(None) + deno_napi::deno_napi::init(None) } } @@ -27,13 +27,3 @@ pub fn extensions(is_snapshot: bool) -> Vec { init_napi::build((), is_snapshot), ] } - -impl deno_napi::NapiPermissions for PermissionsContainer { - fn check<'a>( - &mut self, - path: Cow<'a, std::path::Path>, - ) -> Result, deno_permissions::PermissionCheckError> { - let p = self.0.check_read(path, None)?; - Ok(p) - } -} diff --git a/src/ext/node/mod.rs b/src/ext/node/mod.rs index 76866af6..4b1a4c35 100644 --- a/src/ext/node/mod.rs +++ b/src/ext/node/mod.rs @@ -1,16 +1,11 @@ -use std::{borrow::Cow, path::Path, sync::Arc}; +use std::sync::Arc; use deno_core::{extension, Extension}; -use deno_node::NodePermissions; -use deno_permissions::{CheckedPath, PermissionCheckError, PermissionDeniedError}; use deno_resolver::npm::DenoInNpmPackageChecker; use resolvers::{RustyNpmPackageFolderResolver, RustyResolver}; use sys_traits::impls::RealSys; -use super::{ - web::{PermissionsContainer, SystemsPermissionKind}, - ExtensionTrait, -}; +use super::ExtensionTrait; mod cjs_translator; pub mod resolvers; @@ -29,12 +24,10 @@ impl ExtensionTrait<()> for init_node { } impl ExtensionTrait> for deno_node::deno_node { fn init(resolver: Arc) -> Extension { - deno_node::deno_node::init::< - PermissionsContainer, - DenoInNpmPackageChecker, - RustyNpmPackageFolderResolver, - RealSys, - >(Some(resolver.init_services()), resolver.filesystem()) + deno_node::deno_node::init::( + Some(resolver.init_services()), + resolver.filesystem(), + ) } } @@ -44,55 +37,3 @@ pub fn extensions(resolver: Arc, is_snapshot: bool) -> Vec), - api_name: &str, - ) -> Result<(), PermissionCheckError> { - self.0.check_host(host.0, host.1, api_name)?; - Ok(()) - } - - fn check_open<'a>( - &mut self, - path: Cow<'a, Path>, - open_access: deno_permissions::OpenAccessKind, - api_name: Option<&str>, - ) -> Result, PermissionCheckError> { - let read = open_access.is_read(); - let write = open_access.is_write(); - - let p = self - .0 - .check_open(true, read, write, path, api_name.unwrap_or_default()) - .ok_or(PermissionCheckError::PermissionDenied( - PermissionDeniedError { - access: api_name.unwrap_or_default().to_string(), - name: "open", - }, - ))?; - - Ok(CheckedPath::unsafe_new(p)) - } - - fn check_net_url( - &mut self, - url: &reqwest::Url, - api_name: &str, - ) -> std::result::Result<(), PermissionCheckError> { - self.0.check_url(url, api_name)?; - Ok(()) - } - - fn query_read_all(&mut self) -> bool { - self.0.check_read_all(None).is_ok() - } - - fn check_sys(&mut self, kind: &str, api_name: &str) -> Result<(), PermissionCheckError> { - let kind = SystemsPermissionKind::new(kind); - self.0.check_sys(kind, api_name)?; - Ok(()) - } -} diff --git a/src/ext/node/resolvers.rs b/src/ext/node/resolvers.rs index a1ddc14c..31a010ba 100644 --- a/src/ext/node/resolvers.rs +++ b/src/ext/node/resolvers.rs @@ -11,8 +11,8 @@ use deno_core::FastString; use deno_error::JsErrorBox; use deno_fs::{FileSystem, RealFs}; use deno_node::{NodeExtInitServices, NodeRequireLoader, NodeResolver}; -use deno_package_json::{PackageJsonCache, PackageJsonRc}; -use deno_permissions::{CheckedPath, OpenAccessKind}; +use deno_package_json::{PackageJsonCache, PackageJsonCacheResult, PackageJsonRc}; +use deno_permissions::{CheckedPath, OpenAccessKind, PermissionsContainer}; use deno_process::NpmProcessStateProvider; use deno_resolver::npm::{ ByonmInNpmPackageChecker, ByonmNpmResolver, ByonmNpmResolverCreateOptions, @@ -23,7 +23,7 @@ use node_resolver::{ analyze::{CjsModuleExportAnalyzer, NodeCodeTranslatorMode}, cache::NodeResolutionSys, errors::{ - ClosestPkgJsonError, PackageFolderResolveError, PackageFolderResolveErrorKind, + PackageFolderResolveError, PackageFolderResolveErrorKind, PackageJsonLoadError, PackageNotFoundError, }, DenoIsBuiltInNodeModuleChecker, InNpmPackageChecker, NodeConditionOptions, NodeResolutionCache, @@ -163,7 +163,7 @@ impl RustyResolver { fn check_based_on_pkg_json( &self, specifier: &ModuleSpecifier, - ) -> Result { + ) -> Result { let pjson = self.folder_resolver.pjson_resolver(); // Try to get a path from the URL @@ -203,6 +203,8 @@ impl RustyResolver { match media_type { MediaType::Wasm | MediaType::Json + | MediaType::Jsonc + | MediaType::Json5 | MediaType::Mts | MediaType::Mjs | MediaType::Html @@ -380,6 +382,17 @@ impl NpmPackageFolderResolver for RustyNpmPackageFolderResolver { .resolve_package_folder_from_package(specifier, referrer), } } + + fn resolve_types_package_folder( + &self, + _package_name: &str, + _version: Option<&deno_semver::Version>, + _referrer: Option<&UrlOrPathRef>, + ) -> Option { + // For BYONM (Bring Your Own Node Modules), types are resolved from node_modules + // This is not applicable in the current implementation + None + } } /// @@ -392,11 +405,20 @@ impl RustyPackageJsonCache { } } impl PackageJsonCache for RustyPackageJsonCache { - fn get(&self, path: &Path) -> Option { - self.0.read().ok().and_then(|i| i.get(path)) + fn get(&self, path: &Path) -> PackageJsonCacheResult { + match self.0.read().ok() { + Some(cache) => { + if cache.cache.contains_key(path) { + PackageJsonCacheResult::Hit(cache.cache.get(path).cloned().flatten()) + } else { + PackageJsonCacheResult::NotCached + } + } + None => PackageJsonCacheResult::NotCached, + } } - fn set(&self, path: PathBuf, package_json: PackageJsonRc) { + fn set(&self, path: PathBuf, package_json: Option) { if let Ok(mut i) = self.0.write() { i.set(path, package_json); } @@ -404,13 +426,14 @@ impl PackageJsonCache for RustyPackageJsonCache { } #[derive(Debug, Default, Clone)] pub struct RustyPackageJsonCacheInner { - cache: HashMap, + cache: HashMap>, } impl RustyPackageJsonCacheInner { + #[allow(dead_code)] fn get(&self, path: &Path) -> Option { - self.cache.get(path).cloned() + self.cache.get(path).cloned().flatten() } - fn set(&mut self, path: PathBuf, package_json: PackageJsonRc) { + fn set(&mut self, path: PathBuf, package_json: Option) { self.cache.insert(path, package_json); } } @@ -531,7 +554,7 @@ impl NodeRequireLoader for RequireLoader { fn ensure_read_permission<'a>( &self, - permissions: &mut dyn deno_node::NodePermissions, + permissions: &mut PermissionsContainer, path: Cow<'a, Path>, ) -> Result, JsErrorBox> { let is_in_node_modules = path @@ -547,7 +570,7 @@ impl NodeRequireLoader for RequireLoader { } } - fn is_maybe_cjs(&self, specifier: &reqwest::Url) -> Result { + fn is_maybe_cjs(&self, specifier: &reqwest::Url) -> Result { if specifier.scheme() != "file" { return Ok(false); } diff --git a/src/ext/runtime/init_runtime.js b/src/ext/runtime/init_runtime.js index 588f7a97..2d0fefef 100644 --- a/src/ext/runtime/init_runtime.js +++ b/src/ext/runtime/init_runtime.js @@ -77,7 +77,7 @@ applyToDeno({ core: readOnly(core), }); -import * as _console from 'ext:deno_console/01_console.js'; +import * as _console from 'ext:deno_web/01_console.js'; _console.setNoColorFns( () => globalThis.Deno.core.ops.op_bootstrap_no_color(), () => globalThis.Deno.core.ops.op_bootstrap_no_color(), diff --git a/src/ext/runtime/mod.rs b/src/ext/runtime/mod.rs index 43ef723b..70cbfdd0 100644 --- a/src/ext/runtime/mod.rs +++ b/src/ext/runtime/mod.rs @@ -1,5 +1,6 @@ use std::{collections::HashSet, rc::Rc, sync::Arc}; +use deno_bundle_runtime::BundleProvider; use deno_core::{ extension, v8::{BackingStore, SharedRef}, @@ -64,6 +65,12 @@ impl ExtensionTrait<()> for deno_runtime::runtime { } } +impl ExtensionTrait>> for deno_bundle_runtime::deno_bundle_runtime { + fn init(bundle_provider: Option>) -> Extension { + deno_bundle_runtime::deno_bundle_runtime::init(bundle_provider) + } +} + use deno_runtime::fmt_errors::format_js_error; use deno_runtime::ops::permissions::deno_permissions; impl ExtensionTrait<()> for deno_permissions { @@ -132,6 +139,7 @@ pub fn extensions( is_snapshot: bool, ) -> Vec { vec![ + deno_bundle_runtime::deno_bundle_runtime::build(None, is_snapshot), deno_fs_events::build((), is_snapshot), deno_bootstrap::build((), is_snapshot), deno_os::build((), is_snapshot), @@ -145,6 +153,7 @@ pub fn extensions( ] } +use deno_runtime::inspector_server::MainInspectorSessionChannel; use deno_runtime::web_worker::{WebWorker, WebWorkerOptions, WebWorkerServiceOptions}; use deno_runtime::{colors, BootstrapOptions, WorkerExecutionMode, WorkerLogLevel}; #[derive(Clone)] @@ -152,7 +161,7 @@ pub struct WebWorkerCallbackOptions { shared_array_buffer_store: Option>>, node_resolver: Arc, root_cert_store_provider: Option>, - broadcast_channel: deno_broadcast_channel::InMemoryBroadcastChannel, + broadcast_channel: deno_web::InMemoryBroadcastChannel, unsafely_ignore_certificate_errors: Option>, seed: Option, stdio: deno_io::Stdio, @@ -210,6 +219,8 @@ fn create_web_worker_callback(options: WebWorkerCallbackOptions) -> Arc Arc Arc>, - scope: &mut v8::HandleScope, + scope: &mut v8::HandleScope<'_>, ) -> Result; fn slow_args_from_v8( args: Vec>, - scope: &mut v8::HandleScope, + scope: &mut v8::HandleScope<'_>, ) -> Result { let args = Self::args_from_v8(args, scope)?; deno_core::serde_json::to_value(args).map_err(Error::from) @@ -46,16 +46,27 @@ pub trait RsCallback: 'static { /// Convert a series of `v8::Value` objects into a tuple of arguments fn decode_v8( args: v8::Global, - scope: &mut v8::HandleScope, + scope: &mut v8::HandleScope<'_>, ) -> Result { - let args = v8::Local::new(scope, args); - let args = if args.is_array() { - let args: v8::Local = v8::Local::new(scope, args).try_into()?; + // SAFETY: v8 API requires &PinnedRef but &mut HandleScope has the same layout + // We transmute to satisfy the type requirements while maintaining safety + let scope_ref = + unsafe { &*std::ptr::from_mut(scope).cast::>>() }; + // SAFETY: Object methods require HandleScope + let ctx_scope = unsafe { + &*std::ptr::from_mut(scope).cast::>>() + }; + // SAFETY: v8::Global::new requires &Isolate + let isolate = unsafe { &*std::ptr::from_mut(scope).cast::() }; + let args_local = v8::Local::new(scope_ref, args); + + let args = if args_local.is_array() { + let args: v8::Local = v8::Local::new(scope_ref, args_local).try_into()?; let len = args.length() as usize; let mut result = Vec::with_capacity(len); for i in 0..len { let index = v8::Integer::new( - scope, + scope_ref, i.try_into().map_err(|_| { Error::Runtime(format!( "Could not decode {len} arguments - use `big_json_args`" @@ -63,13 +74,13 @@ pub trait RsCallback: 'static { })?, ); let arg = args - .get(scope, index.into()) + .get(ctx_scope, index.into()) .ok_or_else(|| Error::Runtime(format!("Invalid argument at index {i}")))?; - result.push(v8::Global::new(scope, arg)); + result.push(v8::Global::new(isolate, arg)); } result } else { - vec![v8::Global::new(scope, args)] + vec![v8::Global::new(isolate, args_local)] }; Self::args_from_v8(args, scope) @@ -97,13 +108,23 @@ macro_rules! codegen_function { fn args_from_v8( args: Vec>, - scope: &mut v8::HandleScope, + scope: &mut v8::HandleScope<'_>, ) -> Result { + // SAFETY: v8 API requires PinnedRef types but HandleScope has the same layout + let scope_ref = unsafe { + &*std::ptr::from_mut(scope) + .cast::<$crate::deno_core::v8::PinnedRef<$crate::deno_core::v8::HandleScope<'_, ()>>>() + }; + let scope_mut = unsafe { + &mut *std::ptr::from_mut(scope).cast::<$crate::deno_core::v8::PinnedRef< + $crate::deno_core::v8::HandleScope<'_, $crate::deno_core::v8::Context>, + >>() + }; let mut args = args.into_iter(); $( let next = args.next().ok_or($crate::Error::Runtime(format!("Missing argument {} for {}", stringify!($n), stringify!($name))))?; - let next = $crate::deno_core::v8::Local::new(scope, next); - let $n:$t = $crate::deno_core::serde_v8::from_v8(scope, next)?; + let next = $crate::deno_core::v8::Local::new(scope_ref, next); + let $n:$t = $crate::deno_core::serde_v8::from_v8(scope_mut, next)?; )+ Ok(($($n,)+)) } diff --git a/src/ext/url/init_url.js b/src/ext/url/init_url.js index ae3a491a..4f15ae90 100644 --- a/src/ext/url/init_url.js +++ b/src/ext/url/init_url.js @@ -1,5 +1,5 @@ -import * as url from 'ext:deno_url/00_url.js'; -import * as urlPattern from 'ext:deno_url/01_urlpattern.js'; +import * as url from 'ext:deno_web/00_url.js'; +import * as urlPattern from 'ext:deno_web/01_urlpattern.js'; import { applyToGlobal, nonEnumerable } from 'ext:rustyscript/rustyscript.js'; applyToGlobal({ diff --git a/src/ext/url/mod.rs b/src/ext/url/mod.rs index cb1e3f4f..3e61b15c 100644 --- a/src/ext/url/mod.rs +++ b/src/ext/url/mod.rs @@ -4,7 +4,7 @@ use super::ExtensionTrait; extension!( init_url, - deps = [rustyscript], + deps = [rustyscript, deno_web], esm_entry_point = "ext:init_url/init_url.js", esm = [ dir "src/ext/url", "init_url.js" ], ); @@ -13,15 +13,7 @@ impl ExtensionTrait<()> for init_url { init_url::init() } } -impl ExtensionTrait<()> for deno_url::deno_url { - fn init((): ()) -> Extension { - deno_url::deno_url::init() - } -} pub fn extensions(is_snapshot: bool) -> Vec { - vec![ - deno_url::deno_url::build((), is_snapshot), - init_url::build((), is_snapshot), - ] + vec![init_url::build((), is_snapshot)] } diff --git a/src/ext/web/init_errors.js b/src/ext/web/init_errors.js index 27310819..6c0b5cf5 100644 --- a/src/ext/web/init_errors.js +++ b/src/ext/web/init_errors.js @@ -19,7 +19,7 @@ import { getStderrNoColor, inspectArgs, quoteString, -} from "ext:deno_console/01_console.js"; +} from "ext:deno_web/01_console.js"; class NotFound extends Error { constructor(msg) { @@ -347,4 +347,4 @@ globalThis_ = globalThis; primordials.ObjectSetPrototypeOf(globalThis, DedicatedWorkerGlobalScope.prototype); event.saveGlobalThisReference(globalThis); -event.setEventTargetData(globalThis); \ No newline at end of file +event.setEventTargetData(globalThis); diff --git a/src/ext/web/init_fetch.js b/src/ext/web/init_fetch.js index 53a63123..e32052d8 100644 --- a/src/ext/web/init_fetch.js +++ b/src/ext/web/init_fetch.js @@ -1,5 +1,5 @@ import * as headers from "ext:deno_fetch/20_headers.js"; -import * as formData from "ext:deno_fetch/21_formdata.js"; +import * as formData from "ext:deno_fetch/21_formdata.js"; import * as httpClient from "ext:deno_fetch/22_http_client.js"; import * as request from "ext:deno_fetch/23_request.js"; import * as response from "ext:deno_fetch/23_response.js"; diff --git a/src/ext/web/init_web.js b/src/ext/web/init_web.js index db5cce38..17c71644 100644 --- a/src/ext/web/init_web.js +++ b/src/ext/web/init_web.js @@ -16,6 +16,7 @@ import * as messagePort from 'ext:deno_web/13_message_port.js'; import * as compression from 'ext:deno_web/14_compression.js'; import * as performance from 'ext:deno_web/15_performance.js'; import * as imageData from 'ext:deno_web/16_image_data.js'; +import * as broadcastChannel from 'ext:deno_web/01_broadcast_channel.js'; import * as errors from 'ext:init_web/init_errors.js'; diff --git a/src/ext/web/mod.rs b/src/ext/web/mod.rs index 76476676..3aafdbd3 100644 --- a/src/ext/web/mod.rs +++ b/src/ext/web/mod.rs @@ -50,7 +50,7 @@ impl ExtensionTrait for deno_fetch::deno_fetch { resolver: options.resolver.clone(), }; - deno_fetch::deno_fetch::init::(options) + deno_fetch::deno_fetch::init(options) } } @@ -80,7 +80,7 @@ impl ExtensionTrait for init_net { } impl ExtensionTrait for deno_net::deno_net { fn init(options: WebOptions) -> Extension { - deno_net::deno_net::init::( + deno_net::deno_net::init( options.root_cert_store_provider.clone(), options.unsafely_ignore_certificate_errors.clone(), ) @@ -113,7 +113,14 @@ extension!( options = { permissions: Arc }, - state = |state, config| state.put(PermissionsContainer(config.permissions)), + state = |state, config| { + state.put(PermissionsContainer(config.permissions)); + if !state.has::() { + let parser = Arc::new(deno_permissions::RuntimePermissionDescriptorParser::new(sys_traits::impls::RealSys)); + let permissions = deno_permissions::PermissionsContainer::allow_all(parser); + state.put(permissions); + } + }, ); impl ExtensionTrait for init_web { fn init(options: WebOptions) -> Extension { @@ -123,7 +130,11 @@ impl ExtensionTrait for init_web { impl ExtensionTrait for deno_web::deno_web { fn init(options: WebOptions) -> Extension { - deno_web::deno_web::init::(options.blob_store, options.base_url) + deno_web::deno_web::init( + options.blob_store, + options.base_url, + options.broadcast_channel, + ) } } diff --git a/src/ext/web/options.rs b/src/ext/web/options.rs index bdf0abc7..4039a514 100644 --- a/src/ext/web/options.rs +++ b/src/ext/web/options.rs @@ -6,6 +6,28 @@ use hyper_util::client::legacy::Builder; use super::{DefaultWebPermissions, WebPermissions}; /// Options for configuring the web related extensions +/// +/// # Backward Compatibility Note +/// +/// This struct has a new field `broadcast_channel` added in version 0.8.0. +/// **Existing code using `WebOptions::default()` is not affected.** +/// +/// If you are manually constructing `WebOptions`, you need to add the new field: +/// ```rust,ignore +/// // Update your code like this: +/// let options = WebOptions { +/// permissions: my_permissions, +/// blob_store: my_blob_store, +/// broadcast_channel: deno_web::InMemoryBroadcastChannel::default(), // NEW FIELD +/// // ... other fields ... +/// }; +/// +/// // Or use the builder pattern with ..Default::default(): +/// let options = WebOptions { +/// permissions: my_permissions, +/// ..Default::default() +/// }; +/// ``` #[derive(Clone)] pub struct WebOptions { /// Base URL for some `deno_web` OPs @@ -42,6 +64,9 @@ pub struct WebOptions { /// Blob store for the web related extensions pub blob_store: Arc, + /// Broadcast channel for cross-context messaging + pub broadcast_channel: deno_web::InMemoryBroadcastChannel, + ///A callback to customize HTTP client configuration. /// /// For more info on what can be configured, see [`hyper_util::client::legacy::Builder`] @@ -67,6 +92,7 @@ impl Default for WebOptions { file_fetch_handler: std::rc::Rc::new(deno_fetch::DefaultFileFetchHandler), permissions: Arc::new(DefaultWebPermissions), blob_store: Arc::new(deno_web::BlobStore::default()), + broadcast_channel: deno_web::InMemoryBroadcastChannel::default(), client_builder_hook: None, resolver: Resolver::default(), telemetry_config: deno_telemetry::OtelConfig::default(), diff --git a/src/ext/web/permissions.rs b/src/ext/web/permissions.rs index eebf53f7..44bb67ec 100644 --- a/src/ext/web/permissions.rs +++ b/src/ext/web/permissions.rs @@ -5,12 +5,16 @@ use std::{ sync::{Arc, RwLock}, }; -pub use deno_permissions::{CheckedPath, PermissionCheckError, PermissionDeniedError}; +pub use deno_permissions::{ + CheckedPath, PermissionCheckError, PermissionDeniedError, PermissionState, +}; pub fn oops(msg: impl std::fmt::Display) -> PermissionCheckError { PermissionCheckError::PermissionDenied(PermissionDeniedError { access: msg.to_string(), name: "web", + custom_message: None, + state: PermissionState::Denied, }) } @@ -156,11 +160,11 @@ impl AllowlistWebPermissions { Self(Arc::new(RwLock::new(AllowlistWebPermissionsSet::default()))) } - fn borrow(&self) -> std::sync::RwLockReadGuard { + fn borrow(&self) -> std::sync::RwLockReadGuard<'_, AllowlistWebPermissionsSet> { self.0.read().expect("Could not lock permissions") } - fn borrow_mut(&self) -> std::sync::RwLockWriteGuard { + fn borrow_mut(&self) -> std::sync::RwLockWriteGuard<'_, AllowlistWebPermissionsSet> { self.0.write().expect("Could not lock permissions") } @@ -632,84 +636,6 @@ impl_sys_permission_kinds!( Inspector("inspector"), ); +#[allow(dead_code)] #[derive(Clone, Debug)] pub struct PermissionsContainer(pub Arc); -impl deno_web::TimersPermission for PermissionsContainer { - fn allow_hrtime(&mut self) -> bool { - self.0.allow_hrtime() - } -} -impl deno_fetch::FetchPermissions for PermissionsContainer { - fn check_net_url( - &mut self, - url: &reqwest::Url, - api_name: &str, - ) -> Result<(), PermissionCheckError> { - self.0.check_url(url, api_name)?; - Ok(()) - } - - fn check_open<'a>( - &mut self, - path: Cow<'a, Path>, - open_access: deno_permissions::OpenAccessKind, - api_name: &str, - ) -> Result, PermissionCheckError> { - let read = open_access.is_read(); - let write = open_access.is_write(); - - let p = self - .0 - .check_open(true, read, write, path, api_name) - .ok_or(oops("open"))?; - - Ok(CheckedPath::unsafe_new(p)) - } - - fn check_net_vsock( - &mut self, - cid: u32, - port: u32, - api_name: &str, - ) -> Result<(), PermissionCheckError> { - self.0.check_vsock(cid, port, api_name)?; - Ok(()) - } -} -impl deno_net::NetPermissions for PermissionsContainer { - fn check_net>( - &mut self, - host: &(T, Option), - api_name: &str, - ) -> Result<(), PermissionCheckError> { - self.0.check_host(host.0.as_ref(), host.1, api_name)?; - Ok(()) - } - - fn check_open<'a>( - &mut self, - path: Cow<'a, Path>, - open_access: deno_permissions::OpenAccessKind, - api_name: &str, - ) -> Result, PermissionCheckError> { - let read = open_access.is_read(); - let write = open_access.is_write(); - - let p = self - .0 - .check_open(true, read, write, path, api_name) - .ok_or(oops("open"))?; - - Ok(CheckedPath::unsafe_new(p)) - } - - fn check_vsock( - &mut self, - cid: u32, - port: u32, - api_name: &str, - ) -> Result<(), PermissionCheckError> { - self.0.check_vsock(cid, port, api_name)?; - Ok(()) - } -} diff --git a/src/ext/web_stub/00_url.js b/src/ext/web_stub/00_url.js new file mode 100644 index 00000000..f0285f7a --- /dev/null +++ b/src/ext/web_stub/00_url.js @@ -0,0 +1,10 @@ +// Minimal URL implementation for web_stub +// Uses the native V8 URL implementation + +// V8 has built-in URL and URLSearchParams +// We just need to export them properly + +const URL = globalThis.URL; +const URLSearchParams = globalThis.URLSearchParams; + +export { URL, URLSearchParams }; diff --git a/src/ext/web_stub/01_console.js b/src/ext/web_stub/01_console.js new file mode 100644 index 00000000..af04dd4e --- /dev/null +++ b/src/ext/web_stub/01_console.js @@ -0,0 +1,156 @@ +// Minimal console implementation for web_stub +// This provides the Console class and inspect function that init_console.js needs + +import { primordials } from "ext:core/mod.js"; +const { + ObjectAssign, + ObjectFromEntries, + ArrayPrototypeMap, + ObjectGetOwnPropertyDescriptor, +} = primordials; + +const inspectOptions = { + depth: 4, + colors: false, + iteratorLimit: 100, + maxStringLength: Infinity, +}; + +function inspect(value, options = {}) { + const opts = { ...inspectOptions, ...options }; + return formatValue(value, opts.depth, new Set()); +} + +// Creates a proxy object that filters properties for inspect +// This is used by DOMException and other objects for custom inspect +function createFilteredInspectProxy({ object, evaluate, keys }) { + if (!evaluate) { + return object; + } + const descriptors = ObjectFromEntries( + ArrayPrototypeMap(keys, (key) => { + return [key, ObjectGetOwnPropertyDescriptor(object, key) ?? { + value: object[key], + enumerable: true, + }]; + }), + ); + return ObjectAssign({}, descriptors); +} + +function formatValue(value, depth, seen) { + if (value === null) return 'null'; + if (value === undefined) return 'undefined'; + + const type = typeof value; + + if (type === 'string') return JSON.stringify(value); + if (type === 'number' || type === 'boolean') return String(value); + if (type === 'bigint') return `${value}n`; + if (type === 'symbol') return value.toString(); + if (type === 'function') return `[Function: ${value.name || 'anonymous'}]`; + + if (type === 'object') { + if (seen.has(value)) return '[Circular]'; + seen.add(value); + + if (depth <= 0) return '[Object]'; + + if (Array.isArray(value)) { + const items = value.map(v => formatValue(v, depth - 1, seen)); + return `[ ${items.join(', ')} ]`; + } + + if (value instanceof Error) { + return value.stack || value.message || String(value); + } + + if (value instanceof Date) { + return value.toISOString(); + } + + if (value instanceof RegExp) { + return value.toString(); + } + + const entries = Object.entries(value) + .map(([k, v]) => `${k}: ${formatValue(v, depth - 1, seen)}`) + .join(', '); + return `{ ${entries} }`; + } + + return String(value); +} + +class Console { + #printFn; + + constructor(printFn) { + this.#printFn = printFn; + } + + #print(level, ...args) { + const msg = args.map(a => typeof a === 'string' ? a : inspect(a)).join(' ') + '\n'; + this.#printFn(msg, level); + } + + log(...args) { this.#print(1, ...args); } + debug(...args) { this.#print(0, ...args); } + info(...args) { this.#print(1, ...args); } + warn(...args) { this.#print(2, ...args); } + error(...args) { this.#print(3, ...args); } + + dir(obj, options) { this.log(inspect(obj, options)); } + dirxml(...args) { this.log(...args); } + + assert(condition, ...args) { + if (!condition) { + this.error('Assertion failed:', ...args); + } + } + + clear() { /* no-op in stub */ } + + count(label = 'default') { + this.#counts.set(label, (this.#counts.get(label) || 0) + 1); + this.log(`${label}: ${this.#counts.get(label)}`); + } + #counts = new Map(); + + countReset(label = 'default') { + this.#counts.delete(label); + } + + group(...args) { this.log(...args); } + groupCollapsed(...args) { this.log(...args); } + groupEnd() { /* no-op */ } + + table(data) { this.log(inspect(data)); } + + time(label = 'default') { + this.#timers.set(label, performance.now()); + } + #timers = new Map(); + + timeEnd(label = 'default') { + const start = this.#timers.get(label); + if (start !== undefined) { + this.log(`${label}: ${(performance.now() - start).toFixed(3)}ms`); + this.#timers.delete(label); + } + } + + timeLog(label = 'default', ...args) { + const start = this.#timers.get(label); + if (start !== undefined) { + this.log(`${label}: ${(performance.now() - start).toFixed(3)}ms`, ...args); + } + } + + trace(...args) { + const err = new Error(); + this.log(...args, '\n', err.stack); + } +} + +export { Console, inspect, createFilteredInspectProxy }; diff --git a/src/ext/web_stub/01_dom_exception.js b/src/ext/web_stub/01_dom_exception.js index 5966cc76..ca65c271 100644 --- a/src/ext/web_stub/01_dom_exception.js +++ b/src/ext/web_stub/01_dom_exception.js @@ -15,7 +15,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { createFilteredInspectProxy } from "ext:deno_web/01_console.js"; const _name = Symbol("name"); const _message = Symbol("message"); diff --git a/src/ext/web_stub/01_urlpattern.js b/src/ext/web_stub/01_urlpattern.js new file mode 100644 index 00000000..769c4ae7 --- /dev/null +++ b/src/ext/web_stub/01_urlpattern.js @@ -0,0 +1,64 @@ +// Minimal URLPattern implementation for web_stub +// This is a simplified version that may not support all features + +class URLPattern { + #pattern; + #baseURL; + + constructor(input, baseURL) { + if (typeof input === 'string') { + this.#pattern = input; + this.#baseURL = baseURL; + } else if (typeof input === 'object' && input !== null) { + this.#pattern = input; + this.#baseURL = baseURL; + } else { + throw new TypeError('Invalid URLPattern input'); + } + } + + test(input, baseURL) { + try { + this.exec(input, baseURL); + return true; + } catch { + return false; + } + } + + exec(input, baseURL) { + // Simplified implementation - just check if URL is valid + let url; + if (typeof input === 'string') { + url = new URL(input, baseURL); + } else if (input instanceof URL) { + url = input; + } else { + return null; + } + + // Return a basic result structure + return { + inputs: [input], + protocol: { input: url.protocol.slice(0, -1), groups: {} }, + username: { input: url.username, groups: {} }, + password: { input: url.password, groups: {} }, + hostname: { input: url.hostname, groups: {} }, + port: { input: url.port, groups: {} }, + pathname: { input: url.pathname, groups: {} }, + search: { input: url.search.slice(1), groups: {} }, + hash: { input: url.hash.slice(1), groups: {} }, + }; + } + + get protocol() { return this.#pattern?.protocol ?? '*'; } + get username() { return this.#pattern?.username ?? '*'; } + get password() { return this.#pattern?.password ?? '*'; } + get hostname() { return this.#pattern?.hostname ?? '*'; } + get port() { return this.#pattern?.port ?? '*'; } + get pathname() { return this.#pattern?.pathname ?? '*'; } + get search() { return this.#pattern?.search ?? '*'; } + get hash() { return this.#pattern?.hash ?? '*'; } +} + +export { URLPattern }; diff --git a/src/ext/web_stub/mod.rs b/src/ext/web_stub/mod.rs index 906dfa05..327175d3 100644 --- a/src/ext/web_stub/mod.rs +++ b/src/ext/web_stub/mod.rs @@ -17,7 +17,7 @@ extension!( encoding::op_base64_decode, encoding::op_base64_atob, encoding::op_base64_encode, encoding::op_base64_btoa, ], esm_entry_point = "ext:deno_web/init_stub.js", - esm = [ dir "src/ext/web_stub", "init_stub.js", "01_dom_exception.js", "02_timers.js", "05_base64.js" ], + esm = [ dir "src/ext/web_stub", "init_stub.js", "00_url.js", "01_console.js", "01_dom_exception.js", "01_urlpattern.js", "02_timers.js", "05_base64.js" ], state = |state| { state.put(StartTime::default()); } diff --git a/src/ext/websocket/mod.rs b/src/ext/websocket/mod.rs index b5616490..d5cf9242 100644 --- a/src/ext/websocket/mod.rs +++ b/src/ext/websocket/mod.rs @@ -1,14 +1,6 @@ -use deno_core::{extension, url::Url, Extension}; -use deno_permissions::PermissionCheckError; +use deno_core::{extension, Extension}; -use super::{web::PermissionsContainer, web::WebOptions, ExtensionTrait}; - -impl deno_websocket::WebSocketPermissions for PermissionsContainer { - fn check_net_url(&mut self, url: &Url, api_name: &str) -> Result<(), PermissionCheckError> { - self.0.check_url(url, api_name)?; - Ok(()) - } -} +use super::ExtensionTrait; extension!( init_websocket, @@ -16,24 +8,22 @@ extension!( esm_entry_point = "ext:init_websocket/init_websocket.js", esm = [ dir "src/ext/websocket", "init_websocket.js" ], ); + impl ExtensionTrait<()> for init_websocket { fn init((): ()) -> Extension { init_websocket::init() } } -impl ExtensionTrait for deno_websocket::deno_websocket { - fn init(options: WebOptions) -> Extension { - deno_websocket::deno_websocket::init::( - options.user_agent, - options.root_cert_store_provider, - options.unsafely_ignore_certificate_errors, - ) + +impl ExtensionTrait<()> for deno_websocket::deno_websocket { + fn init((): ()) -> Extension { + deno_websocket::deno_websocket::init() } } -pub fn extensions(options: WebOptions, is_snapshot: bool) -> Vec { +pub fn extensions(is_snapshot: bool) -> Vec { vec![ - deno_websocket::deno_websocket::build(options, is_snapshot), + deno_websocket::deno_websocket::build((), is_snapshot), init_websocket::build((), is_snapshot), ] } diff --git a/src/inner_runtime.rs b/src/inner_runtime.rs index 0da2093d..967a14e1 100644 --- a/src/inner_runtime.rs +++ b/src/inner_runtime.rs @@ -19,11 +19,24 @@ use tokio_util::sync::CancellationToken; use crate::{ ext, module_loader::{LoaderOptions, RustyLoader}, - traits::{ToDefinedValue, ToModuleSpecifier, ToV8String}, + traits::{ToDefinedValue, ToModuleSpecifier}, transpiler::transpile, utilities, Error, ExtensionOptions, Module, ModuleHandle, }; +fn safe_prepare_stack_trace_callback<'s>( + scope: &mut v8::PinScope<'s, '_>, + error: v8::Local<'s, v8::Value>, + _callsites: v8::Local<'s, v8::Array>, +) -> v8::Local<'s, v8::Value> { + let message = error.to_string(scope).map_or_else( + || "Uncaught Error".to_string(), + |s| s.to_rust_string_lossy(scope), + ); + + v8::String::new(scope, &message).map_or_else(|| v8::undefined(scope).into(), Into::into) +} + /// Wrapper trait to make the `InnerRuntime` generic over the runtime types pub trait RuntimeTrait { fn try_new(options: deno_core::RuntimeOptions) -> Result @@ -82,36 +95,47 @@ impl RsAsyncFunction for F where { } -/// Decodes a set of arguments into a vector of v8 values -/// This is used to pass arguments to a javascript function -/// And is faster and more flexible than using `json_args!` -fn decode_args<'a>( +/// Decodes a set of arguments into a vector of v8 global values +/// This is used for testing argument serialization/deserialization +#[cfg(test)] +fn decode_args_to_globals( args: &impl serde::ser::Serialize, - scope: &mut v8::HandleScope<'a>, -) -> Result>, Error> { - let args = deno_core::serde_v8::to_v8(scope, args)?; - match v8::Local::::try_from(args) { - Ok(args) => { - let len = args.length(); - let mut result = Vec::with_capacity(len as usize); - for i in 0..len { - let index = v8::Integer::new( - scope, - i.try_into().map_err(|_| { - Error::Runtime(format!( - "Could not decode {len} arguments - use `big_json_args`" - )) - })?, - ); - let arg = args - .get(scope, index.into()) - .ok_or_else(|| Error::Runtime(format!("Invalid argument at index {i}")))?; - result.push(arg); + runtime: &mut JsRuntime, +) -> Result>, Error> { + // Serialize to JSON string, then parse in v8 + let json = deno_core::serde_json::to_string(args)?; + + // Use execute_script to parse the JSON and get the result + let script = format!( + "JSON.parse('{}')", + json.replace('\\', "\\\\").replace('\'', "\\'") + ); + let args = runtime.execute_script("", script)?; + + let context = runtime.main_context(); + let isolate = runtime.v8_isolate(); + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned.init(); + let context_local = v8::Local::new(&scope, context); + let context_scope = v8::ContextScope::new(&mut scope, context_local); + let args_local = v8::Local::new(&context_scope, &args); + + // Check if it's an array + if let Ok(arr) = v8::Local::::try_from(args_local) { + let len = arr.length(); + let mut result = Vec::with_capacity(len as usize); + for i in 0..len { + let index = v8::Integer::new(&context_scope, i as i32); + if let Some(arg) = arr.get(&context_scope, index.into()) { + let isolate: &v8::Isolate = &context_scope; + result.push(v8::Global::new(isolate, arg)); } - Ok(result) } - Err(_) if args.is_undefined() || args.is_null() => Ok(vec![]), - Err(_) => Ok(vec![args]), + Ok(result) + } else if args_local.is_undefined() || args_local.is_null() { + Ok(vec![]) + } else { + Ok(vec![args]) } } @@ -260,6 +284,11 @@ impl InnerRuntime { ..Default::default() })?; + deno_runtime + .rt_mut() + .v8_isolate() + .set_prepare_stack_trace_callback(safe_prepare_stack_trace_callback); + let mut feature_checker = FeatureChecker::default(); feature_checker.set_exit_cb(Box::new(|_, _| {})); deno_runtime @@ -454,17 +483,21 @@ impl InnerRuntime { /// # Returns /// A `Result` containing the non-null value extracted or an error (`Error`) pub fn get_global_value(&mut self, name: &str) -> Result, Error> { - let context = self.deno_runtime().main_context(); - let mut scope = self.deno_runtime().handle_scope(); - let global = context.open(&mut scope).global(&mut scope); - - let key = name.to_v8_string(&mut scope)?; - let value = global.get(&mut scope, key.into()); - - match value.if_defined() { - Some(v) => Ok(v8::Global::::new(&mut scope, v)), - _ => Err(Error::ValueNotFound(name.to_string())), + // Use execute_script to get the global value - this avoids scope lifetime issues + let result = self + .deno_runtime() + .execute_script("", name.to_string())?; + + // Check if the value is undefined + let isolate = self.deno_runtime().v8_isolate(); + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned.init(); + let local = v8::Local::new(&scope, &result); + if local.is_undefined() { + return Err(Error::ValueNotFound(name.to_string())); } + + Ok(result) } /// Attempt to get a value out of a module context @@ -483,15 +516,29 @@ impl InnerRuntime { let module_namespace = self .deno_runtime() .get_module_namespace(module_context.id())?; - let mut scope = self.deno_runtime().handle_scope(); - let module_namespace = module_namespace.open(&mut scope); - assert!(module_namespace.is_module_namespace_object()); - let key = name.to_v8_string(&mut scope)?; - let value = module_namespace.get(&mut scope, key.into()); + let context = self.deno_runtime().main_context(); + let isolate = self.deno_runtime().v8_isolate(); + + // Use std::pin::pin! pattern for proper scope management + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned.init(); + let context_local = v8::Local::new(&scope, context); + let context_scope = v8::ContextScope::new(&mut scope, context_local); + + let module_namespace_local = v8::Local::new(&context_scope, module_namespace); + assert!(module_namespace_local.is_module_namespace_object()); + + // Create key string directly using context_scope + let key = v8::String::new(&context_scope, name) + .ok_or_else(|| Error::V8Encoding(name.to_string()))?; + let value = module_namespace_local.get(&context_scope, key.into()); match value.if_defined() { - Some(v) => Ok(v8::Global::::new(&mut scope, v)), + Some(v) => { + let isolate: &v8::Isolate = &context_scope; + Ok(v8::Global::::new(isolate, v)) + } _ => Err(Error::ValueNotFound(name.to_string())), } } @@ -512,9 +559,15 @@ impl InnerRuntime { where T: DeserializeOwned, { - let mut scope = self.deno_runtime().handle_scope(); - let result = v8::Local::::new(&mut scope, value); - Ok(from_v8(&mut scope, result)?) + let context = self.deno_runtime().main_context(); + let isolate = self.deno_runtime().v8_isolate(); + + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + let result = v8::Local::::new(&context_scope, value); + Ok(from_v8(&mut context_scope, result)?) } pub fn get_value_ref( @@ -554,14 +607,18 @@ impl InnerRuntime { let value = self.get_value_ref(module_context, name)?; // Convert it into a function - let mut scope = self.deno_runtime().handle_scope(); - let local_value = v8::Local::::new(&mut scope, value); + let isolate = self.deno_runtime().v8_isolate(); + + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned.init(); + let local_value = v8::Local::::new(&scope, value); let f: v8::Local = local_value .try_into() .or::(Err(Error::ValueNotCallable(name.to_string())))?; // Return it as a global - Ok(v8::Global::::new(&mut scope, f)) + let isolate: &v8::Isolate = &scope; + Ok(v8::Global::::new(isolate, f)) } pub fn call_function_by_ref( @@ -570,8 +627,8 @@ impl InnerRuntime { function: &v8::Global, args: &impl serde::ser::Serialize, ) -> Result, Error> { - // Namespace, if provided - let module_namespace = if let Some(module_context) = module_context { + // Get the receiver (namespace object or undefined) + let receiver = if let Some(module_context) = module_context { Some( self.deno_runtime() .get_module_namespace(module_context.id())?, @@ -580,57 +637,71 @@ impl InnerRuntime { None }; - let mut scope = self.deno_runtime().handle_scope(); - let mut scope = v8::TryCatch::new(&mut scope); + // Get the main context and create scopes + let context = self.deno_runtime().main_context(); + let isolate = self.deno_runtime().v8_isolate(); + + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned.init(); + let context_local = v8::Local::new(&scope, &context); + let context_scope = v8::ContextScope::new(&mut scope, context_local); - // Get the namespace - // Module-level if supplied, none otherwise - let namespace: v8::Local = if let Some(namespace) = module_namespace { - v8::Local::::new(&mut scope, namespace).into() - } else { - // Create a new object to use as the namespace if none is provided - //let obj: v8::Local = v8::Object::new(&mut scope).into(); - let obj: v8::Local = v8::undefined(&mut scope).into(); - obj + // Create local handle for the function + let function_local = v8::Local::new(&context_scope, function); + + // Create the receiver (undefined or module namespace) + let recv: v8::Local = match &receiver { + Some(ns) => v8::Local::new(&context_scope, ns).into(), + None => v8::undefined(&context_scope).into(), }; - let function_instance = function.open(&mut scope); + // Serialize arguments to JSON and parse in JS + // Args should serialize to an array (tuples become arrays in serde_json) + let json_str = deno_core::serde_json::to_string(args)?; - // Prep arguments - let args = decode_args(args, &mut scope)?; + // Handle special case of empty tuple () which serializes to "null" + let args_locals: Vec> = if json_str == "null" || json_str == "[]" { + vec![] + } else { + let escaped = json_str.replace('\\', "\\\\").replace('\'', "\\'"); + let script_source = format!("JSON.parse('{escaped}')"); + let source = v8::String::new(&context_scope, &script_source) + .ok_or_else(|| Error::V8Encoding("Failed to create script source".to_string()))?; + let script = v8::Script::compile(&context_scope, source, None) + .ok_or_else(|| Error::Runtime("Failed to compile JSON parse script".to_string()))?; + let args_value = script + .run(&context_scope) + .ok_or_else(|| Error::Runtime("Failed to parse arguments".to_string()))?; + + // Check if it's an array + if args_value.is_array() { + let args_array: v8::Local = args_value.try_into().unwrap(); + let mut locals = Vec::with_capacity(args_array.length() as usize); + for i in 0..args_array.length() { + if let Some(arg) = args_array.get_index(&context_scope, i) { + locals.push(arg); + } + } + locals + } else { + // Single argument + vec![args_value] + } + }; // Call the function - let result = function_instance.call(&mut scope, namespace, &args); + let result = function_local.call(&context_scope, recv, &args_locals); + + // Handle the result match result { Some(value) => { - let value = v8::Global::new(&mut scope, value); - Ok(value) + let isolate: &v8::Isolate = &context_scope; + Ok(v8::Global::new(isolate, value)) } - None if scope.has_caught() => { - let e = scope - .message() - .ok_or_else(|| Error::Runtime("Unknown error".to_string()))?; - - let filename = e.get_script_resource_name(&mut scope); - let linenumber = e.get_line_number(&mut scope).unwrap_or_default(); - let filename = if let Some(v) = filename { - let filename = v.to_rust_string_lossy(&mut scope); - format!("{filename}:{linenumber}: ") - } else if let Some(module_context) = module_context { - let filename = module_context.module().filename().to_string_lossy(); - format!("{filename}:{linenumber}: ") - } else { - String::new() - }; - - let msg = e.get(&mut scope).to_rust_string_lossy(&mut scope); - - let s = format!("{filename}{msg}"); - Err(Error::Runtime(s)) + None => { + // Function call failed (likely an exception was thrown) + Err(Error::Runtime("Function call failed".to_string())) } - None => Err(Error::Runtime( - "Unknown error during function execution".to_string(), - )), } } @@ -699,11 +770,15 @@ impl InnerRuntime { // Try to get an entrypoint from the default export next if let Ok(default_export) = self.get_module_export_value(module_context, "default") { - let mut scope = self.deno_runtime().handle_scope(); - let default_export = v8::Local::new(&mut scope, default_export); + let isolate = self.deno_runtime().v8_isolate(); + + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned.init(); + let default_export = v8::Local::new(&scope, default_export); if default_export.is_function() { if let Ok(f) = v8::Local::::try_from(default_export) { - return Ok(Some(v8::Global::new(&mut scope, f))); + let isolate: &v8::Isolate = &scope; + return Ok(Some(v8::Global::new(isolate, f))); } } } @@ -740,6 +815,7 @@ impl InnerRuntime { // Get additional modules first for side_module in side_modules { let module_specifier = side_module.filename().to_module_specifier(&self.cwd)?; + self.module_loader.whitelist_add(&module_specifier); let (code, sourcemap) = transpile(&module_specifier, side_module.contents())?; // Now CJS translation, for node @@ -772,6 +848,7 @@ impl InnerRuntime { // Load main module if let Some(module) = main_module { let module_specifier = module.filename().to_module_specifier(&self.cwd)?; + self.module_loader.whitelist_add(&module_specifier); let (code, sourcemap) = transpile(&module_specifier, module.contents())?; // Now CJS translation, for node @@ -856,43 +933,47 @@ mod test_inner_runtime { let mut runtime = InnerRuntime::::new(RuntimeOptions::default(), CancellationToken::new()) .expect("Could not load runtime"); - let mut scope = runtime.deno_runtime.handle_scope(); // empty - let args = decode_args(&json_args!(), &mut scope).expect("Could not decode args"); + let args = decode_args_to_globals(&json_args!(), &mut runtime.deno_runtime) + .expect("Could not decode args"); assert_eq!(args.len(), 0); // single - let args = decode_args(&json_args!(2), &mut scope).expect("Could not decode args"); + let args = decode_args_to_globals(&json_args!(2), &mut runtime.deno_runtime) + .expect("Could not decode args"); assert_eq!(args.len(), 1); // single raw - let args = decode_args(&2, &mut scope).expect("Could not decode args"); + let args = + decode_args_to_globals(&2, &mut runtime.deno_runtime).expect("Could not decode args"); assert_eq!(args.len(), 1); // multiple heterogeneous - let args = decode_args(&json_args!(2, "test"), &mut scope).expect("Could not decode args"); + let args = decode_args_to_globals(&json_args!(2, "test"), &mut runtime.deno_runtime) + .expect("Could not decode args"); assert_eq!(args.len(), 2); // multiple homogeneous - let args = decode_args(&json_args!(2, 3), &mut scope).expect("Could not decode args"); + let args = decode_args_to_globals(&json_args!(2, 3), &mut runtime.deno_runtime) + .expect("Could not decode args"); assert_eq!(args.len(), 2); // 16 args - let args = decode_args( + let args = decode_args_to_globals( &(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), - &mut scope, + &mut runtime.deno_runtime, ) .expect("Could not decode args"); assert_eq!(args.len(), 16); // 32 args - let args = decode_args( + let args = decode_args_to_globals( &big_json_args!( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ), - &mut scope, + &mut runtime.deno_runtime, ) .expect("Could not decode args"); assert_eq!(args.len(), 32); @@ -1317,9 +1398,8 @@ mod test_inner_runtime { .decode_value(structure) .expect("Could not deserialize"); - let function = structure - .func - .as_global(&mut runtime.deno_runtime().handle_scope()); + let isolate = runtime.deno_runtime().v8_isolate(); + let function = structure.func.as_global(isolate); run_async_task(|| async move { let value = runtime diff --git a/src/js_value.rs b/src/js_value.rs index e39f2611..9784dbbc 100644 --- a/src/js_value.rs +++ b/src/js_value.rs @@ -3,10 +3,7 @@ //! //! [Function] and [Promise] are both specializations of [Value] providing deserialize-time type checking //! and additional utility functions for interacting with the runtime -use deno_core::{ - serde_v8::GlobalValue, - v8::{self, HandleScope}, -}; +use deno_core::{serde_v8::GlobalValue, v8}; use serde::Deserialize; /// A macro to implement the common functions for [Function], [Promise], and [Value] @@ -40,14 +37,16 @@ macro_rules! impl_v8 { /// Will return an error if the value is the wrong type /// For `Value`, this check cannot fail pub fn try_from_v8<'a, H>( - scope: &mut v8::HandleScope<'a>, + scope: &mut v8::PinScope<'a, '_>, value: v8::Global, ) -> Result where v8::Local<'a, v8::Value>: From>, { let local: v8::Local = v8::Local::new(scope, value).into(); - v8::Global::new(scope, local).try_into() + // Get isolate reference from the scope using Deref + let isolate: &v8::Isolate = scope; + v8::Global::new(isolate, local).try_into() } /// Creates a new instance of this struct from a global value @@ -161,23 +160,35 @@ pub(crate) struct V8Value( impl V8Value { /// Returns the underlying global as a local in the type configured by the type checker - pub(crate) fn as_local<'a>(&self, scope: &mut HandleScope<'a>) -> v8::Local<'a, T::Output> + pub(crate) fn as_local<'a, 'i, C>( + &self, + scope: &v8::PinnedRef<'a, v8::HandleScope<'i, C>>, + ) -> v8::Local<'a, T::Output> where v8::Local<'a, T::Output>: TryFrom>, { - let local = v8::Local::new(scope, &self.0); + // SAFETY: v8::Local::new requires HandleScope<'_, ()> but works with any context type. + // The context parameter is a phantom type marker and doesn't affect memory layout. + // We transmute the scope reference to the required type for the API call. + let scope_ref = unsafe { + &*std::ptr::from_ref(scope).cast::>>() + }; + let local = v8::Local::::new(scope_ref, &self.0); v8::Local::<'a, T::Output>::try_from(local) .ok() .expect("Failed to convert V8Value: Invalid V8TypeChecker!") } /// Returns the underlying global in the type configured by the type checker - pub(crate) fn as_global<'a>(&self, scope: &mut HandleScope<'a>) -> v8::Global + /// Note: This performs an unchecked cast - the type checker should have validated the type + pub(crate) fn as_global(&self, _isolate: &v8::Isolate) -> v8::Global where - v8::Local<'a, T::Output>: TryFrom>, + T::Output: 'static, { - let local = self.as_local(scope); - v8::Global::new(scope, local) + // SAFETY: The type checker should have validated that self.0 is of the correct type + // We use transmute to convert v8::Global to v8::Global + // This is safe because v8::Global is just a pointer wrapper + unsafe { std::mem::transmute(self.0.clone()) } } } @@ -211,9 +222,14 @@ impl Value { where T: serde::de::DeserializeOwned, { - let mut scope = runtime.deno_runtime().handle_scope(); - let local = self.0.as_local(&mut scope); - Ok(deno_core::serde_v8::from_v8(&mut scope, local)?) + let context = runtime.deno_runtime().main_context(); + let isolate = runtime.deno_runtime().v8_isolate(); + let scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = scope.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + let local = self.0.as_local(&context_scope); + Ok(deno_core::serde_v8::from_v8(&mut context_scope, local)?) } /// Contructs a new Value from a `v8::Value` global @@ -253,17 +269,30 @@ mod test { let mut runtime = Runtime::new(RuntimeOptions::default()).unwrap(); let handle = runtime.load_module(&module).unwrap(); + // Test basic value extraction let f: Value = runtime.get_value(Some(&handle), "f").unwrap(); let value: usize = f.try_into(&mut runtime).unwrap(); assert_eq!(value, 42); + // Test function extraction and conversion let g: Value = runtime.get_value(Some(&handle), "g").unwrap(); let global = g.into_v8(); - let _f = Function::try_from_v8(&mut runtime.deno_runtime().handle_scope(), global.clone()) - .unwrap(); - let f = unsafe { Function::from_v8_unchecked(global) }; - let _f = f - .into_inner() - .as_local(&mut runtime.deno_runtime().handle_scope()); + + // Test try_from_v8 with proper context scope + let context = runtime.deno_runtime().main_context(); + let isolate = runtime.deno_runtime().v8_isolate(); + let pinned = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + + // Test that we can create a Function from the global + let _f = Function::try_from_v8(&mut context_scope, global.clone()).unwrap(); + + // Test from_v8_unchecked + let f = unsafe { Function::from_v8_unchecked(global.clone()) }; + + // Test as_local with context scope + let _local = f.into_inner().as_local(&context_scope); } } diff --git a/src/js_value/function.rs b/src/js_value/function.rs index c1d4f169..1ae496e7 100644 --- a/src/js_value/function.rs +++ b/src/js_value/function.rs @@ -1,4 +1,4 @@ -use deno_core::v8::{self, HandleScope}; +use deno_core::v8; use serde::Deserialize; use super::V8Value; @@ -13,8 +13,8 @@ impl_checker!(FunctionTypeChecker, Function, is_function, |e| { }); impl Function { - pub(crate) fn as_global(&self, scope: &mut HandleScope<'_>) -> v8::Global { - self.0.as_global(scope) + pub(crate) fn as_global(&self, isolate: &v8::Isolate) -> v8::Global { + self.0.as_global(isolate) } /// Returns true if the function is async diff --git a/src/js_value/map.rs b/src/js_value/map.rs index f0473933..6d234ef9 100644 --- a/src/js_value/map.rs +++ b/src/js_value/map.rs @@ -1,4 +1,4 @@ -use deno_core::v8::{self, GetPropertyNamesArgs, HandleScope}; +use deno_core::v8::{self, GetPropertyNamesArgs}; use serde::Deserialize; use super::V8Value; @@ -21,8 +21,14 @@ impl Map { /// Gets a value from the map /// Warning: If a key is not valid UTF-8, the value may be inaccessible pub fn get(&self, key: &str, runtime: &mut crate::Runtime) -> Option { - let mut scope = runtime.deno_runtime().handle_scope(); - self.get_property_by_name(&mut scope, key) + let deno_runtime = runtime.deno_runtime(); + let context = deno_runtime.main_context(); + let isolate = deno_runtime.v8_isolate(); + let handle_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut handle_scope = handle_scope.init(); + let context_local = v8::Local::new(&handle_scope, context); + let mut context_scope = v8::ContextScope::new(&mut handle_scope, context_local); + self.get_property_by_name_impl(&mut context_scope, key) } /// Converts the map to a hashmap @@ -31,33 +37,51 @@ impl Map { &self, runtime: &mut crate::Runtime, ) -> std::collections::HashMap { - let mut scope = runtime.deno_runtime().handle_scope(); - self.to_rust_hashmap(&mut scope) + let deno_runtime = runtime.deno_runtime(); + let context = deno_runtime.main_context(); + let isolate = deno_runtime.v8_isolate(); + let handle_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut handle_scope = handle_scope.init(); + let context_local = v8::Local::new(&handle_scope, context); + let mut context_scope = v8::ContextScope::new(&mut handle_scope, context_local); + self.to_rust_hashmap_impl(&mut context_scope) } /// Returns the keys of the map /// Warning: If a key is not valid UTF-8, the value may be inaccessible pub fn keys(&self, runtime: &mut crate::Runtime) -> Vec { - let mut scope = runtime.deno_runtime().handle_scope(); - self.get_string_keys(&mut scope) + let deno_runtime = runtime.deno_runtime(); + let context = deno_runtime.main_context(); + let isolate = deno_runtime.v8_isolate(); + let handle_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut handle_scope = handle_scope.init(); + let context_local = v8::Local::new(&handle_scope, context); + let mut context_scope = v8::ContextScope::new(&mut handle_scope, context_local); + self.get_string_keys_impl(&mut context_scope) } /// Returns the number of keys in the map /// Skips any keys that are not valid UTF-8 pub fn len(&self, runtime: &mut crate::Runtime) -> usize { - let mut scope = runtime.deno_runtime().handle_scope(); - self.get_string_keys(&mut scope).len() + let deno_runtime = runtime.deno_runtime(); + let context = deno_runtime.main_context(); + let isolate = deno_runtime.v8_isolate(); + let handle_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut handle_scope = handle_scope.init(); + let context_local = v8::Local::new(&handle_scope, context); + let mut context_scope = v8::ContextScope::new(&mut handle_scope, context_local); + self.get_string_keys_impl(&mut context_scope).len() } - pub(crate) fn to_rust_hashmap( + fn to_rust_hashmap_impl( &self, - scope: &mut HandleScope, + scope: &mut v8::ContextScope, ) -> std::collections::HashMap { - let keys = self.get_string_keys(scope); + let keys = self.get_string_keys_impl(scope); let mut map = std::collections::HashMap::new(); for name in keys { - match self.get_property_by_name(scope, &name) { + match self.get_property_by_name_impl(scope, &name) { Some(value) => map.insert(name, value), None => None, }; @@ -66,20 +90,21 @@ impl Map { map } - pub(crate) fn get_property_by_name( + fn get_property_by_name_impl( &self, - scope: &mut HandleScope, + scope: &mut v8::ContextScope, name: &str, ) -> Option { let local = self.0.as_local(scope); let key = v8::String::new(scope, name).unwrap(); let value = local.get(scope, key.into())?; - let value = v8::Global::new(scope, value); + let isolate: &v8::Isolate = scope; + let value = v8::Global::new(isolate, value); Some(crate::js_value::Value::from_v8(value)) } - pub(crate) fn get_string_keys(&self, scope: &mut HandleScope) -> Vec { + fn get_string_keys_impl(&self, scope: &mut v8::ContextScope) -> Vec { let local = self.0.as_local(scope); let mut keys = vec![]; diff --git a/src/js_value/promise.rs b/src/js_value/promise.rs index a09471bb..154b2871 100644 --- a/src/js_value/promise.rs +++ b/src/js_value/promise.rs @@ -33,9 +33,14 @@ where let result = runtime .with_event_loop_future(future, PollEventLoopOptions::default()) .await?; - let mut scope = runtime.handle_scope(); - let local = v8::Local::new(&mut scope, &result); - Ok(deno_core::serde_v8::from_v8(&mut scope, local)?) + let context = runtime.main_context(); + let isolate = runtime.v8_isolate(); + let scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = scope.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + let local = v8::Local::new(&context_scope, &result); + Ok(deno_core::serde_v8::from_v8(&mut context_scope, local)?) } /// Returns a future that resolves the promise @@ -58,8 +63,13 @@ where /// Checks if the promise is pending or already resolved pub fn is_pending(&self, runtime: &mut crate::Runtime) -> bool { - let mut scope = runtime.deno_runtime().handle_scope(); - let value = self.0.as_local(&mut scope); + let context = runtime.deno_runtime().main_context(); + let isolate = runtime.deno_runtime().v8_isolate(); + let scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = scope.init(); + let context_local = v8::Local::new(&scope, context); + let context_scope = v8::ContextScope::new(&mut scope, context_local); + let value = self.0.as_local(&context_scope); value.state() == v8::PromiseState::Pending } @@ -67,19 +77,24 @@ where /// or `Poll::Ready(Ok(T))` if the promise is resolved /// or `Poll::Ready(Err(Error))` if the promise is rejected pub fn poll_promise(&self, runtime: &mut crate::Runtime) -> std::task::Poll> { - let mut scope = runtime.deno_runtime().handle_scope(); - let value = self.0.as_local(&mut scope); + let context = runtime.deno_runtime().main_context(); + let isolate = runtime.deno_runtime().v8_isolate(); + let scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = scope.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + let value = self.0.as_local(&context_scope); match value.state() { PromiseState::Pending => std::task::Poll::Pending, PromiseState::Rejected => { - let error = value.result(&mut scope); - let error = deno_core::error::JsError::from_v8_exception(&mut scope, error); + let error = value.result(&context_scope); + let error = deno_core::error::JsError::from_v8_exception(&mut context_scope, error); std::task::Poll::Ready(Err(error.into())) } PromiseState::Fulfilled => { - let result = value.result(&mut scope); - match deno_core::serde_v8::from_v8::(&mut scope, result) { + let result = value.result(&context_scope); + match deno_core::serde_v8::from_v8::(&mut context_scope, result) { Ok(value) => std::task::Poll::Ready(Ok(value)), Err(e) => std::task::Poll::Ready(Err(e.into())), } diff --git a/src/js_value/string.rs b/src/js_value/string.rs index 9958b08e..e7c749ae 100644 --- a/src/js_value/string.rs +++ b/src/js_value/string.rs @@ -1,4 +1,4 @@ -use deno_core::v8::{self, HandleScope, WriteFlags}; +use deno_core::v8::{self, WriteFlags}; use serde::Deserialize; use super::V8Value; @@ -16,8 +16,10 @@ impl String { /// Converts the string to a rust string /// Potentially lossy, if the string contains orphan UTF-16 surrogates pub fn to_string_lossy(&self, runtime: &mut crate::Runtime) -> std::string::String { - let mut scope = runtime.deno_runtime().handle_scope(); - self.to_rust_string_lossy(&mut scope) + let isolate = runtime.deno_runtime().v8_isolate(); + let pinned_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned_scope.init(); + self.to_rust_string_lossy(&scope) } /// Converts the string to a rust string @@ -31,37 +33,56 @@ impl String { /// Converts the string to a UTF-8 character buffer in the form of a `Vec` /// Excludes the null terminator pub fn to_utf8_bytes(&self, runtime: &mut crate::Runtime) -> Vec { - let mut scope = runtime.deno_runtime().handle_scope(); - self.to_utf8_buffer(&mut scope) + let isolate = runtime.deno_runtime().v8_isolate(); + let pinned_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned_scope.init(); + self.to_utf8_buffer(&scope) } /// Converts the string to a UTF-16 character buffer in the form of a `Vec` /// Excludes the null terminator pub fn to_utf16_bytes(&self, runtime: &mut crate::Runtime) -> Vec { - let mut scope = runtime.deno_runtime().handle_scope(); - self.to_utf16_buffer(&mut scope) + let isolate = runtime.deno_runtime().v8_isolate(); + let pinned_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let scope = pinned_scope.init(); + self.to_utf16_buffer(&scope) } - pub(crate) fn to_rust_string_lossy(&self, scope: &mut HandleScope<'_>) -> std::string::String { + pub(crate) fn to_rust_string_lossy( + &self, + scope: &v8::PinnedRef<'_, v8::HandleScope<'_, C>>, + ) -> std::string::String { let local = self.0.as_local(scope); - local.to_rust_string_lossy(scope) + // SAFETY: v8::String::to_rust_string_lossy requires &Isolate. PinnedRef can be transmuted to &Isolate. + let isolate = unsafe { &*std::ptr::from_ref(scope).cast::() }; + local.to_rust_string_lossy(isolate) } - pub(crate) fn to_utf16_buffer(&self, scope: &mut HandleScope<'_>) -> Vec { + pub(crate) fn to_utf16_buffer( + &self, + scope: &v8::PinnedRef<'_, v8::HandleScope<'_, C>>, + ) -> Vec { let local = self.0.as_local(scope); let u16_len = local.length(); let mut buffer = vec![0; u16_len]; - local.write_v2(scope, 0, &mut buffer, WriteFlags::empty()); + // SAFETY: v8 methods may require &Isolate. PinnedRef can be transmuted to &Isolate. + let isolate = unsafe { &*std::ptr::from_ref(scope).cast::() }; + local.write_v2(isolate, 0, &mut buffer, WriteFlags::empty()); buffer } - pub(crate) fn to_utf8_buffer(&self, scope: &mut HandleScope<'_>) -> Vec { + pub(crate) fn to_utf8_buffer( + &self, + scope: &v8::PinnedRef<'_, v8::HandleScope<'_, C>>, + ) -> Vec { let local = self.0.as_local(scope); - let u8_len = local.utf8_length(scope); + // SAFETY: v8 methods may require &Isolate. PinnedRef can be transmuted to &Isolate. + let isolate = unsafe { &*std::ptr::from_ref(scope).cast::() }; + let u8_len = local.utf8_length(isolate); let mut buffer = vec![0; u8_len]; - local.write_utf8_v2(scope, &mut buffer, WriteFlags::empty(), None); + local.write_utf8_v2(isolate, &mut buffer, WriteFlags::empty(), None); buffer } } diff --git a/src/lib.rs b/src/lib.rs index 84869459..801a1881 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -421,9 +421,16 @@ pub use module_wrapper::ModuleWrapper; pub use runtime::{Runtime, RuntimeOptions, Undefined}; pub use utilities::{evaluate, import, init_platform, resolve_path, validate}; +// Deprecated traits for backward compatibility +#[allow(deprecated)] +#[deprecated(since = "0.8.0", note = "Use v8::String::new() directly")] +pub use traits::ToV8String; + #[cfg(feature = "broadcast_channel")] #[cfg_attr(docsrs, doc(cfg(feature = "broadcast_channel")))] -pub use ext::broadcast_channel::BroadcastChannelWrapper; +pub use ext::broadcast_channel::{ + BroadcastChannelWrapper, IsolatedBroadcastChannel, IsolatedBroadcastChannelWrapper, +}; #[cfg(feature = "web")] #[cfg_attr(docsrs, doc(cfg(feature = "web")))] diff --git a/src/module_loader.rs b/src/module_loader.rs index d5ecacdd..3751cae2 100644 --- a/src/module_loader.rs +++ b/src/module_loader.rs @@ -35,6 +35,10 @@ impl RustyLoader { self.inner_mut().set_current_dir(current_dir); } + pub fn whitelist_add(&self, specifier: &ModuleSpecifier) { + self.inner_mut().whitelist_add(specifier.as_str()); + } + fn inner(&self) -> std::cell::Ref<'_, InnerRustyLoader> { self.inner.borrow() } @@ -90,18 +94,11 @@ impl ModuleLoader for RustyLoader { fn load( &self, module_specifier: &ModuleSpecifier, - maybe_referrer: Option<&ModuleSpecifier>, - is_dyn_import: bool, - requested_module_type: deno_core::RequestedModuleType, + maybe_referrer: Option<&deno_core::ModuleLoadReferrer>, + options: deno_core::ModuleLoadOptions, ) -> deno_core::ModuleLoadResponse { let inner = self.inner.clone(); - InnerRustyLoader::load( - inner, - module_specifier, - maybe_referrer, - is_dyn_import, - requested_module_type, - ) + InnerRustyLoader::load(inner, module_specifier, maybe_referrer, options) } fn get_source_map(&self, file_name: &str) -> Option> { @@ -167,8 +164,11 @@ mod test { let response = loader.load( &specifier, None, - false, - deno_core::RequestedModuleType::None, + deno_core::ModuleLoadOptions { + is_dynamic_import: false, + is_synchronous: false, + requested_module_type: deno_core::RequestedModuleType::None, + }, ); match response { ModuleLoadResponse::Async(_) => panic!("Unexpected response"), @@ -218,7 +218,6 @@ mod test { specifier: &ModuleSpecifier, _referrer: Option<&ModuleSpecifier>, _is_dyn_import: bool, - _requested_module_type: deno_core::RequestedModuleType, ) -> Option> { match specifier.as_str() { "test://1" => Some(Ok("console.log('Rock')".to_string())), @@ -249,8 +248,11 @@ mod test { let response = loader.load( &specifier, None, - false, - deno_core::RequestedModuleType::None, + deno_core::ModuleLoadOptions { + is_dynamic_import: false, + is_synchronous: false, + requested_module_type: deno_core::RequestedModuleType::None, + }, ); match response { ModuleLoadResponse::Async(future) => { @@ -266,4 +268,62 @@ mod test { } } } + + /// Test backward compatibility for ImportProvider trait + #[test] + fn test_import_provider_backward_compat() { + use deno_core::RequestedModuleType; + + // Test provider that uses the old deprecated API + struct OldStyleProvider; + impl ImportProvider for OldStyleProvider { + // Override the old method + #[allow(deprecated)] + fn import_with_type( + &mut self, + specifier: &ModuleSpecifier, + _referrer: Option<&ModuleSpecifier>, + _is_dyn_import: bool, + _requested_module_type: RequestedModuleType, + ) -> Option> { + match specifier.as_str() { + "test://old" => Some(Ok("console.log('old style')".to_string())), + _ => None, + } + } + } + + // Test provider that uses the new API + struct NewStyleProvider; + impl ImportProvider for NewStyleProvider { + fn import( + &mut self, + specifier: &ModuleSpecifier, + _referrer: Option<&ModuleSpecifier>, + _is_dyn_import: bool, + ) -> Option> { + match specifier.as_str() { + "test://new" => Some(Ok("console.log('new style')".to_string())), + _ => None, + } + } + } + + // Both should work + let mut old_provider = OldStyleProvider; + let mut new_provider = NewStyleProvider; + + let spec_old = ModuleSpecifier::parse("test://old").unwrap(); + let spec_new = ModuleSpecifier::parse("test://new").unwrap(); + + // Old style provider should work via the new interface + let result = old_provider.import(&spec_old, None, false); + assert!(result.is_some()); + assert_eq!(result.unwrap().unwrap(), "console.log('old style')"); + + // New style provider should work + let result = new_provider.import(&spec_new, None, false); + assert!(result.is_some()); + assert_eq!(result.unwrap().unwrap(), "console.log('new style')"); + } } diff --git a/src/module_loader/import_provider.rs b/src/module_loader/import_provider.rs index 8e233037..cef092dd 100644 --- a/src/module_loader/import_provider.rs +++ b/src/module_loader/import_provider.rs @@ -29,11 +29,13 @@ pub trait ImportProvider { /// Retrieve a JavaScript/TypeScript module from a given URL and return it as a string. /// + /// This is the new version without the `requested_module_type` parameter. + /// For backward compatibility, this method calls `import_with_type` by default. + /// /// # Arguments /// - `specifier`: The module specifier to import, as an absolute URL /// - `referrer`: The URL of the module that is importing the specifier /// - `is_dyn_import`: Whether the import is a dynamic import or not - /// - `requested_module_type`: The type of module being requested /// /// # Returns /// - Some(Ok(String)): The module source code as a string @@ -44,9 +46,59 @@ pub trait ImportProvider { specifier: &ModuleSpecifier, referrer: Option<&ModuleSpecifier>, is_dyn_import: bool, - requested_module_type: RequestedModuleType, ) -> Option> { - None + // Call the old method for backward compatibility + #[allow(deprecated)] + self.import_with_type( + specifier, + referrer, + is_dyn_import, + RequestedModuleType::None, + ) + } + + /// Retrieve a JavaScript/TypeScript module from a given URL (deprecated version) + /// + /// **DEPRECATED**: Use `import()` instead. The `requested_module_type` parameter is no longer used by the runtime. + /// + /// This method is kept for backward compatibility. Existing implementations should migrate to the new `import()` method. + /// + /// # Migration Guide + /// ```rust,ignore + /// // Old implementation: + /// fn import_with_type( + /// &mut self, + /// specifier: &ModuleSpecifier, + /// referrer: Option<&ModuleSpecifier>, + /// is_dyn_import: bool, + /// requested_module_type: RequestedModuleType, + /// ) -> Option> { + /// // your implementation + /// } + /// + /// // New implementation (just rename and remove the last parameter): + /// fn import( + /// &mut self, + /// specifier: &ModuleSpecifier, + /// referrer: Option<&ModuleSpecifier>, + /// is_dyn_import: bool, + /// ) -> Option> { + /// // same implementation, don't use requested_module_type + /// } + /// ``` + #[deprecated( + since = "0.8.0", + note = "Use `import()` instead. The `requested_module_type` parameter is ignored by the runtime." + )] + fn import_with_type( + &mut self, + specifier: &ModuleSpecifier, + referrer: Option<&ModuleSpecifier>, + is_dyn_import: bool, + _requested_module_type: RequestedModuleType, + ) -> Option> { + // Call the new method (ignore requested_module_type) + self.import(specifier, referrer, is_dyn_import) } /// Apply an optional transform to the source code after it has been imported diff --git a/src/module_loader/inner_loader.rs b/src/module_loader/inner_loader.rs index 04846b78..d73532ad 100644 --- a/src/module_loader/inner_loader.rs +++ b/src/module_loader/inner_loader.rs @@ -274,12 +274,12 @@ impl InnerRustyLoader { pub fn load( inner: Rc>, module_specifier: &ModuleSpecifier, - maybe_referrer: Option<&ModuleSpecifier>, - is_dyn_import: bool, - requested_module_type: deno_core::RequestedModuleType, + maybe_referrer: Option<&deno_core::ModuleLoadReferrer>, + options: deno_core::ModuleLoadOptions, ) -> deno_core::ModuleLoadResponse { let module_specifier = module_specifier.clone(); - let maybe_referrer = maybe_referrer.cloned(); + let maybe_referrer_url = maybe_referrer.map(|r| r.specifier.clone()); + let is_dyn_import = options.is_dynamic_import; // Check if the module is in the cache first if let Some(cache) = &inner.borrow().cache_provider { @@ -292,9 +292,8 @@ impl InnerRustyLoader { let provider_result = inner.borrow_mut().import_provider.as_mut().and_then(|p| { p.import( &module_specifier, - maybe_referrer.as_ref(), + maybe_referrer_url.as_ref(), is_dyn_import, - requested_module_type, ) }); if let Some(result) = provider_result { diff --git a/src/module_wrapper.rs b/src/module_wrapper.rs index 20856412..bf88805a 100644 --- a/src/module_wrapper.rs +++ b/src/module_wrapper.rs @@ -1,4 +1,4 @@ -use deno_core::{serde_json, v8::GetPropertyNamesArgs}; +use deno_core::{serde_json, v8, v8::GetPropertyNamesArgs}; use crate::{js_value::Function, Error, Module, ModuleHandle, Runtime, RuntimeOptions}; @@ -279,7 +279,7 @@ impl ModuleWrapper { .call_stored_function_immediate(Some(&self.module_context), function, args) } - /// Retrieves the names of the module's exports. + /// Retrieves the names of the module's exports. /// (Keys that are not valid UTF-8, may not work as intended due to encoding issues) /// /// # Returns @@ -291,15 +291,21 @@ impl ModuleWrapper { .deno_runtime() .get_module_namespace(self.module_context.id()) { - let mut scope = self.runtime.deno_runtime().handle_scope(); - let global = namespace.open(&mut scope); + let context = self.runtime.deno_runtime().main_context(); + let isolate = self.runtime.deno_runtime().v8_isolate(); + let pinned_scope = std::pin::pin!(v8::HandleScope::new(isolate)); + let mut scope = pinned_scope.init(); + let context_local = v8::Local::new(&scope, context); + let mut context_scope = v8::ContextScope::new(&mut scope, context_local); + + let global = v8::Local::new(&context_scope, namespace); if let Some(keys_obj) = - global.get_property_names(&mut scope, GetPropertyNamesArgs::default()) + global.get_property_names(&context_scope, GetPropertyNamesArgs::default()) { for i in 0..keys_obj.length() { - if let Ok(key_index) = deno_core::serde_v8::to_v8(&mut scope, i) { - if let Some(key_name_v8) = keys_obj.get(&mut scope, key_index) { - let name = key_name_v8.to_rust_string_lossy(&mut scope); + if let Ok(key_index) = deno_core::serde_v8::to_v8(&mut context_scope, i) { + if let Some(key_name_v8) = keys_obj.get(&context_scope, key_index) { + let name = key_name_v8.to_rust_string_lossy(&context_scope); keys.push(name); } } diff --git a/src/runtime.rs b/src/runtime.rs index a5be9006..10d5c1fa 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -46,7 +46,7 @@ impl Runtime { /// A `Result` containing either the initialized runtime instance on success (`Ok`) or an error on failure (`Err`). /// /// # Example - /// ```rust + /// ```no_run /// use rustyscript::{ json_args, Runtime, RuntimeOptions, Module }; /// use std::time::Duration; /// @@ -230,7 +230,7 @@ impl Runtime { } /// Remove and return a value from the state, if one exists - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime }; /// /// # fn main() -> Result<(), rustyscript::Error> { @@ -254,7 +254,7 @@ impl Runtime { /// # Errors /// Can fail if the inner state cannot be borrowed mutably /// - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime }; /// /// # fn main() -> Result<(), rustyscript::Error> { @@ -278,7 +278,7 @@ impl Runtime { /// # Errors /// Since this function borrows the state, it can fail if the state cannot be borrowed mutably /// - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime, Module, serde_json::Value }; /// /// # fn main() -> Result<(), rustyscript::Error> { @@ -307,7 +307,7 @@ impl Runtime { /// # Errors /// Since this function borrows the state, it can fail if the state cannot be borrowed mutably /// - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime, Module, serde_json::Value, async_callback, Error }; /// /// # fn main() -> Result<(), rustyscript::Error> { @@ -358,7 +358,7 @@ impl Runtime { /// Can fail if the expression cannot be evaluated, or if the result cannot be deserialized into the requested type /// /// # Example - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime, Error }; /// /// # fn main() -> Result<(), Error> { @@ -491,7 +491,8 @@ impl Runtime { where T: serde::de::DeserializeOwned, { - let function = function.as_global(&mut self.deno_runtime().handle_scope()); + let isolate = self.deno_runtime().v8_isolate(); + let function = function.as_global(isolate); let result = self .inner .call_function_by_ref(module_context, &function, args)?; @@ -564,7 +565,8 @@ impl Runtime { where T: deno_core::serde::de::DeserializeOwned, { - let function = function.as_global(&mut self.deno_runtime().handle_scope()); + let isolate = self.deno_runtime().v8_isolate(); + let function = function.as_global(isolate); let result = self .inner .call_function_by_ref(module_context, &function, args)?; @@ -633,7 +635,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{ json_args, Runtime, Module, Error }; /// /// # fn main() -> Result<(), Error> { @@ -682,7 +684,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{ json_args, Runtime, Module, Error }; /// /// # fn main() -> Result<(), Error> { @@ -728,7 +730,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime, Module, Error }; /// /// # fn main() -> Result<(), Error> { @@ -800,7 +802,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{ Runtime, Module, Error }; /// /// # fn main() -> Result<(), Error> { @@ -842,7 +844,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// // Create a module with filename and contents /// use rustyscript::{Runtime, Module, Error}; /// @@ -908,7 +910,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// // Create a module with filename and contents /// use rustyscript::{Runtime, Module, Error}; /// @@ -983,7 +985,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{json_args, Runtime, Module, Error}; /// /// # fn main() -> Result<(), Error> { @@ -1069,7 +1071,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// use rustyscript::{json_args, Runtime, Module, Error}; /// /// # fn main() -> Result<(), Error> { @@ -1122,7 +1124,7 @@ impl Runtime { /// /// # Example /// - /// ```rust + /// ```no_run /// // Create a module with filename and contents /// use rustyscript::{json_args, Runtime, Module, Error}; /// diff --git a/src/runtime_builder.rs b/src/runtime_builder.rs index 84abd5a1..8cb5a2a7 100644 --- a/src/runtime_builder.rs +++ b/src/runtime_builder.rs @@ -5,7 +5,7 @@ use crate::{module_loader::ImportProvider, Error, RuntimeOptions}; /// Just a helper wrapper around `RuntimeOptions` for `Runtime` and `SnapshotBuilder` /// /// # Example -/// ```rust +/// ```no_run /// use rustyscript::RuntimeBuilder; /// /// let runtime = RuntimeBuilder::new() @@ -162,10 +162,7 @@ impl RuntimeBuilder { #[cfg(feature = "broadcast_channel")] #[cfg_attr(docsrs, doc(cfg(feature = "broadcast_channel")))] #[must_use] - pub fn with_broadcast_channel( - mut self, - channel: deno_broadcast_channel::InMemoryBroadcastChannel, - ) -> Self { + pub fn with_broadcast_channel(mut self, channel: deno_web::InMemoryBroadcastChannel) -> Self { self.0.extension_options.broadcast_channel = channel; self } diff --git a/src/traits.rs b/src/traits.rs index e0e73d67..43dfb69a 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -35,19 +35,51 @@ impl> ToModuleSpecifier for T { } } +/// Convert a string to a V8 string +/// +/// **DEPRECATED**: This trait is deprecated and may be removed in a future version. +/// Use `v8::String::new(scope, string)` directly instead. +/// +/// # Migration Guide +/// ```rust,ignore +/// // Old code: +/// use rustyscript::ToV8String; +/// let v8_str = my_string.to_v8_string(scope)?; +/// +/// // New code: +/// let v8_str = v8::String::new(scope, my_string) +/// .ok_or_else(|| Error::V8Encoding(my_string.to_string()))?; +/// ``` +#[deprecated( + since = "0.8.0", + note = "Use v8::String::new() directly. This trait will be removed in a future version." +)] pub trait ToV8String { + /// Convert this value to a V8 string + /// + /// # Errors + /// Returns an error if the string cannot be encoded as a V8 string fn to_v8_string<'a>( &self, scope: &mut HandleScope<'a>, ) -> Result, Error>; } +#[allow(deprecated)] impl ToV8String for str { fn to_v8_string<'a>( &self, scope: &mut HandleScope<'a>, ) -> Result, Error> { - v8::String::new(scope, self).ok_or(Error::V8Encoding(self.to_string())) + // SAFETY: The V8 API requires &PinnedRef but we have &mut HandleScope. + // This is safe because the HandleScope is already on the stack and pinned. + // This pattern is used throughout the codebase for V8 API compatibility. + let scope_ref: &v8::PinnedRef> = unsafe { + std::mem::transmute::<&HandleScope<'a>, &v8::PinnedRef>>( + std::ptr::from_mut(scope).as_ref().unwrap(), + ) + }; + v8::String::new(scope_ref, self).ok_or_else(|| Error::V8Encoding(self.to_string())) } } @@ -60,3 +92,7 @@ impl<'a> ToDefinedValue> for Option Date: Sun, 18 Jan 2026 16:48:32 +0800 Subject: [PATCH 2/4] test: add BorrowMutError regression test --- examples/test_borrow_mut_error.rs | 93 +++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 examples/test_borrow_mut_error.rs diff --git a/examples/test_borrow_mut_error.rs b/examples/test_borrow_mut_error.rs new file mode 100644 index 00000000..60ba2a0c --- /dev/null +++ b/examples/test_borrow_mut_error.rs @@ -0,0 +1,93 @@ +// This example tests for the BorrowMutError bug in deno_core 0.376.0 +// +// Issue: When executing JavaScript that throws a ReferenceError, +// deno_core panics with "already borrowed: BorrowMutError" +// instead of properly returning the error. +// +// Expected behavior: The error should be returned as Err(...) +// Actual behavior (in buggy versions): Process panics/aborts + +use rustyscript::{Module, Runtime, RuntimeOptions}; +use std::time::Duration; + +fn main() { + println!("=== Testing for deno_core BorrowMutError bug ===\n"); + + // Create a basic Runtime with minimal configuration + let options = RuntimeOptions { + timeout: Duration::from_secs(5), + ..Default::default() + }; + + let mut runtime = Runtime::new(options).expect("Failed to create runtime"); + + // Test 1: ReferenceError from accessing undefined variable + println!("Test 1: ReferenceError from accessing undefined variable"); + test_error_handling( + &mut runtime, + r#" + // This should throw a ReferenceError + undefinedVariable.toString(); + "#, + "test_undefined_variable.js", + ); + + // Test 2: TypeError from calling non-function + println!("\nTest 2: TypeError from calling non-function"); + test_error_handling( + &mut runtime, + r#" + // This should throw a TypeError + const notAFunction = "I am not a function"; + notAFunction(); + "#, + "test_type_error.js", + ); + + // Test 3: Syntax error + println!("\nTest 3: Syntax error"); + test_error_handling( + &mut runtime, + r#" + // This should throw a SyntaxError + const x = ; + "#, + "test_syntax_error.js", + ); + + // Test 4: Range error + println!("\nTest 4: Range error"); + test_error_handling( + &mut runtime, + r#" + // This should throw a RangeError + function recursiveFunction() { + recursiveFunction(); + } + recursiveFunction(); + "#, + "test_range_error.js", + ); + + println!("\n=== All tests passed! No BorrowMutError detected ==="); +} + +fn test_error_handling(runtime: &mut Runtime, code: &str, module_name: &str) { + let module = Module::new(module_name, code); + + print!(" Loading module '{}' (expected to fail)... ", module_name); + let result = runtime.load_module(&module); + + match result { + Ok(_) => { + println!("❌ UNEXPECTED: Module loaded successfully (should have failed)"); + std::process::exit(1); + } + Err(e) => { + println!( + "✓ Correctly returned error: {}", + e.to_string().lines().next().unwrap_or("Unknown error") + ); + } + } +} From 53ffee336648222fc823d9c66ea0aa72dd8a9351 Mon Sep 17 00:00:00 2001 From: Zhenhua Chai Date: Sun, 18 Jan 2026 16:48:39 +0800 Subject: [PATCH 3/4] chore: add .gitattributes to preserve mixed line endings --- .gitattributes | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..7f3f7f16 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,14 @@ +# Disable automatic line ending conversion +# This repository has mixed line endings (CRLF and LF) and we want to preserve them as-is +* -text + +# Binary files (explicit, for clarity) +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.woff binary +*.woff2 binary +*.ttf binary +*.eot binary From e39529eac2c5d37cfcbb7d7d63da7264d7a5afdb Mon Sep 17 00:00:00 2001 From: Zhenhua Chai Date: Tue, 27 Jan 2026 00:51:03 +0800 Subject: [PATCH 4/4] fix: reconnect WebPermissions system and upgrade deno dependencies --- Cargo.lock | 2798 ++++++++++++++--------------- Cargo.toml | 60 +- examples/test_borrow_mut_error.rs | 93 - src/ext/runtime/mod.rs | 13 +- src/ext/web/mod.rs | 11 +- src/ext/web/permissions.rs | 68 + src/lib.rs | 3 +- src/utilities.rs | 4 +- tests/borrow_mut_error.rs | 158 ++ tests/permissions.rs | 170 ++ 10 files changed, 1766 insertions(+), 1612 deletions(-) delete mode 100644 examples/test_borrow_mut_error.rs create mode 100644 tests/borrow_mut_error.rs create mode 100644 tests/permissions.rs diff --git a/Cargo.lock b/Cargo.lock index 8487aa3f..1ec0814e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,32 +2,11 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli 0.29.0", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" @@ -89,21 +68,21 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -125,9 +104,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android_system_properties" @@ -146,9 +125,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anyhow" @@ -156,11 +135,20 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "ar_archive_writer" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb93bbb63b9c227414f6eb3a0adfddca591a8ce1e9b60661bb08969b87e340b" +dependencies = [ + "object", +] + [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arrayvec" @@ -183,7 +171,7 @@ version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.5", + "libloading 0.8.9", ] [[package]] @@ -198,7 +186,7 @@ dependencies = [ "nom 7.1.3", "num-traits", "rusticata-macros", - "thiserror 1.0.66", + "thiserror 1.0.69", "time", ] @@ -233,19 +221,17 @@ checksum = "2eb025ef00a6da925cf40870b9c8d008526b6004ece399cb0974209720f0b194" dependencies = [ "quote", "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" dependencies = [ - "brotli", - "flate2", - "futures-core", - "memchr", + "compression-codecs", + "compression-core", "pin-project-lite", "tokio", ] @@ -275,7 +261,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -286,7 +272,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -297,17 +283,17 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" dependencies = [ - "aws-lc-sys 0.30.0", + "aws-lc-sys 0.37.0", "untrusted 0.7.1", "zeroize", ] @@ -327,11 +313,10 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" dependencies = [ - "bindgen 0.69.5", "cc", "cmake", "dunce", @@ -340,15 +325,15 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "itoa", @@ -360,7 +345,7 @@ dependencies = [ "rustversion", "serde", "sync_wrapper", - "tower 0.4.13", + "tower 0.5.3", "tower-layer", "tower-service", ] @@ -374,7 +359,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "mime", @@ -387,24 +372,9 @@ dependencies = [ [[package]] name = "az" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" - -[[package]] -name = "backtrace" -version = "0.3.73" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide 0.7.4", - "object", - "rustc-demangle", -] +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" [[package]] name = "base16ct" @@ -442,9 +412,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "better_scoped_tls" @@ -470,7 +440,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -483,7 +453,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.87", + "syn 2.0.114", "which 4.4.2", ] @@ -493,10 +463,10 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools 0.12.1", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -504,7 +474,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -530,11 +500,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -589,7 +559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17d4f95e880cfd28c4ca5a006cf7f6af52b4bcb7b5866f573b2faa126fb7affb" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -600,14 +570,35 @@ checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 4.0.3", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 5.0.0", ] [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -615,9 +606,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "serde", @@ -625,31 +616,31 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" dependencies = [ "allocator-api2", ] [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -666,9 +657,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "bytes-str" @@ -715,7 +706,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b4a6cae9efc04cc6cbb8faf338d2c497c165c83e74509cf4dbedea948bbf6e5" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -726,9 +717,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "castaway" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" dependencies = [ "rustversion", ] @@ -744,10 +735,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.23" +version = "1.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" +checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -764,9 +756,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -782,9 +774,9 @@ checksum = "d5c24f6a463e9973db3df3c2cc276f689f5baf289c87a693dc859e004d3eb45f" [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ "num-traits", "serde", @@ -835,23 +827,23 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.5", + "libloading 0.8.9", ] [[package]] name = "clap" -version = "4.5.21" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" dependencies = [ "anstyle", "clap_lex", @@ -859,24 +851,24 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" dependencies = [ "cc", ] @@ -892,25 +884,31 @@ dependencies = [ [[package]] name = "color-print" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee543c60ff3888934877a5671f45494dd27ed4ba25c6670b9a7576b7ed7a8c0" +checksum = "3aa954171903797d5623e047d9ab69d91b493657917bdfb8c2c80ecaf9cdb6f4" dependencies = [ "color-print-proc-macro", ] [[package]] name = "color-print-proc-macro" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ff1a80c5f3cb1ca7c06ffdd71b6a6dd6d8f896c42141fbd43f50ed28dcdb93" +checksum = "692186b5ebe54007e45a59aea47ece9eb4108e141326c304cdc91699a7118a22" dependencies = [ "nom 7.1.3", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "compact_str" version = "0.7.1" @@ -924,6 +922,24 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli 8.0.2", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + [[package]] name = "const-oid" version = "0.9.6" @@ -958,9 +974,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics-types" @@ -968,7 +984,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "core-foundation 0.10.1", "libc", ] @@ -984,9 +1000,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1031,7 +1047,7 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.31.1", + "gimli", "hashbrown 0.14.5", "log", "regalloc2", @@ -1116,9 +1132,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -1167,18 +1183,18 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1195,15 +1211,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -1219,9 +1235,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -1248,7 +1264,7 @@ dependencies = [ "curve25519-dalek-derive", "digest", "fiat-crypto 0.2.9", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -1261,7 +1277,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -1279,9 +1295,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "data-url" @@ -1336,7 +1352,7 @@ dependencies = [ "swc_sourcemap", "swc_visit", "text_lines", - "thiserror 2.0.14", + "thiserror 2.0.18", "unicode-width 0.2.2", "url", ] @@ -1349,9 +1365,9 @@ checksum = "b67a6a80bc318c225eb2f369b23c940cc1a0cf4e5bfbf734a86ac33048e1599b" [[package]] name = "deno_bundle_runtime" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf499508006f8d999385b025599bfea445ef6bf349acdf43e2e9eb5d49f4fbc" +checksum = "3b75982b537705a423bc9ec6f8929b06025569cf844cb012ca6ed4912a2f949b" dependencies = [ "async-trait", "deno_core", @@ -1363,9 +1379,9 @@ dependencies = [ [[package]] name = "deno_cache" -version = "0.159.0" +version = "0.161.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18c94da036f1d6c8afe8696d4ffdbeff0c59b484edf4e8594517ca2e13797a0" +checksum = "0a6abcd4ae6749c8148048adb8dd68919d8e62dc013791d2f38d32f6ec5e37a7" dependencies = [ "async-stream", "async-trait", @@ -1375,17 +1391,17 @@ dependencies = [ "deno_core", "deno_error", "futures", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "log", "rusqlite", "serde", "sha2", "slab", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-util", ] @@ -1406,8 +1422,8 @@ dependencies = [ "deno_error", "deno_media_type 0.3.0", "deno_path_util", - "http 1.1.0", - "indexmap 2.9.0", + "http 1.4.0", + "indexmap 2.13.0", "log", "once_cell", "parking_lot", @@ -1415,15 +1431,15 @@ dependencies = [ "serde_json", "sha2", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] [[package]] name = "deno_config" -version = "0.76.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a46657bd5ab6bd9df0602fd50331c49c66706fe2a6386fe6a1c9b81f3031b3" +checksum = "de1764e8b0a5f82054f5d4cf9114b721a2d0e6e80e242b3c9e7a73ea98c9946c" dependencies = [ "boxed_error", "capacity_builder", @@ -1436,13 +1452,13 @@ dependencies = [ "glob", "ignore", "import_map", - "indexmap 2.9.0", + "indexmap 2.13.0", "jsonc-parser", "log", "serde", "serde_json", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] @@ -1454,9 +1470,9 @@ checksum = "ed7dede3d073a7d19e5e127756d80a1a8b570d8345e51192968da142ed290319" [[package]] name = "deno_core" -version = "0.376.0" +version = "0.380.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829ee94e76838e99951cc7b3ccd31f68a220687f52229c0d6e135ff29b22f6d0" +checksum = "9168bc280b6dfbebba5dc381909f25d2aafe7f9917fbe9a6548504eed250b362" dependencies = [ "anyhow", "az", @@ -1473,7 +1489,7 @@ dependencies = [ "deno_path_util", "deno_unsync", "futures", - "indexmap 2.9.0", + "indexmap 2.13.0", "libc", "parking_lot", "percent-encoding", @@ -1484,7 +1500,7 @@ dependencies = [ "smallvec", "sourcemap", "static_assertions", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "url", "v8", @@ -1499,9 +1515,9 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695" [[package]] name = "deno_cron" -version = "0.106.0" +version = "0.108.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bab29168443140e5914af8a2358dfb8158898b2a73ef33839cbcb31074220c" +checksum = "8a96c3996589f7ee2050e061c6cb3e4b3aa2cb63bebd42ad79fad7721a3a920c" dependencies = [ "async-trait", "chrono", @@ -1509,15 +1525,15 @@ dependencies = [ "deno_error", "deno_features", "saffron", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", ] [[package]] name = "deno_crypto" -version = "0.240.0" +version = "0.242.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b235765571dca50710542ec2305b936c2c435f5efe632307cf6b2735e0449268" +checksum = "c54ff2c441b15be4f332e1a44ed7cac94030934d743ac252b92c40908a0e48b5" dependencies = [ "aes", "aes-gcm", @@ -1535,6 +1551,7 @@ dependencies = [ "ed448-goldilocks", "elliptic-curve", "num-traits", + "ocb3", "once_cell", "p256", "p384", @@ -1545,9 +1562,10 @@ dependencies = [ "serde_bytes", "sha1", "sha2", + "sha3", "signature", "spki", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "uuid", "x25519-dalek", @@ -1555,9 +1573,9 @@ dependencies = [ [[package]] name = "deno_crypto_provider" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e486cef731046954a2eaa9ecd71669101ac2ceac61f2dbdad1c3a6eac5ac5c" +checksum = "7cb3013512091e4879bf8507d6d5a430310fa1285c138ae5f169f15d9010c844" dependencies = [ "aws-lc-sys 0.29.0", ] @@ -1584,14 +1602,14 @@ checksum = "1c28ede88783f14cd8aae46ca89f230c226b40e4a81ab06fa52ed72af84beb2f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "deno_features" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ef52b29c98bd0461f705d5ef6213346c028110b364f5d84e6151710832075a" +checksum = "17ba41e5b22deadeb38505b9d0102e192abe0b0d32f1d1811985bd78af73f016" dependencies = [ "deno_core", "serde", @@ -1600,9 +1618,9 @@ dependencies = [ [[package]] name = "deno_fetch" -version = "0.250.0" +version = "0.252.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cedb5a547dba738cff57f879fde761356bdd23b80668de93cd95ee0f8b92f3" +checksum = "398ad9540b083ca3dc9b6a7b9bc312ebe891f88edad899f980a9c0a130b4d9f9" dependencies = [ "base64 0.22.1", "bytes", @@ -1610,39 +1628,39 @@ dependencies = [ "deno_core", "deno_error", "deno_fs", + "deno_io", "deno_path_util", "deno_permissions", "deno_tls", "dyn-clone", "error_reporter", - "h2 0.4.8", + "h2 0.4.13", "hickory-resolver", - "http 1.1.0", + "http 1.4.0", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-rustls", "hyper-util", "ipnet", "percent-encoding", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-rustls", "tokio-socks", - "tokio-util", "tokio-vsock", - "tower 0.5.2", + "tower 0.5.3", "tower-http", "tower-service", ] [[package]] name = "deno_ffi" -version = "0.213.0" +version = "0.215.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba7fff4f630257bfc405a3ccb88a59e48b09bac5dfdc72155666b28ec001760" +checksum = "40fbb6aa49b8d756340312e2b9623deaa73cebff8fe5ad02b9922a8c5e46a240" dependencies = [ "cranelift", "cranelift-native", @@ -1650,7 +1668,7 @@ dependencies = [ "deno_error", "deno_permissions", "denort_helper", - "dlopen2", + "dlopen2 0.6.1", "libffi", "libffi-sys", "log", @@ -1659,16 +1677,16 @@ dependencies = [ "serde", "serde-value", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "winapi", ] [[package]] name = "deno_fs" -version = "0.136.0" +version = "0.138.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfffd3f56099d7bc5d1622d367e2c91ce860b0bb7939c2b790c46af184aed7" +checksum = "3724be83ff0c2751ad61af5d7c87afa966100021233442a59a6e4118f9ced0f2" dependencies = [ "async-trait", "base32", @@ -1686,22 +1704,22 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "winapi", "windows-sys 0.59.0", ] [[package]] name = "deno_http" -version = "0.224.0" +version = "0.226.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a23fe4d69546e79820c112296e37e6b20109838de9981682770fbd444edec83" +checksum = "f39a6ba4eaa5cd71f19b512415be925396e9bbee3410f2e4fecccd576ccde967" dependencies = [ "async-compression", "async-trait", "aws-lc-rs", "base64 0.22.1", - "brotli", + "brotli 6.0.0", "bytes", "cache_control", "deno_core", @@ -1712,10 +1730,10 @@ dependencies = [ "deno_websocket", "flate2", "http 0.2.12", - "http 1.1.0", + "http 1.4.0", "httparse", - "hyper 0.14.31", - "hyper 1.6.0", + "hyper 0.14.32", + "hyper 1.8.1", "hyper-util", "itertools 0.14.0", "log", @@ -1728,7 +1746,7 @@ dependencies = [ "scopeguard", "serde", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-util", "tokio-vsock", @@ -1736,9 +1754,9 @@ dependencies = [ [[package]] name = "deno_image" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3aca5b0d43db3b05e998604ce5517989d7f36af2fd693884feddf70aa85b5f6" +checksum = "7d4f2f5fbd2a3673006890e08bbc13b81763d00bc9120882fb7fb0d7ba87701c" dependencies = [ "bytemuck", "deno_core", @@ -1746,14 +1764,33 @@ dependencies = [ "image", "lcms2", "num-traits", - "thiserror 2.0.14", + "thiserror 2.0.18", +] + +[[package]] +name = "deno_inspector_server" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc12e323e56e36247edfb22eaafb0de5ecf0b70b1efd5c91159319e013ca5194" +dependencies = [ + "deno_core", + "deno_error", + "fastwebsockets", + "http 1.4.0", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "log", + "thiserror 2.0.18", + "tokio", + "uuid", ] [[package]] name = "deno_io" -version = "0.136.0" +version = "0.138.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75b313e7f2311c23dff33d35e8561b9786440fbaa377fe3f873fb0dc461b82f" +checksum = "cacf1fdac01971eb96632639186cbd1ecb77cbf8d32717e0509afd78d8254b72" dependencies = [ "async-trait", "deno_core", @@ -1778,9 +1815,9 @@ dependencies = [ [[package]] name = "deno_kv" -version = "0.134.0" +version = "0.136.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc81b0449840666f9d6e8f142747eb3edc1b436cf712f49d307fb868a47dec0" +checksum = "2be77182475f2f9e755e6c574da4d89e977060ae2b362fa8410b29dda7161d86" dependencies = [ "anyhow", "async-trait", @@ -1799,7 +1836,7 @@ dependencies = [ "denokv_remote", "denokv_sqlite", "faster-hex", - "http 1.1.0", + "http 1.4.0", "http-body-util", "log", "num-bigint", @@ -1807,7 +1844,7 @@ dependencies = [ "rusqlite", "serde", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] @@ -1821,14 +1858,14 @@ dependencies = [ "deno_semver", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", ] [[package]] name = "deno_maybe_sync" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6716d359b3fe9d3fc6ab08f39e463ff9a63033041fe6aaeecf1930b284474b9b" +checksum = "09af756abf2663ff667f496cfd739481dea10f190b7fd75a7a9ab9bffd444bd7" dependencies = [ "dashmap", ] @@ -1857,9 +1894,9 @@ dependencies = [ [[package]] name = "deno_napi" -version = "0.157.0" +version = "0.159.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1eace0f5a480e510d5c501660f41bcf8a35b192969868c3a411fa4e95d9815" +checksum = "db09ebd103632c8bfd7439c2d43734031b25b310df9d941fe1a0fc2e3b35428b" dependencies = [ "deno_core", "deno_error", @@ -1869,17 +1906,17 @@ dependencies = [ "libloading 0.7.4", "log", "napi_sym", - "thiserror 2.0.14", + "thiserror 2.0.18", "windows-sys 0.59.0", ] [[package]] name = "deno_native_certs" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c867603d2a5dfea31f55cecebb572554caa395437786d058faa9a2814c8d6eb9" +checksum = "86bc737e098a45aa5742d51ce694ac7236a1e69fb0d9df8c862e9b4c9583c5f9" dependencies = [ - "dlopen2", + "dlopen2 0.7.0", "dlopen2_derive", "once_cell", "rustls-native-certs", @@ -1888,9 +1925,9 @@ dependencies = [ [[package]] name = "deno_net" -version = "0.218.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a7c7f51d5e5f695c56596d6de2afeb2ddb26d432506dba2edfd44f61c869c79" +checksum = "5229951563db65e23443cddab524c4028dbd1b4d1398cc0d24afe7a7299bc332" dependencies = [ "deno_core", "deno_error", @@ -1908,8 +1945,8 @@ dependencies = [ "rustls-tokio-stream", "serde", "sha2", - "socket2 0.5.7", - "thiserror 2.0.14", + "socket2 0.5.10", + "thiserror 2.0.18", "tokio", "tokio-vsock", "url", @@ -1918,9 +1955,9 @@ dependencies = [ [[package]] name = "deno_node" -version = "0.164.0" +version = "0.166.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae702dad0dec327be07e23a0fb243f1be7a59a43a9964fb48ca867fa8618d8d" +checksum = "01067d3d9864e345b8f926263c588a0c403d89c5608ea985f89db3c69eed8e50" dependencies = [ "aead-gcm-stream", "aes", @@ -1928,7 +1965,7 @@ dependencies = [ "base64 0.22.1", "blake2", "boxed_error", - "brotli", + "brotli 6.0.0", "bytes", "cbc", "const-oid", @@ -1939,6 +1976,7 @@ dependencies = [ "deno_error", "deno_fetch", "deno_fs", + "deno_inspector_server", "deno_io", "deno_net", "deno_package_json", @@ -1958,11 +1996,11 @@ dependencies = [ "elliptic-curve", "errno", "faster-hex", - "h2 0.4.8", + "h2 0.4.13", "hkdf", - "http 1.1.0", + "http 1.4.0", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "idna", "ipnetwork", @@ -1974,6 +2012,7 @@ dependencies = [ "md4", "nix 0.27.1", "node_resolver", + "node_shim", "num-bigint", "num-bigint-dig", "num-integer", @@ -1997,27 +2036,49 @@ dependencies = [ "sha3", "signature", "sm3", - "socket2 0.5.7", + "socket2 0.5.10", "spki", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-eld", "tower-service", "url", - "webpki-root-certs", + "webpki-root-certs 0.26.11", "winapi", "windows-sys 0.59.0", "x25519-dalek", "x509-parser", - "yoke 0.7.4", + "yoke 0.7.5", +] + +[[package]] +name = "deno_npm" +version = "0.42.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ff75f741a6ead7e13ed60151071d886310d75942845fff8b523423115772e3f" +dependencies = [ + "async-trait", + "capacity_builder", + "chrono", + "deno_error", + "deno_lockfile", + "deno_semver", + "futures", + "indexmap 2.13.0", + "log", + "monch", + "serde", + "serde_json", + "thiserror 2.0.18", + "url", ] [[package]] name = "deno_npm" -version = "0.42.2" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daa908c280b25d68ea59765144df488714716cc14a2dcafaa1ec3906d4abbbe" +checksum = "ef06bf417c6ca4298c0dafa321a36e5530afee733b977d0d2bcaa6870b26cd82" dependencies = [ "async-trait", "capacity_builder", @@ -2026,37 +2087,37 @@ dependencies = [ "deno_lockfile", "deno_semver", "futures", - "indexmap 2.9.0", + "indexmap 2.13.0", "log", "monch", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] [[package]] name = "deno_ops" -version = "0.252.0" +version = "0.256.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83a1be112eed3cb12e02c541f0da2a7357655aa519f3f180c405c0409cfa5ea" +checksum = "ca88fda306cb23dc660f4740ca8be45b00ccfb78f09b178772c0b9a8cc49fbb1" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.13.0", "proc-macro2", "quote", "stringcase", "strum", "strum_macros", - "syn 2.0.87", + "syn 2.0.114", "syn-match", - "thiserror 2.0.14", + "thiserror 2.0.18", ] [[package]] name = "deno_os" -version = "0.43.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7ca2f93af2e4296b1bbb09ed65093925ae6aacf02e64c645f9f4be31763b15" +checksum = "55c081c431ee1850d96150d2393adb80473b43155a78a4ac6091fb1277fc638a" dependencies = [ "deno_core", "deno_error", @@ -2068,27 +2129,27 @@ dependencies = [ "ntapi", "once_cell", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "winapi", ] [[package]] name = "deno_package_json" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068ca274a783b395305290a1e606469c80123f9a5a542f51e9b817e03e3b2796" +checksum = "5d0f2d92f1317ba530000d8ec3716f9b6ef71d123c0cdcd09d2add5813a68cf2" dependencies = [ "boxed_error", "deno_error", "deno_maybe_sync", "deno_path_util", "deno_semver", - "indexmap 2.9.0", + "indexmap 2.13.0", "serde", "serde_json", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] @@ -2101,15 +2162,15 @@ dependencies = [ "deno_error", "percent-encoding", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] [[package]] name = "deno_permissions" -version = "0.85.0" +version = "0.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea134204d5c84e0a186de208c410e4c38c839cea308e579037e747405affb947" +checksum = "9c4c087e5db52092c37b05eca9669054348a39519ade39f9bd5fee7f2ac011ad" dependencies = [ "capacity_builder", "chrono", @@ -2128,7 +2189,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", "which 8.0.0", "winapi", @@ -2137,9 +2198,9 @@ dependencies = [ [[package]] name = "deno_process" -version = "0.41.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a85f57bec6a19f2e3634d9905543d5821fe28691a12bec0183389999e7f11e" +checksum = "e4d0039c327554762c9968202292b94a99d9ccc104535cc58a748896a9c74dcf" dependencies = [ "deno_core", "deno_error", @@ -2160,7 +2221,7 @@ dependencies = [ "simd-json", "sys_traits", "tempfile", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "winapi", "windows-sys 0.59.0", @@ -2168,9 +2229,9 @@ dependencies = [ [[package]] name = "deno_resolver" -version = "0.57.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc21fb4cbd83f363f2ce32c51df542e110ecac9d22f4c36dfac2bdb7c6d5dd8" +checksum = "2144e814710ef7feb3b8c0103c83ebc71e3467058ec66d923c930d8791520c3a" dependencies = [ "anyhow", "async-once-cell", @@ -2186,7 +2247,7 @@ dependencies = [ "deno_lockfile", "deno_maybe_sync", "deno_media_type 0.3.0", - "deno_npm", + "deno_npm 0.42.3", "deno_package_json", "deno_path_util", "deno_semver", @@ -2195,7 +2256,7 @@ dependencies = [ "dissimilar", "futures", "import_map", - "indexmap 2.9.0", + "indexmap 2.13.0", "jsonc-parser", "log", "node_resolver", @@ -2205,16 +2266,16 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "twox-hash", "url", ] [[package]] name = "deno_runtime" -version = "0.234.0" +version = "0.236.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa19bcc64b53ce47ce91aa870f83c6737fabb4b9194b720f09a71e24a8ee15c" +checksum = "6259fa07c691c3e74bab083df4e4510a142eebc2312679bec883dbafefee76f2" dependencies = [ "async-trait", "color-print", @@ -2230,6 +2291,7 @@ dependencies = [ "deno_fs", "deno_http", "deno_image", + "deno_inspector_server", "deno_io", "deno_kv", "deno_napi", @@ -2251,11 +2313,11 @@ dependencies = [ "deno_webstorage", "encoding_rs", "fastwebsockets", - "http 1.1.0", + "http 1.4.0", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", - "indexmap 2.9.0", + "indexmap 2.13.0", "libc", "log", "nix 0.27.1", @@ -2268,7 +2330,7 @@ dependencies = [ "same-file", "serde", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-metrics", "twox-hash", @@ -2290,29 +2352,29 @@ dependencies = [ "monch", "once_cell", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] [[package]] name = "deno_signals" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d963f791b2bd211be5c9c18b2a3a83ff672f5774a7425e605127c8450956961" +checksum = "ca0617b9a66f0712134953014f55f8190de2e4d525d59d9652a18af2516c8df9" dependencies = [ "deno_error", "libc", "signal-hook", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "winapi", ] [[package]] name = "deno_subprocess_windows" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921d3801fcfb9e6f8e287f8cacd56f9dc801e27dd57ba67132f6c2960e114566" +checksum = "f96792b22585210fc02029faa8dec551e2fe212d5752cabb7e0f865faefd1a63" dependencies = [ "fastrand", "futures-channel", @@ -2322,9 +2384,9 @@ dependencies = [ [[package]] name = "deno_telemetry" -version = "0.48.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f825c3cd1de8c814cff65bbe8f1019735edd6781b5a0dcbba4f27bb403e89de8" +checksum = "102af6f5cbccf3b0c5fd999ed2273868a15a8a87b13dd8fd1e28f00dc2e8d323" dependencies = [ "async-trait", "deno_core", @@ -2333,7 +2395,7 @@ dependencies = [ "deno_signals", "deno_tls", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-rustls", "hyper-util", "log", @@ -2345,7 +2407,7 @@ dependencies = [ "opentelemetry_sdk", "pin-project", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-vsock", "tower-service", @@ -2363,9 +2425,9 @@ dependencies = [ [[package]] name = "deno_tls" -version = "0.213.0" +version = "0.215.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96a4a3cff3c0bbd77342fd5093732a64840fdd7e76868723fea80751bbcc0e1" +checksum = "cefa40d4a146c9ac41fca1c713ff51b98c8bea5f4705f9282db72fe5a451849b" dependencies = [ "deno_core", "deno_error", @@ -2373,11 +2435,11 @@ dependencies = [ "rustls", "rustls-pemfile", "rustls-tokio-stream", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", - "webpki-roots 0.26.3", + "webpki-roots 0.26.11", ] [[package]] @@ -2390,7 +2452,7 @@ dependencies = [ "quinn", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -2414,9 +2476,9 @@ checksum = "54c190c36940b8ba25043e2258775df3cd4af06f28c8a9efd28b50799efe2977" [[package]] name = "deno_web" -version = "0.257.0" +version = "0.259.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc732e3f665b5117f92b645c2a959bac3dd1dfa5d3f74f4de11dbe90c4c23b20" +checksum = "1817063a120490b8d53432033987b0188dad40db2e00cd0291b2ebd483ca241a" dependencies = [ "async-trait", "base64-simd", @@ -2429,7 +2491,7 @@ dependencies = [ "flate2", "futures", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "urlpattern", "uuid", @@ -2437,18 +2499,18 @@ dependencies = [ [[package]] name = "deno_webgpu" -version = "0.193.0" +version = "0.195.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8b2c887355112abfa14e1596240836f3ece16897d63010a9e9bb3cc3959332" +checksum = "5ff8461fb4baa2ecac42215fe40acd17b32f010209f6dbe97674c0fcb5532e3a" dependencies = [ "deno_core", "deno_error", "deno_unsync", - "indexmap 2.9.0", + "indexmap 2.13.0", "raw-window-handle", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "wgpu-core", "wgpu-types", @@ -2456,18 +2518,18 @@ dependencies = [ [[package]] name = "deno_webidl" -version = "0.226.0" +version = "0.228.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a16ef8ede69eb140bd5577a89f1c2d7e068dd3a7de29ea7b46f9e0e087cbec1c" +checksum = "92411419291a6849bd48185f8b185375f9c92d80444c1993c6f53e31fff05025" dependencies = [ "deno_core", ] [[package]] name = "deno_websocket" -version = "0.231.0" +version = "0.233.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ed1fd12275bd76c460175362575269b90e6ee17df5ac3bd353b6899ba77d4e7" +checksum = "b807e0ec9541eaa8530ffa3c3d9331328a04d00938d2868c213fbe16fa6ee67c" dependencies = [ "bytes", "deno_core", @@ -2477,28 +2539,28 @@ dependencies = [ "deno_permissions", "deno_tls", "fastwebsockets", - "h2 0.4.8", - "http 1.1.0", + "h2 0.4.13", + "http 1.4.0", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "once_cell", "rustls-tokio-stream", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", ] [[package]] name = "deno_webstorage" -version = "0.221.0" +version = "0.223.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89134c225a3b3ee48e0300813b56f747eeb0edef044d93c3b07124fbc14c30e" +checksum = "47693afa99378eaeeb173466f134ab467f7945d1d6baaa7049413bc3f1e5bda6" dependencies = [ "deno_core", "deno_error", "rusqlite", - "thiserror 2.0.14", + "thiserror 2.0.18", ] [[package]] @@ -2540,13 +2602,13 @@ dependencies = [ "deno_error", "denokv_proto", "futures", - "http 1.1.0", + "http 1.4.0", "log", "prost", "rand 0.8.5", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-util", "url", @@ -2571,7 +2633,7 @@ dependencies = [ "rand 0.8.5", "rusqlite", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-stream", "uuid", @@ -2580,22 +2642,22 @@ dependencies = [ [[package]] name = "denort_helper" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0526b641bde8e09fb9bcd0d3fb79e5d42181ceafbe368ebe12ef6806959b5f" +checksum = "4e218564b32854595b10b1d1005acd65622061233739e6421f4d3ac9fb946876" dependencies = [ "deno_error", "deno_path_util", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "twox-hash", ] [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "der_derive", @@ -2625,14 +2687,14 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", ] @@ -2683,7 +2745,7 @@ dependencies = [ "diplomat_core", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -2703,7 +2765,7 @@ dependencies = [ "serde", "smallvec", "strck", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -2714,7 +2776,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -2735,22 +2797,34 @@ dependencies = [ "winapi", ] +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + [[package]] name = "dlopen2_derive" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "document-features" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] @@ -2801,9 +2875,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecb" @@ -2830,9 +2904,9 @@ dependencies = [ [[package]] name = "ecow" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42fc0a93992b20c58b99e59d61eaf1635a25bfbe49e4275c34ba0aee98119ba" +checksum = "78e4f79b296fbaab6ce2e22d52cb4c7f010fe0ebe7a32e34fa25885fd797bd02" dependencies = [ "serde", ] @@ -2849,9 +2923,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", @@ -2877,9 +2951,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -2922,37 +2996,37 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "enum-as-inner" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "error_reporter" @@ -2974,14 +3048,14 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastbloom" -version = "0.9.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27cea6e7f512d43b098939ff4d5a5d6fe3db07971e1d05176fe26c642d33f5b8" +checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4" dependencies = [ - "getrandom 0.3.1", - "rand 0.9.0", + "getrandom 0.3.4", + "libm", + "rand 0.9.2", "siphasher 1.0.1", - "wide", ] [[package]] @@ -3009,42 +3083,42 @@ dependencies = [ "base64 0.21.7", "bytes", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "pin-project", "rand 0.8.5", "sha1", "simdutf8", - "thiserror 1.0.66", + "thiserror 1.0.69", "tokio", "utf-8", ] [[package]] name = "fd-lock" -version = "4.0.2" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" +checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix", - "windows-sys 0.52.0", + "rustix 1.1.3", + "windows-sys 0.59.0", ] [[package]] name = "fdeflate" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core 0.6.4", "subtle", @@ -3064,24 +3138,29 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + [[package]] name = "flate2" -version = "1.0.30" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "miniz_oxide 0.7.4", + "miniz_oxide", ] [[package]] @@ -3129,7 +3208,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -3149,9 +3228,9 @@ dependencies = [ [[package]] name = "fqdn" -version = "0.4.7" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2713644726a30a74150dc8d10e910a8e14e431e1a4f98988309da8c80ddf7a" +checksum = "886ac788f62d16d6b0f26b2fa762b34ef16ebfb4b624c2c15fbcadc9173c0f72" [[package]] name = "from_variant" @@ -3160,7 +3239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ff35a391aef949120a0340d690269b3d9f63460a6106e99bd07b961f345ea9" dependencies = [ "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -3261,7 +3340,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -3294,19 +3373,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generator" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" -dependencies = [ - "cfg-if", - "libc", - "log", - "rustversion", - "windows 0.58.0", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -3320,29 +3386,29 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", + "r-efi", + "wasip2", "wasm-bindgen", - "windows-targets 0.52.6", ] [[package]] @@ -3356,10 +3422,14 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.29.0" +name = "gif" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" +dependencies = [ + "color_quant", + "weezl", +] [[package]] name = "gimli" @@ -3368,7 +3438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.9.0", + "indexmap 2.13.0", "stable_deref_trait", ] @@ -3385,21 +3455,21 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata", + "regex-syntax", ] [[package]] @@ -3433,8 +3503,8 @@ dependencies = [ "hashbrown 0.16.1", "log", "presser", - "thiserror 2.0.14", - "windows 0.62.2", + "thiserror 2.0.18", + "windows", ] [[package]] @@ -3443,9 +3513,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "gpu-descriptor-types", - "hashbrown 0.15.1", + "hashbrown 0.15.5", ] [[package]] @@ -3454,7 +3524,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] @@ -3479,9 +3549,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -3489,7 +3559,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -3498,17 +3568,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.9.0", + "http 1.4.0", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -3525,7 +3595,7 @@ dependencies = [ "crunchy", "num-traits", "serde", - "zerocopy 0.8.27", + "zerocopy", ] [[package]] @@ -3565,9 +3635,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "foldhash 0.1.5", ] @@ -3591,7 +3661,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.1", + "hashbrown 0.15.5", ] [[package]] @@ -3618,12 +3688,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -3632,9 +3696,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -3664,10 +3728,10 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.0", + "rand 0.9.2", "ring", "serde", - "thiserror 2.0.14", + "thiserror 2.0.18", "tinyvec", "tokio", "tracing", @@ -3687,11 +3751,11 @@ dependencies = [ "moka", "once_cell", "parking_lot", - "rand 0.9.0", + "rand 0.9.2", "resolv-conf", "serde", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -3727,29 +3791,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "hostname" -version = "0.3.1" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "libc", - "match_cfg", - "winapi", + "windows-sys 0.61.2", ] [[package]] name = "hstr" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c43c0a9e8fbdb3bb9dc8eee85e1e2ac81605418b4c83b6b7413cbf14d56ca5c" +checksum = "faa57007c3c9dab34df2fa4c1fb52fe9c34ec5a27ed9d8edea53254b50cd7887" dependencies = [ "hashbrown 0.14.5", "new_debug_unreachable", @@ -3772,12 +3825,11 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -3799,27 +3851,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.4.0", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.4.0", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -3829,22 +3881,22 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -3853,20 +3905,22 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "h2 0.4.8", - "http 1.1.0", + "futures-core", + "h2 0.4.13", + "http 1.4.0", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -3874,29 +3928,28 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.6.0", + "http 1.4.0", + "hyper 1.8.1", "hyper-util", "rustls", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots 0.26.3", + "webpki-roots 1.0.5", ] [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "pin-project-lite", "tokio", @@ -3905,23 +3958,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.8.1", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.2", "tokio", "tower-service", "tracing", @@ -3938,9 +3991,9 @@ dependencies = [ "icu_calendar_data", "icu_locale", "icu_locale_core", - "icu_provider 2.1.1", - "tinystr 0.8.2", - "zerovec 0.11.5", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] @@ -3949,18 +4002,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527f04223b17edfe0bd43baf14a0cb1b017830db65f3950dc00224860a9a446d" -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke 0.7.4", - "zerofrom", - "zerovec 0.10.4", -] - [[package]] name = "icu_collections" version = "2.1.1" @@ -3971,7 +4012,7 @@ dependencies = [ "potential_utf", "yoke 0.8.1", "zerofrom", - "zerovec 0.11.5", + "zerovec", ] [[package]] @@ -3980,13 +4021,13 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "532b11722e350ab6bf916ba6eb0efe3ee54b932666afec989465f9243fe6dd60" dependencies = [ - "icu_collections 2.1.1", + "icu_collections", "icu_locale_core", "icu_locale_data", - "icu_provider 2.1.1", + "icu_provider", "potential_utf", - "tinystr 0.8.2", - "zerovec 0.11.5", + "tinystr", + "zerovec", ] [[package]] @@ -3996,90 +4037,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", - "litemap 0.8.1", + "litemap", "serde", - "tinystr 0.8.2", - "writeable 0.6.2", - "zerovec 0.11.5", + "tinystr", + "writeable", + "zerovec", ] [[package]] name = "icu_locale_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03e2fcaefecdf05619f3d6f91740e79ab969b4dd54f77cbf546b1d0d28e3147" - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap 0.7.3", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "1c5f1d16b4c3a2642d3a719f18f6b06070ab0aef246a6418130c955ae08aa831" [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", - "icu_collections 1.5.0", + "icu_collections", "icu_normalizer_data", - "icu_properties 1.5.1", - "icu_provider 1.5.0", + "icu_properties", + "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec 0.10.4", + "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections 1.5.0", - "icu_locid_transform", - "icu_properties_data 1.5.0", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" @@ -4087,43 +4076,20 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "icu_collections 2.1.1", + "icu_collections", "icu_locale_core", - "icu_properties_data 2.1.2", - "icu_provider 2.1.1", + "icu_properties_data", + "icu_provider", "zerotrie", - "zerovec 0.11.5", + "zerovec", ] -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - [[package]] name = "icu_properties_data" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr 0.7.6", - "writeable 0.5.5", - "yoke 0.7.4", - "zerofrom", - "zerovec 0.10.4", -] - [[package]] name = "icu_provider" version = "2.1.1" @@ -4134,22 +4100,11 @@ dependencies = [ "icu_locale_core", "serde", "stable_deref_trait", - "writeable 0.6.2", + "writeable", "yoke 0.8.1", "zerofrom", "zerotrie", - "zerovec 0.11.5", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "zerovec", ] [[package]] @@ -4165,31 +4120,31 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", - "icu_properties 1.5.1", + "icu_properties", ] [[package]] name = "if_chain" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" +checksum = "cd62e6b5e86ea8eeeb8db1de02880a6abc01a397b2ebb64b5d74ac255318f5cb" [[package]] name = "ignore" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata", "same-file", "walkdir", "winapi-util", @@ -4197,32 +4152,46 @@ dependencies = [ [[package]] name = "image" -version = "0.25.5" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", + "color_quant", + "gif", + "image-webp", + "moxcms", "num-traits", "png", "zune-core", "zune-jpeg", ] +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", +] + [[package]] name = "import_map" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83a4958a41489355816028239fee373797435384d162f4908e7980c83c3bb1b" +checksum = "61dcb2ebdf4a4df8e6353c566f4b51ee2f602341538e41e77c8f861ac1bb16d5" dependencies = [ "boxed_error", "deno_error", - "indexmap 2.9.0", + "indexmap 2.13.0", "log", "percent-encoding", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] @@ -4238,13 +4207,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.16.1", "serde", + "serde_core", ] [[package]] @@ -4269,32 +4239,21 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "block-padding", "generic-array", ] -[[package]] -name = "io-uring" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" -dependencies = [ - "bitflags 2.9.0", - "cfg-if", - "libc", -] - [[package]] name = "ipconfig" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2 0.5.10", "widestring", "windows-sys 0.48.0", "winreg", @@ -4302,9 +4261,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "ipnetwork" @@ -4327,25 +4286,25 @@ dependencies = [ [[package]] name = "is-macro" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a85abdc13717906baccb5a1e435556ce0df215f242892f721dff62bf25288f" +checksum = "1d57a3e447e24c22647738e4607f1df1e0ec6f72e16182c4cd199f647cdfb0e4" dependencies = [ - "Inflector", + "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4366,6 +4325,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -4377,9 +4345,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "ixdtf" @@ -4395,18 +4363,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" dependencies = [ "once_cell", "wasm-bindgen", @@ -4461,7 +4430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.5", + "libloading 0.8.9", "pkg-config", ] @@ -4473,9 +4442,9 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kqueue" -version = "1.0.8" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" dependencies = [ "kqueue-sys", "libc", @@ -4493,9 +4462,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +checksum = "c5c13b6857ade4c8ee05c3c3dc97d2ab5415d691213825b90d3211c425c1f907" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4504,14 +4473,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +checksum = "32a95c68db5d41694cea563c86a4ba4dc02141c16ef64814108cb23def4d5438" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -4531,9 +4500,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lcms2" -version = "6.1.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680ec3fa42c36e0af9ca02f20a3742a82229c7f1ee0e6754294de46a80be6f74" +checksum = "b75877b724685dd49310bdbadbf973fc69b1d01992a6d4a861b928fc3943f87b" dependencies = [ "bytemuck", "foreign-types", @@ -4542,9 +4511,9 @@ dependencies = [ [[package]] name = "lcms2-sys" -version = "4.0.5" +version = "4.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "593265f9a3172180024fb62580ee31348f31be924b19416da174ebb7fb623d2e" +checksum = "1c2604b23848ca80b2add60f0fb2270fd980e622c25029b6597fa01cfd5f8d5f" dependencies = [ "cc", "dunce", @@ -4554,9 +4523,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.175" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libffi" @@ -4589,19 +4558,30 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +dependencies = [ + "bitflags 2.10.0", + "libc", + "redox_syscall 0.7.0", +] [[package]] name = "libsqlite3-sys" @@ -4617,9 +4597,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.20" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" dependencies = [ "cc", "pkg-config", @@ -4628,15 +4608,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "litemap" -version = "0.7.3" +name = "linux-raw-sys" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -4646,17 +4626,16 @@ checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "litrs" -version = "0.4.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] @@ -4666,19 +4645,6 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - [[package]] name = "lru-slab" version = "0.1.2" @@ -4710,21 +4676,6 @@ dependencies = [ "libc", ] -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - [[package]] name = "matchit" version = "0.7.3" @@ -4761,15 +4712,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -4789,7 +4740,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types", @@ -4812,18 +4763,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -4837,38 +4779,35 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ - "hermit-abi", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] name = "moka" -version = "0.12.10" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +checksum = "b4ac832c50ced444ef6be0767a008b02c106a909ba79d1d830501e94b96f6b7e" dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "loom", + "equivalent", "parking_lot", "portable-atomic", - "rustc_version 0.4.0", "smallvec", "tagptr", - "thiserror 1.0.66", "uuid", ] @@ -4878,6 +4817,16 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b52c1b33ff98142aecea13138bd399b68aa7ab5d9546c300988c345004001eea" +[[package]] +name = "moxcms" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "naga" version = "28.0.0" @@ -4886,14 +4835,14 @@ checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "codespan-reporting", "half", "hashbrown 0.16.1", "hexf-parse", - "indexmap 2.9.0", + "indexmap 2.13.0", "libm", "log", "num-traits", @@ -4901,20 +4850,20 @@ dependencies = [ "rustc-hash 1.1.0", "serde", "spirv", - "thiserror 2.0.14", + "thiserror 2.0.18", "unicode-ident", ] [[package]] name = "napi_sym" -version = "0.156.0" +version = "0.158.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a912b4949264d90faa47e3bd7ebf91743530daf61c811dafa11497bf8fc001fe" +checksum = "e5e2afa4e45b22d92d51742714283d0755681e31303df03d1b64303b3a6dfde3" dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -4957,7 +4906,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "libc", "memoffset", @@ -4965,11 +4914,11 @@ dependencies = [ [[package]] name = "nix" -version = "0.29.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -4978,9 +4927,9 @@ dependencies = [ [[package]] name = "node_resolver" -version = "0.64.0" +version = "0.66.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e801b86d09845a0e35dc4f148ec435746bab0632a7f48384883244094733548" +checksum = "69ef3440cdadc2a4a44713ed668ce1993f79ab82df371b635b72b97d76e88de5" dependencies = [ "anyhow", "async-trait", @@ -5003,10 +4952,19 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "url", ] +[[package]] +name = "node_shim" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c0c15839a684a17f9f07e62811a8989ba204e8b0f011859d5d0f73a4667d82b" +dependencies = [ + "serde_json", +] + [[package]] name = "nom" version = "5.1.3" @@ -5033,7 +4991,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -5048,20 +5006,10 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" -dependencies = [ - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" dependencies = [ - "overload", "winapi", ] @@ -5096,9 +5044,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-integer" @@ -5132,9 +5080,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -5151,13 +5099,25 @@ dependencies = [ [[package]] name = "object" -version = "0.36.2" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] +[[package]] +name = "ocb3" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c196e0276c471c843dd5777e7543a36a298a4be942a2a688d8111cd43390dedb" +dependencies = [ + "aead", + "cipher", + "ctr", + "subtle", +] + [[package]] name = "oid-registry" version = "0.6.1" @@ -5179,9 +5139,9 @@ dependencies = [ [[package]] name = "oorandom" -version = "11.1.4" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "opaque-debug" @@ -5191,22 +5151,22 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3cebff57f7dbd1255b44d8bddc2cebeb0ea677dbaa2e25a3070a91b318f660" +checksum = "ab70038c28ed37b97d8ed414b6429d343a8bbf44c9f79ec854f3a643029ba6d7" dependencies = [ "futures-core", "futures-sink", "js-sys", - "once_cell", "pin-project-lite", - "thiserror 1.0.66", + "thiserror 1.0.69", + "tracing", ] [[package]] @@ -5217,7 +5177,7 @@ checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80" dependencies = [ "async-trait", "bytes", - "http 1.1.0", + "http 1.4.0", "opentelemetry", ] @@ -5229,14 +5189,14 @@ checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" dependencies = [ "async-trait", "futures-core", - "http 1.1.0", + "http 1.4.0", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", "prost", "serde_json", - "thiserror 1.0.66", + "thiserror 1.0.69", "tokio", "tonic", "tracing", @@ -5264,21 +5224,20 @@ checksum = "bc1b6902ff63b32ef6c489e8048c5e253e2e4a803ea3ea7e783914536eb15c52" [[package]] name = "opentelemetry_sdk" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b742c1cae4693792cc564e58d75a2a0ba29421a34a85b50da92efa89ecb2bc" +checksum = "231e9d6ceef9b0b2546ddf52335785ce41252bc7474ee8ba05bfad277be13ab8" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "once_cell", "opentelemetry", "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 1.0.66", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -5295,9 +5254,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.6.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" dependencies = [ "num-traits", ] @@ -5314,15 +5273,9 @@ dependencies = [ [[package]] name = "outref" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" - -[[package]] -name = "overload" -version = "0.1.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "p224" @@ -5350,9 +5303,9 @@ dependencies = [ [[package]] name = "p384" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" dependencies = [ "ecdsa", "elliptic-curve", @@ -5385,9 +5338,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -5395,15 +5348,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -5431,9 +5384,9 @@ checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pbkdf2" @@ -5462,9 +5415,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", "phf_shared", @@ -5472,9 +5425,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand 0.8.5", @@ -5482,51 +5435,51 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", "phf_shared", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher 0.3.11", + "siphasher 1.0.1", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -5574,15 +5527,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -5593,30 +5546,30 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "png" -version = "0.17.14" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.8.8", + "miniz_oxide", ] [[package]] @@ -5633,9 +5586,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "potential_utf" @@ -5644,8 +5597,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "serde_core", - "writeable 0.6.2", - "zerovec 0.11.5", + "writeable", + "zerovec", ] [[package]] @@ -5656,9 +5609,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "presser" @@ -5678,12 +5634,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -5697,24 +5653,24 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "prost" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -5722,23 +5678,24 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "1fa96cb91275ed31d6da3e983447320c4eb219ac180fa1679a0889ff32861e2d" dependencies = [ + "ar_archive_writer", "cc", ] @@ -5748,22 +5705,31 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "memchr", "unicase", ] [[package]] -name = "quick-error" -version = "1.2.3" +name = "pxfm" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" +dependencies = [ + "num-traits", +] [[package]] -name = "quinn" -version = "0.11.8" +name = "quick-error" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -5772,8 +5738,8 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2 0.5.7", - "thiserror 2.0.14", + "socket2 0.6.2", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -5781,22 +5747,22 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "aws-lc-rs", "bytes", "fastbloom", - "getrandom 0.3.1", + "getrandom 0.3.4", "lru-slab", - "rand 0.9.0", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.14", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -5804,26 +5770,33 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ + "cfg_aliases", "libc", "once_cell", - "socket2 0.5.7", + "socket2 0.6.2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -5853,13 +5826,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", - "zerocopy 0.8.27", + "rand_core 0.9.5", ] [[package]] @@ -5879,7 +5851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -5888,23 +5860,23 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.3.1", + "getrandom 0.3.4", ] [[package]] name = "range-alloc" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" [[package]] name = "raw-window-handle" @@ -5934,51 +5906,51 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", ] [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] name = "ref-cast" -version = "1.0.23" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.23" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "regalloc2" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145c1c267e14f20fb0f88aa76a1c5ffec42d592c1d28b3cd9148ae35916158d3" +checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" dependencies = [ "allocator-api2", "bumpalo", - "hashbrown 0.15.1", + "hashbrown 0.15.5", "log", "rustc-hash 2.1.1", "smallvec", @@ -5986,47 +5958,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.4" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" @@ -6039,10 +5996,10 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-rustls", "hyper-util", "js-sys", @@ -6058,7 +6015,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", - "tower 0.5.2", + "tower 0.5.3", "tower-http", "tower-service", "url", @@ -6080,13 +6037,9 @@ dependencies = [ [[package]] name = "resolv-conf" -version = "0.7.0" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname", - "quick-error", -] +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "rfc6979" @@ -6106,7 +6059,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.17", "libc", "untrusted 0.9.0", "windows-sys 0.52.0", @@ -6127,7 +6080,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "once_cell", "serde", "serde_derive", @@ -6137,9 +6090,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ "const-oid", "digest", @@ -6161,7 +6114,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -6169,12 +6122,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -6198,11 +6145,11 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.27", ] [[package]] @@ -6216,15 +6163,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] @@ -6238,16 +6198,16 @@ dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.4", + "rustls-webpki 0.103.9", "subtle", "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -6258,19 +6218,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ "web-time", "zeroize", @@ -6285,15 +6244,15 @@ dependencies = [ "derive-io", "futures", "rustls", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", ] [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -6302,9 +6261,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ "aws-lc-rs", "ring", @@ -6314,9 +6273,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustyline" @@ -6324,7 +6283,7 @@ version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02a2d683a4ac90aeef5b1013933f6d977bd37d51ff3f4dad829d4931a7e6be86" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "cfg-if", "clipboard-win", "fd-lock", @@ -6335,7 +6294,7 @@ dependencies = [ "nix 0.27.1", "radix_trie", "unicode-segmentation", - "unicode-width 0.1.13", + "unicode-width 0.1.14", "utf8parse", "winapi", ] @@ -6368,7 +6327,7 @@ dependencies = [ "deno_napi", "deno_net", "deno_node", - "deno_npm", + "deno_npm 0.43.0", "deno_package_json", "deno_permissions", "deno_process", @@ -6384,7 +6343,7 @@ dependencies = [ "deno_webidl", "deno_websocket", "deno_webstorage", - "http 1.1.0", + "http 1.4.0", "hyper-util", "libc", "maybe_path", @@ -6397,7 +6356,7 @@ dependencies = [ "rustyline", "serde", "sys_traits", - "thiserror 2.0.14", + "thiserror 2.0.18", "tokio", "tokio-util", "uuid", @@ -6407,24 +6366,15 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "ryu-js" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad97d4ce1560a5e27cec89519dc8300d1aa6035b099821261c651486a19e44d5" - -[[package]] -name = "safe_arch" -version = "0.7.4" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" -dependencies = [ - "bytemuck", -] +checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" [[package]] name = "saffron" @@ -6456,11 +6406,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -6508,7 +6458,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6517,9 +6467,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -6536,9 +6486,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "semver-parser" @@ -6574,11 +6524,12 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -6598,26 +6549,28 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.13.0", "itoa", - "ryu", + "memchr", "serde", + "serde_core", + "zmij", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -6636,15 +6589,15 @@ dependencies = [ [[package]] name = "serde_v8" -version = "0.285.0" +version = "0.289.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26d546283b1182f61e75b598da17f3babde4b25e479a5cb3fbb39d26cb928fd" +checksum = "781b7703bd6f995cc753c371b8ede9e0b09c0c47b3848d7d1cade89666520a92" dependencies = [ "deno_error", "num-bigint", "serde", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.18", "v8", ] @@ -6671,9 +6624,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -6690,15 +6643,6 @@ dependencies = [ "keccak", ] -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - [[package]] name = "shlex" version = "1.3.0" @@ -6707,9 +6651,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" dependencies = [ "libc", "signal-hook-registry", @@ -6717,10 +6661,11 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -6736,17 +6681,17 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simd-json" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1df0290e9bfe79ddd5ff8798ca887cd107b75353d2957efe9777296e17f26b5" +checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.17", "halfbrown", "ref-cast", "serde", @@ -6757,9 +6702,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" @@ -6775,18 +6720,15 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slotmap" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" dependencies = [ "version_check", ] @@ -6802,9 +6744,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -6822,9 +6764,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -6832,19 +6774,19 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "sourcemap" -version = "9.2.1" +version = "9.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdee719193ae5c919a3ee43f64c2c0dd87f9b9a451d67918a2a5ec2e3c70561c" +checksum = "314d62a489431668f719ada776ca1d49b924db951b7450f8974c9ae51ab05ad7" dependencies = [ "base64-simd", "bitvec", @@ -6870,7 +6812,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] @@ -6891,21 +6833,21 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.15" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -6931,7 +6873,7 @@ checksum = "ae36a4951ca7bd1cfd991c241584a9824a70f6aff1e7d4f693fb3f2465e4030e" dependencies = [ "quote", "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -6942,24 +6884,23 @@ checksum = "72abeda133c49d7bddece6c154728f83eec8172380c80ab7096da9487e20d27c" [[package]] name = "strum" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "rustversion", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7026,7 +6967,7 @@ checksum = "72e90b52ee734ded867104612218101722ad87ff4cf74fe30383bd244a533f97" dependencies = [ "anyhow", "bytes-str", - "indexmap 2.9.0", + "indexmap 2.13.0", "serde", "serde_json", "swc_config_macro", @@ -7041,7 +6982,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7050,7 +6991,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a573a0c72850dec8d4d8085f152d5778af35a2520c3093b242d2d1d50776da7c" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "is-macro", "num-bigint", "once_cell", @@ -7096,7 +7037,7 @@ checksum = "e276dc62c0a2625a560397827989c82a93fd545fcf6f7faec0935a82cc4ddbb8" dependencies = [ "proc-macro2", "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7105,7 +7046,7 @@ version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e82f7747e052c6ff6e111fa4adeb14e33b46ee6e94fe5ef717601f651db48fc" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "either", "num-bigint", "rustc-hash 2.1.1", @@ -7142,7 +7083,7 @@ version = "27.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f1a51af1a92cd4904c073b293e491bbc0918400a45d58227b34c961dd6f52d7" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "either", "num-bigint", "phf", @@ -7164,7 +7105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f6f165578ca4fee47bd57585c1b9597c94bf4ea6591df47f2b5fa5b1883fe" dependencies = [ "better_scoped_tls", - "indexmap 2.9.0", + "indexmap 2.13.0", "once_cell", "par-core", "phf", @@ -7201,7 +7142,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7230,7 +7171,7 @@ checksum = "03de12e38e47ac1c96ac576f793ad37a9d7b16fbf4f2203881f89152f2498682" dependencies = [ "base64 0.22.1", "bytes-str", - "indexmap 2.9.0", + "indexmap 2.13.0", "once_cell", "rustc-hash 2.1.1", "serde", @@ -7270,7 +7211,7 @@ version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fb99e179988cabd473779a4452ab942bcb777176983ca3cbaf22a8f056a65b0" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.13.0", "num_cpus", "once_cell", "par-core", @@ -7306,7 +7247,7 @@ checksum = "c16ce73424a6316e95e09065ba6a207eba7765496fed113702278b7711d4b632" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7317,7 +7258,7 @@ checksum = "aae1efbaa74943dc5ad2a2fb16cbd78b77d7e4d63188f3c5b4df2b4dcd2faaae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7362,9 +7303,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -7379,14 +7320,14 @@ checksum = "783c4140d7ed89f37116e865b49e5a9fdd28608b9071a9dd1e158b50fc0a31fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -7405,22 +7346,22 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "sys_traits" -version = "0.1.17" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f74a2c95f72e36fa6bd04a40d15623a9904bab1cc2fa6c6135b09d774a65088" +checksum = "4121e69c72108134f9daf82cf6580269f018f5d8fb8cd3063df17699fbb84cb1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.17", "junction", "libc", "sys_traits_macros", @@ -7435,7 +7376,7 @@ checksum = "181f22127402abcf8ee5c83ccd5b408933fec36a6095cf82cda545634692657e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7452,21 +7393,21 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.4", "once_cell", - "rustix", - "windows-sys 0.59.0", + "rustix 1.1.3", + "windows-sys 0.61.2", ] [[package]] @@ -7482,7 +7423,7 @@ dependencies = [ "num-traits", "temporal_rs", "timezone_provider", - "writeable 0.6.2", + "writeable", "zoneinfo64", ] @@ -7498,8 +7439,8 @@ dependencies = [ "ixdtf", "num-traits", "timezone_provider", - "tinystr 0.8.2", - "writeable 0.6.2", + "tinystr", + "writeable", ] [[package]] @@ -7522,80 +7463,70 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.66", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.14" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.14", + "thiserror-impl 2.0.18", ] [[package]] name = "thiserror-impl" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "thiserror-impl" -version = "2.0.14" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", + "syn 2.0.114", ] [[package]] name = "time" -version = "0.3.36" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" dependencies = [ "num-conv", "time-core", @@ -7607,22 +7538,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df9ba0000e9e73862f3e7ca1ff159e2ddf915c9d8bb11e38a7874760f445d993" dependencies = [ - "tinystr 0.8.2", + "tinystr", "zerotrie", - "zerovec 0.11.5", + "zerovec", "zoneinfo64", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec 0.10.4", -] - [[package]] name = "tinystr" version = "0.8.2" @@ -7631,7 +7552,7 @@ checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "serde_core", - "zerovec 0.11.5", + "zerovec", ] [[package]] @@ -7646,9 +7567,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -7661,22 +7582,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.2", + "mio 1.1.1", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.2", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7691,13 +7609,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7714,32 +7632,31 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-socks" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51165dfa029d2a65969413a6cc96f354b86b464498702f174a4efa13608fd8c0" +checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" dependencies = [ "either", "futures-util", - "thiserror 1.0.66", + "thiserror 1.0.69", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -7757,7 +7674,7 @@ dependencies = [ "futures-io", "futures-sink", "futures-util", - "hashbrown 0.15.1", + "hashbrown 0.15.5", "pin-project-lite", "slab", "tokio", @@ -7765,9 +7682,9 @@ dependencies = [ [[package]] name = "tokio-vsock" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1824fc0300433f400df6b6264a9ab00ba93f39d38c3157fb5f05183476c4af10" +checksum = "8b319ef9394889dab2e1b4f0085b45ba11d0c79dc9d1a9d1afc057d009d0f1c7" dependencies = [ "bytes", "futures", @@ -7790,9 +7707,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] @@ -7803,7 +7720,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.13.0", "serde", "serde_spanned", "toml_datetime", @@ -7821,17 +7738,17 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "h2 0.4.8", - "http 1.1.0", + "h2 0.4.13", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", "prost", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", "tokio-stream", "tower 0.4.13", @@ -7862,9 +7779,9 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", @@ -7882,18 +7799,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "async-compression", - "bitflags 2.9.0", + "bitflags 2.10.0", "bytes", "futures-core", "futures-util", - "http 1.1.0", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "iri-string", "pin-project-lite", "tokio", "tokio-util", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", ] @@ -7930,7 +7847,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -7940,43 +7857,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", ] [[package]] name = "triomphe" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" +checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" dependencies = [ "serde", "stable_deref_trait", @@ -8002,42 +7889,39 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicase" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-id-start" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc3882f69607a2ac8cc4de3ee7993d8f68bb06f2974271195065b3bd07f2edea" +checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" @@ -8092,7 +7976,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f805818f843b548bacc19609eb3619dd2850e54746f5cada37927393c2ef4ec" dependencies = [ - "icu_properties 2.1.2", + "icu_properties", "regex", "serde", "url", @@ -8104,12 +7988,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -8124,12 +8002,14 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" dependencies = [ - "getrandom 0.2.15", - "serde", + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", ] [[package]] @@ -8139,14 +8019,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f566072bd76b2631d0dca1d90a766c943863b1fd6b01312281dc919816de976d" dependencies = [ "bindgen 0.72.1", - "bitflags 2.9.0", + "bitflags 2.10.0", "fslock", "gzip-header", "home", - "miniz_oxide 0.8.8", + "miniz_oxide", "paste", "temporal_capi", - "which 6.0.1", + "which 6.0.3", ] [[package]] @@ -8155,21 +8035,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97599c400fc79925922b58303e98fcb8fa88f573379a08ddb652e72cbd2e70f6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "encoding_rs", - "indexmap 2.9.0", + "indexmap 2.13.0", "num-bigint", "serde", - "thiserror 1.0.66", + "thiserror 1.0.69", "wtf8", ] -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - [[package]] name = "value-trait" version = "0.10.1" @@ -8197,17 +8071,17 @@ dependencies = [ "proc-macro2", "pulldown-cmark", "regex", - "semver 1.0.23", - "syn 2.0.87", + "semver 1.0.27", + "syn 2.0.114", "toml", "url", ] [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vsimd" @@ -8217,12 +8091,12 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "vsock" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e8b4d00e672f147fc86a09738fadb1445bd1c0a40542378dfb82909deeee688" +checksum = "e2da6e4ac76cd19635dce0f98985378bb62f8044ee2ff80abd2a7334b920ed63" dependencies = [ "libc", - "nix 0.29.0", + "nix 0.30.1", ] [[package]] @@ -8246,17 +8120,17 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -8267,47 +8141,36 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8315,22 +8178,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.87", - "wasm-bindgen-backend", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" dependencies = [ "unicode-ident", ] @@ -8342,14 +8205,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a10e6b67c951a84de7029487e0e0a496860dae49f6699edd279d5ff35b8fbf54" dependencies = [ "deno_error", - "thiserror 2.0.14", + "thiserror 2.0.18", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", @@ -8372,27 +8235,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "974fa1e325e6cc5327de8887f189a441fcff4f8eedcd31ec87f0ef0cc5283fbc" dependencies = [ "bytes", - "http 1.1.0", - "thiserror 2.0.14", + "http 1.4.0", + "thiserror 2.0.18", "url", ] [[package]] name = "webpki-root-certs" -version = "0.26.6" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.5", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6dfa3ac045bc517de14c7b1384298de1dbd229d38e08e169d9ae8c170937c" +checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "rustls-pki-types", + "webpki-roots 1.0.5", ] [[package]] @@ -8404,6 +8276,12 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + [[package]] name = "wgpu-core" version = "28.0.0" @@ -8413,12 +8291,12 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.9.0", + "bitflags 2.10.0", "bytemuck", "cfg_aliases", "document-features", "hashbrown 0.16.1", - "indexmap 2.9.0", + "indexmap 2.13.0", "log", "macro_rules_attribute", "naga", @@ -8430,7 +8308,7 @@ dependencies = [ "rustc-hash 1.1.0", "serde", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.18", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", @@ -8475,7 +8353,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.9.0", + "bitflags 2.10.0", "block", "bytemuck", "cfg-if", @@ -8489,25 +8367,25 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.5", + "libloading 0.8.9", "log", "metal", "naga", "ndk-sys", "objc", "once_cell", - "ordered-float 4.6.0", + "ordered-float 5.1.0", "parking_lot", "profiling", "range-alloc", "raw-window-handle", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.18", "wasm-bindgen", "web-sys", "wgpu-types", - "windows 0.62.2", - "windows-core 0.62.2", + "windows", + "windows-core", ] [[package]] @@ -8516,7 +8394,7 @@ version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", "bytemuck", "js-sys", "log", @@ -8533,18 +8411,18 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.44", ] [[package]] name = "which" -version = "6.0.1" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix", + "rustix 0.38.44", "winsafe", ] @@ -8556,30 +8434,20 @@ checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" [[package]] name = "whoami" -version = "1.5.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall 0.5.3", + "libredox", "wasite", "web-sys", ] -[[package]] -name = "wide" -version = "0.7.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" -dependencies = [ - "bytemuck", - "safe_arch", -] - [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -8599,11 +8467,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -8612,16 +8480,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.62.2" @@ -8629,7 +8487,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core 0.62.2", + "windows-core", "windows-future", "windows-numerics", ] @@ -8640,20 +8498,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core 0.62.2", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core", ] [[package]] @@ -8662,11 +8507,11 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", + "windows-implement", + "windows-interface", "windows-link", - "windows-result 0.4.1", - "windows-strings 0.5.1", + "windows-result", + "windows-strings", ] [[package]] @@ -8675,22 +8520,11 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.62.2", + "windows-core", "windows-link", "windows-threading", ] -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "windows-implement" version = "0.60.2" @@ -8699,18 +8533,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -8721,7 +8544,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -8736,19 +8559,10 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.62.2", + "windows-core", "windows-link", ] -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.4.1" @@ -8758,16 +8572,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-strings" version = "0.5.1" @@ -8804,6 +8608,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -8828,13 +8650,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows-threading" version = "0.2.1" @@ -8856,6 +8695,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -8868,6 +8713,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -8880,12 +8731,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -8898,6 +8761,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -8910,6 +8779,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -8922,6 +8797,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -8934,6 +8815,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" version = "0.5.40" @@ -8960,25 +8847,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] name = "writeable" @@ -9026,15 +8898,15 @@ dependencies = [ "nom 7.1.3", "oid-registry", "rusticata-macros", - "thiserror 1.0.66", + "thiserror 1.0.69", "time", ] [[package]] name = "xml-rs" -version = "0.8.23" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "yansi" @@ -9044,13 +8916,13 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive 0.7.4", + "yoke-derive 0.7.5", "zerofrom", ] @@ -9067,14 +8939,14 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", - "synstructure 0.13.1", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] @@ -9085,89 +8957,69 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", - "synstructure 0.13.1", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "71ddd76bcebeed25db614f82bf31a9f4222d3fbba300e6fb6c00afa26cbd4d9d" dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" -dependencies = [ - "zerocopy-derive 0.8.27", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "d8187381b52e32220d50b255276aa16a084ec0a9017a0ca2152a1f55c539758d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", - "synstructure 0.13.1", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] @@ -9181,17 +9033,6 @@ dependencies = [ "zerofrom", ] -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke 0.7.4", - "zerofrom", - "zerovec-derive 0.10.3", -] - [[package]] name = "zerovec" version = "0.11.5" @@ -9201,30 +9042,25 @@ dependencies = [ "serde", "yoke 0.8.1", "zerofrom", - "zerovec-derive 0.11.2", + "zerovec-derive", ] [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.114", ] [[package]] -name = "zerovec-derive" -version = "0.11.2" +name = "zmij" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] +checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" [[package]] name = "zoneinfo64" @@ -9241,15 +9077,15 @@ dependencies = [ [[package]] name = "zune-core" -version = "0.4.12" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-jpeg" -version = "0.4.14" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" +checksum = "2959ca473aae96a14ecedf501d20b3608d2825ba280d5adb57d651721885b0c2" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index ff1b7def..8488543f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -169,9 +169,9 @@ async-trait = "^0.1.89" paste = "1.0.15" # The deno runtime itself, and the webidl extension for the web APIs -deno_core = "^0.376.0" +deno_core = "^0.380.1" deno_error = "=0.7.1" -deno_features = "^0.23.0" +deno_features = "^0.25.0" # For transpiling typescript deno_ast = { version = "^0.52.0", features = ["transpiling", "cjs"] } @@ -189,7 +189,7 @@ rustls = {version = "0.23.28", optional = true} # Upgraded to support axum 0.8+ reqwest = { version = "^0.12.20", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } http = { version = "^1.0", optional = true } -deno_permissions = { version = "^0.85.0", optional = true } +deno_permissions = { version = "^0.87.0", optional = true } # @@ -199,29 +199,29 @@ deno_permissions = { version = "^0.85.0", optional = true } deno_broadcast_channel = { version = "^0.216.0", optional = true } uuid = { version = "1.10.0", optional = true, features = ["v4"] } -deno_bundle_runtime = { version = "^0.13.0", optional = true } -deno_cache = { version = "^0.159.0", optional = true } +deno_bundle_runtime = { version = "^0.15.0", optional = true } +deno_cache = { version = "^0.161.0", optional = true } deno_console = { version = "^0.222.0", optional = true } -deno_cron = { version = "^0.106.0", optional = true } -deno_crypto = { version = "^0.240.0", optional = true } -deno_fetch = { version = "^0.250.0", optional = true } -deno_ffi = { version = "^0.213.0", optional = true } -deno_fs = { version = "^0.136.0", optional = true, features = ["sync_fs"] } -deno_http = { version = "^0.224.0", optional = true } -deno_kv = { version = "^0.134.0", optional = true } -deno_net = { version = "^0.218.0", optional = true } -deno_node = { version = "^0.164.0", optional = true } -deno_tls = { version = "^0.213.0", optional = true } +deno_cron = { version = "^0.108.0", optional = true } +deno_crypto = { version = "^0.242.0", optional = true } +deno_fetch = { version = "^0.252.0", optional = true } +deno_ffi = { version = "^0.215.0", optional = true } +deno_fs = { version = "^0.138.0", optional = true, features = ["sync_fs"] } +deno_http = { version = "^0.226.0", optional = true } +deno_kv = { version = "^0.136.0", optional = true } +deno_net = { version = "^0.220.0", optional = true } +deno_node = { version = "^0.166.0", optional = true } +deno_tls = { version = "^0.215.0", optional = true } deno_url = { version = "^0.222.0", optional = true } -deno_web = { version = "^0.257.0", optional = true } -deno_webidl = { version = "^0.226.0", optional = true } -deno_webstorage = { version = "^0.221.0", optional = true } -deno_websocket = { version = "^0.231.0", optional = true } -deno_webgpu = { version = "^0.193.0", optional = true } +deno_web = { version = "^0.259.0", optional = true } +deno_webidl = { version = "^0.228.0", optional = true } +deno_webstorage = { version = "^0.223.0", optional = true } +deno_websocket = { version = "^0.233.0", optional = true } +deno_webgpu = { version = "^0.195.0", optional = true } -deno_io = { version = "^0.136.0", optional = true } -deno_telemetry = { version = "^0.48.0", optional = true } +deno_io = { version = "^0.138.0", optional = true } +deno_telemetry = { version = "^0.50.0", optional = true } # Dependencies for the IO feature rustyline = {version = "=13.0.0", optional = true} @@ -238,17 +238,17 @@ once_cell = {version = "^1.17.1", optional = true} base64-simd = {version = "0.8.0", optional = true} # Dependencies for the node feature -deno_resolver = { version = "^0.57.0", optional = true } -node_resolver = { version = "^0.64.0", optional = true, features = ["sync"] } -deno_runtime = { version = "^0.234.0", optional = true, features = ["exclude_runtime_main_js"] } +deno_resolver = { version = "^0.59.0", optional = true } +node_resolver = { version = "^0.66.0", optional = true, features = ["sync"] } +deno_runtime = { version = "^0.236.0", optional = true, features = ["exclude_runtime_main_js"] } deno_terminal = { version = "^0.2.3", optional = true } deno_semver = { version = "^0.9.1", optional = true } -deno_napi = { version = "^0.157.0", optional = true } -deno_npm = { version = "^0.42.2", optional = true } -deno_process = { version = "^0.41.0", optional = true } -deno_package_json = { version = "^0.28.0", optional = true } +deno_napi = { version = "^0.159.0", optional = true } +deno_npm = { version = "^0.43.0", optional = true } +deno_process = { version = "^0.43.0", optional = true } +deno_package_json = { version = "^0.30.0", optional = true } checksum = { version = "0.2.1", optional = true } -sys_traits = { version = "=0.1.17", optional = true, features = ["libc", "real", "winapi"] } +sys_traits = { version = "=0.1.22", optional = true, features = ["libc", "real", "winapi"] } [dev-dependencies] version-sync = "0.9.5" diff --git a/examples/test_borrow_mut_error.rs b/examples/test_borrow_mut_error.rs deleted file mode 100644 index 60ba2a0c..00000000 --- a/examples/test_borrow_mut_error.rs +++ /dev/null @@ -1,93 +0,0 @@ -// This example tests for the BorrowMutError bug in deno_core 0.376.0 -// -// Issue: When executing JavaScript that throws a ReferenceError, -// deno_core panics with "already borrowed: BorrowMutError" -// instead of properly returning the error. -// -// Expected behavior: The error should be returned as Err(...) -// Actual behavior (in buggy versions): Process panics/aborts - -use rustyscript::{Module, Runtime, RuntimeOptions}; -use std::time::Duration; - -fn main() { - println!("=== Testing for deno_core BorrowMutError bug ===\n"); - - // Create a basic Runtime with minimal configuration - let options = RuntimeOptions { - timeout: Duration::from_secs(5), - ..Default::default() - }; - - let mut runtime = Runtime::new(options).expect("Failed to create runtime"); - - // Test 1: ReferenceError from accessing undefined variable - println!("Test 1: ReferenceError from accessing undefined variable"); - test_error_handling( - &mut runtime, - r#" - // This should throw a ReferenceError - undefinedVariable.toString(); - "#, - "test_undefined_variable.js", - ); - - // Test 2: TypeError from calling non-function - println!("\nTest 2: TypeError from calling non-function"); - test_error_handling( - &mut runtime, - r#" - // This should throw a TypeError - const notAFunction = "I am not a function"; - notAFunction(); - "#, - "test_type_error.js", - ); - - // Test 3: Syntax error - println!("\nTest 3: Syntax error"); - test_error_handling( - &mut runtime, - r#" - // This should throw a SyntaxError - const x = ; - "#, - "test_syntax_error.js", - ); - - // Test 4: Range error - println!("\nTest 4: Range error"); - test_error_handling( - &mut runtime, - r#" - // This should throw a RangeError - function recursiveFunction() { - recursiveFunction(); - } - recursiveFunction(); - "#, - "test_range_error.js", - ); - - println!("\n=== All tests passed! No BorrowMutError detected ==="); -} - -fn test_error_handling(runtime: &mut Runtime, code: &str, module_name: &str) { - let module = Module::new(module_name, code); - - print!(" Loading module '{}' (expected to fail)... ", module_name); - let result = runtime.load_module(&module); - - match result { - Ok(_) => { - println!("❌ UNEXPECTED: Module loaded successfully (should have failed)"); - std::process::exit(1); - } - Err(e) => { - println!( - "✓ Correctly returned error: {}", - e.to_string().lines().next().unwrap_or("Unknown error") - ); - } - } -} diff --git a/src/ext/runtime/mod.rs b/src/ext/runtime/mod.rs index 70cbfdd0..6e3e0714 100644 --- a/src/ext/runtime/mod.rs +++ b/src/ext/runtime/mod.rs @@ -12,7 +12,8 @@ use deno_telemetry::OtelConfig; use sys_traits::impls::RealSys; use super::{ - node::resolvers::RustyResolver, web::PermissionsContainer, ExtensionOptions, ExtensionTrait, + node::resolvers::RustyResolver, web::PermissionsContainer, web::to_permissions_options, + ExtensionOptions, ExtensionTrait, }; use crate::module_loader::{LoaderOptions, RustyLoader}; @@ -20,7 +21,15 @@ fn build_permissions( permissions_container: &PermissionsContainer, ) -> ::deno_permissions::PermissionsContainer { let parser = Arc::new(RuntimePermissionDescriptorParser::::new(RealSys)); - ::deno_permissions::PermissionsContainer::new(parser, Permissions::allow_all()) + let opts = to_permissions_options(permissions_container.0.as_ref()); + + match Permissions::from_options(&*parser, &opts) { + Ok(perms) => ::deno_permissions::PermissionsContainer::new(parser, perms), + Err(_) => { + // Fallback for backward compatibility + ::deno_permissions::PermissionsContainer::new(parser, Permissions::allow_all()) + } + } } // Some of the polyfills reference the denoland/deno runtime directly diff --git a/src/ext/web/mod.rs b/src/ext/web/mod.rs index 3aafdbd3..1ab22b72 100644 --- a/src/ext/web/mod.rs +++ b/src/ext/web/mod.rs @@ -11,7 +11,8 @@ mod permissions; pub(crate) use permissions::PermissionsContainer; pub use permissions::{ AllowlistWebPermissions, CheckedPath, DefaultWebPermissions, PermissionCheckError, - PermissionDeniedError, SystemsPermissionKind, WebPermissions, + PermissionDeniedError, PermissionsOptions, SystemsPermissionKind, WebPermissions, + to_permissions_options, }; /// Stub for a node op deno_net expects to find @@ -114,10 +115,14 @@ extension!( permissions: Arc }, state = |state, config| { - state.put(PermissionsContainer(config.permissions)); + state.put(PermissionsContainer(config.permissions.clone())); if !state.has::() { let parser = Arc::new(deno_permissions::RuntimePermissionDescriptorParser::new(sys_traits::impls::RealSys)); - let permissions = deno_permissions::PermissionsContainer::allow_all(parser); + let opts = permissions::to_permissions_options(config.permissions.as_ref()); + let permissions = match deno_permissions::Permissions::from_options(&*parser, &opts) { + Ok(p) => deno_permissions::PermissionsContainer::new(parser, p), + Err(_) => deno_permissions::PermissionsContainer::allow_all(parser), + }; state.put(permissions); } }, diff --git a/src/ext/web/permissions.rs b/src/ext/web/permissions.rs index 44bb67ec..a23c820c 100644 --- a/src/ext/web/permissions.rs +++ b/src/ext/web/permissions.rs @@ -7,6 +7,7 @@ use std::{ pub use deno_permissions::{ CheckedPath, PermissionCheckError, PermissionDeniedError, PermissionState, + PermissionsOptions, }; pub fn oops(msg: impl std::fmt::Display) -> PermissionCheckError { @@ -639,3 +640,70 @@ impl_sys_permission_kinds!( #[allow(dead_code)] #[derive(Clone, Debug)] pub struct PermissionsContainer(pub Arc); + +/// Convert WebPermissions to deno_permissions::PermissionsOptions +/// +/// This function probes the WebPermissions trait methods to determine +/// what should be allowed, then converts to PermissionsOptions format. +/// +/// - For `DefaultWebPermissions` (or equivalent allow-all): returns options that allow everything +/// - For restrictive permissions (e.g., `AllowlistWebPermissions`): returns options that deny by default +pub fn to_permissions_options(perms: &dyn WebPermissions) -> PermissionsOptions { + // Probe to detect if this is an allow-all implementation + // We test multiple permission categories to be thorough + let is_allow_all = perms.allow_hrtime() + && perms.check_read_all(None).is_ok() + && perms.check_write_all("probe").is_ok() + && perms.check_host("0.0.0.0", Some(0), "probe").is_ok() + && perms.check_env("__PROBE__").is_ok() + && perms.check_exec().is_ok(); + + if is_allow_all { + // DefaultWebPermissions or equivalent - allow everything + PermissionsOptions { + allow_read: Some(vec![]), + deny_read: None, + ignore_read: None, + allow_write: Some(vec![]), + deny_write: None, + allow_net: Some(vec![]), + deny_net: None, + allow_env: Some(vec![]), + deny_env: None, + ignore_env: None, + allow_sys: Some(vec![]), + deny_sys: None, + allow_ffi: Some(vec![]), + deny_ffi: None, + allow_run: Some(vec![]), + deny_run: None, + allow_import: Some(vec![]), + deny_import: None, + prompt: false, + } + } else { + // Restrictive permissions - deny everything by default + // The deno extensions will check permissions and deny operations + PermissionsOptions { + allow_read: None, + deny_read: None, + ignore_read: None, + allow_write: None, + deny_write: None, + allow_net: None, + deny_net: None, + allow_env: None, + deny_env: None, + ignore_env: None, + allow_sys: None, + deny_sys: None, + allow_ffi: None, + deny_ffi: None, + allow_run: None, + deny_run: None, + allow_import: Some(vec![]), // Allow imports by default for module loading + deny_import: None, + prompt: false, + } + } +} diff --git a/src/lib.rs b/src/lib.rs index 801a1881..698c0d3b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -407,7 +407,8 @@ pub use ext::node::resolvers::RustyResolver; #[cfg_attr(docsrs, doc(cfg(feature = "web")))] pub use ext::web::{ AllowlistWebPermissions, CheckedPath, DefaultWebPermissions, PermissionCheckError, - PermissionDeniedError, SystemsPermissionKind, WebOptions, WebPermissions, + PermissionDeniedError, PermissionsOptions, SystemsPermissionKind, WebOptions, WebPermissions, + to_permissions_options, }; pub use ext::ExtensionOptions; diff --git a/src/utilities.rs b/src/utilities.rs index 85796d92..b6cbc79b 100644 --- a/src/utilities.rs +++ b/src/utilities.rs @@ -149,7 +149,7 @@ mod runtime_macros { /// rustyscript.register_entrypoint(load); /// "); /// - /// Runtime::execute_module( + /// Runtime::execute_module::<()>( /// &module, vec![], /// Default::default(), /// json_args!("test", 5) @@ -186,7 +186,7 @@ mod runtime_macros { /// rustyscript.register_entrypoint(load); /// "); /// - /// Runtime::execute_module( + /// Runtime::execute_module::<()>( /// &module, vec![], /// Default::default(), /// big_json_args!("test", 5) diff --git a/tests/borrow_mut_error.rs b/tests/borrow_mut_error.rs new file mode 100644 index 00000000..52c82a46 --- /dev/null +++ b/tests/borrow_mut_error.rs @@ -0,0 +1,158 @@ +//! Regression tests for the BorrowMutError bug in deno_core 0.376.0 +//! +//! Issue: When executing JavaScript that throws errors (ReferenceError, TypeError, etc.), +//! deno_core should return the error properly instead of panicking with +//! "already borrowed: BorrowMutError". +//! +//! These tests verify that various JavaScript errors are correctly returned as Err(...) +//! rather than causing a panic. + +use rustyscript::{Module, Runtime, RuntimeOptions}; +use std::time::Duration; + +fn create_runtime() -> Runtime { + let options = RuntimeOptions { + timeout: Duration::from_secs(5), + ..Default::default() + }; + Runtime::new(options).expect("Failed to create runtime") +} + +/// Test that ReferenceError from accessing undefined variable is properly returned +#[test] +fn test_reference_error_handling() { + let mut runtime = create_runtime(); + + let module = Module::new( + "test_undefined_variable.js", + r#" + // This should throw a ReferenceError + undefinedVariable.toString(); + "#, + ); + + let result = runtime.load_module(&module); + assert!( + result.is_err(), + "Expected ReferenceError but module loaded successfully" + ); + + let error_msg = result.unwrap_err().to_string(); + assert!( + error_msg.contains("ReferenceError") || error_msg.contains("undefinedVariable"), + "Expected ReferenceError message, got: {}", + error_msg + ); +} + +/// Test that TypeError from calling non-function is properly returned +#[test] +fn test_type_error_handling() { + let mut runtime = create_runtime(); + + let module = Module::new( + "test_type_error.js", + r#" + // This should throw a TypeError + const notAFunction = "I am not a function"; + notAFunction(); + "#, + ); + + let result = runtime.load_module(&module); + assert!( + result.is_err(), + "Expected TypeError but module loaded successfully" + ); + + let error_msg = result.unwrap_err().to_string(); + assert!( + error_msg.contains("TypeError") || error_msg.contains("not a function"), + "Expected TypeError message, got: {}", + error_msg + ); +} + +/// Test that SyntaxError is properly returned +#[test] +fn test_syntax_error_handling() { + let mut runtime = create_runtime(); + + let module = Module::new( + "test_syntax_error.js", + r#" + // This should throw a SyntaxError + const x = ; + "#, + ); + + let result = runtime.load_module(&module); + assert!( + result.is_err(), + "Expected SyntaxError but module loaded successfully" + ); + + let error_msg = result.unwrap_err().to_string(); + assert!( + error_msg.contains("SyntaxError") || error_msg.contains("Unexpected token"), + "Expected SyntaxError message, got: {}", + error_msg + ); +} + +/// Test that RangeError (stack overflow) is properly returned +#[test] +fn test_range_error_handling() { + let mut runtime = create_runtime(); + + let module = Module::new( + "test_range_error.js", + r#" + // This should throw a RangeError (stack overflow) + function recursiveFunction() { + recursiveFunction(); + } + recursiveFunction(); + "#, + ); + + let result = runtime.load_module(&module); + assert!( + result.is_err(), + "Expected RangeError but module loaded successfully" + ); + + let error_msg = result.unwrap_err().to_string(); + assert!( + error_msg.contains("RangeError") + || error_msg.contains("stack") + || error_msg.contains("recursion"), + "Expected RangeError/stack overflow message, got: {}", + error_msg + ); +} + +/// Test that multiple errors in sequence don't cause BorrowMutError +#[test] +fn test_multiple_errors_in_sequence() { + let mut runtime = create_runtime(); + + // First error + let module1 = Module::new("error1.js", "undefinedVar1.foo();"); + assert!(runtime.load_module(&module1).is_err()); + + // Second error - should not panic with BorrowMutError + let module2 = Module::new("error2.js", "undefinedVar2.bar();"); + assert!(runtime.load_module(&module2).is_err()); + + // Third error + let module3 = Module::new("error3.js", "const x = ;"); + assert!(runtime.load_module(&module3).is_err()); + + // Runtime should still be usable after errors + let valid_module = Module::new("valid.js", "export const value = 42;"); + assert!( + runtime.load_module(&valid_module).is_ok(), + "Runtime should still work after handling errors" + ); +} diff --git a/tests/permissions.rs b/tests/permissions.rs new file mode 100644 index 00000000..c3e42cbf --- /dev/null +++ b/tests/permissions.rs @@ -0,0 +1,170 @@ +//! Integration tests for WebPermissions system +//! +//! These tests verify that user-supplied WebPermissions are correctly +//! connected to the deno permission system and actually restrict operations. + +use rustyscript::{Module, Runtime, RuntimeOptions}; +use std::sync::Arc; +use std::time::Duration; + +#[cfg(feature = "web")] +use rustyscript::{ + AllowlistWebPermissions, DefaultWebPermissions, ExtensionOptions, WebOptions, + to_permissions_options, +}; + +/// Test that AllowlistWebPermissions with no allowed hosts blocks fetch +#[test] +#[cfg(feature = "web")] +fn test_allowlist_blocks_fetch() { + let permissions = AllowlistWebPermissions::new(); + // Don't allow any hosts - everything should be blocked + + let mut runtime = Runtime::new(RuntimeOptions { + timeout: Duration::from_secs(10), + extension_options: ExtensionOptions { + web: WebOptions { + permissions: Arc::new(permissions), + ..Default::default() + }, + ..Default::default() + }, + ..Default::default() + }) + .expect("Failed to create runtime"); + + let module = Module::new( + "test_blocked_fetch.js", + r#" + export async function test() { + try { + await fetch('https://example.com'); + return { blocked: false, error: null }; + } catch (e) { + return { blocked: true, error: e.message }; + } + } + "#, + ); + + let handle = runtime.load_module(&module).expect("Failed to load module"); + let result: rustyscript::serde_json::Value = runtime + .call_function(Some(&handle), "test", rustyscript::json_args!()) + .expect("Failed to call function"); + + assert!( + result["blocked"].as_bool().unwrap_or(false), + "Fetch should have been blocked by permissions. Got: {:?}", + result + ); + + // Verify the error message mentions permission or network restriction + let error_msg = result["error"].as_str().unwrap_or(""); + assert!( + error_msg.to_lowercase().contains("permission") + || error_msg.to_lowercase().contains("denied") + || error_msg.to_lowercase().contains("not allowed") + || error_msg.to_lowercase().contains("network") + || error_msg.contains("Requires net access") // deno_permissions message + || error_msg.contains("--allow-net"), // deno flag suggestion + "Error should mention permission denial. Got: {}", + error_msg + ); +} + +/// Test that DefaultWebPermissions (via default RuntimeOptions) allows fetch +#[test] +#[cfg(feature = "web")] +fn test_default_permissions_allow_fetch() { + // Use default options which should use DefaultWebPermissions (allow all) + let mut runtime = Runtime::new(RuntimeOptions { + timeout: Duration::from_secs(30), + ..Default::default() + }) + .expect("Failed to create runtime"); + + let module = Module::new( + "test_allowed_fetch.js", + r#" + export async function test() { + try { + // Use a reliable test endpoint + const response = await fetch('https://httpbin.org/get'); + return { success: response.ok, status: response.status }; + } catch (e) { + return { success: false, error: e.message }; + } + } + "#, + ); + + let handle = runtime.load_module(&module).expect("Failed to load module"); + let result: rustyscript::serde_json::Value = runtime + .call_function(Some(&handle), "test", rustyscript::json_args!()) + .expect("Failed to call function"); + + assert!( + result["success"].as_bool().unwrap_or(false), + "Fetch should succeed with default permissions. Got: {:?}", + result + ); +} + +/// Test that to_permissions_options correctly detects DefaultWebPermissions as allow-all +#[test] +#[cfg(feature = "web")] +fn test_to_permissions_options_default() { + let default_perms = DefaultWebPermissions; + let opts = to_permissions_options(&default_perms); + + // DefaultWebPermissions should result in allow-all options + assert!( + opts.allow_read.is_some(), + "allow_read should be Some for DefaultWebPermissions" + ); + assert!( + opts.allow_write.is_some(), + "allow_write should be Some for DefaultWebPermissions" + ); + assert!( + opts.allow_net.is_some(), + "allow_net should be Some for DefaultWebPermissions" + ); + assert!( + opts.allow_env.is_some(), + "allow_env should be Some for DefaultWebPermissions" + ); +} + +/// Test that to_permissions_options correctly detects AllowlistWebPermissions as restrictive +#[test] +#[cfg(feature = "web")] +fn test_to_permissions_options_allowlist() { + let allowlist_perms = AllowlistWebPermissions::new(); + // Don't allow anything + let opts = to_permissions_options(&allowlist_perms); + + // AllowlistWebPermissions with no allowances should result in deny-all options + assert!( + opts.allow_read.is_none(), + "allow_read should be None for empty AllowlistWebPermissions" + ); + assert!( + opts.allow_write.is_none(), + "allow_write should be None for empty AllowlistWebPermissions" + ); + assert!( + opts.allow_net.is_none(), + "allow_net should be None for empty AllowlistWebPermissions" + ); + assert!( + opts.allow_env.is_none(), + "allow_env should be None for empty AllowlistWebPermissions" + ); + + // Import should still be allowed for module loading + assert!( + opts.allow_import.is_some(), + "allow_import should be Some even for restrictive permissions" + ); +}