diff --git a/.sampo/changesets/haughty-forgemaster-aurelien.md b/.sampo/changesets/haughty-forgemaster-aurelien.md new file mode 100644 index 00000000..be5e2f50 --- /dev/null +++ b/.sampo/changesets/haughty-forgemaster-aurelien.md @@ -0,0 +1,5 @@ +--- +cargo/maudit: patch +--- + +Adds support for Rolldown 1.0 RC diff --git a/Cargo.lock b/Cargo.lock index 1bce2994..b666895b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,30 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -57,7 +81,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -67,9 +106,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" @@ -80,6 +119,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -102,9 +150,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "append-only-vec" @@ -141,7 +189,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -184,7 +232,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -235,9 +283,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" +checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" dependencies = [ "arrayvec", ] @@ -309,13 +357,22 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64-simd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" +dependencies = [ + "simd-abstraction", +] + [[package]] name = "base64-simd" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" dependencies = [ - "outref", + "outref 0.5.2", "vsimd", ] @@ -357,9 +414,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" dependencies = [ "serde_core", ] @@ -410,14 +467,14 @@ dependencies = [ [[package]] name = "brk_rolldown" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c59974a49863697b5583a3292bcbe05cffb068a0ddda317b5f09ac01880b675" +checksum = "a4752aef63de6ce65ab8f2eaad552ee44bdfe26d0dcf4c121880ca135e8cd72c" dependencies = [ "anyhow", "append-only-vec", "arcstr", - "bitflags 2.10.0", + "bitflags 2.11.0", "brk_rolldown_common", "brk_rolldown_dev_common", "brk_rolldown_devtools", @@ -427,7 +484,8 @@ dependencies = [ "brk_rolldown_fs", "brk_rolldown_plugin", "brk_rolldown_plugin_chunk_import_map", - "brk_rolldown_plugin_data_uri", + "brk_rolldown_plugin_copy_module", + "brk_rolldown_plugin_data_url", "brk_rolldown_plugin_hmr", "brk_rolldown_plugin_lazy_compilation", "brk_rolldown_plugin_oxc_runtime", @@ -438,10 +496,10 @@ dependencies = [ "brk_rolldown_utils", "brk_string_wizard", "commondir", - "css-module-lexer", + "dashmap 6.1.0", "futures", "indexmap", - "itertools", + "itertools 0.14.0", "itoa", "json-escape-simd", "memchr", @@ -452,7 +510,6 @@ dependencies = [ "oxc_traverse", "petgraph", "rayon", - "rolldown-notify", "rustc-hash", "serde", "serde_json", @@ -465,23 +522,23 @@ dependencies = [ [[package]] name = "brk_rolldown_common" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "315da1c9e3a7ea47ce60339177eea8e2ad6e1019aa26b7d15a0d0aef0e42d886" +checksum = "7a18f4832f04c25263cb21acd412309cce96fe18836e6a1ba1457d7c3c3bd550" dependencies = [ "anyhow", "arcstr", - "bitflags 2.10.0", + "bitflags 2.11.0", "brk_rolldown_ecmascript", "brk_rolldown_error", "brk_rolldown_sourcemap", "brk_rolldown_std_utils", "brk_rolldown_utils", "brk_string_wizard", - "dashmap", + "dashmap 6.1.0", "derive_more", "fast-glob", - "itertools", + "itertools 0.14.0", "num-bigint", "oxc", "oxc_ecmascript", @@ -497,9 +554,9 @@ dependencies = [ [[package]] name = "brk_rolldown_dev_common" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f4e0044871873810d136770d070acab9d80c9a2d0f65ff1caae778be55f01b" +checksum = "d6a1586919a4b6fc6f91c605b8cbe444eafc1a6ba8938823d5defdcebe7e6c28" dependencies = [ "brk_rolldown_common", "brk_rolldown_error", @@ -508,13 +565,13 @@ dependencies = [ [[package]] name = "brk_rolldown_devtools" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca26431eb07e95ba3c65860b0a76be6d17cd2992d7da114ae0286c63ee527a5" +checksum = "b6aee3e34c770d77e3b4b8359f7c024325616f4b91409818fc928dc224ee12d3" dependencies = [ "blake3", "brk_rolldown_devtools_action", - "dashmap", + "dashmap 6.1.0", "rustc-hash", "serde", "serde_json", @@ -524,9 +581,9 @@ dependencies = [ [[package]] name = "brk_rolldown_devtools_action" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b4530239d43ee51d96151c31884c747d0e7aa7ee5fe12ba673854f3bde1460" +checksum = "e3fbdb1c831cf9f76df16b985ce9d5ac3372f11515c15ffe7f10d6de51b37aab" dependencies = [ "serde", "ts-rs", @@ -534,9 +591,9 @@ dependencies = [ [[package]] name = "brk_rolldown_ecmascript" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e658a6dd55cfa2d7b8747d7515efb3703da2172d65fde07068b92d9e1f7b0df6" +checksum = "ce13ef68806f3cc8bebcd93bed28b9d15d10a15313eccd6512e49595e53c2032" dependencies = [ "arcstr", "brk_rolldown_error", @@ -547,25 +604,26 @@ dependencies = [ [[package]] name = "brk_rolldown_ecmascript_utils" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a4d59d600016843aa502a7fbe2778598fe92f934a87d9f7aeb20d840fcadf9" +checksum = "9556e74fa418bc26a11e6e7726c17ef35fe4e7416f7465b493fcc2825d58e529" dependencies = [ "brk_rolldown_common", "brk_rolldown_utils", + "memchr", "oxc", "smallvec", ] [[package]] name = "brk_rolldown_error" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f96089242b4a06e9cb66e9425246c1ca15afb1dd05390b6e9d08016bb11421" +checksum = "a1c4216f89f8de94b46efbdb70efd25a78c279340a0e4c80ef63324e9fe7ca83" dependencies = [ "anyhow", "arcstr", - "bitflags 2.10.0", + "bitflags 2.11.0", "derive_more", "heck", "oxc", @@ -578,9 +636,9 @@ dependencies = [ [[package]] name = "brk_rolldown_fs" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af54a43116ab3a78777337bf779c8fa784cf3ac495e3429c16bd3b49fc8b351" +checksum = "d54d15d47dba50da764d639633f22a1fa5cd1c77ca6847dfaed890a450e9111c" dependencies = [ "oxc_resolver", "vfs", @@ -588,14 +646,14 @@ dependencies = [ [[package]] name = "brk_rolldown_plugin" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82aa5428ad77c0b581e98ab0c0a774e66682c8a21c9b25b58c632931ae11cf6c" +checksum = "93afa8b4f10155fc255d88ffe1f7a24b7fdef5c40fe85bd7ffb4b171a97f9c85" dependencies = [ "anyhow", "arcstr", "async-trait", - "bitflags 2.10.0", + "bitflags 2.11.0", "brk_rolldown_common", "brk_rolldown_devtools", "brk_rolldown_ecmascript", @@ -604,7 +662,7 @@ dependencies = [ "brk_rolldown_sourcemap", "brk_rolldown_utils", "brk_string_wizard", - "dashmap", + "dashmap 6.1.0", "derive_more", "nodejs-built-in-modules", "oxc_index", @@ -619,9 +677,9 @@ dependencies = [ [[package]] name = "brk_rolldown_plugin_chunk_import_map" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b84c39707298c248ffafaf2e66cf55e847b8dffa7d67a34af0a7646b965d47" +checksum = "1a095be8635ec4d1b6e17bf8c25175df2a0fc265c31c1fc9f48426ed20a5f082" dependencies = [ "arcstr", "brk_rolldown_common", @@ -633,13 +691,31 @@ dependencies = [ ] [[package]] -name = "brk_rolldown_plugin_data_uri" -version = "0.8.0" +name = "brk_rolldown_plugin_copy_module" +version = "1.0.0-rc.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca37b4617c29b7b44e89064e4bfeb340d07918c39bc0475be74c85f5b5437dff" +dependencies = [ + "anyhow", + "arcstr", + "brk_rolldown_common", + "brk_rolldown_plugin", + "brk_rolldown_utils", + "brk_string_wizard", + "memchr", + "rustc-hash", + "sugar_path", + "tokio", +] + +[[package]] +name = "brk_rolldown_plugin_data_url" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a767b657b6d5911a296164bf219949463a275a48a717d88736c98857565104c" +checksum = "9fafcea24789cc5fede02e2432e438d422776e6f239d1de91f2b115d18d796c4" dependencies = [ "arcstr", - "base64-simd", + "base64-simd 0.8.0", "brk_rolldown_common", "brk_rolldown_plugin", "brk_rolldown_utils", @@ -649,21 +725,19 @@ dependencies = [ [[package]] name = "brk_rolldown_plugin_hmr" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3a79c3092a390ea4a447bdf4963feeefe8dca32c4d59b113ca9d0317d1fd99" +checksum = "7fe97a20b3fd6e0a851ea1fa7114ec659d065eceaf810da8dfe99de7ddb01111" dependencies = [ - "arcstr", "brk_rolldown_common", "brk_rolldown_plugin", - "oxc", ] [[package]] name = "brk_rolldown_plugin_lazy_compilation" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e1ca134fde27ea05ce0b743a1b37c908342c6449353ec966e3bbb4a383c1c9" +checksum = "6688b34ed78a95cdec2aa323c114ae98a3e0fd63c2706c6b334e3fcef1f06b13" dependencies = [ "anyhow", "arcstr", @@ -675,21 +749,21 @@ dependencies = [ [[package]] name = "brk_rolldown_plugin_oxc_runtime" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5127d5c297804b583958eb562f9aab0dbd837536dbec6bd1abfa484c0f379ebe" +checksum = "07279565604d320e0639b41f5cbd349baa7a76ac92a9d8b1fc64268ba31b32af" dependencies = [ "arcstr", "brk_rolldown_plugin", "brk_rolldown_utils", - "phf", + "phf 0.13.1", ] [[package]] name = "brk_rolldown_plugin_replace" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6331fe3dfe7740a111ca37c3cf26f3633f9a10bdfdc92854656573632474e954" +checksum = "b129712c740a8313286be463d2ac1a18fcef6cd72740d0ac00bf5b255f28f25e" dependencies = [ "anyhow", "brk_rolldown_plugin", @@ -702,26 +776,26 @@ dependencies = [ [[package]] name = "brk_rolldown_resolver" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37c2fdb7fd680a137bc6f16f6c1bfbf49fd3d8177939ed7aedf3fb62b0cf8bb" +checksum = "752f0ac4f886be89786bc479ed720ee5a977429be5df63637fac3acc626f071b" dependencies = [ "anyhow", "arcstr", "brk_rolldown_common", "brk_rolldown_fs", "brk_rolldown_utils", - "dashmap", - "itertools", + "dashmap 6.1.0", + "itertools 0.14.0", "oxc_resolver", "sugar_path", ] [[package]] name = "brk_rolldown_sourcemap" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cdc7d8f4f2161dcd1f61ca1929cf1ef2328280cddb41bdba5a510064a83fa8e" +checksum = "c41c4bb7baef5fea43504088f221366be112fe56e421d38d965c8eb4405480df" dependencies = [ "brk_rolldown_utils", "memchr", @@ -732,18 +806,18 @@ dependencies = [ [[package]] name = "brk_rolldown_std_utils" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f589ea02774a6ca2641ad375123c001abda5403896ed3b21ef7614925aef4" +checksum = "b2a46366ba175e69b11549a97ea411828dfe86ce3610b6662d4bb9f18a82fa3c" dependencies = [ "regex", ] [[package]] name = "brk_rolldown_tracing" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64033001d5a5efe984f762b2ee51c968d05310d1a8de53e71cce91d1af1b0c" +checksum = "a824cdbde0cbbbea60841106e5142b20e33b7689bffb4185e49a777bf11920ae" dependencies = [ "tracing", "tracing-chrome", @@ -752,19 +826,19 @@ dependencies = [ [[package]] name = "brk_rolldown_utils" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4040e087114fe7c502a3f4f592e03b78e50515c36b3c9c3f7adcf227326eea65" +checksum = "b9b32f854b54793a2dd5a8baaf5e457c57afecd1d70d62d9c0d4bbd3b0efb870" dependencies = [ "anyhow", "arcstr", "async-scoped", "base-encode", - "base64-simd", + "base64-simd 0.8.0", "brk_rolldown_error", "brk_rolldown_std_utils", "cow-utils", - "dashmap", + "dashmap 6.1.0", "fast-glob", "form_urlencoded", "futures", @@ -776,7 +850,7 @@ dependencies = [ "nom", "oxc", "oxc_index", - "phf", + "phf 0.13.1", "rayon", "regex", "regress", @@ -791,9 +865,9 @@ dependencies = [ [[package]] name = "brk_string_wizard" -version = "0.8.0" +version = "1.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1340aa44bcaf15d553ee4bd9e07864102ea99ea5bccf8918ea898de760af7183" +checksum = "aea880edf02d0e407868ea7e26f0c81fa89bbc6ba129a80e56be2cfb22b858c4" dependencies = [ "memchr", "oxc_index", @@ -821,18 +895,37 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytecheck" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ - "allocator-api2", + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" [[package]] name = "byteorder" @@ -848,9 +941,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "camino" @@ -896,9 +989,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.53" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -931,9 +1024,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -945,9 +1038,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.54" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -955,11 +1048,11 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.54" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ - "anstream", + "anstream 1.0.0", "anstyle", "clap_lex", "strsim", @@ -968,21 +1061,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "0.7.7" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cobs" @@ -1029,11 +1122,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058167258e819b16a4ba601fdfe270349ef191154758dbce122c62a698f70ba8" dependencies = [ "divan-macros", - "itertools", + "itertools 0.14.0", "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1059,9 +1152,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "colored" @@ -1121,12 +1214,41 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" +[[package]] +name = "const-str" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21077772762a1002bb421c3af42ac1725fa56066bfc53d9a55bb79905df2aaf3" +dependencies = [ + "const-str-proc-macro", +] + +[[package]] +name = "const-str-proc-macro" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "constant_time_eq" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "convert_case" version = "0.10.0" @@ -1215,7 +1337,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crossterm_winapi", "derive_more", "document-features", @@ -1253,11 +1375,15 @@ dependencies = [ ] [[package]] -name = "css-module-lexer" -version = "0.0.15" +name = "cssparser" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b51940c54c6ca015d3add383571ec5610114466eb67aa0a27096e1dcf3c9e29" +checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.11.3", "smallvec", ] @@ -1270,10 +1396,19 @@ dependencies = [ "cssparser-macros", "dtoa-short", "itoa", - "phf", + "phf 0.13.1", "smallvec", ] +[[package]] +name = "cssparser-color" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556c099a61d85989d7af52b692e35a8d68a57e7df8c6d07563dc0778b3960c9f" +dependencies = [ + "cssparser 0.33.0", +] + [[package]] name = "cssparser-macros" version = "0.6.1" @@ -1281,7 +1416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1305,7 +1440,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -1316,7 +1451,20 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", ] [[package]] @@ -1339,6 +1487,15 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +[[package]] +name = "data-url" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] + [[package]] name = "depinfo" version = "0.7.3" @@ -1350,9 +1507,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -1375,7 +1532,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1385,7 +1542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn", + "syn 2.0.117", ] [[package]] @@ -1403,11 +1560,11 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "convert_case", + "convert_case 0.10.0", "proc-macro2", "quote", "rustc_version", - "syn", + "syn 2.0.117", "unicode-xid", ] @@ -1435,7 +1592,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1446,7 +1603,7 @@ checksum = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1460,9 +1617,9 @@ dependencies = [ [[package]] name = "dragonbox_ecma" -version = "0.0.5" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d742b56656e8b14d63e7ea9806597b1849ae25412584c8adf78c0f67bd985e66" +checksum = "fd8e701084c37e7ef62d3f9e453b618130cbc0ef3573847785952a3ac3f746bf" [[package]] name = "dtoa" @@ -1520,9 +1677,9 @@ checksum = "869b0adbda23651a9c5c0c3d270aac9fcb52e8622a8f2b17e57802d7791962f2" [[package]] name = "env_filter" -version = "0.1.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" dependencies = [ "log", "regex", @@ -1530,11 +1687,11 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "env_filter", "jiff", @@ -1558,7 +1715,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1599,15 +1756,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72cf461f865c862bb7dc573f643dd6a2b6842f7c30b07882b56bd148cc2761b8" dependencies = [ "bit-set", - "regex-automata 0.4.13", - "regex-syntax 0.8.8", + "regex-automata 0.4.14", + "regex-syntax 0.8.10", ] [[package]] name = "fast-glob" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d26eec0ae9682c457cb0f85de67ad417b716ae852736a5d94c2ad6e92a997c9" +checksum = "3b9e81515b0279bf618200fd15d132e7195d2048fb46eed6f0f3c10cbc068266" dependencies = [ "arrayvec", ] @@ -1635,7 +1792,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1658,21 +1815,20 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixedbitset" @@ -1698,9 +1854,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1760,9 +1916,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -1775,9 +1931,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1785,15 +1941,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1802,38 +1958,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -1843,7 +1999,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1894,10 +2049,23 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + [[package]] name = "getset" version = "0.1.6" @@ -1907,7 +2075,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1935,8 +2103,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.13", - "regex-syntax 0.8.8", + "regex-automata 0.4.14", + "regex-syntax 0.8.10", ] [[package]] @@ -1983,6 +2151,15 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -2089,12 +2266,11 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "bytes", - "futures-core", "http", "http-body", "hyper", @@ -2105,9 +2281,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2208,6 +2384,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -2237,9 +2419,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", @@ -2255,8 +2437,8 @@ dependencies = [ "rayon", "rgb", "tiff", - "zune-core 0.5.1", - "zune-jpeg 0.5.9", + "zune-core", + "zune-jpeg", ] [[package]] @@ -2308,11 +2490,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "inotify-sys", "libc", ] @@ -2328,11 +2510,11 @@ dependencies = [ [[package]] name = "inquire" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae51d5da01ce7039024fbdec477767c102c454dbdb09d4e2a432ece705b1b25d" +checksum = "6654738b8024300cf062d04a1c13c10c8e2cea598ec1c47dc9b6641159429756" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crossterm", "dyn-clone", "fuzzy-matcher", @@ -2348,7 +2530,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2357,6 +2539,15 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -2374,9 +2565,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.18" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -2389,13 +2580,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.18" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2425,9 +2616,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -2474,6 +2665,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "lebe" version = "0.5.3" @@ -2482,33 +2679,33 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libdeflate-sys" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bd6304ebf75390d8a99b88bdf2a266f62647838140cb64af8e6702f6e3fddc" +checksum = "72753e0008ea87963d2f0770042d0df7abe51fafbb8dcaf618ac440f2f1fec0a" dependencies = [ "cc", ] [[package]] name = "libdeflater" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d4880e6d634d3d029d65fa016038e788cc728a17b782684726fb34ee140caf" +checksum = "d1ee41cf6fb1bb6030dfb59ffb7bc01ab26aade44142084c87f0fc7a1658fe71" dependencies = [ "libdeflate-sys", ] [[package]] name = "libfuzzer-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" +checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" dependencies = [ "arbitrary", "cc", @@ -2516,13 +2713,14 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "libc", - "redox_syscall 0.7.0", + "plain", + "redox_syscall 0.7.3", ] [[package]] @@ -2535,6 +2733,46 @@ dependencies = [ "glob", ] +[[package]] +name = "lightningcss" +version = "1.0.0-alpha.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6314c2f0590ac93c86099b98bb7ba8abcf759bfd89604ffca906472bb54937" +dependencies = [ + "ahash 0.8.12", + "bitflags 2.11.0", + "const-str", + "cssparser 0.33.0", + "cssparser-color", + "dashmap 5.5.3", + "data-encoding", + "getrandom 0.3.4", + "indexmap", + "itertools 0.10.5", + "lazy_static", + "lightningcss-derive", + "parcel_selectors", + "parcel_sourcemap", + "pastey", + "pathdiff", + "rayon", + "serde", + "serde-content", + "smallvec", +] + +[[package]] +name = "lightningcss-derive" +version = "1.0.0-alpha.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12744d1279367caed41739ef094c325d53fb0ffcd4f9b84a368796f870252" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2543,9 +2781,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -2561,9 +2799,9 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "local-ip-address" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92488bc8a0f99ee9f23577bdd06526d49657df8bd70504c61f812337cdad01ab" +checksum = "79ef8c257c92ade496781a32a581d43e3d512cf8ce714ecf04ea80f93ed0ff4a" dependencies = [ "libc", "neli", @@ -2587,13 +2825,13 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lol_html" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bc32f75a59df2d35a9f13224b057a1c1ff1d187dfdc56190e9a54c4127917" +checksum = "5ff94cb6aef6ee52afd2c69331e9109906d855e82bd241f3110dfdf6185899ab" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg-if", - "cssparser", + "cssparser 0.36.0", "encoding_rs", "foldhash 0.2.0", "hashbrown 0.16.1", @@ -2622,6 +2860,12 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "matchit" version = "0.8.4" @@ -2647,7 +2891,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2663,11 +2907,11 @@ dependencies = [ "env_logger", "glob", "image", + "lightningcss", "log", "lol_html", "maud", "maudit-macros", - "oxc_sourcemap", "oxipng", "pathdiff", "pulldown-cmark", @@ -2703,14 +2947,14 @@ dependencies = [ "notify", "notify-debouncer-full", "quanta", - "rand", + "rand 0.9.2", "serde_json", "spinach", "tar", "tempfile", "tokio", "tokio-util", - "toml_edit 0.24.0+spec-1.1.0", + "toml_edit 0.24.1+spec-1.1.0", "tower-http", "tracing", "tracing-subscriber", @@ -2795,7 +3039,7 @@ name = "maudit-macros" version = "0.7.0" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2829,9 +3073,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mime" @@ -2873,9 +3117,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -2883,11 +3127,11 @@ dependencies = [ [[package]] name = "neli" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e23bebbf3e157c402c4d5ee113233e5e0610cc27453b2f07eefce649c7365dcc" +checksum = "22f9786d56d972959e1408b6a93be6af13b9c1392036c5c1fafa08a1b0c6ee87" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "byteorder", "derive_builder", "getset", @@ -2907,7 +3151,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 2.0.117", ] [[package]] @@ -2931,7 +3175,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg-if", "cfg_aliases", "libc", @@ -2970,7 +3214,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "fsevent-sys", "inotify", "kqueue", @@ -2997,9 +3241,12 @@ dependencies = [ [[package]] name = "notify-types" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags 2.11.0", +] [[package]] name = "nu-ansi-term" @@ -3023,9 +3270,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-derive" @@ -3035,7 +3282,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3068,29 +3315,10 @@ dependencies = [ ] [[package]] -name = "objc2-core-foundation" -version = "0.3.2" +name = "once_cell" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "objc2-core-services" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583300ad934cba24ff5292aee751ecc070f7ca6b39a574cc21b7b5e588e06a0b" -dependencies = [ - "libc", - "objc2-core-foundation", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -3104,7 +3332,7 @@ version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "libc", "once_cell", "onig_sys", @@ -3138,6 +3366,12 @@ dependencies = [ "oubli", ] +[[package]] +name = "outref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" + [[package]] name = "outref" version = "0.5.2" @@ -3161,15 +3395,15 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owo-colors" -version = "4.2.3" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "oxc" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bc240e07b45f0d2746e56db4eab367eb68252c454f1a1fa34b5cbe85ff71f8" +checksum = "221235543bfd609b21ec98a3bf211b3e1911961b820896e09bc7c89effbdf159" dependencies = [ "oxc_allocator", "oxc_ast", @@ -3191,18 +3425,16 @@ dependencies = [ [[package]] name = "oxc-browserslist" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d55ecaab3af16fee2d0195f2e7d26f27cab0044d0b6d74073514c7feee6beb" +checksum = "abb7a1163a5501f935f8722d839b576491b749c695e7a066aa0b8df988b806df" dependencies = [ "flate2", - "nom", "postcard", "rustc-hash", "serde", "serde_json", "thiserror 2.0.18", - "time", ] [[package]] @@ -3228,17 +3460,16 @@ checksum = "d4faecb54d0971f948fbc1918df69b26007e6f279a204793669542e1e8b75eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "oxc_allocator" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78958640bcae9b5b42f9eaafe4995b5460195e961439c236095547bb78952f8d" +checksum = "e16d4295cf7888893b80ae70ff65c078ae3f9f52d5381cfc7eeffab089e07305" dependencies = [ "allocator-api2", - "bumpalo", "hashbrown 0.16.1", "oxc_data_structures", "oxc_estree", @@ -3248,11 +3479,11 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d1a3c841ad6204dcdba2e584efbff30ec7a5a2c88851108dd39a2ed4be3af3" +checksum = "be755331a7de00100c60e03151663f26037a0dd720be238de57c036be03b4033" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "oxc_allocator", "oxc_ast_macros", "oxc_data_structures", @@ -3265,21 +3496,21 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc4d7eb802fc2bfc49fdc004e875a4009c17657f53372af111eb9d98dc4a15f" +checksum = "a13a58adcfaadd4710b4f7d80ad422599ed5bb4956f4747d07e821c5897b16ef" dependencies = [ - "phf", + "phf 0.13.1", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "oxc_ast_visit" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561ace6525ddc90b36103764a959eb261ff7f92a76172a34ac2d24d579f1260d" +checksum = "4e33ffb874949ea07fce9b686c2dba7e221c849e047232c04a84b13bae4496ef" dependencies = [ "oxc_allocator", "oxc_ast", @@ -3289,12 +3520,12 @@ dependencies = [ [[package]] name = "oxc_cfg" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d38997b36d3ad179b672110080c42ab9bf5c1761767754be148c5cbf8982947" +checksum = "e5206747a0004c2892e7f57545a95d3cb724118613c7424002cb6a1e2e2967a9" dependencies = [ - "bitflags 2.10.0", - "itertools", + "bitflags 2.11.0", + "itertools 0.14.0", "oxc_index", "oxc_syntax", "petgraph", @@ -3303,11 +3534,11 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a075130a060ebc4bcf09a55fcf521243527a820937dccda4af92524d4c3def2" +checksum = "f81db7038dc0288704c5ad72453c96933a46e2d5139376c87b1f5730b3d9cd03" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cow-utils", "dragonbox_ecma", "itoa", @@ -3324,9 +3555,9 @@ dependencies = [ [[package]] name = "oxc_compat" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4df14ee33385dff8fc347c6ddb62b8c7168c4abf6957deec8415575e0f0f2e3" +checksum = "c96a136e3422c1b14babd3fe1103e4bc93036c10e72fe4f8634c881ec5285c2d" dependencies = [ "cow-utils", "oxc-browserslist", @@ -3337,18 +3568,18 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397842ac155f7c3f707232cc8758c0e67919ac7f75ec3bc34680ae176aca8b61" +checksum = "fd6c22a48542899e5f74162d55710ea2f95735c5d3a809196308b2dbf557f434" dependencies = [ "ropey", ] [[package]] name = "oxc_diagnostics" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2739661b22eb7abe3966ebbe1eb236337f940eed7e9598bdb089c3353aa2c15f" +checksum = "fe5961a78ce2a24d288f5e7090f19ce49d062486e0d65e6140d01582198c94fd" dependencies = [ "cow-utils", "oxc-miette", @@ -3357,24 +3588,25 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef913bdaae2ed48335b500a25ecc6a9f186ca855968b5edfc6d1ebad4d0b2124" +checksum = "e1fb3d121c372df31514f95d87c92693001739d2c9e56be37909499b5396faf1" dependencies = [ "cow-utils", "num-bigint", "num-traits", "oxc_allocator", "oxc_ast", + "oxc_regular_expression", "oxc_span", "oxc_syntax", ] [[package]] name = "oxc_estree" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a61584ac8cd52d6b6c05a7a5d4b883d5666ea4612ddfe3429f28f7bcd1e93a14" +checksum = "d38fc12975751e104dc53c369cba1598ff15aa8ca30aaac49e63937256316969" dependencies = [ "dragonbox_ecma", "itoa", @@ -3394,11 +3626,11 @@ dependencies = [ [[package]] name = "oxc_isolated_declarations" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ddf2f1f37acbea0f3a7bc5b40b3e5e5a83a9ea845e48fbddf0e6da591994cc" +checksum = "ff81d11bf1766951f0914e7a73bbd9a7cc07e0598313f8920afc1a868a5731d1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "oxc_allocator", "oxc_ast", "oxc_ast_visit", @@ -3411,11 +3643,11 @@ dependencies = [ [[package]] name = "oxc_mangler" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dedab0866f3106cbc831c79e522c5f5ca33412562f79cfecdbb600bbbd896261" +checksum = "aa65c9405523a75a9a45842117e36d1dda7ced992ddc6bc2bce94133d1edc812" dependencies = [ - "itertools", + "itertools 0.14.0", "oxc_allocator", "oxc_ast", "oxc_data_structures", @@ -3428,15 +3660,15 @@ dependencies = [ [[package]] name = "oxc_minifier" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b6f6e96160888f73125b7345d3934fb0027c3e27cdfa99a3dd042ae033a77d" +checksum = "f814ea847c1d0656724a6cd7d95b13c97178617ef9377995c581b3bb5609b7a9" dependencies = [ "cow-utils", + "itoa", "oxc_allocator", "oxc_ast", "oxc_ast_visit", - "oxc_codegen", "oxc_compat", "oxc_data_structures", "oxc_ecmascript", @@ -3446,6 +3678,7 @@ dependencies = [ "oxc_regular_expression", "oxc_semantic", "oxc_span", + "oxc_str", "oxc_syntax", "oxc_traverse", "rustc-hash", @@ -3453,11 +3686,11 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06898c992b263f8e4dfcc338528445492a8d61292ad78a0ad7863a265e7beda2" +checksum = "341602ba5eb6629f7f90e49c1fce06bb8eed989412a4178acd8e7f48cf2c7f9d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cow-utils", "memchr", "num-bigint", @@ -3476,34 +3709,34 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c658b8d107d9534816312d1fd4b77311df648d07ac8af0417355a8cbb09749b" +checksum = "8e810182cbde172aeada70acc45dae74f6773384e0d295cc27e6e377b1fc277c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "oxc_allocator", "oxc_ast_macros", "oxc_diagnostics", "oxc_span", - "phf", + "phf 0.13.1", "rustc-hash", "unicode-id-start", ] [[package]] name = "oxc_resolver" -version = "11.16.4" +version = "11.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903284699f550838a491118e58e9d9adb4941c2514f148aedff1ce4b4fbd578" +checksum = "5632fcd47d4fdaf7ef5ee150c7001fa8ed814ce38d1a073536a366dbfc239aad" dependencies = [ "cfg-if", + "compact_str", "fast-glob", "indexmap", "json-strip-comments", "nodejs-built-in-modules", "once_cell", "papaya", - "parking_lot", "pnp", "rustc-hash", "rustix", @@ -3520,11 +3753,11 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef9534d21d00ac38ca4eab91e7b7f4fa0f1c7f0279d07865074c05357366d5c" +checksum = "ffb04bd9f59bb6d8340bb186b0003bb6e8f1988e17048c61a5473ea216e9ed71" dependencies = [ - "itertools", + "itertools 0.14.0", "memchr", "oxc_allocator", "oxc_ast", @@ -3543,11 +3776,11 @@ dependencies = [ [[package]] name = "oxc_sourcemap" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36801dbbd025f2fa133367494e38eef75a53d334ae6746ba0c889fc4e76fa3a3" +checksum = "c7f89482522f3cd820817d48ee4ade5b10822060d6e5e4d419f05f6d8bd29d70" dependencies = [ - "base64-simd", + "base64-simd 0.8.0", "json-escape-simd", "rustc-hash", "serde", @@ -3556,44 +3789,57 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3416e347dd4837cdfbffc49bd2ef106ba592133268a962381cc82d24e8593e40" +checksum = "b9999ef787b0b989b8c2b31669069d3bdca20d017ff34a7284ff9e983cf7b1d8" dependencies = [ "compact_str", "oxc-miette", "oxc_allocator", "oxc_ast_macros", "oxc_estree", + "oxc_str", + "serde", +] + +[[package]] +name = "oxc_str" +version = "0.115.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6fde66bc256ea0d09895c2a56a24f79e76abffd977f6c171516e42f1efdea51" +dependencies = [ + "compact_str", + "hashbrown 0.16.1", + "oxc_allocator", + "oxc_estree", "serde", ] [[package]] name = "oxc_syntax" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44aa646ecb431595b3255b6eee2a7f9f292422b76cf5c156a825bd042073453" +checksum = "e77ea5bd4ea42ce05b2f51bcef8e46a4598cea5038ab25877a2d27601a90da83" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cow-utils", "dragonbox_ecma", "nonmax", "oxc_allocator", "oxc_ast_macros", - "oxc_data_structures", "oxc_estree", "oxc_index", "oxc_span", - "phf", + "phf 0.13.1", "serde", "unicode-id-start", ] [[package]] name = "oxc_transformer" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118d7149205362a9ab9de91112f36c13e4192db5036d5cad7cc083a849146450" +checksum = "58dd1805067e1770a648cd53fcf6c48da4312fedda734ef556880936f975320f" dependencies = [ "base64", "compact_str", @@ -3620,9 +3866,9 @@ dependencies = [ [[package]] name = "oxc_transformer_plugins" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f8bc0f738f2fa6703560466f3f45e811d1738be86ed50f1e68ea9a9204e9b6" +checksum = "8eb1700c944350d9f30afe06d1ff461b6c7be7b13c97f765a2c55c675087362e" dependencies = [ "cow-utils", "itoa", @@ -3642,9 +3888,9 @@ dependencies = [ [[package]] name = "oxc_traverse" -version = "0.108.0" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0c8dc012307ff62260d1f9f3073d4933c5f7e0a01e479f52f6ddd2a487154b" +checksum = "aea73a8421e6a433a187fca1c5fe48237ee65eaf40e5dae158d2853f0b2d8949" dependencies = [ "itoa", "oxc_allocator", @@ -3654,21 +3900,21 @@ dependencies = [ "oxc_ecmascript", "oxc_semantic", "oxc_span", + "oxc_str", "oxc_syntax", "rustc-hash", ] [[package]] name = "oxipng" -version = "10.0.0" +version = "10.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9a19c0bec7ec84da567e0a87abd378c0f6e988793f858ea5d58f4b87a81a8" +checksum = "efc4ea5566cd49b80c4b5e8eac2167d137d2ca3007ec8976d4cd9fe8b654ba2b" dependencies = [ "bitvec", "clap", "crossbeam-channel", "env_logger", - "filetime", "glob", "indexmap", "libdeflater", @@ -3690,6 +3936,36 @@ dependencies = [ "seize", ] +[[package]] +name = "parcel_selectors" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54fd03f1ad26cb6b3ec1b7414fa78a3bd639e7dbb421b1a60513c96ce886a196" +dependencies = [ + "bitflags 2.11.0", + "cssparser 0.33.0", + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "precomputed-hash", + "rustc-hash", + "smallvec", +] + +[[package]] +name = "parcel_sourcemap" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb" +dependencies = [ + "base64-simd 0.7.0", + "data-url", + "rkyv", + "serde", + "serde_json", + "vlq", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -3755,25 +4031,55 @@ dependencies = [ "serde", ] +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros", - "phf_shared", + "phf_macros 0.13.1", + "phf_shared 0.13.1", "serde", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf_codegen" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.13.1", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", ] [[package]] @@ -3783,7 +4089,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ "fastrand", - "phf_shared", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -3792,11 +4111,20 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.13.1", + "phf_shared 0.13.1", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", ] [[package]] @@ -3810,29 +4138,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -3846,6 +4174,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "plist" version = "1.8.0" @@ -3861,11 +4195,11 @@ dependencies = [ [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crc32fast", "fdeflate", "flate2", @@ -3894,15 +4228,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -3949,13 +4283,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.25.4+spec-1.1.0", ] [[package]] @@ -3977,14 +4321,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "proc-macro2" -version = "1.0.105" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -3997,7 +4341,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "version_check", ] @@ -4017,16 +4361,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] name = "pulldown-cmark" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +checksum = "83c41efbf8f90ac44de7f3a868f0867851d261b56291732d0cbf7cceaaeb55a6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "getopts", "memchr", "pulldown-cmark-escape", @@ -4041,12 +4405,9 @@ checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "qoi" @@ -4089,9 +4450,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.43" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -4102,6 +4463,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -4118,6 +4485,15 @@ dependencies = [ "nibble_vec", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand" version = "0.9.2" @@ -4125,7 +4501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", - "rand_core", + "rand_core 0.9.5", ] [[package]] @@ -4135,9 +4511,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.9.5", ] +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + [[package]] name = "rand_core" version = "0.9.5" @@ -4149,9 +4531,9 @@ dependencies = [ [[package]] name = "rapidhash" -version = "4.2.1" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8b5b858a440a0bc02625b62dd95131b9201aa9f69f411195dd4a7cfb1de3d7" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" dependencies = [ "rustversion", ] @@ -4172,7 +4554,7 @@ dependencies = [ "built", "cfg-if", "interpolate_name", - "itertools", + "itertools 0.14.0", "libc", "libfuzzer-sys", "log", @@ -4183,7 +4565,7 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand", + "rand 0.9.2", "rand_chacha", "simd_helpers", "thiserror 2.0.18", @@ -4193,9 +4575,9 @@ dependencies = [ [[package]] name = "ravif" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" dependencies = [ "avif-serialize", "imgref", @@ -4212,7 +4594,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -4252,16 +4634,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -4281,19 +4663,19 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.13", - "regex-syntax 0.8.8", + "regex-automata 0.4.14", + "regex-syntax 0.8.10", ] [[package]] @@ -4307,20 +4689,20 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", ] [[package]] name = "regex-lite" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" [[package]] name = "regex-syntax" @@ -4330,9 +4712,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "regress" @@ -4344,11 +4726,20 @@ dependencies = [ "memchr", ] +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" dependencies = [ "bytemuck", ] @@ -4368,39 +4759,43 @@ dependencies = [ ] [[package]] -name = "rolldown-ariadne" -version = "0.5.3" +name = "rkyv" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77dff57c9de498bb1eb5b1ce682c2e3a0ae956b266fa0933c3e151b87b078967" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" dependencies = [ - "unicode-width", - "yansi", + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", ] [[package]] -name = "rolldown-notify" -version = "10.1.0" +name = "rkyv_derive" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8bf250d410b79487a6d054e6bd16ec08dddd2998f5f5e6291867a35066cfc37" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" dependencies = [ - "bitflags 2.10.0", - "inotify", - "kqueue", - "libc", - "mio", - "objc2-core-foundation", - "objc2-core-services", - "rolldown-notify-types", - "tracing", - "walkdir", - "windows-sys 0.61.2", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "rolldown-notify-types" -version = "2.0.2" +name = "rolldown-ariadne" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931923a28e14c01a27ca56669669eb3e3de4068859c34e17b96c93ba3a61afe" +checksum = "77dff57c9de498bb1eb5b1ce682c2e3a0ae956b266fa0933c3e151b87b078967" +dependencies = [ + "unicode-width", + "yansi", +] [[package]] name = "ropey" @@ -4429,11 +4824,11 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "errno", "libc", "linux-raw-sys", @@ -4442,9 +4837,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "log", "once_cell", @@ -4483,9 +4878,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -4517,6 +4912,12 @@ version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "seize" version = "0.5.1" @@ -4533,13 +4934,13 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feef350c36147532e1b79ea5c1f3791373e61cbd9a6a2615413b3807bb164fb7" dependencies = [ - "bitflags 2.10.0", - "cssparser", + "bitflags 2.11.0", + "cssparser 0.36.0", "derive_more", "log", "new_debug_unreachable", - "phf", - "phf_codegen", + "phf 0.13.1", + "phf_codegen 0.13.1", "precomputed-hash", "rustc-hash", "servo_arc", @@ -4578,6 +4979,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-content" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3753ca04f350fa92d00b6146a3555e63c55388c9ef2e11e09bce2ff1c0b509c6" +dependencies = [ + "serde", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -4595,7 +5005,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4680,7 +5090,7 @@ checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4749,6 +5159,15 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-abstraction" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" +dependencies = [ + "outref 0.1.0", +] + [[package]] name = "simd-adler32" version = "0.3.8" @@ -4784,15 +5203,15 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slug" @@ -4821,12 +5240,12 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4877,18 +5296,30 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sugar_path" -version = "1.2.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48abcb2199ce37819c20dc7a72dc09e3263a00e598ff5089fe5fda92e0f63c37" +checksum = "36fe837e881ad5c3b60fadeb8e9b0bc5c907c4b7d84b4415a7f0bbc3f9073631" dependencies = [ + "memchr", "smallvec", ] [[package]] name = "syn" -version = "2.0.114" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -4909,7 +5340,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4924,7 +5355,7 @@ dependencies = [ "once_cell", "onig", "plist", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", "serde", "serde_derive", "serde_json", @@ -4952,12 +5383,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.24.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.2", "once_cell", "rustix", "windows-sys 0.61.2", @@ -5019,7 +5450,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5030,7 +5461,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5050,23 +5481,23 @@ checksum = "8b7726e0245a7331bd0c9a1fb4fd99fd695bcd478ca569f0eda2ff2cb14e7a00" [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", "half", "quick-error", "weezl", - "zune-jpeg 0.4.21", + "zune-jpeg", ] [[package]] name = "time" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", @@ -5079,15 +5510,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.25" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -5103,11 +5534,26 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" -version = "1.49.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", @@ -5121,13 +5567,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5185,6 +5631,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_datetime" +version = "1.0.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" @@ -5201,34 +5656,34 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.24.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "01f2eadbbc6b377a847be05f60791ef1058d9f696ecb51d2c07fe911d8569d8e" dependencies = [ "indexmap", "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", + "toml_writer", "winnow", ] [[package]] name = "toml_edit" -version = "0.24.0+spec-1.1.0" +version = "0.25.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c740b185920170a6d9191122cafef7010bd6270a3824594bff6784c04d7f09e" +checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" dependencies = [ "indexmap", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime 1.0.0+spec-1.1.0", "toml_parser", - "toml_writer", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ "winnow", ] @@ -5267,7 +5722,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "bytes", "futures-core", "futures-util", @@ -5319,7 +5774,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5388,9 +5843,9 @@ dependencies = [ [[package]] name = "ts-rs" -version = "11.1.0" +version = "12.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4994acea2522cd2b3b85c1d9529a55991e3ad5e25cdcd3de9d505972c4379424" +checksum = "756050066659291d47a554a9f558125db17428b073c5ffce1daf5dcb0f7231d8" dependencies = [ "thiserror 2.0.18", "ts-rs-macros", @@ -5398,13 +5853,13 @@ dependencies = [ [[package]] name = "ts-rs-macros" -version = "11.1.0" +version = "12.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6ff59666c9cbaec3533964505d39154dc4e0a56151fdea30a09ed0301f62e2" +checksum = "38d90eea51bc7988ef9e674bf80a85ba6804739e535e9cab48e4bb34a8b652aa" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "termcolor", ] @@ -5419,7 +5874,7 @@ dependencies = [ "http", "httparse", "log", - "rand", + "rand 0.9.2", "sha1", "thiserror 2.0.18", "utf-8", @@ -5431,7 +5886,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63278e72ed4f207eb3216c944cbafb35bdb656d2eab97ef73c0c165a1cd3e319" dependencies = [ - "dashmap", + "dashmap 6.1.0", ] [[package]] @@ -5454,9 +5909,9 @@ checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-linebreak" @@ -5496,9 +5951,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.1.4" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a" +checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc" dependencies = [ "base64", "flate2", @@ -5561,11 +6016,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] @@ -5614,6 +6069,12 @@ dependencies = [ "filetime", ] +[[package]] +name = "vlq" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff" + [[package]] name = "vsimd" version = "0.8.0" @@ -5645,11 +6106,20 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -5660,9 +6130,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5670,31 +6140,65 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -5712,9 +6216,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" dependencies = [ "rustls-pki-types", ] @@ -5809,7 +6313,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5820,7 +6324,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6033,9 +6537,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] @@ -6045,6 +6549,88 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" @@ -6125,28 +6711,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6166,7 +6752,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -6206,20 +6792,20 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "zlib-rs" -version = "0.5.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" [[package]] name = "zmij" -version = "1.0.15" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zopfli" @@ -6233,12 +6819,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - [[package]] name = "zune-core" version = "0.5.1" @@ -6256,18 +6836,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" -dependencies = [ - "zune-core 0.4.12", -] - -[[package]] -name = "zune-jpeg" -version = "0.5.9" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c86acb70a85b2c16f071f171847d1945e8f44812630463cd14ec83900ad01c" +checksum = "ec5f41c76397b7da451efd19915684f727d7e1d516384ca6bd0ec43ec94de23c" dependencies = [ - "zune-core 0.5.1", + "zune-core", ] diff --git a/crates/maudit/Cargo.toml b/crates/maudit/Cargo.toml index af81f5a1..75eee3dc 100644 --- a/crates/maudit/Cargo.toml +++ b/crates/maudit/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/bruits/maudit" version = "0.10.0" license = "MIT" edition = "2024" -rust-version = "1.89.0" +rust-version = "1.91.0" [features] default = ["maud"] @@ -22,7 +22,7 @@ rustdoc-args = ["--cfg", "docsrs"] maud = { workspace = true, optional = true } # TODO: Allow making those optional -rolldown = { package = "brk_rolldown", version = "0.8.0" } +rolldown = { package = "brk_rolldown", version = "1.0.0-rc.7" } serde = { workspace = true, features = ["derive"] } bincode = "1.3" serde_yaml = "0.9.34" @@ -45,11 +45,11 @@ chrono = "0.4.43" colored = "3.1.1" rustc-hash = "2.1" thiserror = "2.0.18" -oxc_sourcemap = "6.0.1" +lightningcss = { version = "1.0.0-alpha.68", features = ["visitor"] } rayon = "1.11.0" rapidhash = "4.2.1" pathdiff = "0.2.3" -rolldown_plugin_replace = { package = "brk_rolldown_plugin_replace", version = "0.8.0" } +rolldown_plugin_replace = { package = "brk_rolldown_plugin_replace", version = "1.0.0-rc.7" } [dev-dependencies] tempfile = "3.24.0" diff --git a/crates/maudit/src/assets.rs b/crates/maudit/src/assets.rs index fde4348b..a7e0d089 100644 --- a/crates/maudit/src/assets.rs +++ b/crates/maudit/src/assets.rs @@ -8,6 +8,7 @@ use std::rc::Rc; use std::time::Instant; use std::{fs, path::PathBuf}; +pub(crate) mod css; mod image; pub mod image_cache; pub mod prefetch; @@ -19,7 +20,7 @@ pub use image::{Image, ImageFormat, ImageOptions, ImagePlaceholder, RenderWithAl pub use prefetch::PrefetchPlugin; pub use script::Script; pub use style::{Style, StyleOptions}; -pub use tailwind::TailwindPlugin; +pub use tailwind::run_tailwind; use crate::assets::image_cache::ImageCache; use crate::errors::AssetError; diff --git a/crates/maudit/src/assets/css.rs b/crates/maudit/src/assets/css.rs new file mode 100644 index 00000000..d47ca1e8 --- /dev/null +++ b/crates/maudit/src/assets/css.rs @@ -0,0 +1,371 @@ +use crate::errors::AssetError; +use std::convert::Infallible; +use std::fs; +use std::path::{Path, PathBuf}; + +use lightningcss::bundler::{Bundler, FileProvider}; +use lightningcss::printer::PrinterOptions; +use lightningcss::stylesheet::{MinifyOptions, ParserOptions, StyleSheet}; +use lightningcss::values::url::Url; +use lightningcss::visit_types; +use lightningcss::visitor::{Visit, Visitor}; +use log::debug; + +use super::{calculate_hash, make_filename}; + +/// Result of bundling a CSS file, containing the output code and metadata +/// about referenced assets that were copied to the output directory. +pub struct BundleCssOutput { + /// The final CSS code (bundled, url-rewritten, optionally minified). + pub code: String, + /// Fingerprinted filenames of assets copied to the output directory + /// (e.g. `charter_regular.a1b2c.woff2`). Used for stale file cleanup. + pub copied_asset_filenames: Vec, + /// Canonical paths of source files referenced via `url()` in the CSS. + /// Used to detect when referenced assets change between builds. + pub source_dependencies: Vec, +} + +/// Visitor that rewrites relative `url()` references in CSS. +/// +/// For each relative URL, the referenced file is copied to `output_dir` +/// with a fingerprinted filename (e.g. `charter_regular.a1b2c.woff2`) +/// and the URL is rewritten to point to the copy. +struct AssetUrlVisitor { + /// Directory containing the source CSS file (for resolving relative URLs) + source_dir: PathBuf, + /// Directory where output assets are written (e.g. `dist/_maudit`) + output_dir: PathBuf, + /// Fingerprinted filenames of assets that were copied to the output directory. + copied_filenames: Vec, + /// Canonical source paths of referenced assets (for dependency tracking). + source_deps: Vec, + /// Errors encountered during visitation (collected because the Visitor trait + /// uses `Infallible` as its error type). + errors: Vec, +} + +impl<'i> Visitor<'i> for AssetUrlVisitor { + type Error = Infallible; + + fn visit_types(&self) -> lightningcss::visitor::VisitTypes { + visit_types!(URLS) + } + + fn visit_url(&mut self, url: &mut Url<'i>) -> Result<(), Self::Error> { + let url_str: &str = &url.url; + + // Skip data URLs and absolute URLs + if url_str.starts_with("data:") + || url_str.starts_with("http://") + || url_str.starts_with("https://") + || url_str.starts_with('/') + { + return Ok(()); + } + + // Resolve the referenced file relative to the source CSS directory + let source_path = self.source_dir.join(url_str); + + if let Ok(source_path) = source_path.canonicalize() + && source_path.is_file() + { + // Hash the file contents for fingerprinting + let hash = match calculate_hash(&source_path, None) { + Ok(h) => h, + Err(e) => { + self.errors.push(e); + return Ok(()); + } + }; + + let extension = source_path.extension().and_then(|e| e.to_str()); + let fingerprinted = make_filename(&source_path, &hash, extension); + let dest_path = self.output_dir.join(&fingerprinted); + + if let Err(e) = fs::copy(&source_path, &dest_path) { + self.errors.push(AssetError::CopyFailed { + source_path, + dest_path, + source: e, + }); + return Ok(()); + } + + debug!("Copied CSS asset {:?} -> {:?}", source_path, dest_path); + + let filename = fingerprinted.to_string_lossy().to_string(); + self.copied_filenames.push(filename.clone()); + self.source_deps.push(source_path); + + url.url = filename.into(); + } + + Ok(()) + } +} + +/// Bundle a CSS file, resolving `@import` statements, copying referenced assets, +/// and optionally minifying. +/// +/// If `source_css` is provided, it is used as the CSS content instead of reading from the file +/// (useful for tailwind-processed output). In that case, `@import` resolution is skipped. +/// +/// Referenced assets (fonts, images) are copied to `output_dir` with fingerprinted +/// filenames and their URLs are rewritten. +pub fn bundle_css( + entry: &Path, + source_css: Option<&str>, + minify: bool, + output_dir: &Path, +) -> Result> { + let source_dir = entry + .parent() + .ok_or_else(|| format!("CSS entry has no parent directory: {}", entry.display()))? + .to_path_buf(); + + let mut url_visitor = AssetUrlVisitor { + source_dir, + output_dir: output_dir.to_path_buf(), + copied_filenames: Vec::new(), + source_deps: Vec::new(), + errors: Vec::new(), + }; + + let code = if let Some(css) = source_css { + let mut stylesheet = StyleSheet::parse(css, ParserOptions::default()) + .map_err(|e| format!("Failed to parse CSS: {}", e))?; + + stylesheet.visit(&mut url_visitor).unwrap(); + + if minify { + stylesheet + .minify(MinifyOptions::default()) + .map_err(|e| format!("Failed to minify CSS: {}", e))?; + } + + stylesheet + .to_css(PrinterOptions { + minify, + ..Default::default() + }) + .map_err(|e| format!("Failed to serialize CSS: {}", e))? + .code + } else { + let provider = FileProvider::new(); + let mut bundler = Bundler::new(&provider, None, ParserOptions::default()); + + let mut stylesheet = bundler + .bundle(entry) + .map_err(|e| format!("Failed to bundle CSS file {}: {}", entry.display(), e))?; + + stylesheet.visit(&mut url_visitor).unwrap(); + + if minify { + stylesheet + .minify(MinifyOptions::default()) + .map_err(|e| format!("Failed to minify CSS: {}", e))?; + } + + stylesheet + .to_css(PrinterOptions { + minify, + ..Default::default() + }) + .map_err(|e| format!("Failed to serialize CSS: {}", e))? + .code + }; + + if let Some(err) = url_visitor.errors.into_iter().next() { + return Err(err.into()); + } + + Ok(BundleCssOutput { + code, + copied_asset_filenames: url_visitor.copied_filenames, + source_dependencies: url_visitor.source_deps, + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use std::fs; + + fn setup_css_dir() -> tempfile::TempDir { + let dir = tempfile::tempdir().unwrap(); + + // Create a simple CSS file + fs::write( + dir.path().join("style.css"), + "body { color: red; }", + ) + .unwrap(); + + // Create a font file referenced by CSS + fs::write(dir.path().join("font.woff2"), b"fake-font-data").unwrap(); + + // Create a CSS file that references the font + fs::write( + dir.path().join("with_url.css"), + "body { background: url(font.woff2); }", + ) + .unwrap(); + + // Create CSS files for @import testing + fs::write( + dir.path().join("_partial.css"), + "h1 { font-size: 2em; }", + ) + .unwrap(); + fs::write( + dir.path().join("main.css"), + "@import \"_partial.css\";\nbody { color: blue; }", + ) + .unwrap(); + + dir + } + + #[test] + fn test_bundle_basic_css() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + let result = bundle_css( + &dir.path().join("style.css"), + None, + false, + output_dir.path(), + ) + .unwrap(); + + assert!(result.code.contains("color")); + assert!(result.copied_asset_filenames.is_empty()); + assert!(result.source_dependencies.is_empty()); + } + + #[test] + fn test_bundle_with_import() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + let result = bundle_css( + &dir.path().join("main.css"), + None, + false, + output_dir.path(), + ) + .unwrap(); + + // The bundled output should contain both the partial and the main styles + assert!(result.code.contains("font-size"), "should contain @imported partial"); + assert!(result.code.contains("color"), "should contain main styles"); + } + + #[test] + fn test_bundle_rewrites_url_and_copies_asset() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + let result = bundle_css( + &dir.path().join("with_url.css"), + None, + false, + output_dir.path(), + ) + .unwrap(); + + // url() should have been rewritten to a fingerprinted filename + assert!(!result.code.contains("url(font.woff2)"), "original url should be rewritten"); + assert_eq!(result.copied_asset_filenames.len(), 1); + assert!(result.copied_asset_filenames[0].contains("font")); + assert!(result.copied_asset_filenames[0].ends_with(".woff2")); + + // The asset file should have been copied to the output directory + let copied = output_dir.path().join(&result.copied_asset_filenames[0]); + assert!(copied.exists(), "asset should be copied to output dir"); + assert_eq!(fs::read(&copied).unwrap(), b"fake-font-data"); + + // Source dependencies should track the original font path + assert_eq!(result.source_dependencies.len(), 1); + assert!(result.source_dependencies[0].ends_with("font.woff2")); + } + + #[test] + fn test_bundle_minification() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + let not_minified = bundle_css( + &dir.path().join("style.css"), + None, + false, + output_dir.path(), + ) + .unwrap(); + + let minified = bundle_css( + &dir.path().join("style.css"), + None, + true, + output_dir.path(), + ) + .unwrap(); + + assert!( + minified.code.len() <= not_minified.code.len(), + "minified output should not be longer" + ); + // Minified should still contain the actual style value + assert!(minified.code.contains("red")); + } + + #[test] + fn test_bundle_with_source_css() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + // Simulate Tailwind output being passed as source_css + let tailwind_css = "body { background: url(font.woff2); margin: 0; }"; + + let result = bundle_css( + &dir.path().join("with_url.css"), + Some(tailwind_css), + false, + output_dir.path(), + ) + .unwrap(); + + // Should contain the tailwind output, not the original file content + assert!(result.code.contains("margin"), "should use source_css content"); + // url() should still be rewritten and asset copied + assert_eq!(result.copied_asset_filenames.len(), 1); + assert!(output_dir.path().join(&result.copied_asset_filenames[0]).exists()); + } + + #[test] + fn test_bundle_skips_absolute_and_data_urls() { + let dir = setup_css_dir(); + let output_dir = tempfile::tempdir().unwrap(); + + let css = r#" + .a { background: url(data:image/png;base64,abc); } + .b { background: url(https://example.com/img.png); } + .c { background: url(http://example.com/img.png); } + .d { background: url(/absolute/path.png); } + "#; + + let result = bundle_css( + &dir.path().join("style.css"), + Some(css), + false, + output_dir.path(), + ) + .unwrap(); + + // None of these should trigger asset copying + assert!(result.copied_asset_filenames.is_empty()); + assert!(result.source_dependencies.is_empty()); + } +} diff --git a/crates/maudit/src/assets/tailwind.rs b/crates/maudit/src/assets/tailwind.rs index a17b71a5..51519801 100644 --- a/crates/maudit/src/assets/tailwind.rs +++ b/crates/maudit/src/assets/tailwind.rs @@ -1,91 +1,36 @@ -use std::{io::Error, path::PathBuf, process::Command, time::Instant}; +use std::path::Path; +use std::process::Command; +use std::time::Instant; use log::info; -use oxc_sourcemap::SourceMap; -use rolldown::{ - ModuleType, - plugin::{HookUsage, Plugin}, -}; -/// Rolldown plugin to process select CSS files with the Tailwind CSS CLI. -#[derive(Debug)] -pub struct TailwindPlugin { - pub tailwind_path: PathBuf, - pub tailwind_entries: Vec, -} - -impl Plugin for TailwindPlugin { - fn name(&self) -> std::borrow::Cow<'static, str> { - "builtin:tailwind".into() - } - - fn register_hook_usage(&self) -> rolldown::plugin::HookUsage { - HookUsage::Transform +/// Run the Tailwind CSS CLI on a given input file and return the processed CSS. +pub fn run_tailwind( + tailwind_path: &Path, + input_path: &Path, +) -> Result> { + let start_tailwind = Instant::now(); + let mut command = Command::new(tailwind_path); + command.args(["--input", &input_path.to_string_lossy()]); + + if crate::is_dev() { + command.arg("--map"); + } else { + command.arg("--minify"); } - async fn transform( - &self, - _ctx: rolldown::plugin::SharedTransformPluginContext, - args: &rolldown::plugin::HookTransformArgs<'_>, - ) -> rolldown::plugin::HookTransformReturn { - if *args.module_type != ModuleType::Css { - return Ok(None); - } - - if self - .tailwind_entries - .iter() - .any(|entry| entry.canonicalize().unwrap().to_string_lossy() == args.id) - { - let start_tailwind = Instant::now(); - let mut command = Command::new(&self.tailwind_path); - command.args(["--input", args.id]); - - // Add minify in production, source maps in development - if !crate::is_dev() { - command.arg("--minify"); - } - if crate::is_dev() { - command.arg("--map"); - } - - let tailwind_output = command.output()?; + let tailwind_output = command.output()?; - if !tailwind_output.status.success() { - let stderr = String::from_utf8_lossy(&tailwind_output.stderr); - let error_message = format!( - "Tailwind CSS process failed with status {}: {}", - tailwind_output.status, stderr - ); - - return Err(Error::other(error_message).into()); - } - - info!("Tailwind took {:?}", start_tailwind.elapsed()); - - let output = String::from_utf8_lossy(&tailwind_output.stdout); - let (code, map) = if let Some((code, map)) = output.split_once("/*# sourceMappingURL") { - (code.to_string(), Some(map.to_string())) - } else { - (output.to_string(), None) - }; - - if let Some(map) = map { - let source_map = SourceMap::from_json_string(&map).ok(); - - return Ok(Some(rolldown::plugin::HookTransformOutput { - code: Some(code), - map: source_map, - ..Default::default() - })); - } + if !tailwind_output.status.success() { + let stderr = String::from_utf8_lossy(&tailwind_output.stderr); + return Err(format!( + "Tailwind CSS process failed with status {}: {}", + tailwind_output.status, stderr + ) + .into()); + } - return Ok(Some(rolldown::plugin::HookTransformOutput { - code: Some(code), - ..Default::default() - })); - } + info!("Tailwind took {:?}", start_tailwind.elapsed()); - Ok(None) - } + Ok(String::from_utf8_lossy(&tailwind_output.stdout).into_owned()) } diff --git a/crates/maudit/src/build.rs b/crates/maudit/src/build.rs index ae5002b7..5f6fdcca 100644 --- a/crates/maudit/src/build.rs +++ b/crates/maudit/src/build.rs @@ -9,11 +9,13 @@ use std::{ time::{Instant, SystemTime, UNIX_EPOCH}, }; +use crate::assets::css::bundle_css; +use crate::assets::run_tailwind; use crate::{ BuildOptions, BuildOutput, assets::{ self, HashAssetType, HashConfig, PrefetchPlugin, RouteAssets, Script, Style, StyleOptions, - TailwindPlugin, calculate_hash, image_cache::ImageCache, prefetch, + calculate_hash, image_cache::ImageCache, prefetch, }, build::{images::process_image, options::PrefetchStrategy}, content::ContentSources, @@ -26,7 +28,7 @@ use crate::{ use colored::{ColoredString, Colorize}; use log::{debug, info, trace, warn}; use pathdiff::diff_paths; -use rolldown::{Bundler, BundlerOptions, InputItem, ModuleType}; +use rolldown::{Bundler, BundlerOptions, InputItem}; use rolldown_plugin_replace::ReplacePlugin; use rustc_hash::{FxHashMap, FxHashSet}; @@ -201,10 +203,17 @@ pub async fn build( let previous_build_cache = if options.incremental { let cache = cache::BuildCache::load(&options.cache_dir); - if cache.is_some() { - info!(target: "cache", "Build cache loaded in {}", format_elapsed_time(cache_load_start.elapsed(), &FormatElapsedTimeOptions::default())); + if let Some(cache) = cache { + if !options.output_dir.exists() { + info!(target: "cache", "Output directory missing, forcing full rebuild"); + None + } else { + info!(target: "cache", "Build cache loaded in {}", format_elapsed_time(cache_load_start.elapsed(), &FormatElapsedTimeOptions::default())); + Some(cache) + } + } else { + None } - cache } else { None }; @@ -502,11 +511,8 @@ pub async fn build( default_scripts.clone(), vec![], ); - let mut dynamic_ctx = DynamicRouteContext::new( - content_sources, - &mut pages_route_assets, - None, - ); + let mut dynamic_ctx = + DynamicRouteContext::new(content_sources, &mut pages_route_assets, None); let pages = route.get_pages(&mut dynamic_ctx); let get_pages_access_log = dynamic_ctx.take_access_log(); @@ -580,15 +586,13 @@ pub async fn build( // fall back to source-level tracking (all pages dirty when // any entry changes) to avoid serving stale content. if let Some((src, id)) = &page.3 { - access_log - .entries_read - .push((src.clone(), id.clone())); + access_log.entries_read.push((src.clone(), id.clone())); } else if access_log.entries_read.is_empty() && access_log.sources_iterated.is_empty() { - access_log.sources_iterated.extend( - get_pages_access_log.sources_iterated.iter().cloned(), - ); + access_log + .sources_iterated + .extend(get_pages_access_log.sources_iterated.iter().cloned()); } write_route_file(&content, &file_path, &mut created_dirs)?; @@ -847,15 +851,13 @@ pub async fn build( let mut access_log = page_ctx.take_access_log(); access_log.merge_entries_read(&get_pages_access_log); if let Some((src, id)) = &page.3 { - access_log - .entries_read - .push((src.clone(), id.clone())); + access_log.entries_read.push((src.clone(), id.clone())); } else if access_log.entries_read.is_empty() && access_log.sources_iterated.is_empty() { - access_log.sources_iterated.extend( - get_pages_access_log.sources_iterated.iter().cloned(), - ); + access_log + .sources_iterated + .extend(get_pages_access_log.sources_iterated.iter().cloned()); } write_route_file(&content, &file_path, &mut created_dirs)?; @@ -1056,6 +1058,7 @@ pub async fn build( &prev.bundled_styles, ¤t_bundled_scripts, ¤t_bundled_styles, + &prev.css_url_dependencies, ) } else { true @@ -1093,20 +1096,70 @@ pub async fn build( let assets_start = Instant::now(); print_title("generating assets"); - let css_inputs = build_pages_styles - .iter() - .map(|style| InputItem { - name: Some( - style - .filename() - .with_extension("") + let mut current_output_files: FxHashSet = FxHashSet::default(); + + // Process CSS files with lightningcss (with optional Tailwind pre-processing) + if !build_pages_styles.is_empty() { + let should_minify = !is_dev(); + + for style in &build_pages_styles { + debug!( + target: "bundling", + "Processing CSS: {:?}", + style.path() + ); + + // If the style is flagged for Tailwind, run the Tailwind CLI first + let tailwind_output = if style.tailwind { + Some(run_tailwind( + &options.assets.tailwind_binary_path, + style.path(), + )?) + } else { + None + }; + + let css_output = bundle_css( + style.path(), + tailwind_output.as_deref(), + should_minify, + &route_assets_options.output_assets_dir, + )?; + + // Ensure the output directory exists + if let Some(parent) = style.build_path().parent() { + fs::create_dir_all(parent)?; + } + + fs::write(style.build_path(), &css_output.code)?; + + let filename = style.filename().to_string_lossy().to_string(); + build_metadata.add_asset( + route_assets_options + .output_assets_dir + .join(&filename) .to_string_lossy() .to_string(), - ), - import: { style.path().to_string_lossy().to_string() }, - }) - .collect::>(); + ); + current_output_files.insert(filename); + + // Track copied CSS-referenced assets (fonts, images) for stale cleanup + for asset_filename in &css_output.copied_asset_filenames { + current_output_files.insert(asset_filename.clone()); + } + + // Record dependency fingerprints for incremental rebundle detection + if let Some(ref mut cache) = new_cache { + for dep_path in &css_output.source_dependencies { + if let Some(fp) = cache::AssetFileFingerprint::from_path(dep_path) { + cache.css_url_dependencies.insert(dep_path.clone(), fp); + } + } + } + } + } + // Process JS files with rolldown let bundler_inputs = build_pages_scripts .iter() .map(|script| InputItem { @@ -1119,7 +1172,6 @@ pub async fn build( .to_string(), ), }) - .chain(css_inputs.into_iter()) .collect::>(); debug!( @@ -1132,10 +1184,6 @@ pub async fn build( ); if !bundler_inputs.is_empty() { - let mut module_types_hashmap = FxHashMap::default(); - module_types_hashmap.insert("woff".to_string(), ModuleType::Asset); - module_types_hashmap.insert("woff2".to_string(), ModuleType::Asset); - let mut bundler = Bundler::with_plugins( BundlerOptions { input: Some(bundler_inputs), @@ -1146,23 +1194,9 @@ pub async fn build( .to_string_lossy() .to_string(), ), - module_types: Some(module_types_hashmap), ..Default::default() }, vec![ - Arc::new(TailwindPlugin { - tailwind_path: options.assets.tailwind_binary_path.clone(), - tailwind_entries: build_pages_styles - .iter() - .filter_map(|style| { - if style.tailwind { - Some(style.path().clone()) - } else { - None - } - }) - .collect::>(), - }), Arc::new(PrefetchPlugin {}), Arc::new(ReplacePlugin::new(FxHashMap::default())?), ], @@ -1170,7 +1204,6 @@ pub async fn build( let result = bundler.write().await?; - let mut current_output_files: FxHashSet = FxHashSet::default(); for output in &result.assets { let filename = output.filename().to_string(); build_metadata.add_asset( @@ -1182,24 +1215,24 @@ pub async fn build( ); current_output_files.insert(filename); } + } - // Clean up stale bundled files from previous builds - if !incremental_state.is_full_build() - && let Some(prev_cache) = &incremental_state.previous_cache - { - for stale_file in &prev_cache.bundled_output_files { - if !current_output_files.contains(stale_file) { - let stale_path = route_assets_options.output_assets_dir.join(stale_file); - if fs::remove_file(&stale_path).is_ok() { - info!(target: "cache", "Removed stale bundle: {}", stale_path.display()); - } + // Clean up stale bundled files from previous builds + if !incremental_state.is_full_build() + && let Some(prev_cache) = &incremental_state.previous_cache + { + for stale_file in &prev_cache.bundled_output_files { + if !current_output_files.contains(stale_file) { + let stale_path = route_assets_options.output_assets_dir.join(stale_file); + if fs::remove_file(&stale_path).is_ok() { + info!(target: "cache", "Removed stale bundle: {}", stale_path.display()); } } } + } - if let Some(ref mut cache) = new_cache { - cache.bundled_output_files = current_output_files; - } + if let Some(ref mut cache) = new_cache { + cache.bundled_output_files = current_output_files; } info!(target: "build", "{}", format!("Assets generated in {}", format_elapsed_time(assets_start.elapsed(), §ion_format_options)).bold()); @@ -1210,6 +1243,7 @@ pub async fn build( && let Some(prev_cache) = &incremental_state.previous_cache { cache.bundled_output_files = prev_cache.bundled_output_files.clone(); + cache.css_url_dependencies = prev_cache.css_url_dependencies.clone(); } info!(target: "build", "Assets unchanged, skipping bundling"); } diff --git a/crates/maudit/src/build/cache.rs b/crates/maudit/src/build/cache.rs index cb544df6..6f84fa8d 100644 --- a/crates/maudit/src/build/cache.rs +++ b/crates/maudit/src/build/cache.rs @@ -8,7 +8,7 @@ use log::{debug, info}; use rustc_hash::{FxHashMap, FxHashSet}; use serde::{Deserialize, Serialize}; -pub const BUILD_CACHE_VERSION: u32 = 9; +pub const BUILD_CACHE_VERSION: u32 = 10; pub const BUILD_CACHE_FILENAME: &str = "build_cache.bin"; /// Fingerprint for an asset file (script, style, image) used for fast change detection. @@ -72,10 +72,16 @@ pub struct BuildCache { /// Used to detect and clean up deleted static files on incremental builds. #[serde(default)] pub static_files: FxHashSet, - /// Filenames of bundled output files (JS/CSS) produced by the bundler. + /// Filenames of bundled output files produced by Rolldown. /// Used to detect and clean up stale bundles when inputs change. #[serde(default)] pub bundled_output_files: FxHashSet, + /// Fingerprints of files referenced via `url()` in CSS (fonts, images, etc.). + /// When any of these change, CSS must be re-bundled even if the stylesheet + /// inputs themselves haven't changed, because the fingerprinted output + /// filenames will differ. + #[serde(default)] + pub css_url_dependencies: FxHashMap, /// Persisted asset hash cache: path → list of (options_hash, asset_hash, mtime, size). /// Used to skip `calculate_hash` on incremental rebuilds when the file hasn't changed. #[serde(default)] @@ -503,18 +509,32 @@ pub fn find_stale_static_files( .collect() } -/// Check whether rebundling is needed by comparing asset sets. +/// Check whether rebundling is needed by comparing asset sets and CSS dependency fingerprints. pub fn needs_rebundle( cached_scripts: &[SerializedAssetRef], cached_styles: &[SerializedAssetRef], current_scripts: &FxHashSet, current_styles: &FxHashSet, + cached_css_deps: &FxHashMap, ) -> bool { fn sets_differ(cached: &[SerializedAssetRef], current: &FxHashSet) -> bool { cached.len() != current.len() || cached.iter().any(|item| !current.contains(item)) } - sets_differ(cached_scripts, current_scripts) || sets_differ(cached_styles, current_styles) + if sets_differ(cached_scripts, current_scripts) || sets_differ(cached_styles, current_styles) { + return true; + } + + // Check if any file referenced via url() in CSS has changed (or been deleted). + // A change means the fingerprinted output filename will differ, so we must rebundle. + for (path, prev_fp) in cached_css_deps { + match file_fingerprint(path) { + Some((mtime, size)) if mtime == prev_fp.mtime_ns && size == prev_fp.size => {} + _ => return true, + } + } + + false } /// Compute incremental state from a previously loaded cache and current content. @@ -806,11 +826,14 @@ mod tests { let current_scripts: FxHashSet = scripts.iter().cloned().collect(); let current_styles: FxHashSet = FxHashSet::default(); + let no_css_deps = FxHashMap::default(); + assert!(!needs_rebundle( &scripts, &styles, ¤t_scripts, - ¤t_styles + ¤t_styles, + &no_css_deps, )); // Add a new script @@ -824,7 +847,8 @@ mod tests { &scripts, &styles, &new_scripts, - ¤t_styles + ¤t_styles, + &no_css_deps, )); } diff --git a/crates/maudit/src/errors.rs b/crates/maudit/src/errors.rs index 5148c164..eafc5f14 100644 --- a/crates/maudit/src/errors.rs +++ b/crates/maudit/src/errors.rs @@ -53,6 +53,13 @@ pub enum AssetError { #[source] source: std::io::Error, }, + #[error("Failed to copy CSS-referenced asset {source_path} to {dest_path}")] + CopyFailed { + source_path: PathBuf, + dest_path: PathBuf, + #[source] + source: std::io::Error, + }, #[error("Failed to load image for placeholder generation: {path}")] ImageLoadFailed { path: PathBuf, diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 96bdc2cc..86e6c6fe 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -5,5 +5,5 @@ edition = "2024" publish = false [dependencies] -rolldown = { package = "brk_rolldown", version = "0.8.0" } +rolldown = { package = "brk_rolldown", version = "1.0.0-rc.7" } tokio = { version = "1", features = ["rt"] }