diff --git a/Cargo.lock b/Cargo.lock index 68b4bbe733..d8876c875c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,7 +15,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common 0.1.7", - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -43,17 +43,6 @@ dependencies = [ "subtle", ] -[[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" @@ -147,15 +136,6 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - [[package]] name = "arc-swap" version = "1.9.2" @@ -165,24 +145,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "as-slice" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" -dependencies = [ - "generic-array 0.12.4", - "generic-array 0.13.3", - "generic-array 0.14.7", - "stable_deref_trait", -] - [[package]] name = "asn1-rs" version = "0.6.2" @@ -258,15 +220,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "atomic-polyfill" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" -dependencies = [ - "critical-section", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -281,9 +234,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b180a3c8b55960db3426d8964b8745e652466a1a49fe1a2eda828046d30b5e4" +checksum = "a767267da9e2c2e189b2f9df8b5657e850ecf5352644734ba130d4a57095cf1b" dependencies = [ "aws-credential-types", "aws-runtime", @@ -301,7 +254,7 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 1.4.0", + "http 1.5.0", "sha1 0.10.6", "time", "tokio", @@ -362,7 +315,7 @@ dependencies = [ "bytes", "bytes-utils", "fastrand", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "percent-encoding", "pin-project-lite", @@ -372,9 +325,9 @@ dependencies = [ [[package]] name = "aws-sdk-ec2" -version = "1.246.0" +version = "1.252.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e913d6ae975b6c0c79c61841026714ed5dd4e3284dac6b9ab00d9f06d96b2" +checksum = "cded2b72d851a584213f6e1097326b0c244f3aa34b92c604150fed719c59ae11" dependencies = [ "arc-swap", "aws-credential-types", @@ -392,16 +345,16 @@ dependencies = [ "aws-types", "fastrand", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sso" -version = "1.105.0" +version = "1.108.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffd0fbe7873cb548a7aa60f9573c268fff94155397fd4f14dc9f1ecaaab8516" +checksum = "c15301b04372832947916607983b114b3374b9db0be058a00fb7513800de1f05" dependencies = [ "arc-swap", "aws-credential-types", @@ -418,16 +371,16 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.107.0" +version = "1.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175763eb222a46377df7aa257a3bca980ab3e96703fefc8f4d0b8da6ad2e254c" +checksum = "72cc2c205cb27108183cf1856333f7d584c2ba0f505421b4209ca5828f9ea899" dependencies = [ "arc-swap", "aws-credential-types", @@ -444,16 +397,16 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "1.110.0" +version = "1.113.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b14781dfbff48984017d57167b6ea0b6471c6920ec52b44a2677c7feb3c13" +checksum = "68182ecb449f7537db0f4d5d25917789cf41e32074a9fe47b6a0b847fe1d2032" dependencies = [ "arc-swap", "aws-credential-types", @@ -471,7 +424,7 @@ dependencies = [ "aws-types", "fastrand", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "regex-lite", "tracing", ] @@ -491,7 +444,7 @@ dependencies = [ "hex", "hmac 0.13.0", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "percent-encoding", "sha2 0.11.0", "time", @@ -521,7 +474,7 @@ dependencies = [ "bytes-utils", "futures-core", "futures-util", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "percent-encoding", @@ -532,9 +485,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "635d23afda0a6ab48d666c4d447c4873e8d1e83518a2be2093122397e50b838e" +checksum = "ebfd138fac0337cee7516c352757ea73b9f2266e57d0bcb5bc70e9547e45aef1" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -542,7 +495,7 @@ dependencies = [ "h2 0.3.27", "h2 0.4.14", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "http-body 0.4.6", "hyper 0.14.32", "hyper 1.9.0", @@ -595,9 +548,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.12.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07505b34e8f4b3591a4fa69e9792b52289b95488dbbc68c3c0075b7bedb245e1" +checksum = "b82e438d30e02a825d363bd639a9efaed68a8089d86101054b0081e7e0d3e606" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -609,7 +562,7 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -621,16 +574,16 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b98f2e1fd67ec06618f9c291e5e495a468e60519e44c9c1979cd0521f3affdb" +checksum = "954c563ce84507722d2679f07a35d21b9c6466b3872d513020d0281fc8112ac9" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api-macros", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "pin-project-lite", "tokio", "tracing", @@ -656,21 +609,21 @@ checksum = "7d56e0a4e53127a632224e43633b0fe045fa9e1e3cfc68b9830f1115e103f910" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", - "http 1.4.0", + "http 1.5.0", ] [[package]] name = "aws-smithy-types" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6dc683efb34b9e755675b37fedbe0103141e5b6df7bdc9eb6967756a8c167d8" +checksum = "fce83ce9abbb198d25bc7131e468d0f9fe1257125e58c39f3f9fc9f5098c9647" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", "http 0.2.12", - "http 1.4.0", + "http 1.5.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -724,7 +677,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "hyper 1.9.0", @@ -757,7 +710,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "mime", @@ -780,7 +733,7 @@ dependencies = [ "futures-core", "futures-util", "headers", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "mime", @@ -811,7 +764,7 @@ dependencies = [ "bytes", "either", "fs-err", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "hyper 1.9.0", "hyper-util", @@ -932,7 +885,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -956,9 +909,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d0a013e3d3ee4edd61e779adf117944c08902d375f18630a0c5b8f95659734" +checksum = "dbe8358268799ebb3e4df23cb9d47f4c72bbc4f5247e2fa6a1bf7b6c0baea220" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -966,7 +919,7 @@ dependencies = [ "futures-core", "futures-util", "hex", - "http 1.4.0", + "http 1.5.0", "http-body-util", "hyper 1.9.0", "hyper-named-pipe", @@ -997,43 +950,19 @@ dependencies = [ "serde_repr", ] -[[package]] -name = "borsh" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" -dependencies = [ - "borsh-derive", - "bytes", - "cfg_aliases 0.2.1", -] - -[[package]] -name = "borsh-derive" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "bson" version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969a9ba84b0ff843813e7249eed1678d9b6607ce5a3b8f0a47af3fcf7978e6e" dependencies = [ - "ahash 0.8.12", + "ahash", "base64 0.22.1", "bitvec", "getrandom 0.2.17", "getrandom 0.3.4", "hex", - "indexmap 2.14.0", + "indexmap 2.14.1", "js-sys", "once_cell", "rand 0.9.4", @@ -1050,28 +979,6 @@ 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 = "bytemuck" version = "1.25.0" @@ -1095,9 +1002,6 @@ name = "bytes" version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" -dependencies = [ - "serde", -] [[package]] name = "bytes-utils" @@ -1200,12 +1104,13 @@ dependencies = [ [[package]] name = "cicada_client" -version = "0.5.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d3b757ad0af0614d7a754287e9e7a38fc9bbeb5bf1fc002ab0df671450d759" +checksum = "db54592d9a863f25f1a5f2bb24875d6a4e39cda0cc085993d9e3c884634f7e47" dependencies = [ "async_timing_util", - "http 1.4.0", + "chrono", + "http 1.5.0", "mogh_auth_client", "mogh_error", "mogh_pki", @@ -1214,16 +1119,15 @@ dependencies = [ "serde", "serde_json", "strum 0.28.0", - "surrealdb-types", "tracing", "typeshare", ] [[package]] name = "cicada_loader" -version = "0.5.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb16dc5b83f5fe25ae62f6e685b660dee3d7e7bb574485cca9edca1b171b2f8" +checksum = "8568e32f7ca3084a9ef75d96ea57d0d00bd3d4214010f283e34bcc8a3e168f40" dependencies = [ "anyhow", "cicada_client", @@ -1347,7 +1251,7 @@ dependencies = [ [[package]] name = "command" -version = "2.3.2" +version = "0.0.0" dependencies = [ "komodo_client", "libc", @@ -1493,9 +1397,9 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "croner" -version = "3.0.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa42bcd3d846ebf66e15bd528d1087f75d1c6c1c66ebff626178a106353c576" +checksum = "a59ed87528b2ee2b6d2b14d6767f6dbe41867dfc581433fc23a7c0fae847467a" dependencies = [ "chrono", "derive_builder", @@ -1511,16 +1415,6 @@ dependencies = [ "crossbeam-utils", ] -[[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" @@ -1575,7 +1469,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.7", + "generic-array", "rand_core 0.6.4", "subtle", "zeroize", @@ -1587,7 +1481,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "generic-array 0.14.7", + "generic-array", "typenum", ] @@ -1722,7 +1616,7 @@ checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" [[package]] name = "database" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "async-compression", @@ -1947,16 +1841,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "earcutr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" -dependencies = [ - "itertools 0.11.0", - "num-traits", -] - [[package]] name = "ecdsa" version = "0.16.9" @@ -2011,7 +1895,7 @@ dependencies = [ "crypto-bigint", "digest 0.10.7", "ff", - "generic-array 0.14.7", + "generic-array", "group", "hkdf", "pem-rfc7468 0.7.0", @@ -2024,7 +1908,7 @@ dependencies = [ [[package]] name = "encoding" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "bytes", @@ -2054,7 +1938,7 @@ dependencies = [ [[package]] name = "environment" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "formatting", @@ -2135,17 +2019,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "flatbuffers" -version = "25.12.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3" -dependencies = [ - "bitflags 2.11.1", - "rustc_version", - "serde", -] - [[package]] name = "flate2" version = "1.1.9" @@ -2156,12 +2029,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - [[package]] name = "fnv" version = "1.0.7" @@ -2174,12 +2041,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - [[package]] name = "foreign-types" version = "0.3.2" @@ -2206,7 +2067,7 @@ dependencies = [ [[package]] name = "formatting" -version = "2.3.2" +version = "0.0.0" dependencies = [ "mogh_error", ] @@ -2304,12 +2165,6 @@ version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - [[package]] name = "futures-util" version = "0.3.34" @@ -2327,24 +2182,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -2356,53 +2193,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "geo" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3901269ec6d4f6068d3f09e5f02f995bd076398dcd1dfec407cd230b02d11b" -dependencies = [ - "earcutr", - "float_next_after", - "geo-types", - "geographiclib-rs", - "i_overlay", - "log", - "num-traits", - "rand 0.8.6", - "robust", - "rstar 0.12.2", - "serde", - "sif-itree", - "spade", -] - -[[package]] -name = "geo-types" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5" -dependencies = [ - "approx", - "num-traits", - "rayon", - "rstar 0.10.0", - "rstar 0.11.0", - "rstar 0.12.2", - "rstar 0.8.4", - "rstar 0.9.3", - "serde", -] - -[[package]] -name = "geographiclib-rs" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" -dependencies = [ - "libm", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2456,7 +2246,7 @@ dependencies = [ [[package]] name = "git" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "command", @@ -2464,14 +2254,9 @@ dependencies = [ "komodo_client", "mogh_cache", "tokio", + "urlencoding", ] -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - [[package]] name = "group" version = "0.13.0" @@ -2495,7 +2280,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.14.0", + "indexmap 2.14.1", "slab", "tokio", "tokio-util", @@ -2513,8 +2298,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.4.0", - "indexmap 2.14.0", + "http 1.5.0", + "indexmap 2.14.1", "slab", "tokio", "tokio-util", @@ -2532,41 +2317,11 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "hash32" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - [[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" @@ -2576,18 +2331,7 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.2.0", + "foldhash", ] [[package]] @@ -2605,7 +2349,7 @@ dependencies = [ "base64 0.22.1", "bytes", "headers-core", - "http 1.4.0", + "http 1.5.0", "httpdate", "mime", "sha1 0.10.6", @@ -2617,42 +2361,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.4.0", -] - -[[package]] -name = "heapless" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422" -dependencies = [ - "as-slice", - "generic-array 0.14.7", - "hash32 0.1.1", - "stable_deref_trait", -] - -[[package]] -name = "heapless" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" -dependencies = [ - "atomic-polyfill", - "hash32 0.2.1", - "rustc_version", - "spin", - "stable_deref_trait", -] - -[[package]] -name = "heapless" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" -dependencies = [ - "hash32 0.3.1", - "stable_deref_trait", + "http 1.5.0", ] [[package]] @@ -2777,9 +2486,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -2803,7 +2512,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http 1.5.0", ] [[package]] @@ -2814,7 +2523,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "pin-project-lite", ] @@ -2881,7 +2590,7 @@ dependencies = [ "futures-channel", "futures-core", "h2 0.4.14", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "httparse", "httpdate", @@ -2928,7 +2637,7 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.0", + "http 1.5.0", "hyper 1.9.0", "hyper-util", "rustls 0.23.43", @@ -2962,7 +2671,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "hyper 1.9.0", "ipnet", @@ -2992,49 +2701,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "i_float" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "010025c2c532c8d82e42d0b8bb5184afa449fa6f06c709ea9adcb16c49ae405b" -dependencies = [ - "libm", -] - -[[package]] -name = "i_key_sort" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9190f86706ca38ac8add223b2aed8b1330002b5cdbbce28fb58b10914d38fc27" - -[[package]] -name = "i_overlay" -version = "4.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413183068e6e0289e18d7d0a1f661b81546e6918d5453a44570b9ab30cbed1b3" -dependencies = [ - "i_float", - "i_key_sort", - "i_shape", - "i_tree", - "rayon", -] - -[[package]] -name = "i_shape" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea154b742f7d43dae2897fcd5ead86bc7b5eefcedd305a7ebf9f69d44d61082" -dependencies = [ - "i_float", -] - -[[package]] -name = "i_tree" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e6d558e6d4c7b82bc51d9c771e7a927862a161a7d87bf2b0541450e0e20915" - [[package]] name = "iana-time-zone" version = "0.1.65" @@ -3200,9 +2866,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" dependencies = [ "equivalent", "hashbrown 0.17.0", @@ -3216,7 +2882,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -3230,9 +2896,10 @@ dependencies = [ [[package]] name = "interpolate" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", + "formatting", "komodo_client", "svi", ] @@ -3283,15 +2950,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -3398,7 +3056,7 @@ dependencies = [ [[package]] name = "komodo_cli" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "bcrypt", @@ -3428,7 +3086,7 @@ dependencies = [ [[package]] name = "komodo_client" -version = "2.3.2" +version = "2.3.3" dependencies = [ "anyhow", "async_timing_util", @@ -3439,7 +3097,7 @@ dependencies = [ "derive_default_builder", "envy", "futures-util", - "indexmap 2.14.0", + "indexmap 2.14.1", "ipnetwork", "mogh_auth_client", "mogh_error", @@ -3470,7 +3128,7 @@ dependencies = [ [[package]] name = "komodo_core" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "arc-swap", @@ -3498,7 +3156,7 @@ dependencies = [ "git", "hex", "hmac 0.13.0", - "indexmap 2.14.0", + "indexmap 2.14.1", "interpolate", "komodo_client", "mogh_auth_client", @@ -3543,7 +3201,7 @@ dependencies = [ [[package]] name = "komodo_periphery" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "arc-swap", @@ -3838,13 +3496,13 @@ dependencies = [ [[package]] name = "mogh_config" -version = "1.1.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d00b483483f4d245c64cd19b34efab9d1f6bc952acafe5d9e2b7fe60bc4758" +checksum = "757a0c92caf3010b750bfff052b99cc59e00cb81385bbc38c7f6cf87d4201ab1" dependencies = [ "cicada_loader", "colored", - "indexmap 2.14.0", + "indexmap 2.14.1", "regex", "serde", "serde_json", @@ -4247,7 +3905,7 @@ dependencies = [ "base64 0.22.1", "chrono", "getrandom 0.2.17", - "http 1.4.0", + "http 1.5.0", "rand 0.8.6", "reqwest 0.12.28", "serde", @@ -4357,7 +4015,7 @@ dependencies = [ "dyn-clone", "ed25519-dalek", "hmac 0.12.1", - "http 1.4.0", + "http 1.5.0", "itertools 0.10.5", "log", "oauth2", @@ -4442,7 +4100,7 @@ checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" dependencies = [ "async-trait", "bytes", - "http 1.4.0", + "http 1.5.0", "opentelemetry", "reqwest 0.12.28", ] @@ -4453,7 +4111,7 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" dependencies = [ - "http 1.4.0", + "http 1.5.0", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", @@ -4550,16 +4208,6 @@ dependencies = [ "sha2 0.10.9", ] -[[package]] -name = "papaya" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "997ee03cd38c01469a7046643714f0ad28880bcb9e6679ff0666e24817ca19b7" -dependencies = [ - "equivalent", - "seize", -] - [[package]] name = "parking_lot" version = "0.12.5" @@ -4618,12 +4266,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "pdqselect" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" - [[package]] name = "pem" version = "3.0.6" @@ -4660,7 +4302,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "periphery_client" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "encoding", @@ -4866,15 +4508,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -4907,26 +4540,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "pxfm" version = "0.1.29" @@ -5109,26 +4722,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rayon" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" -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" @@ -5193,21 +4786,6 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" -[[package]] -name = "relative-path" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - [[package]] name = "reqwest" version = "0.12.28" @@ -5221,7 +4799,7 @@ dependencies = [ "futures-core", "futures-util", "h2 0.4.14", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "hyper 1.9.0", @@ -5263,7 +4841,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "hyper 1.9.0", @@ -5324,41 +4902,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[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 = "robust" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" - [[package]] name = "rsa" version = "0.9.10" @@ -5379,113 +4922,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rstar" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a45c0e8804d37e4d97e55c6f258bc9ad9c5ee7b07437009dd152d764949a27c" -dependencies = [ - "heapless 0.6.1", - "num-traits", - "pdqselect", - "serde", - "smallvec", -] - -[[package]] -name = "rstar" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40f1bfe5acdab44bc63e6699c28b74f75ec43afb59f3eda01e145aff86a25fa" -dependencies = [ - "heapless 0.7.17", - "num-traits", - "serde", - "smallvec", -] - -[[package]] -name = "rstar" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f39465655a1e3d8ae79c6d9e007f4953bfc5d55297602df9dc38f9ae9f1359a" -dependencies = [ - "heapless 0.7.17", - "num-traits", - "serde", - "smallvec", -] - -[[package]] -name = "rstar" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6" -dependencies = [ - "heapless 0.7.17", - "num-traits", - "serde", - "smallvec", -] - -[[package]] -name = "rstar" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" -dependencies = [ - "heapless 0.8.0", - "num-traits", - "serde", - "smallvec", -] - -[[package]] -name = "rstest" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49" -dependencies = [ - "futures-timer", - "futures-util", - "rstest_macros", -] - -[[package]] -name = "rstest_macros" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" -dependencies = [ - "cfg-if", - "glob", - "proc-macro-crate", - "proc-macro2", - "quote", - "regex", - "relative-path", - "rustc_version", - "syn 2.0.117", - "unicode-ident", -] - -[[package]] -name = "rust_decimal" -version = "1.41.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce901f9a19d251159075a4c37af514c3b8ef99c22e02dd8c19161cf397ee94a" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand 0.8.6", - "rkyv", - "serde", - "serde_json", - "wasm-bindgen", -] - [[package]] name = "rustc-hash" version = "2.1.2" @@ -5681,7 +5117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "dyn-clone", - "indexmap 2.14.0", + "indexmap 2.14.1", "ref-cast", "schemars_derive", "serde", @@ -5716,12 +5152,6 @@ dependencies = [ "untrusted 0.9.0", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "sec1" version = "0.7.3" @@ -5730,7 +5160,7 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", - "generic-array 0.14.7", + "generic-array", "pkcs8", "subtle", "zeroize", @@ -5759,16 +5189,6 @@ dependencies = [ "libc", ] -[[package]] -name = "seize" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "semver" version = "1.0.28" @@ -5852,7 +5272,7 @@ version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ - "indexmap 2.14.0", + "indexmap 2.14.1", "itoa", "memchr", "serde", @@ -5934,7 +5354,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.14.0", + "indexmap 2.14.1", "schemars 0.9.0", "schemars 1.2.2", "serde_core", @@ -5961,7 +5381,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" dependencies = [ - "indexmap 2.14.0", + "indexmap 2.14.1", "itoa", "ryu", "serde", @@ -6066,12 +5486,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" -[[package]] -name = "sif-itree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f45b8998ced5134fb1d75732c77842a3e888f19c1ff98481822e8fbfbf930b" - [[package]] name = "signal-hook" version = "0.3.18" @@ -6218,26 +5632,11 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "spade" -version = "2.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa" -dependencies = [ - "hashbrown 0.16.1", - "num-traits", - "robust", - "smallvec", -] - [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] [[package]] name = "spki" @@ -6320,62 +5719,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "surrealdb-protocol" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb37698e0493bcfac3229ecb6ec6894a3ad705a3a2087b1562eeb881b3db19d4" -dependencies = [ - "anyhow", - "async-trait", - "bytes", - "chrono", - "flatbuffers", - "geo", - "rust_decimal", - "semver", - "serde", - "serde_json", - "uuid", -] - -[[package]] -name = "surrealdb-types" -version = "3.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79e71d035367b933cf528c09b7ed186bc17dea58c66a1bca84d22f9abf167db" -dependencies = [ - "anyhow", - "bytes", - "chrono", - "flatbuffers", - "geo", - "hex", - "http 1.4.0", - "papaya", - "rand 0.8.6", - "regex", - "rstest", - "rust_decimal", - "serde", - "serde_json", - "surrealdb-protocol", - "surrealdb-types-derive", - "ulid", - "uuid", -] - -[[package]] -name = "surrealdb-types-derive" -version = "3.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76abdbfc597e062daae5269251e18a84553f9090cfff423591f57c8c6765aa8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "svi" version = "1.2.0" @@ -6385,17 +5728,6 @@ dependencies = [ "thiserror 2.0.20", ] -[[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" @@ -6716,7 +6048,7 @@ version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ - "indexmap 2.14.0", + "indexmap 2.14.1", "serde_core", "serde_spanned", "toml_datetime", @@ -6734,18 +6066,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.25.11+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime", - "toml_parser", - "winnow", -] - [[package]] name = "toml_parser" version = "1.1.3+spec-1.1.0" @@ -6782,7 +6102,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bytes", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "hyper 1.9.0", @@ -6839,7 +6159,7 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", - "indexmap 2.14.0", + "indexmap 2.14.1", "pin-project-lite", "slab", "sync_wrapper", @@ -6859,7 +6179,7 @@ dependencies = [ "axum-core", "cookie", "futures-util", - "http 1.4.0", + "http 1.5.0", "parking_lot", "pin-project-lite", "tower-layer", @@ -6876,7 +6196,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.4.0", + "http 1.5.0", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -6912,7 +6232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "518dca34b74a17cadfcee06e616a09d2bd0c3984eff1769e1e76d58df978fc78" dependencies = [ "async-trait", - "http 1.4.0", + "http 1.5.0", "time", "tokio", "tower-cookies", @@ -6933,7 +6253,7 @@ dependencies = [ "axum-core", "base64 0.22.1", "futures", - "http 1.4.0", + "http 1.5.0", "parking_lot", "rand 0.9.4", "serde", @@ -7045,7 +6365,7 @@ dependencies = [ [[package]] name = "transport" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "axum", @@ -7084,7 +6404,7 @@ checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.5.0", "httparse", "log", "rand 0.9.4", @@ -7100,7 +6420,7 @@ checksum = "e48ac77174b19c110a50ab2128b24215ac9cb40e0e12e093fb602d175c569d22" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.5.0", "httparse", "log", "rand 0.10.2", @@ -7158,16 +6478,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "ulid" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" -dependencies = [ - "rand 0.9.4", - "web-time", -] - [[package]] name = "unicase" version = "2.9.0" @@ -7284,7 +6594,7 @@ version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bde15df68e80b16c7d16b9616e80770ad158988daa56a27dccd1e55558b0160" dependencies = [ - "indexmap 2.14.0", + "indexmap 2.14.1", "serde", "serde_json", "utoipa-gen", @@ -7315,9 +6625,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -7402,7 +6712,6 @@ dependencies = [ "cfg-if", "once_cell", "rustversion", - "serde", "wasm-bindgen-macro", "wasm-bindgen-shared", ] @@ -7466,7 +6775,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.14.0", + "indexmap 2.14.1", "wasm-encoder", "wasmparser", ] @@ -7492,7 +6801,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.11.1", "hashbrown 0.15.5", - "indexmap 2.14.0", + "indexmap 2.14.1", "semver", ] @@ -7930,9 +7239,6 @@ name = "winnow" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" -dependencies = [ - "memchr", -] [[package]] name = "winreg" @@ -7977,7 +7283,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", "heck", - "indexmap 2.14.0", + "indexmap 2.14.1", "prettyplease", "syn 2.0.117", "wasm-metadata", @@ -8008,7 +7314,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags 2.11.1", - "indexmap 2.14.0", + "indexmap 2.14.1", "log", "serde", "serde_derive", @@ -8027,7 +7333,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.14.0", + "indexmap 2.14.1", "log", "semver", "serde", @@ -8077,7 +7383,7 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "xtask" -version = "2.3.2" +version = "0.0.0" dependencies = [ "anyhow", "clap", diff --git a/Cargo.toml b/Cargo.toml index 9595eb2fec..796a9e4d49 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ ] [workspace.package] -version = "2.3.2" +version = "0.0.0" edition = "2024" license = "GPL-3.0-or-later" repository = "https://github.com/moghtech/komodo" @@ -41,7 +41,7 @@ mogh_rate_limit = "1.0.1" partial_derive2 = "0.5.0" mongo_indexed = "2.1.0" mogh_resolver = "1.0.0" -mogh_config = "1.1.0" +mogh_config = "1.4.2" mogh_logger = "1.3.4" mogh_server = "1.5.0" toml_pretty = "2.0.0" @@ -96,7 +96,7 @@ dotenvy = "0.15.7" envy = "0.4.2" # CRYPTO / AUTH -uuid = { version = "1.24.0", features = ["v4", "fast-rng", "serde"] } +uuid = { version = "1.25.0", features = ["v4", "fast-rng", "serde"] } rustls = { version = "0.23.43", features = ["aws-lc-rs"] } data-encoding = "2.11.1" urlencoding = "2.1.3" @@ -112,20 +112,20 @@ hickory-resolver = "0.26.1" portable-pty = "0.9.0" shell-escape = "0.1.5" crossterm = "0.29.0" -bollard = "0.21.0" +bollard = "0.21.1" sysinfo = "0.39.6" shlex = "2.0.1" # CLOUD -aws-config = "1.10.1" -aws-sdk-ec2 = "1.246.0" +aws-config = "1.11.0" +aws-sdk-ec2 = "1.252.0" aws-credential-types = "1.3.0" ## CRON english-to-cron = "0.1.7" chrono-tz = "0.10.4" chrono = "0.4.45" -croner = "3.0.1" +croner = "4.0.0" # MISC async-compression = { version = "0.4.43", features = ["tokio", "gzip"] } diff --git a/action/deno.json b/action/deno.json index 5d7670259c..9e26dfeeb6 100644 --- a/action/deno.json +++ b/action/deno.json @@ -1,5 +1 @@ -{ - "imports": { - "@std/toml": "jsr:@std/toml" - } -} +{} \ No newline at end of file diff --git a/action/run.ts b/action/run.ts index fdb33521ae..821a850778 100644 --- a/action/run.ts +++ b/action/run.ts @@ -1,5 +1,3 @@ -import * as TOML from "@std/toml"; - export const run = async (action: string) => { const branch = await new Deno.Command("bash", { args: ["-c", "git rev-parse --abbrev-ref HEAD"], @@ -7,46 +5,7 @@ export const run = async (action: string) => { .output() .then((r) => new TextDecoder("utf-8").decode(r.stdout).trim()); - const cargo_toml_str = await Deno.readTextFile("Cargo.toml"); - const prev_version = ( - TOML.parse(cargo_toml_str) as { - workspace: { package: { version: string } }; - } - ).workspace.package.version; - - const [version, tag, count] = prev_version.split("-"); - const next_count = Number(count) + 1; - - const next_version = `${version}-${tag}-${next_count}`; - - await Deno.writeTextFile( - "Cargo.toml", - cargo_toml_str.replace( - `version = "${prev_version}"`, - `version = "${next_version}"` - ) - ); - - // Cargo check first here to make sure lock file is updated before commit. - const cmd = ` -cargo check -echo "" - -git add --all -git commit --all --message "deploy ${version}-${tag}-${next_count}" - -echo "" -git push -echo "" - -km run -y action ${action} "KOMODO_BRANCH=${branch}&KOMODO_VERSION=${version}&KOMODO_TAG=${tag}-${next_count}" -` - .split("\n") - .map((line) => line.trim()) - .filter((line) => line.length > 0 && !line.startsWith("//")) - .join(" && "); - new Deno.Command("bash", { - args: ["-c", cmd], + args: ["-c", `km run -y action ${action} "BRANCH=${branch}"`], }).spawn(); }; diff --git a/bin/binaries.Dockerfile b/bin/binaries.Dockerfile index 4188bb0f8e..4e5032fa96 100644 --- a/bin/binaries.Dockerfile +++ b/bin/binaries.Dockerfile @@ -1,8 +1,8 @@ ## Builds the Komodo Core, Periphery, and Util binaries ## for a specific architecture. Requires OpenSSL 3 or later. -FROM rust:1.97.1-bookworm AS builder -RUN cargo install cargo-strip +FROM rust:1.98.0-bookworm AS builder +RUN cargo install cargo-strip cargo-edit WORKDIR /builder COPY Cargo.toml Cargo.lock ./ @@ -14,6 +14,11 @@ COPY ./bin/periphery ./bin/periphery COPY ./bin/cli ./bin/cli COPY ./xtask ./xtask +# Set Version +ARG VERSION="0.0.0" +ARG IMAGE_TAG="" +RUN cargo set-version -p komodo_core ${VERSION}${IMAGE_TAG:+-${IMAGE_TAG}} + # Compile bin RUN \ cargo build -p komodo_core --release && \ diff --git a/bin/chef.binaries.Dockerfile b/bin/chef.binaries.Dockerfile index 89acc13a7e..e8691da921 100644 --- a/bin/chef.binaries.Dockerfile +++ b/bin/chef.binaries.Dockerfile @@ -3,7 +3,7 @@ ## Uses chef for dependency caching to help speed up back-to-back builds. -FROM lukemathwalker/cargo-chef:latest-rust-1.97.1-bookworm AS chef +FROM lukemathwalker/cargo-chef:latest-rust-1.98.0-bookworm AS chef WORKDIR /builder # Plan just the RECIPE to see if things have changed @@ -12,12 +12,20 @@ COPY . . RUN cargo chef prepare --recipe-path recipe.json FROM chef AS builder -RUN cargo install cargo-strip -COPY --from=planner /builder/recipe.json recipe.json +RUN cargo install cargo-strip cargo-edit + # Build JUST dependencies - cached layer +COPY --from=planner /builder/recipe.json recipe.json RUN cargo chef cook --release --recipe-path recipe.json -# NOW copy again (this time into builder) and build app + +# NOW copy again (this time into builder), set version, and build app COPY . . + +# Set Version +ARG VERSION="0.0.0" +ARG IMAGE_TAG="" +RUN cargo set-version -p komodo_core ${VERSION}${IMAGE_TAG:+-${IMAGE_TAG}} + RUN \ cargo build --release --bin core && \ cargo build --release --bin periphery && \ diff --git a/bin/cli/aio.Dockerfile b/bin/cli/aio.Dockerfile index d1564d5446..7f693c66a4 100644 --- a/bin/cli/aio.Dockerfile +++ b/bin/cli/aio.Dockerfile @@ -1,5 +1,5 @@ -FROM rust:1.97.1-trixie AS builder -RUN cargo install cargo-strip +FROM rust:1.98.0-trixie AS builder +RUN cargo install cargo-strip cargo-edit WORKDIR /builder COPY Cargo.toml Cargo.lock ./ @@ -8,6 +8,11 @@ COPY ./client/core/rs ./client/core/rs COPY ./client/periphery ./client/periphery COPY ./bin/cli ./bin/cli +# Set Version +ARG VERSION="0.0.0" +ARG IMAGE_TAG="" +RUN cargo set-version -p komodo_cli ${VERSION}${IMAGE_TAG:+-${IMAGE_TAG}} + # Compile bin RUN cargo build -p komodo_cli --release && cargo strip diff --git a/bin/core/aio.Dockerfile b/bin/core/aio.Dockerfile index 2cbcc7b5f9..a2b5bafacb 100644 --- a/bin/core/aio.Dockerfile +++ b/bin/core/aio.Dockerfile @@ -1,8 +1,8 @@ ## All in one, multi stage compile + runtime Docker build for your architecture. # Build Core -FROM rust:1.97.1-trixie AS core-builder -RUN cargo install cargo-strip +FROM rust:1.98.0-trixie AS core-builder +RUN cargo install cargo-strip cargo-edit WORKDIR /builder COPY Cargo.toml Cargo.lock ./ @@ -13,6 +13,11 @@ COPY ./bin/core ./bin/core COPY ./bin/cli ./bin/cli COPY ./xtask ./xtask +# Set Version +ARG VERSION="0.0.0" +ARG IMAGE_TAG="" +RUN cargo set-version -p komodo_core ${VERSION}${IMAGE_TAG:+-${IMAGE_TAG}} + # Compile app RUN cargo build -p komodo_core --release && \ cargo build -p komodo_cli --release && \ diff --git a/bin/core/src/helpers/procedure.rs b/bin/core/src/helpers/procedure.rs index 3155911d56..dd6fe1b132 100644 --- a/bin/core/src/helpers/procedure.rs +++ b/bin/core/src/helpers/procedure.rs @@ -13,6 +13,7 @@ use komodo_client::{ permission::PermissionLevel, procedure::{Procedure, ProcedureStage}, repo::Repo, + resource::ResourceQuery, stack::Stack, update::Update, user::procedure_user, @@ -33,7 +34,10 @@ use crate::{ state::{all_resources_cache, db_client}, }; -use super::update::{init_execution_update, update_update}; +use super::{ + query::get_all_tags, + update::{init_execution_update, update_update}, +}; pub async fn execute_procedure( procedure: &Procedure, @@ -109,95 +113,41 @@ async fn execute_procedure_stage( update: &Mutex, ) -> anyhow::Result<()> { let mut executions = Vec::with_capacity(_executions.capacity()); - for execution in _executions { - match execution { - Execution::BatchRunAction(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchRunProcedure(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchRunBuild(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchCloneRepo(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchPullRepo(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchBuildRepo(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchDeploy(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchDestroyDeployment(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchDeployStack(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchDeployStackIfChanged(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchPullStack(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; - } - Execution::BatchDestroyStack(exec) => { - extend_batch_exection::( - &exec.pattern, - &mut executions, - ) - .await?; + // Expands the batch executions into their matching + // single executions, and passes through the rest. + macro_rules! expand_batch_executions { + ($($Variant:ident),* $(,)?) => { + for execution in _executions { + match execution { + $( + Execution::$Variant(exec) => { + extend_batch_execution::<$Variant>( + &exec.pattern, + &exec.tags, + &mut executions, + ) + .await?; + } + )* + execution => executions.push(execution), + } } - execution => executions.push(execution), - } + }; } + expand_batch_executions!( + BatchRunAction, + BatchRunProcedure, + BatchRunBuild, + BatchCloneRepo, + BatchPullRepo, + BatchBuildRepo, + BatchDeploy, + BatchDestroyDeployment, + BatchDeployStack, + BatchDeployStackIfChanged, + BatchPullStack, + BatchDestroyStack, + ); let futures = executions.into_iter().map(|execution| async move { let now = Instant::now(); add_line_to_update( @@ -550,18 +500,27 @@ async fn add_line_to_update(update: &Mutex, line: &str) { }; } -async fn extend_batch_exection( +async fn extend_batch_execution( pattern: &str, + tags: &[String], executions: &mut Vec, ) -> anyhow::Result<()> { + let all_tags = if tags.is_empty() { + Vec::new() + } else { + get_all_tags(None).await? + }; let more = list_full_for_user_using_pattern::( pattern, - Default::default(), + ResourceQuery { + tags: tags.to_vec(), + ..Default::default() + }, None, None, procedure_user(), PermissionLevel::Read.into(), - &[], + &all_tags, ) .await? .into_iter() diff --git a/bin/core/src/network.rs b/bin/core/src/network.rs index 37a030cdb2..12c2c6a6ac 100644 --- a/bin/core/src/network.rs +++ b/bin/core/src/network.rs @@ -9,24 +9,26 @@ //! - Automatic container environment detection //! - Interface validation (existence and UP state) //! - Gateway discovery from routing tables or network configuration -//! - Safe default route modification with privilege checking +//! - Atomic default route replacement (never leaves the container without a default route) //! - Comprehensive error handling and logging +use std::net::Ipv4Addr; + use anyhow::{Context, anyhow}; use tokio::process::Command; use tracing::{debug, info, trace, warn}; -/// Standard gateway addresses to test for Docker networks -const DOCKER_GATEWAY_CANDIDATES: &[&str] = &[".1", ".254"]; - /// Container environment detection files const DOCKERENV_FILE: &str = "/.dockerenv"; +const CONTAINERENV_FILE: &str = "/run/.containerenv"; const CGROUP_FILE: &str = "/proc/1/cgroup"; /// Check if running in container environment fn is_container_environment() -> bool { - // Check for Docker-specific indicators - if std::path::Path::new(DOCKERENV_FILE).exists() { + // Check for Docker / Podman specific indicators + if std::path::Path::new(DOCKERENV_FILE).exists() + || std::path::Path::new(CONTAINERENV_FILE).exists() + { return true; } @@ -35,7 +37,9 @@ fn is_container_environment() -> bool { return true; } - // Check cgroup for container runtime indicators + // Check cgroup for container runtime indicators. + // Only reliable on cgroup v1 - on cgroup v2 the file + // is usually just `0::/`, so the checks above carry detection. if let Ok(content) = std::fs::read_to_string(CGROUP_FILE) && (content.contains("docker") || content.contains("containerd")) { @@ -51,23 +55,24 @@ pub async fn configure_internet_gateway() { let config = core_config(); + if config.internet_interface.is_empty() { + debug!("No interface specified, using default routing"); + return; + } + if !is_container_environment() { debug!("Not in container, skipping network configuration"); return; } - if !config.internet_interface.is_empty() { - debug!( - "Configuring internet interface: {}", - config.internet_interface - ); - if let Err(e) = - configure_manual_interface(&config.internet_interface).await - { - warn!("Failed to configure internet gateway: {e:#}"); - } - } else { - debug!("No interface specified, using default routing"); + debug!( + "Configuring internet interface: {}", + config.internet_interface + ); + if let Err(e) = + configure_manual_interface(&config.internet_interface).await + { + warn!("Failed to configure internet gateway: {e:#}"); } } @@ -91,7 +96,10 @@ async fn configure_manual_interface( let interface_info = String::from_utf8_lossy(&interface_check.stdout); - if !interface_info.contains("state UP") { + // tun / wireguard style interfaces report `state UNKNOWN` while operational + if !interface_info.contains("state UP") + && !interface_info.contains("state UNKNOWN") + { return Err(anyhow!( "Interface '{}' is not UP. Please ensure the interface is enabled and connected", interface_name @@ -159,7 +167,7 @@ async fn find_gateway( .context("Failed to get routes for interface")?; if route_output.status.success() { - let routes = String::from_utf8(route_output.stdout)?; + let routes = String::from_utf8_lossy(&route_output.stdout); trace!("Routes for {}: {}", interface_name, routes.trim()); // Look for routes with gateway @@ -179,114 +187,114 @@ async fn find_gateway( } } - // Derive gateway from network configuration (Docker standard: .1) - if let Some(network_base) = ip_cidr.split('/').next() { - let ip_parts: Vec<&str> = network_base.split('.').collect(); - if ip_parts.len() == 4 { - let potential_gateways: Vec = DOCKER_GATEWAY_CANDIDATES - .iter() - .map(|suffix| { - format!( - "{}.{}.{}{}", - ip_parts[0], ip_parts[1], ip_parts[2], suffix - ) - }) - .collect(); - - for gateway in potential_gateways { - trace!( - "Testing potential gateway {} for {}", - gateway, interface_name - ); - - // Check if gateway is reachable - let route_test = Command::new("ip") - .args(["route", "get", &gateway, "dev", interface_name]) - .output() - .await; + // Derive candidates from the interface subnet + let candidates = derive_gateway_candidates(ip_cidr) + .with_context(|| { + format!( + "Could not determine gateway for interface '{interface_name}' in network '{ip_cidr}'" + ) + })?; + + for gateway in &candidates { + trace!( + "Testing potential gateway {} for {}", + gateway, interface_name + ); - if let Ok(output) = route_test - && output.status.success() - { - trace!( - "Gateway {} is reachable via {}", - gateway, interface_name - ); - return Ok(gateway.to_string()); - } + // Note: `ip route get` only confirms the address is on-link + // for this interface, not that a router actually answers there. + let route_test = Command::new("ip") + .args(["route", "get", gateway, "dev", interface_name]) + .output() + .await; - // Fallback: assume .1 is gateway (Docker standard) - if gateway.ends_with(".1") { - trace!( - "Assuming Docker gateway {} for {}", - gateway, interface_name - ); - return Ok(gateway.to_string()); - } - } + if let Ok(output) = route_test + && output.status.success() + { + trace!("Gateway {} is on-link via {}", gateway, interface_name); + return Ok(gateway.clone()); } } - Err(anyhow!( - "Could not determine gateway for interface '{}' in network '{}'. \ - Ensure the interface is properly configured with a valid gateway", - interface_name, - ip_cidr - )) -} - -/// Set default gateway to use specified interface -async fn set_default_gateway( - gateway: &str, - interface_name: &str, -) -> anyhow::Result<()> { + // Fall back to the first host address (Docker standard) + let gateway = candidates + .into_iter() + .next() + .context("No gateway candidates derived")?; trace!( - "Setting default gateway to {} via {}", + "Assuming Docker gateway {} for {}", gateway, interface_name ); + Ok(gateway) +} - // Check if we have network privileges - if !check_network_privileges().await { - warn!( - "⚠️ Container lacks network privileges (NET_ADMIN capability required)" - ); - warn!( - "Add 'cap_add: [\"NET_ADMIN\"]' to your docker-compose.yaml" - ); +/// Derive candidate gateway addresses for the interface subnet: +/// the first and last usable host addresses. Docker assigns the +/// gateway the first host address of the subnet regardless of prefix length. +fn derive_gateway_candidates( + ip_cidr: &str, +) -> anyhow::Result> { + let (ip, prefix) = ip_cidr + .split_once('/') + .context("Address is not in CIDR (ip/prefix) format")?; + let ip: Ipv4Addr = + ip.parse().context("Failed to parse IPv4 address")?; + let prefix: u32 = + prefix.parse().context("Failed to parse CIDR prefix")?; + if !(1..=30).contains(&prefix) { return Err(anyhow!( - "Insufficient network privileges to modify routing table. \ - Container needs NET_ADMIN capability to configure network interfaces" + "Subnet /{prefix} cannot contain a distinct gateway address" )); } - // Remove existing default routes - let remove_default = Command::new("sh") - .args(["-c", "ip route del default 2>/dev/null || true"]) - .output() - .await; + let mask = u32::MAX << (32 - prefix); + let network = u32::from(ip) & mask; + let first_host = network + 1; + let last_host = (network | !mask) - 1; - if let Ok(output) = remove_default - && output.status.success() - { - trace!("Removed existing default routes"); - } + Ok(vec![ + Ipv4Addr::from(first_host).to_string(), + Ipv4Addr::from(last_host).to_string(), + ]) +} - // Add new default route - let add_default_cmd = format!( - "ip route add default via {gateway} dev {interface_name}" +/// Set default gateway to use specified interface +async fn set_default_gateway( + gateway: &str, + interface_name: &str, +) -> anyhow::Result<()> { + trace!( + "Setting default gateway to {} via {}", + gateway, interface_name ); - trace!("Adding default route: {}", add_default_cmd); - let add_default = Command::new("sh") - .args(["-c", &add_default_cmd]) + // `replace` swaps the default route atomically, so a failure + // never leaves the container without any default route. + let replace = Command::new("ip") + .args([ + "route", + "replace", + "default", + "via", + gateway, + "dev", + interface_name, + ]) .output() .await - .context("Failed to add default route")?; - - if !add_default.status.success() { - let error = String::from_utf8_lossy(&add_default.stderr) - .trim() - .to_string(); + .context("Failed to run ip route replace")?; + + if !replace.status.success() { + let error = + String::from_utf8_lossy(&replace.stderr).trim().to_string(); + if error.contains("Operation not permitted") { + warn!( + "⚠️ Container lacks network privileges (NET_ADMIN capability required)" + ); + warn!( + "Add 'cap_add: [\"NET_ADMIN\"]' to your docker-compose.yaml" + ); + } return Err(anyhow!( "❌ Failed to set default gateway via '{}': {}. \ Verify interface configuration and network permissions", @@ -298,14 +306,3 @@ async fn set_default_gateway( trace!("Default gateway set to {} via {}", gateway, interface_name); Ok(()) } - -/// Check if we have sufficient network privileges -async fn check_network_privileges() -> bool { - // Try to test NET_ADMIN capability with a harmless route operation - let capability_test = Command::new("sh") - .args(["-c", "ip route add 198.51.100.1/32 dev lo 2>/dev/null && ip route del 198.51.100.1/32 dev lo 2>/dev/null"]) - .output() - .await; - - matches!(capability_test, Ok(output) if output.status.success()) -} diff --git a/bin/core/src/resource/stack.rs b/bin/core/src/resource/stack.rs index 6fe8f4bde7..561011ce14 100644 --- a/bin/core/src/resource/stack.rs +++ b/bin/core/src/resource/stack.rs @@ -145,16 +145,18 @@ impl super::KomodoResource for Stack { }) .unwrap_or_default(); - let default_git = ( - stack.config.git_provider, - stack.config.repo, - stack.config.branch, - stack.config.git_https, - String::new(), - ); + let default_git = || { + ( + stack.config.git_provider, + stack.config.repo, + stack.config.branch, + stack.config.git_https, + String::new(), + ) + }; let (git_provider, repo, branch, git_https, linked_repo_name) = if stack.config.linked_repo.is_empty() { - default_git + default_git() } else { all_resources_cache() .load() @@ -169,7 +171,7 @@ impl super::KomodoResource for Stack { r.name.clone(), ) }) - .unwrap_or(default_git) + .unwrap_or_else(default_git) }; // This is only true if it is KNOWN to be true. so other cases are false. diff --git a/bin/core/src/startup.rs b/bin/core/src/startup.rs index 530bcd2fcb..a02e1d454f 100644 --- a/bin/core/src/startup.rs +++ b/bin/core/src/startup.rs @@ -109,14 +109,19 @@ pub async fn on_startup() { // Configure manual network interface if specified network::configure_internet_gateway().await; + // Run legacy database fixes + tokio::join!( + clean_up_server_templates(), + v2_init_missing_resource_info(), + ); + + // Standard startup tasks tokio::join!( in_progress_update_cleanup(), open_alert_cleanup(), action_api_key_cleanup(), ensure_first_server_and_builder(), ensure_init_user_and_resources(), - clean_up_server_templates(), - v2_init_missing_resource_info(), ); } diff --git a/bin/periphery/aio.Dockerfile b/bin/periphery/aio.Dockerfile index 0e045fa8da..1519ce41c1 100644 --- a/bin/periphery/aio.Dockerfile +++ b/bin/periphery/aio.Dockerfile @@ -1,7 +1,7 @@ ## All in one, multi stage compile + runtime Docker build for your architecture. -FROM rust:1.97.1-trixie AS builder -RUN cargo install cargo-strip +FROM rust:1.98.0-trixie AS builder +RUN cargo install cargo-strip cargo-edit WORKDIR /builder COPY Cargo.toml Cargo.lock ./ @@ -11,6 +11,11 @@ COPY ./client/periphery ./client/periphery COPY ./bin/periphery ./bin/periphery COPY ./xtask ./xtask +# Set Version +ARG VERSION="0.0.0" +ARG IMAGE_TAG="" +RUN cargo set-version -p komodo_periphery ${VERSION}${IMAGE_TAG:+-${IMAGE_TAG}} + # Compile app RUN cargo build -p komodo_periphery --release && cargo strip diff --git a/bin/periphery/src/api/build/mod.rs b/bin/periphery/src/api/build/mod.rs index 6bba92b612..46b8530f48 100644 --- a/bin/periphery/src/api/build/mod.rs +++ b/bin/periphery/src/api/build/mod.rs @@ -304,15 +304,36 @@ impl Resolve for build::Build { // Do this in fallible block to ensure // cancel token removed from cache on failure. let command = async { - // Add VERSION to build args (if not already there) let mut build_args = environment_vars_from_str(build_args) - .context("Invalid build_args")?; + .context("Invalid build_args")?; + + // Add IMAGE_NAME to build args + if !build_args.iter().any(|a| a.variable == "IMAGE_NAME") { + build_args.push(EnvironmentVar { + variable: String::from("IMAGE_NAME"), + value: if build.config.image_name.is_empty() { + build.name.clone() + } else { + build.config.image_name.clone() + }, + }); + } + // Maybe Add IMAGE_TAG to build args + if !build.config.image_tag.is_empty() + && !build_args.iter().any(|a| a.variable == "IMAGE_TAG") { + build_args.push(EnvironmentVar { + variable: String::from("IMAGE_TAG"), + value: build.config.image_tag.clone(), + }); + } + // Add VERSION to build args if !build_args.iter().any(|a| a.variable == "VERSION") { build_args.push(EnvironmentVar { variable: String::from("VERSION"), value: build.config.version.to_string(), }); } + let build_args = parse_build_args(&build_args); let secret_args = environment_vars_from_str(secret_args) diff --git a/bin/periphery/src/api/compose.rs b/bin/periphery/src/api/compose.rs index 15ae236052..091417a845 100644 --- a/bin/periphery/src/api/compose.rs +++ b/bin/periphery/src/api/compose.rs @@ -61,7 +61,7 @@ impl Resolve for GetComposeLog { run_komodo_standard_command( "Get Stack Log", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) @@ -101,7 +101,7 @@ impl Resolve for GetComposeLogSearch { run_komodo_shell_command( "Search Stack Log", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) diff --git a/bin/periphery/src/api/container/mod.rs b/bin/periphery/src/api/container/mod.rs index 893f192dd7..229c503d15 100644 --- a/bin/periphery/src/api/container/mod.rs +++ b/bin/periphery/src/api/container/mod.rs @@ -69,7 +69,7 @@ impl Resolve for GetContainerLog { run_komodo_standard_command( "Get container log", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) @@ -104,7 +104,7 @@ impl Resolve for GetContainerLogSearch { run_komodo_shell_command( "Get container log grep", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) diff --git a/bin/periphery/src/api/swarm/service.rs b/bin/periphery/src/api/swarm/service.rs index 151a6620a8..1f9f5d7766 100644 --- a/bin/periphery/src/api/swarm/service.rs +++ b/bin/periphery/src/api/swarm/service.rs @@ -90,7 +90,7 @@ impl Resolve for GetSwarmServiceLog { run_komodo_standard_command( "Get Swarm Service Log", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) @@ -141,7 +141,7 @@ impl Resolve for GetSwarmServiceLogSearch { run_komodo_shell_command( "Search Swarm Service Log", command, - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await, ) diff --git a/bin/periphery/src/docker/compose.rs b/bin/periphery/src/docker/compose.rs index 0c1be080d5..ecc326bee0 100644 --- a/bin/periphery/src/docker/compose.rs +++ b/bin/periphery/src/docker/compose.rs @@ -21,7 +21,7 @@ pub async fn list_compose_projects() let res = run_komodo_standard_command( "List Projects", format!("{docker_compose} ls --all --format json"), - CommandOptions::default().timeout(Duration::from_secs(1)), + CommandOptions::default().timeout(Duration::from_secs(5)), ) .await; diff --git a/bin/periphery/src/docker/config.rs b/bin/periphery/src/docker/config.rs index 5d3cf3e0ac..580659ef40 100644 --- a/bin/periphery/src/docker/config.rs +++ b/bin/periphery/src/docker/config.rs @@ -26,7 +26,7 @@ pub async fn list_swarm_configs( let res = run_komodo_standard_command( "List Swarm Configs", "docker config ls --format json", - CommandOptions::default().timeout(Duration::from_secs(1)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await; @@ -73,7 +73,7 @@ pub async fn inspect_swarm_config( // `--` so a name beginning with `-` is not parsed as a flag. // The quotes alone give no protection, as they are stripped when lexed. format!(r#"docker config inspect -- "{config}""#), - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await; diff --git a/bin/periphery/src/docker/stack.rs b/bin/periphery/src/docker/stack.rs index eb9775ef70..85b1b1862e 100644 --- a/bin/periphery/src/docker/stack.rs +++ b/bin/periphery/src/docker/stack.rs @@ -74,7 +74,7 @@ pub async fn list_swarm_stacks( let res = run_komodo_standard_command( "List Swarm Stacks", "docker stack ls --format json", - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await; @@ -133,7 +133,7 @@ pub async fn list_swarm_stack_service_ids( let res = run_komodo_standard_command( "List Swarm Stack Services", format!("docker stack services --format json -- {stack}"), - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await; @@ -163,7 +163,7 @@ pub async fn list_swarm_stack_tasks( let res = run_komodo_standard_command( "List Swarm Stack Tasks", format!("docker stack ps --format json --no-trunc -- {stack}"), - CommandOptions::default().timeout(Duration::from_secs(3)), + CommandOptions::default().timeout(Duration::from_secs(10)), ) .await; diff --git a/bin/periphery/src/docker/task.rs b/bin/periphery/src/docker/task.rs index e01d01cf27..a3bcacb329 100644 --- a/bin/periphery/src/docker/task.rs +++ b/bin/periphery/src/docker/task.rs @@ -1,6 +1,5 @@ use anyhow::Context; use bollard::query_parameters::ListTasksOptions; -use komodo_client::entities::docker::task::*; use super::*; diff --git a/client/core/rs/Cargo.toml b/client/core/rs/Cargo.toml index eb09895230..55f99082a1 100644 --- a/client/core/rs/Cargo.toml +++ b/client/core/rs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "komodo_client" description = "Client for the Komodo build and deployment system" -version.workspace = true +version = "2.3.3" edition.workspace = true license.workspace = true homepage.workspace = true diff --git a/client/core/ts/package.json b/client/core/ts/package.json index 35a5850f20..50e32a0db6 100644 --- a/client/core/ts/package.json +++ b/client/core/ts/package.json @@ -1,6 +1,6 @@ { "name": "komodo_client", - "version": "2.3.2", + "version": "2.3.3", "description": "Komodo client package", "homepage": "https://komo.do", "main": "dist/lib.js", diff --git a/example/alerter/Dockerfile b/example/alerter/Dockerfile index 20e51f0e0a..14d2b5ad51 100644 --- a/example/alerter/Dockerfile +++ b/example/alerter/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.97.1-trixie as builder +FROM rust:1.98.0-trixie as builder WORKDIR /builder COPY . . diff --git a/example/update_logger/Dockerfile b/example/update_logger/Dockerfile index 26533c8bb9..546fd46133 100644 --- a/example/update_logger/Dockerfile +++ b/example/update_logger/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.97.1-trixie as builder +FROM rust:1.98.0-trixie as builder WORKDIR /builder COPY . . diff --git a/lib/git/src/installed.rs b/lib/git/src/installed.rs index 6b3af67003..2e796f60ad 100644 --- a/lib/git/src/installed.rs +++ b/lib/git/src/installed.rs @@ -7,7 +7,7 @@ use command::{CommandOptions, run_standard_command}; pub async fn check_installed() -> anyhow::Result<()> { if run_standard_command( "which git", - CommandOptions::default().timeout(Duration::from_secs(1)), + CommandOptions::default().timeout(Duration::from_secs(2)), ) .await .success() diff --git a/lib/git/src/lib.rs b/lib/git/src/lib.rs index fbf19398cb..8d353eb2bd 100644 --- a/lib/git/src/lib.rs +++ b/lib/git/src/lib.rs @@ -31,7 +31,7 @@ pub async fn get_commit_hash_info( "git rev-parse --short HEAD", CommandOptions::default() .path(repo_dir) - .timeout(Duration::from_secs(1)), + .timeout(Duration::from_secs(2)), ) .await; let hash = if hash.status.success() { @@ -46,7 +46,7 @@ pub async fn get_commit_hash_info( "git log -1 --pretty=%B", CommandOptions::default() .path(repo_dir) - .timeout(Duration::from_secs(1)), + .timeout(Duration::from_secs(2)), ) .await; let message = if message.status.success() { @@ -93,7 +93,7 @@ pub async fn get_remote_url(path: &Path) -> anyhow::Result { "git remote show origin", CommandOptions::default() .path(path) - .timeout(Duration::from_secs(1)), + .timeout(Duration::from_secs(2)), ) .await; if output.success() { diff --git a/ui/package.json b/ui/package.json index ea866c82ad..9bbf6dc1e9 100644 --- a/ui/package.json +++ b/ui/package.json @@ -10,23 +10,23 @@ "build-client": "cd ../client/core/ts && yarn && yarn build && yarn link" }, "dependencies": { - "@mantine/core": "^9.5.1", - "@mantine/form": "^9.5.1", - "@mantine/hooks": "^9.5.1", - "@mantine/notifications": "^9.5.1", - "@mantine/spotlight": "^9.5.1", + "@mantine/core": "^9.5.2", + "@mantine/form": "^9.5.2", + "@mantine/hooks": "^9.5.2", + "@mantine/notifications": "^9.5.2", + "@mantine/spotlight": "^9.5.2", "@monaco-editor/react": "^4.7.0", - "@tanstack/react-query": "^5.101.4", + "@tanstack/react-query": "^5.102.4", "@tanstack/react-table": "^9.1.2", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "ansi-to-html": "^0.7.2", - "jotai": "^2.20.2", + "jotai": "^2.20.3", "jotai-family": "^1.1.0", "jotai-location": "^0.6.2", - "lucide-react": "^1.31.0", + "lucide-react": "^1.34.0", "mogh_auth_client": "^1.7.1", - "mogh_ui": "^1.1.1", + "mogh_ui": "^1.2.7", "monaco-editor": "^0.56.0", "monaco-yaml": "^5.5.1", "react": "^19.2.8", @@ -35,23 +35,23 @@ "react-router-dom": "^7.18.2", "react-xtermjs": "^1.0.12", "recharts": "^3.10.1", - "sanitize-html": "^2.17.6", + "sanitize-html": "^2.17.7", "shell-quote": "^1.10.0" }, "devDependencies": { - "@types/node": "^26.2.0", + "@types/node": "^26.3.0", "@types/react": "^19.2.18", - "@types/react-dom": "^19.2.4", + "@types/react-dom": "^19.2.5", "@types/sanitize-html": "^2.16.1", "@types/shell-quote": "^1.7.5", - "@vitejs/plugin-react": "^6.0.5", + "@vitejs/plugin-react": "^6.1.0", "dotenv": "^17.4.2", "postcss": "^8.5.26", "postcss-preset-mantine": "^1.18.0", "postcss-simple-vars": "^7.0.1", - "sass-embedded": "^1.100.0", + "sass-embedded": "^1.103.1", "typescript": "^7.0.2", - "vite": "^8.2.1" + "vite": "^8.2.2" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/ui/src/components/list-pagination.tsx b/ui/src/components/list-pagination.tsx index 3fb815fc06..1ecbf5c37a 100644 --- a/ui/src/components/list-pagination.tsx +++ b/ui/src/components/list-pagination.tsx @@ -1,5 +1,8 @@ import { useRead } from "@/lib/hooks"; -import { Group, Pagination } from "@mantine/core"; +import { + ListPaginationProps, + ListPagination as MoghListPagination, +} from "mogh_ui"; /** * The server side default page size on `List` calls, @@ -18,29 +21,9 @@ export function usePageSize() { * Only renders when needed, ie the results fill the page * or the user is past the first page. */ -export default function ListPagination({ - page, - setPage, - count, -}: { - page: number; - setPage: (page: number) => void; - count: number; -}) { +export default function ListPagination( + props: Omit, +) { const pageSize = usePageSize(); - if (count < pageSize && page === 0) return null; - return ( - = pageSize ? page + 2 : page + 1} - value={page + 1} - onChange={(page) => setPage(page - 1)} - > - - - - - - - - ); + return ; } diff --git a/ui/src/lib/utils.ts b/ui/src/lib/utils.ts index fd8e1fb2d9..891dee9bca 100644 --- a/ui/src/lib/utils.ts +++ b/ui/src/lib/utils.ts @@ -3,6 +3,7 @@ import { Types } from "komodo_client"; import sanitizeHtml from "sanitize-html"; import ConvertAnsiToHtml from "ansi-to-html"; import { RowSelectionState } from "@tanstack/react-table"; +import { Crumb } from "mogh_ui"; export const EXECUTION_ACTION_STATE_REQUERY_MS = 500; @@ -320,3 +321,9 @@ export function parseVersion(version: string): Types.Version { patch, }; } + +/** Crumb linking to the list page for a resource type, eg. `Servers` -> /servers */ +export function resourceTypeCrumb(type: UsableResource): Crumb { + const name = type === "ResourceSync" ? "Resource Sync" : type; + return { label: `${name}s`, to: `/${usableResourcePath(type)}` }; +} diff --git a/ui/src/main.tsx b/ui/src/main.tsx index 2b5a3f6744..689d842958 100644 --- a/ui/src/main.tsx +++ b/ui/src/main.tsx @@ -21,7 +21,7 @@ import "mogh_ui/index.scss"; import("@/monaco").then(({ default: initMonaco }) => initMonaco()); export const KOMODO_BASE_URL = - import.meta.env.VITE_KOMODO_HOST ?? location.origin; + import.meta.env.VITE_KOMODO_HOST || location.origin; export const UPDATE_WS_URL = KOMODO_BASE_URL.replace("http", "ws") + "/ws/update"; const client = new QueryClient({ diff --git a/ui/src/pages/resource.tsx b/ui/src/pages/resource.tsx index ef77e51d01..38ed269a82 100644 --- a/ui/src/pages/resource.tsx +++ b/ui/src/pages/resource.tsx @@ -14,13 +14,12 @@ import { UsableResource, } from "@/resources"; import { AddResourceTags, ResourceTags } from "@/resources/tags"; -import { DividedChildren } from "mogh_ui"; -import { Section } from "mogh_ui"; +import { DividedChildren, EntityPage } from "mogh_ui"; +import { Section, PageBreadcrumbs } from "mogh_ui"; import { Group, Stack, Text } from "@mantine/core"; import { Types } from "komodo_client"; import { Link, useParams } from "react-router-dom"; -import { EntityPage } from "mogh_ui"; -import { usableResourcePath } from "@/lib/utils"; +import { resourceTypeCrumb, usableResourcePath } from "@/lib/utils"; import ResourceDescription from "@/resources/description"; import ResourceNotFound from "@/resources/not-found"; import NewResource from "@/resources/new"; @@ -67,6 +66,17 @@ function ResourceInner({ type, id }: { type: UsableResource; id: string }) { ? "settings" : usableResourcePath(type)) } + breadcrumbs={ + + } actions={ <> {canCreate && } diff --git a/ui/src/pages/user-group/index.tsx b/ui/src/pages/user-group/index.tsx index a4f33465e4..1e17f6a265 100644 --- a/ui/src/pages/user-group/index.tsx +++ b/ui/src/pages/user-group/index.tsx @@ -1,11 +1,14 @@ import UserTable from "@/components/user/table"; import { useInvalidate, useRead, useUser, useWrite } from "@/lib/hooks"; import { ICONS } from "@/lib/icons"; -import { DividedChildren } from "mogh_ui"; -import { EntityHeader } from "mogh_ui"; -import { EntityPage } from "mogh_ui"; -import { PageGuard } from "mogh_ui"; -import { Section } from "mogh_ui"; +import { + DividedChildren, + EntityHeader, + EntityPage, + PageBreadcrumbs, + PageGuard, + Section, +} from "mogh_ui"; import { Group, Stack, Text } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { useParams } from "react-router-dom"; @@ -66,7 +69,17 @@ export default function UserGroup() { : undefined } > - + + } + > - + + } + > {user?._id?.$oid !== adminUser?._id?.$oid && (!user?.admin || (!user.super_admin && adminUser?.super_admin)) && ( -
+
@@ -56,6 +58,20 @@ export default function ResourceSubPage({ backTo={ pageProps?.backTo ?? `/${usableResourcePath(parentType)}/${parentId}` } + breadcrumbs={ + pageProps?.breadcrumbs ?? ( + + ) + } > {Header} diff --git a/ui/vite.config.ts b/ui/vite.config.ts index e2cfb73cb6..92b900d7f9 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -46,7 +46,45 @@ export default defineConfig({ // scanner doesn't traverse `?worker` graphs, so without this it gets // served raw ("module is not defined" inside the worker). Force it // through prebundling to get CJS -> ESM interop. - include: ["path-browserify"], + // @mantine/form and @tanstack/react-table are runtime-imported only via + // the excluded (linked) mogh_ui — app src imports of react-table are + // type-only, which the scanner erases — so they get served raw and their + // nested CJS deps (fast-deep-equal, use-sync-external-store) break with + // "does not provide an export named ...". Prebundling the packages + // inlines those CJS deps with proper interop. + include: ["path-browserify", "@mantine/form", "@tanstack/react-table"], + }, + build: { + // The only chunks above the default 500 kB warning limit are + // monaco-editor's core (~2.7 MB) and prettier's typescript parser + // (~900 kB). Both are already async — mogh_ui lazy-loads the editor + // implementation, so they only download when an editor mounts — and + // neither can be split further (each is one static import graph). + // Raise the limit above them so the warning still catches an eager + // chunk regression instead of firing on every build. + chunkSizeWarningLimit: 2800, + rolldownOptions: { + output: { + // Split stable vendor code out of the main chunk so app-code + // changes don't invalidate the browser cache for react/mantine. + codeSplitting: { + groups: [ + { + name: "react", + test: /node_modules[\\/](react|react-dom|scheduler|react-router)[\\/]/, + }, + { + name: "mantine", + test: /node_modules[\\/](@mantine|@floating-ui|react-transition-group|react-remove-scroll)[\\/]/, + }, + { + name: "tanstack", + test: /node_modules[\\/]@tanstack[\\/]/, + }, + ], + }, + }, + }, }, css: { preprocessorOptions: { diff --git a/ui/yarn.lock b/ui/yarn.lock index d0a0ab5be1..cbffc7d23e 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -48,10 +48,10 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== -"@mantine/core@^9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/core/-/core-9.5.1.tgz#954587a496244accf0b7d388f15b8e42dbcecfa2" - integrity sha512-3olDOYJBfW4kR37Aqdy/+FnYG7iNb5SPzOGeCp9dDxnt65K94sEqETDnXGJptOMO2xLm4KLJ/eBt3IIhJA7Z4Q== +"@mantine/core@^9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-9.5.2.tgz#36baf9017388e1d522a2624edf051d0c9dfe00d3" + integrity sha512-yhnR+XVGmy7S66abvj/tF9SxzNJ+k60w+UZlC/vGOztrU2Cxpbr95gtrBrin4fpWyiE80qzVC2AY0WzaHPufWw== dependencies: "@floating-ui/react" "^0.27.19" clsx "^2.1.1" @@ -59,39 +59,39 @@ react-remove-scroll "^2.7.2" type-fest "^5.8.0" -"@mantine/form@^9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/form/-/form-9.5.1.tgz#bfab7ec8a09c0e77ca3eebf84c68e15a2bab25d7" - integrity sha512-WsMZGBTsoG2Y/K+6QK0+GmsJxq5KzWHIzo65lRpkq/SwdenV9G+3m0LstlhI9i2/wQF83GfwP7mCbKMfzf00Eg== +"@mantine/form@^9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/form/-/form-9.5.2.tgz#78d234f14d58d84d1c4cd405dcbcbcfb8f29148d" + integrity sha512-9zWyAvEIn5QGfDa7Mxf+iCeEnUHtIam2avY8Csx6PsHqWmRSl9eYfQFrofv6FcR6eAbVUzQHzL/gpqZ3BzPt9g== dependencies: "@standard-schema/spec" "^1.1.0" fast-deep-equal "^3.1.3" klona "^2.0.6" -"@mantine/hooks@^9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-9.5.1.tgz#54b94e76ca957636d54cf764037408485a65a899" - integrity sha512-2sK9OdWvrzKBOuWxLfQA5qcAJzxpzqNlKumaP7Uq0i7LDBQeY/sYgNiBWLwtW+iZw6fFXwPf0nI7q5VVpvqnNQ== +"@mantine/hooks@^9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-9.5.2.tgz#f8bb6dffcc62cf2adad8a01056f8d66ceb687f36" + integrity sha512-CsANdaF07VRhcvDCupIvAPtIqU1NxYSc+bhFCCasDHpgJOUQxmqeMOGCCGSjtOOEIs+E+pt2ZbbdfnygDYPybA== -"@mantine/notifications@^9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-9.5.1.tgz#2a09c8027ec06365213869fadb3057d85df17e82" - integrity sha512-/MIGWag8U20HTM4gOGSNVhmQ0n6YM2gdSR1NbtBffSh77nuzwPjr68UmpMc2WHFMi8OBlrSIcw9Xpe3YPfgnvQ== +"@mantine/notifications@^9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-9.5.2.tgz#cdd0daa8fcf9da751e0c7990fa694ee91bd305f4" + integrity sha512-2DQW2i6BlTGI7Vqp1a8IN03Q2CI/nMd7joJu7RGMTDhnnD0rhAhQtu/NwGdmq5gl4vFCpzzwHtH359Do2MlRGg== dependencies: - "@mantine/store" "9.5.1" + "@mantine/store" "9.5.2" react-transition-group "4.4.5" -"@mantine/spotlight@^9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-9.5.1.tgz#8474b951aca217c026e109a82e768ff95c3bb758" - integrity sha512-fXiaFrlIjhoFh61IbM+tRP7mg1V20mSTVh2AJi4rm/BnoBvnd4fPw33Wdg+O3c5L9HGzPQdA9SHJ6rdDNueoRw== +"@mantine/spotlight@^9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-9.5.2.tgz#499ba5c035f2eee0fa414fb78ad0a3689b5062d4" + integrity sha512-+YrHe0pqGrx+sTZKSV9v2K/OMyBow4u1Id5zI4jevTGlENKFqsKPn94CIx6Ryn48ODFzJyiiAAXYmvRT4Sw3xA== dependencies: - "@mantine/store" "9.5.1" + "@mantine/store" "9.5.2" -"@mantine/store@9.5.1": - version "9.5.1" - resolved "https://registry.yarnpkg.com/@mantine/store/-/store-9.5.1.tgz#873cf6350998ffb8cc96e97f32689def7a69f539" - integrity sha512-nDmA9S+qnQQ61KYgph06Wt2cx1tj3Z6eeyK3HvFeuLb5FcGycbITsVy/+3LltH2qdqkpNeAA9wQ926NFjn5hvA== +"@mantine/store@9.5.2": + version "9.5.2" + resolved "https://registry.yarnpkg.com/@mantine/store/-/store-9.5.2.tgz#cf25c09ed51116b9cc8650fdd279a8e7816056f7" + integrity sha512-vpOS9QwqaJ1KOPr8MdQXYXFDIPkDg1KCr5O8FOGVZIGfsei1vvQsvvmMGGEKGmEE/4FCYwEfhCUWaAVw2psVzw== "@monaco-editor/loader@^1.5.0": version "1.7.0" @@ -107,10 +107,10 @@ dependencies: "@monaco-editor/loader" "^1.5.0" -"@oxc-project/types@=0.143.0": - version "0.143.0" - resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.143.0.tgz#c3e4f3178b7b54e4dd194eac6d45258a60f0092b" - integrity sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA== +"@oxc-project/types@=0.146.0": + version "0.146.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.146.0.tgz#d57a2591abbf1f6e50981b07ee24ab269530d87a" + integrity sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA== "@parcel/watcher-android-arm64@2.5.6": version "2.5.6" @@ -213,75 +213,80 @@ redux-thunk "^3.1.0" reselect "^5.1.0" -"@rolldown/binding-android-arm64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz#001b8b0b01844701efda1bb6bed84b681c4a488b" - integrity sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw== - -"@rolldown/binding-darwin-arm64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz#5e87c602ed634a6fef092e2162e24fbfb881c4ec" - integrity sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA== - -"@rolldown/binding-darwin-x64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz#f32e0b286714bd03a421d693415d05d97d265b77" - integrity sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA== - -"@rolldown/binding-freebsd-x64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz#5f38ad5761b6b7b21b57a99566bb52634c60ab19" - integrity sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg== - -"@rolldown/binding-linux-arm-gnueabihf@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz#ab4dcd07f1bd88e8d659ae0c3bb9d2f290adb897" - integrity sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw== - -"@rolldown/binding-linux-arm64-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz#d279b7016039a725fb66d82784b9841f42df83da" - integrity sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw== - -"@rolldown/binding-linux-arm64-musl@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz#d08bbc93d2742214548c5adf7df7788944e5a89a" - integrity sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q== - -"@rolldown/binding-linux-ppc64-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz#6418e63745b3193f26ab3bb88744b3a4a1356d7c" - integrity sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w== - -"@rolldown/binding-linux-s390x-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz#77ec30d0704cf4eb1cb4a63f501c9852c6728cf4" - integrity sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg== - -"@rolldown/binding-linux-x64-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz#3b9b6e0dd3e86c597f42858748ca25f1dfd58ed8" - integrity sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w== - -"@rolldown/binding-linux-x64-musl@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz#f78033c592c8bd2af48284a45f8e4baaa0befbf5" - integrity sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A== - -"@rolldown/binding-openharmony-arm64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz#36e951f5a6fca922a5205e283d0a82b9f98199ca" - integrity sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug== - -"@rolldown/binding-win32-arm64-msvc@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz#c1e494ac47e13bd857fca0b3ad59c33580241f7e" - integrity sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw== - -"@rolldown/binding-win32-x64-msvc@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz#b0effffcd6872f8a021373eb437916b1b52283a4" - integrity sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg== +"@rolldown/binding-android-arm-eabi@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.5.tgz#165b80910de7cd33f772d5b7b045b259acb7420c" + integrity sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA== + +"@rolldown/binding-android-arm64@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.5.tgz#5ed74d4b8fa56c68eb1aeb81d0d207a85b6de05c" + integrity sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig== + +"@rolldown/binding-darwin-arm64@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.5.tgz#6f27c7060e58ca03061fa7d50f9dc409bc377fe1" + integrity sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww== + +"@rolldown/binding-darwin-x64@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.5.tgz#74ab897d134ede4072fdc6108f00193e6167ee28" + integrity sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A== + +"@rolldown/binding-freebsd-x64@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.5.tgz#7d337f9ae4b739674e1938747118ab0676c8ef8a" + integrity sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw== + +"@rolldown/binding-linux-arm-gnueabihf@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.5.tgz#a8195dc1091ade0f912b0613ef6500941e5615f4" + integrity sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg== + +"@rolldown/binding-linux-arm64-gnu@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.5.tgz#40fbbb97072b1acaa3e0e8fe9774fe524e860bba" + integrity sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA== + +"@rolldown/binding-linux-arm64-musl@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.5.tgz#3cfe8b0f7c13de29dace9a9fc6c03081164176ab" + integrity sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA== + +"@rolldown/binding-linux-ppc64-gnu@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.5.tgz#3bd890d96ae29f93718aa142ed0982f2ee2978ad" + integrity sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA== + +"@rolldown/binding-linux-s390x-gnu@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.5.tgz#0959a0d5af22741d5787918e27aef70dc8602804" + integrity sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ== + +"@rolldown/binding-linux-x64-gnu@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.5.tgz#7baa94e826328ac6f457d9e1abacffa0353e8d22" + integrity sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ== + +"@rolldown/binding-linux-x64-musl@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.5.tgz#5f37597eaf0e22313d1e3d4be7d1be1fd332904e" + integrity sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA== + +"@rolldown/binding-openharmony-arm64@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.5.tgz#d096567af3f738cbe6aa858ab0a01aae9f357ef4" + integrity sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw== + +"@rolldown/binding-win32-arm64-msvc@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.5.tgz#d53b911aa4e6b547b789c07747fabab2ac8c237d" + integrity sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw== + +"@rolldown/binding-win32-x64-msvc@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.5.tgz#7bbd08cfda6a98de9b756472c772a36ebb7229bc" + integrity sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw== "@rolldown/pluginutils@^1.0.0", "@rolldown/pluginutils@^1.0.1": version "1.0.1" @@ -298,17 +303,17 @@ resolved "https://registry.yarnpkg.com/@standard-schema/utils/-/utils-0.3.0.tgz#3d5e608f16c2390c10528e98e59aef6bf73cae7b" integrity sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g== -"@tanstack/query-core@5.101.4": - version "5.101.4" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.101.4.tgz#c01b4289b3094144d8ef96235aa506242cf83efa" - integrity sha512-gNwcvOJcRbLWPOLG/2OBm+zM+Yv+MKsXKEOWC57USuZDEsI71hEErQsiEGx5wX9rzWWkfwM0fVSPoiIFSsxfiw== +"@tanstack/query-core@5.102.4": + version "5.102.4" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.102.4.tgz#05fea44fdc900438210a432dd77a3893e26bb4cf" + integrity sha512-6eXkL+KFyVAZdpKoThCjPQQylZK8/ZOMYTJEVoPtHLkLs2PYks6vUiim9qzgvFXakSkRIAZwAZTeZLIJmpgRpQ== -"@tanstack/react-query@^5.101.4": - version "5.101.4" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.101.4.tgz#044137754d79aaa30a82f6e6c42488be79c86ea7" - integrity sha512-yRg2pfOCxIs4ZJW3XYYHU/WgtD04FHSnfHlpRT7h7pR77hwkdRG4wxbKe4aq6P0RvXUTBSQpQeadS1SUYUe+KA== +"@tanstack/react-query@^5.102.4": + version "5.102.4" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.102.4.tgz#1cece9f2f06e8a34e33a5147e625fd54a02c07e4" + integrity sha512-Cn6X2eqFHjCtA/sfM/3eiT6/YmcPqo30twNHUlqkfz9LBqRzdt8GN/mFMWXn/qTacYUo3d4nycMzn3LWZmJ7MQ== dependencies: - "@tanstack/query-core" "5.101.4" + "@tanstack/query-core" "5.102.4" "@tanstack/react-store@^0.11.0": version "0.11.1" @@ -389,17 +394,17 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== -"@types/node@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.2.0.tgz#5a4875a862fda8fdc57de8faa579bb81ecba1685" - integrity sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg== +"@types/node@^26.3.0": + version "26.3.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.3.0.tgz#757c33b17fe06db5a356582e9658603a1bd80caf" + integrity sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw== dependencies: undici-types "~8.3.0" -"@types/react-dom@^19.2.4": - version "19.2.4" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.4.tgz#165ab5e97dfb081847b0f6755060cf40a3f6666b" - integrity sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw== +"@types/react-dom@^19.2.5": + version "19.2.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.5.tgz#d4ecf8d704cab59901d3fbb0975b6f855306595f" + integrity sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg== "@types/react@^19.2.18": version "19.2.18" @@ -530,10 +535,10 @@ resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz#cf3b7b0d6ce5635daca4c8e01c189cdcde47ec3c" integrity sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g== -"@vitejs/plugin-react@^6.0.5": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz#48ee7951093ff9054952cff9d64e874355cde372" - integrity sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA== +"@vitejs/plugin-react@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.1.0.tgz#a3d7a3b998c618385d076e390b74398c3d8c65bc" + integrity sha512-qd2BzUBehkov86WFhg0JkEFEYyCLG9uPCe6qWTY/kRlss9OvJrOF2UbIWT7p+8IzZHkEu0DNGHc4HSv+JdDLsw== dependencies: "@rolldown/pluginutils" "^1.0.1" @@ -576,10 +581,10 @@ clsx@^2.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== -colorjs.io@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef" - integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== +colorjs.io@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.7.1.tgz#311b356a325c2c835c5aed17f298b238d7d9a5a1" + integrity sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA== cookie@^1.0.1: version "1.1.1" @@ -899,10 +904,10 @@ jotai-location@^0.6.2: resolved "https://registry.yarnpkg.com/jotai-location/-/jotai-location-0.6.2.tgz#7f90ec768d9aca62ce7d509baa771848225edb39" integrity sha512-D+fqGNNgPHpehOsGBsYsS7F3kNgml099MJrGYt8YlLumcnoTVrBdcO+Y11KyMlyzwPihEN0HPUgke9Iihz9OXw== -jotai@^2.20.2: - version "2.20.2" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.2.tgz#fccdc02ee68b314c2a723a8b9c35de6fcca5e644" - integrity sha512-aHB4CNb9qRcyf0mwSB6EO5bCGAjx8cTwFgOFCE2leOnTzqACbnSWG8XoWB3LxCT1Qoj03I1OWAHszDmN4uHb/w== +jotai@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.3.tgz#862ce7289f07ae1991dca9cba93bff94f8c35285" + integrity sha512-N8L9FUbeGDP+0qNJw1FebOxt+5hk+jTOwUA2LlRE4C081jUcY6F1T/FSETp4DT2/INMtiSRZyNm2D+yZdzrSgA== "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" @@ -1012,10 +1017,10 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lucide-react@^1.31.0: - version "1.31.0" - resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.31.0.tgz#1e758f3f86bc0456957d447e6e550b645d96e255" - integrity sha512-G8u2eEtoHUnUa9f8lbvqDhCiORMnYLdUEo06EEG9MQvHQrInKcX3Pa2TH39MM5qyzRcWETxB0+aOwAPI1g1kEg== +lucide-react@^1.34.0: + version "1.34.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.34.0.tgz#12155b6f950d63b57e29d7ce592e65c116ea95aa" + integrity sha512-vnjGJNI7Htk5+oWW8gXGuaLgwgAb0T6/iZbBrp9JCfRFwdNWZ0YTm3eyxjOLgwN6r8iyAf3UA70zNmBRBNv7yg== marked@14.0.0: version "14.0.0" @@ -1029,10 +1034,10 @@ mogh_auth_client@^1.7.1: dependencies: jwt-decode "^4.0.0" -mogh_ui@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/mogh_ui/-/mogh_ui-1.1.1.tgz#762623631587474e5532648b4d35c0cbe4bf3bfd" - integrity sha512-hxVg9cuuRTm9e9UEBB9fNPi/NARa5h/pSl+FvPM9mzNfDIsimQ6YWg1g7lNfkd/EdKg9W9UX+9Ud3HactLLxFA== +mogh_ui@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/mogh_ui/-/mogh_ui-1.2.7.tgz#17a3994a928cbfc8baf79031b2bcd7121fd1d29a" + integrity sha512-kQZuStgvzx2Qpis/fF0lHIa5ptlHIzrxjL1suajqcjxIcHCeLCeIeRvExeo0/vQECYbx+PEU6UboACOSlIzIow== monaco-editor@^0.56.0: version "0.56.0" @@ -1191,7 +1196,7 @@ postcss@^8.3.11: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.5.25, postcss@^8.5.26: +postcss@^8.5.26: version "8.5.26" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.26.tgz#6e75135780c7e10df3433bf2266c552d35c8c620" integrity sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ== @@ -1355,28 +1360,29 @@ reselect@^5.1.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== -rolldown@~1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.2.3.tgz#103bdcbbd575d51265277b8b510f080827b6eb6f" - integrity sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A== +rolldown@~1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.2.5.tgz#1f504a7d05260a769e617d950410bbb051498c50" + integrity sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA== dependencies: - "@oxc-project/types" "=0.143.0" + "@oxc-project/types" "=0.146.0" "@rolldown/pluginutils" "^1.0.0" optionalDependencies: - "@rolldown/binding-android-arm64" "1.2.3" - "@rolldown/binding-darwin-arm64" "1.2.3" - "@rolldown/binding-darwin-x64" "1.2.3" - "@rolldown/binding-freebsd-x64" "1.2.3" - "@rolldown/binding-linux-arm-gnueabihf" "1.2.3" - "@rolldown/binding-linux-arm64-gnu" "1.2.3" - "@rolldown/binding-linux-arm64-musl" "1.2.3" - "@rolldown/binding-linux-ppc64-gnu" "1.2.3" - "@rolldown/binding-linux-s390x-gnu" "1.2.3" - "@rolldown/binding-linux-x64-gnu" "1.2.3" - "@rolldown/binding-linux-x64-musl" "1.2.3" - "@rolldown/binding-openharmony-arm64" "1.2.3" - "@rolldown/binding-win32-arm64-msvc" "1.2.3" - "@rolldown/binding-win32-x64-msvc" "1.2.3" + "@rolldown/binding-android-arm-eabi" "1.2.5" + "@rolldown/binding-android-arm64" "1.2.5" + "@rolldown/binding-darwin-arm64" "1.2.5" + "@rolldown/binding-darwin-x64" "1.2.5" + "@rolldown/binding-freebsd-x64" "1.2.5" + "@rolldown/binding-linux-arm-gnueabihf" "1.2.5" + "@rolldown/binding-linux-arm64-gnu" "1.2.5" + "@rolldown/binding-linux-arm64-musl" "1.2.5" + "@rolldown/binding-linux-ppc64-gnu" "1.2.5" + "@rolldown/binding-linux-s390x-gnu" "1.2.5" + "@rolldown/binding-linux-x64-gnu" "1.2.5" + "@rolldown/binding-linux-x64-musl" "1.2.5" + "@rolldown/binding-openharmony-arm64" "1.2.5" + "@rolldown/binding-win32-arm64-msvc" "1.2.5" + "@rolldown/binding-win32-x64-msvc" "1.2.5" rxjs@^7.4.0: version "7.8.2" @@ -1385,10 +1391,10 @@ rxjs@^7.4.0: dependencies: tslib "^2.1.0" -sanitize-html@^2.17.6: - version "2.17.6" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.6.tgz#c62a2e2e55d03004f3e0ecd6dbb9126d4b985d82" - integrity sha512-M4bo9tfv1yfhQZZKkc6dL07ALrGJtfvNOuhX3hU9AVPR/uPQ+nKOJBqTYc7LfMQblTW04mtSWDJWEyLvygJsLA== +sanitize-html@^2.17.7: + version "2.17.7" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.7.tgz#b16417c348ea5f99c2451964b6e6621ca6b1da94" + integrity sha512-PGtEkc9cbnedU3s9TmzDbpsZ8w086g/0Q8k8/oIO1NLNU3i5k9yn835CrjJSajp1KMmkisbO1qPXxNKO3welAg== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" @@ -1398,136 +1404,136 @@ sanitize-html@^2.17.6: parse-srcset "^1.0.2" postcss "^8.3.11" -sass-embedded-all-unknown@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.100.0.tgz#efee7111ec5e2d6c34a2f57d090e6416c01890ff" - integrity sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q== - dependencies: - sass "1.100.0" - -sass-embedded-android-arm64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.100.0.tgz#0a4456a751f76a378ac9f3516a034f56eca9b171" - integrity sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA== - -sass-embedded-android-arm@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.100.0.tgz#7de61d65cfa997c58df426a8b20a096a60497313" - integrity sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw== - -sass-embedded-android-riscv64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.100.0.tgz#cc6721c1526ef5b10d9da02f1e44e7dbaffc11e0" - integrity sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg== - -sass-embedded-android-x64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.100.0.tgz#dc38f6c633f8bf61b470ac00452ebb50e36f421f" - integrity sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA== - -sass-embedded-darwin-arm64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.100.0.tgz#7773c0586e78caab599d53370626c28ca08110eb" - integrity sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA== - -sass-embedded-darwin-x64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.100.0.tgz#91066f64875b87eba0cb699ba8254b4863d33901" - integrity sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg== - -sass-embedded-linux-arm64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.100.0.tgz#88d2f51a0882f399c327a1d6cd06757d13de4f82" - integrity sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ== - -sass-embedded-linux-arm@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.100.0.tgz#9721dca177348c1448847ceee1d031a692df0771" - integrity sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw== - -sass-embedded-linux-musl-arm64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.100.0.tgz#63a1e0618a2a3acf10bab915585c4dc495327581" - integrity sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg== - -sass-embedded-linux-musl-arm@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.100.0.tgz#44f9472ae663411de82b7792a918e162c7bcbc02" - integrity sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw== - -sass-embedded-linux-musl-riscv64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.100.0.tgz#21954e480cfb55d4ba8167626cde1cc8560d7eee" - integrity sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ== - -sass-embedded-linux-musl-x64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.100.0.tgz#a6c93d51999a8b22795d383b67e61962d32c96cd" - integrity sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA== - -sass-embedded-linux-riscv64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.100.0.tgz#01f20471a1be16d18e150993e5ac771d618abd34" - integrity sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ== - -sass-embedded-linux-x64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.100.0.tgz#809649a0df17f7afb1dfd02e76dbf0676dd8471e" - integrity sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA== - -sass-embedded-unknown-all@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.100.0.tgz#fdc210a25a06e9d79655a02c1c77d656fa6f2ca0" - integrity sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A== - dependencies: - sass "1.100.0" - -sass-embedded-win32-arm64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.100.0.tgz#fd8cec45b41390c3db40d13c4d291be7f35b6b0b" - integrity sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg== - -sass-embedded-win32-x64@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.100.0.tgz#a758862b1455d6616be301b363e7e1c93e6361b7" - integrity sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw== - -sass-embedded@^1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.100.0.tgz#fe4742f2f80c21b287e3b90399b9a3f7ca1dcf6f" - integrity sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw== +sass-embedded-all-unknown@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.103.1.tgz#a898f9af761f6619c6f7cf7ba6040cbfc3dd6ab4" + integrity sha512-MwX2ap06TbImAqlbnH6EndgBBejk6Eq2QB6Ae2hukCn9wmXf9cRu27um3mz3tyB4oJOOku0xfHqFH/+ckYj6YA== + dependencies: + sass "1.103.1" + +sass-embedded-android-arm64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.103.1.tgz#f57e5adf9a1fc97e51ac1268a6c6fc19481b5cac" + integrity sha512-jBXWMksyz55XeLOWvQs64BqiG5DcqflmMxcvMoA2oHtQT/7XZ02hBn502qpcF/q8Qd+qqG/hU5ccM+hGXrbQZw== + +sass-embedded-android-arm@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.103.1.tgz#e675976d0e963d87a85d643ca325e736cde2ed80" + integrity sha512-p36WHpsu5HEo2+NVNbI2Nmb8VgVH0xwOQyzghvZhF7ikGCzEVYI5BP28vHUZlCcgj2TUvMEJKI2lV336a+F/sg== + +sass-embedded-android-riscv64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.103.1.tgz#09ae1946aac97032dc91e2faa27d1b496b56836e" + integrity sha512-rzrH7RNntk0rx+zCE9xOiAIUt37D1cQKvFfcoX0xiePdGbNHBN8DWKaWN9vaCRfbgKCmxPjevzaqFNI/G/8E1A== + +sass-embedded-android-x64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.103.1.tgz#bf2feddef3459e549cb437d0d052a940a8d32273" + integrity sha512-EQglAJXJutuIcqgZf7YOwzao2ND6ow/OgqN+cM48/Qaeb6AimYmZiUJmM9FFcmS3Q2n1k6/2OU3l3Hlin7bFpw== + +sass-embedded-darwin-arm64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.103.1.tgz#be130b070ea07ec1ee64e4b2d8b4659f7c2fe668" + integrity sha512-rlaBeCul8pLbDRKdBAxdDxSBwFU5fbX42ci6CxW2Vbs34jWTMQ72+nE2v2KkGGce+JnYbb7UV6xDP/4uDWWi+w== + +sass-embedded-darwin-x64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.103.1.tgz#82b074bb1b6b975c7fbc0e8fbf32570df1e497d3" + integrity sha512-VSKFfhI//AOct6ppFmAaSH7tlW2LOFECMGs77jIoWf0ZjvGch/3sc9lUTTdIaYIOnTS4qpZck+8OcI2D0G92QA== + +sass-embedded-linux-arm64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.103.1.tgz#b3d05cd82927c94d397e04e5cc8681d315d4253f" + integrity sha512-rC+80/Xr9svo0ka2Zr/sjD+N1zEHTw2Urm/nsEjaVp5HSH2i22jwhTKTIqie2OLl6ti+qdYnbI0sSfxOYRtgrg== + +sass-embedded-linux-arm@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.103.1.tgz#8064cb1ef7a94ab73f4a6709157a8eeb5abe6c0a" + integrity sha512-tJRLPUtBwXHTnBnG7I39gQvCLreuOHLLCMyKHPR1hQ7aFNwiZjADYzKMRQPNMUqti/Os9z+6I7V13FqgQHfuzg== + +sass-embedded-linux-musl-arm64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.103.1.tgz#b5eff900406647ae33839861f3f577b5cae41e7d" + integrity sha512-jMgG/C/VMo7+ShMFdk0xjJmQmYkj1PbJu/yrQiaQHpuo5pE2G+vnkEgsuM5EM3lTQ4MbMfnf715qy1fkbNPiUQ== + +sass-embedded-linux-musl-arm@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.103.1.tgz#d82b3b96881ebad7e939293c265b146d93e9f392" + integrity sha512-N8L/kgVzXpnH+8d6ErIzqvb0l8kHODR3OfPaf0Azw6DOLGtEjwDRUbHno+G7iogGzyPOjKsM8OdyqHJj/bpTdw== + +sass-embedded-linux-musl-riscv64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.103.1.tgz#6221464b2d11e5628259524624863b7c0dca99f0" + integrity sha512-LZm8rEvI6sKU87qPOlODsYeAs7CmWy0B4ShYkjG4OMcGCcV4Ffxn25XW4TFqmruThITQvJ8WT+WGblzdoxYgbA== + +sass-embedded-linux-musl-x64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.103.1.tgz#483b0e570a27197a84cf75db64974ad579c1695f" + integrity sha512-rmKzgk4t6RpaDhSefbbnk5yrA4pk1nHlVhJECGay8yMfzK8eglATeY9fzPgt89xCuQk6rkOiy11e+m8tLYOW5Q== + +sass-embedded-linux-riscv64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.103.1.tgz#7e0929030101d8c059c47da43500536cb9bd5575" + integrity sha512-xydQmtxla31uMrmN6z+mAogVGdEMDmkUElVq2+udomX/TPZDYJBkApEyJl237M2VLWVv29v1N4U4i2Z4xa7SDA== + +sass-embedded-linux-x64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.103.1.tgz#c9818e082004bb94ce615e5918c0192f3d4f9e54" + integrity sha512-Rln1oWm0MWKzzemOgQWrRFzfVBARwS9qxAidZPpCQHSohzPnWizFkmY1CUJad/YJNsA7sscueMdX63OEvxoM8w== + +sass-embedded-unknown-all@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.103.1.tgz#1df7de73d83b44ce6395eb060d9506ef79b26f85" + integrity sha512-p7kI4US8+n+YguKczXh+4KcodJnk+8cwv+QFdvMaz3OfPrdHV0EnhPsaVDWD9qXb1XXCEdUhpp6vQwGk3eKc3A== + dependencies: + sass "1.103.1" + +sass-embedded-win32-arm64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.103.1.tgz#5e388ed9b58109cd696ed5fc00350e14372b2c70" + integrity sha512-/0renOj3SpZGu4TA8CZJ6qZbTxGZk1khkPfiBTmV1uFB40ESYM5VsdXNj76P07bsAjIj9X2fCjTafLQFLSd9Nw== + +sass-embedded-win32-x64@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.103.1.tgz#5ae50ecb547e6dc17619ee9870bd8e6195ff8ec1" + integrity sha512-fIg60j9u5YlLUU3W8FvySMR4HHIo9R12HHFQTW7njyQ8nXqgR+t+XfCzGJloQka8g583BlAfu31Q76Ljr5o+9g== + +sass-embedded@^1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.103.1.tgz#bcf8edcc9467213f8963a4505384fd34e38c31d1" + integrity sha512-UVIuFZPzz+4DXYbHzQ5gKaKkyP2IH3Sc/WoF63N2V7QIfnC2E9UpQAtiKlCVJTfBe43HRgHDBLnXpZkYAEBsNQ== dependencies: "@bufbuild/protobuf" "^2.5.0" - colorjs.io "^0.5.0" + colorjs.io "^0.7.0" immutable "^5.1.5" rxjs "^7.4.0" supports-color "^8.1.1" sync-child-process "^1.0.2" varint "^6.0.0" optionalDependencies: - sass-embedded-all-unknown "1.100.0" - sass-embedded-android-arm "1.100.0" - sass-embedded-android-arm64 "1.100.0" - sass-embedded-android-riscv64 "1.100.0" - sass-embedded-android-x64 "1.100.0" - sass-embedded-darwin-arm64 "1.100.0" - sass-embedded-darwin-x64 "1.100.0" - sass-embedded-linux-arm "1.100.0" - sass-embedded-linux-arm64 "1.100.0" - sass-embedded-linux-musl-arm "1.100.0" - sass-embedded-linux-musl-arm64 "1.100.0" - sass-embedded-linux-musl-riscv64 "1.100.0" - sass-embedded-linux-musl-x64 "1.100.0" - sass-embedded-linux-riscv64 "1.100.0" - sass-embedded-linux-x64 "1.100.0" - sass-embedded-unknown-all "1.100.0" - sass-embedded-win32-arm64 "1.100.0" - sass-embedded-win32-x64 "1.100.0" - -sass@1.100.0: - version "1.100.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.100.0.tgz#b4cab1bed286fe22ac6c879c514f71cd36aa06c8" - integrity sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ== + sass-embedded-all-unknown "1.103.1" + sass-embedded-android-arm "1.103.1" + sass-embedded-android-arm64 "1.103.1" + sass-embedded-android-riscv64 "1.103.1" + sass-embedded-android-x64 "1.103.1" + sass-embedded-darwin-arm64 "1.103.1" + sass-embedded-darwin-x64 "1.103.1" + sass-embedded-linux-arm "1.103.1" + sass-embedded-linux-arm64 "1.103.1" + sass-embedded-linux-musl-arm "1.103.1" + sass-embedded-linux-musl-arm64 "1.103.1" + sass-embedded-linux-musl-riscv64 "1.103.1" + sass-embedded-linux-musl-x64 "1.103.1" + sass-embedded-linux-riscv64 "1.103.1" + sass-embedded-linux-x64 "1.103.1" + sass-embedded-unknown-all "1.103.1" + sass-embedded-win32-arm64 "1.103.1" + sass-embedded-win32-x64 "1.103.1" + +sass@1.103.1: + version "1.103.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.103.1.tgz#13b70f5ff69288db956dc27d27c8fb79f3a27c61" + integrity sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw== dependencies: chokidar "^5.0.0" immutable "^5.1.5" @@ -1713,15 +1719,15 @@ victory-vendor@^37.0.2: d3-time "^3.0.0" d3-timer "^3.0.1" -vite@^8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-8.2.1.tgz#6fc8d8bb843bd52353091fac978e194d4de5b31d" - integrity sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw== +vite@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-8.2.2.tgz#399aefad3656145145be110d137a07ea5bb55014" + integrity sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q== dependencies: lightningcss "^1.33.0" picomatch "^4.0.5" - postcss "^8.5.25" - rolldown "~1.2.1" + postcss "^8.5.26" + rolldown "~1.2.4" tinyglobby "^0.2.17" optionalDependencies: fsevents "~2.3.3"