diff --git a/Cargo.lock b/Cargo.lock index 55aa002a..8ecfdd3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,29 +4,19 @@ version = 4 [[package]] name = "acto" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a026259da4f1a13b4af60cda453c392de64c58c12d239c560923e0382f42f2b9" +checksum = "148541f13c28e3e840354ee4d6c99046c10be2c81068bbd23b9e3a38f95a917e" dependencies = [ "parking_lot", "pin-project-lite", "rustc_version", "smol_str", + "sync_wrapper", "tokio", "tracing", ] -[[package]] -name = "aead" -version = "0.6.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8202ab55fcbf46ca829833f347a82a2a4ce0596f0304ac322c2d100030cd56" -dependencies = [ - "bytes", - "crypto-common 0.2.0-rc.4", - "inout", -] - [[package]] name = "ahash" version = "0.8.12" @@ -116,9 +106,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" [[package]] name = "append-only-bytes" @@ -155,9 +145,9 @@ checksum = "2ccd462b64c3c72f1be8305905a85d85403d768e8690c9b8bd3b9009a5761679" [[package]] name = "ashpd" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0986d5b4f0802160191ad75f8d33ada000558757db3defb70299ca95d9fcbd" +checksum = "618a409b91d5265798a99e3d1d0b226911605e581c4e7255e83c1e397b172bce" dependencies = [ "async-fs", "async-net", @@ -254,9 +244,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ "event-listener", "event-listener-strategy", @@ -300,7 +290,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -335,7 +325,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -402,12 +392,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "base16ct" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b59d472eab27ade8d770dcb11da7201c11234bef9f82ce7aa517be028d462b" - [[package]] name = "base32" version = "0.5.1" @@ -422,9 +406,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.1" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "bitflags" @@ -446,15 +430,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", + "cpufeatures 0.2.17", ] [[package]] @@ -479,7 +464,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" dependencies = [ "hybrid-array", - "zeroize", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", ] [[package]] @@ -515,14 +508,14 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "byteorder" @@ -532,9 +525,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" dependencies = [ "serde", ] @@ -564,25 +557,19 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.49" +version = "1.2.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" dependencies = [ "find-msvc-tools", "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-expr" -version = "0.20.4" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9acd0bdbbf4b2612d09f52ba61da432140cb10930354079d0d53fafc12968726" +checksum = "78cef5b5a1a6827c7322ae2a636368a573006b27cfa76c7ebd53e834daeaab6a" dependencies = [ "smallvec", "target-lexicon", @@ -602,28 +589,27 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chacha20" -version = "0.10.0-rc.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd162f2b8af3e0639d83f28a637e4e55657b7a74508dba5a9bf4da523d5c9e9" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" dependencies = [ "cfg-if", - "cipher", - "cpufeatures", - "zeroize", + "cpufeatures 0.3.0", + "rand_core 0.10.0", ] [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -653,25 +639,13 @@ dependencies = [ "half", ] -[[package]] -name = "cipher" -version = "0.5.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e12a13eb01ded5d32ee9658d94f553a19e804204f2dc811df69ab4d9e0cb8c7" -dependencies = [ - "block-buffer 0.11.0", - "crypto-common 0.2.0-rc.4", - "inout", - "zeroize", -] - [[package]] name = "cobs" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -680,16 +654,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - [[package]] name = "concurrent-queue" version = "2.5.0" @@ -707,15 +671,15 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-oid" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dabb6555f92fb9ee4140454eb5dcd14c7960e1225c6d1a6cc361f032947713e" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "convert_case" @@ -737,36 +701,25 @@ dependencies = [ ] [[package]] -name = "core-foundation" -version = "0.9.4" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "core-foundation" -version = "0.10.1" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ - "core-foundation-sys", "libc", ] -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - [[package]] name = "cpufeatures" -version = "0.2.17" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" dependencies = [ "libc", ] @@ -843,44 +796,11 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" -dependencies = [ - "hybrid-array", - "rand_core 0.9.3", -] - -[[package]] -name = "crypto_box" -version = "0.10.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bda4de3e070830cf3a27a394de135b6709aefcc54d1e16f2f029271254a6ed9" -dependencies = [ - "aead", - "chacha20", - "crypto_secretbox", - "curve25519-dalek 5.0.0-pre.1", - "salsa20", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto_secretbox" -version = "0.2.0-pre.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54532aae6546084a52cef855593daf9555945719eeeda9974150e0def854873e" +checksum = "211f05e03c7d03754740fd9e585de910a095d6b99f8bcfffdef8319fa02a8331" dependencies = [ - "aead", - "chacha20", - "cipher", "hybrid-array", - "poly1305", - "salsa20", - "subtle", - "zeroize", ] [[package]] @@ -890,7 +810,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto 0.2.9", @@ -906,11 +826,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f9200d1d13637f15a6acb71e758f64624048d85b31a5fdbfd8eca1e2687d0b7" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.10", "fiat-crypto 0.3.0", - "rand_core 0.9.3", + "rand_core 0.9.5", "rustc_version", "serde", "subtle", @@ -925,7 +845,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -949,7 +869,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -960,7 +880,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -979,9 +899,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "der" @@ -1000,7 +920,7 @@ version = "0.8.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02c1d73e9668ea6b6a28172aa55f3ebec38507131ce179051c8033b5c6037653" dependencies = [ - "const-oid 0.10.1", + "const-oid 0.10.2", "pem-rfc7468 1.0.0", "zeroize", ] @@ -1022,50 +942,60 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] -name = "derive_more" -version = "1.0.0" +name = "derive_builder" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "derive_more-impl 1.0.0", + "derive_builder_macro", ] [[package]] -name = "derive_more" -version = "2.1.0" +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "derive_more-impl 2.1.0", + "derive_builder_core", + "syn 2.0.114", ] [[package]] -name = "derive_more-impl" -version = "1.0.0" +name = "derive_more" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", - "unicode-xid", + "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 2.0.111", + "syn 2.0.114", "unicode-xid", ] @@ -1095,13 +1025,25 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.3" +version = "0.11.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d" +checksum = "afa94b64bfc6549e6e4b5a3216f22593224174083da7a90db47e951c4fb31725" dependencies = [ "block-buffer 0.11.0", - "const-oid 0.10.1", - "crypto-common 0.2.0-rc.4", + "const-oid 0.10.2", + "crypto-common 0.2.0", +] + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", ] [[package]] @@ -1112,7 +1054,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1159,13 +1101,13 @@ dependencies = [ [[package]] name = "ed25519" -version = "3.0.0-rc.2" +version = "3.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "594435fe09e345ee388e4e8422072ff7dfeca8729389fbd997b3f5504c44cd47" +checksum = "c6e914c7c52decb085cea910552e24c63ac019e3ab8bf001ff736da9a9d9d890" dependencies = [ - "pkcs8 0.11.0-rc.8", + "pkcs8 0.11.0-rc.10", "serde", - "signature 3.0.0-rc.5", + "signature 3.0.0-rc.10", ] [[package]] @@ -1190,11 +1132,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad207ed88a133091f83224265eac21109930db09bedcad05d5252f2af2de20a1" dependencies = [ "curve25519-dalek 5.0.0-pre.1", - "ed25519 3.0.0-rc.2", - "rand_core 0.9.3", + "ed25519 3.0.0-rc.4", + "rand_core 0.9.5", "serde", "sha2 0.11.0-rc.2", - "signature 3.0.0-rc.5", + "signature 3.0.0-rc.10", "subtle", "zeroize", ] @@ -1253,7 +1195,18 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", +] + +[[package]] +name = "enum-assoc" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed8956bd5c1f0415200516e78ff07ec9e16415ade83c056c230d7b7ea0d55b7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -1265,7 +1218,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1286,7 +1239,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1358,6 +1311,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fastbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4" +dependencies = [ + "getrandom 0.3.4", + "libm", + "rand 0.9.2", + "siphasher", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -1388,9 +1353,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixedbitset" @@ -1497,16 +1462,14 @@ dependencies = [ [[package]] name = "futures-concurrency" -version = "7.6.3" +version = "7.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb68017df91f2e477ed4bea586c59eaecaa47ed885a770d0444e21e62572cd2" +checksum = "175cd8cca9e1d45b87f18ffa75088f2099e3c4fe5e2f83e42de112560bea8ea6" dependencies = [ "fixedbitset", - "futures-buffered", "futures-core", "futures-lite", "pin-project", - "slab", "smallvec", ] @@ -1565,7 +1528,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1657,16 +1620,17 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" dependencies = [ "cc", "cfg-if", "libc", "log", "rustversion", - "windows 0.61.3", + "windows-link", + "windows-result", ] [[package]] @@ -1695,9 +1659,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -1720,6 +1684,20 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "rand_core 0.10.0", + "wasip2", + "wasip3", +] + [[package]] name = "gettext-rs" version = "0.7.7" @@ -1801,7 +1779,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1921,7 +1899,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1945,9 +1923,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -2111,7 +2089,7 @@ dependencies = [ "rand 0.9.2", "ring", "rustls", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tokio", "tokio-rustls", @@ -2136,7 +2114,7 @@ dependencies = [ "resolv-conf", "rustls", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-rustls", "tracing", @@ -2216,12 +2194,11 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hybrid-array" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f471e0a81b2f90ffc0cb2f951ae04da57de8baa46fa99112b062a5173a5088d0" +checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45" dependencies = [ "typenum", - "zeroize", ] [[package]] @@ -2266,14 +2243,13 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64", "bytes", "futures-channel", - "futures-core", "futures-util", "http", "http-body", @@ -2282,7 +2258,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.6.2", "tokio", "tower-service", "tracing", @@ -2290,9 +2266,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2300,7 +2276,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -2393,12 +2369,24 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "identity-hash" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfdd7caa900436d8f13b2346fe10257e0c05c1f1f9e351f4f5d57c03bd5f45da" + [[package]] name = "idna" version = "1.1.0" @@ -2458,33 +2446,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", -] - -[[package]] -name = "inout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7357b6e7aa75618c7864ebd0634b115a7218b0615f4cb1df33ac3eca23943d4" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", + "serde", + "serde_core", ] [[package]] @@ -2507,9 +2476,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -2517,24 +2486,21 @@ dependencies = [ [[package]] name = "iroh" -version = "0.95.1" +version = "0.96.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2374ba3cdaac152dc6ada92d971f7328e6408286faab3b7350842b2ebbed4789" +checksum = "5236da4d5681f317ec393c8fe2b7e3d360d31c6bb40383991d0b7429ca5ad117" dependencies = [ - "aead", "backon", "bytes", "cfg_aliases", - "crypto_box", "data-encoding", - "derive_more 2.1.0", + "derive_more", "ed25519-dalek 3.0.0-pre.1", "futures-util", "getrandom 0.3.4", "hickory-resolver", "http", "igd-next", - "instant", "iroh-base", "iroh-metrics", "iroh-quinn", @@ -2546,20 +2512,22 @@ dependencies = [ "n0-watcher", "netdev", "netwatch", + "papaya", "pin-project", "pkarr", - "pkcs8 0.11.0-rc.8", + "pkcs8 0.11.0-rc.10", "portmapper", "rand 0.9.2", "reqwest", + "rustc-hash", "rustls", "rustls-pki-types", - "rustls-platform-verifier", "rustls-webpki", "serde", "smallvec", "strum 0.27.2", "swarm-discovery", + "sync_wrapper", "time", "tokio", "tokio-stream", @@ -2568,22 +2536,23 @@ dependencies = [ "url", "wasm-bindgen-futures", "webpki-roots", - "z32", ] [[package]] name = "iroh-base" -version = "0.95.1" +version = "0.96.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a8c5fb1cc65589f0d7ab44269a76f615a8c4458356952c9b0ef1c93ea45ff8" +checksum = "20c99d836a1c99e037e98d1bf3ef209c3a4df97555a00ce9510eb78eccdf5567" dependencies = [ "curve25519-dalek 5.0.0-pre.1", "data-encoding", - "derive_more 2.1.0", + "derive_more", + "digest 0.11.0-rc.10", "ed25519-dalek 3.0.0-pre.1", "n0-error", - "rand_core 0.9.3", + "rand_core 0.9.5", "serde", + "sha2 0.11.0-rc.2", "url", "zeroize", "zeroize_derive", @@ -2591,13 +2560,14 @@ dependencies = [ [[package]] name = "iroh-gossip" -version = "0.95.0" -source = "git+https://github.com/p2panda/iroh-gossip?rev=6fad0f740c031876dbb412c7b8237776314d763e#6fad0f740c031876dbb412c7b8237776314d763e" +version = "0.96.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d04f83254c847ac61a9b2215b95a36d598d87af033ca12a546cd1c6a2e06dab" dependencies = [ "blake3", "bytes", "data-encoding", - "derive_more 2.1.0", + "derive_more", "ed25519-dalek 3.0.0-pre.1", "futures-concurrency", "futures-lite", @@ -2620,9 +2590,9 @@ dependencies = [ [[package]] name = "iroh-metrics" -version = "0.37.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e3381da7c93c12d353230c74bba26131d1c8bf3a4d8af0fec041546454582e" +checksum = "c946095f060e6e59b9ff30cc26c75cdb758e7fb0cde8312c89e2144654989fcb" dependencies = [ "iroh-metrics-derive", "itoa", @@ -2635,21 +2605,21 @@ dependencies = [ [[package]] name = "iroh-metrics-derive" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e12bd0763fd16062f5cc5e8db15dd52d26e75a8af4c7fb57ccee3589b344b8" +checksum = "cab063c2bfd6c3d5a33a913d4fdb5252f140db29ec67c704f20f3da7e8f92dbf" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "iroh-quinn" -version = "0.14.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde160ebee7aabede6ae887460cd303c8b809054224815addf1469d54a6fcf7" +checksum = "034ed21f34c657a123d39525d948c885aacba59508805e4dd67d71f022e7151b" dependencies = [ "bytes", "cfg_aliases", @@ -2658,28 +2628,35 @@ dependencies = [ "pin-project-lite", "rustc-hash", "rustls", - "socket2 0.5.10", - "thiserror 2.0.17", + "socket2 0.6.2", + "thiserror 2.0.18", "tokio", + "tokio-stream", "tracing", "web-time", ] [[package]] name = "iroh-quinn-proto" -version = "0.13.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "929d5d8fa77d5c304d3ee7cae9aede31f13908bd049f9de8c7c0094ad6f7c535" +checksum = "0de99ad8adc878ee0e68509ad256152ce23b8bbe45f5539d04e179630aca40a9" dependencies = [ "bytes", - "getrandom 0.2.16", - "rand 0.8.5", + "derive_more", + "enum-assoc", + "fastbloom", + "getrandom 0.3.4", + "identity-hash", + "lru-slab", + "rand 0.9.2", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "sorted-index-buffer", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -2687,29 +2664,28 @@ dependencies = [ [[package]] name = "iroh-quinn-udp" -version = "0.5.7" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53afaa1049f7c83ea1331f5ebb9e6ebc5fdd69c468b7a22dd598b02c9bcc973" +checksum = "f981dadd5a072a9e0efcd24bdcc388e570073f7e51b33505ceb1ef4668c80c86" dependencies = [ "cfg_aliases", "libc", - "once_cell", - "socket2 0.5.10", + "socket2 0.6.2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "iroh-relay" -version = "0.95.1" +version = "0.96.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fbdf2aeffa7d6ede1a31f6570866c2199b1cee96a0b563994623795d1bac2c" +checksum = "cd2b63e654b9dec799a73372cdc79b529ca6c7248c0c8de7da78a02e3a46f03c" dependencies = [ "blake3", "bytes", "cfg_aliases", "data-encoding", - "derive_more 2.1.0", + "derive_more", "getrandom 0.3.4", "hickory-resolver", "http", @@ -2720,7 +2696,7 @@ dependencies = [ "iroh-metrics", "iroh-quinn", "iroh-quinn-proto", - "lru 0.16.2", + "lru", "n0-error", "n0-future", "num_enum", @@ -2733,7 +2709,6 @@ dependencies = [ "rustls-pki-types", "serde", "serde_bytes", - "sha1 0.11.0-rc.2", "strum 0.27.2", "tokio", "tokio-rustls", @@ -2741,6 +2716,7 @@ dependencies = [ "tokio-websockets", "tracing", "url", + "vergen-gitcl", "webpki-roots", "ws_stream_wasm", "z32", @@ -2748,9 +2724,9 @@ dependencies = [ [[package]] name = "irpc" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bee97aaa18387c4f0aae61058195dc9f9dea3e41c0e272973fe3e9bf611563d" +checksum = "f1bbc84aaeab13a6d7502bae4f40f2517b643924842e0230ea0bf807477cc208" dependencies = [ "futures-util", "irpc-derive", @@ -2770,7 +2746,7 @@ checksum = "58148196d2230183c9679431ac99b57e172000326d664e8456fa2cd27af6505a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2799,37 +2775,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" dependencies = [ "once_cell", "wasm-bindgen", @@ -2850,6 +2804,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libadwaita" version = "0.8.1" @@ -2883,25 +2843,25 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.178" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags", "libc", - "redox_syscall", + "redox_syscall 0.7.0", ] [[package]] @@ -3007,8 +2967,8 @@ dependencies = [ [[package]] name = "loro" -version = "1.8.1" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +version = "1.10.3" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "enum-as-inner 0.6.1", "generic-btree", @@ -3022,8 +2982,8 @@ dependencies = [ [[package]] name = "loro-common" -version = "1.8.1" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +version = "1.10.0" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "arbitrary", "enum-as-inner 0.6.1", @@ -3039,8 +2999,8 @@ dependencies = [ [[package]] name = "loro-delta" -version = "1.6.0" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +version = "1.9.1" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "arrayvec", "enum-as-inner 0.5.1", @@ -3050,8 +3010,8 @@ dependencies = [ [[package]] name = "loro-internal" -version = "1.8.1" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +version = "1.10.3" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "append-only-bytes", "arref", @@ -3061,7 +3021,7 @@ dependencies = [ "enum-as-inner 0.6.1", "enum_dispatch", "generic-btree", - "getrandom 0.2.16", + "getrandom 0.2.17", "im", "itertools 0.12.1", "leb128", @@ -3077,6 +3037,8 @@ dependencies = [ "num-traits", "once_cell", "parking_lot", + "pest", + "pest_derive", "postcard", "pretty_assertions", "rand 0.8.5", @@ -3094,8 +3056,8 @@ dependencies = [ [[package]] name = "loro-kv-store" -version = "1.8.1" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +version = "1.10.0" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "bytes", "ensure-cov", @@ -3111,7 +3073,7 @@ dependencies = [ [[package]] name = "loro-rle" version = "1.6.0" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "append-only-bytes", "num", @@ -3127,7 +3089,7 @@ checksum = "3f3d053a135388e6b1df14e8af1212af5064746e9b87a06a345a7a779ee9695a" [[package]] name = "loro_fractional_index" version = "1.6.0" -source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.8.7#bf0297e6ebbc76c6c0313c91366871952f9274ff" +source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt%401.10.6#f9a6adb0366e426499234c1b82362a69ae90f1bd" dependencies = [ "once_cell", "rand 0.8.5", @@ -3136,15 +3098,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" - -[[package]] -name = "lru" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" dependencies = [ "hashbrown 0.16.1", ] @@ -3164,6 +3120,12 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "mac-addr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d25b0e0b648a86960ac23b7ad4abb9717601dec6f66c165f5b037f3f03065f" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -3200,9 +3162,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memoffset" @@ -3226,9 +3188,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.11" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" +checksum = "b4ac832c50ced444ef6be0767a008b02c106a909ba79d1d830501e94b96f6b7e" dependencies = [ "crossbeam-channel", "crossbeam-epoch", @@ -3236,7 +3198,6 @@ dependencies = [ "equivalent", "parking_lot", "portable-atomic", - "rustc_version", "smallvec", "tagptr", "uuid", @@ -3244,9 +3205,9 @@ dependencies = [ [[package]] name = "n0-error" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5969a2f40e9d9ed121a789c415f4114ac2b28e5731c080bdefee217d3b3fb" +checksum = "af4782b4baf92d686d161c15460c83d16ebcfd215918763903e9619842665cae" dependencies = [ "anyhow", "n0-error-macros", @@ -3255,23 +3216,23 @@ dependencies = [ [[package]] name = "n0-error-macros" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a6908df844696d9af91c7c3950d50e52d67df327d02a95367f95bbf177d6556" +checksum = "03755949235714b2b307e5ae89dd8c1c2531fb127d9b8b7b4adf9c876cd3ed18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "n0-future" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c0709ac8235ce13b82bc4d180ee3c42364b90c1a8a628c3422d991d75a728b5" +checksum = "e2ab99dfb861450e68853d34ae665243a88b8c493d01ba957321a1e9b2312bbe" dependencies = [ "cfg_aliases", - "derive_more 1.0.0", + "derive_more", "futures-buffered", "futures-lite", "futures-util", @@ -3287,29 +3248,34 @@ dependencies = [ [[package]] name = "n0-watcher" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38acf13c1ddafc60eb7316d52213467f8ccb70b6f02b65e7d97f7799b1f50be4" +checksum = "38795f7932e6e9d1c6e989270ef5b3ff24ebb910e2c9d4bed2d28d8bae3007dc" dependencies = [ - "derive_more 2.1.0", + "derive_more", "n0-error", "n0-future", ] [[package]] name = "netdev" -version = "0.38.2" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ab878b4c90faf36dab10ea51d48c69ae9019bcca47c048a7c9b273d5d7a823" +checksum = "dc9815643a243856e7bd84524e1ff739e901e846cfb06ad9627cd2b6d59bd737" dependencies = [ + "block2", + "dispatch2", "dlopen2", "ipnet", "libc", + "mac-addr", "netlink-packet-core", - "netlink-packet-route", + "netlink-packet-route 0.25.1", "netlink-sys", + "objc2-core-foundation", + "objc2-system-configuration", "once_cell", - "system-configuration", + "plist", "windows-sys 0.59.0", ] @@ -3335,7 +3301,19 @@ dependencies = [ ] [[package]] -name = "netlink-proto" +name = "netlink-packet-route" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce3636fa715e988114552619582b530481fd5ef176a1e5c1bf024077c2c9445" +dependencies = [ + "bitflags", + "libc", + "log", + "netlink-packet-core", +] + +[[package]] +name = "netlink-proto" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b65d130ee111430e47eed7896ea43ca693c387f097dd97376bffafbf25812128" @@ -3345,17 +3323,17 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "netlink-sys" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" +checksum = "cd6c30ed10fa69cc491d491b85cc971f6bdeb8e7367b7cde2ee6cc878d583fae" dependencies = [ "bytes", - "futures", + "futures-util", "libc", "log", "tokio", @@ -3363,14 +3341,14 @@ dependencies = [ [[package]] name = "netwatch" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f2acd376ef48b6c326abf3ba23c449e0cb8aa5c2511d189dd8a8a3bfac889b" +checksum = "454b8c0759b2097581f25ed5180b4a1d14c324fde6d0734932a288e044d06232" dependencies = [ "atomic-waker", "bytes", "cfg_aliases", - "derive_more 2.1.0", + "derive_more", "iroh-quinn-udp", "js-sys", "libc", @@ -3379,35 +3357,24 @@ dependencies = [ "n0-watcher", "netdev", "netlink-packet-core", - "netlink-packet-route", + "netlink-packet-route 0.28.0", "netlink-proto", "netlink-sys", + "objc2-core-foundation", + "objc2-system-configuration", "pin-project-lite", "serde", - "socket2 0.6.1", + "socket2 0.6.2", "time", "tokio", "tokio-util", "tracing", "web-sys", - "windows 0.62.2", - "windows-result 0.4.1", + "windows", + "windows-result", "wmi", ] -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - [[package]] name = "nonmax" version = "0.5.5" @@ -3422,7 +3389,7 @@ checksum = "c50f94c405726d3e0095e89e72f75ce7f6587b94a8bd8dc8054b73f65c0fd68c" dependencies = [ "base32", "document-features", - "getrandom 0.2.16", + "getrandom 0.2.17", "httpdate", "js-sys", "once_cell", @@ -3490,9 +3457,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-integer" @@ -3554,7 +3521,16 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", ] [[package]] @@ -3577,6 +3553,59 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags", + "block2", + "dispatch2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-security" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-system-configuration" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396" +dependencies = [ + "bitflags", + "dispatch2", + "libc", + "objc2", + "objc2-core-foundation", + "objc2-security", +] + [[package]] name = "objc_id" version = "0.1.1" @@ -3652,15 +3681,9 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - [[package]] name = "openssl-sys" version = "0.9.111" @@ -3685,8 +3708,8 @@ dependencies = [ [[package]] name = "p2panda-core" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "blake3", "ciborium", @@ -3695,27 +3718,27 @@ dependencies = [ "rand 0.8.5", "serde", "serde_bytes", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] -name = "p2panda-discovery-next" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +name = "p2panda-discovery" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "blake3", "futures-util", "rand 0.9.2", "rand_chacha 0.9.0", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", ] [[package]] -name = "p2panda-net-next" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +name = "p2panda-net" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "ciborium", "futures-channel", @@ -3725,13 +3748,14 @@ dependencies = [ "iroh-base", "iroh-gossip", "p2panda-core", - "p2panda-discovery-next", - "p2panda-sync-next", + "p2panda-discovery", + "p2panda-store", + "p2panda-sync", "ractor", "rand 0.9.2", "rand_chacha 0.9.0", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-util", @@ -3740,21 +3764,21 @@ dependencies = [ [[package]] name = "p2panda-store" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "ciborium", "hex", "p2panda-core", "sqlx", - "thiserror 2.0.17", + "thiserror 2.0.18", "trait-variant", ] [[package]] name = "p2panda-stream" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "ciborium", "futures-channel", @@ -3763,20 +3787,21 @@ dependencies = [ "p2panda-store", "pin-project", "pin-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] -name = "p2panda-sync-next" -version = "0.4.0" -source = "git+https://github.com/p2panda/p2panda?rev=a83a80b2ce0733c9437ceeaae33503d3b3742436#a83a80b2ce0733c9437ceeaae33503d3b3742436" +name = "p2panda-sync" +version = "0.5.0" +source = "git+https://github.com/p2panda/p2panda?rev=8969d8c70a8daf72fa3899c38992e1135504ceb0#8969d8c70a8daf72fa3899c38992e1135504ceb0" dependencies = [ "futures", "futures-util", "p2panda-core", "p2panda-store", + "pin-project-lite", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -3806,6 +3831,16 @@ dependencies = [ "system-deps", ] +[[package]] +name = "papaya" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92dd0b07c53a0a0c764db2ace8c541dc47320dad97c2200c2a637ab9dd2328f" +dependencies = [ + "equivalent", + "seize", +] + [[package]] name = "parking" version = "2.2.1" @@ -3830,9 +3865,9 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3865,6 +3900,49 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2 0.10.9", +] + [[package]] name = "pharos" version = "0.5.3" @@ -3892,7 +3970,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3920,9 +3998,9 @@ dependencies = [ [[package]] name = "pkarr" -version = "5.0.0" +version = "5.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "792c1328860f6874e90e3b387b4929819cc7783a6bd5a4728e918706eb436a48" +checksum = "e1d346b545765a0ef58b6a7e160e17ddaa7427f439b7b9a287df6c88c9e04bf2" dependencies = [ "async-compat", "base32", @@ -3935,14 +4013,14 @@ dependencies = [ "futures-lite", "getrandom 0.3.4", "log", - "lru 0.13.0", + "lru", "ntimestamp", "reqwest", "self_cell", "serde", "sha1_smol", "simple-dns", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "url", @@ -3972,9 +4050,9 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.11.0-rc.8" +version = "0.11.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77089aec8290d0b7bb01b671b091095cf1937670725af4fd73d47249f03b12c0" +checksum = "b226d2cc389763951db8869584fd800cbbe2962bf454e2edeb5172b31ee99774" dependencies = [ "der 0.8.0-rc.10", "spki 0.8.0-rc.4", @@ -3986,6 +4064,19 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plist" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +dependencies = [ + "base64", + "indexmap", + "quick-xml", + "serde", + "time", +] + [[package]] name = "polling" version = "3.11.0" @@ -4000,31 +4091,21 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "poly1305" -version = "0.9.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb78a635f75d76d856374961deecf61031c0b6f928c83dc9c0924ab6c019c298" -dependencies = [ - "cpufeatures", - "universal-hash", -] - [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portmapper" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b575f975dcf03e258b0c7ab3f81497d7124f508884c37da66a7314aa2a8d467" +checksum = "7d2a8825353ace3285138da3378b1e21860d60351942f7aa3b99b13b41f80318" dependencies = [ "base64", "bytes", - "derive_more 2.1.0", + "derive_more", "futures-lite", "futures-util", "hyper-util", @@ -4037,7 +4118,7 @@ dependencies = [ "rand 0.9.2", "serde", "smallvec", - "socket2 0.6.1", + "socket2 0.6.2", "time", "tokio", "tokio-util", @@ -4068,7 +4149,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4105,6 +4186,16 @@ dependencies = [ "yansi", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.114", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -4116,13 +4207,22 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + [[package]] name = "quick_cache" version = "0.6.18" @@ -4148,8 +4248,8 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.1", - "thiserror 2.0.17", + "socket2 0.6.2", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -4170,7 +4270,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -4185,16 +4285,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.6.2", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] @@ -4207,9 +4307,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "ractor" -version = "0.15.9" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9500e0be6f12a0539cb1154d654ef2e888bf8529164e54aff4a097baad5bb001" +checksum = "6102314f700f3e8df466c49110830b18cbfc172f88f27a9d7383e455663b1be7" dependencies = [ "bon", "dashmap", @@ -4243,7 +4343,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" +dependencies = [ + "chacha20", + "getrandom 0.4.1", + "rand_core 0.10.0", ] [[package]] @@ -4263,7 +4374,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" +dependencies = [ + "ppv-lite86", + "rand_core 0.10.0", ] [[package]] @@ -4272,18 +4393,24 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + [[package]] name = "rand_xoshiro" version = "0.6.0" @@ -4302,6 +4429,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +dependencies = [ + "bitflags", +] + [[package]] name = "reflection" version = "0.1.0" @@ -4316,7 +4452,7 @@ dependencies = [ "oo7", "reflection-doc", "sourceview5", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "tracing-subscriber", ] @@ -4325,18 +4461,17 @@ dependencies = [ name = "reflection-doc" version = "0.1.0" dependencies = [ - "anyhow", "async-channel", "gio", "glib", "hex", "indexmap", "loro", - "rand 0.9.2", + "rand 0.10.0", "reflection-node", "serde", "test-log", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] @@ -4349,17 +4484,17 @@ dependencies = [ "hex", "iroh", "p2panda-core", - "p2panda-discovery-next", - "p2panda-net-next", + "p2panda-discovery", + "p2panda-net", "p2panda-store", "p2panda-stream", - "p2panda-sync-next", - "rand_chacha 0.9.0", + "p2panda-sync", + "rand_chacha 0.10.0", "serde", "serde_bytes", "sqlx", "test-log", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -4367,9 +4502,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -4379,9 +4514,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -4390,15 +4525,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" [[package]] name = "reqwest" -version = "0.12.25" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", @@ -4449,7 +4584,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -4457,9 +4592,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ "const-oid 0.9.6", "digest 0.10.7", @@ -4492,9 +4627,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags", "errno", @@ -4505,9 +4640,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "log", "once_cell", @@ -4518,60 +4653,21 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - [[package]] name = "rustls-pki-types" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ "web-time", "zeroize", ] -[[package]] -name = "rustls-platform-verifier" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" -dependencies = [ - "core-foundation 0.10.1", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki", - "security-framework", - "security-framework-sys", - "webpki-root-certs 0.26.11", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - [[package]] name = "rustls-webpki" -version = "0.103.8" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ "ring", "rustls-pki-types", @@ -4586,37 +4682,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "salsa20" -version = "0.11.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3ff3b81c8a6e381bc1673768141383f9328048a60edddcfc752a8291a138443" -dependencies = [ - "cfg-if", - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.28" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "scoped-tls" @@ -4631,33 +4699,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "security-framework" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" -dependencies = [ - "bitflags", - "core-foundation 0.10.1", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" +name = "seize" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521" dependencies = [ - "core-foundation-sys", "libc", + "windows-sys 0.61.2", ] [[package]] name = "self_cell" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" +checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" [[package]] name = "semver" @@ -4713,7 +4768,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4733,20 +4788,20 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -4757,14 +4812,14 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -4781,16 +4836,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serdect" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3ef0e35b322ddfaecbc60f34ab448e157e48531288ee49fafbb053696b8ffe2" -dependencies = [ - "base16ct", - "serde", -] - [[package]] name = "sha1" version = "0.10.6" @@ -4798,24 +4843,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] [[package]] -name = "sha1" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e046edf639aa2e7afb285589e5405de2ef7e61d4b0ac1e30256e3eab911af9" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.11.0-rc.3", -] - -[[package]] -name = "sha1_smol" -version = "1.0.1" +name = "sha1_smol" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" @@ -4826,7 +4860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -4837,8 +4871,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" dependencies = [ "cfg-if", - "cpufeatures", - "digest 0.11.0-rc.3", + "cpufeatures 0.2.17", + "digest 0.11.0-rc.10", ] [[package]] @@ -4858,10 +4892,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -4877,9 +4912,9 @@ dependencies = [ [[package]] name = "signature" -version = "3.0.0-rc.5" +version = "3.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0251c9d6468f4ba853b6352b190fb7c1e405087779917c238445eb03993826" +checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3" [[package]] name = "simdutf8" @@ -4896,6 +4931,12 @@ dependencies = [ "bitflags", ] +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + [[package]] name = "sized-chunks" version = "0.6.5" @@ -4908,9 +4949,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" @@ -4939,14 +4980,20 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" dependencies = [ "libc", "windows-sys 0.60.2", ] +[[package]] +name = "sorted-index-buffer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea06cc588e43c632923a55450401b8f25e628131571d4e1baea1bdfdb2b5ed06" + [[package]] name = "sourceview5" version = "0.10.0" @@ -4990,7 +5037,7 @@ checksum = "c87e960f4dca2788eeb86bbdde8dd246be8948790b7618d656e68f9b720a86e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5069,7 +5116,7 @@ dependencies = [ "serde_json", "sha2 0.10.9", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -5086,7 +5133,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5109,7 +5156,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.111", + "syn 2.0.114", "tokio", "url", ] @@ -5147,12 +5194,12 @@ dependencies = [ "rand 0.8.5", "rsa", "serde", - "sha1 0.10.6", + "sha1", "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -5190,7 +5237,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -5215,7 +5262,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "url", ] @@ -5226,12 +5273,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "stringprep" version = "0.1.5" @@ -5277,7 +5318,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5289,7 +5330,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5300,15 +5341,15 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "swarm-discovery" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790d8444f7db1e88f70aed3234cab8e42c48e05360bfc86ca7dce0d9a5d95d26" +checksum = "1a5ab62937edac8b23fa40e55a358ea1924245b17fc1eb20d14929c8f11be98d" dependencies = [ "acto", "hickory-proto", "rand 0.9.2", - "socket2 0.5.10", - "thiserror 2.0.17", + "socket2 0.6.2", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -5326,9 +5367,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -5352,28 +5393,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", + "syn 2.0.114", ] [[package]] @@ -5409,9 +5429,9 @@ checksum = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", @@ -5439,7 +5459,7 @@ checksum = "be35209fd0781c5401458ab66e4f98accf63553e8fae7425503e92fdd319783b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5453,11 +5473,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -5468,18 +5488,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5493,23 +5513,37 @@ dependencies = [ [[package]] name = "time" -version = "0.3.44" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", + "itoa", "js-sys", + "libc", "num-conv", + "num_threads", "powerfmt", - "serde", + "serde_core", "time-core", + "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] [[package]] name = "tinystr" @@ -5538,16 +5572,16 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", "mio", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2 0.6.2", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -5561,7 +5595,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5576,9 +5610,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -5588,9 +5622,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -5625,9 +5659,9 @@ dependencies = [ [[package]] name = "tokio_with_wasm" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dfba9b946459940fb564dcf576631074cdfb0bfe4c962acd4c31f0dca7897e6" +checksum = "34e40fbbbd95441133fe9483f522db15dbfd26dc636164ebd8f2dd28759a6aa6" dependencies = [ "js-sys", "tokio", @@ -5639,19 +5673,19 @@ dependencies = [ [[package]] name = "tokio_with_wasm_proc" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e04c1865c281139e5ccf633cb9f76ffdaabeebfe53b703984cf82878e2aabb" +checksum = "d01145a2c788d6aae4cd653afec1e8332534d7d783d01897cefcafe4428de992" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "toml" -version = "0.9.8" +version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "indexmap", "serde_core", @@ -5664,18 +5698,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.9" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap", "toml_datetime", @@ -5685,24 +5719,24 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", @@ -5745,9 +5779,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -5763,14 +5797,14 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -5813,7 +5847,7 @@ checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5834,6 +5868,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "uds_windows" version = "1.1.0" @@ -5853,9 +5893,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" [[package]] name = "unicode-normalization" @@ -5884,16 +5924,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "universal-hash" -version = "0.6.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55be643b40a21558f44806b53ee9319595bc7ca6896372e4e08e5d7d83c9cd6" -dependencies = [ - "crypto-common 0.2.0-rc.4", - "subtle", -] - [[package]] name = "untrusted" version = "0.9.0" @@ -5902,14 +5932,15 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -5926,9 +5957,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" dependencies = [ "getrandom 0.3.4", "js-sys", @@ -5948,6 +5979,54 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vergen" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", + "vergen-lib 9.1.0", +] + +[[package]] +name = "vergen-gitcl" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9dfc1de6eb2e08a4ddf152f1b179529638bedc0ea95e6d667c014506377aefe" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", + "time", + "vergen", + "vergen-lib 0.1.6", +] + +[[package]] +name = "vergen-lib" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", +] + +[[package]] +name = "vergen-lib" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", +] + [[package]] name = "version-compare" version = "0.2.1" @@ -5960,16 +6039,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" version = "0.3.1" @@ -5987,9 +6056,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ "wit-bindgen", ] @@ -6002,9 +6080,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ "cfg-if", "once_cell", @@ -6015,11 +6093,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.56" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -6028,9 +6107,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6038,26 +6117,48 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + [[package]] name = "wasm-streams" version = "0.4.2" @@ -6071,11 +6172,23 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.83" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", @@ -6091,29 +6204,11 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-root-certs" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" -dependencies = [ - "webpki-root-certs 1.0.4", -] - -[[package]] -name = "webpki-root-certs" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "webpki-roots" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" dependencies = [ "rustls-pki-types", ] @@ -6150,53 +6245,22 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections 0.2.0", - "windows-core 0.61.2", - "windows-future 0.2.1", - "windows-link 0.1.3", - "windows-numerics 0.2.0", -] - [[package]] name = "windows" version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ - "windows-collections 0.3.2", - "windows-core 0.62.2", - "windows-future 0.3.2", - "windows-numerics 0.3.1", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", ] [[package]] @@ -6205,20 +6269,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core 0.62.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-core", ] [[package]] @@ -6229,20 +6280,9 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading 0.1.0", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -6251,9 +6291,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.62.2", - "windows-link 0.2.1", - "windows-threading 0.2.1", + "windows-core", + "windows-link", + "windows-threading", ] [[package]] @@ -6264,7 +6304,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6275,48 +6315,23 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - [[package]] name = "windows-numerics" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.62.2", - "windows-link 0.2.1", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", + "windows-core", + "windows-link", ] [[package]] @@ -6325,16 +6340,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -6343,16 +6349,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", + "windows-link", ] [[package]] @@ -6397,22 +6394,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-link", ] [[package]] @@ -6452,7 +6434,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -6463,30 +6445,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows-threading" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6505,12 +6472,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6529,12 +6490,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6565,12 +6520,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6589,12 +6538,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6613,12 +6556,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6637,12 +6574,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6682,23 +6613,105 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap", + "prettyplease", + "syn 2.0.114", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.114", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "wmi" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120d8c2b6a7c96c27bf4a7947fd7f02d73ca7f5958b8bd72a696e46cb5521ee6" +checksum = "746791db82f029aaefc774ccbb8e61306edba18ef2c8998337cadccc0b8067f7" dependencies = [ "chrono", "futures", "log", "serde", - "thiserror 2.0.17", - "windows 0.62.2", - "windows-core 0.62.2", + "thiserror 2.0.18", + "windows", + "windows-core", ] [[package]] @@ -6720,7 +6733,7 @@ dependencies = [ "pharos", "rustc_version", "send_wrapper", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6772,7 +6785,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -6784,9 +6797,9 @@ checksum = "2164e798d9e3d84ee2c91139ace54638059a3b23e361f5c11781c2c6459bde0f" [[package]] name = "zbus" -version = "5.12.0" +version = "5.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" +checksum = "1bfeff997a0aaa3eb20c4652baf788d2dfa6d2839a0ead0b3ff69ce2f9c4bdd1" dependencies = [ "async-broadcast", "async-executor", @@ -6802,8 +6815,9 @@ dependencies = [ "futures-core", "futures-lite", "hex", - "nix", + "libc", "ordered-stream", + "rustix", "serde", "serde_repr", "tracing", @@ -6818,14 +6832,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.12.0" +version = "5.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" +checksum = "0bbd5a90dbe8feee5b13def448427ae314ccd26a49cac47905cafefb9ff846f1" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "zbus_names", "zvariant", "zvariant_utils", @@ -6833,34 +6847,33 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.2.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", - "static_assertions", "winnow", "zvariant", ] [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6880,7 +6893,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -6895,13 +6908,13 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6934,14 +6947,20 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] +[[package]] +name = "zmij" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7" + [[package]] name = "zvariant" -version = "5.8.0" +version = "5.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" +checksum = "68b64ef4f40c7951337ddc7023dd03528a57a3ce3408ee9da5e948bd29b232c4" dependencies = [ "endi", "enumflags2", @@ -6954,26 +6973,26 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.8.0" +version = "5.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" +checksum = "484d5d975eb7afb52cc6b929c13d3719a20ad650fea4120e6310de3fc55e415c" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.111", + "syn 2.0.114", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 9a8dcb2e..04c5a774 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,3 @@ [workspace] resolver = "2" -members = ["reflection-app", "reflection-doc", "reflection-node"] +members = ["reflection-app", "reflection-doc", "reflection-node"] \ No newline at end of file diff --git a/reflection-app/Cargo.toml b/reflection-app/Cargo.toml index a81bb8da..97a9b496 100644 --- a/reflection-app/Cargo.toml +++ b/reflection-app/Cargo.toml @@ -14,7 +14,7 @@ gettext-rs = { version = "0.7", features = ["gettext-system"] } gtk = { version = "0.10", package = "gtk4", features = ["gnome_48", "v4_20", "blueprint"] } sourceview = { package = "sourceview5", version = "0.10" } tracing = "0.1" -tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } +tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } ashpd = { version = "0.12", default-features = false, features = ["tracing", "async-std"] } thiserror = { version = "2.0" } futures-util = "0.3" diff --git a/reflection-app/src/application.rs b/reflection-app/src/application.rs index 899ed24a..92dcb675 100644 --- a/reflection-app/src/application.rs +++ b/reflection-app/src/application.rs @@ -367,7 +367,9 @@ impl ReflectionApplication { let dialog = adw::AlertDialog::builder() .heading(gettext("Delete Pad?")) .body_use_markup(true) - .body(gettext("This pad may be stored on other devices, and will only be deleted from this one.")) + .body(gettext( + "This pad may be stored on other devices, and will only be deleted from this one.", + )) .default_response("confirm") .close_response("cancel") .build(); diff --git a/reflection-app/src/open_dialog/mod.rs b/reflection-app/src/open_dialog/mod.rs index 33aefa39..6709f4a3 100644 --- a/reflection-app/src/open_dialog/mod.rs +++ b/reflection-app/src/open_dialog/mod.rs @@ -111,8 +111,7 @@ mod imp { this.open_document_button .set_label(&gettext("Switch to Existing Window")); } else { - this.open_document_button - .set_label(&gettext("Open Pad")); + this.open_document_button.set_label(&gettext("Open Pad")); } } )); diff --git a/reflection-doc/Cargo.toml b/reflection-doc/Cargo.toml index 05535189..aebb3119 100644 --- a/reflection-doc/Cargo.toml +++ b/reflection-doc/Cargo.toml @@ -9,15 +9,14 @@ authors = [ [dependencies] reflection-node = { path = "../reflection-node" } -anyhow = "1.0.100" async-channel = "2.5.0" glib = "0.21" gio = "0.21" -loro = { tag = "loro-crdt@1.8.7", git = "https://github.com/loro-dev/loro.git" } -thiserror = "2.0.17" +loro = { tag = "loro-crdt@1.10.6", git = "https://github.com/loro-dev/loro.git" } +thiserror = "2.0.18" tracing = "0.1" -test-log = { version = "0.2.18", default-features = false, features = ["trace", "color"] } +test-log = { version = "0.2.19", default-features = false, features = ["trace", "color"] } serde = { version = "1.0.228", features = ["derive"] } -rand = "0.9.2" +rand = "0.10.0" hex = "0.4.3" -indexmap = "2.12.0" +indexmap = "2.13.0" diff --git a/reflection-doc/src/document.rs b/reflection-doc/src/document.rs index 4b1b6a42..8cbaad9c 100644 --- a/reflection-doc/src/document.rs +++ b/reflection-doc/src/document.rs @@ -2,7 +2,6 @@ use std::fmt; use std::hash::Hash; use std::sync::Arc; -use anyhow::Result; use glib::prelude::*; use glib::subclass::{Signal, prelude::*}; use glib::{Properties, clone}; @@ -10,7 +9,10 @@ pub use hex::FromHexError; use loro::{ExportMode, LoroDoc, LoroText, event::Diff}; use p2panda_core::cbor::{decode_cbor, encode_cbor}; use reflection_node::p2panda_core; -use reflection_node::topic::{SubscribableTopic, Subscription as TopicSubscription}; +use reflection_node::topic::{ + SubscribableTopic, Subscription as TopicSubscription, + SubscriptionError as TopicSubscriptionError, +}; use tracing::error; use crate::author::Author; @@ -18,6 +20,30 @@ use crate::authors::Authors; use crate::identity::PublicKey; use crate::service::Service; +#[derive(Debug, Copy, Clone, glib::ErrorDomain)] +#[error_domain(name = "reflection-document")] +enum DocumentError { + Failed, + Node, + CRDT, +} + +impl DocumentError { + fn from_loro_error(error: loro::LoroError) -> glib::Error { + glib::Error::new(DocumentError::CRDT, &error.to_string()) + } + + fn from_node_error(error: TopicSubscriptionError) -> glib::Error { + glib::Error::new(DocumentError::CRDT, &error.to_string()) + } +} + +/*impl From for glib::error::Error { + fn from(error: loro::LoroError) -> Self { + glib::error::Error::new(DocumentError::CRDT, &error.to_string()); + } +}*/ + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, glib::Boxed)] #[boxed_type(name = "ReflectionDocumentId", nullable)] pub struct DocumentId([u8; 32]); @@ -239,21 +265,21 @@ mod imp { } } - pub fn insert_text(&self, index: usize, chunk: &str) -> Result<()> { + pub fn insert_text(&self, index: usize, chunk: &str) -> Result<(), glib::Error> { let doc = self.crdt_doc.get().expect("crdt_doc to be set"); let text = doc.get_text(&*TEXT_CONTAINER_ID); - text.insert(index, chunk)?; + text.insert(index, chunk).map_err(DocumentError::from_loro_error)?; doc.commit(); Ok(()) } - pub fn delete_text(&self, index: usize, len: usize) -> Result<()> { + pub fn delete_text(&self, index: usize, len: usize) -> Result<(), glib::Error> { let doc = self.crdt_doc.get().expect("crdt_doc to be set"); let text = doc.get_text(&*TEXT_CONTAINER_ID); - text.delete(index, len)?; + text.delete(index, len).map_err(DocumentError::from_loro_error)?; doc.commit(); Ok(()) @@ -663,6 +689,9 @@ mod imp { glib::types::Type::I32, ]) .build(), + Signal::builder("error") + .param_types([glib::Error::static_type()]) + .build(), ] }) } @@ -717,11 +746,11 @@ impl Document { .build() } - pub fn insert_text(&self, pos: i32, text: &str) -> Result<()> { + pub fn insert_text(&self, pos: i32, text: &str) -> Result<(), glib::Error> { self.imp().insert_text(pos as usize, text) } - pub fn delete_range(&self, start_pos: i32, end_pos: i32) -> Result<()> { + pub fn delete_range(&self, start_pos: i32, end_pos: i32) -> Result<(), glib::Error> { self.imp() .delete_text(start_pos as usize, (end_pos - start_pos) as usize) } @@ -934,4 +963,14 @@ impl SubscribableTopic for DocumentHandle { }); } } + + fn error(&self, error: TopicSubscriptionError) { + if let Some(document) = self.0.upgrade() { + document.main_context().invoke(move || { + error!("Network error received for subscribed document: {error}"); + let glib_error = DocumentError::from_node_error(error); + document.emit_by_name::<()>("error", &[&glib_error]); + }); + } + } } diff --git a/reflection-doc/src/service.rs b/reflection-doc/src/service.rs index 67bba885..6b737f3b 100644 --- a/reflection-doc/src/service.rs +++ b/reflection-doc/src/service.rs @@ -95,9 +95,9 @@ mod imp { connection_mode }; - node.set_connection_mode(real_connection_mode) - .await - .unwrap(); + if let Err(error) = node.set_connection_mode(real_connection_mode).await { + error!("Failed to startup network: {error}"); + } } } @@ -174,15 +174,7 @@ impl Service { let private_key = self.private_key().0; let network_id = Hash::new(b"reflection"); let path = self.data_dir().and_then(|data_dir| data_dir.path()); - let node = Node::new( - private_key, - network_id, - path.as_deref(), - // gio::NetworkManager is slow to initialize the `network-available` property, - // so it might be incorrect therefore always start with no connection. - node::ConnectionMode::None, - ) - .await?; + let node = Node::new(private_key, network_id, path.as_deref()).await?; self.imp() .node diff --git a/reflection-node/Cargo.toml b/reflection-node/Cargo.toml index d6b00ec6..d610f147 100644 --- a/reflection-node/Cargo.toml +++ b/reflection-node/Cargo.toml @@ -9,22 +9,22 @@ authors = [ ] [dependencies] -thiserror = "2.0.17" -chrono = "0.4.42" +thiserror = "2.0.18" +chrono = "0.4.43" ciborium = "0.2.2" -p2panda-core = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436" } -p2panda-discovery = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436", package = "p2panda-discovery-next" } -p2panda-net = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436", package = "p2panda-net-next" } -p2panda-store = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436", features = ["sqlite"], default-features = false } -p2panda-stream = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436" } -p2panda-sync = { git = "https://github.com/p2panda/p2panda", rev = "a83a80b2ce0733c9437ceeaae33503d3b3742436", package = "p2panda-sync-next" } +p2panda-core = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0" } +p2panda-discovery = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0" } +p2panda-net = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0" } +p2panda-store = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0", features = ["sqlite"], default-features = false } +p2panda-stream = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0" } +p2panda-sync = { git = "https://github.com/p2panda/p2panda", rev = "8969d8c70a8daf72fa3899c38992e1135504ceb0" } serde = { version = "1.0.228", features = ["derive"] } serde_bytes = "0.11.19" sqlx = { version = "0.8.6", features = ["runtime-tokio", "sqlite", "chrono"], default-features = false } -tokio = { version = "1.48.0", features = ["rt", "sync"] } -tokio-stream = "0.1.17" +tokio = { version = "1.49.0", features = ["rt", "sync"] } +tokio-stream = "0.1.18" tracing = "0.1" -test-log = { version = "0.2.18", default-features = false, features = ["trace", "color"] } +test-log = { version = "0.2.19", default-features = false, features = ["trace", "color"] } hex = "0.4.3" -rand_chacha = { version = "0.9.0", features = ["os_rng"] } -iroh = "0.95.1" +rand_chacha = "0.10.0" +iroh = "0.96.1" diff --git a/reflection-node/src/author_tracker.rs b/reflection-node/src/author_tracker.rs index a7d57911..f665f2b1 100644 --- a/reflection-node/src/author_tracker.rs +++ b/reflection-node/src/author_tracker.rs @@ -10,7 +10,7 @@ use crate::topic::SubscribableTopic; use chrono::Utc; use p2panda_core::cbor::{DecodeError, decode_cbor, encode_cbor}; use p2panda_core::{PrivateKey, PublicKey}; -use p2panda_net::streams::EphemeralStream; +use p2panda_net::gossip::GossipHandle; use tokio::sync::{Mutex, RwLock}; use tracing::error; @@ -47,7 +47,7 @@ pub struct AuthorTracker { last_ping: Mutex>, subscribable_topic: Arc, node: Arc, - tx: RwLock>, + tx: RwLock>, } impl AuthorTracker { @@ -60,7 +60,7 @@ impl AuthorTracker { }) } - pub async fn set_topic_tx(&self, tx: Option) { + pub async fn set_topic_tx(&self, tx: Option) { let mut tx_guard = self.tx.write().await; // Send good bye message to the network if let Some(tx) = tx_guard.as_ref() { @@ -174,7 +174,7 @@ impl AuthorTracker { } } -async fn send_message(private_key: &PrivateKey, tx: &EphemeralStream, message: AuthorMessage) { +async fn send_message(private_key: &PrivateKey, tx: &GossipHandle, message: AuthorMessage) { // FIXME: We need to add the current time to the message, // because iroh doesn't broadcast twice the same message message. let author_message = match encode_cbor(&(&message, SystemTime::now())) { diff --git a/reflection-node/src/lib.rs b/reflection-node/src/lib.rs index bcd59d83..5eb23d16 100644 --- a/reflection-node/src/lib.rs +++ b/reflection-node/src/lib.rs @@ -1,5 +1,6 @@ mod author_tracker; mod ephemerial_operation; +mod network; pub mod node; mod node_inner; mod operation; diff --git a/reflection-node/src/network.rs b/reflection-node/src/network.rs new file mode 100644 index 00000000..212e572b --- /dev/null +++ b/reflection-node/src/network.rs @@ -0,0 +1,126 @@ +use std::sync::LazyLock; + +use p2panda_net::Discovery; +use p2panda_net::discovery::DiscoveryError; +use thiserror::Error; +use tracing::error; + +use p2panda_core::Hash; +use p2panda_core::PrivateKey; +use p2panda_net::address_book::{AddressBook, AddressBookError}; +use p2panda_net::addrs::NodeInfo; +use p2panda_net::gossip::{Gossip, GossipError}; +use p2panda_net::iroh_endpoint::{Endpoint, EndpointError}; +use p2panda_net::iroh_mdns::{MdnsDiscovery, MdnsDiscoveryError, MdnsDiscoveryMode}; + +use crate::operation::ReflectionExtensions; +use crate::operation_store::OperationStore; +use crate::topic_store::{LogId, TopicStore}; + +static RELAY_URL: LazyLock = LazyLock::new(|| { + "https://euc1-1.relay.n0.iroh-canary.iroh.link" + .parse() + .expect("valid relay URL") +}); + +static BOOTSTRAP_NODE: LazyLock = LazyLock::new(|| { + let endpoint_addr = iroh::EndpointAddr::new( + "9f63a15ab95959a992af96bf72fbc3e7dc98eeb4799f788bb07b20125053e795" + .parse() + .expect("valid bootstrap node id"), + ) + .with_relay_url(RELAY_URL.clone()); + NodeInfo::from(endpoint_addr).bootstrap() +}); + +pub type LogSync = p2panda_net::sync::LogSync< + p2panda_store::SqliteStore, + LogId, + ReflectionExtensions, + TopicStore, +>; +pub type LogSyncError = p2panda_net::sync::LogSyncError; + +#[derive(Error, Debug)] +pub enum NetworkError { + #[error(transparent)] + Gossip(#[from] GossipError), + #[error(transparent)] + LogSync(#[from] LogSyncError), + #[error(transparent)] + AddressBook(#[from] AddressBookError), + #[error(transparent)] + MdnsDiscovery(#[from] MdnsDiscoveryError), + #[error(transparent)] + Discovery(#[from] DiscoveryError), + #[error(transparent)] + Endpoint(#[from] EndpointError), +} + +#[allow(dead_code)] +pub struct Network { + pub(crate) mdns_discovery: MdnsDiscovery, + pub(crate) discovery: Discovery, + pub(crate) gossip: Gossip, + pub(crate) log_sync: LogSync, + pub(crate) endpoint: Endpoint, +} + +// FIXME: Endpoint, LogSync, MdnsDiscovery, and Gossip should implement debug +impl std::fmt::Debug for Network { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Network").finish() + } +} + +impl Network { + pub async fn new( + private_key: &PrivateKey, + network_id: &Hash, + topic_store: &TopicStore, + operation_store: &OperationStore, + ) -> Result { + let address_book = AddressBook::builder().spawn().await?; + + if let Err(error) = address_book.insert_node_info(BOOTSTRAP_NODE.clone()).await { + error!("Failed to add bootstrap node to the address book: {error}"); + } + + let endpoint = Endpoint::builder(address_book.clone()) + .network_id(network_id.into()) + .private_key(private_key.clone()) + .relay_url(RELAY_URL.clone()) + .spawn() + .await?; + + let mdns_discovery = MdnsDiscovery::builder(address_book.clone(), endpoint.clone()) + .mode(MdnsDiscoveryMode::Active) + .spawn() + .await?; + + let discovery = Discovery::builder(address_book.clone(), endpoint.clone()) + .spawn() + .await?; + + let gossip = Gossip::builder(address_book.clone(), endpoint.clone()) + .spawn() + .await?; + + let log_sync = LogSync::builder( + operation_store.clone_inner(), + topic_store.clone(), + endpoint.clone(), + gossip.clone(), + ) + .spawn() + .await?; + + Ok(Network { + mdns_discovery, + discovery, + gossip, + log_sync, + endpoint, + }) + } +} diff --git a/reflection-node/src/node.rs b/reflection-node/src/node.rs index e8a03306..d1b27025 100644 --- a/reflection-node/src/node.rs +++ b/reflection-node/src/node.rs @@ -7,6 +7,7 @@ use p2panda_net::TopicId; use thiserror::Error; use tracing::info; +use crate::network::NetworkError; use crate::node_inner::NodeInner; use crate::topic::{SubscribableTopic, Subscription, TopicError}; pub use crate::topic_store::Author; @@ -22,6 +23,8 @@ pub enum NodeError { Datebase(#[from] sqlx::Error), #[error(transparent)] DatebaseMigration(#[from] sqlx::migrate::MigrateError), + #[error(transparent)] + Network(#[from] NetworkError), } #[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] @@ -68,7 +71,6 @@ impl Node { private_key: PrivateKey, network_id: Hash, db_location: Option<&Path>, - connection_mode: ConnectionMode, ) -> Result { let runtime = if let Ok(handle) = tokio::runtime::Handle::try_current() { OwnedRuntimeOrHandle::Handle(handle) @@ -82,9 +84,7 @@ impl Node { let db_file = db_location.map(|location| location.join("database.sqlite")); let inner = runtime - .spawn(async move { - NodeInner::new(network_id, private_key, db_file, connection_mode).await - }) + .spawn(async move { NodeInner::new(network_id, private_key, db_file).await }) .await??; Ok(Self { @@ -99,10 +99,8 @@ impl Node { ) -> Result<(), NodeError> { let inner_clone = self.inner.clone(); self.runtime - .spawn(async move { - inner_clone.set_connection_mode(connection_mode).await; - }) - .await?; + .spawn(async move { inner_clone.set_connection_mode(connection_mode).await }) + .await??; Ok(()) } diff --git a/reflection-node/src/node_inner.rs b/reflection-node/src/node_inner.rs index c91f7acc..ba951f82 100644 --- a/reflection-node/src/node_inner.rs +++ b/reflection-node/src/node_inner.rs @@ -1,34 +1,21 @@ use std::path::PathBuf; -use std::sync::{Arc, LazyLock}; +use std::sync::Arc; use crate::ephemerial_operation::EphemerialOperation; +use crate::network::{Network, NetworkError}; use crate::node::{ConnectionMode, NodeError}; -use crate::operation::ReflectionExtensions; use crate::operation_store::OperationStore; use crate::subscription_inner::SubscriptionInner; use crate::topic::{SubscribableTopic, TopicError}; -use crate::topic_store::{LogId, TopicStore}; +use crate::topic_store::TopicStore; use crate::utils::CombinedMigrationSource; use p2panda_core::{Hash, PrivateKey}; -use p2panda_discovery::address_book::AddressBookStore; -use p2panda_discovery::address_book::memory::MemoryStore as MemoryAddressBook; -use p2panda_net::{MdnsDiscoveryMode, NodeInfo, TopicId}; -use p2panda_net::{Network, NetworkBuilder}; +use p2panda_net::TopicId; use p2panda_store::sqlite::store::migrations as operation_store_migrations; -use p2panda_sync::managers::topic_sync_manager::TopicSyncManagerConfig; -use rand_chacha::rand_core::SeedableRng; use sqlx::{migrate::Migrator, sqlite}; use tokio::sync::{Notify, RwLock}; -use tracing::{error, info, warn}; - -pub type TopicSyncManager = p2panda_sync::managers::topic_sync_manager::TopicSyncManager< - TopicId, - p2panda_store::SqliteStore, - TopicStore, - LogId, - ReflectionExtensions, ->; +use tracing::info; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub(crate) enum MessageType { @@ -42,32 +29,15 @@ pub struct NodeInner { pub(crate) topic_store: TopicStore, pub(crate) private_key: PrivateKey, pub(crate) network_id: Hash, - pub(crate) network: RwLock>>, + pub(crate) network: RwLock>, pub(crate) network_notifier: Notify, } -static RELAY_URL: LazyLock = LazyLock::new(|| { - "https://euc1-1.relay.n0.iroh-canary.iroh.link" - .parse() - .expect("valid relay URL") -}); - -static BOOTSTRAP_NODE: LazyLock = LazyLock::new(|| { - let endpoint_addr = iroh::EndpointAddr::new( - "7ccdbeed587a8ec8c71cdc9b98e941ac597e11b0216aac1387ef81089a4930b2" - .parse() - .expect("valid bootstrap node id"), - ) - .with_relay_url(RELAY_URL.clone()); - NodeInfo::from(endpoint_addr).bootstrap() -}); - impl NodeInner { pub async fn new( network_id: Hash, private_key: PrivateKey, db_file: Option, - connection_mode: ConnectionMode, ) -> Result { let connection_options = sqlx::sqlite::SqliteConnectOptions::new() .shared_cache(true) @@ -96,50 +66,47 @@ impl NodeInner { let operation_store = OperationStore::new(pool.clone()); let topic_store = TopicStore::new(pool); - let network = match connection_mode { - ConnectionMode::None => None, - ConnectionMode::Bluetooth => { - unimplemented!("Bluetooth is currently not implemented") - } - ConnectionMode::Network => { - setup_network(&private_key, &network_id, &topic_store, &operation_store).await - } - }; - Ok(Self { operation_store, topic_store, private_key, network_id, - network: RwLock::new(network), + network: RwLock::new(None), network_notifier: Notify::new(), }) } - pub async fn set_connection_mode(&self, connection_mode: ConnectionMode) { + pub async fn set_connection_mode( + &self, + connection_mode: ConnectionMode, + ) -> Result<(), NetworkError> { // Subscriptions will tear down the network subscription and drop the read lock, // so that we can acquire the write lock and then shutdown the network. self.network_notifier.notify_waiters(); let mut network_guard = self.network.write().await; - let network = match connection_mode { - ConnectionMode::None => None, + match connection_mode { + ConnectionMode::None => { + *network_guard = None; + } ConnectionMode::Bluetooth => { unimplemented!("Bluetooth is currently not implemented") } ConnectionMode::Network => { - setup_network( + let network = Network::new( &self.private_key, &self.network_id, &self.topic_store, &self.operation_store, ) - .await + .await?; + + *network_guard = Some(network); } - }; + } - *network_guard = network; + Ok(()) } pub async fn shutdown(&self) { @@ -179,34 +146,3 @@ impl NodeInner { Ok(()) } } - -async fn setup_network( - private_key: &PrivateKey, - network_id: &Hash, - topic_store: &TopicStore, - operation_store: &OperationStore, -) -> Option> { - let address_book = MemoryAddressBook::new(rand_chacha::ChaCha20Rng::from_os_rng()); - - if let Err(error) = address_book.insert_node_info(BOOTSTRAP_NODE.clone()).await { - error!("Failed to add bootstrap node to the address book: {error}"); - } - - let sync_conf = TopicSyncManagerConfig { - store: operation_store.clone_inner(), - topic_map: topic_store.clone(), - }; - let network = NetworkBuilder::new(network_id.into()) - .private_key(private_key.clone()) - .mdns(MdnsDiscoveryMode::Active) - .relay(RELAY_URL.clone()) - .build(address_book, sync_conf) - .await; - - if let Err(error) = network { - warn!("Failed to startup network: {error}"); - None - } else { - network.ok() - } -} diff --git a/reflection-node/src/subscription_inner.rs b/reflection-node/src/subscription_inner.rs index a52eea50..931f2c7a 100644 --- a/reflection-node/src/subscription_inner.rs +++ b/reflection-node/src/subscription_inner.rs @@ -3,17 +3,14 @@ use std::ops::{Deref, DerefMut, Drop}; use std::sync::Arc; use chrono::Utc; -use p2panda_core::Hash; +use p2panda_core::Operation; use p2panda_core::{ Body, Header, cbor::{decode_cbor, encode_cbor}, }; -use p2panda_net::{ - Network, TopicId, - streams::{EphemeralStream, EventuallyConsistentStream}, -}; +use p2panda_net::{TopicId, gossip::GossipHandle}; use p2panda_stream::IngestExt; -use p2panda_sync::protocols::topic_log_sync::TopicLogSyncEvent; +use p2panda_sync::protocols::TopicLogSyncEvent as Event; use tokio::{ sync::{RwLock, mpsc}, task::{AbortHandle, spawn}, @@ -23,14 +20,18 @@ use tracing::{error, info, warn}; use crate::author_tracker::{AuthorMessage, AuthorTracker}; use crate::ephemerial_operation::EphemerialOperation; +use crate::network::Network; use crate::node_inner::MessageType; -use crate::node_inner::{NodeInner, TopicSyncManager}; +use crate::node_inner::NodeInner; use crate::operation::{LogType, ReflectionExtensions}; -use crate::topic::{SubscribableTopic, TopicError}; +use crate::topic::{SubscribableTopic, SubscriptionError, TopicError}; + +pub type SyncHandle = + p2panda_net::sync::SyncHandle, Event>; pub struct SubscriptionInner { - ephemeral_tx: RwLock>, - tx: RwLock>>, + ephemeral_tx: RwLock>, + tx: RwLock>, pub(crate) node: Arc, pub(crate) id: TopicId, pub(crate) subscribable_topic: Arc, @@ -68,7 +69,7 @@ impl SubscriptionInner { let (tx, ephemeral_tx, abort_handles) = if let Some(network) = network_guard.as_ref().unwrap().deref() { - setup_network( + match setup_network( &self.node, network, self.id, @@ -76,6 +77,15 @@ impl SubscriptionInner { &self.author_tracker, ) .await + { + Ok((sync_handle, gossip_handle, abort_handles)) => { + (Some(sync_handle), Some(gossip_handle), abort_handles) + } + Err(error) => { + self.subscribable_topic.error(error); + (None, None, Vec::new()) + } + } } else { (None, None, Vec::new()) }; @@ -112,7 +122,7 @@ impl SubscriptionInner { let (tx, ephemeral_tx, abort_handles) = if let Some(network) = network_guard.as_ref().unwrap().deref() { - setup_network( + match setup_network( &self.node, network, self.id, @@ -120,6 +130,15 @@ impl SubscriptionInner { &self.author_tracker, ) .await + { + Ok((sync_handle, gossip_handle, abort_handles)) => { + (Some(sync_handle), Some(gossip_handle), abort_handles) + } + Err(error) => { + self.subscribable_topic.error(error); + (None, None, Vec::new()) + } + } } else { (None, None, Vec::new()) }; @@ -243,41 +262,33 @@ impl SubscriptionInner { } } -// FIXME: return errors async fn setup_network( node: &Arc, - network: &Network, + network: &Network, id: TopicId, subscribable_topic: &Arc, author_tracker: &Arc>, -) -> ( - Option>, - Option, - Vec, -) { +) -> Result<(SyncHandle, GossipHandle, Vec), SubscriptionError> { let mut abort_handles = Vec::with_capacity(3); - let stream = match network.stream(id, true).await { - Ok(result) => result, - Err(error) => { - warn!( - "Failed to setup network for subscription to topic {}: {error}", - hex::encode(id) - ); - return (None, None, abort_handles); - } - }; - - let mut topic_rx = stream.subscribe().await.unwrap(); + let stream = network.log_sync.stream(id, true).await?; + let mut topic_rx = stream.subscribe().await?; let topic_tx = stream; let (persistent_tx, persistent_rx) = mpsc::channel::<(Header, Option, Vec)>(128); let abort_handle = spawn(async move { - while let Ok(event) = topic_rx.recv().await { + while let Some(event) = topic_rx.next().await { + let event = match event { + Ok(event) => event, + Err(error) => { + error!("Error while receiving sync message: {error}"); + continue; + } + }; match event.event() { - TopicLogSyncEvent::Operation(operation) => { + Event::Operation(operation) => { match validate_and_unpack(operation.as_ref().to_owned(), id) { Ok(data) => { persistent_tx.send(data).await.unwrap(); @@ -297,13 +308,8 @@ async fn setup_network( abort_handles.push(abort_handle); - // Generate a different id than the eventually consistent streams to avoid collisions. - // - // @TODO(adz): We want to throw an error if users try to subscribe with the same id across - // different streams. - let ephemeral_id = Hash::new(id); - let ephemeral_stream = network.ephemeral_stream(ephemeral_id.into()).await.unwrap(); - let mut ephemeral_rx = ephemeral_stream.subscribe().await.unwrap(); + let ephemeral_stream = network.gossip.stream(id).await?; + let mut ephemeral_rx = ephemeral_stream.subscribe(); let ephemeral_tx = ephemeral_stream; author_tracker.set_topic_tx(Some(ephemeral_tx)).await; @@ -311,7 +317,14 @@ async fn setup_network( let author_tracker_clone = author_tracker.clone(); let subscribable_topic_clone = subscribable_topic.clone(); let abort_handle = spawn(async move { - while let Ok(bytes) = ephemeral_rx.recv().await { + while let Some(bytes) = ephemeral_rx.next().await { + let bytes = match bytes { + Ok(bytes) => bytes, + Err(error) => { + error!("Error while receiving ephemeral message: {error}"); + continue; + } + }; match decode_cbor(&bytes[..]) { Ok(MessageType::Ephemeral(operation)) => { if let Some((author, body)) = operation.validate_and_unpack() { @@ -400,17 +413,16 @@ async fn setup_network( info!("Network subscription set up for topic {}", hex::encode(id)); - let ephemeral_id = Hash::new(id); - let ephemeral_tx = network.ephemeral_stream(ephemeral_id.into()).await.unwrap(); + let ephemeral_tx = network.gossip.stream(id).await?; - (Some(topic_tx), Some(ephemeral_tx), abort_handles) + Ok((topic_tx, ephemeral_tx, abort_handles)) } async fn teardown_network( id: &TopicId, author_tracker: &Arc>, - tx: Option>, - ephemeral_tx: Option, + tx: Option, + ephemeral_tx: Option, abort_handles: Vec, ) { for handle in abort_handles { @@ -419,27 +431,14 @@ async fn teardown_network( author_tracker.set_topic_tx(None).await; - if let Some(ephemeral_tx) = ephemeral_tx - && let Err(error) = ephemeral_tx.close() - { - error!( - "Failed to tear down ephemeral channel for topic {}: {error}", - hex::encode(id) - ); - } - - if let Some(tx) = tx { - if let Err(error) = tx.close() { - error!( - "Failed to tear down persistent channel for topic {}: {error}", - hex::encode(id) - ); - } + if tx.is_some() { info!( "Network subscription torn down for topic {}", hex::encode(id) ); } + drop(tx); + drop(ephemeral_tx); } type OperationWithRawHeader = (Header, Option, Vec); diff --git a/reflection-node/src/topic.rs b/reflection-node/src/topic.rs index c2319d0e..20a6a4f4 100644 --- a/reflection-node/src/topic.rs +++ b/reflection-node/src/topic.rs @@ -2,19 +2,22 @@ use std::sync::Arc; use crate::operation::ReflectionExtensions; use crate::operation_store::CreationError; -use crate::subscription_inner::SubscriptionInner; +use crate::network::LogSyncError; +use crate::subscription_inner::SubscriptionInner; use p2panda_core::{Operation, PublicKey}; -use p2panda_net::streams::StreamError; +use p2panda_sync::protocols::TopicLogSyncEvent; + +use p2panda_net::gossip::GossipError; use thiserror::Error; +use tokio::sync::mpsc; use tokio::task::{AbortHandle, JoinError}; use tracing::info; -impl From>> for TopicError { - fn from(value: StreamError>) -> Self { - TopicError::Publish(Box::new(value)) - } -} +pub type SyncHandleError = p2panda_net::sync::SyncHandleError< + Operation, + TopicLogSyncEvent, +>; #[derive(Debug, Error)] pub enum TopicError { @@ -25,19 +28,29 @@ pub enum TopicError { #[error(transparent)] Encode(#[from] p2panda_core::cbor::EncodeError), #[error(transparent)] - // FIXME: The error is huge so but it into a Box - Publish(Box>>), + Publish(#[from] SyncHandleError), #[error(transparent)] - PublishEphemeral(#[from] StreamError>), + PublishEphemeral(#[from] mpsc::error::SendError>), #[error(transparent)] Runtime(#[from] JoinError), } +#[derive(Debug, Error)] +pub enum SubscriptionError { + #[error(transparent)] + Gossip(#[from] GossipError), + #[error(transparent)] + LogSync(#[from] LogSyncError), + #[error(transparent)] + SyncHandle(#[from] SyncHandleError), +} + pub trait SubscribableTopic: Sync + Send { fn bytes_received(&self, author: PublicKey, data: Vec); fn author_joined(&self, author: PublicKey); fn author_left(&self, author: PublicKey); fn ephemeral_bytes_received(&self, author: PublicKey, data: Vec); + fn error(&self, error: SubscriptionError); } pub struct Subscription { diff --git a/reflection-node/src/topic_store.rs b/reflection-node/src/topic_store.rs index 6d33a9bb..b757abf1 100644 --- a/reflection-node/src/topic_store.rs +++ b/reflection-node/src/topic_store.rs @@ -5,7 +5,8 @@ use chrono::{DateTime, Utc}; use p2panda_core::PublicKey; use p2panda_net::TopicId; use p2panda_store::LogStore; -use p2panda_sync::{log_sync::Logs, topic_log_sync::TopicLogMap}; +use p2panda_sync::protocols::Logs; +use p2panda_sync::traits::TopicMap; use serde::{Deserialize, Serialize}; use sqlx::{FromRow, Row}; use tracing::error; @@ -238,7 +239,7 @@ impl LogId { } } -impl TopicLogMap for TopicStore { +impl TopicMap> for TopicStore { type Error = sqlx::Error; async fn get(&self, topic: &TopicId) -> Result, Self::Error> {