diff --git a/core/Cargo.lock b/core/Cargo.lock index cfeae2f38..9c9ad3071 100644 --- a/core/Cargo.lock +++ b/core/Cargo.lock @@ -118,9 +118,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -133,33 +133,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -493,34 +493,6 @@ dependencies = [ "fs_extra", ] -[[package]] -name = "axum" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -dependencies = [ - "async-trait", - "axum-core 0.3.4", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper 0.1.2", - "tower 0.4.13", - "tower-layer", - "tower-service", -] - [[package]] name = "axum" version = "0.7.9" @@ -529,16 +501,43 @@ checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core 0.4.5", - "base64 0.22.1", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.6.0", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core 0.5.2", + "base64 0.22.1", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.8.4", "memchr", "mime", "percent-encoding", @@ -549,32 +548,15 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", - "tokio-tungstenite 0.24.0", + "tokio-tungstenite", "tower 0.5.2", "tower-layer", "tower-service", "tracing", ] -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - [[package]] name = "axum-core" version = "0.4.5" @@ -584,13 +566,32 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -598,15 +599,17 @@ dependencies = [ [[package]] name = "backhand" -version = "0.18.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f2fc1bc7bb7fd449e02000cc1592cc63dcdcd61710f8b9efe32bab2d1784603" +checksum = "81e407ed987e67ac147f68f801e84a7628107acae7ac98439ee0c39d33c599dd" dependencies = [ "deku", "flate2", - "rustc-hash", - "thiserror 1.0.69", + "lz4_flex", + "solana-nohash-hasher", + "thiserror 2.0.12", "tracing", + "xxhash-rust", "xz2", "zstd", "zstd-safe", @@ -670,9 +673,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "basic-cookies" @@ -694,6 +697,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + [[package]] name = "bindgen" version = "0.69.5" @@ -1116,9 +1139,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "concurrent-queue" @@ -1153,9 +1176,9 @@ dependencies = [ [[package]] name = "console-api" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a257c22cd7e487dd4a13d413beabc512c5052f0bc048db0da6a84c3d8a6142fd" +checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" dependencies = [ "futures-core", "prost", @@ -1166,9 +1189,9 @@ dependencies = [ [[package]] name = "console-subscriber" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c4cc54bae66f7d9188996404abdf7fdfa23034ef8e43478c8810828abad758" +checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" dependencies = [ "console-api", "crossbeam-channel", @@ -1176,6 +1199,7 @@ dependencies = [ "futures-task", "hdrhistogram", "humantime", + "hyper-util", "prost", "prost-types", "serde", @@ -1541,21 +1565,21 @@ checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" [[package]] name = "deku" -version = "0.17.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709ade444d53896e60f6265660eb50480dd08b77bfc822e5dcc233b88b0b2fba" +checksum = "a9711031e209dc1306d66985363b4397d4c7b911597580340b93c9729b55f6eb" dependencies = [ "bitvec 1.0.1", "deku_derive", - "no_std_io", + "no_std_io2", "rustversion", ] [[package]] name = "deku_derive" -version = "0.17.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7534973f93f9de83203e41c8ddd32d230599fa73fa889f3deb1580ccd186913" +checksum = "58cb0719583cbe4e81fb40434ace2f0d22ccc3e39a74bb3796c22b451b4f139d" dependencies = [ "darling", "proc-macro-crate", @@ -2078,6 +2102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -2098,6 +2123,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2292,7 +2323,7 @@ checksum = "75cec8bb4d3d32542cfcb9517f78366b52c17931e30d7ee1682c13686c19cee7" dependencies = [ "futures", "futures-rustls", - "hyper 1.6.0", + "hyper", "log", "serde", "serde_json", @@ -2363,13 +2394,13 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gpt" -version = "3.1.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" +checksum = "3696fafb1ecdcc2ae3ce337de73e9202806068594b77d22fdf2f3573c5ec2219" dependencies = [ "bitflags 2.9.1", "crc", - "log", + "simple-bytes", "uuid", ] @@ -2384,25 +2415,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.9.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "h2" version = "0.4.10" @@ -2414,7 +2426,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", + "http", "indexmap 2.9.0", "slab", "tokio", @@ -2468,14 +2480,19 @@ name = "hashbrown" version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "hashlink" -version = "0.8.4" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.3", ] [[package]] @@ -2496,9 +2513,6 @@ name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] [[package]] name = "heck" @@ -2619,17 +2633,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.3.1" @@ -2641,17 +2644,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -2659,7 +2651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http", ] [[package]] @@ -2670,8 +2662,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -2693,30 +2685,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.6.0" @@ -2726,9 +2694,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.10", - "http 1.3.1", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -2744,8 +2712,8 @@ version = "0.27.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" dependencies = [ - "http 1.3.1", - "hyper 1.6.0", + "http", + "hyper", "hyper-util", "rustls 0.23.27", "rustls-pki-types", @@ -2756,14 +2724,15 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 0.14.32", + "hyper", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] @@ -2774,7 +2743,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-util", "native-tls", "tokio", @@ -2784,18 +2753,18 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "hyper 1.6.0", + "http", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", @@ -2977,9 +2946,9 @@ dependencies = [ [[package]] name = "imbl" -version = "2.0.3" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978d142c8028edf52095703af2fad11d6f611af1246685725d6b850634647085" +checksum = "5ae128b3bc67ed43ec0a7bb1c337a9f026717628b3c4033f07ded1da3e854951" dependencies = [ "bitmaps", "imbl-sized-chunks", @@ -3000,9 +2969,9 @@ dependencies = [ [[package]] name = "imbl-value" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3431be119ebf79f4bd0ce420dfa66aaeffbc4688f79c796237dc1f3b2d6d71" +checksum = "196915700a024f30561331639c1dad08d2f8313675bfe604e97eb13cd92e73ee" dependencies = [ "imbl", "serde", @@ -3013,8 +2982,8 @@ dependencies = [ [[package]] name = "imbl-value" -version = "0.1.2" -source = "git+https://github.com/Start9Labs/imbl-value.git#3d83dfee7fdd329a9bf8a873b09d114dc582d6ae" +version = "0.2.0" +source = "git+https://github.com/Start9Labs/imbl-value.git#16ab02c9bb6fcf10216c57dd6856daa1274e702d" dependencies = [ "imbl", "serde", @@ -3215,6 +3184,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -3255,7 +3233,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b261109851c8687bc55eab26e6d81e96f3fdab367e2d3d5706947c218ddaf22" dependencies = [ - "bincode", + "bincode 1.3.3", "jaq-parse", ] @@ -3271,19 +3249,18 @@ dependencies = [ [[package]] name = "josekit" -version = "0.8.7" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b85e2125819afc4fd2ae57416207e792c7e12797858e5db2a6c6f24a166829" +checksum = "a808e078330e6af222eb0044b71d4b1ff981bfef43e7bc8133a88234e0c86a0c" dependencies = [ "anyhow", "base64 0.22.1", "flate2", - "once_cell", "openssl", "regex", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.12", "time", ] @@ -3301,7 +3278,7 @@ dependencies = [ name = "json-patch" version = "0.2.7-alpha.0" dependencies = [ - "imbl-value 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "imbl-value 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "json-ptr", "serde", "treediff", @@ -3312,9 +3289,9 @@ name = "json-ptr" version = "0.1.0" dependencies = [ "imbl", - "imbl-value 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "imbl-value 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] @@ -3322,7 +3299,7 @@ name = "jsonpath_lib" version = "0.3.0" source = "git+https://github.com/Start9Labs/jsonpath.git#1cacbd64afa2e1941a21fef06bad14317ba92f30" dependencies = [ - "imbl-value 0.1.2 (git+https://github.com/Start9Labs/imbl-value.git)", + "imbl-value 0.2.0 (git+https://github.com/Start9Labs/imbl-value.git)", "log", "serde", "serde_json", @@ -3447,20 +3424,32 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.27.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ - "cc", "pkg-config", "vcpkg", ] [[package]] name = "libyml" -version = "0.0.3" +version = "0.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e281a65eeba3d4503a2839252f86374528f9ceafe6fed97c1d3b52e1fb625c1" +checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" +dependencies = [ + "anyhow", + "version_check", +] + +[[package]] +name = "libz-rs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +dependencies = [ + "zlib-rs", +] [[package]] name = "linked-hash-map" @@ -3517,6 +3506,12 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "lz4_flex" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" + [[package]] name = "lzma-rs" version = "0.3.0" @@ -3612,16 +3607,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] -name = "mbrman" -version = "0.5.4" +name = "matchit" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fc3bff63c208d4a14301c6cb807af2d1a0760052584ce3f9a737b55fb85498" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "mbrman" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43cfbd409d2d8b351da0efcbc796e9fe7d7b9d05ddf0d24b561a6d3a1c2a060" dependencies = [ - "bincode", + "bincode 2.0.1", "bitvec 1.0.1", "serde", "serde-big-array", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] @@ -3664,15 +3665,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -3719,18 +3711,19 @@ dependencies = [ name = "models" version = "0.1.0" dependencies = [ - "axum 0.7.9", - "base64 0.21.7", + "axum 0.8.4", + "base64 0.22.1", "color-eyre", "ed25519-dalek 2.1.1", "exver", + "gpt", "ipnet", "lazy_static", "mbrman", "num_enum", "openssl", "patch-db", - "rand 0.8.5", + "rand 0.9.1", "regex", "reqwest", "rpc-toolkit", @@ -3739,7 +3732,7 @@ dependencies = [ "serde_json", "sqlx", "ssh-key", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "torut", "tracing", @@ -3793,32 +3786,6 @@ dependencies = [ "memoffset 0.6.5", ] -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", - "pin-utils", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset 0.9.1", -] - [[package]] name = "nix" version = "0.30.1" @@ -3833,10 +3800,10 @@ dependencies = [ ] [[package]] -name = "no_std_io" -version = "0.6.0" +name = "no_std_io2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa5f306a6f2c01b4fd172f29bb46195b1764061bf926c75e96ff55df3178208" +checksum = "8a3564ce7035b1e4778d8cb6cacebb5d766b5e8fe5a75b9e441e33fb61a872c6" dependencies = [ "memchr", ] @@ -3864,6 +3831,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -4206,12 +4182,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "patch-db" version = "0.1.0" @@ -4220,15 +4190,15 @@ dependencies = [ "fd-lock-rs", "futures", "imbl", - "imbl-value 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "imbl-value 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "json-patch", "json-ptr", "lazy_static", - "nix 0.26.4", + "nix 0.30.1", "patch-db-macro", "serde", "serde_cbor", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "tracing", "tracing-error", @@ -4532,24 +4502,23 @@ dependencies = [ [[package]] name = "procfs" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" +checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ "bitflags 2.9.1", "chrono", "flate2", "hex", - "lazy_static", "procfs-core", "rustix 0.38.44", ] [[package]] name = "procfs-core" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" +checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ "bitflags 2.9.1", "chrono", @@ -4589,9 +4558,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.6" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -4599,12 +4568,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.6" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.101", @@ -4612,9 +4581,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.6" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ "prost", ] @@ -4933,11 +4902,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.10", - "http 1.3.1", - "http-body 1.0.1", + "h2", + "http", + "http-body", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-rustls", "hyper-tls", "hyper-util", @@ -4953,7 +4922,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tokio-native-tls", "tokio-socks", @@ -5024,17 +4993,17 @@ dependencies = [ [[package]] name = "rpc-toolkit" version = "0.3.0" -source = "git+https://github.com/Start9Labs/rpc-toolkit.git?branch=master#0747acc54b3dafa8689db1365fba5b28a03806b1" +source = "git+https://github.com/Start9Labs/rpc-toolkit.git?branch=master#131d9b291b025cb5277cbad5150e3dd434ed1c09" dependencies = [ "async-stream", "async-trait", - "axum 0.7.9", + "axum 0.8.4", "clap", "futures", - "http 1.3.1", + "http", "http-body-util", - "imbl-value 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.12.1", + "imbl-value 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.14.0", "lazy_format", "lazy_static", "openssl", @@ -5042,7 +5011,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "tokio-stream", "url", @@ -5504,19 +5473,17 @@ dependencies = [ [[package]] name = "serde_yml" -version = "0.0.10" +version = "0.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ce6afeda22f0b55dde2c34897bce76a629587348480384231205c14b59a01f" +checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" dependencies = [ "indexmap 2.9.0", "itoa", "libyml", - "log", "memchr", "ryu", "serde", - "serde_json", - "tempfile", + "version_check", ] [[package]] @@ -5649,6 +5616,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simple-bytes" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c11532d9d241904f095185f35dcdaf930b1427a94d5b01d7002d74ba19b44cc4" + [[package]] name = "simple-logging" version = "2.0.2" @@ -5680,6 +5653,9 @@ name = "smallvec" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +dependencies = [ + "serde", +] [[package]] name = "smawk" @@ -5703,6 +5679,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + [[package]] name = "spin" version = "0.9.8" @@ -5722,21 +5704,11 @@ dependencies = [ "der", ] -[[package]] -name = "sqlformat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" -dependencies = [ - "nom 7.1.3", - "unicode_categories", -] - [[package]] name = "sqlx" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -5747,69 +5719,63 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ - "ahash 0.8.12", - "atoi", - "byteorder", + "base64 0.22.1", "bytes", "chrono", "crc", "crossbeam-queue", "either", - "event-listener 2.5.3", - "futures-channel", + "event-listener 5.4.0", "futures-core", "futures-intrusive", "futures-io", "futures-util", + "hashbrown 0.15.3", "hashlink", - "hex", "indexmap 2.9.0", "log", "memchr", "once_cell", - "paste", "percent-encoding", - "rustls 0.21.12", - "rustls-pemfile 1.0.4", + "rustls 0.23.27", "serde", "serde_json", "sha2 0.10.9", "smallvec", - "sqlformat", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", "url", - "webpki-roots 0.25.4", + "webpki-roots 0.26.11", ] [[package]] name = "sqlx-macros" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "sqlx-macros-core" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", - "heck 0.4.1", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -5821,20 +5787,19 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 1.0.109", - "tempfile", + "syn 2.0.101", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.9.1", "byteorder", "bytes", @@ -5865,19 +5830,19 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 1.0.69", + "thiserror 2.0.12", "tracing", "whoami", ] [[package]] name = "sqlx-postgres" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.9.1", "byteorder", "chrono", @@ -5886,7 +5851,6 @@ dependencies = [ "etcetera", "futures-channel", "futures-core", - "futures-io", "futures-util", "hex", "hkdf", @@ -5904,16 +5868,16 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 1.0.69", + "thiserror 2.0.12", "tracing", "whoami", ] [[package]] name = "sqlx-sqlite" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "chrono", @@ -5927,10 +5891,11 @@ dependencies = [ "log", "percent-encoding", "serde", + "serde_urlencoded", "sqlx-core", + "thiserror 2.0.12", "tracing", "url", - "urlencoding", ] [[package]] @@ -6010,14 +5975,14 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "start-os" -version = "0.4.0-alpha.5" +version = "0.4.0-alpha.6" dependencies = [ "aes 0.7.5", "async-acme", "async-compression", "async-stream", "async-trait", - "axum 0.7.9", + "axum 0.8.4", "backhand", "barrage", "base32 0.5.1", @@ -6049,13 +6014,13 @@ dependencies = [ "helpers", "hex", "hmac", - "http 1.3.1", + "http", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-util", "id-pool", "imbl", - "imbl-value 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "imbl-value 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "include_dir", "indexmap 2.9.0", "indicatif", @@ -6063,7 +6028,7 @@ dependencies = [ "ipnet", "iprange", "isocountry", - "itertools 0.13.0", + "itertools 0.14.0", "jaq-core", "jaq-std", "josekit", @@ -6078,8 +6043,8 @@ dependencies = [ "mio", "models", "new_mime_guess", - "nix 0.29.0", - "nom 7.1.3", + "nix 0.30.1", + "nom 8.0.0", "num", "num_cpus", "num_enum", @@ -6125,13 +6090,13 @@ dependencies = [ "tar", "termion", "textwrap", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "tokio-rustls 0.26.2", "tokio-socks", "tokio-stream", "tokio-tar", - "tokio-tungstenite 0.23.1", + "tokio-tungstenite", "tokio-util", "toml 0.8.22", "torut", @@ -6221,12 +6186,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -6496,16 +6455,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.5.0" @@ -6598,28 +6547,16 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.23.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", "native-tls", "tokio", "tokio-native-tls", - "tungstenite 0.23.0", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite 0.24.0", + "tungstenite", ] [[package]] @@ -6703,23 +6640,26 @@ checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum 0.6.20", - "base64 0.21.7", + "axum 0.7.9", + "base64 0.22.1", "bytes", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", + "socket2", "tokio", "tokio-stream", "tower 0.4.13", @@ -6776,7 +6716,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -6792,8 +6732,8 @@ dependencies = [ "bitflags 2.9.1", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "iri-string", "pin-project-lite", "tower 0.5.2", @@ -6908,9 +6848,9 @@ dependencies = [ [[package]] name = "treediff" -version = "4.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" +checksum = "e2ce481b2b7c2534fe7b5242cccebf37f9084392665c6a3783c414a1bada5432" dependencies = [ "serde_json", ] @@ -6991,56 +6931,37 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ - "byteorder", "bytes", "data-encoding", - "http 1.3.1", + "http", "httparse", "log", "native-tls", - "rand 0.8.5", + "rand 0.9.1", "sha1", - "thiserror 1.0.69", + "thiserror 2.0.12", "url", "utf-8", ] -[[package]] -name = "tungstenite" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 1.3.1", - "httparse", - "log", - "rand 0.8.5", - "sha1", - "thiserror 1.0.69", - "utf-8", -] - [[package]] name = "typed-builder" -version = "0.18.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77739c880e00693faef3d65ea3aad725f196da38b22fdc7ea6ded6e1ce4d3add" +checksum = "ce63bcaf7e9806c206f7d7b9c1f38e0dce8bb165a80af0898161058b19248534" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.18.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63" +checksum = "60d8d828da2a3d759d3519cdf29a5bac49c77d039ad36d0782edadbf9cd5415b" dependencies = [ "proc-macro2", "quote", @@ -7139,12 +7060,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - [[package]] name = "unix-named-pipe" version = "0.2.0" @@ -7161,6 +7076,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.4" @@ -7226,6 +7147,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "wait-timeout" version = "0.2.1" @@ -7385,12 +7312,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - [[package]] name = "webpki-roots" version = "0.26.11" @@ -7478,7 +7399,7 @@ dependencies = [ "windows-interface", "windows-link", "windows-result", - "windows-strings 0.4.2", + "windows-strings", ] [[package]] @@ -7511,13 +7432,13 @@ checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" dependencies = [ + "windows-link", "windows-result", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-strings", ] [[package]] @@ -7529,15 +7450,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -7853,6 +7765,12 @@ dependencies = [ "rustix 1.0.7", ] +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + [[package]] name = "xz2" version = "0.1.7" @@ -8103,6 +8021,12 @@ dependencies = [ "zstd", ] +[[package]] +name = "zlib-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" + [[package]] name = "zopfli" version = "0.8.2" diff --git a/core/models/Cargo.toml b/core/models/Cargo.toml index 9e216bc60..03149b7fb 100644 --- a/core/models/Cargo.toml +++ b/core/models/Cargo.toml @@ -6,12 +6,13 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -axum = "0.7.5" -base64 = "0.21.4" +axum = "0.8.4" +base64 = "0.22.1" color-eyre = "0.6.2" ed25519-dalek = { version = "2.0.0", features = ["serde"] } +gpt = "4.1.0" lazy_static = "1.4" -mbrman = "0.5.2" +mbrman = "0.6.0" exver = { version = "0.2.0", git = "https://github.com/Start9Labs/exver-rs.git", features = [ "serde", ] } @@ -21,21 +22,21 @@ openssl = { version = "0.10.57", features = ["vendored"] } patch-db = { version = "*", path = "../../patch-db/patch-db", features = [ "trace", ] } -rand = "0.8.5" +rand = "0.9.1" regex = "1.10.2" reqwest = "0.12" rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "master" } rustls = "0.23" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" -sqlx = { version = "0.7.2", features = [ +sqlx = { version = "0.8.6", features = [ "chrono", "runtime-tokio-rustls", "postgres", ] } ssh-key = "0.6.2" ts-rs = { git = "https://github.com/dr-bonez/ts-rs.git", branch = "feature/top-level-as" } # "8" -thiserror = "1.0" +thiserror = "2.0" tokio = { version = "1", features = ["full"] } torut = { git = "https://github.com/Start9Labs/torut.git", branch = "update/dependencies" } tracing = "0.1.39" diff --git a/core/models/src/errors.rs b/core/models/src/errors.rs index b9295131c..b0a709133 100644 --- a/core/models/src/errors.rs +++ b/core/models/src/errors.rs @@ -323,6 +323,16 @@ impl From for Error { Error::new(e, ErrorKind::DiskManagement) } } +impl From for Error { + fn from(e: gpt::GptError) -> Self { + Error::new(e, ErrorKind::DiskManagement) + } +} +impl From for Error { + fn from(e: gpt::mbr::MBRError) -> Self { + Error::new(e, ErrorKind::DiskManagement) + } +} impl From for Error { fn from(e: InvalidUri) -> Self { Error::new(eyre!("{}", e), ErrorKind::ParseUrl) diff --git a/core/models/src/id/host.rs b/core/models/src/id/host.rs index 2a1595bd8..f147813f3 100644 --- a/core/models/src/id/host.rs +++ b/core/models/src/id/host.rs @@ -63,8 +63,8 @@ impl AsRef for HostId { impl<'q> sqlx::Encode<'q, sqlx::Postgres> for HostId { fn encode_by_ref( &self, - buf: &mut >::ArgumentBuffer, - ) -> sqlx::encode::IsNull { + buf: &mut ::ArgumentBuffer<'q>, + ) -> Result { <&str as sqlx::Encode<'q, sqlx::Postgres>>::encode_by_ref(&&**self, buf) } } diff --git a/core/models/src/id/mod.rs b/core/models/src/id/mod.rs index 16c047c8e..2039c7242 100644 --- a/core/models/src/id/mod.rs +++ b/core/models/src/id/mod.rs @@ -119,8 +119,8 @@ impl Serialize for Id { impl<'q> sqlx::Encode<'q, sqlx::Postgres> for Id { fn encode_by_ref( &self, - buf: &mut >::ArgumentBuffer, - ) -> sqlx::encode::IsNull { + buf: &mut ::ArgumentBuffer<'q>, + ) -> Result { <&str as sqlx::Encode<'q, sqlx::Postgres>>::encode_by_ref(&&**self, buf) } } diff --git a/core/models/src/id/package.rs b/core/models/src/id/package.rs index 6e22b9d51..886866f87 100644 --- a/core/models/src/id/package.rs +++ b/core/models/src/id/package.rs @@ -90,8 +90,8 @@ impl Serialize for PackageId { impl<'q> sqlx::Encode<'q, sqlx::Postgres> for PackageId { fn encode_by_ref( &self, - buf: &mut >::ArgumentBuffer, - ) -> sqlx::encode::IsNull { + buf: &mut ::ArgumentBuffer<'q>, + ) -> Result { <&str as sqlx::Encode<'q, sqlx::Postgres>>::encode_by_ref(&&**self, buf) } } diff --git a/core/models/src/id/service_interface.rs b/core/models/src/id/service_interface.rs index f08d89cd5..872abd419 100644 --- a/core/models/src/id/service_interface.rs +++ b/core/models/src/id/service_interface.rs @@ -47,8 +47,8 @@ impl AsRef for ServiceInterfaceId { impl<'q> sqlx::Encode<'q, sqlx::Postgres> for ServiceInterfaceId { fn encode_by_ref( &self, - buf: &mut >::ArgumentBuffer, - ) -> sqlx::encode::IsNull { + buf: &mut ::ArgumentBuffer<'q>, + ) -> Result { <&str as sqlx::Encode<'q, sqlx::Postgres>>::encode_by_ref(&&**self, buf) } } diff --git a/core/startos/Cargo.toml b/core/startos/Cargo.toml index aa6d8fff1..26aed2d8b 100644 --- a/core/startos/Cargo.toml +++ b/core/startos/Cargo.toml @@ -14,7 +14,7 @@ keywords = [ name = "start-os" readme = "README.md" repository = "https://github.com/Start9Labs/start-os" -version = "0.4.0-alpha.5" # VERSION_BUMP +version = "0.4.0-alpha.6" # VERSION_BUMP license = "MIT" [lib] @@ -61,9 +61,9 @@ async-compression = { version = "0.4.4", features = [ ] } async-stream = "0.3.5" async-trait = "0.1.74" -axum = { version = "0.7.3", features = ["ws"] } +axum = { version = "0.8.4", features = ["ws"] } barrage = "0.2.3" -backhand = "0.18.0" +backhand = "0.21.0" base32 = "0.5.0" base64 = "0.22.1" base64ct = "1.6.0" @@ -74,7 +74,7 @@ chrono = { version = "0.4.31", features = ["serde"] } clap = { version = "4.4.12", features = ["string"] } color-eyre = "0.6.2" console = "0.15.7" -console-subscriber = { version = "0.3.0", optional = true } +console-subscriber = { version = "0.4.1", optional = true } const_format = "0.2.34" cookie = "0.18.0" cookie_store = "0.21.0" @@ -96,7 +96,7 @@ exver = { version = "0.2.0", git = "https://github.com/Start9Labs/exver-rs.git", fd-lock-rs = "0.1.4" form_urlencoded = "1.2.1" futures = "0.3.28" -gpt = "3.1.0" +gpt = "4.1.0" helpers = { path = "../helpers" } hex = "0.4.3" hmac = "0.12.1" @@ -116,8 +116,8 @@ id-pool = { version = "0.2.2", default-features = false, features = [ "serde", "u16", ] } -imbl = "2.0.3" -imbl-value = "0.1.2" +imbl = "4.0.1" +imbl-value = "0.2.0" include_dir = { version = "0.7.3", features = ["metadata"] } indexmap = { version = "2.0.2", features = ["serde"] } indicatif = { version = "0.17.7", features = ["tokio"] } @@ -125,10 +125,10 @@ integer-encoding = { version = "4.0.0", features = ["tokio_async"] } ipnet = { version = "2.8.0", features = ["serde"] } iprange = { version = "0.6.7", features = ["serde"] } isocountry = "0.3.2" -itertools = "0.13.0" +itertools = "0.14.0" jaq-core = "0.10.1" jaq-std = "0.10.0" -josekit = "0.8.4" +josekit = "0.10.3" jsonpath_lib = { git = "https://github.com/Start9Labs/jsonpath.git" } lazy_async_pool = "0.3.3" lazy_format = "2.0" @@ -136,10 +136,10 @@ lazy_static = "1.4.0" libc = "0.2.149" log = "0.4.20" mio = "1" -mbrman = "0.5.2" +mbrman = "0.6.0" models = { version = "*", path = "../models" } new_mime_guess = "4" -nix = { version = "0.29.0", features = [ +nix = { version = "0.30.1", features = [ "fs", "mount", "net", @@ -148,7 +148,7 @@ nix = { version = "0.29.0", features = [ "signal", "user", ] } -nom = "7.1.3" +nom = "8.0.0" num = "0.4.1" num_enum = "0.7.0" num_cpus = "1.16.0" @@ -163,7 +163,7 @@ pbkdf2 = "0.12.2" pin-project = "1.1.3" pkcs8 = { version = "0.10.2", features = ["std"] } prettytable-rs = "0.10.0" -procfs = { version = "0.16.0", optional = true } +procfs = { version = "0.17.0", optional = true } proptest = "1.3.1" proptest-derive = "0.5.0" pty-process = { version = "0.5.1", optional = true } @@ -183,14 +183,14 @@ serde_json = "1.0" serde_toml = { package = "toml", version = "0.8.2" } serde_urlencoded = "0.7" serde_with = { version = "3.4.0", features = ["macros", "json"] } -serde_yaml = { package = "serde_yml", version = "0.0.10" } +serde_yaml = { package = "serde_yml", version = "0.0.12" } sha-crypt = "0.5.0" sha2 = "0.10.2" shell-words = "1" signal-hook = "0.3.17" simple-logging = "2.0.2" socket2 = "0.5.7" -sqlx = { version = "0.7.2", features = [ +sqlx = { version = "0.8.6", features = [ "chrono", "runtime-tokio-rustls", "postgres", @@ -199,14 +199,14 @@ sscanf = "0.4.1" ssh-key = { version = "0.6.2", features = ["ed25519"] } tar = "0.4.40" termion = "4.0.5" -thiserror = "1.0.49" +thiserror = "2.0.12" textwrap = "0.16.1" tokio = { version = "1.38.1", features = ["full"] } tokio-rustls = "0.26.0" tokio-socks = "0.5.1" tokio-stream = { version = "0.1.14", features = ["io-util", "sync", "net"] } tokio-tar = { git = "https://github.com/dr-bonez/tokio-tar.git" } -tokio-tungstenite = { version = "0.23.1", features = ["native-tls", "url"] } +tokio-tungstenite = { version = "0.26.2", features = ["native-tls", "url"] } tokio-util = { version = "0.7.9", features = ["io"] } torut = { git = "https://github.com/Start9Labs/torut.git", branch = "update/dependencies", features = [ "serialize", @@ -219,7 +219,7 @@ tracing-journald = "0.3.0" tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } trust-dns-server = "0.23.1" ts-rs = { git = "https://github.com/dr-bonez/ts-rs.git", branch = "feature/top-level-as" } # "8.1.0" -typed-builder = "0.18.0" +typed-builder = "0.21.0" unix-named-pipe = "0.2.0" url = { version = "2.4.1", features = ["serde"] } urlencoding = "2.1.3" diff --git a/core/startos/src/backup/backup_bulk.rs b/core/startos/src/backup/backup_bulk.rs index 28aee82c1..5ece0cf7d 100644 --- a/core/startos/src/backup/backup_bulk.rs +++ b/core/startos/src/backup/backup_bulk.rs @@ -223,18 +223,7 @@ fn assure_backing_up<'a>( .as_server_info_mut() .as_status_info_mut() .as_backup_progress_mut(); - if backing_up - .clone() - .de()? - .iter() - .flat_map(|x| x.values()) - .fold(false, |acc, x| { - if !x.complete { - return true; - } - acc - }) - { + if backing_up.transpose_ref().is_some() { return Err(Error::new( eyre!("Server is already backing up!"), ErrorKind::InvalidRequest, @@ -287,6 +276,22 @@ async fn perform_backup( timestamp: Utc::now(), }, ); + + ctx.db + .mutate(|db| { + if let Some(progress) = db + .as_public_mut() + .as_server_info_mut() + .as_status_info_mut() + .as_backup_progress_mut() + .transpose_mut() + { + progress.insert(&id, &BackupProgress { complete: true })?; + } + Ok(()) + }) + .await + .result?; } backup_report.insert( id.clone(), diff --git a/core/startos/src/context/setup.rs b/core/startos/src/context/setup.rs index b8e4ee968..2cd3b2f73 100644 --- a/core/startos/src/context/setup.rs +++ b/core/startos/src/context/setup.rs @@ -172,7 +172,8 @@ impl SetupContext { if let Some(progress) = progress { ws.send(ws::Message::Text( serde_json::to_string(&progress) - .with_kind(ErrorKind::Serialization)?, + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/db/mod.rs b/core/startos/src/db/mod.rs index 6575b401b..2c08a9e5d 100644 --- a/core/startos/src/db/mod.rs +++ b/core/startos/src/db/mod.rs @@ -203,7 +203,9 @@ pub async fn subscribe( rev = sub.recv() => { if let Some(rev) = rev { ws.send(ws::Message::Text( - serde_json::to_string(&rev).with_kind(ErrorKind::Serialization)?, + serde_json::to_string(&rev) + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/disk/util.rs b/core/startos/src/disk/util.rs index c64ea40ae..cb6520611 100644 --- a/core/startos/src/disk/util.rs +++ b/core/startos/src/disk/util.rs @@ -6,10 +6,9 @@ use color_eyre::eyre::{self, eyre}; use futures::TryStreamExt; use nom::bytes::complete::{tag, take_till1}; use nom::character::complete::multispace1; -use nom::character::is_space; use nom::combinator::{opt, rest}; use nom::sequence::{pair, preceded, terminated}; -use nom::IResult; +use nom::{AsChar, IResult, Parser}; use regex::Regex; use serde::{Deserialize, Serialize}; use tokio::process::Command; @@ -450,17 +449,17 @@ fn parse_pvscan_output(pvscan_output: &str) -> BTreeMap> fn parse_line(line: &str) -> IResult<&str, (&str, Option<&str>)> { let pv_parse = preceded( tag(" PV "), - terminated(take_till1(|c| is_space(c as u8)), multispace1), + terminated(take_till1(|c: char| c.is_space()), multispace1), ); let vg_parse = preceded( opt(tag("is in exported ")), preceded( tag("VG "), - terminated(take_till1(|c| is_space(c as u8)), multispace1), + terminated(take_till1(|c: char| c.is_space()), multispace1), ), ); let mut parser = terminated(pair(pv_parse, opt(vg_parse)), rest); - parser(line) + parser.parse(line) } let lines = pvscan_output.lines(); let n = lines.clone().count(); diff --git a/core/startos/src/hostname.rs b/core/startos/src/hostname.rs index 36bb5d8a4..862411daf 100644 --- a/core/startos/src/hostname.rs +++ b/core/startos/src/hostname.rs @@ -1,6 +1,6 @@ use imbl_value::InternedString; use lazy_format::lazy_format; -use rand::{thread_rng, Rng}; +use rand::{rng, Rng}; use tokio::process::Command; use tracing::instrument; @@ -34,7 +34,7 @@ impl Hostname { } pub fn generate_hostname() -> Hostname { - let mut rng = thread_rng(); + let mut rng = rng(); let adjective = &ADJECTIVES[rng.gen_range(0..ADJECTIVES.len())]; let noun = &NOUNS[rng.gen_range(0..NOUNS.len())]; Hostname(InternedString::from_display(&lazy_format!( diff --git a/core/startos/src/init.rs b/core/startos/src/init.rs index 264a8cc82..3b7d834e6 100644 --- a/core/startos/src/init.rs +++ b/core/startos/src/init.rs @@ -620,7 +620,8 @@ pub async fn init_progress(ctx: InitContext) -> Result { while let Some(progress) = stream.next().await { ws.send(ws::Message::Text( serde_json::to_string(&progress) - .with_kind(ErrorKind::Serialization)?, + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/install/mod.rs b/core/startos/src/install/mod.rs index f67056b73..5a9c64410 100644 --- a/core/startos/src/install/mod.rs +++ b/core/startos/src/install/mod.rs @@ -23,7 +23,7 @@ use tracing::instrument; use ts_rs::TS; use crate::context::{CliContext, RpcContext}; -use crate::db::model::package::{ManifestPreference, PackageState, PackageStateMatchModelRef}; +use crate::db::model::package::{ManifestPreference, PackageStateMatchModelRef}; use crate::prelude::*; use crate::progress::{FullProgress, FullProgressTracker, PhasedProgressBar}; use crate::registry::context::{RegistryContext, RegistryUrlParams}; @@ -215,7 +215,8 @@ pub async fn sideload( if let Some(progress) = progress { ws.send(ws::Message::Text( serde_json::to_string(&progress) - .with_kind(ErrorKind::Serialization)?, + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/lib.rs b/core/startos/src/lib.rs index d743357e6..b9ba7863f 100644 --- a/core/startos/src/lib.rs +++ b/core/startos/src/lib.rs @@ -87,7 +87,6 @@ use crate::context::{ CliContext, DiagnosticContext, InitContext, InstallContext, RpcContext, SetupContext, }; use crate::disk::fsck::RequiresReboot; -use crate::net::net; use crate::registry::context::{RegistryContext, RegistryUrlParams}; use crate::system::kiosk; use crate::util::serde::{HandlerExtSerde, WithIoFormat}; diff --git a/core/startos/src/logs.rs b/core/startos/src/logs.rs index be5e9cb8f..b51593fce 100644 --- a/core/startos/src/logs.rs +++ b/core/startos/src/logs.rs @@ -75,7 +75,9 @@ async fn ws_handler( if let Some(first_entry) = first_entry { stream .send(ws::Message::Text( - serde_json::to_string(&first_entry).with_kind(ErrorKind::Serialization)?, + serde_json::to_string(&first_entry) + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; @@ -88,7 +90,9 @@ async fn ws_handler( let (_, log_entry) = entry.log_entry()?; stream .send(ws::Message::Text( - serde_json::to_string(&log_entry).with_kind(ErrorKind::Serialization)?, + serde_json::to_string(&log_entry) + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/lxc/mod.rs b/core/startos/src/lxc/mod.rs index ae7697efa..0648fc814 100644 --- a/core/startos/src/lxc/mod.rs +++ b/core/startos/src/lxc/mod.rs @@ -429,7 +429,8 @@ pub async fn connect(ctx: &RpcContext, container: &LxcContainer) -> Result Result<(), Error> { if let ReadlineEvent::Line(line) = line { input.add_history_entry(line.clone()); if serde_json::from_str::(&line).is_ok() { - ws.send(Message::Text(line)) + ws.send(Message::Text(line.into())) .await .with_kind(ErrorKind::Network)?; } else { @@ -531,7 +532,7 @@ pub async fn connect_cli(ctx: &CliContext, guid: Guid) -> Result<(), Error> { method: GenericRpcMethod::new(method.into()), params: Value::Object(params), }) { - Ok(a) => a, + Ok(a) => a.into(), Err(e) => { tracing::error!("Error Serializing Request: {e}"); tracing::debug!("{e:?}"); diff --git a/core/startos/src/net/dns.rs b/core/startos/src/net/dns.rs index d68a971f1..beef7c382 100644 --- a/core/startos/src/net/dns.rs +++ b/core/startos/src/net/dns.rs @@ -5,7 +5,6 @@ use std::sync::{Arc, Weak}; use std::time::Duration; use color_eyre::eyre::eyre; -use futures::TryFutureExt; use helpers::NonDetachingJoinHandle; use models::PackageId; use tokio::net::{TcpListener, UdpSocket}; diff --git a/core/startos/src/net/static_server.rs b/core/startos/src/net/static_server.rs index d1070f9e1..8c0330c10 100644 --- a/core/startos/src/net/static_server.rs +++ b/core/startos/src/net/static_server.rs @@ -83,9 +83,9 @@ pub fn rpc_router>( server: HttpServer, ) -> Router { Router::new() - .route("/rpc/*path", any(server)) + .route("/rpc/{*path}", any(server)) .route( - "/ws/rpc/:guid", + "/ws/rpc/{guid}", get({ let ctx = ctx.clone(); move |x::Path(guid): x::Path, @@ -98,7 +98,7 @@ pub fn rpc_router>( }), ) .route( - "/rest/rpc/:guid", + "/rest/rpc/{guid}", any({ let ctx = ctx.clone(); move |x::Path(guid): x::Path, request: x::Request| async move { @@ -185,7 +185,7 @@ pub fn main_ui_router(ctx: RpcContext) -> Router { .middleware(Auth::new()) .middleware(SyncDb::new()) }) - .route("/proxy/:url", { + .route("/proxy/{url}", { let ctx = ctx.clone(); any(move |x::Path(url): x::Path, request: Request| { let ctx = ctx.clone(); @@ -258,7 +258,7 @@ async fn proxy_request(ctx: RpcContext, request: Request, url: String) -> Result fn s9pk_router(ctx: RpcContext) -> Router { Router::new() - .route("/installed/:s9pk", { + .route("/installed/{s9pk}", { let ctx = ctx.clone(); any( |x::Path(s9pk): x::Path, request: Request| async move { @@ -282,7 +282,7 @@ fn s9pk_router(ctx: RpcContext) -> Router { }, ) }) - .route("/installed/:s9pk/*path", { + .route("/installed/{s9pk}/{*path}", { let ctx = ctx.clone(); any( |x::Path((s9pk, path)): x::Path<(String, PathBuf)>, @@ -319,7 +319,7 @@ fn s9pk_router(ctx: RpcContext) -> Router { ) }) .route( - "/proxy/:url/*path", + "/proxy/{url}/{*path}", any( |x::Path((url, path)): x::Path<(Url, PathBuf)>, x::RawQuery(query): x::RawQuery, diff --git a/core/startos/src/net/utils.rs b/core/startos/src/net/utils.rs index 8799fd6cd..98407c400 100644 --- a/core/startos/src/net/utils.rs +++ b/core/startos/src/net/utils.rs @@ -1,4 +1,3 @@ -use std::collections::BTreeMap; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV6}; use std::path::Path; @@ -6,18 +5,13 @@ use async_stream::try_stream; use color_eyre::eyre::eyre; use futures::stream::BoxStream; use futures::{StreamExt, TryStreamExt}; -use helpers::NonDetachingJoinHandle; use imbl_value::InternedString; use ipnet::{IpNet, Ipv4Net, Ipv6Net}; use nix::net::if_::if_nametoindex; use tokio::net::{TcpListener, TcpStream}; use tokio::process::Command; -use crate::db::model::public::NetworkInterfaceInfo; -use crate::net::network_interface::NetworkInterfaceListener; -use crate::net::web_server::Accept; use crate::prelude::*; -use crate::util::sync::Watch; use crate::util::Invoke; pub fn ipv6_is_link_local(addr: Ipv6Addr) -> bool { diff --git a/core/startos/src/net/vhost.rs b/core/startos/src/net/vhost.rs index 9e3d141f8..11c4e5ce8 100644 --- a/core/startos/src/net/vhost.rs +++ b/core/startos/src/net/vhost.rs @@ -1,7 +1,6 @@ use std::collections::{BTreeMap, BTreeSet}; use std::net::{IpAddr, SocketAddr}; use std::sync::{Arc, Weak}; -use std::time::Duration; use async_acme::acme::{Identifier, ACME_TLS_ALPN_NAME}; use axum::body::Body; diff --git a/core/startos/src/net/wifi.rs b/core/startos/src/net/wifi.rs index 99adc71c8..fa494194b 100644 --- a/core/startos/src/net/wifi.rs +++ b/core/startos/src/net/wifi.rs @@ -18,7 +18,6 @@ use ts_rs::TS; use crate::context::{CliContext, RpcContext}; use crate::db::model::public::WifiInfo; use crate::db::model::Database; -use crate::net::utils::find_wifi_iface; use crate::prelude::*; use crate::util::serde::{display_serializable, HandlerExtSerde, WithIoFormat}; use crate::util::Invoke; diff --git a/core/startos/src/os_install/gpt.rs b/core/startos/src/os_install/gpt.rs index 4833f4ea7..bb9712207 100644 --- a/core/startos/src/os_install/gpt.rs +++ b/core/startos/src/os_install/gpt.rs @@ -1,13 +1,12 @@ use std::path::Path; -use color_eyre::eyre::eyre; use gpt::disk::LogicalBlockSize; use gpt::GptConfig; use crate::disk::util::DiskInfo; use crate::disk::OsPartitionInfo; use crate::os_install::partition_for; -use crate::Error; +use crate::prelude::*; pub async fn partition(disk: &DiskInfo, overwrite: bool) -> Result { let efi = { @@ -28,7 +27,6 @@ pub async fn partition(disk: &DiskInfo, overwrite: bool) -> Result Result Result for RpcContext { .header(CONTENT_TYPE, "application/json") .header(ACCEPT, "application/json") .header(CONTENT_LENGTH, body.len()) - // .header(DEVICE_INFO_HEADER, DeviceInfo::from(self).to_header_value()) + .header( + DEVICE_INFO_HEADER, + DeviceInfo::load(self).await?.to_header_value(), + ) .body(body) .send() .await?; diff --git a/core/startos/src/registry/mod.rs b/core/startos/src/registry/mod.rs index 4e1411ea9..3b865cb96 100644 --- a/core/startos/src/registry/mod.rs +++ b/core/startos/src/registry/mod.rs @@ -90,7 +90,7 @@ pub fn registry_router(ctx: RegistryContext) -> Router { use axum::extract as x; use axum::routing::{any, get}; Router::new() - .route("/rpc/*path", { + .route("/rpc/{*path}", { let ctx = ctx.clone(); any( Server::new(move || ready(Ok(ctx.clone())), registry_api()) @@ -100,7 +100,7 @@ pub fn registry_router(ctx: RegistryContext) -> Router { ) }) .route( - "/ws/rpc/*path", + "/ws/rpc/{*path}", get({ let ctx = ctx.clone(); move |x::Path(path): x::Path, @@ -119,7 +119,7 @@ pub fn registry_router(ctx: RegistryContext) -> Router { }), ) .route( - "/rest/rpc/*path", + "/rest/rpc/{*path}", any({ let ctx = ctx.clone(); move |request: x::Request| async move { diff --git a/core/startos/src/s9pk/v2/compat.rs b/core/startos/src/s9pk/v2/compat.rs index b9fcac4ea..bc4b51663 100644 --- a/core/startos/src/s9pk/v2/compat.rs +++ b/core/startos/src/s9pk/v2/compat.rs @@ -196,9 +196,9 @@ impl TryFrom for Manifest { version = version.with_flavor("knots"); } else if &*value.id == "lnd" || &*value.id == "ride-the-lightning" || &*value.id == "datum" { - version = version.map_upstream(|mut v| v.with_prerelease(["beta".into()])); + version = version.map_upstream(|v| v.with_prerelease(["beta".into()])); } else if &*value.id == "lightning-terminal" || &*value.id == "robosats" { - version = version.map_upstream(|mut v| v.with_prerelease(["alpha".into()])); + version = version.map_upstream(|v| v.with_prerelease(["alpha".into()])); } Ok(Self { id: value.id, diff --git a/core/startos/src/service/effects/dependency.rs b/core/startos/src/service/effects/dependency.rs index 568eedf65..7c2377239 100644 --- a/core/startos/src/service/effects/dependency.rs +++ b/core/startos/src/service/effects/dependency.rs @@ -7,7 +7,6 @@ use exver::VersionRange; use imbl::OrdMap; use imbl_value::InternedString; use models::{FromStrParser, HealthCheckId, PackageId, ReplayId, VersionString, VolumeId}; -use tokio::process::Command; use crate::db::model::package::{ CurrentDependencies, CurrentDependencyInfo, CurrentDependencyKind, ManifestPreference, @@ -19,7 +18,6 @@ use crate::disk::mount::filesystem::{FileSystem, MountType}; use crate::disk::mount::util::{is_mountpoint, unmount}; use crate::service::effects::prelude::*; use crate::status::health_check::NamedHealthCheckResult; -use crate::util::Invoke; use crate::volume::data_dir; use crate::DATA_DIR; diff --git a/core/startos/src/service/effects/net/info.rs b/core/startos/src/service/effects/net/info.rs index 3b6b38e83..90d3ef223 100644 --- a/core/startos/src/service/effects/net/info.rs +++ b/core/startos/src/service/effects/net/info.rs @@ -5,7 +5,6 @@ use models::PackageId; use crate::service::effects::callbacks::CallbackHandler; use crate::service::effects::prelude::*; use crate::service::rpc::CallbackId; -use crate::HOST_IP; #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, TS)] #[serde(rename_all = "camelCase")] diff --git a/core/startos/src/service/mod.rs b/core/startos/src/service/mod.rs index d4c54f614..063355c6a 100644 --- a/core/startos/src/service/mod.rs +++ b/core/startos/src/service/mod.rs @@ -8,7 +8,7 @@ use std::process::Stdio; use std::sync::{Arc, Weak}; use std::time::Duration; -use axum::extract::ws::WebSocket; +use axum::extract::ws::{Utf8Bytes, WebSocket}; use chrono::{DateTime, Utc}; use clap::Parser; use futures::future::BoxFuture; @@ -916,7 +916,7 @@ pub async fn attach( let mut stdin = Some(child.stdin.take().or_not_found("child stdin")?); - let mut current_in = "stdin".to_owned(); + let mut current_in: Utf8Bytes = "stdin".into(); let mut current_out = "stdout"; ws.send(Message::Text(current_out.into())) .await @@ -942,7 +942,7 @@ pub async fn attach( .with_kind(ErrorKind::Network)?; current_out = "stdout"; } - ws.send(Message::Binary(out)) + ws.send(Message::Binary(out.into())) .await .with_kind(ErrorKind::Network)?; } else { @@ -959,7 +959,7 @@ pub async fn attach( .with_kind(ErrorKind::Network)?; current_out = "stderr"; } - ws.send(Message::Binary(err)) + ws.send(Message::Binary(err.into())) .await .with_kind(ErrorKind::Network)?; } else { @@ -1018,9 +1018,11 @@ pub async fn attach( ws.send(Message::Text("exit".into())) .await .with_kind(ErrorKind::Network)?; - ws.send(Message::Binary(i32::to_be_bytes(exit.into_raw()).to_vec())) - .await - .with_kind(ErrorKind::Network)?; + ws.send(Message::Binary( + i32::to_be_bytes(exit.into_raw()).to_vec().into(), + )) + .await + .with_kind(ErrorKind::Network)?; Ok(()) } @@ -1181,7 +1183,7 @@ pub async fn cli_attach( let mut stdin = Some(recv); let mut current_in = "stdin"; - let mut current_out = "stdout".to_owned(); + let mut current_out: tokio_tungstenite::tungstenite::Utf8Bytes = "stdout".into(); ws.send(Message::Text(current_in.into())) .await .with_kind(ErrorKind::Network)?; @@ -1216,7 +1218,7 @@ pub async fn cli_attach( .with_kind(ErrorKind::Network)?; current_in = "stdin"; } - ws.send(Message::Binary(input)) + ws.send(Message::Binary(input.into())) .await .with_kind(ErrorKind::Network)?; } else { diff --git a/core/startos/src/service/start_stop.rs b/core/startos/src/service/start_stop.rs index 64d4022d6..3a83db18c 100644 --- a/core/startos/src/service/start_stop.rs +++ b/core/startos/src/service/start_stop.rs @@ -1,8 +1,6 @@ use serde::{Deserialize, Serialize}; use ts_rs::TS; -use crate::status::MainStatus; - #[derive(Clone, Copy, Debug, Eq, PartialEq, Deserialize, Serialize, TS)] #[serde(rename_all = "camelCase")] pub enum StartStop { diff --git a/core/startos/src/system.rs b/core/startos/src/system.rs index 3d8eb9dab..96d4bb00b 100644 --- a/core/startos/src/system.rs +++ b/core/startos/src/system.rs @@ -522,6 +522,7 @@ pub async fn metrics_follow( local_cache .peek(|m| serde_json::to_string(&m)) .with_kind(ErrorKind::Serialization)? + .into(), )).await.with_kind(ErrorKind::Network)?; } msg = ws.try_next() => { diff --git a/core/startos/src/update/mod.rs b/core/startos/src/update/mod.rs index bf11983ca..fe046168d 100644 --- a/core/startos/src/update/mod.rs +++ b/core/startos/src/update/mod.rs @@ -118,7 +118,8 @@ pub async fn update_system( .de()?; ws.send(axum::extract::ws::Message::Text( serde_json::to_string(&progress) - .with_kind(ErrorKind::Serialization)?, + .with_kind(ErrorKind::Serialization)? + .into(), )) .await .with_kind(ErrorKind::Network)?; diff --git a/core/startos/src/util/net.rs b/core/startos/src/util/net.rs index 1189f70f2..a44edd1ad 100644 --- a/core/startos/src/util/net.rs +++ b/core/startos/src/util/net.rs @@ -1,8 +1,7 @@ use core::fmt; -use std::borrow::Cow; use std::sync::Mutex; -use axum::extract::ws::{self, CloseFrame}; +use axum::extract::ws::{self, CloseFrame, Utf8Bytes}; use futures::{Future, Stream, StreamExt}; use crate::prelude::*; @@ -10,21 +9,21 @@ use crate::prelude::*; pub trait WebSocketExt { fn normal_close( self, - msg: impl Into> + Send, + msg: impl Into + Send, ) -> impl Future> + Send; fn close_result( self, - result: Result> + Send, impl fmt::Display + Send>, + result: Result + Send, impl fmt::Display + Send>, ) -> impl Future> + Send; } impl WebSocketExt for ws::WebSocket { - async fn normal_close(self, msg: impl Into> + Send) -> Result<(), Error> { + async fn normal_close(self, msg: impl Into + Send) -> Result<(), Error> { self.close_result(Ok::<_, Error>(msg)).await } async fn close_result( mut self, - result: Result> + Send, impl fmt::Display + Send>, + result: Result + Send, impl fmt::Display + Send>, ) -> Result<(), Error> { match result { Ok(msg) => self diff --git a/core/startos/src/version/mod.rs b/core/startos/src/version/mod.rs index 3ba419959..eaa3a59a9 100644 --- a/core/startos/src/version/mod.rs +++ b/core/startos/src/version/mod.rs @@ -45,8 +45,9 @@ mod v0_4_0_alpha_2; mod v0_4_0_alpha_3; mod v0_4_0_alpha_4; mod v0_4_0_alpha_5; +mod v0_4_0_alpha_6; -pub type Current = v0_4_0_alpha_5::Version; // VERSION_BUMP +pub type Current = v0_4_0_alpha_6::Version; // VERSION_BUMP impl Current { #[instrument(skip(self, db))] @@ -155,7 +156,8 @@ enum Version { V0_4_0_alpha_2(Wrapper), V0_4_0_alpha_3(Wrapper), V0_4_0_alpha_4(Wrapper), - V0_4_0_alpha_5(Wrapper), // VERSION_BUMP + V0_4_0_alpha_5(Wrapper), + V0_4_0_alpha_6(Wrapper), // VERSION_BUMP Other(exver::Version), } @@ -203,7 +205,8 @@ impl Version { Self::V0_4_0_alpha_2(v) => DynVersion(Box::new(v.0)), Self::V0_4_0_alpha_3(v) => DynVersion(Box::new(v.0)), Self::V0_4_0_alpha_4(v) => DynVersion(Box::new(v.0)), - Self::V0_4_0_alpha_5(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP + Self::V0_4_0_alpha_5(v) => DynVersion(Box::new(v.0)), + Self::V0_4_0_alpha_6(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP Self::Other(v) => { return Err(Error::new( eyre!("unknown version {v}"), @@ -243,7 +246,8 @@ impl Version { Version::V0_4_0_alpha_2(Wrapper(x)) => x.semver(), Version::V0_4_0_alpha_3(Wrapper(x)) => x.semver(), Version::V0_4_0_alpha_4(Wrapper(x)) => x.semver(), - Version::V0_4_0_alpha_5(Wrapper(x)) => x.semver(), // VERSION_BUMP + Version::V0_4_0_alpha_5(Wrapper(x)) => x.semver(), + Version::V0_4_0_alpha_6(Wrapper(x)) => x.semver(), // VERSION_BUMP Version::Other(x) => x.clone(), } } diff --git a/core/startos/src/version/v0_4_0_alpha_6.rs b/core/startos/src/version/v0_4_0_alpha_6.rs new file mode 100644 index 000000000..0f23f4177 --- /dev/null +++ b/core/startos/src/version/v0_4_0_alpha_6.rs @@ -0,0 +1,46 @@ +use exver::{PreReleaseSegment, VersionRange}; + +use super::v0_3_5::V0_3_0_COMPAT; +use super::{v0_4_0_alpha_5, VersionT}; +use crate::prelude::*; + +lazy_static::lazy_static! { + static ref V0_4_0_alpha_6: exver::Version = exver::Version::new( + [0, 4, 0], + [PreReleaseSegment::String("alpha".into()), 6.into()] + ); +} + +#[derive(Clone, Copy, Debug, Default)] +pub struct Version; + +impl VersionT for Version { + type Previous = v0_4_0_alpha_5::Version; + type PreUpRes = (); + + async fn pre_up(self) -> Result { + Ok(()) + } + fn semver(self) -> exver::Version { + V0_4_0_alpha_6.clone() + } + fn compat(self) -> &'static VersionRange { + &V0_3_0_COMPAT + } + #[instrument] + fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { + let ui = db["public"]["ui"] + .as_object_mut() + .or_not_found("public.ui")?; + if ui.get("ackInstructions").is_none() { + if let Some(old) = ui.remove("ack-instructions") { + ui.insert("ackInstructions".into(), old); + } + } + ui.remove("ackWelcome"); + Ok(()) + } + fn down(self, _db: &mut Value) -> Result<(), Error> { + Ok(()) + } +} diff --git a/patch-db b/patch-db index 875eca22d..f2f7c3141 160000 --- a/patch-db +++ b/patch-db @@ -1 +1 @@ -Subproject commit 875eca22d2fe74424e91c709a9cfd16246686fd7 +Subproject commit f2f7c3141b5a76b28eb4dd88f12d1a12c7569000 diff --git a/sdk/package/lib/StartSdk.ts b/sdk/package/lib/StartSdk.ts index 253c9bfb3..44cb53ed1 100644 --- a/sdk/package/lib/StartSdk.ts +++ b/sdk/package/lib/StartSdk.ts @@ -68,7 +68,7 @@ import { setupOnUninit, } from "../../base/lib/inits" -export const OSVersion = testTypeVersion("0.4.0-alpha.5") +export const OSVersion = testTypeVersion("0.4.0-alpha.6") // prettier-ignore type AnyNeverCond = diff --git a/web/package-lock.json b/web/package-lock.json index f40527974..6e1e531ba 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { "name": "startos-ui", - "version": "0.4.0-alpha.5", + "version": "0.4.0-alpha.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "startos-ui", - "version": "0.4.0-alpha.5", + "version": "0.4.0-alpha.6", "license": "MIT", "dependencies": { "@angular/animations": "^19.2.11", diff --git a/web/package.json b/web/package.json index e1dcfa121..552a9075e 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "startos-ui", - "version": "0.4.0-alpha.5", + "version": "0.4.0-alpha.6", "author": "Start9 Labs, Inc", "homepage": "https://start9.com/", "license": "MIT", diff --git a/web/projects/ui/src/app/services/api/api.fixures.ts b/web/projects/ui/src/app/services/api/api.fixures.ts index 9df6eab3b..c15036de9 100644 --- a/web/projects/ui/src/app/services/api/api.fixures.ts +++ b/web/projects/ui/src/app/services/api/api.fixures.ts @@ -110,7 +110,7 @@ export namespace Mock { squashfs: { aarch64: { publishedAt: '2025-04-21T20:58:48.140749883Z', - url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.5/startos-0.4.0-alpha.5-33ae46f~dev_aarch64.squashfs', + url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.6/startos-0.4.0-alpha.6-33ae46f~dev_aarch64.squashfs', commitment: { hash: '4elBFVkd/r8hNadKmKtLIs42CoPltMvKe2z3LRqkphk=', size: 1343500288, @@ -122,7 +122,7 @@ export namespace Mock { }, 'aarch64-nonfree': { publishedAt: '2025-04-21T21:07:00.249285116Z', - url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.5/startos-0.4.0-alpha.5-33ae46f~dev_aarch64-nonfree.squashfs', + url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.6/startos-0.4.0-alpha.6-33ae46f~dev_aarch64-nonfree.squashfs', commitment: { hash: 'MrCEi4jxbmPS7zAiGk/JSKlMsiuKqQy6RbYOxlGHOIQ=', size: 1653075968, @@ -134,7 +134,7 @@ export namespace Mock { }, raspberrypi: { publishedAt: '2025-04-21T21:16:12.933319237Z', - url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.5/startos-0.4.0-alpha.5-33ae46f~dev_raspberrypi.squashfs', + url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.6/startos-0.4.0-alpha.6-33ae46f~dev_raspberrypi.squashfs', commitment: { hash: '/XTVQRCqY3RK544PgitlKu7UplXjkmzWoXUh2E4HCw0=', size: 1490731008, @@ -146,7 +146,7 @@ export namespace Mock { }, x86_64: { publishedAt: '2025-04-21T21:14:20.246908903Z', - url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.5/startos-0.4.0-alpha.5-33ae46f~dev_x86_64.squashfs', + url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.6/startos-0.4.0-alpha.6-33ae46f~dev_x86_64.squashfs', commitment: { hash: '/6romKTVQGSaOU7FqSZdw0kFyd7P+NBSYNwM3q7Fe44=', size: 1411657728, @@ -158,7 +158,7 @@ export namespace Mock { }, 'x86_64-nonfree': { publishedAt: '2025-04-21T21:15:17.955265284Z', - url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.5/startos-0.4.0-alpha.5-33ae46f~dev_x86_64-nonfree.squashfs', + url: 'https://alpha-registry-x.start9.com/startos/v0.4.0-alpha.6/startos-0.4.0-alpha.6-33ae46f~dev_x86_64-nonfree.squashfs', commitment: { hash: 'HCRq9sr/0t85pMdrEgNBeM4x11zVKHszGnD1GDyZbSE=', size: 1731035136,