diff --git a/.github/renovate.json b/.github/renovate.json index 93f726ac6..039b75413 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,5 +1,6 @@ { - "extends": ["config:base", ":preserveSemverRanges"], + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["github>Boshen/renovate"], "ignorePaths": [ "**/node_modules/**", "**/bower_components/**", @@ -7,22 +8,5 @@ "**/__tests__/**", "**/test/**", "**/__fixtures__/**" - ], - "packageRules": [ - { - "automerge": true, - "autoApprove": true, - "matchUpdateTypes": ["minor", "patch", "pin", "digest"] - }, - { - "matchPackageNames": ["^@angular"], - "rangeStrategy": "replace", - "groupName": "angular" - } - ], - "postUpdateOptions": ["pnpmDedupe"], - "lockFileMaintenance": { - "enabled": true, - "extends": ["schedule:monthly"] - } + ] } diff --git a/Cargo.lock b/Cargo.lock index 2461ee5c3..a19baf0b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,30 @@ # It is not intended for manual editing. version = 4 +[[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" @@ -35,13 +59,22 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[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", ] @@ -54,6 +87,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "bstr" version = "1.12.1" @@ -64,6 +109,40 @@ dependencies = [ "serde", ] +[[package]] +name = "bumpalo" +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 = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "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 = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + [[package]] name = "castaway" version = "0.2.4" @@ -122,7 +201,36 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "windows-sys 0.59.0", + "windows-sys", +] + +[[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 = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", ] [[package]] @@ -140,6 +248,63 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "cssparser" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.11.3", + "smallvec", +] + +[[package]] +name = "cssparser-color" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556c099a61d85989d7af52b692e35a8d68a57e7df8c6d07563dc0778b3960c9f" +dependencies = [ + "cssparser", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "ctor" version = "0.6.3" @@ -156,6 +321,34 @@ version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" +[[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]] +name = "data-encoding" +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 = "displaydoc" version = "0.2.5" @@ -164,7 +357,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -173,6 +366,21 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd8e701084c37e7ef62d3f9e453b618130cbc0ef3573847785952a3ac3f746bf" +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + [[package]] name = "dtor" version = "0.1.1" @@ -213,7 +421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -267,6 +475,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.32" @@ -323,7 +537,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -355,6 +569,29 @@ dependencies = [ "slab", ] +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + [[package]] name = "getrandom" version = "0.4.2" @@ -363,7 +600,7 @@ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", "wasip3", ] @@ -390,6 +627,21 @@ 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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.5" @@ -550,6 +802,15 @@ dependencies = [ "walkdir", ] +[[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" @@ -565,6 +826,16 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "json-escape-simd" version = "3.0.1" @@ -580,6 +851,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "leb128fmt" version = "0.1.0" @@ -613,6 +890,46 @@ dependencies = [ "libc", ] +[[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", + "const-str", + "cssparser", + "cssparser-color", + "dashmap", + "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 = "linux-raw-sys" version = "0.12.1" @@ -625,12 +942,27 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "memchr" version = "2.8.0" @@ -674,12 +1006,12 @@ version = "3.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c914b5e420182bfb73504e0607592cdb8e2e21437d450883077669fb72a114d" dependencies = [ - "convert_case", + "convert_case 0.11.0", "ctor", "napi-derive-backend", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -688,11 +1020,11 @@ version = "5.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0864cf6a82e2cfb69067374b64c9253d7e910e5b34db833ed7495dda56ccb18" dependencies = [ - "convert_case", + "convert_case 0.11.0", "proc-macro2", "quote", "semver", - "syn", + "syn 2.0.117", ] [[package]] @@ -756,6 +1088,12 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[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" @@ -791,14 +1129,14 @@ checksum = "d4faecb54d0971f948fbc1918df69b26007e6f279a204793669542e1e8b75eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "oxc_allocator" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d4e5a43018728a7f6aa14b1034c43a0869fc0d05002a181d5dacc698e488b9" +checksum = "c17ece0d1edc5e92822be95428460bc6b12f0dce8f95a9efabf751189a75f9f2" dependencies = [ "allocator-api2", "hashbrown 0.16.1", @@ -814,6 +1152,7 @@ version = "0.1.0" dependencies = [ "indexmap", "insta", + "lightningcss", "oxc-miette", "oxc_allocator", "oxc_ast", @@ -864,9 +1203,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b7429c1035c3bf0de582ae4458d4f769566d574cfe71e170e328a123337a8d" +checksum = "06ec0e9560cce8917197c7b13be7288707177f48a6f0ca116d0b53689e18bbc3" dependencies = [ "bitflags", "oxc_allocator", @@ -881,21 +1220,21 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3d3eb4a7b45c9f407f96ecafddad0a88cbf085dca7d74f3e4191ba03d2d5f3" +checksum = "f266c05258e76cb84d7eee538e4fc75e2687f4220e1b2f141c490b35025a6443" dependencies = [ - "phf", + "phf 0.13.1", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "oxc_ast_visit" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87408c66c769e714cc74c24626403c63b0fd76f251d0971404a347611280668d" +checksum = "3477ca0b6dd5bebcb1d3bf4c825b65999975d6ca91d6f535bf067e979fad113a" dependencies = [ "oxc_allocator", "oxc_ast", @@ -905,15 +1244,15 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af06d9ab1bfd8baff16ef7dcc6824ea1fea0938ba41b1e113b882738e285d8ee" +checksum = "d8701946f2acbd655610a331cf56f0aa58349ef792e6bf2fb65c56785b87fe8e" [[package]] name = "oxc_diagnostics" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908b7dae769982c7ade68f6ba3b4edb32b5a5941800fe8118f9c96fe4cfa7982" +checksum = "b04ea16e6016eceb281fb61bbac5f860f075864e93ae15ec18b6c2d0b152e435" dependencies = [ "cow-utils", "oxc-miette", @@ -922,9 +1261,9 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78e4efa8dd802bb4e15536c71b081540f7bf4fc046b7043bc2e650cea40f62ca" +checksum = "f4b107cae9b8bce541a45463623e1c4b1bb073e81d966483720f0e831facdcb1" dependencies = [ "cow-utils", "num-bigint", @@ -938,9 +1277,9 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e33d1f099a1e5c8f820df64654b1657f0aaf744d4137377726902738bfba80" +checksum = "57b79c9e9684eab83293d67dcbbfd2b1a1f062d27a8188411eb700c6e17983fa" dependencies = [ "dragonbox_ecma", "itoa", @@ -959,9 +1298,9 @@ dependencies = [ [[package]] name = "oxc_napi" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08b7a5df70f84534f362d08f38535260f0d68ec8b1bd0e3ca80a4c6d1389f30" +checksum = "972b9ef842657beb30d9834fbfa8059a55c3ce9696a63673390b26354f75b622" dependencies = [ "napi", "napi-build", @@ -975,9 +1314,9 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa019a6d043e2087d8506c6716a55ee680ffb3eb564ab52bed0328d4076afb33" +checksum = "487f41bdacb3ef9afd8c5b0cb5beceec3ac4ecd0c348804aa1907606d370c731" dependencies = [ "bitflags", "cow-utils", @@ -998,16 +1337,16 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f28f7617dc3d0dd642ca4f9be4c8cf5365f114dc27a745d1ebfa82b8f729ef3" +checksum = "d495c085efbde1d65636497f9d3e3e58151db614a97e313e2e7a837d81865419" dependencies = [ "bitflags", "oxc_allocator", "oxc_ast_macros", "oxc_diagnostics", "oxc_span", - "phf", + "phf 0.13.1", "rustc-hash", "unicode-id-start", ] @@ -1041,16 +1380,15 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ab63f46cfbf4ef58b5a78439202593fe4a8511281ba1de32303e2c28b0e5e8" +checksum = "6ac7034e3d2f5a73b39b5a0873bb3d38a504657c95cd1a8682b0d424a4bd3b77" dependencies = [ - "itertools", + "itertools 0.14.0", "memchr", "oxc_allocator", "oxc_ast", "oxc_ast_visit", - "oxc_data_structures", "oxc_diagnostics", "oxc_ecmascript", "oxc_index", @@ -1058,16 +1396,15 @@ dependencies = [ "oxc_syntax", "rustc-hash", "self_cell", - "smallvec", ] [[package]] name = "oxc_sourcemap" -version = "6.0.2" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f89482522f3cd820817d48ee4ade5b10822060d6e5e4d419f05f6d8bd29d70" +checksum = "7cd10919ee3316ed4beef8b22b326b73b96c06029b0bff984a848269bb42a286" dependencies = [ - "base64-simd", + "base64-simd 0.8.0", "json-escape-simd", "rustc-hash", "serde", @@ -1076,9 +1413,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6813c0f28625a9a1c8906144396fb7ee22a2a7722d49b707a06d19f81be450ef" +checksum = "3edcf2bc8bc73cd8d252650737ef48a482484a91709b7f7a5c5ce49305f247e8" dependencies = [ "compact_str", "oxc-miette", @@ -1091,9 +1428,9 @@ dependencies = [ [[package]] name = "oxc_str" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b163ab61908f1d636704bb57425692c38a7addde8e7244ff0dd92394084a17fe" +checksum = "a0c60f1570f04257d5678a16391f6d18dc805325e7f876b8e176a3a36fe897be" dependencies = [ "compact_str", "hashbrown 0.16.1", @@ -1104,9 +1441,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.116.0" +version = "0.121.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c82e33172f5613c4b7cf502d90b4ea866cd9103cb5e818a938889aef847daf" +checksum = "5a10c19c89298c0b126d12c5f545786405efbad9012d956ebb3190b64b29905a" dependencies = [ "bitflags", "cow-utils", @@ -1117,7 +1454,7 @@ dependencies = [ "oxc_estree", "oxc_index", "oxc_span", - "phf", + "phf 0.13.1", "serde", "unicode-id-start", ] @@ -1132,6 +1469,55 @@ dependencies = [ "seize", ] +[[package]] +name = "parcel_selectors" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54fd03f1ad26cb6b3ec1b7414fa78a3bd639e7dbb421b1a60513c96ce886a196" +dependencies = [ + "bitflags", + "cssparser", + "log", + "phf 0.11.3", + "phf_codegen", + "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_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "pathdiff" version = "0.2.3" @@ -1144,17 +1530,47 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[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_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand", +] + [[package]] name = "phf_generator" version = "0.13.1" @@ -1162,7 +1578,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]] @@ -1171,11 +1600,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]] @@ -1208,6 +1646,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "prettyplease" version = "0.2.37" @@ -1215,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", ] [[package]] @@ -1233,6 +1677,26 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bccbff07d5ed689c4087d20d7307a52ab6141edeedf487c3876a55b86cf63df" +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quote" version = "1.0.45" @@ -1242,12 +1706,68 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + [[package]] name = "ref-cast" version = "1.0.25" @@ -1265,7 +1785,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1285,6 +1805,44 @@ version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "rkyv" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rustc-hash" version = "2.1.1" @@ -1301,7 +1859,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1325,6 +1883,18 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[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" @@ -1332,7 +1902,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1363,6 +1933,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" @@ -1380,7 +1959,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1403,6 +1982,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[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-json" version = "0.17.0" @@ -1444,9 +2032,6 @@ name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -dependencies = [ - "serde", -] [[package]] name = "smawk" @@ -1466,6 +2051,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.117" @@ -1485,20 +2081,26 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" -version = "3.26.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom", + "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1529,7 +2131,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1542,6 +2144,21 @@ 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.50.0" @@ -1570,7 +2187,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1636,6 +2253,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "value-trait" version = "0.12.1" @@ -1648,6 +2275,18 @@ dependencies = [ "ryu", ] +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[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" @@ -1664,6 +2303,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + [[package]] name = "wasip2" version = "1.0.2+wasi-0.2.9" @@ -1682,6 +2327,51 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + [[package]] name = "wasm-encoder" version = "0.244.0" @@ -1722,7 +2412,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1778,7 +2468,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1789,7 +2479,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1835,15 +2525,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -1947,7 +2628,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -1963,7 +2644,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -2011,6 +2692,15 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "yoke" version = "0.8.1" @@ -2030,10 +2720,30 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "zerofrom" version = "0.1.6" @@ -2051,7 +2761,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -2085,7 +2795,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 57af1f1a4..2f3dabd4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,14 +87,14 @@ multiple_crate_versions = "allow" [workspace.dependencies] # External oxc crates from crates.io -oxc_allocator = "0.116" -oxc_ast = "0.116" -oxc_ast_visit = "0.116" -oxc_diagnostics = "0.116" -oxc_napi = "0.116" -oxc_parser = "0.116" -oxc_semantic = "0.116" -oxc_span = "0.116" +oxc_allocator = "0.121" +oxc_ast = "0.121" +oxc_ast_visit = "0.121" +oxc_diagnostics = "0.121" +oxc_napi = "0.121" +oxc_parser = "0.121" +oxc_semantic = "0.121" +oxc_span = "0.121" oxc_sourcemap = "6.0.1" # Internal diff --git a/README.md b/README.md index 7a7bbeb88..538701ece 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # OXC Angular Compiler +> [!WARNING] +> This project is in an experimental stage and is actively seeking maintainers. + A high-performance Angular template compiler written in Rust, leveraging the [Oxc](https://github.com/oxc-project/oxc) infrastructure for blazing-fast compilation. ## Features diff --git a/crates/oxc_angular_compiler/Cargo.toml b/crates/oxc_angular_compiler/Cargo.toml index fbecb13a2..0712ece2b 100644 --- a/crates/oxc_angular_compiler/Cargo.toml +++ b/crates/oxc_angular_compiler/Cargo.toml @@ -26,6 +26,7 @@ oxc_sourcemap = { workspace = true } miette = { workspace = true } rustc-hash = { workspace = true } indexmap = { workspace = true } +lightningcss = "1.0.0-alpha.71" oxc_resolver = { version = "11", optional = true } pathdiff = { version = "0.2", optional = true } semver = "1.0.27" diff --git a/crates/oxc_angular_compiler/src/component/definition.rs b/crates/oxc_angular_compiler/src/component/definition.rs index b84db57da..8d02a5add 100644 --- a/crates/oxc_angular_compiler/src/component/definition.rs +++ b/crates/oxc_angular_compiler/src/component/definition.rs @@ -23,6 +23,7 @@ use super::metadata::{ ViewEncapsulation, }; use super::namespace_registry::NamespaceRegistry; +use super::transform::TransformOptions; use crate::directive::{ create_host_directive_mappings_array, create_inputs_literal, create_outputs_literal, }; @@ -62,6 +63,7 @@ pub struct ComponentDefinitions<'a> { pub fn generate_component_definitions<'a>( allocator: &'a Allocator, metadata: &ComponentMetadata<'a>, + options: &TransformOptions, job: &mut ComponentCompilationJob<'a>, template_fn: FunctionExpr<'a>, host_binding_result: Option>, @@ -79,6 +81,7 @@ pub fn generate_component_definitions<'a>( let cmp_definition = generate_cmp_definition( allocator, metadata, + options, job, template_fn, host_binding_result, @@ -109,6 +112,7 @@ pub fn generate_component_definitions<'a>( fn generate_cmp_definition<'a>( allocator: &'a Allocator, metadata: &ComponentMetadata<'a>, + options: &TransformOptions, job: &mut ComponentCompilationJob<'a>, template_fn: FunctionExpr<'a>, host_binding_result: Option>, @@ -435,23 +439,17 @@ fn generate_cmp_definition<'a>( if !metadata.styles.is_empty() { let mut style_entries: OxcVec<'a, OutputExpression<'a>> = OxcVec::new_in(allocator); for style in &metadata.styles { - // Apply CSS scoping for Emulated encapsulation - let style_value = if metadata.encapsulation == ViewEncapsulation::Emulated { - // Use shim_css_text with %COMP% placeholder - // Angular's runtime will replace %COMP% with the actual component ID - let scoped = crate::styles::shim_css_text(style.as_str(), content_attr, host_attr); - // Skip empty styles - if scoped.trim().is_empty() { - continue; - } - Atom::from_in(scoped.as_str(), allocator) - } else { - // For None/ShadowDom, use styles as-is - if style.trim().is_empty() { - continue; - } - style.clone() - }; + let style = crate::styles::finalize_component_style( + style.as_str(), + metadata.encapsulation == ViewEncapsulation::Emulated, + content_attr, + host_attr, + options.minify_component_styles, + ); + if style.trim().is_empty() { + continue; + } + let style_value = Atom::from_in(style.as_str(), allocator); style_entries.push(OutputExpression::Literal(Box::new_in( LiteralExpr { value: LiteralValue::String(style_value), source_span: None }, @@ -1201,7 +1199,7 @@ fn create_host_directives_arg<'a>( quoted: false, }); - // inputs: ['publicName', 'internalName', ...] + // inputs: ['internalName', 'publicName', ...] if !directive.inputs.is_empty() { let inputs_array = create_host_directive_mappings_array(allocator, &directive.inputs); @@ -1212,7 +1210,7 @@ fn create_host_directives_arg<'a>( }); } - // outputs: ['publicName', 'internalName', ...] + // outputs: ['internalName', 'publicName', ...] if !directive.outputs.is_empty() { let outputs_array = create_host_directive_mappings_array(allocator, &directive.outputs); diff --git a/crates/oxc_angular_compiler/src/component/transform.rs b/crates/oxc_angular_compiler/src/component/transform.rs index e497c8bdd..636906434 100644 --- a/crates/oxc_angular_compiler/src/component/transform.rs +++ b/crates/oxc_angular_compiler/src/component/transform.rs @@ -174,6 +174,12 @@ pub struct TransformOptions { /// /// Default: false (metadata is dev-only and usually stripped in production) pub emit_class_metadata: bool, + + /// Minify final component styles before emitting them into `styles: [...]`. + /// + /// This runs after Angular style encapsulation, so it applies to the same + /// final CSS strings that are embedded in component definitions. + pub minify_component_styles: bool, } /// Input for host metadata when passed via TransformOptions. @@ -223,6 +229,7 @@ impl Default for TransformOptions { resolved_imports: None, // Class metadata for TestBed support (disabled by default) emit_class_metadata: false, + minify_component_styles: false, } } } @@ -2453,6 +2460,7 @@ fn compile_component_full<'a>( let definitions = generate_component_definitions( allocator, metadata, + options, &mut job, compiled.template_fn, host_binding_result, diff --git a/crates/oxc_angular_compiler/src/directive/compiler.rs b/crates/oxc_angular_compiler/src/directive/compiler.rs index 960b31fce..2fffd2ac3 100644 --- a/crates/oxc_angular_compiler/src/directive/compiler.rs +++ b/crates/oxc_angular_compiler/src/directive/compiler.rs @@ -424,6 +424,13 @@ pub enum InputFlags { HasDecoratorInputTransform = 2, // 1 << 1 } +/// Check if an object property key needs quoting because it contains unsafe characters. +/// +/// Matches Angular's `UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/` from `render3/view/util.ts`. +fn needs_object_key_quoting(key: &str) -> bool { + key.contains('.') || key.contains('-') +} + /// Creates the inputs literal map. /// /// Ported from Angular's `conditionallyCreateDirectiveBindingLiteral` in `render3/view/util.ts`. @@ -512,7 +519,8 @@ pub fn create_inputs_literal<'a>( )) }; - entries.push(LiteralMapEntry { key: declared_name.clone(), value, quoted: false }); + let quoted = needs_object_key_quoting(declared_name); + entries.push(LiteralMapEntry { key: declared_name.clone(), value, quoted }); } Some(OutputExpression::LiteralMap(Box::new_in( @@ -533,6 +541,7 @@ pub fn create_outputs_literal<'a>( let mut entries = Vec::new_in(allocator); for (class_name, binding_name) in outputs { + let quoted = needs_object_key_quoting(class_name); entries.push(LiteralMapEntry { key: class_name.clone(), value: OutputExpression::Literal(Box::new_in( @@ -542,7 +551,7 @@ pub fn create_outputs_literal<'a>( }, allocator, )), - quoted: false, + quoted, }); } @@ -915,7 +924,7 @@ fn create_host_directives_feature_arg<'a>( /// Creates a host directive mappings array. /// -/// Format: `['publicName', 'internalName', 'publicName2', 'internalName2']` +/// Format: `['internalName', 'publicName', 'internalName2', 'publicName2']` /// /// Shared between directive and component compilers, mirroring Angular's /// `createHostDirectivesMappingArray` in `view/compiler.ts`. @@ -927,11 +936,11 @@ pub(crate) fn create_host_directive_mappings_array<'a>( for (public_name, internal_name) in mappings { entries.push(OutputExpression::Literal(Box::new_in( - LiteralExpr { value: LiteralValue::String(public_name.clone()), source_span: None }, + LiteralExpr { value: LiteralValue::String(internal_name.clone()), source_span: None }, allocator, ))); entries.push(OutputExpression::Literal(Box::new_in( - LiteralExpr { value: LiteralValue::String(internal_name.clone()), source_span: None }, + LiteralExpr { value: LiteralValue::String(public_name.clone()), source_span: None }, allocator, ))); } @@ -1476,10 +1485,11 @@ mod tests { let output = emitter.emit_expression(&result.expression); let normalized = output.replace([' ', '\n', '\t'], ""); - // Must contain flat array format: inputs:["uTooltip","brnTooltipTrigger"] + // Must contain flat array format: inputs:["brnTooltipTrigger","uTooltip"] + // (internalName first, then publicName — matching Angular's createHostDirectivesMappingArray) assert!( - normalized.contains(r#"inputs:["uTooltip","brnTooltipTrigger"]"#), - "Host directive inputs should be flat array [\"publicName\",\"internalName\"], not object. Got:\n{}", + normalized.contains(r#"inputs:["brnTooltipTrigger","uTooltip"]"#), + "Host directive inputs should be flat array [\"internalName\",\"publicName\"]. Got:\n{}", output ); // Must NOT contain object format: inputs:{uTooltip:"brnTooltipTrigger"} @@ -1540,11 +1550,105 @@ mod tests { let output = emitter.emit_expression(&result.expression); let normalized = output.replace([' ', '\n', '\t'], ""); - // Must contain flat array format: outputs:["clicked","trackClick"] + // Must contain flat array format: outputs:["trackClick","clicked"] + // (internalName first, then publicName — matching Angular's createHostDirectivesMappingArray) assert!( - normalized.contains(r#"outputs:["clicked","trackClick"]"#), - "Host directive outputs should be flat array. Got:\n{}", + normalized.contains(r#"outputs:["trackClick","clicked"]"#), + "Host directive outputs should be flat array [\"internalName\",\"publicName\"]. Got:\n{}", output ); } + + #[test] + fn test_create_inputs_literal_quotes_dotted_key() { + let allocator = Allocator::default(); + let inputs = vec![R3InputMetadata { + class_property_name: Atom::from("fxFlexAlign.xs"), + binding_property_name: Atom::from("fxFlexAlign.xs"), + required: false, + is_signal: false, + transform_function: None, + }]; + let expr = create_inputs_literal(&allocator, &inputs).unwrap(); + let emitter = JsEmitter::new(); + let output = emitter.emit_expression(&expr); + assert!( + output.contains(r#""fxFlexAlign.xs""#), + "Dotted key should be quoted. Got:\n{output}" + ); + } + + #[test] + fn test_create_inputs_literal_quotes_hyphenated_key() { + let allocator = Allocator::default(); + let inputs = vec![R3InputMetadata { + class_property_name: Atom::from("fxFlexAlign.lt-sm"), + binding_property_name: Atom::from("fxFlexAlign.lt-sm"), + required: false, + is_signal: false, + transform_function: None, + }]; + let expr = create_inputs_literal(&allocator, &inputs).unwrap(); + let emitter = JsEmitter::new(); + let output = emitter.emit_expression(&expr); + assert!( + output.contains(r#""fxFlexAlign.lt-sm""#), + "Hyphenated key should be quoted. Got:\n{output}" + ); + } + + #[test] + fn test_create_inputs_literal_no_quotes_for_simple_identifier() { + let allocator = Allocator::default(); + let inputs = vec![R3InputMetadata { + class_property_name: Atom::from("fxFlexAlign"), + binding_property_name: Atom::from("fxFlexAlign"), + required: false, + is_signal: false, + transform_function: None, + }]; + let expr = create_inputs_literal(&allocator, &inputs).unwrap(); + let emitter = JsEmitter::new(); + let output = emitter.emit_expression(&expr); + // Key should be bare (unquoted), followed by colon + assert!( + output.contains("fxFlexAlign:"), + "Simple identifier key should be bare. Got:\n{output}" + ); + // Key should NOT be quoted — check that no quoted form appears before the colon + assert!( + !output.contains(r#""fxFlexAlign":"#), + "Simple identifier key should not be quoted. Got:\n{output}" + ); + } + + #[test] + fn test_create_outputs_literal_quotes_dotted_key() { + let allocator = Allocator::default(); + let outputs = vec![(Atom::from("activate.xs"), Atom::from("activateXs"))]; + let expr = create_outputs_literal(&allocator, &outputs).unwrap(); + let emitter = JsEmitter::new(); + let output = emitter.emit_expression(&expr); + assert!( + output.contains(r#""activate.xs""#), + "Dotted output key should be quoted. Got:\n{output}" + ); + } + + #[test] + fn test_create_outputs_literal_no_quotes_for_simple_identifier() { + let allocator = Allocator::default(); + let outputs = vec![(Atom::from("activate"), Atom::from("activate"))]; + let expr = create_outputs_literal(&allocator, &outputs).unwrap(); + let emitter = JsEmitter::new(); + let output = emitter.emit_expression(&expr); + assert!( + output.contains("activate:"), + "Simple identifier output key should be bare. Got:\n{output}" + ); + assert!( + !output.contains(r#""activate":"#), + "Simple identifier output key should not be quoted. Got:\n{output}" + ); + } } diff --git a/crates/oxc_angular_compiler/src/linker/mod.rs b/crates/oxc_angular_compiler/src/linker/mod.rs index 7e2865739..417944c7b 100644 --- a/crates/oxc_angular_compiler/src/linker/mod.rs +++ b/crates/oxc_angular_compiler/src/linker/mod.rs @@ -43,6 +43,18 @@ use oxc_span::{GetSpan, SourceType}; use crate::optimizer::Edit; use crate::pipeline::selector::{R3SelectorElement, parse_selector_to_r3_selector}; +/// Check if an object property key needs quoting because it contains unsafe characters. +/// +/// Matches Angular's `UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/` from `render3/view/util.ts`. +fn needs_object_key_quoting(key: &str) -> bool { + key.contains('.') || key.contains('-') +} + +/// Quote a property key if it contains unsafe characters (dots or hyphens). +fn quote_key(key: &str) -> String { + if needs_object_key_quoting(key) { format!("\"{key}\"") } else { key.to_string() } +} + /// Partial declaration function names to link. const DECLARE_FACTORY: &str = "\u{0275}\u{0275}ngDeclareFactory"; const DECLARE_INJECTABLE: &str = "\u{0275}\u{0275}ngDeclareInjectable"; @@ -1234,10 +1246,12 @@ fn convert_inputs_to_definition_format(inputs_obj: &ObjectExpression<'_>, source } }; + let quoted_key = quote_key(&key); + match &p.value { // Simple string: propertyName: "publicName" → keep as is Expression::StringLiteral(lit) => { - entries.push(format!("{key}: \"{}\"", lit.value)); + entries.push(format!("{quoted_key}: \"{}\"", lit.value)); } // Array: check if it's declaration format [publicName, classPropertyName] // and convert to definition format [InputFlags, publicName, classPropertyName] @@ -1253,17 +1267,17 @@ fn convert_inputs_to_definition_format(inputs_obj: &ObjectExpression<'_>, source // Convert to: [0, "publicName", "classPropertyName"] let arr_source = &source[arr.span.start as usize + 1..arr.span.end as usize - 1]; - entries.push(format!("{key}: [0, {arr_source}]")); + entries.push(format!("{quoted_key}: [0, {arr_source}]")); } else { // Already in definition format or unknown, keep as is let val = &source[p.value.span().start as usize..p.value.span().end as usize]; - entries.push(format!("{key}: {val}")); + entries.push(format!("{quoted_key}: {val}")); } } else { // 3+ elements likely already in definition format, keep as is let val = &source[p.value.span().start as usize..p.value.span().end as usize]; - entries.push(format!("{key}: {val}")); + entries.push(format!("{quoted_key}: {val}")); } } // Object: Angular 16+ format with classPropertyName, publicName, isRequired, etc. @@ -1290,20 +1304,21 @@ fn convert_inputs_to_definition_format(inputs_obj: &ObjectExpression<'_>, source if flags == 0 && transform.is_none() && public_name == declared_name { // Simple case: no flags, no transform, names match - entries.push(format!("{key}: \"{public_name}\"")); + entries.push(format!("{quoted_key}: \"{public_name}\"")); } else if let Some(transform_fn) = transform { entries.push(format!( - "{key}: [{flags}, \"{public_name}\", \"{declared_name}\", {transform_fn}]" + "{quoted_key}: [{flags}, \"{public_name}\", \"{declared_name}\", {transform_fn}]" )); } else { - entries - .push(format!("{key}: [{flags}, \"{public_name}\", \"{declared_name}\"]")); + entries.push(format!( + "{quoted_key}: [{flags}, \"{public_name}\", \"{declared_name}\"]" + )); } } // Unknown format, keep as is _ => { let val = &source[p.value.span().start as usize..p.value.span().end as usize]; - entries.push(format!("{key}: {val}")); + entries.push(format!("{quoted_key}: {val}")); } } } diff --git a/crates/oxc_angular_compiler/src/styles/minify.rs b/crates/oxc_angular_compiler/src/styles/minify.rs new file mode 100644 index 000000000..89f75a907 --- /dev/null +++ b/crates/oxc_angular_compiler/src/styles/minify.rs @@ -0,0 +1,68 @@ +use lightningcss::stylesheet::{MinifyOptions, ParserOptions, PrinterOptions, StyleSheet}; + +const COMPONENT_PLACEHOLDER: &str = "%COMP%"; +const MINIFY_PLACEHOLDER: &str = "OXCANGULARCOMPONENT"; + +/// Apply Angular style encapsulation and optionally minify the final CSS. +pub fn finalize_component_style( + style: &str, + encapsulate: bool, + content_attr: &str, + host_attr: &str, + minify: bool, +) -> String { + let style = if encapsulate { + super::shim_css_text(style, content_attr, host_attr) + } else { + style.to_string() + }; + + if !minify || style.trim().is_empty() { + return style; + } + + minify_component_style(&style).unwrap_or(style) +} + +/// Minify a final component CSS string while preserving Angular's `%COMP%` placeholder. +pub fn minify_component_style(style: &str) -> Option { + let css = style.replace(COMPONENT_PLACEHOLDER, MINIFY_PLACEHOLDER); + let mut stylesheet = StyleSheet::parse(&css, ParserOptions::default()).ok()?; + stylesheet.minify(MinifyOptions::default()).ok()?; + + let code = + stylesheet.to_css(PrinterOptions { minify: true, ..PrinterOptions::default() }).ok()?.code; + + Some(code.replace(MINIFY_PLACEHOLDER, COMPONENT_PLACEHOLDER)) +} + +#[cfg(test)] +mod tests { + use super::{finalize_component_style, minify_component_style}; + + #[test] + fn minifies_css_with_component_placeholders() { + let minified = minify_component_style( + "[_ngcontent-%COMP%] {\n color: red;\n background: transparent;\n}\n", + ) + .expect("style should minify"); + + assert_eq!(minified, "[_ngcontent-%COMP%]{color:red;background:0 0}"); + } + + #[test] + fn finalizes_emulated_styles_before_minifying() { + let finalized = finalize_component_style( + ":host {\n display: block;\n}\n.button {\n color: red;\n}\n", + true, + "_ngcontent-%COMP%", + "_nghost-%COMP%", + true, + ); + + assert_eq!( + finalized, + "[_nghost-%COMP%]{display:block}.button[_ngcontent-%COMP%]{color:red}" + ); + } +} diff --git a/crates/oxc_angular_compiler/src/styles/mod.rs b/crates/oxc_angular_compiler/src/styles/mod.rs index d11c1cea4..7d71b123b 100644 --- a/crates/oxc_angular_compiler/src/styles/mod.rs +++ b/crates/oxc_angular_compiler/src/styles/mod.rs @@ -5,5 +5,7 @@ //! - CSS transformation for component-scoped styles mod encapsulation; +mod minify; pub use encapsulation::{encapsulate_style, shim_css_text}; +pub use minify::{finalize_component_style, minify_component_style}; diff --git a/crates/oxc_angular_compiler/tests/integration_test.rs b/crates/oxc_angular_compiler/tests/integration_test.rs index 9fcaebe71..490d5c8e8 100644 --- a/crates/oxc_angular_compiler/tests/integration_test.rs +++ b/crates/oxc_angular_compiler/tests/integration_test.rs @@ -1524,6 +1524,34 @@ export class MultiStyledComponent {} insta::assert_snapshot!("component_with_multiple_styles", result.code); } +#[test] +fn test_component_with_minified_styles() { + let allocator = Allocator::default(); + let source = r#" +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-styled', + template: '
Hello
', + styles: ['.container { color: red; background: transparent; }'] +}) +export class StyledComponent {} +"#; + + let mut options = ComponentTransformOptions::default(); + options.minify_component_styles = true; + + let result = transform_angular_file(&allocator, "styled.component.ts", source, &options, None); + + assert_eq!(result.component_count, 1); + assert!(!result.has_errors(), "Should not have errors: {:?}", result.diagnostics); + assert!( + result.code.contains(".container[_ngcontent-%COMP%]{color:red;background:0 0}"), + "Generated code should contain minified component styles: {}", + result.code + ); +} + #[test] fn test_component_without_styles_downgrades_encapsulation() { let allocator = Allocator::default(); @@ -7833,3 +7861,131 @@ fn test_property_singleton_interpolation_with_sanitizer_angular_v19() { assert!(js.contains("ɵɵsanitizeUrl"), "Should include ɵɵsanitizeUrl sanitizer. Got:\n{js}"); insta::assert_snapshot!("property_singleton_interpolation_with_sanitizer_v19", js); } + +// ============================================================================ +// Host Directive Alias Tests +// ============================================================================ + +/// Test host directives with simple aliased inputs/outputs. +/// +/// Mirrors the compliance test `host_directives_with_inputs_outputs.ts`. +/// The mapping array must use `[internalName, publicName]` ordering. +#[test] +fn test_host_directives_with_inputs_outputs() { + let allocator = Allocator::default(); + let source = r#" +import { Component, Directive, EventEmitter, Input, Output } from '@angular/core'; + +@Directive({}) +export class HostDir { + @Input() value = 0; + @Input() color = ''; + @Output() opened = new EventEmitter(); + @Output() closed = new EventEmitter(); +} + +@Component({ + selector: 'my-component', + template: '', + hostDirectives: [{ + directive: HostDir, + inputs: ['value', 'color: colorAlias'], + outputs: ['opened', 'closed: closedAlias'], + }], + standalone: false, +}) +export class MyComponent { +} +"#; + + let result = transform_angular_file( + &allocator, + "test.component.ts", + source, + &ComponentTransformOptions::default(), + None, + ); + + assert!(!result.has_errors(), "Should not have errors: {:?}", result.diagnostics); + + let normalized = result.code.replace([' ', '\n', '\t'], ""); + + // Input mappings: 'value' (no alias) → ["value", "value"], 'color: colorAlias' → ["color", "colorAlias"] + // The array must be [internalName, publicName, ...] i.e. ["value", "value", "color", "colorAlias"] + assert!( + normalized.contains(r#"inputs:["value","value","color","colorAlias"]"#), + "Input mappings should be [internalName, publicName]. Got:\n{}", + result.code + ); + + // Output mappings: 'opened' → ["opened", "opened"], 'closed: closedAlias' → ["closed", "closedAlias"] + assert!( + normalized.contains(r#"outputs:["opened","opened","closed","closedAlias"]"#), + "Output mappings should be [internalName, publicName]. Got:\n{}", + result.code + ); + + insta::assert_snapshot!("host_directives_with_inputs_outputs", result.code); +} + +/// Test host directives where the directive has `@Input('alias')` and the host re-aliases. +/// +/// Mirrors the compliance test `host_directives_with_host_aliases.ts`. +#[test] +fn test_host_directives_with_host_aliases() { + let allocator = Allocator::default(); + let source = r#" +import { Component, Directive, EventEmitter, Input, Output } from '@angular/core'; + +@Directive({}) +export class HostDir { + @Input('valueAlias') value = 1; + @Input('colorAlias') color = ''; + @Output('openedAlias') opened = new EventEmitter(); + @Output('closedAlias') closed = new EventEmitter(); +} + +@Component({ + selector: 'my-component', + template: '', + hostDirectives: [{ + directive: HostDir, + inputs: ['valueAlias', 'colorAlias: customColorAlias'], + outputs: ['openedAlias', 'closedAlias: customClosedAlias'], + }], + standalone: false, +}) +export class MyComponent { +} +"#; + + let result = transform_angular_file( + &allocator, + "test.component.ts", + source, + &ComponentTransformOptions::default(), + None, + ); + + assert!(!result.has_errors(), "Should not have errors: {:?}", result.diagnostics); + + let normalized = result.code.replace([' ', '\n', '\t'], ""); + + // Input mappings: 'valueAlias' → ["valueAlias", "valueAlias"], 'colorAlias: customColorAlias' → ["colorAlias", "customColorAlias"] + assert!( + normalized + .contains(r#"inputs:["valueAlias","valueAlias","colorAlias","customColorAlias"]"#), + "Input mappings should be [internalName, publicName]. Got:\n{}", + result.code + ); + + // Output mappings: 'openedAlias' → ["openedAlias", "openedAlias"], 'closedAlias: customClosedAlias' → ["closedAlias", "customClosedAlias"] + assert!( + normalized + .contains(r#"outputs:["openedAlias","openedAlias","closedAlias","customClosedAlias"]"#), + "Output mappings should be [internalName, publicName]. Got:\n{}", + result.code + ); + + insta::assert_snapshot!("host_directives_with_host_aliases", result.code); +} diff --git a/crates/oxc_angular_compiler/tests/linker_test.rs b/crates/oxc_angular_compiler/tests/linker_test.rs new file mode 100644 index 000000000..2bfa9ac09 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/linker_test.rs @@ -0,0 +1,88 @@ +//! Tests for Angular linker input/output key quoting. + +use oxc_allocator::Allocator; +use oxc_angular_compiler::linker::link; + +/// Helper to build a ɵɵngDeclareDirective source with a given inputs block. +fn make_directive_source(inputs_block: &str) -> String { + format!( + r#"import * as i0 from "@angular/core"; +export class MyDir {{}} +MyDir.ɵdir = i0.ɵɵngDeclareDirective({{ minVersion: "14.0.0", version: "17.0.0", type: MyDir, selector: "[myDir]", inputs: {{ {inputs_block} }} }});"# + ) +} + +/// Helper to build a ɵɵngDeclareDirective source with a given outputs block. +fn make_directive_source_with_outputs(outputs_block: &str) -> String { + format!( + r#"import * as i0 from "@angular/core"; +export class MyDir {{}} +MyDir.ɵdir = i0.ɵɵngDeclareDirective({{ minVersion: "14.0.0", version: "17.0.0", type: MyDir, selector: "[myDir]", outputs: {{ {outputs_block} }} }});"# + ) +} + +#[test] +fn test_link_inputs_dotted_key() { + let allocator = Allocator::default(); + let code = make_directive_source(r#""fxFlexAlign.xs": "fxFlexAlignXs""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_inputs_hyphenated_key() { + let allocator = Allocator::default(); + let code = make_directive_source(r#""fxFlexAlign.lt-sm": "fxFlexAlignLtSm""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_inputs_simple_identifier() { + let allocator = Allocator::default(); + let code = make_directive_source(r#"fxFlexAlign: "fxFlexAlign""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_inputs_object_format_dotted_key() { + let allocator = Allocator::default(); + let code = make_directive_source( + r#""fxFlexAlign.xs": { classPropertyName: "fxFlexAlignXs", publicName: "fxFlexAlign.xs", isRequired: false, isSignal: false }"#, + ); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_inputs_array_format_dotted_key() { + let allocator = Allocator::default(); + let code = make_directive_source(r#""fxFlexAlign.xs": ["fxFlexAlign.xs", "fxFlexAlignXs"]"#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_outputs_dotted_key() { + let allocator = Allocator::default(); + let code = make_directive_source_with_outputs(r#""activate.xs": "activateXs""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_outputs_hyphenated_key() { + let allocator = Allocator::default(); + let code = make_directive_source_with_outputs(r#""activate.lt-sm": "activateLtSm""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} + +#[test] +fn test_link_outputs_simple_identifier() { + let allocator = Allocator::default(); + let code = make_directive_source_with_outputs(r#"activate: "activate""#); + let result = link(&allocator, &code, "test.mjs"); + insta::assert_snapshot!(result.code); +} diff --git a/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_host_aliases.snap b/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_host_aliases.snap new file mode 100644 index 000000000..a48a2520a --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_host_aliases.snap @@ -0,0 +1,37 @@ +--- +source: crates/oxc_angular_compiler/tests/integration_test.rs +expression: result.code +--- + +import { Component, Directive, EventEmitter, Input, Output } from '@angular/core'; +import * as i0 from '@angular/core'; + +export class HostDir { + value = 1; + color = ''; + opened = new EventEmitter(); + closed = new EventEmitter(); + +static ɵfac = function HostDir_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || HostDir)(); +}; +static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({type:HostDir,inputs:{value:[0,"valueAlias","value"], + color:[0,"colorAlias","color"]},outputs:{opened:"openedAlias",closed:"closedAlias"}}); +} + +export class MyComponent { + +static ɵfac = function MyComponent_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || MyComponent)(); +}; +static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({type:MyComponent,selectors:[["my-component"]], + standalone:false,features:[i0.ɵɵHostDirectivesFeature([{directive:HostDir,inputs:["valueAlias", + "valueAlias","colorAlias","customColorAlias"],outputs:["openedAlias","openedAlias", + "closedAlias","customClosedAlias"]}])],decls:0,vars:0,template:function MyComponent_Template(rf, + ctx) { + },dependencies:i0.ɵɵgetComponentDepsFactory(MyComponent),encapsulation:2}); +} +(() =>{ + (((typeof ngDevMode === "undefined") || ngDevMode) && i0.ɵsetClassDebugInfo(MyComponent, + {className:"MyComponent",filePath:"test.component.ts",lineNumber:1})); +})(); diff --git a/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_inputs_outputs.snap b/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_inputs_outputs.snap new file mode 100644 index 000000000..90d2a80d7 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/integration_test__host_directives_with_inputs_outputs.snap @@ -0,0 +1,36 @@ +--- +source: crates/oxc_angular_compiler/tests/integration_test.rs +expression: result.code +--- + +import { Component, Directive, EventEmitter, Input, Output } from '@angular/core'; +import * as i0 from '@angular/core'; + +export class HostDir { + value = 0; + color = ''; + opened = new EventEmitter(); + closed = new EventEmitter(); + +static ɵfac = function HostDir_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || HostDir)(); +}; +static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({type:HostDir,inputs:{value:"value",color:"color"}, + outputs:{opened:"opened",closed:"closed"}}); +} + +export class MyComponent { + +static ɵfac = function MyComponent_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || MyComponent)(); +}; +static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({type:MyComponent,selectors:[["my-component"]], + standalone:false,features:[i0.ɵɵHostDirectivesFeature([{directive:HostDir,inputs:["value", + "value","color","colorAlias"],outputs:["opened","opened","closed","closedAlias"]}])], + decls:0,vars:0,template:function MyComponent_Template(rf,ctx) { + },dependencies:i0.ɵɵgetComponentDepsFactory(MyComponent),encapsulation:2}); +} +(() =>{ + (((typeof ngDevMode === "undefined") || ngDevMode) && i0.ɵsetClassDebugInfo(MyComponent, + {className:"MyComponent",filePath:"test.component.ts",lineNumber:1})); +})(); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_array_format_dotted_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_array_format_dotted_key.snap new file mode 100644 index 000000000..1faf061f5 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_array_format_dotted_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 54 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], inputs: { "fxFlexAlign.xs": [0, "fxFlexAlign.xs", "fxFlexAlignXs"] }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_dotted_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_dotted_key.snap new file mode 100644 index 000000000..ecca7ee45 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_dotted_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 20 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], inputs: { "fxFlexAlign.xs": "fxFlexAlignXs" }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_hyphenated_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_hyphenated_key.snap new file mode 100644 index 000000000..11ae157d7 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_hyphenated_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 28 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], inputs: { "fxFlexAlign.lt-sm": "fxFlexAlignLtSm" }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_object_format_dotted_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_object_format_dotted_key.snap new file mode 100644 index 000000000..74a3b2506 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_object_format_dotted_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 46 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], inputs: { "fxFlexAlign.xs": [0, "fxFlexAlign.xs", "fxFlexAlignXs"] }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_simple_identifier.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_simple_identifier.snap new file mode 100644 index 000000000..80a67c13e --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_inputs_simple_identifier.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 36 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], inputs: { fxFlexAlign: "fxFlexAlign" }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_dotted_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_dotted_key.snap new file mode 100644 index 000000000..3ae23f85e --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_dotted_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 71 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], outputs: { "activate.xs": "activateXs" }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_hyphenated_key.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_hyphenated_key.snap new file mode 100644 index 000000000..bb1959b31 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_hyphenated_key.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 79 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], outputs: { "activate.lt-sm": "activateLtSm" }, standalone: false }); diff --git a/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_simple_identifier.snap b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_simple_identifier.snap new file mode 100644 index 000000000..2912e8be6 --- /dev/null +++ b/crates/oxc_angular_compiler/tests/snapshots/linker_test__link_outputs_simple_identifier.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_angular_compiler/tests/linker_test.rs +assertion_line: 87 +expression: result.code +--- +import * as i0 from "@angular/core"; +export class MyDir {} +MyDir.ɵdir = i0.ɵɵdefineDirective({ type: MyDir, selectors: [["", "myDir", ""]], outputs: { activate: "activate" }, standalone: false }); diff --git a/napi/angular-compiler/README.md b/napi/angular-compiler/README.md index 912344709..f63c921a3 100644 --- a/napi/angular-compiler/README.md +++ b/napi/angular-compiler/README.md @@ -139,6 +139,9 @@ interface TransformOptions { // i18n i18nUseExternalIds?: boolean + // Final component style output + minifyComponentStyles?: boolean + // Component metadata selector?: string standalone?: boolean @@ -176,6 +179,7 @@ interface AngularPluginOptions { // Style processing inlineStylesExtension?: string + minifyComponentStyles?: boolean | 'auto' // File replacements fileReplacements?: Array<{ @@ -185,6 +189,14 @@ interface AngularPluginOptions { } ``` +`minifyComponentStyles` resolves like this: + +- `true`: always minify component styles +- `false`: never minify component styles +- `"auto"` or `undefined`: follow the resolved Vite minification settings + +For `"auto"`, the plugin uses `build.cssMinify` when it is set, otherwise it falls back to `build.minify`. In dev, `"auto"` defaults to `false`. + ## Vite Plugin Architecture The Vite plugin consists of three sub-plugins: diff --git a/napi/angular-compiler/benchmarks/bitwarden/package.json b/napi/angular-compiler/benchmarks/bitwarden/package.json index e6678d49a..209f45883 100644 --- a/napi/angular-compiler/benchmarks/bitwarden/package.json +++ b/napi/angular-compiler/benchmarks/bitwarden/package.json @@ -13,19 +13,19 @@ "benchmark:incremental": "oxnode benchmark.ts --incremental" }, "dependencies": { - "@angular/animations": "20.3.17", + "@angular/animations": "20.3.18", "@angular/cdk": "20.2.14", - "@angular/common": "20.3.17", + "@angular/common": "20.3.18", "@angular/compiler": "20.3.18", "@angular/core": "20.3.18", - "@angular/forms": "20.3.17", - "@angular/platform-browser": "20.3.17", - "@angular/platform-browser-dynamic": "20.3.17", - "@angular/router": "20.3.17", + "@angular/forms": "20.3.18", + "@angular/platform-browser": "20.3.18", + "@angular/platform-browser-dynamic": "20.3.18", + "@angular/router": "20.3.18", "core-js": "^3.48.0", "rxjs": "catalog:", "tslib": "catalog:", - "zone.js": "~0.15.0" + "zone.js": "~0.16.0" }, "devDependencies": { "@oxc-angular/vite": "workspace:^", diff --git a/napi/angular-compiler/benchmarks/typedb-web/package.json b/napi/angular-compiler/benchmarks/typedb-web/package.json index 584403a66..c59abeaf0 100644 --- a/napi/angular-compiler/benchmarks/typedb-web/package.json +++ b/napi/angular-compiler/benchmarks/typedb-web/package.json @@ -13,34 +13,34 @@ "benchmark:incremental": "tsx benchmark.ts --incremental" }, "dependencies": { - "@angular/animations": "20.3.17", - "@angular/cdk": "20.0.5", - "@angular/common": "20.3.17", + "@angular/animations": "20.3.18", + "@angular/cdk": "20.2.14", + "@angular/common": "20.3.18", "@angular/compiler": "20.3.18", "@angular/core": "20.3.18", - "@angular/forms": "20.3.17", - "@angular/material": "20.0.5", - "@angular/platform-browser": "20.3.17", - "@angular/platform-browser-dynamic": "20.3.17", - "@angular/router": "20.3.17", - "@portabletext/to-html": "2.0.5", - "@sanity/asset-utils": "1.3.0", + "@angular/forms": "20.3.18", + "@angular/material": "20.2.14", + "@angular/platform-browser": "20.3.18", + "@angular/platform-browser-dynamic": "20.3.18", + "@angular/router": "20.3.18", + "@portabletext/to-html": "2.0.17", + "@sanity/asset-utils": "1.3.2", "@sanity/image-url": "1.0.2", "cookieconsent": "3.1.1", "d3-force": "3.0.0", "fontfaceobserver": "2.3.0", - "interactjs": "1.10.18", + "interactjs": "1.10.27", "ngx-cookieconsent": "4.0.2", "pixi.js-legacy": "7.4.3", "posthog-js": "1.268.8", "prismjs": "1.30.0", - "rxjs": "7.8.1", + "rxjs": "7.8.2", "tslib": "2.6.1", - "zone.js": "0.15.1" + "zone.js": "0.16.1" }, "devDependencies": { "@oxc-angular/vite": "workspace:^", - "@sanity/types": "3.97.1", + "@sanity/types": "3.99.0", "@types/d3-force": "3.0.10", "@types/fontfaceobserver": "2.1.3", "@types/node": "^22.19.3", diff --git a/napi/angular-compiler/e2e/compare/package.json b/napi/angular-compiler/e2e/compare/package.json index 52bc575d0..4c9c9df37 100644 --- a/napi/angular-compiler/e2e/compare/package.json +++ b/napi/angular-compiler/e2e/compare/package.json @@ -33,8 +33,8 @@ "@oxc-node/cli": "catalog:", "@oxc-node/core": "catalog:", "@types/node": "catalog:", - "oxc-parser": "^0.117.0", - "oxc-transform": "^0.117.0", + "oxc-parser": "^0.121.0", + "oxc-transform": "^0.121.0", "oxfmt": "catalog:", "typescript": "catalog:", "vitest": "catalog:" diff --git a/napi/angular-compiler/e2e/tests/build-minify-component-styles.spec.ts b/napi/angular-compiler/e2e/tests/build-minify-component-styles.spec.ts new file mode 100644 index 000000000..7e077b65e --- /dev/null +++ b/napi/angular-compiler/e2e/tests/build-minify-component-styles.spec.ts @@ -0,0 +1,97 @@ +import { execSync } from 'node:child_process' +import { existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs' +import { join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { test, expect } from '@playwright/test' + +const __dirname = fileURLToPath(new URL('.', import.meta.url)) +const APP_DIR = join(__dirname, '../app') +const BUILD_OUT_DIR = join(APP_DIR, 'dist-minify') +const TEMP_CONFIG = join(APP_DIR, 'vite.config.minify.ts') + +function writeBuildConfig(minify: boolean): void { + writeFileSync( + TEMP_CONFIG, + ` +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { angular } from '@oxc-angular/vite'; +import { defineConfig } from 'vite'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const tsconfig = path.resolve(__dirname, './tsconfig.json'); + +export default defineConfig({ + plugins: [ + angular({ + tsconfig, + liveReload: false, + minifyComponentStyles: 'auto', + }), + ], + build: { + minify: ${minify}, + outDir: 'dist-minify', + rollupOptions: { + external: [/^@angular\\/.+$/, /^rxjs(?:\\/.+)?$/, /^tslib$/], + }, + }, +}); +`.trim(), + 'utf-8', + ) +} + +function cleanup(): void { + rmSync(TEMP_CONFIG, { force: true }) + rmSync(BUILD_OUT_DIR, { recursive: true, force: true }) +} + +function readBuiltJs(): string { + const assetDir = join(BUILD_OUT_DIR, 'assets') + const files = existsSync(assetDir) ? readdirSync(assetDir) : [] + const jsFiles = files.filter((file) => file.endsWith('.js')) + + expect(jsFiles.length).toBeGreaterThan(0) + + return jsFiles.map((file) => readFileSync(join(assetDir, file), 'utf-8')).join('\n') +} + +test.describe('build auto minify component styles', () => { + test.afterEach(() => { + cleanup() + }) + + test('minifies embedded component styles when build.minify is true', () => { + writeBuildConfig(true) + + execSync('npx vite build --config vite.config.minify.ts', { + cwd: APP_DIR, + stdio: 'pipe', + timeout: 60000, + }) + + const output = readBuiltJs() + + expect(output).toContain('.card-title[_ngcontent-%COMP%]{color:green;margin:0}') + }) + + test('keeps embedded component styles unminified when build.minify is false', () => { + writeBuildConfig(false) + + execSync('npx vite build --config vite.config.minify.ts', { + cwd: APP_DIR, + stdio: 'pipe', + timeout: 60000, + }) + + const output = readBuiltJs() + + expect(output).toContain( + '.card-title[_ngcontent-%COMP%] {\\n color: green;\\n margin: 0;\\n}', + ) + }) +}) diff --git a/napi/angular-compiler/index.d.ts b/napi/angular-compiler/index.d.ts index 0d1d2a6cb..e1740cbc5 100644 --- a/napi/angular-compiler/index.d.ts +++ b/napi/angular-compiler/index.d.ts @@ -826,6 +826,13 @@ export interface TransformOptions { * Default: false (metadata is dev-only and usually stripped in production) */ emitClassMetadata?: boolean + /** + * Minify final component styles before emitting them into `styles: [...]`. + * + * This runs after Angular style encapsulation, so it applies to the same + * final CSS strings that are embedded in generated component definitions. + */ + minifyComponentStyles?: boolean /** * Resolved import paths for host directives and other imports. * diff --git a/napi/angular-compiler/index.js b/napi/angular-compiler/index.js index 8def2894d..64f83f1ea 100644 --- a/napi/angular-compiler/index.js +++ b/napi/angular-compiler/index.js @@ -83,12 +83,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-android-arm64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -106,12 +106,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-android-arm-eabi/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -137,12 +137,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-win32-x64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -160,12 +160,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-win32-x64-msvc/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -184,12 +184,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-win32-ia32-msvc/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -207,12 +207,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-win32-arm64-msvc/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -233,12 +233,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-darwin-universal/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -256,12 +256,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-darwin-x64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -279,12 +279,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-darwin-arm64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -306,12 +306,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-freebsd-x64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -329,12 +329,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-freebsd-arm64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -357,12 +357,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-x64-musl/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -380,12 +380,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-x64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -405,12 +405,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-arm64-musl/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -428,12 +428,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-arm64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -453,12 +453,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-arm-musleabihf/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -476,12 +476,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-arm-gnueabihf/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -501,12 +501,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-loong64-musl/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -524,12 +524,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-loong64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -549,12 +549,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-riscv64-musl/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -572,12 +572,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-riscv64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -596,12 +596,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-ppc64-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -619,12 +619,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-linux-s390x-gnu/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -646,12 +646,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-openharmony-arm64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -669,12 +669,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-openharmony-x64/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding @@ -692,12 +692,12 @@ function requireNative() { const bindingPackageVersion = require('@oxc-angular/binding-openharmony-arm/package.json').version if ( - bindingPackageVersion !== '0.0.17' && + bindingPackageVersion !== '0.0.18' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0' ) { throw new Error( - `Native binding package version mismatch, expected 0.0.17 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, + `Native binding package version mismatch, expected 0.0.18 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`, ) } return binding diff --git a/napi/angular-compiler/package.json b/napi/angular-compiler/package.json index e27e60581..1da8cecb3 100644 --- a/napi/angular-compiler/package.json +++ b/napi/angular-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@oxc-angular/vite", - "version": "0.0.17", + "version": "0.0.18", "description": "Oxc Angular Compiler Vite plugin", "keywords": [ "angular", diff --git a/napi/angular-compiler/src/lib.rs b/napi/angular-compiler/src/lib.rs index 818984c9c..ba3133fe1 100644 --- a/napi/angular-compiler/src/lib.rs +++ b/napi/angular-compiler/src/lib.rs @@ -27,7 +27,7 @@ use oxc_angular_compiler::{ build_prop_decorators_metadata as core_build_prop_decorators_metadata, compile_template_for_hmr, compile_template_to_js_with_options, encapsulate_style as rust_encapsulate_style, generate_hmr_update_module_from_js, - generate_style_update_module, shim_css_text, + generate_style_update_module, }; use oxc_napi::OxcError; @@ -190,6 +190,12 @@ pub struct TransformOptions { /// Default: false (metadata is dev-only and usually stripped in production) pub emit_class_metadata: Option, + /// Minify final component styles before emitting them into `styles: [...]`. + /// + /// This runs after Angular style encapsulation, so it applies to the same + /// final CSS strings that are embedded in generated component definitions. + pub minify_component_styles: Option, + /// Resolved import paths for host directives and other imports. /// /// Maps local identifier name (e.g., "AriaDisableDirective") to the resolved @@ -231,6 +237,7 @@ impl From for RustTransformOptions { resolved_imports: options.resolved_imports, // Class metadata for TestBed support emit_class_metadata: options.emit_class_metadata.unwrap_or(false), + minify_component_styles: options.minify_component_styles.unwrap_or(false), } } } @@ -512,12 +519,21 @@ pub fn compile_for_hmr_sync( let encapsulated_styles: Option> = if all_styles.is_empty() { None } else { - Some( - all_styles - .iter() - .map(|style| shim_css_text(style, "_ngcontent-%COMP%", "_nghost-%COMP%")) - .collect(), - ) + let styles: Vec = all_styles + .iter() + .map(|style| { + oxc_angular_compiler::styles::finalize_component_style( + style, + true, + "_ngcontent-%COMP%", + "_nghost-%COMP%", + opts.minify_component_styles, + ) + }) + .filter(|style| !style.trim().is_empty()) + .collect(); + + if styles.is_empty() { None } else { Some(styles) } }; // Generate HMR module with declarations, encapsulated styles, and consts diff --git a/napi/angular-compiler/test/plugin.test.ts b/napi/angular-compiler/test/plugin.test.ts new file mode 100644 index 000000000..9f85de9e8 --- /dev/null +++ b/napi/angular-compiler/test/plugin.test.ts @@ -0,0 +1,200 @@ +import type { Plugin } from 'vite' +import { describe, expect, it } from 'vitest' + +import { angular } from '../vite-plugin/index.js' + +const COMPONENT_SOURCE = ` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-root', + template: '
Hello
', + styles: ['.container { color: red; background: transparent; }'], + }) + export class AppComponent {} +` + +function getAngularPlugin() { + const plugin = angular().find((candidate) => candidate.name === '@oxc-angular/vite') + + if (!plugin) { + throw new Error('Failed to find @oxc-angular/vite plugin') + } + + return plugin +} + +async function callPluginHook( + hook: + | { + handler: (...args: TArgs) => TResult + } + | ((...args: TArgs) => TResult) + | undefined, + ...args: TArgs +): Promise { + if (!hook) { + return undefined + } + + if (typeof hook === 'function') { + return hook(...args) + } + + return hook.handler(...args) +} + +async function transformWithAutoMinify( + build: { cssMinify?: boolean | string; minify?: boolean | string }, + resolvedBuild: { cssMinify?: boolean | string; minify?: boolean | string }, +): Promise { + const plugin = getAngularPlugin() + + await callPluginHook( + plugin.config as Plugin['config'], + { build } as any, + { command: 'build', mode: 'production' } as any, + ) + await callPluginHook( + plugin.configResolved as Plugin['configResolved'], + { + build: resolvedBuild, + isProduction: true, + } as any, + ) + + if (!plugin.transform || typeof plugin.transform === 'function') { + throw new Error('Expected plugin transform handler') + } + + const result = await plugin.transform.handler.call( + { + error(message: string) { + throw new Error(message) + }, + warn() {}, + } as any, + COMPONENT_SOURCE, + 'app.component.ts', + ) + + if (!result || typeof result !== 'object' || !('code' in result)) { + throw new Error('Expected transform result with code') + } + + return result.code as string +} + +async function transformWithAutoMinifyFromTransformContext(resolvedBuild: { + cssMinify?: boolean | string + minify?: boolean | string +}): Promise { + const plugin = getAngularPlugin() + + if (!plugin.transform || typeof plugin.transform === 'function') { + throw new Error('Expected plugin transform handler') + } + + const result = await plugin.transform.handler.call( + { + environment: { + config: { + build: resolvedBuild, + }, + }, + error(message: string) { + throw new Error(message) + }, + warn() {}, + } as any, + COMPONENT_SOURCE, + 'app.component.ts', + ) + + if (!result || typeof result !== 'object' || !('code' in result)) { + throw new Error('Expected transform result with code') + } + + return result.code as string +} + +async function transformWithAutoMinifyFromOutputOptions( + outputMinify: boolean | string, + resolvedBuild: { cssMinify?: boolean | string; minify?: boolean | string }, +): Promise { + const plugin = getAngularPlugin() + + await callPluginHook( + plugin.outputOptions as Plugin['outputOptions'], + { + minify: outputMinify, + } as any, + ) + + if (!plugin.transform || typeof plugin.transform === 'function') { + throw new Error('Expected plugin transform handler') + } + + const result = await plugin.transform.handler.call( + { + environment: { + config: { + build: resolvedBuild, + }, + }, + error(message: string) { + throw new Error(message) + }, + warn() {}, + } as any, + COMPONENT_SOURCE, + 'app.component.ts', + ) + + if (!result || typeof result !== 'object' || !('code' in result)) { + throw new Error('Expected transform result with code') + } + + return result.code as string +} + +describe('@oxc-angular/vite auto component style minification', () => { + it('should prefer inline build.minify when auto is used', async () => { + const code = await transformWithAutoMinify({ minify: false }, { cssMinify: true, minify: true }) + + expect(code).toContain('.container[_ngcontent-%COMP%] { color: red; background: transparent; }') + }) + + it('should prefer inline build.cssMinify when auto is used', async () => { + const code = await transformWithAutoMinify( + { cssMinify: false, minify: true }, + { cssMinify: true, minify: true }, + ) + + expect(code).toContain('.container[_ngcontent-%COMP%] { color: red; background: transparent; }') + }) + + it('should fall back to resolved config when inline build minify is not set', async () => { + const code = await transformWithAutoMinify({}, { cssMinify: true, minify: true }) + + expect(code).toContain('.container[_ngcontent-%COMP%]{color:red;background:0 0}') + }) + + it('should fall back to transform context build config when config hooks are skipped', async () => { + const code = await transformWithAutoMinifyFromTransformContext({ + cssMinify: true, + minify: true, + }) + + expect(code).toContain('.container[_ngcontent-%COMP%]{color:red;background:0 0}') + }) + + it('should prefer output minify when config hooks are skipped', async () => { + const code = await transformWithAutoMinifyFromOutputOptions(false, { + cssMinify: true, + minify: true, + }) + + expect(code).toContain('.container[_ngcontent-%COMP%] { color: red; background: transparent; }') + }) +}) diff --git a/napi/angular-compiler/test/ssr-hmr.test.ts b/napi/angular-compiler/test/ssr-hmr.test.ts index 4e8e4b7a6..ec9644e92 100644 --- a/napi/angular-compiler/test/ssr-hmr.test.ts +++ b/napi/angular-compiler/test/ssr-hmr.test.ts @@ -13,7 +13,7 @@ */ import { describe, it, expect } from 'vitest' -import { transformAngularFile } from '../index.js' +import { compileForHmrSync, transformAngularFile } from '../index.js' const COMPONENT_SOURCE = ` import { Component } from '@angular/core'; @@ -90,3 +90,18 @@ describe('Vite plugin SSR behavior (Issue #109)', () => { expect(ssrResult.code).toContain('ɵɵdefineComponent') }) }) + +describe('Component style minification', () => { + it('should minify encapsulated HMR styles when enabled', () => { + const result = compileForHmrSync( + '
Hello
', + 'AppComponent', + 'app.component.ts', + ['.container { color: red; background: transparent; }'], + { minifyComponentStyles: true }, + ) + + expect(result.errors).toHaveLength(0) + expect(result.hmrModule).toContain('.container[_ngcontent-%COMP%]{color:red;background:0 0}') + }) +}) diff --git a/napi/angular-compiler/test/transform.test.ts b/napi/angular-compiler/test/transform.test.ts index 64d127f1a..721c81720 100644 --- a/napi/angular-compiler/test/transform.test.ts +++ b/napi/angular-compiler/test/transform.test.ts @@ -91,6 +91,26 @@ describe('transformAngularFile', () => { expect(result.errors).toHaveLength(0) expect(Object.keys(result.templateUpdates).length).toBeGreaterThan(0) }) + + it('should minify final component styles when enabled', async () => { + const source = ` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-root', + template: '
Hello
', + styles: ['.container { color: red; background: transparent; }'], + }) + export class AppComponent {} + ` + + const result = await transformAngularFile(source, 'app.component.ts', { + minifyComponentStyles: true, + }) + + expect(result.errors).toHaveLength(0) + expect(result.code).toContain('.container[_ngcontent-%COMP%]{color:red;background:0 0}') + }) }) describe('extractComponentUrlsSync', () => { diff --git a/napi/angular-compiler/vite-plugin/index.ts b/napi/angular-compiler/vite-plugin/index.ts index 34c8aee52..7fa326167 100644 --- a/napi/angular-compiler/vite-plugin/index.ts +++ b/napi/angular-compiler/vite-plugin/index.ts @@ -61,6 +61,21 @@ export interface PluginOptions { /** Enable zoneless mode. */ zoneless?: boolean + /** + * Minify final component styles before emitting them into `styles: [...]`. + * + * When set to `"auto"` or left undefined, this follows Vite's resolved CSS + * minification settings for production builds: + * + * - `true`: always minify component styles + * - `false`: never minify component styles + * - `"auto"`/`undefined`: use `build.cssMinify` when set, otherwise fall back + * to `build.minify` + * + * In dev, `"auto"` defaults to `false`. + */ + minifyComponentStyles?: boolean | 'auto' + /** File replacements (for environment files). */ fileReplacements?: Array<{ replace: string; with: string }> @@ -82,11 +97,52 @@ export interface PluginOptions { * ``` */ angularVersion?: AngularVersion + + /** Optional callback to transform template content before compilation. Applied during both initial build and HMR. */ + templateTransform?: (content: string, filePath: string) => string } // Match all TypeScript files - we'll filter by @Component/@Directive decorator in the handler const ANGULAR_TS_REGEX = /\.tsx?$/ const ANGULAR_COMPONENT_PREFIX = '@ng/component' +type InlineBuildMinifyOptions = { + cssMinify?: boolean | string + minify?: boolean | string +} + +function resolveMinifyComponentStyles( + option: PluginOptions['minifyComponentStyles'], + isBuild: boolean, + inlineBuild?: InlineBuildMinifyOptions, + outputMinify?: unknown, + resolvedBuild?: ResolvedConfig['build'], +): boolean { + if (typeof option === 'boolean') { + return option + } + + if (!isBuild) { + return false + } + + if (inlineBuild?.cssMinify !== undefined) { + return inlineBuild.cssMinify !== false + } + + if (inlineBuild?.minify !== undefined) { + return inlineBuild.minify !== false + } + + if (outputMinify !== undefined) { + return outputMinify !== false + } + + if (resolvedBuild?.cssMinify !== undefined) { + return resolvedBuild.cssMinify !== false + } + + return resolvedBuild?.minify !== false +} /** * Create the Angular Vite plugin. @@ -123,6 +179,8 @@ export function angular(options: PluginOptions = {}): Plugin[] { let resolvedConfig: ResolvedConfig let viteServer: ViteDevServer | undefined let watchMode = false + let inlineBuild: InlineBuildMinifyOptions | undefined + let outputMinify: unknown // Track component IDs for HMR const componentIds = new Map() @@ -136,6 +194,18 @@ export function angular(options: PluginOptions = {}): Plugin[] { // Track component files with pending HMR updates (set by fs.watch, checked by HMR endpoint) const pendingHmrUpdates = new Set() + function getMinifyComponentStyles(context?: { + environment?: { config?: { build?: ResolvedConfig['build'] } } + }): boolean { + return resolveMinifyComponentStyles( + options.minifyComponentStyles, + !watchMode, + inlineBuild, + outputMinify, + context?.environment?.config?.build ?? resolvedConfig?.build, + ) + } + /** * Resolve external template/style URLs and read their contents. */ @@ -160,6 +230,9 @@ export function angular(options: PluginOptions = {}): Plugin[] { if (!content) { try { content = await readFile(templatePath, 'utf-8') + if (options.templateTransform) { + content = options.templateTransform(content, templatePath) + } resourceCache.set(templatePath, content) } catch { console.warn(`Failed to read template: ${templatePath}`) @@ -206,8 +279,14 @@ export function angular(options: PluginOptions = {}): Plugin[] { function angularPlugin(): Plugin { return { name: '@oxc-angular/vite', - async config(_, { command }) { + async config(config, { command }) { watchMode = command === 'serve' + inlineBuild = config.build + ? { + cssMinify: config.build.cssMinify, + minify: config.build.minify, + } + : undefined return { optimizeDeps: { @@ -226,6 +305,10 @@ export function angular(options: PluginOptions = {}): Plugin[] { configResolved(config) { resolvedConfig = config }, + outputOptions(options) { + outputMinify = options.minify + return null + }, // Safety net: resolve @ng/component virtual modules in SSR context. // The browser serves these via HTTP middleware, but Vite's module runner // (used by Nitro/SSR) resolves through plugin hooks instead. @@ -368,6 +451,9 @@ export function angular(options: PluginOptions = {}): Plugin[] { if (templateUrls.length > 0) { const templatePath = resolve(dir, templateUrls[0]) templateContent = await readFile(templatePath, 'utf-8') + if (options.templateTransform) { + templateContent = options.templateTransform(templateContent, templatePath) + } } else { templateContent = extractInlineTemplate(source) } @@ -401,7 +487,10 @@ export function angular(options: PluginOptions = {}): Plugin[] { } } - const result = compileForHmrSync(templateContent, className, resolvedId, styles) + const result = compileForHmrSync(templateContent, className, resolvedId, styles, { + angularVersion: pluginOptions.angularVersion, + minifyComponentStyles: getMinifyComponentStyles(), + }) res.setHeader('Content-Type', 'text/javascript') res.setHeader('Cache-Control', 'no-cache') @@ -498,6 +587,7 @@ export function angular(options: PluginOptions = {}): Plugin[] { jit: pluginOptions.jit, hmr: pluginOptions.liveReload && watchMode && !isSSR, angularVersion: pluginOptions.angularVersion, + minifyComponentStyles: getMinifyComponentStyles(this as any), } const result = await transformAngularFile(code, actualId, transformOptions, resources) diff --git a/package.json b/package.json index 1826b3048..abc171ee1 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "devDependencies": { "@napi-rs/cli": "catalog:", "oxfmt": "catalog:", - "oxlint": "^1.52.0", - "oxlint-tsgolint": "^0.16.0" + "oxlint": "^1.56.0", + "oxlint-tsgolint": "^0.17.1" }, - "packageManager": "pnpm@10.32.0" + "packageManager": "pnpm@10.32.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76473e410..88d915563 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,14 +16,14 @@ catalogs: specifier: 0.0.35 version: 0.0.35 '@tailwindcss/vite': - specifier: 4.1.18 - version: 4.1.18 + specifier: 4.2.1 + version: 4.2.1 '@types/node': specifier: 24.1.0 version: 24.1.0 oxfmt: - specifier: 0.37.0 - version: 0.37.0 + specifier: 0.41.0 + version: 0.41.0 rxjs: specifier: 7.8.2 version: 7.8.2 @@ -37,11 +37,11 @@ catalogs: specifier: 5.9.3 version: 5.9.3 vite: - specifier: 8.0.0-beta.18 - version: 8.0.0-beta.18 + specifier: 8.0.0 + version: 8.0.0 vitest: - specifier: 4.0.18 - version: 4.0.18 + specifier: 4.1.0 + version: 4.1.0 importers: @@ -52,13 +52,13 @@ importers: version: 3.5.1(@emnapi/runtime@1.8.1)(@types/node@24.1.0)(node-addon-api@7.1.1) oxfmt: specifier: 'catalog:' - version: 0.37.0 + version: 0.41.0 oxlint: - specifier: ^1.52.0 - version: 1.52.0(oxlint-tsgolint@0.16.0) + specifier: ^1.56.0 + version: 1.56.0(oxlint-tsgolint@0.17.1) oxlint-tsgolint: - specifier: ^0.16.0 - version: 0.16.0 + specifier: ^0.17.1 + version: 0.17.1 napi/angular-compiler: dependencies: @@ -86,46 +86,46 @@ importers: version: 24.1.0 oxfmt: specifier: 'catalog:' - version: 0.37.0 + version: 0.41.0 typescript: specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + version: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) vitest: specifier: 'catalog:' - version: 4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) + version: 4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) napi/angular-compiler/benchmarks/bitwarden: dependencies: '@angular/animations': - specifier: 20.3.17 - version: 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 20.3.18 + version: 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/cdk': specifier: 20.2.14 - version: 20.2.14(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 20.2.14(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/common': - specifier: 20.3.17 - version: 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 20.3.18 + version: 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': specifier: 20.3.18 version: 20.3.18 '@angular/core': specifier: 20.3.18 - version: 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) + version: 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/forms': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/platform-browser': - specifier: 20.3.17 - version: 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 20.3.18 + version: 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/router': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) core-js: specifier: ^3.48.0 version: 3.48.0 @@ -136,8 +136,8 @@ importers: specifier: 'catalog:' version: 2.8.1 zone.js: - specifier: ~0.15.0 - version: 0.15.1 + specifier: ~0.16.0 + version: 0.16.1 devDependencies: '@oxc-angular/vite': specifier: workspace:^ @@ -183,55 +183,55 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) + version: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) vite-plugin-top-level-await: specifier: ^1.6.0 - version: 1.6.0(rollup@4.59.0)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) + version: 1.6.0(rollup@4.59.0)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) vite-plugin-wasm: specifier: ^3.5.0 - version: 3.5.0(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) + version: 3.5.0(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) vite-tsconfig-paths: specifier: ^6.0.3 - version: 6.1.1(typescript@5.9.3)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) + version: 6.1.1(typescript@5.9.3)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)) napi/angular-compiler/benchmarks/typedb-web: dependencies: '@angular/animations': - specifier: 20.3.17 - version: 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) + specifier: 20.3.18 + version: 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/cdk': - specifier: 20.0.5 - version: 20.0.5(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) + specifier: 20.2.14 + version: 20.2.14(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/common': - specifier: 20.3.17 - version: 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) + specifier: 20.3.18 + version: 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': specifier: 20.3.18 version: 20.3.18 '@angular/core': specifier: 20.3.18 - version: 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) + version: 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/forms': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(rxjs@7.8.1) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/material': - specifier: 20.0.5 - version: 20.0.5(3149e812b578936b9d4c7bcc371145dd) + specifier: 20.2.14 + version: 20.2.14(2f832b0b84a3673c875d1ecf350e328d) '@angular/platform-browser': - specifier: 20.3.17 - version: 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) + specifier: 20.3.18 + version: 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/router': - specifier: 20.3.17 - version: 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(rxjs@7.8.1) + specifier: 20.3.18 + version: 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@portabletext/to-html': - specifier: 2.0.5 - version: 2.0.5 + specifier: 2.0.17 + version: 2.0.17 '@sanity/asset-utils': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.3.2 + version: 1.3.2 '@sanity/image-url': specifier: 1.0.2 version: 1.0.2 @@ -245,11 +245,11 @@ importers: specifier: 2.3.0 version: 2.3.0 interactjs: - specifier: 1.10.18 - version: 1.10.18 + specifier: 1.10.27 + version: 1.10.27 ngx-cookieconsent: specifier: 4.0.2 - version: 4.0.2(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(cookieconsent@3.1.1)(rxjs@7.8.1) + version: 4.0.2(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(cookieconsent@3.1.1)(rxjs@7.8.2) pixi.js-legacy: specifier: 7.4.3 version: 7.4.3(d1d99e8ae917814d844dec1222a79cec) @@ -260,21 +260,21 @@ importers: specifier: 1.30.0 version: 1.30.0 rxjs: - specifier: 7.8.1 - version: 7.8.1 + specifier: 7.8.2 + version: 7.8.2 tslib: specifier: 2.6.1 version: 2.6.1 zone.js: - specifier: 0.15.1 - version: 0.15.1 + specifier: 0.16.1 + version: 0.16.1 devDependencies: '@oxc-angular/vite': specifier: workspace:^ version: link:../.. '@sanity/types': - specifier: 3.97.1 - version: 3.97.1(@types/react@19.2.14) + specifier: 3.99.0 + version: 3.99.0(@types/react@19.2.14) '@types/d3-force': specifier: 3.0.10 version: 3.0.10 @@ -298,10 +298,10 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + version: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) vite-tsconfig-paths: specifier: ^6.0.3 - version: 6.1.1(typescript@5.9.3)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) + version: 6.1.1(typescript@5.9.3)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) napi/angular-compiler/e2e/app: dependencies: @@ -335,7 +335,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + version: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) napi/angular-compiler/e2e/compare: dependencies: @@ -392,20 +392,20 @@ importers: specifier: 'catalog:' version: 24.1.0 oxc-parser: - specifier: ^0.117.0 - version: 0.117.0 + specifier: ^0.121.0 + version: 0.121.0 oxc-transform: - specifier: ^0.117.0 - version: 0.117.0 + specifier: ^0.121.0 + version: 0.121.0 oxfmt: specifier: 'catalog:' - version: 0.37.0 + version: 0.41.0 typescript: specifier: 'catalog:' version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) + version: 4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) napi/playground: dependencies: @@ -436,7 +436,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.1(@angular/compiler-cli@21.2.2(@angular/compiler@21.2.4)(typescript@5.9.3))(@angular/compiler@21.2.4)(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.2(@angular/common@21.2.2(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.1.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(tailwindcss@4.2.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0)) + version: 21.2.1(@angular/compiler-cli@21.2.2(@angular/compiler@21.2.4)(typescript@5.9.3))(@angular/compiler@21.2.4)(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.2(@angular/common@21.2.2(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.1.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(tailwindcss@4.2.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0))) '@angular/compiler-cli': specifier: ^21.2.0 version: 21.2.2(@angular/compiler@21.2.4)(typescript@5.9.3) @@ -445,7 +445,7 @@ importers: version: link:../angular-compiler '@tailwindcss/vite': specifier: 'catalog:' - version: 4.1.18(vite@8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) + version: 4.2.1(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) '@types/node': specifier: 'catalog:' version: 24.1.0 @@ -457,7 +457,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + version: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) packages: @@ -483,11 +483,11 @@ packages: chokidar: optional: true - '@angular/animations@20.3.17': - resolution: {integrity: sha512-KvdgFjCTkOD3WVt4gzmJOoX914eey/Efu2Pb/KUM0Bqp1ZoXiFpI48GCd1b6Ks8JlDBeAfgjtpdSUB2aLnMRZQ==} + '@angular/animations@20.3.18': + resolution: {integrity: sha512-XFxgSyjfs0SRD2vQVFJljmM4z9nTvUoI8TRqSre/+l8D2FgzD5pG67Aj2BgDgpSFAUkIcI37G48ijK7a3ZZ3WA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.3.17 + '@angular/core': 20.3.18 '@angular/build@21.2.1': resolution: {integrity: sha512-cUpLNHJp9taII/FOcJHHfQYlMcZSRaf6eIxgSNS6Xfx1CeGoJNDN+J8+GFk+H1CPJt1EvbfyZ+dE5DbsgTD/QQ==} @@ -535,13 +535,6 @@ packages: vitest: optional: true - '@angular/cdk@20.0.5': - resolution: {integrity: sha512-WhJ1I/ib/Za0qjWkSzMYV0gM8NOWrtOcZ2TYZ4aYFsjd8E13rGhxOez0DWt2sN3vfjAc1iWMmGGbNZrkp98adg==} - peerDependencies: - '@angular/common': ^20.0.0 || ^21.0.0 - '@angular/core': ^20.0.0 || ^21.0.0 - rxjs: ^6.5.3 || ^7.4.0 - '@angular/cdk@20.2.14': resolution: {integrity: sha512-7bZxc01URbiPiIBWThQ69XwOxVduqEKN4PhpbF2AAyfMc/W8Hcr4VoIJOwL0O1Nkq5beS8pCAqoOeIgFyXd/kg==} peerDependencies: @@ -557,11 +550,11 @@ packages: '@angular/platform-browser': ^21.0.0 || ^22.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.3.17': - resolution: {integrity: sha512-Dqd8f8o9MehszTZIB7o7jrERlwLOSK64gNngK14DCQazz5lpIhAF6hBjx7zjHpa7L9eAYPK1TaxQUXypjzj18Q==} + '@angular/common@20.3.18': + resolution: {integrity: sha512-M62oQbSTRmnGavIVCwimoadg/PDWadgNhactMm9fgH0eM9rx+iWBAYJk4VufO0bwOhysFpRZpJgXlFjOifz/Jw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.3.17 + '@angular/core': 20.3.18 rxjs: ^6.5.3 || ^7.4.0 '@angular/common@21.2.2': @@ -616,13 +609,13 @@ packages: zone.js: optional: true - '@angular/forms@20.3.17': - resolution: {integrity: sha512-iGS6NwzcyJzinbPMapsQtcN0ZJ62vr6hcul+FNa40CaK2ePC04S+C5n+DIphzwnwsFHDBIWuTQRfk/lNYdN1JA==} + '@angular/forms@20.3.18': + resolution: {integrity: sha512-x6/99LfxolyZIFUL3Wr0OrtuXHEDwEz/rwx+WzE7NL+n35yO40t3kp0Sn5uMFwI94i91QZJmXHltMpZhrVLuYg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.17 - '@angular/core': 20.3.17 - '@angular/platform-browser': 20.3.17 + '@angular/common': 20.3.18 + '@angular/core': 20.3.18 + '@angular/platform-browser': 20.3.18 rxjs: ^6.5.3 || ^7.4.0 '@angular/forms@21.2.2': @@ -634,32 +627,32 @@ packages: '@angular/platform-browser': 21.2.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/material@20.0.5': - resolution: {integrity: sha512-bKWtqbGxLuK6cbpy9hZtH+BGUrqxMQhaR/esW6LmjdNALrbfJx3r2wlOTCSydGP8FJDbg6qmHDYxsl1zha2Gbg==} + '@angular/material@20.2.14': + resolution: {integrity: sha512-IbAgV6XLsvmHiJzxycVhcNC1PA4M30qi+ERCOir6cT333Bxm8vDV32gsOjfL52uzG5YRARroPC+8s1XqR2oxeA==} peerDependencies: - '@angular/cdk': 20.0.5 + '@angular/cdk': 20.2.14 '@angular/common': ^20.0.0 || ^21.0.0 '@angular/core': ^20.0.0 || ^21.0.0 '@angular/forms': ^20.0.0 || ^21.0.0 '@angular/platform-browser': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser-dynamic@20.3.17': - resolution: {integrity: sha512-yTxFuGQ+z0J9khNIhfFZ+kkT7TOFb8kFZKyUz0DxHOmE0q/TEvNZoy3jXOs8xCBFf1+6BY0NqFNlPna+uw36FQ==} + '@angular/platform-browser-dynamic@20.3.18': + resolution: {integrity: sha512-NyTobOGYVzGmPmtI+3lxMzxi0TbLq4SRNQ2ENEJAt6k2JnMmHBm483ppLRAM47nGlDdiraW0IX93EtYYNkiK3g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.17 - '@angular/compiler': 20.3.17 - '@angular/core': 20.3.17 - '@angular/platform-browser': 20.3.17 + '@angular/common': 20.3.18 + '@angular/compiler': 20.3.18 + '@angular/core': 20.3.18 + '@angular/platform-browser': 20.3.18 - '@angular/platform-browser@20.3.17': - resolution: {integrity: sha512-GA8pK+0F2/KGdYn5LMpLBrPTkQUwGjQE8Q+qsivOa150cK3OuD0po5PvYK58l+niGIVvm0wB1xGKTHTOiX/+4A==} + '@angular/platform-browser@20.3.18': + resolution: {integrity: sha512-q6s5rEN1yYazpHYp+k4pboXRzMsRB9auzTRBEhyXSGYxqzrnn3qHN0DqgsLC9WAdyhCgnIEMFA8kRT+W277DqQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.3.17 - '@angular/common': 20.3.17 - '@angular/core': 20.3.17 + '@angular/animations': 20.3.18 + '@angular/common': 20.3.18 + '@angular/core': 20.3.18 peerDependenciesMeta: '@angular/animations': optional: true @@ -675,13 +668,13 @@ packages: '@angular/animations': optional: true - '@angular/router@20.3.17': - resolution: {integrity: sha512-p0r0IOJhUcn8WHx4gkSlfwifkkYO5mSDtq4iM5OunZTlSaeSxLb1vTRg2VBgwdzpgAM+eZSMBTTVF/M3pdoELQ==} + '@angular/router@20.3.18': + resolution: {integrity: sha512-3CWejsEYr+ze+ktvWN/qHdyq5WLrj96QZpGYJyxh1pchIcpMPE9MmLpdjf0CUrWYB7g/85u0Geq/xsz72JrGng==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.17 - '@angular/core': 20.3.17 - '@angular/platform-browser': 20.3.17 + '@angular/common': 20.3.18 + '@angular/core': 20.3.18 + '@angular/platform-browser': 20.3.18 rxjs: ^6.5.3 || ^7.4.0 '@angular/router@21.2.2': @@ -1105,8 +1098,8 @@ packages: '@types/node': optional: true - '@interactjs/types@1.10.18': - resolution: {integrity: sha512-3a+2Kx6PhA60ekxImRQJl+EyT4lD0/kd3/PveyaLtgfNxkxnSWdUq7Ixo3Y/t1lon4EqVGZQgp+qj/QNaEs6qA==} + '@interactjs/types@1.10.27': + resolution: {integrity: sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==} '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} @@ -1818,129 +1811,129 @@ packages: '@oxc-node/core@0.0.35': resolution: {integrity: sha512-PV46QRDI2wCDdaPzppEh4UfzFmmpSt+1dX32ooq8RWb0BuWX24+LKYicAmSrsk1ls8JRSkAqiWrjrYFHIGozGg==} - '@oxc-parser/binding-android-arm-eabi@0.117.0': - resolution: {integrity: sha512-XarGPJpaobgKjfm7xRfCGWWszuPbm/OeP91NdMhxtcLZ/qLTmWF0P0z0gqmr0Uysi1F1v1BNtcST11THMrcEOw==} + '@oxc-parser/binding-android-arm-eabi@0.121.0': + resolution: {integrity: sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.117.0': - resolution: {integrity: sha512-EPTs2EBijGmyhPso4rXAL0NSpECXER9IaVKFZEv83YcA6h4uhKW47kmYt+OZcSp130zhHx+lTWILDQ/LDkCRNA==} + '@oxc-parser/binding-android-arm64@0.121.0': + resolution: {integrity: sha512-/Dd1xIXboYAicw+twT2utxPD7bL8qh7d3ej0qvaYIMj3/EgIrGR+tSnjCUkiCT6g6uTC0neSS4JY8LxhdSU/sA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.117.0': - resolution: {integrity: sha512-3bAEpyih6r/Kb+Xzn1em1qBMClOS7NsVWgF86k95jpysR5ix/HlKFKSy7cax6PcS96HeHR4kjlME20n/XK1zNg==} + '@oxc-parser/binding-darwin-arm64@0.121.0': + resolution: {integrity: sha512-A0jNEvv7QMtCO1yk205t3DWU9sWUjQ2KNF0hSVO5W9R9r/R1BIvzG01UQAfmtC0dQm7sCrs5puixurKSfr2bRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.117.0': - resolution: {integrity: sha512-W7S99zFwVZhSbCxvjfZkioStFU249DBc4TJw/kK6kfKwx2Zew+jvizX5Y3ZPkAh7fBVUSNOdSeOqLBHLiP50tw==} + '@oxc-parser/binding-darwin-x64@0.121.0': + resolution: {integrity: sha512-SsHzipdxTKUs3I9EOAPmnIimEeJOemqRlRDOp9LIj+96wtxZejF51gNibmoGq8KoqbT1ssAI5po/E3J+vEtXGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.117.0': - resolution: {integrity: sha512-xH76lqSdjCSY0KUMPwLXlvQ3YEm3FFVEQmgiOCGNf+stZ6E4Mo3nC102Bo8yKd7aW0foIPAFLYsHgj7vVI/axw==} + '@oxc-parser/binding-freebsd-x64@0.121.0': + resolution: {integrity: sha512-v1APOTkCp+RWOIDAHRoaeW/UoaHF15a60E8eUL6kUQXh+i4K7PBwq2Wi7jm8p0ymID5/m/oC1w3W31Z/+r7HQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.117.0': - resolution: {integrity: sha512-9Hdm1imzrn4RdMYnQKKcy+7p7QsSPIrgVIZmpGSJT02nYDuBWLdG1pdYMPFoEo46yiXry3tS3RoHIpNbT1IiyQ==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.121.0': + resolution: {integrity: sha512-PmqPQuqHZyFVWA4ycr0eu4VnTMmq9laOHZd+8R359w6kzuNZPvmmunmNJ8ybkm769A0nCoVp3TJ6dUz7B3FYIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.117.0': - resolution: {integrity: sha512-Itszer/VCeYhYVJLcuKnHktlY8QyGnVxapltP68S1XRGlV6IsM9HQAElJRMwQhT6/GkMjOhANmkv2Qu/9v44lw==} + '@oxc-parser/binding-linux-arm-musleabihf@0.121.0': + resolution: {integrity: sha512-vF24htj+MOH+Q7y9A8NuC6pUZu8t/C2Fr/kDOi2OcNf28oogr2xadBPXAbml802E8wRAVfbta6YLDQTearz+jw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.117.0': - resolution: {integrity: sha512-jBxD7DtlHQ36ivjjZdH0noQJgWNouenzpLmXNKnYaCsBfo3jY95m5iyjYQEiWkvkhJ3TJUAs7tQ1/kEpY7x/Kg==} + '@oxc-parser/binding-linux-arm64-gnu@0.121.0': + resolution: {integrity: sha512-wjH8cIG2Lu/3d64iZpbYr73hREMgKAfu7fqpXjgM2S16y2zhTfDIp8EQjxO8vlDtKP5Rc7waZW72lh8nZtWrpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.117.0': - resolution: {integrity: sha512-QagKTDF4lrz8bCXbUi39Uq5xs7C7itAseKm51f33U+Dyar9eJY/zGKqfME9mKLOiahX7Fc1J3xMWVS0AdDXLPg==} + '@oxc-parser/binding-linux-arm64-musl@0.121.0': + resolution: {integrity: sha512-qT663J/W8yQFw3dtscbEi9LKJevr20V7uWs2MPGTnvNZ3rm8anhhE16gXGpxDOHeg9raySaSHKhd4IGa3YZvuw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.117.0': - resolution: {integrity: sha512-RPddpcE/0xxWaommWy0c5i/JdrXcXAkxBS2GOrAUh5LKmyCh03hpJedOAWszG4ADsKQwoUQQ1/tZVGRhZIWtKA==} + '@oxc-parser/binding-linux-ppc64-gnu@0.121.0': + resolution: {integrity: sha512-mYNe4NhVvDBbPkAP8JaVS8lC1dsoJZWH5WCjpw5E+sjhk1R08wt3NnXYUzum7tIiWPfgQxbCMcoxgeemFASbRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.117.0': - resolution: {integrity: sha512-ur/WVZF9FSOiZGxyP+nfxZzuv6r5OJDYoVxJnUR7fM/hhXLh4V/be6rjbzm9KLCDBRwYCEKJtt+XXNccwd06IA==} + '@oxc-parser/binding-linux-riscv64-gnu@0.121.0': + resolution: {integrity: sha512-+QiFoGxhAbaI/amqX567784cDyyuZIpinBrJNxUzb+/L2aBRX67mN6Jv40pqduHf15yYByI+K5gUEygCuv0z9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.117.0': - resolution: {integrity: sha512-ujGcAx8xAMvhy7X5sBFi3GXML1EtyORuJZ5z2T6UV3U416WgDX/4OCi3GnoteeenvxIf6JgP45B+YTHpt71vpA==} + '@oxc-parser/binding-linux-riscv64-musl@0.121.0': + resolution: {integrity: sha512-9ykEgyTa5JD/Uhv2sttbKnCfl2PieUfOjyxJC/oDL2UO0qtXOtjPLl7H8Kaj5G7p3hIvFgu3YWvAxvE0sqY+hQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.117.0': - resolution: {integrity: sha512-hbsfKjUwRjcMZZvvmpZSc+qS0bHcHRu8aV/I3Ikn9BzOA0ZAgUE7ctPtce5zCU7bM8dnTLi4sJ1Pi9YHdx6Urw==} + '@oxc-parser/binding-linux-s390x-gnu@0.121.0': + resolution: {integrity: sha512-DB1EW5VHZdc1lIRjOI3bW/wV6R6y0xlfvdVrqj6kKi7Ayu2U3UqUBdq9KviVkcUGd5Oq+dROqvUEEFRXGAM7EQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.117.0': - resolution: {integrity: sha512-1QrTrf8rige7UPJrYuDKJLQOuJlgkt+nRSJLBMHWNm9TdivzP48HaK3f4q18EjNlglKtn03lgjMu4fryDm8X4A==} + '@oxc-parser/binding-linux-x64-gnu@0.121.0': + resolution: {integrity: sha512-s4lfobX9p4kPTclvMiH3gcQUd88VlnkMTF6n2MTMDAyX5FPNRhhRSFZK05Ykhf8Zy5NibV4PbGR6DnK7FGNN6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.117.0': - resolution: {integrity: sha512-gRvK6HPzF5ITRL68fqb2WYYs/hGviPIbkV84HWCgiJX+LkaOpp+HIHQl3zVZdyKHwopXToTbXbtx/oFjDjl8pg==} + '@oxc-parser/binding-linux-x64-musl@0.121.0': + resolution: {integrity: sha512-P9KlyTpuBuMi3NRGpJO8MicuGZfOoqZVRP1WjOecwx8yk4L/+mrCRNc5egSi0byhuReblBF2oVoDSMgV9Bj4Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.117.0': - resolution: {integrity: sha512-QPJvFbnnDZZY7xc+xpbIBWLThcGBakwaYA9vKV8b3+oS5MGfAZUoTFJcix5+Zg2Ri46sOfrUim6Y6jsKNcssAQ==} + '@oxc-parser/binding-openharmony-arm64@0.121.0': + resolution: {integrity: sha512-R+4jrWOfF2OAPPhj3Eb3U5CaKNAH9/btMveMULIrcNW/hjfysFQlF8wE0GaVBr81dWz8JLgQlsxwctoL78JwXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.117.0': - resolution: {integrity: sha512-+XRSNA0xt3pk/6CUHM7pykVe7M8SdifJk8LX1+fIp/zefvR3HBieZCbwG5un8gogNgh7srLycoh/cQA9uozv5g==} + '@oxc-parser/binding-wasm32-wasi@0.121.0': + resolution: {integrity: sha512-5TFISkPTymKvsmIlKasPVTPuWxzCcrT8pM+p77+mtQbIZDd1UC8zww4CJcRI46kolmgrEX6QpKO8AvWMVZ+ifw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.117.0': - resolution: {integrity: sha512-GpxeGS+Vo030DsrXeRPc7OSJOQIyAHkM3mzwBcnQjg/79XnOIDDMXJ5X6/aNdkVt/+Pv35pqKzGA4TQau97x8w==} + '@oxc-parser/binding-win32-arm64-msvc@0.121.0': + resolution: {integrity: sha512-V0pxh4mql4XTt3aiEtRNUeBAUFOw5jzZNxPABLaOKAWrVzSr9+XUaB095lY7jqMf5t8vkfh8NManGB28zanYKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.117.0': - resolution: {integrity: sha512-tchWEYiso1+objTZirmlR+w3fcIel6PVBOJ8NuC2Jr30dxBOiKUfFLovJLANwHg1+TzeD6pVSLIIIEf2T5o5lQ==} + '@oxc-parser/binding-win32-ia32-msvc@0.121.0': + resolution: {integrity: sha512-4Ob1qvYMPnlF2N9rdmKdkQFdrq16QVcQwBsO8yiPZXof0fHKFF+LmQV501XFbi7lHyrKm8rlJRfQ/M8bZZPVLw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.117.0': - resolution: {integrity: sha512-ysRJAjIbB4e5y+t9PZs7TwbgOV/GVT//s30AORLCT/pedYwpYzHq6ApXK7is9fvyfZtgT3anNir8+esurmyaDw==} + '@oxc-parser/binding-win32-x64-msvc@0.121.0': + resolution: {integrity: sha512-BOp1KCzdboB1tPqoCPXgntgFs0jjeSyOXHzgxVFR7B/qfr3F8r4YDacHkTOUNXtDgM8YwKnkf3rE5gwALYX7NA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1955,406 +1948,406 @@ packages: '@oxc-project/types@0.115.0': resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} - '@oxc-project/types@0.117.0': - resolution: {integrity: sha512-C/kPXBphID44fXdsa2xSOCuzX8fKZiFxPsvucJ6Yfkr6CJlMA+kNLPNKyLoI+l9XlDsNxBrz6h7IIjKU8pB69w==} + '@oxc-project/types@0.121.0': + resolution: {integrity: sha512-CGtOARQb9tyv7ECgdAlFxi0Fv7lmzvmlm2rpD/RdijOO9rfk/JvB1CjT8EnoD+tjna/IYgKKw3IV7objRb+aYw==} - '@oxc-transform/binding-android-arm-eabi@0.117.0': - resolution: {integrity: sha512-17giX7h5VR9Eodru4OoSCFdgwLFIaUxeEn8JWe0vMZrAuRbT9NiDTy5dXdbGQBoO8aXPkbGS38FGlvbi31aujw==} + '@oxc-transform/binding-android-arm-eabi@0.121.0': + resolution: {integrity: sha512-NNYkyDjTID7oVW0LUZ04kDShtyY6hgsTakd2u3mz/hN765JviCuyBIi5qT9dDOmgX0t1y74nuS7FwiLgaCcZ4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-transform/binding-android-arm64@0.117.0': - resolution: {integrity: sha512-1LrDd1CPochtLx04pAafdah6QtOQQj0/Evttevi+0u8rCI5FKucIG7pqBHkIQi/y7pycFYIj+GebhET80maeUg==} + '@oxc-transform/binding-android-arm64@0.121.0': + resolution: {integrity: sha512-zO5az3E5JUmF/k7xOOL9TCipqaVn/d8QHK5T8/bcw6qTWAPVFJjQRK8+5MSmp2ItO2Dmxed5DdWMSxG2NNfA5w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-transform/binding-darwin-arm64@0.117.0': - resolution: {integrity: sha512-K1Xo52xJOvFfHSkz2ax9X5Qsku23RCfTIPbHZWdUCAQ1TQooI+sFcewSubhVUJ4DVK12/tYT//XXboumin+FHA==} + '@oxc-transform/binding-darwin-arm64@0.121.0': + resolution: {integrity: sha512-3vcZdmL8OAdYzXfPDeXrO9KagTgUbXPSFXotoww9N0jVNbdCvSpKJHia1aqdltyevrCWF4KqJyOeeUfGcw7AJw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-transform/binding-darwin-x64@0.117.0': - resolution: {integrity: sha512-ftFT/8Laolfq49mRRWLkIhd1AbJ0MI5bW3LwddvdoAg9zXwkx4qhzTYyBPRZhvXWftts+NjlHfHsXCOqI4tPtw==} + '@oxc-transform/binding-darwin-x64@0.121.0': + resolution: {integrity: sha512-R63ZXF4Fuer3FEZYX9UmzIKAENSEYQZTglTkzWoyNPyuHDhSfyJIK+X+wgy2Wc1lTad1XquCUq5SDuRSd37fcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-transform/binding-freebsd-x64@0.117.0': - resolution: {integrity: sha512-QDRyw0atg9BMnwOwnJeW6REzWPLEjiWtsCc2Sj612F1hCdvP+n0L3o8sHinEWM+BiOkOYtUxHA69WjUslc3G+g==} + '@oxc-transform/binding-freebsd-x64@0.121.0': + resolution: {integrity: sha512-0krk8L6iOJ6fobs3f9XHo4RSgEas0yLq9/xGZMuwxFs+rI/rnpYPX+1LLSmreHqeZM77a7r+UF12WjwI1odVUA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-transform/binding-linux-arm-gnueabihf@0.117.0': - resolution: {integrity: sha512-UvpvOjyQVgiIJahIpMT0qAsLJT8O1ibHTBgXGOsZkQgw1xmjARPQ07dpRcucPPn6cqCF3wrxfbqtr2vFHaMkdA==} + '@oxc-transform/binding-linux-arm-gnueabihf@0.121.0': + resolution: {integrity: sha512-cNkTaw77UaNiGOCIv2R1kHZ3OkTVlr/059agLCUaeQmZGl76Ad7DrDcDyhC0Iugw0jEdWZ9zeUS5VLmzblnTXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm-musleabihf@0.117.0': - resolution: {integrity: sha512-cIhztGFjKk8ngP+/7EPkEhzWMGr2neezxgWirSn/f/MirjH234oHHGJ2diKIbGQEsy0aOuJMTkL9NLfzfmH51A==} + '@oxc-transform/binding-linux-arm-musleabihf@0.121.0': + resolution: {integrity: sha512-eDwTIN0UUCQePgFR41doxorzsxoMoUTbXo6bEbvdFH7P4ZoaUXgHYN10Qjd9K6k0x/bBnU6oC4YPSWYKvQDr9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm64-gnu@0.117.0': - resolution: {integrity: sha512-mXbDfvDN0RZVg7v4LohNzU0kK3fMAZgkUKTkpFVgxEvzibEG5VpSznkypUwHI4a8U8pz+K6mGaLetX3Xt+CvvA==} + '@oxc-transform/binding-linux-arm64-gnu@0.121.0': + resolution: {integrity: sha512-UthSp+L23xeV0lIVloiRDU1d3aOvq0KRif3s6vszeSGnWf69+EVcZcondqLuX9optUhKV0/L8xwe2wLr9WkaDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-transform/binding-linux-arm64-musl@0.117.0': - resolution: {integrity: sha512-ykxpPQp0eAcSmhy0Y3qKvdanHY4d8THPonDfmCoktUXb6r0X6qnjpJB3V+taN1wevW55bOEZd97kxtjTKjqhmg==} + '@oxc-transform/binding-linux-arm64-musl@0.121.0': + resolution: {integrity: sha512-J5vKUF8Jml1m9Fl48fKp2/wPl8LhGdjJWZ3PrrT+S16SbW7yEKixq5upzO2arhrky5elRYMXWwfi60ex1tBi6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-transform/binding-linux-ppc64-gnu@0.117.0': - resolution: {integrity: sha512-Rvspti4Kr7eq6zSrURK5WjscfWQPvmy/KjJZV45neRKW8RLonE3r9+NgrwSLGoHvQ3F24fbqlkplox1RtlhH5A==} + '@oxc-transform/binding-linux-ppc64-gnu@0.121.0': + resolution: {integrity: sha512-ya+/TL/YH/VcfWeRs95pMIgEj1eQgKg3kR/9AkQgSi8i9jIDEXrgrcQ8cwRYSZ3THlT6cxe3KGJa6vwcHG6JEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-transform/binding-linux-riscv64-gnu@0.117.0': - resolution: {integrity: sha512-Dr2ZW9ZZ4l1eQ5JUEUY3smBh4JFPCPuybWaDZTLn3ADZjyd8ZtNXEjeMT8rQbbhbgSL9hEgbwaqraole3FNThQ==} + '@oxc-transform/binding-linux-riscv64-gnu@0.121.0': + resolution: {integrity: sha512-XhUBS/6bxL3maLMvkyY5jM23jFCORl+noYc7KkMydpb0Ot08XSu+8c2o7QpGVHWf85eTH/1Tx0aOTrcWek7EAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-transform/binding-linux-riscv64-musl@0.117.0': - resolution: {integrity: sha512-oD1Bnes1bIC3LVBSrWEoSUBj6fvatESPwAVWfJVGVQlqWuOs/ZBn1e4Nmbipo3KGPHK7DJY75r/j7CQCxhrOFQ==} + '@oxc-transform/binding-linux-riscv64-musl@0.121.0': + resolution: {integrity: sha512-kAcZZrU2Wxopcpt38D1u5OeLUwV78EXyOu3VfFNkP/vrMiKB4Tbca8ZxBq+XTkpijuKE4DdCQaLZylsFj7L00w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-transform/binding-linux-s390x-gnu@0.117.0': - resolution: {integrity: sha512-qT//IAPLvse844t99Kff5j055qEbXfwzWgvCMb0FyjisnB8foy25iHZxZIocNBe6qwrCYWUP1M8rNrB/WyfS1Q==} + '@oxc-transform/binding-linux-s390x-gnu@0.121.0': + resolution: {integrity: sha512-jHyHS+NwPAlUEuY6BzFBDoT4LfSBEW/Ne2FeMzdK8LXOvgHFrJiBf6x8FgekatrTGrDpy1hLiACNnPA81Hs2pQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-transform/binding-linux-x64-gnu@0.117.0': - resolution: {integrity: sha512-2YEO5X+KgNzFqRVO5dAkhjcI5gwxus4NSWVl/+cs2sI6P0MNPjqE3VWPawl4RTC11LvetiiZdHcujUCPM8aaUw==} + '@oxc-transform/binding-linux-x64-gnu@0.121.0': + resolution: {integrity: sha512-KedV2jkFxeMvUqfh6SgXjCnO5SBZ+SorTUxSBeql7zp59ONZgAcehWAqDX+YWsK8wEpt23Q8ydC/0d6ebJIAzQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-transform/binding-linux-x64-musl@0.117.0': - resolution: {integrity: sha512-3wqWbTSaIFZvDr1aqmTul4cg8PRWYh6VC52E8bLI7ytgS/BwJLW+sDUU2YaGIds4sAf/1yKeJRmudRCDPW9INg==} + '@oxc-transform/binding-linux-x64-musl@0.121.0': + resolution: {integrity: sha512-jFAZwvgjsswiHET2xxxNvxhKCI74yVmewl0F00i3vzt9C088ZVaUvvWlqDS1GRvD4ORBmpJWOYkHdscpIJijEA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-transform/binding-openharmony-arm64@0.117.0': - resolution: {integrity: sha512-Ebxx6NPqhzlrjvx4+PdSqbOq+li0f7X59XtJljDghkbJsbnkHvhLmPR09ifHt5X32UlZN63ekjwcg/nbmHLLlA==} + '@oxc-transform/binding-openharmony-arm64@0.121.0': + resolution: {integrity: sha512-xn9nxaq31f19PUyGh1xKMOSs8MVPImeaESWNOHtAIznckE+qa5/oHtYALzF3z8uvy1EC/eZODWcHrsYOVNaWug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-transform/binding-wasm32-wasi@0.117.0': - resolution: {integrity: sha512-Nn8mmcBiQ0XKHLTb05QBlH+CDkn7jf5YDVv9FtKhy4zJT0NEU9y3dXVbfcurOpsVrG9me4ktzDQNCaAoJjUQyw==} + '@oxc-transform/binding-wasm32-wasi@0.121.0': + resolution: {integrity: sha512-7lj6FBMX8zLfTqIY4YHHTE/b6oyCzZaUwqi2n9KX4FkgjtBpfmq5KSUgi/I+YiE7JJHu1g8Bd3uWJq1lbehL8Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-transform/binding-win32-arm64-msvc@0.117.0': - resolution: {integrity: sha512-15cbsF8diXWGnHrTsVgVeabETiT/KdMAfRAcot99xsaVecJs3pITNNjC6Qj+/TPNpehbgIFjlhhxOVSbQsTBgg==} + '@oxc-transform/binding-win32-arm64-msvc@0.121.0': + resolution: {integrity: sha512-+ve3UajNq2ldcCEEmpMVn7Ic3v/qCykPTSx3lZfe0iCW6tisIWvkYiXpf6B5dvwSY7SDyrdt9EyPMS75b41iPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-transform/binding-win32-ia32-msvc@0.117.0': - resolution: {integrity: sha512-I6DkhCuFX6p9rckdWiLuZfBWrrYUC7sNX+zLaCfa5zvrPNwo1/29KkefvqXVxu3AWT/6oZAbtc0A8/mqhETJPQ==} + '@oxc-transform/binding-win32-ia32-msvc@0.121.0': + resolution: {integrity: sha512-9ZUHa4bXWlPRLzbjYsU3VBSvqwSVHAknQlN+nUO1DVu6j958Ui9ux0I9pZHwxb07I26VMdDhd7AjJyz1ZtZlkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-transform/binding-win32-x64-msvc@0.117.0': - resolution: {integrity: sha512-V7YzavQnYcRJBeJkp0qpb3FKrlm5I57XJetCYB4jsjStuboQmnFMZ/XQH55Szlf/kVyeU9ddQwv72gJJ5BrGjQ==} + '@oxc-transform/binding-win32-x64-msvc@0.121.0': + resolution: {integrity: sha512-vV/rzJsmJeeXI1q/xuy93PnoL/IYMwCCyYMX9MmIgMx2a4Lu3vIjUNBLJx1R5CqP/NnvAelsuz05sKlO017FmQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxfmt/binding-android-arm-eabi@0.37.0': - resolution: {integrity: sha512-2AW4VHG6mePEb1r4l6nBOVz1MwevNa0obayXd5Xce+gtP+cL/FCaoVK7JtpqCj4cEVxbLU4jijBUIWK41X2GGg==} + '@oxfmt/binding-android-arm-eabi@0.41.0': + resolution: {integrity: sha512-REfrqeMKGkfMP+m/ScX4f5jJBSmVNYcpoDF8vP8f8eYPDuPGZmzp56NIUsYmx3h7f6NzC6cE3gqh8GDWrJHCKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.37.0': - resolution: {integrity: sha512-fW/oGfK337wYb/qfoeqKrcv3tMv7DlsKVmHca0DZrWHLMUYftpYD9z7TYOD5VQ1Lg8D/iTzQiTneT2CAMThPxg==} + '@oxfmt/binding-android-arm64@0.41.0': + resolution: {integrity: sha512-s0b1dxNgb2KomspFV2LfogC2XtSJB42POXF4bMCLJyvQmAGos4ZtjGPfQreToQEaY0FQFjz3030ggI36rF1q5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.37.0': - resolution: {integrity: sha512-8sfuzKA8Ic43ZCC1ZMwk12rNVao9nn7K6crTvtLQy+yQVbXE1xxR4P1YTxqaLEOGJNq+sB2xyrfJywKVF9VODw==} + '@oxfmt/binding-darwin-arm64@0.41.0': + resolution: {integrity: sha512-EGXGualADbv/ZmamE7/2DbsrYmjoPlAmHEpTL4vapLF4EfVD6fr8/uQDFnPJkUBjiSWFJZtFNsGeN1B6V3owmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.37.0': - resolution: {integrity: sha512-X67bSfIDL1ufBY5OLxK3oG5Gj8Jvp7f2yEDVSduvolV+a0k6KJ1ZDFqG9wyTfancKVb7aZ5lTs63pAOxZYrj4A==} + '@oxfmt/binding-darwin-x64@0.41.0': + resolution: {integrity: sha512-WxySJEvdQQYMmyvISH3qDpTvoS0ebnIP63IMxLLWowJyPp/AAH0hdWtlo+iGNK5y3eVfa5jZguwNaQkDKWpGSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.37.0': - resolution: {integrity: sha512-ULQ6098xUjZoZbT38qHj3Bgwq1BbglgnLOpB01Dsi79n94Dd4V0dPD4TlnSCdX33Rr/DBje4S2IpzgnAs8kknw==} + '@oxfmt/binding-freebsd-x64@0.41.0': + resolution: {integrity: sha512-Y2kzMkv3U3oyuYaR4wTfGjOTYTXiFC/hXmG0yVASKkbh02BJkvD98Ij8bIevr45hNZ0DmZEgqiXF+9buD4yMYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.37.0': - resolution: {integrity: sha512-GsNuj91bKV8jHdRBtnCxe7vpX06IADFbyOwkScmDaoroRooBOK9NeStctE0/wE4DT6QY7qfF0YzUTGB2e5tjzQ==} + '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': + resolution: {integrity: sha512-ptazDjdUyhket01IjPTT6ULS1KFuBfTUU97osTP96X5y/0oso+AgAaJzuH81oP0+XXyrWIHbRzozSAuQm4p48g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.37.0': - resolution: {integrity: sha512-13ywNNp291Tc1nUaISUS3u2Y2O26zERJoVy1xK2uO+/1oon3EAHxMrXd0bQjopT+Ia3rTPwO6iFxW1DZratehA==} + '@oxfmt/binding-linux-arm-musleabihf@0.41.0': + resolution: {integrity: sha512-UkoL2OKxFD+56bPEBcdGn+4juTW4HRv/T6w1dIDLnvKKWr6DbarB/mtHXlADKlFiJubJz8pRkttOR7qjYR6lTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.37.0': - resolution: {integrity: sha512-JAYqsm6sTfZZbUp1CQfWZ+prXg9qBRSs5bO7bgLdD9SiqsDHn2+EfJXESL6uLqT/UO5FYvE16wivup0EOHit5w==} + '@oxfmt/binding-linux-arm64-gnu@0.41.0': + resolution: {integrity: sha512-gofu0PuumSOHYczD8p62CPY4UF6ee+rSLZJdUXkpwxg6pILiwSDBIouPskjF/5nF3A7QZTz2O9KFNkNxxFN9tA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.37.0': - resolution: {integrity: sha512-EZj3TurW1iLbq+7tBr++wsxwFyD+pvjMrTNRuSynDrs8J7w46cu/ZIzU/lFw7OG1/tDRDZ9nrKXxwbvIKXo2zA==} + '@oxfmt/binding-linux-arm64-musl@0.41.0': + resolution: {integrity: sha512-VfVZxL0+6RU86T8F8vKiDBa+iHsr8PAjQmKGBzSCAX70b6x+UOMFl+2dNihmKmUwqkCazCPfYjt6SuAPOeQJ3g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.37.0': - resolution: {integrity: sha512-ELXrDe1xRj+f7VpzJO2j54izMbi+Hov+kdqusXO3T1BwVEbA5sWgZrVMqkwEsj4k6Lw/obJK1SLUeNulR1D//g==} + '@oxfmt/binding-linux-ppc64-gnu@0.41.0': + resolution: {integrity: sha512-bwzokz2eGvdfJbc0i+zXMJ4BBjQPqg13jyWpEEZDOrBCQ91r8KeY2Mi2kUeuMTZNFXju+jcAbAbpyJxRGla0eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.37.0': - resolution: {integrity: sha512-79gMZgLD62dGmo5Xl4gaMc6NHRFj3GuxPrchHBlW54tcRSXTtb3gLh/J6Bl8nbbzSFRQGR7dkNQ8yYadXt6txQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.41.0': + resolution: {integrity: sha512-POLM//PCH9uqDeNDwWL3b3DkMmI3oI2cU6hwc2lnztD1o7dzrQs3R9nq555BZ6wI7t2lyhT9CS+CRaz5X0XqLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.37.0': - resolution: {integrity: sha512-QFdi9OhyWxnh975jeG490atcINXZwZb7epyNASPaT4wcodOTuDitrDgSPT8CFl8BcGOFTGZ6c3P/s8Afeg1Ngg==} + '@oxfmt/binding-linux-riscv64-musl@0.41.0': + resolution: {integrity: sha512-NNK7PzhFqLUwx/G12Xtm6scGv7UITvyGdAR5Y+TlqsG+essnuRWR4jRNODWRjzLZod0T3SayRbnkSIWMBov33w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.37.0': - resolution: {integrity: sha512-qweAj7+pLFQXfe3UU7EZiOmo+/2SWjzVZjyyTDcrZAT0E92zEKJBvYpHinUAOqipfo2Xlp8GIfq0FSb5Tmqd8g==} + '@oxfmt/binding-linux-s390x-gnu@0.41.0': + resolution: {integrity: sha512-qVf/zDC5cN9eKe4qI/O/m445er1IRl6swsSl7jHkqmOSVfknwCe5JXitYjZca+V/cNJSU/xPlC5EFMabMMFDpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.37.0': - resolution: {integrity: sha512-Lqc/0vS20qzZLw1ThpWn1hQgRqj4rM+E7PuBzrqp+wLH5lYFqieAiontGpl2pMPvJ0QrmQYav9mslHlAB5kOSQ==} + '@oxfmt/binding-linux-x64-gnu@0.41.0': + resolution: {integrity: sha512-ojxYWu7vUb6ysYqVCPHuAPVZHAI40gfZ0PDtZAMwVmh2f0V8ExpPIKoAKr7/8sNbAXJBBpZhs2coypIo2jJX4w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.37.0': - resolution: {integrity: sha512-TnJm22+1cEcpYXzbcXS5Z9+9c+R0ronFdx5bG4OTdOL/wSpQQKzc2izgAXJ03QkP3tq7aAPhlhhxasvH3xgoUA==} + '@oxfmt/binding-linux-x64-musl@0.41.0': + resolution: {integrity: sha512-O2exZLBxoCMIv2vlvcbkdedazJPTdG0VSup+0QUCfYQtx751zCZNboX2ZUOiQ/gDTdhtXvSiot0h6GEGkOyalA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.37.0': - resolution: {integrity: sha512-YLq27qMur3hPUponvV3Zr0oHxowox71j3+nc+/oCc1O+M0zFafhd6AoAoCiRrSYRW+asWhz3/UMPh0bYpimcMw==} + '@oxfmt/binding-openharmony-arm64@0.41.0': + resolution: {integrity: sha512-N+31/VoL+z+NNBt8viy3I4NaIdPbiYeOnB884LKqvXldaE2dRztdPv3q5ipfZYv0RwFp7JfqS4I27K/DSHCakg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.37.0': - resolution: {integrity: sha512-0lYOsiYSODNh5RE9VqsydSUY7yMz8l+C4O2i3zpdZWEDNR6Tk949sMbakwUbtE5hViHnAq1cubr197DzKW+d6g==} + '@oxfmt/binding-win32-arm64-msvc@0.41.0': + resolution: {integrity: sha512-Z7NAtu/RN8kjCQ1y5oDD0nTAeRswh3GJ93qwcW51srmidP7XPBmZbLlwERu1W5veCevQJtPS9xmkpcDTYsGIwQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.37.0': - resolution: {integrity: sha512-KHQF8DsMTE6nqQ5uBU0sx8sQsyBK/PzJdJV65+28lJGOJO59jCS5WlGcKnGtq14a2B3Xr6LoJGrSFi19xsBs/A==} + '@oxfmt/binding-win32-ia32-msvc@0.41.0': + resolution: {integrity: sha512-uNxxP3l4bJ6VyzIeRqCmBU2Q0SkCFgIhvx9/9dJ9V8t/v+jP1IBsuaLwCXGR8JPHtkj4tFp+RHtUmU2ZYAUpMA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.37.0': - resolution: {integrity: sha512-tDVVCHOPbIJ+sQE1z2DdWk82ewhmgcbXlYv4xUCnkY75vM7R3VkVgO2KqgEolMRXwI5RrsAbk+ZoP9/LKdzKVg==} + '@oxfmt/binding-win32-x64-msvc@0.41.0': + resolution: {integrity: sha512-49ZSpbZ1noozyPapE8SUOSm3IN0Ze4b5nkO+4+7fq6oEYQQJFhE0saj5k/Gg4oewVPdjn0L3ZFeWk2Vehjcw7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxlint-tsgolint/darwin-arm64@0.16.0': - resolution: {integrity: sha512-WQt5lGwRPJBw7q2KNR0mSPDAaMmZmVvDlEEti96xLO7ONhyomQc6fBZxxwZ4qTFedjJnrHX94sFelZ4OKzS7UQ==} + '@oxlint-tsgolint/darwin-arm64@0.17.1': + resolution: {integrity: sha512-JNWNwyvSDcUQSBlQRl10XrCeNcN66TMvDw3gIDQeop5SNa1F7wFhsEx4zitYb7fGHwGh9095tsNttmuCaNXCbw==} cpu: [arm64] os: [darwin] - '@oxlint-tsgolint/darwin-x64@0.16.0': - resolution: {integrity: sha512-VJo29XOzdkalvCTiE2v6FU3qZlgHaM8x8hUEVJGPU2i5W+FlocPpmn00+Ld2n7Q0pqIjyD5EyvZ5UmoIEJMfqg==} + '@oxlint-tsgolint/darwin-x64@0.17.1': + resolution: {integrity: sha512-SluNf6CW88pgGPqQUGC5GoK5qESWo2ct1PRDbza3vbf9SK2npx3igvylGQIgE9qYYOcjgnVdLOJ0+q0gItgUmQ==} cpu: [x64] os: [darwin] - '@oxlint-tsgolint/linux-arm64@0.16.0': - resolution: {integrity: sha512-MPfqRt1+XRHv9oHomcBMQ3KpTE+CSkZz14wUxDQoqTNdUlV0HWdzwIE9q65I3D9YyxEnqpM7j4qtDQ3apqVvbQ==} + '@oxlint-tsgolint/linux-arm64@0.17.1': + resolution: {integrity: sha512-BJxQ7/cdo2dNdGIBs2PIR6BaPA7cPfe+r1HE/uY+K7g2ygip+0LHB3GUO9GaNDZuWpsnDyjLYYowEGrVK8dokA==} cpu: [arm64] os: [linux] - '@oxlint-tsgolint/linux-x64@0.16.0': - resolution: {integrity: sha512-XQSwVUsnwLokMhe1TD6IjgvW5WMTPzOGGkdFDtXWQmlN2YeTw94s/NN0KgDrn2agM1WIgAenEkvnm0u7NgwEyw==} + '@oxlint-tsgolint/linux-x64@0.17.1': + resolution: {integrity: sha512-s6UjmuaJbZ4zz/wJKdEw/s5mc0t41rgwxQJCSHPuzMumMK6ylrB7nydhDf8ObTtzhTIZdAS/2S/uayJmDcGbxw==} cpu: [x64] os: [linux] - '@oxlint-tsgolint/win32-arm64@0.16.0': - resolution: {integrity: sha512-EWdlspQiiFGsP2AiCYdhg5dTYyAlj6y1nRyNI2dQWq4Q/LITFHiSRVPe+7m7K7lcsZCEz2icN/bCeSkZaORqIg==} + '@oxlint-tsgolint/win32-arm64@0.17.1': + resolution: {integrity: sha512-EO/Oj0ixHX+UQdu9hM7YUzibZI888MvPUo/DF8lSxFBt4JNEt8qGkwJEbCYjB/1LhUNmPHzSw2Tr9dCFVfW9nw==} cpu: [arm64] os: [win32] - '@oxlint-tsgolint/win32-x64@0.16.0': - resolution: {integrity: sha512-1ufk8cgktXJuJZHKF63zCHAkaLMwZrEXnZ89H2y6NO85PtOXqu4zbdNl0VBpPP3fCUuUBu9RvNqMFiv0VsbXWA==} + '@oxlint-tsgolint/win32-x64@0.17.1': + resolution: {integrity: sha512-jhv7XktAJ1sMRSb//yDYTauFSZ06H81i2SLEBPaSUKxSKoPMK8p1ACUJlnmwZX2MgapRLEj1Ml22B6+HiM2YIA==} cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.52.0': - resolution: {integrity: sha512-fW2pmR1VzFEdcvOYeSiv+R7CqffOjr9Bv5QmZaHuHJ4ZCqouaF6o48N/hJ3H1n9Zd8PCMFgJkeqUvUsVce01mw==} + '@oxlint/binding-android-arm-eabi@1.56.0': + resolution: {integrity: sha512-IyfYPthZyiSKwAv/dLjeO18SaK8MxLI9Yss2JrRDyweQAkuL3LhEy7pwIwI7uA3KQc1Vdn20kdmj3q0oUIQL6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.52.0': - resolution: {integrity: sha512-ptuJljIB+klNi8//qxXyGD51NLJXY9lv40Olc7l3/pEyjejWwXGvGMO0GM6f0JsjmbnDL+VkX7RVQNhByaX8WA==} + '@oxlint/binding-android-arm64@1.56.0': + resolution: {integrity: sha512-Ga5zYrzH6vc/VFxhn6MmyUnYEfy9vRpwTIks99mY3j6Nz30yYpIkWryI0QKPCgvGUtDSXVLEaMum5nA+WrNOSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.52.0': - resolution: {integrity: sha512-5d079Uw43BHVZzOwm3uJI2PgSbsZJTpfHDq2jMOR6rRjGiEBlgasaEvAA26VBqpkO1++/59ZCKLBnEpkro3zIg==} + '@oxlint/binding-darwin-arm64@1.56.0': + resolution: {integrity: sha512-ogmbdJysnw/D4bDcpf1sPLpFThZ48lYp4aKYm10Z/6Nh1SON6NtnNhTNOlhEY296tDFItsZUz+2tgcSYqh8Eyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.52.0': - resolution: {integrity: sha512-vRTjnhPEHAyfUhO9w6GM1VkxeVXFcDs+huyB5YNMw+Py+6PRYDFFrrOEr0rZYcoGtSH25ScozZV8I1UXrzaDjQ==} + '@oxlint/binding-darwin-x64@1.56.0': + resolution: {integrity: sha512-x8QE1h+RAtQ2g+3KPsP6Fk/tdz6zJQUv5c7fTrJxXV3GHOo+Ry5p/PsogU4U+iUZg0rj6hS+E4xi+mnwwlDCWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.52.0': - resolution: {integrity: sha512-vFthhhciRAliAjoKMsvi7UkkQp/EtMNhmCRYBuKsNiTH0k4H3SFfbuWWr80Q7+uTXijfBP91KO/EeF48RggC7A==} + '@oxlint/binding-freebsd-x64@1.56.0': + resolution: {integrity: sha512-6G+WMZvwJpMvY7my+/SHEjb7BTk/PFbePqLpmVmUJRIsJMy/UlyYqjpuh0RCgYYkPLcnXm1rUM04kbTk8yS1Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.52.0': - resolution: {integrity: sha512-qX3K4mKbju54ojUa8nigVxxZAUDBGu5MGzpoXvWmiw+7hafoQKaLAoTm94EqRlv9v27p864GQBgc4g3qYtMXXA==} + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': + resolution: {integrity: sha512-YYHBsk/sl7fYwQOok+6W5lBPeUEvisznV/HZD2IfZmF3Bns6cPC3Z0vCtSEOaAWTjYWN3jVsdu55jMxKlsdlhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.52.0': - resolution: {integrity: sha512-x5D5/EUS9U4kndPncLB6mDfCsv7i8XcRLu0DZyTngXvyqapc96WwmyyOG2j8Dt26aE8Ykgh6AhsHp9bQtoBUAw==} + '@oxlint/binding-linux-arm-musleabihf@1.56.0': + resolution: {integrity: sha512-+AZK8rOUr78y8WT6XkDb04IbMRqauNV+vgT6f8ZLOH8wnpQ9i7Nol0XLxAu+Cq7Sb+J9wC0j6Km5hG8rj47/yQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.52.0': - resolution: {integrity: sha512-2Ep1tnGLuGG7lUkKG/nilIJ0/T2rebEcATxMJ7afuhD6Z2Sc9dDcpX00IngAMyR9l6hXrvaOw9YA5HUAJVSENg==} + '@oxlint/binding-linux-arm64-gnu@1.56.0': + resolution: {integrity: sha512-urse2SnugwJRojUkGSSeH2LPMaje5Q50yQtvtL9HFckiyeqXzoFwOAZqD5TR29R2lq7UHidfFDM9EGcchcbb8A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.52.0': - resolution: {integrity: sha512-54wxvb1Pztz0GMgTLUG9HsH8uhZSL4UbG7n4PDxWIRT9TygTVYKfD6D7iasYdKg6ZpWB5Y86VMxgjSJpR/Y7bQ==} + '@oxlint/binding-linux-arm64-musl@1.56.0': + resolution: {integrity: sha512-rkTZkBfJ4TYLjansjSzL6mgZOdN5IvUnSq3oNJSLwBcNvy3dlgQtpHPrRxrCEbbcp7oQ6If0tkNaqfOsphYZ9g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.52.0': - resolution: {integrity: sha512-A82Zks1lJyLclrj8n2tJPHOw2ieZXCaBctnCarS1BRlPQMC1Y98vWCLqgvg9ssWy5ZAja0IjUHN1cYsp53mrqA==} + '@oxlint/binding-linux-ppc64-gnu@1.56.0': + resolution: {integrity: sha512-uqL1kMH3u69/e1CH2EJhP3CP28jw2ExLsku4o8RVAZ7fySo9zOyI2fy9pVlTAp4voBLVgzndXi3SgtdyCTa2aA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.52.0': - resolution: {integrity: sha512-ci89Ou+u9vnA0r4eQqGm/KPEkpea+QEtZCLKkrOAD/K5ZBwjS8ToID6aMgsDbIOJUNBGufsmX0iCC7EWrNKQFA==} + '@oxlint/binding-linux-riscv64-gnu@1.56.0': + resolution: {integrity: sha512-j0CcMBOgV6KsRaBdsebIeiy7hCjEvq2KdEsiULf2LZqAq0v1M1lWjelhCV57LxsqaIGChXFuFJ0RiFrSRHPhSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.52.0': - resolution: {integrity: sha512-3/+DVDWajFSu69TaYnKkoUgMEcHR3puO8TcBu3fPCKRhbLjgwDiYIVRdvQX0QaSjkNPJARmpYq7vlPHWNo2cUA==} + '@oxlint/binding-linux-riscv64-musl@1.56.0': + resolution: {integrity: sha512-7VDOiL8cDG3DQ/CY3yKjbV1c4YPvc4vH8qW09Vv+5ukq3l/Kcyr6XGCd5NvxUmxqDb2vjMpM+eW/4JrEEsUetA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.52.0': - resolution: {integrity: sha512-BU7CbceOh00NDmY1IYr72qZoj4sJVHB9DCL2tIq2vyNllNJIpZWTxqlzdqmC4FViXWMy8kZNkOa+SdauH+EcoQ==} + '@oxlint/binding-linux-s390x-gnu@1.56.0': + resolution: {integrity: sha512-JGRpX0M+ikD3WpwJ7vKcHKV6Kg0dT52BW2Eu2BupXotYeqGXBrbY+QPkAyKO6MNgKozyTNaRh3r7g+VWgyAQYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.52.0': - resolution: {integrity: sha512-JUVZ6TKYl1yArS3xGsNLQlZxgVpjNKtZFja6VxSTDy2ToN7H58PiDRcxWoN2XoIcWlHSvK7pkIPFNOyzdEJ23A==} + '@oxlint/binding-linux-x64-gnu@1.56.0': + resolution: {integrity: sha512-dNaICPvtmuxFP/VbqdofrLqdS3bM/AKJN3LMJD52si44ea7Be1cBk6NpfIahaysG9Uo+L98QKddU9CD5L8UHnQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.52.0': - resolution: {integrity: sha512-IatLKG6UUbIbTBjBZ9SIAYp4SIvOpYIXPXn9cMLqWxh9HrHsu0fLNL+VQ67y4vdlIleYLeuIHkAp3M6saIN1RQ==} + '@oxlint/binding-linux-x64-musl@1.56.0': + resolution: {integrity: sha512-pF1vOtM+GuXmbklM1hV8WMsn6tCNPvkUzklj/Ej98JhlanbmA2RB1BILgOpwSuCTRTIYx2MXssmEyQQ90QF5aA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.52.0': - resolution: {integrity: sha512-CWgJ6FepHryuc/lgQWStFf3lcvEkbFLSa9zqO0D0QLVfrdg43I4XItKpL/bnfm4n7obzwgG8j8sBggdoxJQKfw==} + '@oxlint/binding-openharmony-arm64@1.56.0': + resolution: {integrity: sha512-bp8NQ4RE6fDIFLa4bdBiOA+TAvkNkg+rslR+AvvjlLTYXLy9/uKAYLQudaQouWihLD/hgkrXIKKzXi5IXOewwg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.52.0': - resolution: {integrity: sha512-EuNAbPpctu8jYMZnvYh53Xw3YVY2nIi9bQlyMjY0eKiJxDv8ikHrAfcVcwTQW9xa5tp0eiMkmW7iHPP5CYUC9Q==} + '@oxlint/binding-win32-arm64-msvc@1.56.0': + resolution: {integrity: sha512-PxT4OJDfMOQBzo3OlzFb9gkoSD+n8qSBxyVq2wQSZIHFQYGEqIRTo9M0ZStvZm5fdhMqaVYpOnJvH2hUMEDk/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.52.0': - resolution: {integrity: sha512-wu3fquQttzSXwyy8DfdOG3Kyb17yAbRhwPlly7NHSXkrffAEAmZ6+o38tCNgsReGLugbn/wbq4uS4nEQubCq+A==} + '@oxlint/binding-win32-ia32-msvc@1.56.0': + resolution: {integrity: sha512-PTRy6sIEPqy2x8PTP1baBNReN/BNEFmde0L+mYeHmjXE1Vlcc9+I5nsqENsB2yAm5wLkzPoTNCMY/7AnabT4/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.52.0': - resolution: {integrity: sha512-wikx9I9J9/lPOZlrCCNgm8YjWkia8NZfhWd1TTvZTMguyChbw/oA2VEM6Fzx+kkpA+1qu5Mo7nrLdOXEJavw8g==} + '@oxlint/binding-win32-x64-msvc@1.56.0': + resolution: {integrity: sha512-ZHa0clocjLmIDr+1LwoWtxRcoYniAvERotvwKUYKhH41NVfl0Y4LNbyQkwMZzwDvKklKGvGZ5+DAG58/Ik47tQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2722,8 +2715,8 @@ packages: engines: {node: '>=18'} hasBin: true - '@portabletext/to-html@2.0.5': - resolution: {integrity: sha512-KkUI6iBuKSzclyKYnwGLiE0asxvW1ZcFmZ7wBslW+nulw78qwpTl3wuK47zf+y0XX7g52d5gw5WlYBAhuSEjSg==} + '@portabletext/to-html@2.0.17': + resolution: {integrity: sha512-kLID+QW4qIybqeN5yv1LuycbYC2DMVDcIFKfhrAFpBI3P9lcrYUv8ukzhp2Nh55hvuGphzvTVHDSo/fkbv8ziA==} engines: {node: ^14.13.1 || >=16.0.0} '@portabletext/toolkit@2.0.18': @@ -2743,8 +2736,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.8': - resolution: {integrity: sha512-5bcmMQDWEfWUq3m79Mcf/kbO6e5Jr6YjKSsA1RnpXR6k73hQ9z1B17+4h93jXpzHvS18p7bQHM1HN/fSd+9zog==} + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -2755,8 +2748,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.8': - resolution: {integrity: sha512-dcHPd5N4g9w2iiPRJmAvO0fsIWzF2JPr9oSuTjxLL56qu+oML5aMbBMNwWbk58Mt3pc7vYs9CCScwLxdXPdRsg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -2767,8 +2760,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.8': - resolution: {integrity: sha512-mw0VzDvoj8AuR761QwpdCFN0sc/jspuc7eRYJetpLWd+XyansUrH3C7IgNw6swBOgQT9zBHNKsVCjzpfGJlhUA==} + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -2779,8 +2772,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.8': - resolution: {integrity: sha512-xNrRa6mQ9NmMIJBdJtPMPG8Mso0OhM526pDzc/EKnRrIrrkHD1E0Z6tONZRmUeJElfsQ6h44lQQCcDilSNIvSQ==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -2791,8 +2784,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.8': - resolution: {integrity: sha512-WgCKoO6O/rRUwimWfEJDeztwJJmuuX0N2bYLLRxmXDTtCwjToTOqk7Pashl/QpQn3H/jHjx0b5yCMbcTVYVpNg==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -2804,8 +2797,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.8': - resolution: {integrity: sha512-tOHgTOQa8G4Z3ULj4G3NYOGGJEsqPHR91dT72u63OtVsZ7B6wFJKOx+ZKv+pvwzxWz92/I2ycaqi2/Ll4l+rlg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -2818,22 +2811,22 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.8': - resolution: {integrity: sha512-oRbxcgDujCi2Yp1GTxoUFsIFlZsuPHU4OV4AzNc3/6aUmR4lfm9FK0uwQu82PJsuUwnF2jFdop3Ep5c1uK7Uxg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.8': - resolution: {integrity: sha512-oaLRyUHw8kQE5M89RqrDJZ10GdmGJcMeCo8tvaE4ukOofqgjV84AbqBSH6tTPjeT2BHv+xlKj678GBuIb47lKA==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.8': - resolution: {integrity: sha512-1hjSKFrod5MwBBdLOOA0zpUuSfSDkYIY+QqcMcIU1WOtswZtZdUkcFcZza9b2HcAb0bnpmmyo0LZcaxLb2ov1g==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -2846,8 +2839,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.8': - resolution: {integrity: sha512-a1+F0aV4Wy9tT3o+cHl3XhOy6aFV+B8Ll+/JFj98oGkb6lGk3BNgrxd+80RwYRVd23oLGvj3LwluKYzlv1PEuw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -2860,8 +2853,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.8': - resolution: {integrity: sha512-bGyXCFU11seFrf7z8PcHSwGEiFVkZ9vs+auLacVOQrVsI8PFHJzzJROF3P6b0ODDmXr0m6Tj5FlDhcXVk0Jp8w==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -2873,8 +2866,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.8': - resolution: {integrity: sha512-n8d+L2bKgf9G3+AM0bhHFWdlz9vYKNim39ujRTieukdRek0RAo2TfG2uEnV9spa4r4oHUfL9IjcY3M9SlqN1gw==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -2884,8 +2877,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.8': - resolution: {integrity: sha512-4R4iJDIk7BrJdteAbEAICXPoA7vZoY/M0OBfcRlQxzQvUYMcEp2GbC/C8UOgQJhu2TjGTpX1H8vVO1xHWcRqQA==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -2895,8 +2888,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.8': - resolution: {integrity: sha512-3lwnklba9qQOpFnQ7EW+A1m4bZTWXZE4jtehsZ0YOl2ivW1FQqp5gY7X2DLuKITggesyuLwcmqS11fA7NtrmrA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -2907,8 +2900,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.8': - resolution: {integrity: sha512-VGjCx9Ha1P/r3tXGDZyG0Fcq7Q0Afnk64aaKzr1m40vbn1FL8R3W0V1ELDvPgzLXaaqK/9PnsqSaLWXfn6JtGQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2916,8 +2909,8 @@ packages: '@rolldown/pluginutils@1.0.0-rc.4': resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==} - '@rolldown/pluginutils@1.0.0-rc.8': - resolution: {integrity: sha512-wzJwL82/arVfeSP3BLr1oTy40XddjtEdrdgtJ4lLRBu06mP3q/8HGM6K0JRlQuTA3XB0pNJx2so/nmpY4xyOew==} + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} '@rollup/plugin-virtual@3.0.2': resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} @@ -3066,8 +3059,8 @@ packages: cpu: [x64] os: [win32] - '@sanity/asset-utils@1.3.0': - resolution: {integrity: sha512-uyIOtGA4Duf+68I3BSbYHY5P+WGftn3QtNJD2Pn7h9WPGYsSrWViIPebE9yRN8N0NHhYj+hDQXaMpVdjG7r+zA==} + '@sanity/asset-utils@1.3.2': + resolution: {integrity: sha512-dixN6MpMXsCEVh0Dr932cgZ4cU3Z2JnNOYBxjV+dgO6AnqVpNQTY+KgGMYlA1ca5zCztQI1VSk/MBCPSxihPqQ==} engines: {node: '>=10'} '@sanity/client@7.17.0': @@ -3084,8 +3077,8 @@ packages: '@sanity/media-library-types@1.2.0': resolution: {integrity: sha512-p+Bw96I63SwBcMNA/L5dnMdEcS88EEDUDZ65LGuwOCMXrESRGMFCSxgc+0HnL0JXDIzgYgfrPuf1I3bO9QneAw==} - '@sanity/types@3.97.1': - resolution: {integrity: sha512-ibOauea3H1DYZKqpL56HM92u+upd1bn+KKH+AxZGdypGWaYlUPDyU8moByO+A3rJTEaD554jRdqDCfqySYCFkg==} + '@sanity/types@3.99.0': + resolution: {integrity: sha512-a766U9VSoyOSWq+RZz9wsEo/Nnn+inDkEcdGu+rHFuygdepullB/RZpF2MxNsfUMCSPnajgG1Tm9lhwbSmlySA==} peerDependencies: '@types/react': 18 || 19 @@ -3179,69 +3172,69 @@ packages: peerDependencies: tailwindcss: '>=3.2.0' - '@tailwindcss/node@4.1.18': - resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + '@tailwindcss/node@4.2.1': + resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} - '@tailwindcss/oxide-android-arm64@4.1.18': - resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-android-arm64@4.2.1': + resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.18': - resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-arm64@4.2.1': + resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.18': - resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-x64@4.2.1': + resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.18': - resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-freebsd-x64@4.2.1': + resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': - resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': + resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': - resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': + resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': - resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': + resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': - resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': + resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.1.18': - resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-musl@4.2.1': + resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] - '@tailwindcss/oxide-wasm32-wasi@4.1.18': - resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + '@tailwindcss/oxide-wasm32-wasi@4.2.1': + resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -3252,24 +3245,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': - resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': + resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': - resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': + resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.18': - resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide@4.2.1': + resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==} + engines: {node: '>= 20'} - '@tailwindcss/vite@4.1.18': - resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} + '@tailwindcss/vite@4.2.1': + resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -3324,34 +3317,34 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + '@vitest/expect@4.1.0': + resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + '@vitest/mocker@4.1.0': + resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.0.18': - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + '@vitest/pretty-format@4.1.0': + resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} - '@vitest/runner@4.0.18': - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} + '@vitest/runner@4.1.0': + resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} - '@vitest/snapshot@4.0.18': - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + '@vitest/snapshot@4.1.0': + resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} - '@vitest/spy@4.0.18': - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} + '@vitest/spy@4.1.0': + resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} - '@vitest/utils@4.0.18': - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} + '@vitest/utils@4.1.0': + resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} @@ -3653,8 +3646,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -3837,8 +3830,8 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - interactjs@1.10.18: - resolution: {integrity: sha512-ho+Qgr5U3b3oz23Iv7MkIZGoWaTsSCRnrCL34Dtjzs5eFghwpESJeiPj9RhYKc/SgRJL9anR+2OQxFsCg4PmLA==} + interactjs@1.10.27: + resolution: {integrity: sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==} is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -3917,8 +3910,8 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] @@ -3929,8 +3922,8 @@ packages: cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -3941,8 +3934,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -3953,8 +3946,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -3965,8 +3958,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -3977,8 +3970,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -3991,8 +3984,8 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -4005,8 +3998,8 @@ packages: os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -4019,8 +4012,8 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -4033,8 +4026,8 @@ packages: os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -4045,8 +4038,8 @@ packages: cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -4057,8 +4050,8 @@ packages: cpu: [x64] os: [win32] - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lightningcss@1.32.0: @@ -4190,25 +4183,25 @@ packages: ordered-binary@1.6.1: resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} - oxc-parser@0.117.0: - resolution: {integrity: sha512-l3cbgK5wUvWDVNWM/JFU77qDdGZK1wudnLsFcrRyNo/bL1CyU8pC25vDhMHikVY29lbK2InTWsX42RxVSutUdQ==} + oxc-parser@0.121.0: + resolution: {integrity: sha512-ek9o58+SCv6AV7nchiAcUJy1DNE2CC5WRdBcO0mF+W4oRjNQfPO7b3pLjTHSFECpHkKGOZSQxx3hk8viIL5YCg==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-transform@0.117.0: - resolution: {integrity: sha512-u1Stl2uhDh9bFuOGjGXQIqx46IRUNMyHQkq59LayXNGS2flNv7RpZpRSWs5S5deuNP6jJZ12gtMBze+m4dOhmw==} + oxc-transform@0.121.0: + resolution: {integrity: sha512-Kf243wJU/vWF/ThV+ZyfLMQIrViVFRSyYO7UPKpZMMPGGMzxxcHgsNGWy0Uy+pcXD78+jdUnxVTR9rYT73Qw3A==} engines: {node: ^20.19.0 || >=22.12.0} - oxfmt@0.37.0: - resolution: {integrity: sha512-Kd47gakZAU/i9KkXv3F0EDRoMvSso9O5966kflf9zYto0oZ0NN+Fh5vKKrLwp2Mkt0efYBk5LjCAS0BNC0y0eQ==} + oxfmt@0.41.0: + resolution: {integrity: sha512-sKLdJZdQ3bw6x9qKiT7+eID4MNEXlDHf5ZacfIircrq6Qwjk0L6t2/JQlZZrVHTXJawK3KaMuBoJnEJPcqCEdg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxlint-tsgolint@0.16.0: - resolution: {integrity: sha512-4RuJK2jP08XwqtUu+5yhCbxEauCm6tv2MFHKEMsjbosK2+vy5us82oI3VLuHwbNyZG7ekZA26U2LLHnGR4frIA==} + oxlint-tsgolint@0.17.1: + resolution: {integrity: sha512-gJc7hb1ZQFbWjRDYpu1XG+5IRdr1S/Jz/W2ohcpaqIXuDmHU0ujGiM0x05J0nIfwMF3HOEcANi/+j6T0Uecdpg==} hasBin: true - oxlint@1.52.0: - resolution: {integrity: sha512-InLldD+6+3iHJGIrtU1W37UIpsg+xoGCemkZCuSQhxUO3evMX+L872ONvbECyRza9k7ScMCukJIK3Al/2ZMDnQ==} + oxlint@1.56.0: + resolution: {integrity: sha512-Q+5Mj5PVaH/R6/fhMMFzw4dT+KPB+kQW4kaL8FOIq7tfhlnEVp6+3lcWqFruuTNlUo9srZUW3qH7Id4pskeR6g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4227,9 +4220,6 @@ packages: parse5-sax-parser@8.0.0: resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parse5@8.0.0: resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} @@ -4431,8 +4421,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-rc.8: - resolution: {integrity: sha512-RGOL7mz/aoQpy/y+/XS9iePBfeNRDUdozrhCEJxdpJyimW8v6yp4c30q6OviUU5AnUJVLRL9GP//HUs6N3ALrQ==} + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -4444,9 +4434,6 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -4519,8 +4506,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4559,9 +4546,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tailwindcss@4.1.18: - resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} - tailwindcss@4.2.1: resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} @@ -4722,8 +4706,8 @@ packages: yaml: optional: true - vite@8.0.0-beta.18: - resolution: {integrity: sha512-azgNbWdsO/WBqHQxwSCy+zd+Fq+37Fix2hn64cQuiUvaaGGSUac7f8RGQhI1aQl9OKbfWblrCFLWs+tln06c2A==} + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4765,20 +4749,21 @@ packages: yaml: optional: true - vitest@4.0.18: - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + vitest@4.1.0: + resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 + '@vitest/browser-playwright': 4.1.0 + '@vitest/browser-preview': 4.1.0 + '@vitest/browser-webdriverio': 4.1.0 + '@vitest/ui': 4.1.0 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -4845,9 +4830,6 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - zone.js@0.15.1: - resolution: {integrity: sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==} - zone.js@0.16.1: resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==} @@ -4878,17 +4860,12 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))': + '@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))': dependencies: - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) tslib: 2.6.1 - '@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))': - dependencies: - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) - tslib: 2.6.1 - - '@angular/build@21.2.1(@angular/compiler-cli@21.2.2(@angular/compiler@21.2.4)(typescript@5.9.3))(@angular/compiler@21.2.4)(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.2(@angular/common@21.2.2(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.1.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(tailwindcss@4.2.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0))': + '@angular/build@21.2.1(@angular/compiler-cli@21.2.2(@angular/compiler@21.2.4)(typescript@5.9.3))(@angular/compiler@21.2.4)(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.2(@angular/common@21.2.2(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@24.1.0)(chokidar@5.0.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(tailwindcss@4.2.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)))': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.1(chokidar@5.0.0) @@ -4927,7 +4904,7 @@ snapshots: lmdb: 3.5.1 postcss: 8.5.8 tailwindcss: 4.2.1 - vitest: 4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) + vitest: 4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) transitivePeerDependencies: - '@types/node' - chokidar @@ -4941,18 +4918,10 @@ snapshots: - tsx - yaml - '@angular/cdk@20.0.5(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1)': + '@angular/cdk@20.2.14(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - parse5: 7.3.0 - rxjs: 7.8.1 - tslib: 2.6.1 - - '@angular/cdk@20.2.14(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': - dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.6.1 @@ -4966,15 +4935,9 @@ snapshots: rxjs: 7.8.2 tslib: 2.6.1 - '@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1)': - dependencies: - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - rxjs: 7.8.1 - tslib: 2.6.1 - - '@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) rxjs: 7.8.2 tslib: 2.6.1 @@ -5008,21 +4971,13 @@ snapshots: dependencies: tslib: 2.6.1 - '@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)': - dependencies: - rxjs: 7.8.1 - tslib: 2.6.1 - optionalDependencies: - '@angular/compiler': 20.3.18 - zone.js: 0.15.1 - - '@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)': dependencies: rxjs: 7.8.2 tslib: 2.6.1 optionalDependencies: '@angular/compiler': 20.3.18 - zone.js: 0.15.1 + zone.js: 0.16.1 '@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1)': dependencies: @@ -5032,19 +4987,11 @@ snapshots: '@angular/compiler': 21.2.4 zone.js: 0.16.1 - '@angular/forms@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(rxjs@7.8.1)': - dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) - rxjs: 7.8.1 - tslib: 2.6.1 - - '@angular/forms@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) rxjs: 7.8.2 tslib: 2.6.1 @@ -5057,47 +5004,31 @@ snapshots: rxjs: 7.8.2 tslib: 2.6.1 - '@angular/material@20.0.5(3149e812b578936b9d4c7bcc371145dd)': - dependencies: - '@angular/cdk': 20.0.5(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - '@angular/forms': 20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(rxjs@7.8.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) - rxjs: 7.8.1 - tslib: 2.6.1 - - '@angular/platform-browser-dynamic@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))': + '@angular/material@20.2.14(2f832b0b84a3673c875d1ecf350e328d)': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/compiler': 20.3.18 - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) + '@angular/cdk': 20.2.14(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/forms': 20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/platform-browser': 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) + rxjs: 7.8.2 tslib: 2.6.1 - '@angular/platform-browser-dynamic@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))': + '@angular/platform-browser-dynamic@20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@20.3.18)(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': 20.3.18 - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) - tslib: 2.6.1 - - '@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))': - dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) tslib: 2.6.1 - optionalDependencies: - '@angular/animations': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) - '@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) tslib: 2.6.1 optionalDependencies: - '@angular/animations': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser@21.2.2(@angular/common@21.2.2(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1))': dependencies: @@ -5105,19 +5036,11 @@ snapshots: '@angular/core': 21.2.4(@angular/compiler@21.2.4)(rxjs@7.8.2)(zone.js@0.16.1) tslib: 2.6.1 - '@angular/router@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(rxjs@7.8.1)': + '@angular/router@20.3.18(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1)) - rxjs: 7.8.1 - tslib: 2.6.1 - - '@angular/router@20.3.17(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': - dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.17(@angular/animations@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 20.3.18(@angular/animations@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1)) rxjs: 7.8.2 tslib: 2.6.1 @@ -5481,7 +5404,7 @@ snapshots: optionalDependencies: '@types/node': 24.1.0 - '@interactjs/types@1.10.18': {} + '@interactjs/types@1.10.27': {} '@istanbuljs/schema@0.1.3': {} @@ -6014,66 +5937,66 @@ snapshots: '@oxc-node/core-win32-ia32-msvc': 0.0.35 '@oxc-node/core-win32-x64-msvc': 0.0.35 - '@oxc-parser/binding-android-arm-eabi@0.117.0': + '@oxc-parser/binding-android-arm-eabi@0.121.0': optional: true - '@oxc-parser/binding-android-arm64@0.117.0': + '@oxc-parser/binding-android-arm64@0.121.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.117.0': + '@oxc-parser/binding-darwin-arm64@0.121.0': optional: true - '@oxc-parser/binding-darwin-x64@0.117.0': + '@oxc-parser/binding-darwin-x64@0.121.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.117.0': + '@oxc-parser/binding-freebsd-x64@0.121.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.117.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.121.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.117.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.121.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.117.0': + '@oxc-parser/binding-linux-arm64-gnu@0.121.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.117.0': + '@oxc-parser/binding-linux-arm64-musl@0.121.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.117.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.121.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.117.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.121.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.117.0': + '@oxc-parser/binding-linux-riscv64-musl@0.121.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.117.0': + '@oxc-parser/binding-linux-s390x-gnu@0.121.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.117.0': + '@oxc-parser/binding-linux-x64-gnu@0.121.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.117.0': + '@oxc-parser/binding-linux-x64-musl@0.121.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.117.0': + '@oxc-parser/binding-openharmony-arm64@0.121.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.117.0': + '@oxc-parser/binding-wasm32-wasi@0.121.0': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.117.0': + '@oxc-parser/binding-win32-arm64-msvc@0.121.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.117.0': + '@oxc-parser/binding-win32-ia32-msvc@0.121.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.117.0': + '@oxc-parser/binding-win32-x64-msvc@0.121.0': optional: true '@oxc-project/runtime@0.115.0': {} @@ -6082,200 +6005,200 @@ snapshots: '@oxc-project/types@0.115.0': {} - '@oxc-project/types@0.117.0': {} + '@oxc-project/types@0.121.0': {} - '@oxc-transform/binding-android-arm-eabi@0.117.0': + '@oxc-transform/binding-android-arm-eabi@0.121.0': optional: true - '@oxc-transform/binding-android-arm64@0.117.0': + '@oxc-transform/binding-android-arm64@0.121.0': optional: true - '@oxc-transform/binding-darwin-arm64@0.117.0': + '@oxc-transform/binding-darwin-arm64@0.121.0': optional: true - '@oxc-transform/binding-darwin-x64@0.117.0': + '@oxc-transform/binding-darwin-x64@0.121.0': optional: true - '@oxc-transform/binding-freebsd-x64@0.117.0': + '@oxc-transform/binding-freebsd-x64@0.121.0': optional: true - '@oxc-transform/binding-linux-arm-gnueabihf@0.117.0': + '@oxc-transform/binding-linux-arm-gnueabihf@0.121.0': optional: true - '@oxc-transform/binding-linux-arm-musleabihf@0.117.0': + '@oxc-transform/binding-linux-arm-musleabihf@0.121.0': optional: true - '@oxc-transform/binding-linux-arm64-gnu@0.117.0': + '@oxc-transform/binding-linux-arm64-gnu@0.121.0': optional: true - '@oxc-transform/binding-linux-arm64-musl@0.117.0': + '@oxc-transform/binding-linux-arm64-musl@0.121.0': optional: true - '@oxc-transform/binding-linux-ppc64-gnu@0.117.0': + '@oxc-transform/binding-linux-ppc64-gnu@0.121.0': optional: true - '@oxc-transform/binding-linux-riscv64-gnu@0.117.0': + '@oxc-transform/binding-linux-riscv64-gnu@0.121.0': optional: true - '@oxc-transform/binding-linux-riscv64-musl@0.117.0': + '@oxc-transform/binding-linux-riscv64-musl@0.121.0': optional: true - '@oxc-transform/binding-linux-s390x-gnu@0.117.0': + '@oxc-transform/binding-linux-s390x-gnu@0.121.0': optional: true - '@oxc-transform/binding-linux-x64-gnu@0.117.0': + '@oxc-transform/binding-linux-x64-gnu@0.121.0': optional: true - '@oxc-transform/binding-linux-x64-musl@0.117.0': + '@oxc-transform/binding-linux-x64-musl@0.121.0': optional: true - '@oxc-transform/binding-openharmony-arm64@0.117.0': + '@oxc-transform/binding-openharmony-arm64@0.121.0': optional: true - '@oxc-transform/binding-wasm32-wasi@0.117.0': + '@oxc-transform/binding-wasm32-wasi@0.121.0': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@oxc-transform/binding-win32-arm64-msvc@0.117.0': + '@oxc-transform/binding-win32-arm64-msvc@0.121.0': optional: true - '@oxc-transform/binding-win32-ia32-msvc@0.117.0': + '@oxc-transform/binding-win32-ia32-msvc@0.121.0': optional: true - '@oxc-transform/binding-win32-x64-msvc@0.117.0': + '@oxc-transform/binding-win32-x64-msvc@0.121.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.37.0': + '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.37.0': + '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.37.0': + '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.37.0': + '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.37.0': + '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.37.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.37.0': + '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.37.0': + '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.37.0': + '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.37.0': + '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.37.0': + '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.37.0': + '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.37.0': + '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.37.0': + '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.37.0': + '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.37.0': + '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.37.0': + '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.37.0': + '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.37.0': + '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxlint-tsgolint/darwin-arm64@0.16.0': + '@oxlint-tsgolint/darwin-arm64@0.17.1': optional: true - '@oxlint-tsgolint/darwin-x64@0.16.0': + '@oxlint-tsgolint/darwin-x64@0.17.1': optional: true - '@oxlint-tsgolint/linux-arm64@0.16.0': + '@oxlint-tsgolint/linux-arm64@0.17.1': optional: true - '@oxlint-tsgolint/linux-x64@0.16.0': + '@oxlint-tsgolint/linux-x64@0.17.1': optional: true - '@oxlint-tsgolint/win32-arm64@0.16.0': + '@oxlint-tsgolint/win32-arm64@0.17.1': optional: true - '@oxlint-tsgolint/win32-x64@0.16.0': + '@oxlint-tsgolint/win32-x64@0.17.1': optional: true - '@oxlint/binding-android-arm-eabi@1.52.0': + '@oxlint/binding-android-arm-eabi@1.56.0': optional: true - '@oxlint/binding-android-arm64@1.52.0': + '@oxlint/binding-android-arm64@1.56.0': optional: true - '@oxlint/binding-darwin-arm64@1.52.0': + '@oxlint/binding-darwin-arm64@1.56.0': optional: true - '@oxlint/binding-darwin-x64@1.52.0': + '@oxlint/binding-darwin-x64@1.56.0': optional: true - '@oxlint/binding-freebsd-x64@1.52.0': + '@oxlint/binding-freebsd-x64@1.56.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.52.0': + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.52.0': + '@oxlint/binding-linux-arm-musleabihf@1.56.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.52.0': + '@oxlint/binding-linux-arm64-gnu@1.56.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.52.0': + '@oxlint/binding-linux-arm64-musl@1.56.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.52.0': + '@oxlint/binding-linux-ppc64-gnu@1.56.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.52.0': + '@oxlint/binding-linux-riscv64-gnu@1.56.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.52.0': + '@oxlint/binding-linux-riscv64-musl@1.56.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.52.0': + '@oxlint/binding-linux-s390x-gnu@1.56.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.52.0': + '@oxlint/binding-linux-x64-gnu@1.56.0': optional: true - '@oxlint/binding-linux-x64-musl@1.52.0': + '@oxlint/binding-linux-x64-musl@1.56.0': optional: true - '@oxlint/binding-openharmony-arm64@1.52.0': + '@oxlint/binding-openharmony-arm64@1.56.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.52.0': + '@oxlint/binding-win32-arm64-msvc@1.56.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.52.0': + '@oxlint/binding-win32-ia32-msvc@1.56.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.52.0': + '@oxlint/binding-win32-x64-msvc@1.56.0': optional: true '@parcel/watcher-android-arm64@2.5.6': @@ -6593,7 +6516,7 @@ snapshots: dependencies: playwright: 1.58.2 - '@portabletext/to-html@2.0.5': + '@portabletext/to-html@2.0.17': dependencies: '@portabletext/toolkit': 2.0.18 '@portabletext/types': 2.0.15 @@ -6609,67 +6532,67 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.8': + '@rolldown/binding-android-arm64@1.0.0-rc.9': optional: true '@rolldown/binding-darwin-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.8': + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': optional: true '@rolldown/binding-darwin-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.8': + '@rolldown/binding-darwin-x64@1.0.0-rc.9': optional: true '@rolldown/binding-freebsd-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.8': + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.8': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.8': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.8': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.8': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.8': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.8': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.8': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.8': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': @@ -6677,7 +6600,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.8': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true @@ -6685,18 +6608,18 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.8': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.8': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': optional: true '@rolldown/pluginutils@1.0.0-rc.4': {} - '@rolldown/pluginutils@1.0.0-rc.8': {} + '@rolldown/pluginutils@1.0.0-rc.9': {} '@rollup/plugin-virtual@3.0.2(rollup@4.59.0)': optionalDependencies: @@ -6777,14 +6700,14 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@sanity/asset-utils@1.3.0': {} + '@sanity/asset-utils@1.3.2': {} '@sanity/client@7.17.0': dependencies: '@sanity/eventsource': 5.0.2 get-it: 8.7.0 nanoid: 3.3.11 - rxjs: 7.8.1 + rxjs: 7.8.2 transitivePeerDependencies: - debug @@ -6799,7 +6722,7 @@ snapshots: '@sanity/media-library-types@1.2.0': {} - '@sanity/types@3.97.1(@types/react@19.2.14)': + '@sanity/types@3.99.0(@types/react@19.2.14)': dependencies: '@sanity/client': 7.17.0 '@sanity/media-library-types': 1.2.0 @@ -6867,73 +6790,73 @@ snapshots: dependencies: tailwindcss: 3.4.19(tsx@4.21.0) - '@tailwindcss/node@4.1.18': + '@tailwindcss/node@4.2.1': dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.20.0 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.18 + tailwindcss: 4.2.1 - '@tailwindcss/oxide-android-arm64@4.1.18': + '@tailwindcss/oxide-android-arm64@4.2.1': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.18': + '@tailwindcss/oxide-darwin-arm64@4.2.1': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.18': + '@tailwindcss/oxide-darwin-x64@4.2.1': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.18': + '@tailwindcss/oxide-freebsd-x64@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.18': + '@tailwindcss/oxide-linux-x64-musl@4.2.1': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.18': + '@tailwindcss/oxide-wasm32-wasi@4.2.1': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': optional: true - '@tailwindcss/oxide@4.1.18': + '@tailwindcss/oxide@4.2.1': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-x64': 4.1.18 - '@tailwindcss/oxide-freebsd-x64': 4.1.18 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-x64-musl': 4.1.18 - '@tailwindcss/oxide-wasm32-wasi': 4.1.18 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - - '@tailwindcss/vite@4.1.18(vite@8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0))': - dependencies: - '@tailwindcss/node': 4.1.18 - '@tailwindcss/oxide': 4.1.18 - tailwindcss: 4.1.18 - vite: 8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + '@tailwindcss/oxide-android-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-x64': 4.2.1 + '@tailwindcss/oxide-freebsd-x64': 4.2.1 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.1 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-x64-musl': 4.2.1 + '@tailwindcss/oxide-wasm32-wasi': 4.2.1 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 + + '@tailwindcss/vite@4.2.1(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0))': + dependencies: + '@tailwindcss/node': 4.2.1 + '@tailwindcss/oxide': 4.2.1 + tailwindcss: 4.2.1 + vite: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) '@tybys/wasm-util@0.10.1': dependencies: @@ -6983,43 +6906,45 @@ snapshots: dependencies: vite: 7.3.1(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) - '@vitest/expect@4.0.18': + '@vitest/expect@4.1.0': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0))': + '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0))': dependencies: - '@vitest/spy': 4.0.18 + '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) - '@vitest/pretty-format@4.0.18': + '@vitest/pretty-format@4.1.0': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.18': + '@vitest/runner@4.1.0': dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.0 pathe: 2.0.3 - '@vitest/snapshot@4.0.18': + '@vitest/snapshot@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.0 + '@vitest/utils': 4.1.0 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.18': {} + '@vitest/spy@4.1.0': {} - '@vitest/utils@4.0.18': + '@vitest/utils@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.0 + convert-source-map: 2.0.0 tinyrainbow: 3.0.3 agent-base@7.1.4: {} @@ -7284,7 +7209,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} es-object-atoms@1.1.1: dependencies: @@ -7474,9 +7399,9 @@ snapshots: inherits@2.0.4: {} - interactjs@1.10.18: + interactjs@1.10.27: dependencies: - '@interactjs/types': 1.10.18 + '@interactjs/types': 1.10.27 is-binary-path@2.1.0: dependencies: @@ -7536,87 +7461,87 @@ snapshots: jsonc-parser@3.3.1: {} - lightningcss-android-arm64@1.30.2: + lightningcss-android-arm64@1.31.1: optional: true lightningcss-android-arm64@1.32.0: optional: true - lightningcss-darwin-arm64@1.30.2: + lightningcss-darwin-arm64@1.31.1: optional: true lightningcss-darwin-arm64@1.32.0: optional: true - lightningcss-darwin-x64@1.30.2: + lightningcss-darwin-x64@1.31.1: optional: true lightningcss-darwin-x64@1.32.0: optional: true - lightningcss-freebsd-x64@1.30.2: + lightningcss-freebsd-x64@1.31.1: optional: true lightningcss-freebsd-x64@1.32.0: optional: true - lightningcss-linux-arm-gnueabihf@1.30.2: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true lightningcss-linux-arm-gnueabihf@1.32.0: optional: true - lightningcss-linux-arm64-gnu@1.30.2: + lightningcss-linux-arm64-gnu@1.31.1: optional: true lightningcss-linux-arm64-gnu@1.32.0: optional: true - lightningcss-linux-arm64-musl@1.30.2: + lightningcss-linux-arm64-musl@1.31.1: optional: true lightningcss-linux-arm64-musl@1.32.0: optional: true - lightningcss-linux-x64-gnu@1.30.2: + lightningcss-linux-x64-gnu@1.31.1: optional: true lightningcss-linux-x64-gnu@1.32.0: optional: true - lightningcss-linux-x64-musl@1.30.2: + lightningcss-linux-x64-musl@1.31.1: optional: true lightningcss-linux-x64-musl@1.32.0: optional: true - lightningcss-win32-arm64-msvc@1.30.2: + lightningcss-win32-arm64-msvc@1.31.1: optional: true lightningcss-win32-arm64-msvc@1.32.0: optional: true - lightningcss-win32-x64-msvc@1.30.2: + lightningcss-win32-x64-msvc@1.31.1: optional: true lightningcss-win32-x64-msvc@1.32.0: optional: true - lightningcss@1.30.2: + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lightningcss@1.32.0: dependencies: @@ -7727,12 +7652,12 @@ snapshots: nanoid@3.3.11: {} - ngx-cookieconsent@4.0.2(@angular/common@20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(cookieconsent@3.1.1)(rxjs@7.8.1): + ngx-cookieconsent@4.0.2(@angular/common@20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(cookieconsent@3.1.1)(rxjs@7.8.2): dependencies: - '@angular/common': 20.3.17(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1))(rxjs@7.8.1) - '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.1)(zone.js@0.15.1) + '@angular/common': 20.3.18(@angular/core@20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + '@angular/core': 20.3.18(@angular/compiler@20.3.18)(rxjs@7.8.2)(zone.js@0.16.1) cookieconsent: 3.1.1 - rxjs: 7.8.1 + rxjs: 7.8.2 tslib: 2.6.1 node-addon-api@6.1.0: @@ -7769,109 +7694,109 @@ snapshots: ordered-binary@1.6.1: optional: true - oxc-parser@0.117.0: + oxc-parser@0.121.0: dependencies: - '@oxc-project/types': 0.117.0 + '@oxc-project/types': 0.121.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.117.0 - '@oxc-parser/binding-android-arm64': 0.117.0 - '@oxc-parser/binding-darwin-arm64': 0.117.0 - '@oxc-parser/binding-darwin-x64': 0.117.0 - '@oxc-parser/binding-freebsd-x64': 0.117.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.117.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.117.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.117.0 - '@oxc-parser/binding-linux-arm64-musl': 0.117.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.117.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.117.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.117.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.117.0 - '@oxc-parser/binding-linux-x64-gnu': 0.117.0 - '@oxc-parser/binding-linux-x64-musl': 0.117.0 - '@oxc-parser/binding-openharmony-arm64': 0.117.0 - '@oxc-parser/binding-wasm32-wasi': 0.117.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.117.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.117.0 - '@oxc-parser/binding-win32-x64-msvc': 0.117.0 - - oxc-transform@0.117.0: + '@oxc-parser/binding-android-arm-eabi': 0.121.0 + '@oxc-parser/binding-android-arm64': 0.121.0 + '@oxc-parser/binding-darwin-arm64': 0.121.0 + '@oxc-parser/binding-darwin-x64': 0.121.0 + '@oxc-parser/binding-freebsd-x64': 0.121.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.121.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.121.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.121.0 + '@oxc-parser/binding-linux-arm64-musl': 0.121.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.121.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.121.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.121.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.121.0 + '@oxc-parser/binding-linux-x64-gnu': 0.121.0 + '@oxc-parser/binding-linux-x64-musl': 0.121.0 + '@oxc-parser/binding-openharmony-arm64': 0.121.0 + '@oxc-parser/binding-wasm32-wasi': 0.121.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.121.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.121.0 + '@oxc-parser/binding-win32-x64-msvc': 0.121.0 + + oxc-transform@0.121.0: optionalDependencies: - '@oxc-transform/binding-android-arm-eabi': 0.117.0 - '@oxc-transform/binding-android-arm64': 0.117.0 - '@oxc-transform/binding-darwin-arm64': 0.117.0 - '@oxc-transform/binding-darwin-x64': 0.117.0 - '@oxc-transform/binding-freebsd-x64': 0.117.0 - '@oxc-transform/binding-linux-arm-gnueabihf': 0.117.0 - '@oxc-transform/binding-linux-arm-musleabihf': 0.117.0 - '@oxc-transform/binding-linux-arm64-gnu': 0.117.0 - '@oxc-transform/binding-linux-arm64-musl': 0.117.0 - '@oxc-transform/binding-linux-ppc64-gnu': 0.117.0 - '@oxc-transform/binding-linux-riscv64-gnu': 0.117.0 - '@oxc-transform/binding-linux-riscv64-musl': 0.117.0 - '@oxc-transform/binding-linux-s390x-gnu': 0.117.0 - '@oxc-transform/binding-linux-x64-gnu': 0.117.0 - '@oxc-transform/binding-linux-x64-musl': 0.117.0 - '@oxc-transform/binding-openharmony-arm64': 0.117.0 - '@oxc-transform/binding-wasm32-wasi': 0.117.0 - '@oxc-transform/binding-win32-arm64-msvc': 0.117.0 - '@oxc-transform/binding-win32-ia32-msvc': 0.117.0 - '@oxc-transform/binding-win32-x64-msvc': 0.117.0 - - oxfmt@0.37.0: + '@oxc-transform/binding-android-arm-eabi': 0.121.0 + '@oxc-transform/binding-android-arm64': 0.121.0 + '@oxc-transform/binding-darwin-arm64': 0.121.0 + '@oxc-transform/binding-darwin-x64': 0.121.0 + '@oxc-transform/binding-freebsd-x64': 0.121.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.121.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.121.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.121.0 + '@oxc-transform/binding-linux-arm64-musl': 0.121.0 + '@oxc-transform/binding-linux-ppc64-gnu': 0.121.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.121.0 + '@oxc-transform/binding-linux-riscv64-musl': 0.121.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.121.0 + '@oxc-transform/binding-linux-x64-gnu': 0.121.0 + '@oxc-transform/binding-linux-x64-musl': 0.121.0 + '@oxc-transform/binding-openharmony-arm64': 0.121.0 + '@oxc-transform/binding-wasm32-wasi': 0.121.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.121.0 + '@oxc-transform/binding-win32-ia32-msvc': 0.121.0 + '@oxc-transform/binding-win32-x64-msvc': 0.121.0 + + oxfmt@0.41.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.37.0 - '@oxfmt/binding-android-arm64': 0.37.0 - '@oxfmt/binding-darwin-arm64': 0.37.0 - '@oxfmt/binding-darwin-x64': 0.37.0 - '@oxfmt/binding-freebsd-x64': 0.37.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.37.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.37.0 - '@oxfmt/binding-linux-arm64-gnu': 0.37.0 - '@oxfmt/binding-linux-arm64-musl': 0.37.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.37.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.37.0 - '@oxfmt/binding-linux-riscv64-musl': 0.37.0 - '@oxfmt/binding-linux-s390x-gnu': 0.37.0 - '@oxfmt/binding-linux-x64-gnu': 0.37.0 - '@oxfmt/binding-linux-x64-musl': 0.37.0 - '@oxfmt/binding-openharmony-arm64': 0.37.0 - '@oxfmt/binding-win32-arm64-msvc': 0.37.0 - '@oxfmt/binding-win32-ia32-msvc': 0.37.0 - '@oxfmt/binding-win32-x64-msvc': 0.37.0 - - oxlint-tsgolint@0.16.0: + '@oxfmt/binding-android-arm-eabi': 0.41.0 + '@oxfmt/binding-android-arm64': 0.41.0 + '@oxfmt/binding-darwin-arm64': 0.41.0 + '@oxfmt/binding-darwin-x64': 0.41.0 + '@oxfmt/binding-freebsd-x64': 0.41.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.41.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.41.0 + '@oxfmt/binding-linux-arm64-gnu': 0.41.0 + '@oxfmt/binding-linux-arm64-musl': 0.41.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.41.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.41.0 + '@oxfmt/binding-linux-riscv64-musl': 0.41.0 + '@oxfmt/binding-linux-s390x-gnu': 0.41.0 + '@oxfmt/binding-linux-x64-gnu': 0.41.0 + '@oxfmt/binding-linux-x64-musl': 0.41.0 + '@oxfmt/binding-openharmony-arm64': 0.41.0 + '@oxfmt/binding-win32-arm64-msvc': 0.41.0 + '@oxfmt/binding-win32-ia32-msvc': 0.41.0 + '@oxfmt/binding-win32-x64-msvc': 0.41.0 + + oxlint-tsgolint@0.17.1: optionalDependencies: - '@oxlint-tsgolint/darwin-arm64': 0.16.0 - '@oxlint-tsgolint/darwin-x64': 0.16.0 - '@oxlint-tsgolint/linux-arm64': 0.16.0 - '@oxlint-tsgolint/linux-x64': 0.16.0 - '@oxlint-tsgolint/win32-arm64': 0.16.0 - '@oxlint-tsgolint/win32-x64': 0.16.0 - - oxlint@1.52.0(oxlint-tsgolint@0.16.0): + '@oxlint-tsgolint/darwin-arm64': 0.17.1 + '@oxlint-tsgolint/darwin-x64': 0.17.1 + '@oxlint-tsgolint/linux-arm64': 0.17.1 + '@oxlint-tsgolint/linux-x64': 0.17.1 + '@oxlint-tsgolint/win32-arm64': 0.17.1 + '@oxlint-tsgolint/win32-x64': 0.17.1 + + oxlint@1.56.0(oxlint-tsgolint@0.17.1): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.52.0 - '@oxlint/binding-android-arm64': 1.52.0 - '@oxlint/binding-darwin-arm64': 1.52.0 - '@oxlint/binding-darwin-x64': 1.52.0 - '@oxlint/binding-freebsd-x64': 1.52.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.52.0 - '@oxlint/binding-linux-arm-musleabihf': 1.52.0 - '@oxlint/binding-linux-arm64-gnu': 1.52.0 - '@oxlint/binding-linux-arm64-musl': 1.52.0 - '@oxlint/binding-linux-ppc64-gnu': 1.52.0 - '@oxlint/binding-linux-riscv64-gnu': 1.52.0 - '@oxlint/binding-linux-riscv64-musl': 1.52.0 - '@oxlint/binding-linux-s390x-gnu': 1.52.0 - '@oxlint/binding-linux-x64-gnu': 1.52.0 - '@oxlint/binding-linux-x64-musl': 1.52.0 - '@oxlint/binding-openharmony-arm64': 1.52.0 - '@oxlint/binding-win32-arm64-msvc': 1.52.0 - '@oxlint/binding-win32-ia32-msvc': 1.52.0 - '@oxlint/binding-win32-x64-msvc': 1.52.0 - oxlint-tsgolint: 0.16.0 + '@oxlint/binding-android-arm-eabi': 1.56.0 + '@oxlint/binding-android-arm64': 1.56.0 + '@oxlint/binding-darwin-arm64': 1.56.0 + '@oxlint/binding-darwin-x64': 1.56.0 + '@oxlint/binding-freebsd-x64': 1.56.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.56.0 + '@oxlint/binding-linux-arm-musleabihf': 1.56.0 + '@oxlint/binding-linux-arm64-gnu': 1.56.0 + '@oxlint/binding-linux-arm64-musl': 1.56.0 + '@oxlint/binding-linux-ppc64-gnu': 1.56.0 + '@oxlint/binding-linux-riscv64-gnu': 1.56.0 + '@oxlint/binding-linux-riscv64-musl': 1.56.0 + '@oxlint/binding-linux-s390x-gnu': 1.56.0 + '@oxlint/binding-linux-x64-gnu': 1.56.0 + '@oxlint/binding-linux-x64-musl': 1.56.0 + '@oxlint/binding-openharmony-arm64': 1.56.0 + '@oxlint/binding-win32-arm64-msvc': 1.56.0 + '@oxlint/binding-win32-ia32-msvc': 1.56.0 + '@oxlint/binding-win32-x64-msvc': 1.56.0 + oxlint-tsgolint: 0.17.1 p-limit@7.3.0: dependencies: @@ -7887,10 +7812,6 @@ snapshots: dependencies: parse5: 8.0.0 - parse5@7.3.0: - dependencies: - entities: 6.0.1 - parse5@8.0.0: dependencies: entities: 6.0.1 @@ -8121,26 +8042,26 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 - rolldown@1.0.0-rc.8: + rolldown@1.0.0-rc.9: dependencies: '@oxc-project/types': 0.115.0 - '@rolldown/pluginutils': 1.0.0-rc.8 + '@rolldown/pluginutils': 1.0.0-rc.9 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.8 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.8 - '@rolldown/binding-darwin-x64': 1.0.0-rc.8 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.8 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.8 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.8 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.8 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.8 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.8 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.8 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.8 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.8 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.8 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.8 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.8 + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 rollup@4.59.0: dependencies: @@ -8177,10 +8098,6 @@ snapshots: dependencies: queue-microtask: 1.2.3 - rxjs@7.8.1: - dependencies: - tslib: 2.6.1 - rxjs@7.8.2: dependencies: tslib: 2.6.1 @@ -8256,7 +8173,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.10.0: {} + std-env@4.0.0: {} string-width@4.2.3: dependencies: @@ -8327,8 +8244,6 @@ snapshots: - tsx - yaml - tailwindcss@4.1.18: {} - tailwindcss@4.2.1: {} tapable@2.3.0: {} @@ -8410,37 +8325,37 @@ snapshots: uuid@10.0.0: {} - vite-plugin-top-level-await@1.6.0(rollup@4.59.0)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): + vite-plugin-top-level-await@1.6.0(rollup@4.59.0)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.59.0) '@swc/core': 1.15.18 '@swc/wasm': 1.15.18 uuid: 10.0.0 - vite: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) transitivePeerDependencies: - '@swc/helpers' - rollup - vite-plugin-wasm@3.5.0(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): + vite-plugin-wasm@3.5.0(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): dependencies: - vite: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) transitivePeerDependencies: - supports-color - typescript @@ -8461,13 +8376,13 @@ snapshots: sass: 1.97.3 tsx: 4.21.0 - vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0): + vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@1.21.7)(sass@1.97.3)(tsx@4.21.0): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rolldown: 1.0.0-rc.8 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.15 @@ -8477,13 +8392,13 @@ snapshots: sass: 1.97.3 tsx: 4.21.0 - vite@8.0.0-beta.18(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0): + vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rolldown: 1.0.0-rc.8 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.15 @@ -8493,13 +8408,13 @@ snapshots: sass: 1.97.3 tsx: 4.21.0 - vite@8.0.0-beta.18(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0): + vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rolldown: 1.0.0-rc.8 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.1.0 @@ -8509,42 +8424,32 @@ snapshots: sass: 1.97.3 tsx: 4.21.0 - vitest@4.0.18(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0): + vitest@4.1.0(@types/node@24.1.0)(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)): dependencies: - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0)) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.97.3)(tsx@4.21.0) + vite: 8.0.0(@types/node@24.1.0)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.1.0 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml watchpack@2.5.1: dependencies: @@ -8592,6 +8497,4 @@ snapshots: yoctocolors-cjs@2.1.3: {} - zone.js@0.15.1: {} - zone.js@0.16.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dbb9a9a90..e717ffb0f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,13 +9,13 @@ catalog: '@napi-rs/cli': 3.5.1 '@oxc-node/cli': 0.0.35 '@oxc-node/core': 0.0.35 - '@tailwindcss/vite': 4.1.18 + '@tailwindcss/vite': 4.2.1 '@types/node': 24.1.0 - tsdown: 0.21.2 + tsdown: 0.21.4 typescript: 5.9.3 - vitest: 4.0.18 - oxfmt: 0.37.0 - vite: 8.0.0-beta.18 + vitest: 4.1.0 + oxfmt: 0.41.0 + vite: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 tailwindcss: 4.2.1